jiangping
2024-10-11 10cd77285a9d54b0e889e2917c0a5e3e55e83cf6
Merge remote-tracking branch 'origin/master'
已添加1个文件
已修改17个文件
254 ■■■■■ 文件已修改
admin/src/components/business/OperaPlatformWindow.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/directives/directive.js 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/main.js 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/LogisticsRecord/leaveAuth.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/components/PlatformQueuing.vue 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/components/PlatformSign.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/components/WaybillDetail.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/index.vue 52 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/views/platform/queueUp.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/taskConfirm.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/taskDetail.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pda/pages/index/center.vue 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pda/pages/index/queueup.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/package-lock.json 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/package.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/utils/scale_screen.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/views/PlatformCall.vue 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/vite.config.js 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaPlatformWindow.vue
@@ -124,13 +124,13 @@
        })
    },
    loadLedList() {
      deviceList({ type: 2 })
      deviceList({ type: 2, isdeleted: 0 })
        .then(res => {
          this.ledList = res || []
        })
    },
    loadBroadcastList() {
      deviceList({ type: 3 })
      deviceList({ type: 3, isdeleted: 0 })
        .then(res => {
          this.broadcastList = res || []
        })
admin/src/directives/directive.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
import Vue from 'vue'
const preventReClick = Vue.directive('preventReClick', {
  inserted: function(el, binding, vNode, oldVnode) {
    el.addEventListener('click', () => {
      if (!el.disabled) {
        el.disabled = true
        // el.style.backgroundColor = '#ccc'
        // el.style.border = 'none'
        setTimeout(() => {
          el.disabled = false
          // el.style.backgroundColor = '#4870F7'
          // el.style.border = '1px solid #4870F7'
        }, 2000)
      }
    })
  }
})
export default {
  preventReClick
}
admin/src/main.js
@@ -12,7 +12,8 @@
import plugins from './plugins'
import { mapState, mapMutations } from 'vuex'
import { fetchMenuTree } from './api/system/menu'
import preventReClick from '@/directives/directive'
Vue.use(preventReClick)
Vue.config.productionTip = false
Vue.use(ElementUI, {
  size: 'small'
admin/src/views/platform/LogisticsRecord/leaveAuth.vue
@@ -25,9 +25,10 @@
      <el-table-column prop="carCodeFront" label="车牌号" min-width="100" show-overflow-tooltip />
      <el-table-column prop="carCodeBack" label="电子锁状态" min-width="100" show-overflow-tooltip>
        <template v-slot="scope">
          <span class="red" v-if="scope.row.lockStatus == 0">未上锁</span>
          <span class="red" v-if="scope.row.lockStatus == 1">部分上锁</span>
          <span v-if="scope.row.lockStatus == 2">全部上锁</span>
          <span class="red" v-if="scope.row.billCode && scope.row.lockStatus == 0">未上锁</span>
          <span class="red" v-if="scope.row.billCode && scope.row.lockStatus == 1">部分上锁</span>
          <span v-if="scope.row.billCode && scope.row.lockStatus == 2">全部上锁</span>
          <span v-if="!scope.row.billCode">-</span>
        </template>
      </el-table-column>
      <el-table-column prop="carrierName" label="运输公司" min-width="100" show-overflow-tooltip />
admin/src/views/platform/components/PlatformQueuing.vue
@@ -20,13 +20,13 @@
            <div class="status">{{ statusMap[item.status] }}</div>
          </div>
          <div class="info">
            <div v-if="item.type == 4" class="ite">
              <span>合同单号:</span>
              <span>{{ item.contractNum }}</span>
            </div>
            <div v-else class="ite">
            <div v-if="item.billCode" class="ite">
              <span>运输单号:</span>
              <span>{{ item.billCode }}</span>
            </div>
            <div v-else class="ite">
              <span>合同单号:</span>
              <span>{{ item.contractNum }}</span>
            </div>
            <div class="ite">
              <span>驾驶员:</span>
@@ -40,21 +40,24 @@
              <span>总运输量:</span>
              <span>{{ item.totalNum }}万支</span>
            </div>
            <div v-if="item.type != 4" class="ite" style="width: 66%">
            <div v-if="item.billCode" class="ite" style="width: 66%">
              <span>运输公司:</span>
              <span>{{ item.carrierName }}</span>
            </div>
          </div>
          <div class="footer df_sb">
            <div v-if="item.type != 4" class="detail">运单详情</div>
            <div v-else></div>
            <el-button type="primary" @click="handleCall(item)">叫号</el-button>
            <div v-if="item.billCode" @click="handleDetail(item)" class="detail">运单详情</div>
            <div v-else class="detail"  @click="subDetail(item)">预约详情</div>
            <el-button v-preventReClick :loading="loadingCall" type="primary" @click="handleCall(item)">叫号</el-button>
          </div>
        </div>
      </div>
      <pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="pagination">
      </pagination>
    </div>
    <!--  -->
    <WaybillDetail ref="WaybillDetailRef" v-if="isShowDetail" @success="getList" @close="isShowDetail = false" />
    <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" />
  </GlobalWindow>
</template>
@@ -64,10 +67,14 @@
import { platformCallList, platformCallNumber, platformInPark } from '@/api'
import { statusMap } from '../config'
import { Message } from 'element-ui'
import WaybillDetail from './WaybillDetail.vue'
import DriverDetail from "@/views/task/driverDetail.vue"
export default {
  components: {
    GlobalWindow,
    Pagination
    Pagination,
    WaybillDetail,
    DriverDetail
  },
  data() {
    return {
@@ -83,30 +90,54 @@
      title: '',
      callType: '1',
      activePlat: {},
      dataList: []
      dataList: [],
      isShowDetail: false, // è¿å•详情
      isShowDriver: false, // é¢„约详情
      loadingCall: false
    }
  },
  methods: {
    handleCall(item) {
      const { activePlat, callType } = this
      this.loadingCall = true
      if (callType == 1) { // å…¥å›­å«å·
        platformInPark({
          jobId: item.id,
          platformId: activePlat.id
        }).then(() => {
          this.loadingCall = false
          Message.success('叫号成功')
          this.$emit('success')
          this.getList()
        })
        },() => {this.loadingCall = false})
      } else {
        this.loadingCall = true
        platformCallNumber({ platformId: activePlat.id, jobId: item.id }).then(res => {
          this.loadingCall = false
          Message.success('叫号成功')
          this.$emit('success')
          this.getList()
        })
        },()=> {this.loadingCall = false})
      }
    },
    subDetail(row) {
      this.isShowDriver = true
      this.$nextTick(() => {
        this.$refs.DriverDetailRef.id = row.bookId
        this.$refs.DriverDetailRef.type = row.objType
        this.$refs.DriverDetailRef.getDetail()
        this.$refs.DriverDetailRef.isShowModal = true
      })
    },
    handleDetail(row) {
      this.isShowDetail = true
      this.$nextTick(() => {
        this.$refs.WaybillDetailRef.isShowModal = true
        this.$refs.WaybillDetailRef.id = row.id
        this.$refs.WaybillDetailRef.getDetail()
      })
    },
    getList() {
      const { activePlat, pagination, carCodeFront, callType } = this
      platformCallList({
admin/src/views/platform/components/PlatformSign.vue
@@ -19,14 +19,14 @@
            <div class="status" :class="{ red: item.status == 0 }">{{ statusMap[item.status] }}</div>
          </div>
          <div class="info">
            <div v-if="item.type == 4" class="ite">
              <span>合同单号:</span>
              <span>{{ item.contractNum }}</span>
            </div>
            <div v-else class="ite">
            <div v-if="item.billCode" class="ite">
              <span>运输单号:</span>
              <span>{{ item.billCode }}</span>
            </div>
            <div v-else class="ite">
              <span>合同单号:</span>
              <span>{{ item.contractNum }}</span>
            </div>
            <div class="ite">
              <span>驾驶员:</span>
              <span>{{ item.driverName }}</span>
admin/src/views/platform/components/WaybillDetail.vue
@@ -30,11 +30,11 @@
          <div class="contract">
            <span>合同号:{{ item.contractCode }}</span>
            <div>
              <span class="scs" v-if="item.platformWmsDetailList[0].status == 1">WMS作业已完成</span>
              <span class="pad" v-if="item.platformWmsDetailList[0].status == 0">WMS作业未完成</span>
              <span class="err" v-if="item.platformWmsDetailList[0].status == 2">WMS作业已取消</span>
              <span class="scs" v-if="item.platformWmsDetailList[0].lockStatus == 1">电子锁已上锁</span>
              <span class="pad" v-if="item.platformWmsDetailList[0].lockStatus == 0">电子锁未上锁</span>
              <span class="scs" v-if="item.status == 1">WMS作业已完成</span>
              <span class="pad" v-if="item.status == 0">WMS作业未完成</span>
              <span class="err" v-if="item.status == 2">WMS作业已取消</span>
              <span class="scs" v-if="item.lockStatus == 1">电子锁已上锁</span>
              <span class="pad" v-if="item.lockStatus == 0">电子锁未上锁</span>
            </div>
          </div>
          <div class="placeholder6">收货地:{{ item.address }}</div>
admin/src/views/platform/index.vue
@@ -62,13 +62,13 @@
              </div>
            </div>
            <div class="line">
              <div v-if="task.type == 4" class="ite">
                <span>合同单号:</span>
                <span>{{ task.contractNum }}</span>
              </div>
              <div v-else class="ite">
              <div v-if="task.billCode" class="ite">
                <span>运输单号:</span>
                <span>{{ task.billCode }}</span>
              </div>
              <div v-else class="ite">
                <span>合同单号:</span>
                <span>{{ task.contractNum }}</span>
              </div>
              <div class="ite siji">
                <span>驾驶员:</span>
@@ -82,25 +82,25 @@
                <span>总运输量:</span>
                <span>{{ task.totalNum }}万支</span>
              </div>
              <div v-if="task.type != 4" class="ite" style="width: 66.6%">
              <div v-if="task.billCode" class="ite" style="width: 66.6%">
                <span>运输公司:</span>
                <span>{{ task.carrierName }}</span>
              </div>
              <div class="ite"></div>
            </div>
            <div class="line">
              <div v-if="task.type != 4" class="left">
                <span class="primaryColor pointer" @click="handleDetail(task)">运单详情</span>
              <div class="left">
                <span v-if="task.billCode" class="primaryColor pointer" @click="handleDetail(task)">运单详情</span>
                <span v-else class="primaryColor pointer" @click="subDetail(task)">预约详情</span>
              </div>
              <div v-else></div>
              <div class="right">
                <el-button v-if="task.status == 5" plain @click="handleErr(task)">异常挂起</el-button>
                <el-button v-if="task.status == 5 || task.status == 8" plain
                  @click="handleTransform(item, task)">转移月台</el-button>
                <el-button v-if="task.status == 4" plain @click="handlePass(task)">过号</el-button>
                <el-button v-if="task.status == 5 || task.status == 8" type="primary"
                <el-button v-preventReClick :loading="loadingFinish" v-if="task.status == 5 || task.status == 8" type="primary"
                  @click="handleFinish(task)">作业完成</el-button>
                <el-button v-if="task.status == 4" type="primary" @click="handleWork(task)">开始作业</el-button>
                <el-button v-preventReClick :loading="loadingOpen" v-if="task.status == 4" type="primary" @click="handleWork(task)">开始作业</el-button>
              </div>
            </div>
          </div>
@@ -135,6 +135,7 @@
    <PlatformQueuing ref="PlatformQueuingRef" v-if="isShowQueuing" @success="getPlatGroupList"
      @close="isShowQueuing = false" />
    <WaybillDetail ref="WaybillDetailRef" v-if="isShowDetail" @success="getList" @close="isShowDetail = false" />
    <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" />
    <el-dialog title="转移月台" :visible.sync="isShowTransform" width="500px" style="margin-top: 12vh">
      <div class="df_ac">
        <span>选择转移到的月台:</span>
@@ -145,7 +146,7 @@
      </div>
      <span slot="footer" class="dialog-footer">
        <el-button @click="isShowTransform = false">取消</el-button>
        <el-button type="primary" @click="transformSub">确定</el-button>
        <el-button v-preventReClick type="primary" @click="transformSub">确定</el-button>
      </span>
    </el-dialog>
  </div>
@@ -165,16 +166,18 @@
} from '@/api'
import PlatformQueuing from './components/PlatformQueuing.vue'
import WaybillDetail from './components/WaybillDetail.vue'
import DriverDetail from "@/views/task/driverDetail.vue"
import GlobalWindow from '@/components/common/GlobalWindow'
import dayjs from 'dayjs'
import duration from 'dayjs/plugin/duration'
import { Message } from 'element-ui'
import { Loading, Message } from 'element-ui'
import { statusMap } from './config'
dayjs.extend(duration)
export default {
  components: {
    PlatformQueuing,
    WaybillDetail,
    DriverDetail,
    GlobalWindow
  },
  data() {
@@ -194,9 +197,13 @@
      setParam: {},
      isShowDetail: false, // è¿å•详情
      isShowDriver: false, // é¢„约详情
      detail: {},
      isShowQueuing: false,
      timer: null
      timer: null,
      loadingOpen: false,
      loadingFinish: false,
    }
  },
  created() {
@@ -207,15 +214,23 @@
  },
  methods: {
    handleWork(item) {
      this.loadingOpen = true
      platformBeginWork({ jobId: item.id }).then(res => {
        this.loadingOpen = false
        Message.success('已开始作业')
        this.getPlatGroupList()
      }, () => {
        this.loadingOpen = false
      })
    },
    handleFinish(item) {
      this.loadingFinish = true
      platformFinishWork({ jobId: item.id }).then(res => {
        this.loadingFinish = false
        Message.success('完成作业')
        this.getPlatGroupList()
      },() => {
        this.loadingFinish = false
      })
    },
    handleTransform(item, task) {
@@ -325,6 +340,15 @@
        this.$refs.PlatformQueuingRef.title = item.name
      })
    },
    subDetail(row) {
      this.isShowDriver = true
      this.$nextTick(() => {
        this.$refs.DriverDetailRef.id = row.bookId
        this.$refs.DriverDetailRef.type = 6
        this.$refs.DriverDetailRef.getDetail()
        this.$refs.DriverDetailRef.isShowModal = true
      })
    },
    handleDetail(row) {
      this.isShowDetail = true
      this.$nextTick(() => {
admin/src/views/platform/queueUp.vue
@@ -89,7 +89,6 @@
<script>
import Pagination from '@/components/common/Pagination'
import QueryForm from '@/components/common/QueryForm'
import DriverDetail from "@/views/task/driverDetail.vue"
import {
  getPlatformGroupList,
  platformLineUpPage,
@@ -97,6 +96,7 @@
} from '@/api'
import { queryQueueUpConfig } from './config'
import WaybillDetail from './components/WaybillDetail.vue'
import DriverDetail from "@/views/task/driverDetail.vue"
import PlatformSign from './components/PlatformSign.vue'
export default {
  components: {
h5/pages/driver/taskConfirm.vue
@@ -16,7 +16,7 @@
                <view class="label">手机号</view>
                <view class="value">{{ param.drivierPhone }}</view>
            </view>
            <view class="line" v-if="type != 4">
            <view class="line" v-if="param.billCode">
                <view class="label">运输单号</view>
                <view class="value" @click="wmsDetail">
                    <text class="waybill_num">{{ param.billCode }}</text>
h5/pages/driver/taskDetail.vue
@@ -21,7 +21,7 @@
                <view class="label">手机号</view>
                <view class="value">{{param.drivierPhone}}</view>
            </view>
            <template v-if="param.type != 4">
            <template v-if="param.billCode">
                <view class="line">
                    <view class="label">运输单号</view>
                    <view class="value" @click="wmsDetail">
pda/pages/index/center.vue
@@ -32,14 +32,14 @@
                    <view class="status" v-if="item.status == 4">叫号中 {{ item.callDateTemp }}</view>
                    <view class="status scs" v-if="item.status == 5">已作业 {{ item.startDateTemp }}</view>
                </view>
                <view class="line" v-if="item.type == 4">
                    <text class="label">合同单号</text>
                    <text class="value">{{ item.contractNum }}</text>
                </view>
                <view class="line" v-else>
                <view class="line" v-if="item.code">
                    <text class="label">运输单号</text>
                    <text class="value">{{ item.code }}</text>
                    <text class="primaryColor" @click="handleDetail(item)">运单详情</text>
                </view>
                <view class="line" v-else>
                    <text class="label">合同单号</text>
                    <text class="value">{{ item.contractNum }}</text>
                </view>
                <view class="line">
                    <text class="label">驾驶员</text>
@@ -96,15 +96,15 @@
                  statusMap[item.status]
                }}</view>
                            </view>
                            <view class="line" v-if="item.type == 4">
                                <text class="label">合同单号</text>
                                <text class="value">{{ item.contractNum }}</text>
                            </view>
                            <view class="line" v-else>
                            <view class="line" v-if="item.billCode">
                                <text class="label">运输单号</text>
                                <text class="value">{{ item.billCode }}</text>
                                <text class="primaryColor" @click="handleDetail(item)">运单详情</text>
                            </view>
                            <view class="line" v-else>
                                <text class="label">合同单号</text>
                                <text class="value">{{ item.contractNum }}</text>
                            </view>
                            <view class="line">
                                <text class="label">驾驶员</text>
                                <text class="value">{{ item.driverName }} {{ item.drivierPhone }}</text>
pda/pages/index/queueup.vue
@@ -38,15 +38,15 @@
            >签到时间:{{ item.signDate.slice(11, 16) }}</view
          >
        </view>
        <view class="line" v-if="item.type == 4">
          <text class="label">合同单号</text>
          <text class="value">{{ item.contractNum }}</text>
        </view>
        <view class="line" v-else>
        <view class="line" v-if="item.billCode">
          <text class="label">运输单号</text>
          <text class="value">{{ item.billCode }}</text>
          <text class="primaryColor" @click="handleDetail(item)">运单详情</text>
        </view>
        <view class="line" v-else>
          <text class="label">合同单号</text>
          <text class="value">{{ item.contractNum }}</text>
        </view>
        <view class="line">
          <text class="label">驾驶员</text>
          <text class="value"
screen/package-lock.json
@@ -12,7 +12,7 @@
        "dayjs": "^1.11.11",
        "echarts": "^5.5.1",
        "pinia": "^2.1.7",
        "postcss-px2rem": "^0.3.0",
        "postcss-plugin-px2rem": "^0.8.1",
        "px2rem-loader": "^0.1.9",
        "uqrcodejs": "^4.0.7",
        "v-scale-screen": "^2.0.0",
@@ -2769,16 +2769,15 @@
        "node": "^10 || ^12 || >=14"
      }
    },
    "node_modules/postcss-px2rem": {
      "version": "0.3.0",
      "resolved": "https://registry.npmjs.org/postcss-px2rem/-/postcss-px2rem-0.3.0.tgz",
      "integrity": "sha512-ACZRimmOEDma0L/sI5ENREY3BoYB4LNME9iM9VcZU2t598OB9KLEPDYX8JBohNsvwJ+Nvlvk3IcGm0bRqOBC/Q==",
    "node_modules/postcss-plugin-px2rem": {
      "version": "0.8.1",
      "resolved": "https://registry.npmjs.org/postcss-plugin-px2rem/-/postcss-plugin-px2rem-0.8.1.tgz",
      "integrity": "sha512-gNxhrnR57pnGrPLLqVNWY9+BWgj46kYkphw+0gpRJf9tjgwI7/tLqQPK7KdlksB2SSAddOb11otDVwri8b8mXw==",
      "dependencies": {
        "postcss": "^5.0.0",
        "px2rem": "~0.5.0"
        "postcss": "^5.0.21"
      }
    },
    "node_modules/postcss-px2rem/node_modules/ansi-styles": {
    "node_modules/postcss-plugin-px2rem/node_modules/ansi-styles": {
      "version": "2.2.1",
      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
      "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
@@ -2786,7 +2785,7 @@
        "node": ">=0.10.0"
      }
    },
    "node_modules/postcss-px2rem/node_modules/chalk": {
    "node_modules/postcss-plugin-px2rem/node_modules/chalk": {
      "version": "1.1.3",
      "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
      "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
@@ -2801,7 +2800,7 @@
        "node": ">=0.10.0"
      }
    },
    "node_modules/postcss-px2rem/node_modules/chalk/node_modules/supports-color": {
    "node_modules/postcss-plugin-px2rem/node_modules/chalk/node_modules/supports-color": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
      "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
@@ -2809,7 +2808,7 @@
        "node": ">=0.8.0"
      }
    },
    "node_modules/postcss-px2rem/node_modules/has-flag": {
    "node_modules/postcss-plugin-px2rem/node_modules/has-flag": {
      "version": "1.0.0",
      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
      "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==",
@@ -2817,7 +2816,7 @@
        "node": ">=0.10.0"
      }
    },
    "node_modules/postcss-px2rem/node_modules/postcss": {
    "node_modules/postcss-plugin-px2rem/node_modules/postcss": {
      "version": "5.2.18",
      "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
      "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
@@ -2831,7 +2830,7 @@
        "node": ">=0.12"
      }
    },
    "node_modules/postcss-px2rem/node_modules/source-map": {
    "node_modules/postcss-plugin-px2rem/node_modules/source-map": {
      "version": "0.5.7",
      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
      "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
@@ -2839,7 +2838,7 @@
        "node": ">=0.10.0"
      }
    },
    "node_modules/postcss-px2rem/node_modules/supports-color": {
    "node_modules/postcss-plugin-px2rem/node_modules/supports-color": {
      "version": "3.2.3",
      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
      "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==",
screen/package.json
@@ -13,7 +13,7 @@
    "dayjs": "^1.11.11",
    "echarts": "^5.5.1",
    "pinia": "^2.1.7",
    "postcss-px2rem": "^0.3.0",
    "postcss-plugin-px2rem": "^0.8.1",
    "px2rem-loader": "^0.1.9",
    "uqrcodejs": "^4.0.7",
    "v-scale-screen": "^2.0.0",
screen/src/utils/scale_screen.js
@@ -1,7 +1,7 @@
// rem等比适配配置文件
// åŸºå‡†å¤§å°
const baseSize = 14
const baseSize = 16
// è®¾ç½® rem å‡½æ•°
function setRem() {
  // å½“前页面宽度相对于 1920宽的缩放比例,可根据自己需要修改。
screen/src/views/PlatformCall.vue
@@ -24,6 +24,14 @@
      contentList.value = res.data.allList.map(item => {
        if (item.optTime) {
          item.optTimeTemp = dayjs(item.optTime).format('HH:mm')
          if(item.status == 4){
            if(item.optTime >= new Date().getTime()){
              item.optTimeTemp = dayjs.duration(item.optTime - new Date().getTime()).format('HH:mm')
            }else{
              item.optTimeTemp = '-'
            }
          }
          // item.optTimeTemp = dayjs.duration(Math.abs(new Date().getTime() - item.optTime)).format('HH:mm')
        }
        return item
@@ -108,7 +116,7 @@
  var qr = new UQRCode()
  // è®¾ç½®äºŒç»´ç å†…容
  qr.data = qrcode.value
  qr.size = 220
  qr.size = 268
  // è°ƒç”¨åˆ¶ä½œäºŒç»´ç æ–¹æ³•
  qr.make()
  var canvas = document.getElementById("qrcode")
@@ -219,7 +227,9 @@
            </div>
            <div class="item">{{ item.platformName || '-' }}</div>
            <div class="item">
              <div v-if="item.optTimeTemp" class="time_place">预计完成时间</div>
              <div v-if="item.optTimeTemp" class="time_place">
                {{ item.status == 4 ? '剩余等待时间' : '预计完成时间' }}
              </div>
              <div>{{ item.optTimeTemp || '-' }}</div>
            </div>
          </div>
@@ -248,7 +258,7 @@
          </div>
          <div class="qrcode_wrap">
            <div class="qrcode">
              <canvas id="qrcode" width="220" height="220"></canvas>
              <canvas id="qrcode" width="268" height="268"></canvas>
            </div>
            <div class="title">请扫码签到</div>
          </div>
@@ -501,7 +511,7 @@
        justify-content: center;
        .qrcode {
          padding: 6px;
          padding: 6px 6px 4px;
          background-color: #fff;
        }
screen/vite.config.js
@@ -3,8 +3,8 @@
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import VueDevTools from 'vite-plugin-vue-devtools'
//配置参数
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
@@ -16,6 +16,9 @@
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  css: {
  },
  build: {
    outDir: 'platform_screen'
  },