| h5/api/driver.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| h5/pages/driver/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| h5/pages/login/login.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| h5/pages/staff/signin.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| h5/pages/staff/task/vDangetAppr.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| h5/pages/visitorSubGuide/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| h5/pages/waybill/list.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| h5/pages/waybill/waybillDetail.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| h5/utils/config.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| screen/src/api/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| screen/src/assets/images/default_nodata.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
| screen/src/views/EnergyConsum.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| screen/src/views/LogisticsEfficiency.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
h5/api/driver.js
@@ -142,3 +142,10 @@ data }) } export const getLastWaitJob = (data) => { return http({ url: 'visitsAdmin/cloudService/business/platformJob/getLastWaitJob', method: 'get', data }) } h5/pages/driver/index.vue
@@ -102,7 +102,8 @@ import { logoutPost, driverHomeData, app_url app_url, getLastWaitJob } from '@/api' export default { data() { @@ -123,6 +124,12 @@ this.jump('/pages/driver/reservedDetail?id=' + ywinfo.ywid) }else if(yw == 8){ this.jump('/pages/driver/taskDetail?id=' + ywinfo.ywid) }else if(yw == 0) { getLastWaitJob({ uuid: ywinfo.ywid }).then(res => { if(res.data && res.data.id){ this.taskClick(res.data) } }) } } }, h5/pages/login/login.vue
@@ -41,7 +41,7 @@ export default { data() { return { code: 'qwe' code: '' } }, onLoad(option) { h5/pages/staff/signin.vue
@@ -1,20 +1,39 @@ <template> <view> <web-view style="width: 100vw;height: 100vh;" src="https://atwl.ahzyssl.com/dps/web/wxAuth/loginV2?oaId=atwl&redirectId=index"></web-view> <!-- <web-view src="https://www.baidu.com/"></web-view> --> <view class="box"> <!-- <view v-html="info"></view> --> <mp-html :content="info" /> </view> </template> <script> import { getSystemDictData } from '@/api' export default { data() { return { }; info: "", } }, onLoad() { this.initData() }, methods: { initData() { getSystemDictData({ dictCode: 'TSM_PARAM', label: 'CENTER_LINK_TYPE' }).then(res => { if (res.code === 200) { this.info = res.data.code uni.setNavigationBarTitle({ title: res.data.remark }) } }) } } } </script> <style lang="scss"> <style lang="scss" scoped> .box { padding: 0 30rpx; } </style> h5/pages/staff/task/vDangetAppr.vue
@@ -13,8 +13,8 @@ <image v-if="item.type == 0" :src="item.fileurlFull" @click="priviewImage(item.fileurlFull)" mode="widthFix" class="img" /> <view v-if="item.type == 1" @click="videoClick(item, i)" class="video_wrap"> <video :id="'id' + i" :show-center-play-btn="false" :src="item.fileurlFull" muted class="video" :controls="false" /> <video :id="'id' + i" :show-center-play-btn="false" :src="item.fileurlFull" muted class="video" :controls="false" /> <image src="@/static/play.png" class="play" mode=""></image> </view> </view> @@ -42,7 +42,8 @@ <view class="label">{{info.status == '1' ? '整改前' : '视频/图片'}}</view> <view class="value"> <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in info.dealBeforeFileList" :key="i"> <image v-if="item.type == 0" @click="priviewImage(item.fileurlFull)" :src="item.fileurlFull" mode="widthFix"></image> <image v-if="item.type == 0" @click="priviewImage(item.fileurlFull)" :src="item.fileurlFull" mode="widthFix"></image> <video v-if="item.type == 1" @click="videoClick(item, i)" :src="item.fileurlFull" :controls="false"></video> </view> </view> @@ -51,7 +52,8 @@ <view class="label">整改后</view> <view class="value"> <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in info.dealAfterFileList" :key="i"> <image v-if="item.type == 0" @click="priviewImage(item.fileurlFull)" :src="item.fileurlFull" mode="widthFix"></image> <image v-if="item.type == 0" @click="priviewImage(item.fileurlFull)" :src="item.fileurlFull" mode="widthFix"></image> <video v-if="item.type == 1" @click="videoClick(item, i)" :src="item.fileurlFull" :controls="false"></video> </view> </view> @@ -100,7 +102,7 @@ </view> </view> <view class="emyty"></view> <view class="main_footer"> <view class="main_footer" v-if="info.status==0&& info.checkUserId == userInfo.memberId"> <view v-if="info.status==0&& info.checkUserId == userInfo.memberId" class="btn" @click="handleBack">退回</view> <view v-if="info.status==0 && info.checkUserId == userInfo.memberId" class="btn transfer" @click="handleTransfer"> 转交</view> @@ -133,7 +135,8 @@ <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in dealBeforeFileList" :key="i"> <u-icon class="close" size="20" name="close-circle-fill" color="red" @click="fileDel('dealBeforeFileList', i)"></u-icon> <image v-if="item.type == 0" @click="priviewImage(item.fileurlFull)" :src="item.fileurlFull" mode="widthFix"></image> <image v-if="item.type == 0" @click="priviewImage(item.fileurlFull)" :src="item.fileurlFull" mode="widthFix"></image> <video v-if="item.type == 1" @click="videoClick(item, i)" :src="item.fileurlFull" :controls="false"></video> </view> </view> @@ -263,9 +266,11 @@ @cancel="isShowHandleDate = false" mode="datetime"></u-datetime-picker> <!-- --> <!-- <view v-show="videoPlay" class="video_app"> <video controls id="myvideo" :src="videoUrl" @fullscreenchange="screenChange"></video> </view> --> <view v-if="videoPlay" class="video_app" > <video controls autoplay muted x5-video-player-type="h5" x5-video-player-fullscreen="true" id="myvideo" :src="videoUrl" @fullscreenchange="screenChange"></video> <view class="bg" @click="closeVideo"></view> </view> </view> </template> @@ -361,10 +366,13 @@ this.videoPlay = false; // 隐藏播放盒子 } }, closeVideo() { this.videoPlay = false this.videoContext = null }, videoClick(item, i) { this.videoContext = uni.createVideoContext("myvideo", this); // this这个是实例对象 必传 console.log(item) this.videoPlay = true; this.videoContext = uni.createVideoContext("myvideo", this); // this这个是实例对象 必传 this.videoUrl = item.fileurlFull; this.videoContext.requestFullScreen(); this.$nextTick(() => { @@ -1059,12 +1067,14 @@ margin-right: 0; } } .video_wrap{ position: relative; border: 1px solid; width: 156rpx; height: 156rpx; border-radius: 4rpx; .play{ width: 60rpx; height: 60rpx; @@ -1074,6 +1084,7 @@ transform: translate(-50%, -50%); } } .img { width: 100%; max-height: 100%; @@ -1372,17 +1383,29 @@ color: #333333; } } .video_app{ position: absolute; overflow: hidden; position: fixed; left: 0; top: 0; width: 100vw; height: 100vh; video{ display: flex; align-items: center; .bg{ background-color: rgba(0,0,0,.6); position: absolute; width: 100%; height: 100%; z-index: -1; } video { width: 100%; height: 42vh; } } .Transfer_footer { display: flex; h5/pages/visitorSubGuide/index.vue
@@ -31,9 +31,6 @@ </script> <style lang="scss" scoped> .box { padding: 30rpx; .line { margin-bottom: 16rpx; } padding: 0 30rpx; } </style> h5/pages/waybill/list.vue
@@ -10,6 +10,7 @@ <text>筛选</text> </view> </view> <view @click="diaodu" class="head_title">分中心调度联系方式</view> <!-- --> <scroll-view scroll-y="true" class="scroll_Y" @scrolltolower="scrolltolower"> <view class="main_list"> @@ -126,8 +127,8 @@ form: {}, provinceList: [ [ '安徽省', '江苏省', '浙江省', '河北省', '山西省', '北京', '天津', '上海', '重庆', '辽宁省', '吉林省', '黑龙江省', '福建省', '江西省', '山东省', '河南省', '湖北省', '湖南省', '广东省', '海南省', '四川省', '贵州省', '云南省', '陕西省', '甘肃省', '青海省', '台湾省', '内蒙古自治区', '广西壮族自治区', '安徽', '江苏', '浙江', '河北', '山西', '北京', '天津', '上海', '重庆', '辽宁', '吉林', '黑龙江', '福建', '江西', '山东', '河南', '湖北', '湖南', '广东', '海南', '四川', '贵州', '云南', '陕西', '甘肃', '青海', '台湾', '内蒙古自治区', '广西壮族自治区', '西藏自治区', '宁夏回族自治区', '新疆维吾尔自治区' ] ] @@ -147,6 +148,11 @@ this.list = [] this.showModal = false this.getList() }, diaodu() { uni.navigateTo({ url: '/pages/staff/signin' }) }, modalSub() { this.handleQuery() @@ -231,7 +237,11 @@ page { background: #F7F7F7; } .head_title{ color: $uni-color-primary; text-decoration-line: underline; margin-top: 20rpx; } .head_wrap { display: flex; align-items: center; @@ -276,8 +286,8 @@ .scroll_Y { background-color: #f7f7f7; height: calc(100vh - 130rpx); height: calc(100vh - 180rpx); margin-top: 10rpx; .main_list { width: 750rpx; h5/pages/waybill/waybillDetail.vue
@@ -1,7 +1,7 @@ <template> <view class="main_app"> <!-- <image class="bg" src="@/static/wuliuche_bg@2x.png" mode="widthFix"></image> --> <map id="map" :latitude="latitude" :longitude="longitude" :polyline="polyline" :markers="markers" :scale="4"> <map id="map" :latitude="latitude" :longitude="longitude" :polyline="polyline" :markers="markers" :scale="scale"> </map> <view class="main_content"> @@ -25,7 +25,8 @@ </view> <view class="line"> <view class="la">司机信息</view> <view class="val" @click="callPhone(info.driverTel)">{{ info.driverName }} <text class="primaryColor ml12">{{info.driverTel}}</text> </view> <view class="val" @click="callPhone(info.driverTel)">{{ info.driverName }} <text class="primaryColor ml12">{{info.driverTel}}</text> </view> </view> <view class="line"> <view class="la">车辆位置</view> @@ -33,7 +34,7 @@ </view> <view class="line"> <view class="la">预计到达</view> <view class="val">{{info.plannedArrivedDate}}</view> <view class="val primaryColor" v-if="info.plannedArrivedDate">{{info.plannedArrivedDate.slice(0,11)}}</view> </view> </view> </view> @@ -89,6 +90,7 @@ latitude: 31.783205, longitude: 117.262635, scale: 5, markers: [], includePoints: [ // {latitude: 31.783205, longitude: 117.262635}, {latitude: 36.783205, longitude: 118.10}, @@ -153,13 +155,57 @@ bgColor: '#FF0000' } }) this.latitude = (Number(this.markers[0].latitude) + Number(this.markers[1].latitude)) / 2 - 8 this.latitude = (Number(this.markers[0].latitude) + Number(this.markers[1].latitude)) / 2 - 4 this.longitude = (Number(this.markers[0].longitude) + Number(this.markers[1].longitude)) / 2 const distance = this.distance() console.log('distance', distance); if(distance > 1500000){ this.scale = 4 }else if(distance < 600000){ this.scale = 6 }else{ this.scale = 5 } } if (res.data && res.data.gisList && res.data.gisList.length > 0) { this.gisInfo = res.data.gisList[0] if (this.gisInfo && this.gisInfo.gisList && this.gisInfo.gisList.length > 0) { this.polyline = [] let temp = { color: '#ff0000', width: 3, points: this.gisInfo.gisList.map(item => { return { latitude: item.lat, longitude: item.lon, } }) } this.polyline.push(temp) } } }) }, distance() { const { latitude: lat1, longitude: lng1 } = this.markers[0]; const { latitude: lat2, longitude: lng2 } = this.markers[1]; const radLat1 = this.rad(lat1); const radLat2 = this.rad(lat2); const a = radLat1 - radLat2; const b = this.rad(lng1) - this.rad(lng2); const Haversin = Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2); const radius = 6378137; // 地球半径 return 2 * radius * Math.asin(Math.sqrt(Haversin)); }, rad(d) { return d * Math.PI / 180.0; }, callPhone(phone){ uni.makePhoneCall({ @@ -176,18 +222,18 @@ } .main_app { padding: 0; padding-top: 45vh; .main_content{ height: 55vh ; overflow: auto; padding: 20rpx 30rpx 0; position: relative; z-index: 999; } // .main_content{ // height: 55vh ; // overflow: auto; // padding: 20rpx 30rpx 0; // position: relative; // z-index: 999; // } #map { width: 750rpx; position: absolute; position: fixed; left: 0; top: 0; height: 105vh; @@ -208,6 +254,7 @@ margin-bottom: 20rpx; position: relative; z-index: 999; .separate { height: calc( 100% - 250rpx ); width: 1rpx; @@ -217,6 +264,7 @@ top: 102rpx; z-index: -1; } .title { font-weight: 500; font-size: 32rpx; @@ -235,18 +283,21 @@ .val {} } .item_title{ font-weight: 600; font-size: 32rpx; display: flex; align-items: center; } .icon_wrap { width: 48rpx; margin-right: 30rpx; display: flex; align-items: center; justify-content: center; .icon { width: 48rpx; height: 48rpx; @@ -254,27 +305,30 @@ z-index: 2; } } .item { position: relative; color: #999999; margin-bottom: 30rpx; .text{ color: #666666; } .icon { width: 20rpx; height: 20rpx; position: relative; z-index: 2; } .h2 { display: flex; align-items: center; height: 48rpx; } .h1 { } .h1 {} .time { padding-left: 78rpx; h5/utils/config.js
@@ -1,8 +1,8 @@ export const baseUrl = 'zhyq_interface/' // export const baseUrl = 'zhyq_interface/' // export const baseUrl = 'http://192.168.0.173/gateway_interface/' // export const baseUrl = 'http://10.50.250.253:8088/gateway_interface/' // export const baseUrl = 'https://atwl.ahzyssl.com/zhyq_interface/' export const baseUrl = 'https://atwl.ahzyssl.com/zhyq_interface/' export const app_url = 'https://atwl.ahzyssl.com/zhyq_h5/#/' screen/src/api/index.js
@@ -175,3 +175,7 @@ export const zxloadCurve = (data) => { return request('visitsAdmin/cloudService/board/api/energy/loadCurve', data) } // 能耗看板 实时负荷曲线 export const regionDataRanking = (data) => { return request('visitsAdmin/cloudService/board/api/energy/regionDataRanking', data) } screen/src/assets/images/default_nodata.png
screen/src/views/EnergyConsum.vue
@@ -175,51 +175,54 @@ </div> <div class="center_box_two"> <img class="bg" src="@/assets/images/img_city@2x.png" alt="" /> <template v-if="data6 && data6.secondRegionDataList && data6.secondRegionDataList.length > 0"> <div class="item item1"> <div class="num fs_linear">{{ data6.secondRegionDataList[0].value }}<span class="unit">kw·h</span></div> <div class="name">{{ data6.secondRegionDataList[0].name }}</div> <template v-if="data6 && data6 && data6.length > 0"> <div class="item item1" v-if="data6.length > 4"> <div class="num fs_linear">{{ data6[4].value }}<span class="unit">kw·h</span></div> <div class="name">{{ data6[4].name }}</div> <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" /> </div> <div class="item item2" v-if="data6.secondRegionDataList.length > 1"> <div class="num fs_linear">{{ data6.secondRegionDataList[1].value }}<span class="unit">kw·h</span></div> <div class="name">{{ data6.secondRegionDataList[1].name }}</div> <div class="item item2" v-if="data6.length > 1"> <div class="num fs_linear">{{ data6[1].value }}<span class="unit">kw·h</span></div> <div class="name">{{ data6[1].name }}</div> <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" /> </div> <div class="item item3" v-if="data6.secondRegionDataList.length > 2"> <div class="num fs_linear">{{ data6.secondRegionDataList[2].value }}<span class="unit">kw·h</span></div> <div class="name">{{ data6.secondRegionDataList[2].name }}</div> <div class="item item3" v-if="data6.length > 2"> <div class="num fs_linear">{{ data6[2].value }}<span class="unit">kw·h</span></div> <div class="name">{{ data6[2].name }}</div> <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" /> </div> <div class="item item4" v-if="data6.secondRegionDataList.length > 3"> <div class="num fs_linear">{{ data6.secondRegionDataList[3].value }}<span class="unit">kw·h</span></div> <div class="name">{{ data6.secondRegionDataList[3].name }}</div> <div class="item item4" v-if="data6.length > 3"> <div class="num fs_linear">{{ data6[3].value }}<span class="unit">kw·h</span></div> <div class="name">{{ data6[3].name }}</div> <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" /> </div> <div class="item item5" v-if="data6.secondRegionDataList.length > 4"> <div class="num fs_linear">{{ data6.secondRegionDataList[4].value }}<span class="unit">kw·h</span></div> <div class="name">{{ data6.secondRegionDataList[4].name }}</div> <div class="item item5"> <div class="num fs_linear">{{ data6[0].value }}<span class="unit">kw·h</span></div> <div class="name">{{ data6[0].name }}</div> <img src="@/assets/images/bg_data@2x.png" class="bg" alt="" /> </div> </template> <div class="bottom_wrap" v-if="data1.yesterdayElectricity"> <div class="bottom bottom1"> <div class="num fs_linear">{{ data1.yesterdayElectricity.total || 0 }}</div> <div class="bottom bottom1" @click="changeacDay(3)"> <div :class="{active: activeDays == 3}" class="num fs_linear">{{ data1.yesterdayElectricity.total || 0 }}</div> <div class="name">昨日用电</div> <div class="unit">kw·h</div> <img src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" /> <img v-if="activeDays == 3" src="@/assets/images/ic_dianliang@2x.png" class="bg" alt="" /> <img v-else src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" /> </div> <div class="bottom bottom2"> <div class="num">{{ data1.todayElectricity.total || 0 }}</div> <div class="bottom bottom2" @click="changeacDay(1)"> <div :class="{active: activeDays == 1}" class="num">{{ data1.todayElectricity.total || 0 }}</div> <div class="name">今日用电</div> <div class="unit">kw·h</div> <img src="@/assets/images/ic_dianliang@2x.png" class="bg" alt="" /> <img v-if="activeDays == 1" src="@/assets/images/ic_dianliang@2x.png" class="bg" alt="" /> <img v-else src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" /> </div> <div class="bottom bottom3"> <div class="num fs_linear">{{ data1.monthElectricity.total || 0 }}</div> <div class="bottom bottom3" @click="changeacDay(2)"> <div :class="{active: activeDays == 2}" class="num fs_linear">{{ data1.monthElectricity.total || 0 }}</div> <div class="name">本月用电</div> <div class="unit">kw·h</div> <img src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" /> <img v-if="activeDays == 2" src="@/assets/images/ic_dianliang@2x.png" class="bg" alt="" /> <img v-else src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" /> </div> </div> </div> @@ -298,7 +301,8 @@ zxenergyDataList, zxlastMonthOil, zxloadCurve, zxenergyRegionData zxenergyRegionData, regionDataRanking } from '@/api' @@ -546,13 +550,19 @@ data1.value = result }) } const activeDays = ref('1') const data6 = ref({}) const changeacDay = (val) => { activeDays.value = val getData6() } const getData6 = () => { zxenergyRegionData().then(res => { regionDataRanking({type: activeDays.value}).then(res => { const result = res.data data6.value = result }) } const activeTab2 = ref(0) const tabsClick2 = (v) => { @@ -888,7 +898,7 @@ position: absolute; text-align: center; padding-top: 70px; cursor: pointer; .num { font-size: 24px; color: #D0FFFA; @@ -904,6 +914,12 @@ .unit { font-size: 14px; color: #D0FFFA; } .active { font-size: 36px; color: #01D9FE; font-weight: bold; margin-bottom: 10px; } } @@ -921,14 +937,8 @@ bottom: -0px; left: 50%; transform: translate(-50%, 0); padding-top: 50px; /* padding-top: 50px; */ .num { font-size: 36px; color: #01D9FE; line-height: 54px; font-weight: bold; } } } } screen/src/views/LogisticsEfficiency.vue
@@ -3,7 +3,7 @@ <div class="main_app"> <img src="@/assets/images/energy_ef/bg@2x.png" class="main_bg" alt="" /> <div class="main_header"> <!-- <img src="@/assets/images/maintitle.gif" class="main_header_bg" alt="" /> --> <img src="@/assets/images/maintitle.gif" class="main_header_bg" alt="" /> <div class="title">安泰智慧物流园区-调度能效跟踪</div> <div class="time_wrap"> <span class="date">{{ date }}</span> @@ -38,13 +38,15 @@ <img v-else src="@/assets/images/ic_down.png" class="icon" alt=""> </template> <template v-if="activeTab1 == 1 && data1.yearLastOutTotal"> <img v-if="data1.yearOutTotal > data1.yearLastOutTotal" src="@/assets/images/ic_up.png" class="icon" alt=""> <img v-if="data1.yearOutTotal > data1.yearLastOutTotal" src="@/assets/images/ic_up.png" class="icon" alt=""> <img v-else src="@/assets/images/ic_down.png" class="icon" alt=""> </template> <span v-if="activeTab1 == 0 && data1.monthLastOutTotal">{{ Math.abs((((data1.monthOutTotal - data1.monthLastOutTotal)/data1.monthLastOutTotal) * 100).toFixed(1)) }}%</span> <span v-else-if="activeTab1 == 1 && data1.yearLastOutTotal">{{ Math.abs((((data1.yearOutTotal - data1.yearLastOutTotal)/data1.yearLastOutTotal) * 100).toFixed(1)) }}%</span> <span v-if="activeTab1 == 0 && data1.monthLastOutTotal">{{ Math.abs((((data1.monthOutTotal - data1.monthLastOutTotal) / data1.monthLastOutTotal) * 100).toFixed(1)) }}%</span> <span v-else-if="activeTab1 == 1 && data1.yearLastOutTotal">{{ Math.abs((((data1.yearOutTotal - data1.yearLastOutTotal) / data1.yearLastOutTotal) * 100).toFixed(1)) }}%</span> <span v-else>-</span> </div> </div> @@ -207,7 +209,8 @@ <img src="@/assets/images/energy_ef/ic_chukuxiaolv@2x.png" alt=""> <div class="content"> <div class="name">出库效率</div> <div class="num"><span>{{ activeTab12 == 0 ? data1.todayOutRate : data1.monthOutRate }}</span>万支/小时 <div class="num"><span>{{ activeTab12 == 0 ? data1.todayOutRate || 0 : data1.monthOutRate || 0 }}</span>万支/小时 </div> </div> </div> @@ -215,7 +218,8 @@ <img src="@/assets/images/energy_ef/ic_rukuxiaolv@2x.png" alt=""> <div class="content"> <div class="name">入库效率</div> <div class="num"><span class="today">{{ activeTab12 == 0 ? data1.todayInRate : data1.monthInRate <div class="num"><span class="today">{{ activeTab12 == 0 ? data1.todayInRate || 0 : data1.monthInRate || 0 }}</span>万支/小时</div> </div> </div> @@ -259,16 +263,14 @@ <div class="repertory"> <div class="use_ratio"> <div class="header"> <div>库存量 <span class="num">{{ data1.stockTotal }}/{{ data1.stockMax }}</span></div> <div v-if="data1.stockTotal && data1.stockMax">利用率{{ ((data1.stockTotal / data1.stockMax) * 100).toFixed(0) }}%</div> <div>库存量 <span class="num">{{ data6.num }}/{{ data6.totalNum }}</span></div> <div v-if="data6.num && data6.totalNum">利用率{{ (data6.useRate * 100).toFixed(0) }}%</div> </div> <Percent v-if="data1.stockTotal && data1.stockMax" :rate="((data1.stockTotal / data1.stockMax) * 100).toFixed(0)" /> <Percent v-if="data6.num && data6.totalNum" :rate="((data6.num / data6.totalNum) * 100).toFixed(0)" /> </div> <div class="list two-swiper"> <div class="swiper-wrapper"> <div class="item two-swiper-slide swiper-slide" v-for="item in dataList6"> <div class="item two-swiper-slide swiper-slide" v-for="item in data6.stockList"> <div class="la">{{ item.name }}</div> <div class="val">{{ item.num }}万支</div> </div> @@ -279,26 +281,26 @@ </div> </div> <!-- --> <div class="modal" v-if="activeCar && activeCar.phone"> <div class="modal" v-if="showModal"> <div class="title_head"> <img src="@/assets/images/energy_ef/chuku_ic_car@2x.png" alt=""> <span>皖a222</span> <span>{{ activeCar.carCode }}</span> </div> <div class="info"> <div class="item"> <div class="dian"></div> <div class="la">运输单号:</div> <div class="val">22</div> <div class="val">{{ activeCar.billCode }}</div> </div> <div class="item"> <div class="dian"></div> <div class="la">司机信息:</div> <div class="val">22</div> <div class="val">{{ activeCar.name }} {{ activeCar.phone }}</div> </div> <div class="item"> <div class="dian"></div> <div class="la">总运输量:</div> <div class="val">22 万支</div> <div class="val" v-if="activeCar.totalNum">{{ activeCar.totalNum }}万支</div> </div> </div> <div class="tabs"> @@ -306,35 +308,45 @@ <div :class="{ active: modalTab == 1 }" @click="modalTabClick(1)" class="tab">合同列表</div> </div> <div class="tab1" v-if="modalTab == 0"> <div class="item" v-for="item, i in 3"> <template v-for="item, i in activeCar.logList"> <div class="item" v-if="i < 4 || showMore"> <div class="icon_wrap"> <img v-if="i === 0" class="dian" src="@/assets/images/ic_dangqian@2x.png" alt=""> <img v-if="i != 0" class="dian" src="@/assets/images/ic_dangqian@2x.png" alt=""> <img v-else src="@/assets/images/ic_jindu@2x.png" class="dian_ac" alt=""> <div class="line"></div> </div> <div class="content"> <div class="status">作业中</div> <div class="text">作业任务在【入库去1号月台】开始作业</div> <div class="time">2024-04-02 12:00</div> <div class="status" :class="{ ac: i == 0 }">{{ statusMapD[item.objType] }}</div> <div class="text">{{ item.content }}</div> <div class="time">{{ item.createDate }}</div> </div> </div> </template> <div class="more_btn" v-if="!showMore && activeCar.logList && activeCar.logList.length > 4" @click="showMore = true">查看更多作业信息</div> <div class="empty" v-if="!activeCar.contractList || activeCar.logList.contractList == 0"> <img src="@/assets/images/default_nodata.png" alt=""> </div> </div> <div class="tab2" v-if="modalTab == 1"> <div class="list"> <div class="item"> <div class="item" v-for="item in activeCar.contractList"> <div class="head"> <div class="code">合同号:12312312</div> <div class="addr">收货地:江门烟草物流中心</div> <div class="code">合同号:{{ item.ioCode }}</div> <div class="addr">收货地:{{ item.address }}</div> </div> <div class="line" v-for="i in 3"> <div class="name">物料名称:<span class="val">黄山</span></div> <div class="num">数量:<span class="val">100万支</span></div> <div class="line" v-for="i in item.detailList"> <div class="name">物料名称:<span class="val">{{ i.materialName }}</span></div> <div class="num">数量:<span class="val">{{ i.ioQty }}万支</span></div> </div> </div> <div class="empty" v-if="!activeCar.contractList || activeCar.logList.contractList == 0"> <img src="@/assets/images/default_nodata.png" alt=""> </div> </div> </div> </div> </div> <div class="modal_mask" v-if="activeCar && activeCar.phone" @click="activeCar = {}"></div> <div class="modal_mask" v-if="showModal" @click="closeModal"></div> </div> </v-scale-screen> </template> @@ -362,6 +374,7 @@ import 'swiper/css/swiper.min.css' import Swiper from 'swiper' const statusMapD = ['任务生成', '确认任务', '已签到', '入园等待', '月台叫号', '作业中', '作业完成', '月台转移', '异常挂起', '下发授权离园', '离园', '已过号'] const colors = ['#FEAF01', '#01ABFE', '#51F9E4'] const weekMap = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六',] const date = ref(dayjs().format('YYYY.MM.DD')) @@ -588,7 +601,7 @@ const scatterData = data7.value.carsList.map(item => { return { name: item.terminalId, img: item.status == 0 ? icLixian : item.status == 1 || item.status == 2 ? icZaitu : icKongxian, img: item.jobStatus == 2 ? icLixian : item.jobStatus == 1 ? icZaitu : icKongxian, data: [{ code: item.plateNum, value: [item.longitude, item.latitude] }] } }) @@ -780,7 +793,9 @@ myChart.on('click', function (params) { const item = params.data getCarsJobDetails({ carCode: item.code }).then(res => { activeCar.value = res.data // getCarsJobDetails({ carCode: '皖AE5277' }).then(res => { showModal.value = true activeCar.value = { ...res.data, carCode: item.code } }) }) window.addEventListener('resize', function () {//执行 @@ -788,9 +803,15 @@ }) } const activeCar = ref({}) const showModal = ref(false) const modalTab = ref(0) const showMore = ref(false) const modalTabClick = (val) => { modalTab.value = val } const closeModal = () => { showModal.value = false activeCar.value = {} } @@ -879,11 +900,11 @@ initEchart1() }) } const dataList6 = ref([]) const data6 = ref({}) const getData6 = () => { wlstockList().then(res => { const result = res.data.stockList || [] dataList6.value = result const result = res.data || [] data6.value = result }) } @@ -917,8 +938,8 @@ var newSwiper1 = new Swiper('.two-swiper', { initialSlide: 0, direction: 'vertical', //竖直方向 slidesPerView: 7, autoplay: autoplayFlag(dataList6.value, 7, 2000), slidesPerView: 6, autoplay: autoplayFlag(data6.value.stockList, 6, 2000), observer: true, //修改swiper自己或子元素时,自动初始化swiperiper }) } @@ -1461,7 +1482,7 @@ .list { margin-top: 22px; height: 240px; height: 216px; overflow: hidden; scrollbar-width: none; @@ -1702,6 +1723,25 @@ } .tab1 { height: 360px; overflow: auto; .more_btn { width: 116px; height: 25px; border-radius: 2px; border: 1px solid #D2E0FF; font-size: 12px; display: flex; align-items: center; justify-content: center; color: D2E0FF; margin-left: 30px; margin-top: 12px; cursor: pointer; } .item { display: flex; @@ -1748,6 +1788,10 @@ color: #fff; } .ac { color: #00F2F3; } .text { margin-bottom: 4px; } @@ -1761,6 +1805,9 @@ } .tab2 { height: 360px; overflow: auto; .list { .item { width: 560px; @@ -1810,6 +1857,17 @@ } } } .empty { display: flex; justify-content: center; align-items: center; height: 340px; img { width: 144px; } } } .modal_mask {