k94314517
2025-03-07 6ded2ee6a9d9097d45f8f79a7e6429cf55ed7cc3
screen/src/views/TaskEfficiency.vue
@@ -65,7 +65,7 @@
            <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" />
@@ -129,8 +129,11 @@
            </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">
@@ -160,12 +163,11 @@
                <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">
@@ -306,7 +308,7 @@
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,
@@ -341,6 +343,18 @@
          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
@@ -363,9 +377,9 @@
  const option = {
    grid: {
      top: '32%',
      left: '0%',
      left: '6%',
      right: '7%',
      bottom: '0%',
      bottom: '10%',
      containLabel: true,
    },
    legend: {
@@ -417,8 +431,11 @@
        name: '万支',
        type: 'value',
        axisLabel: {
          show: true,
          color: "#9eaaba",
          color: '#869CC9'
        },
        nameTextStyle: {
          color: '#869CC9',
          padding: [0, 0, 0, 12]    // 四个数字分别为上右下左与原位置距离
        },
        axisLine: {
          show: true,
@@ -569,7 +586,6 @@
  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,
@@ -751,6 +767,7 @@
      i.finishTime = dayjs(i.finishTime).format('HH:mm')
      return i
    })
  })
}
@@ -776,27 +793,34 @@
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', {
@@ -998,6 +1022,10 @@
            margin-right: 10px;
          }
          .top3 {
            box-shadow: inset 0px 0px 3px 0px #FEAF01;
          }
          .one-swiper-slide {
            height: 40px !important;
          }
@@ -1015,11 +1043,14 @@
          .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 {
@@ -1098,6 +1129,7 @@
      justify-content: center;
      align-items: center;
      position: relative;
      .point_icon {
        position: absolute;
        left: 850px;
@@ -1121,8 +1153,11 @@
      .work_modal {
        width: 314px;
        height: 180px;
        position: relative;
        position: absolute;
        padding: 22px 20px;
        left: 850px;
        top: 60px;
        z-index: 99999999;
        .head {
          display: flex;
@@ -1181,14 +1216,23 @@
        }
      }
      .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;
@@ -1209,7 +1253,8 @@
        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;
@@ -1623,4 +1668,4 @@
  object-fit: cover;
  z-index: -1;
}
</style>
</style>