admin/src/views/platform/queueUp.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
screen/package-lock.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
screen/package.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
screen/src/assets/images/call/ic_left@2x.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
screen/src/assets/images/call/ic_news@2x.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
screen/src/assets/images/call/ic_right@2x.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
screen/src/assets/images/call/title@2x.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
screen/src/router/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
screen/src/views/HomeView.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
screen/src/views/PlatformCall.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
admin/src/views/platform/queueUp.vue
@@ -23,7 +23,7 @@ </div> <el-table class="mb20" v-loading="loading" :data="dataList" stripe row-key="id" default-expand-all> <el-table-column type="index" label="åºå·" width="80" /> <el-table-column label="车çå·" width="160"> <el-table-column label="车çå·" width="130"> <template slot-scope="{ row }"> <div class="plate_id"> <span>{{ row.carCodeFront.slice(0, 1) }}</span> @@ -33,10 +33,13 @@ </div> </template> </el-table-column> <el-table-column prop="carrierName" label="è¿è¾å ¬å¸" min-width="200" /> <el-table-column prop="billCode" label="è¿åå·" min-width="200" /> <el-table-column prop="totalNum" label="æ»è¿è¾é(䏿¯)" min-width="130" /> <el-table-column prop="driverName" label="驾驶å" min-width="140"> <el-table-column v-if="activeGroup.type == 2" prop="contractNum" label="åååå·" min-width="120" /> <template v-else> <el-table-column prop="carrierName" label="è¿è¾å ¬å¸" min-width="120" /> <el-table-column prop="billCode" label="è¿åå·" min-width="120" /> </template> <el-table-column prop="totalNum" label="æ»è¿è¾é(䏿¯)" min-width="110" /> <el-table-column prop="driverName" label="驾驶å" min-width="130"> <template slot-scope="{ row }"> <span class="mr10">{{ row.driverName }}</span> <span>{{ row.drivierPhone }}</span> @@ -45,7 +48,8 @@ <el-table-column prop="signDate" label="ç¾å°æ¶é´" min-width="150" /> <el-table-column label="æä½" align="center" width="100" fixed="right"> <template slot-scope="{ row }"> <el-button v-if="row.type != 4" type="text" @click="handleDetail(row)" v-permissions="['business:company:update']">è¿å详æ </el-button> <el-button v-if="activeGroup != 2" type="text" @click="handleDetail(row)" v-permissions="['business:company:update']">è¿å详æ </el-button> <el-button v-if="activeGroup == 2" type="text" @click="subDetail(row)" v-permissions="['business:company:update']">é¢çº¦è¯¦æ </el-button> </template> </el-table-column> </el-table> @@ -55,12 +59,14 @@ <PlatformSign ref="PlatformSignRef" v-if="isPlatformSign" @success="getPlatGroupList" @close="isPlatformSign = false" /> <WaybillDetail ref="WaybillDetailRef" v-if="isShowDetail" @success="getList" @close="isShowDetail = false" /> <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" /> </div> </template> <script> import Pagination from '@/components/common/Pagination' import QueryForm from '@/components/common/QueryForm' import DriverDetail from "@/views/task/driverDetail.vue" import { getPlatformGroupList, platformLineUpPage, @@ -74,7 +80,8 @@ Pagination, QueryForm, PlatformSign, WaybillDetail WaybillDetail, DriverDetail }, data() { return { @@ -84,6 +91,7 @@ staticParam: {}, dataList: [], loading: false, isShowDriver: false, isPlatformSign: false, pagination: { pageSize: 10, @@ -165,6 +173,15 @@ this.filters = {} this.getList() }, subDetail(row) { this.isShowDriver = true this.$nextTick(() => { this.$refs.DriverDetailRef.id = row.objId this.$refs.DriverDetailRef.type = row.objType this.$refs.DriverDetailRef.getDetail() this.$refs.DriverDetailRef.isShowModal = true }) }, handleDetail(row) { this.isShowDetail = true this.$nextTick(() => { @@ -206,7 +223,7 @@ .plate_id { display: flex; width: 111px; width: 110px; font-weight: 600; height: 30px; line-height: 30px; screen/package-lock.json
@@ -11,6 +11,7 @@ "dayjs": "^1.11.11", "echarts": "^5.5.1", "pinia": "^2.1.7", "uqrcodejs": "^4.0.7", "vue": "^3.4.21", "vue-router": "^4.3.0" }, @@ -2686,6 +2687,11 @@ "browserslist": ">= 4.21.0" } }, "node_modules/uqrcodejs": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/uqrcodejs/-/uqrcodejs-4.0.7.tgz", "integrity": "sha512-84+aZmD2godCVI+93lxE3YUAPNY8zAJvNA7xRS7R7U+q57KzMDepBSfNCwoRUhWOfR6eHFoAOcHRPwsP6ka1cA==" }, "node_modules/vite": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.1.tgz", screen/package.json
@@ -12,6 +12,7 @@ "dayjs": "^1.11.11", "echarts": "^5.5.1", "pinia": "^2.1.7", "uqrcodejs": "^4.0.7", "vue": "^3.4.21", "vue-router": "^4.3.0" }, screen/src/assets/images/call/ic_left@2x.png
screen/src/assets/images/call/ic_news@2x.png
screen/src/assets/images/call/ic_right@2x.png
screen/src/assets/images/call/title@2x.png
screen/src/router/index.js
@@ -1,5 +1,5 @@ import { createRouter, createWebHashHistory } from 'vue-router' import HomeView from '../views/HomeView.vue' import HomeView from '../views/PlatformCall.vue' const router = createRouter({ history: createWebHashHistory(import.meta.env.BASE_URL), @@ -10,9 +10,9 @@ component: () => import('../views/EnergyConsum.vue') }, { path: '/home', name: 'home', component: () => import('../views/HomeView.vue') path: '/PlatformCall', name: 'PlatformCall', component: () => import('../views/PlatformCall.vue') }, { path: '/EnergyConsum', screen/src/views/HomeView.vue
ÎļþÒÑɾ³ý screen/src/views/PlatformCall.vue
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,299 @@ <script setup> import { ref, onMounted } from 'vue' import dayjs from 'dayjs' import UQRCode from 'uqrcodejs' const initQrcode = () => { var qr = new UQRCode(); // 设置äºç»´ç å 容 qr.data = "https://uqrcode.cn/doc"; qr.size = 254; // è°ç¨å¶ä½äºç»´ç æ¹æ³ qr.make(); var canvas = document.getElementById("qrcode"); var canvasContext = canvas.getContext("2d"); qr.canvasContext = canvasContext; qr.drawCanvas(); } onMounted(() => { initQrcode() }) const weekMap = ['卿¥', 'å¨ä¸', 'å¨äº', 'å¨ä¸', 'å¨å', 'å¨äº', 'å¨å '] const newWeek = ref(weekMap[new Date().getDay()]) const newDate = ref(dayjs().format('YYYY-MM-DD')) const newTime = ref(dayjs().format('HH:mm')) setInterval(() => { newWeek.value = weekMap[new Date().getDay()] newDate.value = dayjs().format('YYYY-MM-DD') newTime.value = dayjs().format('HH:mm') }, 1000) </script> <template> <div class="main_app"> <div class="main_header"> <img class="bg" src="@/assets/images/call/title@2x.png" alt=""> <div class="title">宿³°æºæ §ç©æµååº-车è¾å«å·å¤§å±</div> <div class="time_wrap"> <div class="left"> <div class="week">{{ newWeek }}</div> <div class="date">{{ newDate }}</div> </div> <div class="time">{{ newTime }}</div> </div> </div> <div class="main_content"> <div class="list"> <div class="line header"> <div class="item no">åºå·</div> <div class="item">车çå·</div> <div class="item status">ç¶æ</div> <div class="item">åé æå°</div> <div class="item">æ¶é´</div> </div> <div class="line"> <div class="item no">åºå·</div> <div class="item">车çå·</div> <div class="item"> <div class="status underway">ä½ä¸ä¸</div> </div> <div class="item">åé æå°</div> <div class="item">æ¶é´</div> </div> <div class="line"> <div class="item no">åºå·</div> <div class="item">车çå·</div> <div class="item"> <div class="status call_ed">ä½ä¸ä¸</div> </div> <div class="item">åé æå°</div> <div class="item">æ¶é´</div> </div> <div class="line"> <div class="item no">åºå·</div> <div class="item">车çå·</div> <div class="item"> <div class="status padding">ä½ä¸ä¸</div> </div> <div class="item">åé æå°</div> <div class="item">æ¶é´</div> </div> </div> <div class="current"> <div class="tip_wrap"> <img src="@/assets/images/call/ic_left@2x.png" class="icon icon_l" alt=""> <img src="@/assets/images/call/ic_right@2x.png" class="icon icon_r" alt=""> <div class="empty"> <div class="title">温馨æç¤º</div> <div class="line">1ãè¯·å¸æºæ ¹æ®å«å·å±æç¤ºå ¥å</div> <div class="line">2ãæªå«å·è½¦è¾è¯·èå¿çå¾ </div> <div class="line">3ã请æåºæéå ¥å</div> <div class="line">4ãè£ å¸è´§ç»æç¦æ¢å¨ååºéç</div> <div class="line">5ã请éµå®ååºå®å ¨è§ç« å¶åº¦</div> </div> </div> <div class="qrcode_wrap"> <div class="qrcode"> <canvas id="qrcode" width="254" height="254"></canvas> </div> <div class="title">请æ«ç ç¾å°</div> </div> </div> </div> <div class="main_footer"> <img src="@/assets/images/call/ic_news@2x.png" class="icon" alt=""> <div class="title">è¯·æ ¹æ®éåæç¤ºä¿¡æ¯ï¼ä¾æ¬¡çåè¿åº</div> <div class="icon"></div> </div> </div> </template> <style lang="scss" scoped> .main_app { color: #fff; width: 100%; height: 100vh; background-color: #092030; position: relative; z-index: -2; display: flex; flex-direction: column; .main_header { width: 100%; height: 112px; position: relative; display: flex; align-items: center; justify-content: space-between; padding: 0 50px; .title { font-weight: 800; font-size: 48px; } .time_wrap { display: flex; align-items: center; .date { font-weight: 500; font-size: 20px; text-align: right; } .week { font-weight: 500; font-size: 20px; text-align: right; } .time { font-weight: 500; font-size: 50px; margin-left: 15px; } } .bg { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; z-index: -1; } } .main_content{ flex: 1; display: flex; padding: 30px 20px; position: relative; .list{ flex: 5; margin-right: 20px; .line{ display: flex; align-items: center; height: 100px; &:nth-of-type(2n){ background: rgba(255,255,255,0); } &:nth-of-type(2n + 1){ background: rgba(0,237,255,0.13); } .item{ display: flex; justify-content: center; align-items: center; font-weight: 500; font-size: 36px; flex: 10; .status{ width: 174px; height: 76px; border-radius: 8px; display: flex; justify-content: center; align-items: center; } .underway{ background-color: #51b2ce; } .call_ed{ background-color: #f2a43a; } .padding{ background-color: #1c485a; } } .no{ flex: 5; } } .header{ font-size: bold; font-size: 40px; background: linear-gradient( 180deg, #00B5D1 0%, #003C57 100%) !important; } } .current{ /* height: calc( 100vh - 192px ); */ flex: 2; display: flex; flex-direction: column; .tip_wrap{ margin-bottom: 20px; width: 100%; position: relative; flex-shrink: 0; flex: 1; .empty{ padding: 30px 40px; font-weight: 500; font-size: 30px; .title{ text-align: center; font-weight: bold; font-size: 36px; margin-bottom: 20px; } .line{ margin-bottom: 10px; } } .icon{ position: absolute; width: 52px; height: 52px; } .icon_l{ left: 0; top: 0; } .icon_r{ right: 0; bottom: 0; } } .qrcode_wrap{ width: 100%; flex: 1; flex-shrink: 0; background-color: #51b2ce; padding: 36px 0; display: flex; flex-direction: column; align-items: center; justify-content: center; .qrcode{ padding: 12px; background-color: #fff; } .title{ margin-top: 20px; font-weight: bold; font-size: 38px; color: #111111; } } } } .main_footer{ background-color: #1D8D9E; height: 80px; display: flex; align-items: center; padding: 0 50px; .icon{ width: 52px; height: 52px; } .title{ flex: 1; text-align: center; font-weight: 500; font-size: 37px; } } } </style>