From d38f3d8c0642d5d58a3baeff5d80abafaa702f9f Mon Sep 17 00:00:00 2001 From: liukangdong <898885815@qq.com> Date: 星期一, 13 一月 2025 13:43:11 +0800 Subject: [PATCH] ll --- h5/pages/waybill/waybillDetail.vue | 26 +++ screen/src/assets/images/LogisticsCenter/ic_tips@2x.png | 0 h5/static/ic_tips@2x.png | 0 h5_meeting/pages/index/index.vue | 94 ++++++++++---- screen/src/views/LogisticsCenter.vue | 139 +++++++++++++++++++--- h5_meeting/utils/config.js | 1 screen/src/assets/images/LogisticsCenter/ic_hetong@2x.png | 0 screen/src/views/EnergyConsum.vue | 57 ++++++++- 8 files changed, 254 insertions(+), 63 deletions(-) diff --git a/h5/pages/waybill/waybillDetail.vue b/h5/pages/waybill/waybillDetail.vue index 30dc2b4..c29ebfe 100644 --- a/h5/pages/waybill/waybillDetail.vue +++ b/h5/pages/waybill/waybillDetail.vue @@ -4,7 +4,11 @@ <map id="map" :latitude="latitude" :longitude="longitude" :polyline="polyline" :markers="markers" :scale="scale"> </map> - <view class="main_content"> + <view class="main_content"> + <view class="stock_status" v-if="info.overStock && info.overStock == 1"> + <image src="@/static/ic_tip@2x.png" mode=""></image> + <view class="">鍥犲簱瀛樹笉瓒筹紝璁㈠崟鏆傛椂鏃犳硶閰嶈浇</view> + </view> <view class="info"> <view class="head"> <view class="code">{{info.contractNumber}}</view> @@ -350,7 +354,24 @@ } } } - + .stock_status{ + background: #FFEEEE; + font-size: 26rpx; + color: #ED4545; + display: flex; + align-items: center; + border-radius: 8rpx 8rpx 0rpx 0rpx; + height: 80rpx; + position: relative; + z-index: 1; + padding: 0 30rpx 4rpx; + top: 8rpx; + image{ + width: 28rpx; + height: 28rpx; + margin-right: 10rpx; + } + } .info { border-radius: 12rpx; margin-bottom: 20rpx; @@ -359,7 +380,6 @@ overflow: hidden; position: relative; z-index: 1; - .head { display: flex; justify-content: space-between; diff --git a/h5/static/ic_tips@2x.png b/h5/static/ic_tips@2x.png new file mode 100644 index 0000000..5cc7ee1 --- /dev/null +++ b/h5/static/ic_tips@2x.png Binary files differ diff --git a/h5_meeting/pages/index/index.vue b/h5_meeting/pages/index/index.vue index 07b8517..70b9d44 100644 --- a/h5_meeting/pages/index/index.vue +++ b/h5_meeting/pages/index/index.vue @@ -22,19 +22,33 @@ v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 5">宸叉挙閿�</text> </view> <view v-if="meetingInfo.meetingName" class="meeting_name">{{meetingInfo.meetingName}}</view> - <view v-if="meetingInfo.meetingTime && meetingInfo.bookingUser" class="meeting_con"> - <view class="content"> - <view class="line"> - <image src="@/static/ic_time@2x.png"></image> - <text>{{meetingInfo.meetingTime }}</text> + <view class=""> + <view v-if="meetingInfo.meetingTime && meetingInfo.bookingUser" class="meeting_con"> + <view class="content"> + <view class="line"> + <image src="@/static/ic_time@2x.png"></image> + <text>{{meetingInfo.meetingTime }}</text> + </view> + <view class="line"> + <image src="@/static/ic_people@2x.png"></image> + <text>棰勭害浜猴細{{meetingInfo.bookingUser }}</text> + </view> </view> - <view class="line"> - <image src="@/static/ic_people@2x.png"></image> - <text>棰勭害浜猴細{{meetingInfo.bookingUser }}</text> + + <view v-show="showQrbg" class="qrcode_wrap"> + <canvas id="qrcode" canvas-id="qrcode" class="qrcode"></canvas> </view> </view> - <view v-show="showQrbg" class="qrcode_wrap"> - <canvas id="qrcode" canvas-id="qrcode" class="qrcode"></canvas> + <view v-if="meetingInfo.meetingTime && meetingInfo.bookingUser && showQrbg" class="qrcode_box"> + <view class="text" + v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 1"> + 寰俊鎵竴鎵紑濮嬩細璁�</view> + <view class="text" + v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 4"> + 寰俊鎵竴鎵紑濮嬩細璁�</view> + <view class="text" + v-if="info.meetingListResponseList && info.meetingListResponseList.length > 0 && info.meetingListResponseList[0].meetingStatus == 2"> + 寰俊鎵竴鎵粨鏉熶細璁�</view> </view> </view> <view class="meeting_wrap"> @@ -62,13 +76,17 @@ v-if="info.fileType == 0 && (info.meetingListResponseList == null || info.meetingListResponseList.length == 0)" class="swiper" circular autoplay indicator-dots> <swiper-item v-for="item in info.multifileList"> - <image class="swiper_item" :src="!param.officeFlag || param.officeFlag == '0' ? item.localFileurlFull : item.fileurlFull" mode="aspectFill"></image> + <image class="swiper_item" + :src="!param.officeFlag || param.officeFlag == '0' ? item.localFileurlFull : item.fileurlFull" + mode="aspectFill"></image> </swiper-item> </swiper> <!-- --> <template v-if="info.fileType == 1 && info.multifileList && info.multifileList.length > 0 && (info.meetingListResponseList == null || info.meetingListResponseList.length == 0)"> - <video :src="!param.officeFlag || param.officeFlag == '0' ? info.multifileList[0].localFileurlFull : info.multifileList[0].fileurlFull" class="app_video" :autoplay="true" loop :controls="false"></video> + <video + :src="!param.officeFlag || param.officeFlag == '0' ? info.multifileList[0].localFileurlFull : info.multifileList[0].fileurlFull" + class="app_video" :autoplay="true" loop :controls="false"></video> </template> </view> </template> @@ -87,7 +105,7 @@ time: '', date: '', showQrbg: false, - timer: null, + timer: null, timer2: null, touchNum: 0, param: {}, @@ -103,25 +121,25 @@ timer: null } }, - onShow() { + onShow() { const param = uni.getStorageSync('param') if (!param.code) { return uni.navigateTo({ url: '/pages/index/config' }) - } + } this.initDatetime() - + }, - onReady() { - + onReady() { + }, onHide() { if (this.timer) { clearInterval(this.timer) - } - if (this.timer2) { - clearInterval(this.timer2) + } + if (this.timer2) { + clearInterval(this.timer2) } }, methods: { @@ -186,8 +204,8 @@ this.time = dayjs().format('HH:mm') this.date = dayjs().format('YYYY-MM-DD') + ' ' + weeks[new Date().getDay()] }, 1000) - this.param = uni.getStorageSync('param') || {} - + this.param = uni.getStorageSync('param') || {} + this.getData() this.timer2 = setInterval(() => { this.getData() @@ -239,13 +257,13 @@ display: flex; flex-direction: column; justify-content: space-between; - padding-bottom: 42rpx; + padding-bottom: 34rpx; color: #fff; overflow: hidden; .meeting_wrap { margin-left: 42rpx; - margin-top: 85rpx; + // margin-top: 60rpx; .title { font-weight: 500; @@ -322,6 +340,7 @@ justify-content: space-between; align-items: center; padding: 0 42rpx; + padding-right: 64rpx; .content { .line { @@ -339,6 +358,7 @@ } } + .qrcode_wrap { width: 110px; height: 110px; @@ -346,7 +366,7 @@ align-items: center; justify-content: center; background-color: #fff; - + .qrcode { width: 104px; height: 104px; @@ -355,19 +375,35 @@ } + .qrcode_box { + width: 100%; + display: flex; + justify-content: flex-end; + color: rgba(255, 255, 255, 0.6); + padding-right: 64rpx; + margin-top: 18rpx; + .text { + width: 110px; + text-align: center; + font-size: 22rpx; + // transform: scale(.84); + } + } + .meeting_name { margin-bottom: 12rpx; font-weight: bold; font-size: 49rpx; padding-left: 42rpx; + padding-right: 64rpx; } .home_status { font-weight: bold; font-size: 125rpx; - margin: 70rpx 42rpx; - line-height: 185rpx; - height: 185rpx; + margin: 140rpx 42rpx 22rpx; + line-height: 125rpx; + height: 125rpx; } .orange { diff --git a/h5_meeting/utils/config.js b/h5_meeting/utils/config.js index 7366678..3d94dee 100644 --- a/h5_meeting/utils/config.js +++ b/h5_meeting/utils/config.js @@ -2,6 +2,7 @@ // export const baseUrl = 'gateway_interface/' // export const baseUrl = 'http://192.168.5.13/gateway_interface/' export const baseUrl = 'http://192.168.0.173/gateway_interface/' +// export const baseUrl = 'https://atwl.ahzyssl.com/zhyq_interface/' export const statusMap = { 0: '寰呯‘璁�', diff --git a/screen/src/assets/images/LogisticsCenter/ic_hetong@2x.png b/screen/src/assets/images/LogisticsCenter/ic_hetong@2x.png new file mode 100644 index 0000000..df42f5d --- /dev/null +++ b/screen/src/assets/images/LogisticsCenter/ic_hetong@2x.png Binary files differ diff --git a/screen/src/assets/images/LogisticsCenter/ic_tips@2x.png b/screen/src/assets/images/LogisticsCenter/ic_tips@2x.png new file mode 100644 index 0000000..168eb92 --- /dev/null +++ b/screen/src/assets/images/LogisticsCenter/ic_tips@2x.png Binary files differ diff --git a/screen/src/views/EnergyConsum.vue b/screen/src/views/EnergyConsum.vue index 1071fa2..130a929 100644 --- a/screen/src/views/EnergyConsum.vue +++ b/screen/src/views/EnergyConsum.vue @@ -195,7 +195,7 @@ </template> <div class="bottom_wrap" v-if="data1.yesterdayElectricity"> <div class="bottom bottom1" @click="changeacDay(3)"> - <div :class="{ active: activeDays == 3 }" class="num fs_linear">{{ data1.yesterdayElectricity.total || 0 + <div :class="{ active: activeDays == 3 }" class="num fs_linear">{{ dataObj6.obj1.total || 0 }}</div> <div class="name">鏄ㄦ棩鐢ㄧ數</div> <div class="unit">kw路h</div> @@ -203,14 +203,14 @@ <img v-else src="@/assets/images/ic_dianliang_b@2x.png" class="bg" alt="" /> </div> <div class="bottom bottom2" @click="changeacDay(1)"> - <div :class="{ active: activeDays == 1 }" class="num">{{ data1.todayElectricity.total || 0 }}</div> + <div :class="{ active: activeDays == 1 }" class="num">{{ dataObj6.obj2.total || 0 }}</div> <div class="name">浠婃棩鐢ㄧ數</div> <div class="unit">kw路h</div> <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" @click="changeacDay(2)"> - <div :class="{ active: activeDays == 2 }" class="num fs_linear">{{ data1.monthElectricity.total || 0 }} + <div :class="{ active: activeDays == 2 }" class="num fs_linear">{{ dataObj6.obj3.total || 0 }} </div> <div class="name">鏈湀鐢ㄧ數</div> <div class="unit">kw路h</div> @@ -559,15 +559,56 @@ }) } const activeDays = ref('1') -const data6 = ref({}) +const data6 = ref([]) +const dataObj6 = ref({ + obj1: { total: 0 }, + obj2: { total: 0 }, + obj3: { total: 0 }, +}) const changeacDay = (val) => { activeDays.value = val - getData6() + if (val == 3) { + data6.value = dataObj6.value.obj1.list + } else if (val == 1) { + data6.value = dataObj6.value.obj2.list + } else { + data6.value = dataObj6.value.obj3.list + } } + const getData6 = () => { - regionDataRanking({ type: activeDays.value }).then(res => { - const result = res.data || {} - data6.value = result + let obj = { + obj1: { list: [], total: 0 }, + obj2: { list: [], total: 0 }, + obj3: { list: [], total: 0 }, + } + regionDataRanking({ type: 3 }).then(res => { + let arr = res.data || [] + obj.obj1.list = arr + arr.forEach(i => { + obj.obj1.total += Number(i.value) + }) + obj.obj1.total = obj.obj1.total.toFixed(1) + dataObj6.value = obj + }) + regionDataRanking({ type: 1 }).then(res => { + let arr = res.data || [] + obj.obj2.list = arr + arr.forEach(i => { + obj.obj2.total += Number(i.value) + }) + obj.obj2.total = obj.obj2.total.toFixed(1) + dataObj6.value = obj + changeacDay(1) + }) + regionDataRanking({ type: 2 }).then(res => { + let arr = res.data || [] + obj.obj3.list = arr + arr.forEach(i => { + obj.obj3.total += Number(i.value) + }) + obj.obj3.total = obj.obj3.total.toFixed(1) + dataObj6.value = obj }) } diff --git a/screen/src/views/LogisticsCenter.vue b/screen/src/views/LogisticsCenter.vue index f7135b5..195f64b 100644 --- a/screen/src/views/LogisticsCenter.vue +++ b/screen/src/views/LogisticsCenter.vue @@ -30,11 +30,8 @@ <img src="@/assets/images/ic_question@2x.png" style="margin-left: 6px;" class="icon" alt=""> <div class="hover_wrap"> <div class="triangle"></div> - <div class="title">鍑哄簱鑳藉姏缁熻璇存槑锛�</div> - <div>褰撳墠璁㈠崟閲忥細鎴嚦鏄ㄦ棩鏈畬鎴愯鍗�+褰撴棩涓嬭揪鐨勮鍗曟暟閲忥紱</div> - <div>褰撴棩浠诲姟閲忥細鎴嚦鏄ㄦ棩宸查厤杞芥湭鍑哄簱+褰撴棩宸查厤杞芥湭鍑哄簱鏁伴噺+鏃犻渶閰嶈浇鐨勪换鍔★紱</div> - <div>浠婃棩鍑哄簱閲忥細褰撴棩鎸夊疄闄呭嚭搴撻噺锛堜互鐢靛瓙閿佷笂閿佷负鍑嗭級</div> - <div>鍓╀綑浠诲姟閲忥細褰撴棩浠诲姟閲�-浠婃棩鍑哄簱閲�</div> + <div class="title">绱鍑哄簱閲忕粺璁¤鏄庯細</div> + <div>绱鍑哄簱閲忥細鎵�鏈夌墿娴佸嚭搴撲綔涓氭暟鎹紙鍖呭惈鑱旇惀鍔犲伐锛堝洖杩愩�佽惤鍦伴攢鍞級銆佸墠缃簱绉诲簱(鎴愰兘/涓存矀)绛夋墍鏈夊嚭搴撲綔涓氭暟鎹級</div> </div> </div> </div> @@ -48,11 +45,22 @@ </div> <div class="content_wrap"> <div class="num_wrap"> - <div class="num_list" v-if="StockOutData.currentNum || StockOutData.currentNum == 0"> - <div class="num" v-for="i in StockOutData.currentNum + ''"> - {{ i }} - <img class="bg" src="@/assets/images/LogisticsCenter/bg_number@2x.png" alt=""> + + <div class="question1"> + <div class="hover_con"> + <div class="num_list" v-if="StockOutData.currentNum || StockOutData.currentNum == 0"> + <div class="num" v-for="i in StockOutData.currentNum + ''"> + {{ i }} + <img class="bg" src="@/assets/images/LogisticsCenter/bg_number@2x.png" alt=""> + </div> + </div> + <div class="hover_wrap"> + <div class="triangle"></div> + <div class="title">璋冩嫧鍑哄簱閲忥細{{ StockOutData.currentProvinceNum || 0 }}绠�</div> + <div class="title">鍏朵粬鍑哄簱閲忥細{{ StockOutData.currentOtherNum || 0 }}绠�</div> + </div> </div> + </div> <div class="content"> <div class="unit_wrap"> @@ -125,7 +133,7 @@ <span class="item">{{ item.contractNumber }}</span> <span class="item status">{{ item.statusDesc }}</span> <span class="item">{{ item.receiveEnterprise }}</span> - <span class="item">{{ item.transportDate || '-' }}</span> + <span class="item">{{ item.createDate || '-' }}</span> </div> </div> </div> @@ -172,7 +180,7 @@ <div class="name">褰撳墠璁㈠崟閲�</div> <div class="num"><span class="blue" v-if="cneterData.currentOrderNum || cneterData.currentOrderNum == 0">{{ - cneterData.currentOrderNum.toFixed(0) }}</span>绠�</div> + cneterData.currentOrderNum }}</span>绠�</div> </div> </div> <div class="item"> @@ -180,7 +188,7 @@ <div class="content"> <div class="name">褰撳墠浠诲姟閲�</div> <div class="num"><span v-if="cneterData.currentPlanNum || cneterData.currentPlanNum == 0">{{ - cneterData.currentPlanNum.toFixed(0) }}</span>绠�</div> + cneterData.currentPlanNum }}</span>绠�</div> <div class="unit">杞︽锛歿{ cneterData.currentPlanCarNum }}</div> </div> </div> @@ -190,7 +198,7 @@ <div class="name">浠婃棩鍑哄簱閲�</div> <div class="num"><span v-if="cneterData.crrentOutNum || cneterData.crrentOutNum == 0" class="finish">{{ - cneterData.crrentOutNum.toFixed(0) }}</span>绠�</div> + cneterData.crrentOutNum }}</span>绠�</div> <div class="unit">杞︽锛歿{ cneterData.crrentOutCarNum }}</div> </div> </div> @@ -200,7 +208,7 @@ <div class="name">鍓╀綑浠诲姟閲�</div> <div class="num"><span v-if="cneterData.crrentRestNum || cneterData.crrentRestNum == 0" class="today">{{ - cneterData.crrentRestNum.toFixed(0) }}</span>绠�</div> + cneterData.crrentRestNum }}</span>绠�</div> <div class="unit">杞︽锛歿{ cneterData.crrentRestCarNum }}</div> </div> </div> @@ -342,7 +350,7 @@ 鍏ㄧ渷锛� <span>{{ data7.currentNum }}</span> <span class="unit">杈� | </span> - <span v-if="data7.totalNum">{{ ((data7.currentNum / data7.totalNum) * 100).toFixed(1) }}%</span> + <span v-if="data7.totalNum">{{ (data7.useRate * 100).toFixed(1) }}%</span> </div> </div> <div class="echart5_wrap"> @@ -355,10 +363,14 @@ <div class="modal_wrap" v-if="showModal"> <div class="title_head"> <div class="left"> - <img src="@/assets/images/energy_ef/chuku_ic_car@2x.png" alt=""> + <img src="@/assets/images/LogisticsCenter/ic_hetong.png" alt=""> <span>鍚堝悓鍙凤細{{ modalInfo.contractNumber }}</span> </div> <div class="tit_status">{{ modalInfo.orderStatusDesc }}</div> + </div> + <div v-if="modalInfo.overStock && modalInfo.overStock == 1" class="stock"> + <img src="@/assets/images/LogisticsCenter/ic_tips@2x.png" alt=""> + <span>鍥犲簱瀛樹笉瓒筹紝璁㈠崟鏆傛椂鏃犳硶閰嶈浇</span> </div> <div class="info"> <div class="item"> @@ -1062,8 +1074,8 @@ isLoadingTask.value = false let temp = res.data.rows || [] transportTask.value = temp.map(item => { - if (item.transportDate) { - item.transportDate = item.transportDate.slice(5, 16) + if (item.createDate) { + item.createDate = item.createDate.slice(5, 16) } return item }) @@ -1103,6 +1115,15 @@ label: { show: false, position: 'center' + }, + emphasis: { + // 璁剧疆鎮诞鏃舵牱寮忎负绌� + scale: false, // 鍏抽棴鏀惧ぇ鏁堟灉 + itemStyle: { + shadowBlur: 0, // 闃村奖妯$硦搴︿负 0 + shadowOffsetX: 0, + shadowColor: 'rgba(0, 0, 0, 0)', + }, }, color: colors, labelLine: { @@ -1742,7 +1763,7 @@ }, barBorderRadius: [30, 30, 0, 0], }, - data: data7.value.detailList.map(i => i.totalNum) + data: data7.value.detailList.map(i => (i.totalNum - i.zaituNum)) }, { name: '褰撴棩鎻愭姤杩愬姏', @@ -1850,7 +1871,7 @@ initialSlide: 0, direction: 'vertical', //绔栫洿鏂瑰悜 slidesPerView: 5, - autoplay: autoplayFlag(transportTask.value, 5, 4000), + autoplay: autoplayFlag(transportTask.value, 5, 6000), observer: true, //淇敼swiper鑷繁鎴栧瓙鍏冪礌鏃讹紝鑷姩鍒濆鍖杝wiper }) } @@ -2459,7 +2480,7 @@ z-index: 999; top: -5px; width: 407px; - height: 134px; + height: 148px; background: rgba(0, 30, 63, 0.6); border: 1px solid #003F82; backdrop-filter: blur(3px); @@ -2469,6 +2490,10 @@ line-height: 19px; font-weight: 400; border-radius: 6px; + + div { + margin-bottom: 3px; + } .triangle { width: 12px; @@ -2488,6 +2513,64 @@ font-size: 14px; color: #e2ebfd; } + } + } +} + +.question1 { + display: flex; + align-items: center; + + .hover_con { + position: relative; + + &:hover { + .hover_wrap { + display: block; + } + } + } + + + .hover_wrap { + display: none; + + position: absolute; + left: 108%; + z-index: 999; + top: -5px; + width: 212px; + height: 62px; + background: rgba(0, 30, 63, 0.6); + border: 1px solid #003F82; + backdrop-filter: blur(3px); + padding: 10px; + font-size: 15px; + color: #e2ebfd; + line-height: 19px; + font-weight: 400; + border-radius: 6px; + + div { + margin-bottom: 3px; + } + + .triangle { + width: 12px; + height: 12px; + position: absolute; + top: 10px; + left: -6px; + transform: rotate(45deg); + border-left: 1px solid #003F82; + border-bottom: 1px solid #003F82; + background: rgba(0, 30, 63, 0.6); + /* backdrop-filter: blur(3px); */ + } + + .title { + font-weight: 600; + color: #e2ebfd; } } } @@ -2622,12 +2705,21 @@ top: -32px !important; } } - + .stock{ + display: flex; + align-items: center; + color: #dd5d2a; + margin-bottom: 8px; + img{ + margin-right: 6px; + width: 14px; + } + } .title_head { display: flex; align-items: center; justify-content: space-between; - margin-bottom: 20px; + margin-bottom: 8px; .left { display: flex; @@ -2838,6 +2930,7 @@ .hover_wrap { left: 175px; + height: 80px; } .icon { -- Gitblit v1.9.3