h5/api/meeting.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
h5/pages/staff/meetingSel.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
screen/src/api/index.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
screen/src/views/EnergyConsum.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
screen/src/views/LogisticsCenter.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
screen/src/views/LogisticsEfficiency.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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 }) 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, 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 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) => { 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> 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,6 +203,7 @@ <div class="unit">车次:{{ cneterData.crrentOutCarNum }}</div> </div> </div> <div class="tooltip_wrap"> <div class="item"> <img src="@/assets/images/LogisticsCenter/ic_jinriweichu@2x.png" alt=""> <div class="content"> @@ -210,6 +212,12 @@ 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 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 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="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="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; @@ -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; } .title { color: #e2ebfd; } } } .triangle { width: 12px; height: 12px; position: absolute; top: 10px; 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); */ } .title { color: #e2ebfd; } } } .main_header { @@ -2704,16 +2821,19 @@ 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; 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: '皖AE5277' }).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: '皖AE5277' }).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;