From 35276d8317e8d53039cfaa373dfc9e8b425dfca1 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 17 一月 2025 18:06:01 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
screen/src/api/index.js | 4
screen/src/views/LogisticsCenter.vue | 222 ++++++++++++++++++++++++++++++++++----------
h5/pages/staff/meetingSel.vue | 19 +--
screen/src/views/LogisticsEfficiency.vue | 10 +
screen/src/views/EnergyConsum.vue | 16 +-
h5/api/meeting.js | 2
6 files changed, 198 insertions(+), 75 deletions(-)
diff --git a/h5/api/meeting.js b/h5/api/meeting.js
index 0eed5fb..5d7795e 100644
--- a/h5/api/meeting.js
+++ b/h5/api/meeting.js
@@ -35,7 +35,7 @@
// 浼氳瀹� 浜哄憳
export const userPagePost = (data) => {
return http({
- url: 'meetingAdmin/cloudService/web/meeting/userPage',
+ url: 'meetingAdmin/cloudService/system/user/findAllList',
method: 'post',
data
})
diff --git a/h5/pages/staff/meetingSel.vue b/h5/pages/staff/meetingSel.vue
index 59953cd..fdf97af 100644
--- a/h5/pages/staff/meetingSel.vue
+++ b/h5/pages/staff/meetingSel.vue
@@ -2,19 +2,19 @@
<view class="main_app" :class="{ popupShow: isShowSelMem }">
<view class="search_inp df_ac">
<image class="mr12 search" src="../../static/ic_search@2x.png" mode="widthFix"></image>
- <input v-model="param.keyword" @blur="initData()" type="text" placeholder="鎼滅储"
+ <input v-model="param.queryParam" @blur="initData()" type="text" placeholder="鎼滅储"
placeholder-style="color: #999999;" />
</view>
<view class="member_list">
<view v-for="(item, index) in memberList" :key="item.id" class="line">
- <image v-if="item.avatar" :src="item.prefixUrl + item.avatar" class="avatar" mode=""></image>
+ <image v-if="item.faceImg" :src="item.faceImg" class="avatar" mode=""></image>
<view v-else class="avatar">{{ item.realname.slice(0, 1) }}</view>
<view class="content">
<view class="info">
<text class="name">{{ item.realname }}</text>
<text class="tag" v-if="item.status == '1'">鏈変細璁�</text>
</view>
- <view class="depart">{{ item.departmentName }}</view>
+ <view class="depart">{{ item.departmentName || item.companyName }}</view>
</view>
<image @click="changeMem(item, index)" v-if="item.checked" src="@/static/checkbox_sel@2x.png" mode="widthFix"
class="checked"></image>
@@ -90,7 +90,7 @@
onLoad(option) {
this.param = {
limitNum: option.limitNum,
- keyword: '',
+ queryParam: '',
startTime: dayjs(Number(option.startTime)).format('YYYY-MM-DD HH:mm:ss'),
endTime: dayjs(Number(option.endTime)).format('YYYY-MM-DD HH:mm:ss'),
}
@@ -110,7 +110,7 @@
this.$nextTick(() => {
this.$forceUpdate()
})
- }, 1000)
+ }, 500)
})
},
methods: {
@@ -149,14 +149,11 @@
pagination
} = this
userPagePost({
- model: {
- ...param,
- workStatus: 0
- },
- ...pagination,
+ ...param,
+ querySpecial: 1, type: 2, companyType: 1,workStatus:0
}).then(res => {
- this.memberList = res.data.records || []
+ this.memberList = res.data || []
this.memberList.forEach(i => {
const index = this.selList.findIndex(ite => ite.id === i.id)
i.checked = index > -1
diff --git a/screen/src/api/index.js b/screen/src/api/index.js
index 74d7469..3b6cfa1 100644
--- a/screen/src/api/index.js
+++ b/screen/src/api/index.js
@@ -153,7 +153,9 @@
export const getCarsJobDetails = (data) => {
return request('/visitsAdmin/cloudService/board/api/platformJobRun/getCarsJobDetails', data, 'POST')
}
-
+export const getJobDetailsById = (data) => {
+ return request('/visitsAdmin/cloudService/board/api/platformJobRun/getJobDetailsById', data, 'POST')
+}
// 瀹夐槻绠℃帶澶у睆 涓績鏁版嵁
export const getEnergyCenterData = (data) => {
diff --git a/screen/src/views/EnergyConsum.vue b/screen/src/views/EnergyConsum.vue
index 130a929..6386749 100644
--- a/screen/src/views/EnergyConsum.vue
+++ b/screen/src/views/EnergyConsum.vue
@@ -85,9 +85,9 @@
src="@/assets/images/ic_up.webp" alt="" />
<img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
<span class="val"
- v-if="data1.electricityQuantity.totalNum && data1.electricityQuantity.totalNum != 0">{{
+ v-if="data1.electricityQuantity.sameNum && data1.electricityQuantity.sameNum != 0">{{
Math.abs(((data1.electricityQuantity.totalNum -
- data1.electricityQuantity.sameNum) / data1.electricityQuantity.totalNum * 100).toFixed(1))
+ data1.electricityQuantity.sameNum) / data1.electricityQuantity.sameNum * 100).toFixed(1))
}}%</span>
<span class="val" v-else style="margin-left: 4px;"> -</span>
<span class="lab">鐜瘮</span>
@@ -95,9 +95,9 @@
src="@/assets/images/ic_up.webp" alt="" />
<img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
<span class="val"
- v-if="data1.electricityQuantity.totalNum && data1.electricityQuantity.totalNum != 0">{{
+ v-if="data1.electricityQuantity.ringNum && data1.electricityQuantity.ringNum != 0">{{
Math.abs(((data1.electricityQuantity.totalNum -
- data1.electricityQuantity.ringNum) / data1.electricityQuantity.totalNum * 100).toFixed(1))
+ data1.electricityQuantity.ringNum) / data1.electricityQuantity.ringNum * 100).toFixed(1))
}}%</span>
<span class="val" v-else style="margin-left: 4px;"> -</span>
</div>
@@ -146,8 +146,8 @@
<img v-if="data1.gasQuantity.totalNum > data1.gasQuantity.sameNum" class="icon"
src="@/assets/images/ic_up.webp" alt="" />
<img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
- <span class="val" v-if="data1.gasQuantity.totalNum && data1.gasQuantity.totalNum != 0">{{
- Math.abs(((data1.gasQuantity.totalNum - data1.gasQuantity.sameNum) / data1.gasQuantity.totalNum
+ <span class="val" v-if="data1.gasQuantity.sameNum && data1.gasQuantity.sameNum != 0">{{
+ Math.abs(((data1.gasQuantity.totalNum - data1.gasQuantity.sameNum) / data1.gasQuantity.sameNum
* 100).toFixed(1))
}}%</span>
<span class="val" v-else style="margin-left: 4px;">-</span>
@@ -155,8 +155,8 @@
<img v-if="data1.gasQuantity.totalNum > data1.gasQuantity.ringNum" class="icon"
src="@/assets/images/ic_up.webp" alt="" />
<img v-else class="icon" src="@/assets/images/ic_down.webp" alt="" />
- <span class="val" v-if="data1.gasQuantity.totalNum && data1.gasQuantity.totalNum != 0">{{
- Math.abs(((data1.gasQuantity.totalNum - data1.gasQuantity.ringNum) / data1.gasQuantity.totalNum
+ <span class="val" v-if="data1.gasQuantity.ringNum && data1.gasQuantity.ringNum != 0">{{
+ Math.abs(((data1.gasQuantity.totalNum - data1.gasQuantity.ringNum) / data1.gasQuantity.ringNum
* 100).toFixed(1))
}}%</span>
<span class="val" v-else style="margin-left: 4px;">-</span>
diff --git a/screen/src/views/LogisticsCenter.vue b/screen/src/views/LogisticsCenter.vue
index 39a0f91..1e57222 100644
--- a/screen/src/views/LogisticsCenter.vue
+++ b/screen/src/views/LogisticsCenter.vue
@@ -45,7 +45,6 @@
</div>
<div class="content_wrap">
<div class="num_wrap">
-
<div class="question1">
<div class="hover_con">
<div class="num_list" v-if="StockOutData.currentNum || StockOutData.currentNum == 0">
@@ -56,8 +55,10 @@
</div>
<div class="hover_wrap">
<div class="triangle"></div>
- <div class="title" v-if="StockOutData.currentProvinceNum || StockOutData.currentProvinceNum == 0">璋冩嫧鍑哄簱閲忥細{{ StockOutData.currentProvinceNum.toFixed(0) }}绠�</div>
- <div class="title" v-if="StockOutData.currentOtherNum || StockOutData.currentOtherNum == 0">鍏朵粬鍑哄簱閲忥細{{ StockOutData.currentOtherNum.toFixed(0) }}绠�</div>
+ <div class="title" v-if="StockOutData.currentProvinceNum || StockOutData.currentProvinceNum == 0">
+ 璋冩嫧鍑哄簱閲忥細{{ StockOutData.currentProvinceNum.toFixed(0) }}绠�</div>
+ <div class="title" v-if="StockOutData.currentOtherNum || StockOutData.currentOtherNum == 0">
+ 鍏朵粬鍑哄簱閲忥細{{ StockOutData.currentOtherNum.toFixed(0) }}绠�</div>
</div>
</div>
@@ -157,10 +158,10 @@
<div class="hover_wrap">
<div class="triangle"></div>
<div class="title">鍑哄簱鑳藉姏缁熻璇存槑锛�</div>
- <div>褰撳墠璁㈠崟閲忥細鎴嚦鏄ㄦ棩鏈畬鎴愯鍗�+褰撴棩涓嬭揪鐨勮鍗曟暟閲忥紱</div>
- <div>褰撴棩浠诲姟閲忥細鎴嚦鏄ㄦ棩宸查厤杞芥湭鍑哄簱+褰撴棩宸查厤杞芥湭鍑哄簱鏁伴噺+鏃犻渶閰嶈浇鐨勪换鍔★紱</div>
- <div>浠婃棩鍑哄簱閲忥細褰撴棩鎸夊疄闄呭嚭搴撻噺锛堜互鐢靛瓙閿佷笂閿佷负鍑嗭級</div>
- <div>鍓╀綑浠诲姟閲忥細褰撴棩浠诲姟閲�-浠婃棩鍑哄簱閲�</div>
+ <div>1銆佸綋鍓嶈鍗曢噺锛氭埅鑷崇洰鍓嶆湭閰嶈浇鐨勮鍗曢噺</div>
+ <div>2銆佸綋鍓嶄换鍔¢噺锛氭墍鏈夊凡涓嬭揪杩愯緭涓旀湭鍑哄簱鐨勪换鍔¢噺锛氭埅姝㈢洰鍓嶅凡閰嶈浇鏈嚭搴�+鏃犻渶閰嶈浇鐨勪换鍔�(鍚屽煄浠诲姟閲�)</div>
+ <div>3銆佷粖鏃ュ嚭搴撻噺锛氫粖鏃ュ疄闄呭嚭搴撻噺锛氫互鐢靛瓙閿佷笂閿佷负鍑�</div>
+ <div>4銆佸墿浣欎换鍔¢噺锛氭暟鎹悓褰撳墠浠诲姟閲忥紙寮圭獥鍒嗗埆灞曠ず鍚屽簱鍜岃繍杈撲换鍔¢噺</div>
</div>
</div>
</div>
@@ -202,14 +203,21 @@
<div class="unit">杞︽锛歿{ cneterData.crrentOutCarNum }}</div>
</div>
</div>
- <div class="item">
- <img src="@/assets/images/LogisticsCenter/ic_jinriweichu@2x.png" alt="">
- <div class="content">
- <div class="name">鍓╀綑浠诲姟閲�</div>
- <div class="num"><span v-if="cneterData.crrentRestNum || cneterData.crrentRestNum == 0"
- class="today">{{
- cneterData.crrentRestNum }}</span>绠�</div>
- <div class="unit">杞︽锛歿{ cneterData.crrentRestCarNum }}</div>
+ <div class="tooltip_wrap">
+ <div class="item">
+ <img src="@/assets/images/LogisticsCenter/ic_jinriweichu@2x.png" alt="">
+ <div class="content">
+ <div class="name">鍓╀綑浠诲姟閲�</div>
+ <div class="num"><span v-if="cneterData.crrentRestNum || cneterData.crrentRestNum == 0"
+ class="today">{{
+ cneterData.crrentRestNum }}</span>绠�</div>
+ <div class="unit">杞︽锛歿{ cneterData.crrentRestCarNum }}</div>
+ </div>
+ </div>
+ <div class="tooltip">
+ <div class="triangle"></div>
+ <div>杩愯緭浠诲姟閲忥細{{ cneterData.needTransportOrderNum }}绠�</div>
+ <div>鍚屽煄鍏卞簱浠诲姟閲忥細{{ cneterData.noNeedTransportOrderNum }}绠�</div>
</div>
</div>
</div>
@@ -226,36 +234,70 @@
</div> -->
<div :style="{ width: cneterData.level3 }"
:class="{ box23: cneterData.crrentOutNum >= cneterData.hoursAbility }" class="box">
- <div v-if="cneterData.crrentOutNum < cneterData.hoursAbility" class="tag">
- <div class="icon"></div>
- <span>浠婃棩鍑哄簱</span>
+ <div class="tooltip_wrap">
+ <div v-if="cneterData.crrentOutNum < cneterData.hoursAbility" class="tag">
+ <div class="icon"></div>
+ <span>浠婃棩鍑哄簱</span>
+ </div>
+ <div class="tooltip">
+ <div class="triangle"></div>浠婃棩鍑哄簱閲忥細{{ cneterData.crrentOutNum }}绠�
+ </div>
</div>
</div>
<div :style="{ width: cneterData.level2 }" class="box box1">
- <div v-if="cneterData.hoursAbility >= cneterData.currentPlanNum" class="tag tag1">
- <div class="icon"></div>
- <span>褰撳墠浠诲姟</span>
+ <div class="tooltip_wrap">
+ <div v-if="cneterData.hoursAbility >= cneterData.currentPlanNum" class="tag tag1">
+ <div class="icon"></div>
+ <span>褰撳墠浠诲姟</span>
+ </div>
+ <div class="tooltip">
+ <div class="triangle"></div>褰撳墠浠诲姟閲忥細{{ cneterData.currentPlanNum }}绠�
+ </div>
</div>
</div>
</div>
<div class="side">
<div v-if="cneterData.crrentOutNum >= cneterData.hoursAbility" :style="{ width: cneterData.level33 }"
class="box box22">
- <div class="tag">
- <div class="icon"></div>
- <span>浠婃棩鍑哄簱</span>
+ <div class="tooltip_wrap">
+ <div class="tag">
+ <div class="icon"></div>
+ <span>浠婃棩鍑哄簱</span>
+ </div>
+ <div class="tooltip">
+ <div class="triangle"></div>浠婃棩鍑哄簱閲忥細{{ cneterData.crrentOutNum }}绠�
+ </div>
</div>
</div>
<div v-if="cneterData.hoursAbility <= cneterData.currentPlanNum"
:style="{ width: cneterData.level22 }" class="box box1 box11">
- <div class="tag tag1">
- <div class="icon"></div>
- <span>褰撳墠浠诲姟</span>
+ <div class="tooltip_wrap">
+ <div class="tag tag1">
+ <div class="icon"></div>
+ <span>褰撳墠浠诲姟</span>
+ </div>
+ <div class="tooltip">
+ <div class="triangle"></div>褰撳墠浠诲姟閲忥細{{ cneterData.currentPlanNum }}绠�
+ </div>
</div>
</div>
<!-- <div class="box"></div> -->
- <div class="scale" style="left: -12px;">8h</div>
- <div class="scale scale1">鏈�澶�</div>
+ <div class="scale" style="left: -12px;">
+ <div class="tooltip_wrap">
+ <span>8h</span>
+ <div class="tooltip">
+ <div class="triangle"></div>8灏忔椂鍑哄簱鑳藉姏锛歿{ cneterData.hoursAbility }}绠�
+ </div>
+ </div>
+ </div>
+ <div class="scale scale1">
+ <div class="tooltip_wrap">
+ <span>鏈�澶�</span>
+ <div class="tooltip">
+ <div class="triangle"></div>鏈�澶у嚭搴撹兘鍔涳細{{ cneterData.maxAbility }}绠�
+ </div>
+ </div>
+ </div>
</div>
</div>
</div>
@@ -1179,7 +1221,7 @@
// 8灏忔椂 璁″垝 浠婃棩
// obj.hoursAbility = 6000
// obj.maxAbility = 8000
- // obj.currentPlanNum = 5000
+ // obj.currentPlanNum = 22000
// obj.crrentOutNum = 7000
obj.level1 = ((obj.hoursAbility / obj.maxAbility) * 100).toFixed(2) + '%'
@@ -1954,7 +1996,7 @@
margin-top: 20px;
padding: 0px 10px 30px 20px;
position: relative;
-
+ height: 160px;
.content_wrap {
display: flex;
justify-content: space-between;
@@ -2214,6 +2256,36 @@
justify-content: space-between;
margin: 30px 0 14px;
+ .tooltip_wrap {
+ position: relative;
+
+ &:hover {
+ .tooltip {
+ display: block;
+ }
+ }
+
+ .tooltip {
+ display: none;
+ background: rgba(0, 30, 63, 0.6);
+ border: 1px solid #003F82;
+ backdrop-filter: blur(3px);
+ padding: 10px;
+ font-size: 15px;
+ color: #fff;
+ line-height: 19px;
+ font-weight: 400;
+ border-radius: 6px;
+ width: 230px;
+ position: absolute;
+ line-height: 24px;
+ left: 100%;
+ top: 50%;
+ transform: translate(20px, -42%);
+ z-index: 999999999999999;
+ }
+ }
+
.item {
display: flex;
@@ -2303,6 +2375,7 @@
.tag {
position: absolute;
+ z-index: 99999;
bottom: -30px;
right: 0;
transform: translate(50%, 0);
@@ -2329,7 +2402,13 @@
z-index: -1;
}
}
-
+ .tooltip_wrap{
+ .tooltip{
+ z-index: 9999999999;
+ top: 34px;
+ transform: translate(70px, -42%);
+ }
+ }
.tag1 {
background-color: #28F0CC;
border: 1px solid #28F0CC;
@@ -2358,16 +2437,52 @@
background: linear-gradient(270deg, #f4b34a 0%, #FFEA70 100%);
}
+ .tooltip_wrap {
+ /* position: relative; */
+
+ &:hover {
+ .tooltip {
+ display: block;
+ }
+ }
+
+ .tooltip {
+ display: none;
+ background: #071b32;
+ border: 1px solid #003F82;
+ /* backdrop-filter: blur(3px); */
+ padding: 10px;
+ font-size: 15px;
+ color: #fff;
+ line-height: 19px;
+ font-weight: 400;
+ border-radius: 6px;
+ width: 200px;
+ position: absolute;
+ z-index: 99999999;
+ left: 100%;
+ top: 50%;
+ transform: translate(30px, -42%);
+ }
+ }
+
.scale {
position: absolute;
top: -24px;
left: 0;
font-size: 16px;
color: #D2E0FF;
+
+ .tooltip_wrap {
+ .tooltip {
+ width: 240px;
+ transform: translate(20px, -50%);
+ }
+ }
}
.scale1 {
- left: 84%;
+ left: 92%;
min-width: 36px;
}
@@ -2479,14 +2594,14 @@
left: 130px;
z-index: 999;
top: -5px;
- width: 407px;
+ width: 420px;
height: 148px;
background: rgba(0, 30, 63, 0.6);
border: 1px solid #003F82;
backdrop-filter: blur(3px);
padding: 10px;
font-size: 13px;
- color: #e2ebfd;
+ color: #ebf1fb;
line-height: 19px;
font-weight: 400;
border-radius: 6px;
@@ -2534,7 +2649,7 @@
.hover_wrap {
display: none;
-
+
position: absolute;
left: 108%;
z-index: 999;
@@ -2546,7 +2661,7 @@
backdrop-filter: blur(3px);
padding: 10px;
font-size: 15px;
- color: #e2ebfd;
+ color: #e9f0ff;
line-height: 19px;
font-weight: 400;
border-radius: 6px;
@@ -2555,23 +2670,25 @@
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 {
color: #e2ebfd;
}
}
+}
+
+.triangle {
+ width: 12px;
+ height: 12px;
+ position: absolute;
+ top: 36%;
+ transform: translate(-50%, -50%);
+ 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); */
}
.main_header {
@@ -2704,16 +2821,19 @@
top: -32px !important;
}
}
- .stock{
+
+ .stock {
display: flex;
align-items: center;
color: #dd5d2a;
margin-bottom: 8px;
- img{
+
+ img {
margin-right: 6px;
width: 14px;
}
}
+
.title_head {
display: flex;
align-items: center;
diff --git a/screen/src/views/LogisticsEfficiency.vue b/screen/src/views/LogisticsEfficiency.vue
index 2a13ff0..0af62b6 100644
--- a/screen/src/views/LogisticsEfficiency.vue
+++ b/screen/src/views/LogisticsEfficiency.vue
@@ -31,7 +31,8 @@
<div class="num" v-if="data1.monthOutTotal || data1.yearOutTotal">{{ activeTab1 == 0 ?
data1.monthOutTotal.toLocaleString() : data1.yearOutTotal.toLocaleString() }}</div>
<div class="unit_wrap">
- <span style="color: #869CC9;">{{ activeTab1 == 0 ? '鍚屾瘮' : '鐜瘮' }}</span>
+ <!-- <span style="color: #869CC9;">{{ activeTab1 == 0 ? '鍚屾瘮' : '鐜瘮' }}</span> -->
+ <span style="color: #869CC9;">鐜瘮</span>
<template v-if="activeTab1 == 0 && data1.monthLastOutTotal">
<img v-if="data1.monthOutTotal > data1.monthLastOutTotal" src="@/assets/images/ic_up.png"
class="icon" alt="">
@@ -390,6 +391,7 @@
wltransportMeasure,
carsListPost,
getCarsJobDetails,
+ getJobDetailsById,
carsEventListP
} from '@/api'
import 'swiper/css/swiper.min.css'
@@ -828,6 +830,7 @@
myChart.on('click', function (params) {
const item = params.data
getCarsJobDetails({ carCode: item.code }).then(res => {
+ // getCarsJobDetails({ id: item.id }).then(res => {
// getCarsJobDetails({ carCode: '鐨朅E5277' }).then(res => {
showModal.value = true
activeCar.value = { ...res.data, carCode: item.code }
@@ -849,7 +852,8 @@
activeCar.value = {}
}
const taskClick = (item) => {
- getCarsJobDetails({ carCode: item.carCodeFront }).then(res => {
+ // getCarsJobDetails({ carCode: item.carCodeFront }).then(res => {
+ getJobDetailsById({ id: item.id }).then(res => {
// getCarsJobDetails({ carCode: '鐨朅E5277' }).then(res => {
showModal.value = true
activeCar.value = { ...res.data, carCode: item.carCodeFront }
@@ -1912,7 +1916,7 @@
line-height: 36px;
border-bottom: 1px solid rgba(255, 255, 255, 0.16);
margin-bottom: 10px;
-
+ padding-right: 10px;
.code {
font-weight: 500;
font-size: 14px;
--
Gitblit v1.9.3