|  |  | 
 |  |  |             <div class="list one-swiper"> | 
 |  |  |               <div class="swiper-wrapper"> | 
 |  |  |                 <div class="line one-swiper-slide swiper-slide" v-for="item, i in dataList2" :key="i"> | 
 |  |  |                   <div class="top"><span v-if="i < 3">top</span>{{ i + 1 }}</div> | 
 |  |  |                   <div class="top" :class="{ top3: i < 3 }"><span v-if="i < 3">top</span>{{ i + 1 }}</div> | 
 |  |  |                   <div class="id_card">{{ item.platformName }}</div> | 
 |  |  |                   <div class="wrap"> | 
 |  |  |                     <ChargeRate :rate="item.rate" /> | 
 |  |  | 
 |  |  |             </div> | 
 |  |  |           </div> | 
 |  |  |           <div class="center_box_bg"> | 
 |  |  |             <img class="point_icon" src="@/assets/ani/apngb-animated.png" alt=""> | 
 |  |  |             <div class="work_modal" @click="showWorkModal = false" v-if="showWorkModal"> | 
 |  |  |             <img v-if="showWorkModal" class="point_icon" | 
 |  |  |               :style="{ left: workModalParam.left + 'px', top: workModalParam.top + 'px' }" | 
 |  |  |               src="@/assets/ani/apngb-animated.png" alt=""> | 
 |  |  |             <div class="work_modal" :style="{ left: workModalParam.left2 + 'px', top: workModalParam.top + 'px' }" | 
 |  |  |               @click="showWorkModal = false" v-if="showWorkModal"> | 
 |  |  |               <img class="bg" src="@/assets/images/LogisticsCenter/bg_yuetai@2x.png" alt=""> | 
 |  |  |               <div class="head"> | 
 |  |  |                 <div class="left"> | 
 |  |  | 
 |  |  |                 <div class="val">{{ workModalParam.finishTimeStr }}</div> | 
 |  |  |               </div> | 
 |  |  |             </div> | 
 |  |  |             <div class="modal_bg" v-if="showWorkModal" @click="closeModal"></div> | 
 |  |  |           </div> | 
 |  |  |           <div class="center_box_two"> | 
 |  |  |             <div v-if="data4.videoIndexCodes && data4.videoIndexCodes.length > 0" class="videos"> | 
 |  |  |               <div class="video" v-for="indexCode in data4.videoIndexCodes"> | 
 |  |  |                 <Video v-if="indexCode" :href="data4.videoPluginUrl" :indexCode="indexCode" /> | 
 |  |  |               </div> | 
 |  |  |               <Videos :href="data4.videoPluginUrl" :indexCodes="data4.videoIndexCodes" /> | 
 |  |  |             </div> | 
 |  |  |             <div class="list"> | 
 |  |  |               <div class="line header"> | 
 |  |  | 
 |  |  | dayjs.extend(duration) | 
 |  |  | import 'swiper/css/swiper.min.css' | 
 |  |  | import Swiper from 'swiper' | 
 |  |  | import Video from './videoUrl/Video.vue' | 
 |  |  | import Videos from './videoUrl/Videos.vue' | 
 |  |  | import { | 
 |  |  |   cnplatformGroupFinish, | 
 |  |  |   cnplatformDuration, | 
 |  |  | 
 |  |  |           show: false, | 
 |  |  |           position: 'center' | 
 |  |  |         }, | 
 |  |  |         tooltip: { | 
 |  |  |           trigger: 'none' | 
 |  |  |         }, | 
 |  |  |         emphasis: { | 
 |  |  |           // 设置悬浮时样式为空 | 
 |  |  |           scale: false, // 关闭放大效果 | 
 |  |  |           itemStyle: { | 
 |  |  |             shadowBlur: 0, // 阴影模糊度为 0 | 
 |  |  |             shadowOffsetX: 0, | 
 |  |  |             shadowColor: 'rgba(0, 0, 0, 0)', | 
 |  |  |           }, | 
 |  |  |         }, | 
 |  |  |         padAngle: 2, | 
 |  |  |         itemStyle: { | 
 |  |  |           borderRadius: 10 | 
 |  |  | 
 |  |  |   const option = { | 
 |  |  |     grid: { | 
 |  |  |       top: '32%', | 
 |  |  |       left: '0%', | 
 |  |  |       left: '6%', | 
 |  |  |       right: '7%', | 
 |  |  |       bottom: '0%', | 
 |  |  |       bottom: '10%', | 
 |  |  |       containLabel: true, | 
 |  |  |     }, | 
 |  |  |     legend: { | 
 |  |  | 
 |  |  |         name: '万支', | 
 |  |  |         type: 'value', | 
 |  |  |         axisLabel: { | 
 |  |  |           show: true, | 
 |  |  |           color: "#9eaaba", | 
 |  |  |           color: '#869CC9' | 
 |  |  |         }, | 
 |  |  |         nameTextStyle: { | 
 |  |  |           color: '#869CC9', | 
 |  |  |           padding: [0, 0, 0, 12]    // 四个数字分别为上右下左与原位置距离 | 
 |  |  |         }, | 
 |  |  |         axisLine: { | 
 |  |  |           show: true, | 
 |  |  | 
 |  |  |   temp.push({ name: '已叫号', value: data4.value?.calledNum || 0, rate: data4.value?.signedNum ? (data4.value.calledNum / data4.value?.signedNum * 100).toFixed(1) : 0 }) | 
 |  |  |   temp.push({ name: '已作业', value: data4.value?.workedNum || 0, rate: data4.value?.signedNum ? (data4.value.workedNum / data4.value?.signedNum * 100).toFixed(1) : 0 }) | 
 |  |  |   temp.push({ name: '已完成', value: data4.value?.doneNum || 0, rate: data4.value?.signedNum ? (data4.value.doneNum / data4.value?.signedNum * 100).toFixed(1) : 0 }) | 
 |  |  |   console.log('temp', temp) | 
 |  |  |  | 
 |  |  |   const option = { | 
 |  |  |     color: colors, | 
 |  |  | 
 |  |  |       i.finishTime = dayjs(i.finishTime).format('HH:mm') | 
 |  |  |       return i | 
 |  |  |     }) | 
 |  |  |  | 
 |  |  |   }) | 
 |  |  | } | 
 |  |  |  | 
 |  |  | 
 |  |  | const showWorkModal = ref(false) | 
 |  |  | const workModalParam = ref({}) | 
 |  |  | // point_icon | 
 |  |  | const pointList = ref([ | 
 |  |  |   { left: 230, top: 190 }, | 
 |  |  |   { left: 265, top: 180 }, | 
 |  |  |   { left: 300, top: 170 }, | 
 |  |  |   { left: 335, top: 160 }, | 
 |  |  |   { left: 370, top: 150 }, | 
 |  |  | const pointList = [ | 
 |  |  |   { left: 230, top: 190, left2: 290, top2: 190, name: '出库月台3' }, | 
 |  |  |   { left: 265, top: 180, left2: 325, top2: 190, name: '出库月台2' }, | 
 |  |  |   { left: 300, top: 170, left2: 360, top2: 190, name: '出库月台1' }, | 
 |  |  |   { left: 335, top: 160, left2: 390, top2: 190, name: '整托盘出库2' }, | 
 |  |  |   { left: 370, top: 150, left2: 430, top2: 190, name: '整托盘出库1' }, | 
 |  |  |  | 
 |  |  |   { left: 530, top: 50  }, | 
 |  |  |   { left: 550, top: 65 }, | 
 |  |  |   { left: 570, top: 75 }, | 
 |  |  |   { left: 590, top: 75 }, | 
 |  |  |   { left: 600, top: 80 }, | 
 |  |  |   { left: 850, top: 60 }, | 
 |  |  |   { left: 530, top: 50, left2: 590, top2: 190, name: '入库月台2' }, | 
 |  |  |   { left: 550, top: 65, left2: 610, top2: 190, name: '入库月台1' }, | 
 |  |  |   { left: 570, top: 75, left2: 630, top2: 190, name: '入库月台3' }, | 
 |  |  |   { left: 590, top: 75, left2: 650, top2: 190, name: '1095整托盘入库' }, | 
 |  |  |   { left: 600, top: 80, left2: 660, top2: 190, name: '1099整托盘入库' }, | 
 |  |  |   { left: 850, top: 60, left2: 520, top2: 190, name: '市公司月台' }, | 
 |  |  |  | 
 |  |  | ]) | 
 |  |  | ] | 
 |  |  |  | 
 |  |  | const platformClick = (val) => { | 
 |  |  |   workModalParam.value = val | 
 |  |  |   console.log(val) | 
 |  |  |  | 
 |  |  |   showWorkModal.value = !showWorkModal.value | 
 |  |  |   const index = pointList.findIndex(i => i.name == val.platformName) | 
 |  |  |   workModalParam.value = { ...val, ...pointList[index], index: pointList } | 
 |  |  |   if (workModalParam.value.workTime) { | 
 |  |  |     workModalParam.value.workTime = workModalParam.value.workTime.replaceAll('m', '分钟') | 
 |  |  |     workModalParam.value.workTime = workModalParam.value.workTime.replaceAll('h', '小时') | 
 |  |  |   } | 
 |  |  |   showWorkModal.value = true | 
 |  |  | } | 
 |  |  | const closeModal = () => { | 
 |  |  |   showWorkModal.value = false | 
 |  |  |   workModalParam.value = {} | 
 |  |  | } | 
 |  |  | const loopFn2 = () => { | 
 |  |  |   var newSwiper1 = new Swiper('.one-swiper', { | 
 |  |  | 
 |  |  |             margin-right: 10px; | 
 |  |  |           } | 
 |  |  |  | 
 |  |  |           .top3 { | 
 |  |  |             box-shadow: inset 0px 0px 3px 0px #FEAF01; | 
 |  |  |           } | 
 |  |  |  | 
 |  |  |           .one-swiper-slide { | 
 |  |  |             height: 40px !important; | 
 |  |  |           } | 
 |  |  | 
 |  |  |  | 
 |  |  |           .num { | 
 |  |  |             font-weight: 500; | 
 |  |  |             width: 82px; | 
 |  |  |             width: 88px; | 
 |  |  |             text-align: right; | 
 |  |  |             font-size: 13px; | 
 |  |  |             color: #DBEAEA; | 
 |  |  |             margin-left: 2px; | 
 |  |  |             overflow: hidden; | 
 |  |  |             white-space: nowrap; | 
 |  |  |             text-overflow: ellipsis; | 
 |  |  |           } | 
 |  |  |  | 
 |  |  |           .wrap { | 
 |  |  | 
 |  |  |       justify-content: center; | 
 |  |  |       align-items: center; | 
 |  |  |       position: relative; | 
 |  |  |  | 
 |  |  |       .point_icon { | 
 |  |  |         position: absolute; | 
 |  |  |         left: 850px; | 
 |  |  | 
 |  |  |       .work_modal { | 
 |  |  |         width: 314px; | 
 |  |  |         height: 180px; | 
 |  |  |         position: relative; | 
 |  |  |         position: absolute; | 
 |  |  |         padding: 22px 20px; | 
 |  |  |         left: 850px; | 
 |  |  |         top: 60px; | 
 |  |  |         z-index: 99999999; | 
 |  |  |  | 
 |  |  |         .head { | 
 |  |  |           display: flex; | 
 |  |  | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       .modal_bg { | 
 |  |  |         position: fixed; | 
 |  |  |         left: 0; | 
 |  |  |         top: 0; | 
 |  |  |         width: 100vw; | 
 |  |  |         height: 100vh; | 
 |  |  |         /* background-color: rgba(0,0,0,.1); */ | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     .center_box_two { | 
 |  |  |       width: 100%; | 
 |  |  |        | 
 |  |  |  | 
 |  |  |       .videos { | 
 |  |  |         width: 100%; | 
 |  |  |         height: 150px; | 
 |  |  |         display: flex; | 
 |  |  |         margin-bottom: 15px; | 
 |  |  |  | 
 |  |  | 
 |  |  |         height: 210px; | 
 |  |  |         overflow-y: auto; | 
 |  |  |         background: rgba(0, 86, 255, 0.05); | 
 |  |  |       backdrop-filter: blur(5px); | 
 |  |  |         backdrop-filter: blur(5px); | 
 |  |  |  | 
 |  |  |         .two-swiper { | 
 |  |  |           height: 180px; | 
 |  |  |           overflow: hidden; | 
 |  |  | 
 |  |  |   object-fit: cover; | 
 |  |  |   z-index: -1; | 
 |  |  | } | 
 |  |  | </style> | 
 |  |  | </style> |