h5/pages/driver/reserved.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
h5/pages/driver/reservedGuide.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
h5/pages/driver/reservedRecord.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
h5/pages/staff/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
h5/pages/staffLogin/login.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
h5/pages/waybill/home.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
h5/utils/service.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
screen/src/assets/images/ic_question@2x.png | 补丁 | 查看 | 原始文档 | blame | 历史 | |
screen/src/views/LogisticsCenter.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
h5/pages/driver/reserved.vue
@@ -98,8 +98,10 @@ </view> </view> <view class="copy" @click="copy">复制车前牌照号</view> <view class="handle_sub" @click="onSubmit"> 提交 <view class="footer"> <view class="handle_sub" @click="onSubmit"> 提交 </view> </view> </view> @@ -379,11 +381,13 @@ } .main_app { padding-top: 10rpx; .footer{ background-color: #f7f7f7; padding: 20rpx 30rpx 30rpx; margin: 0 -30rpx; } .handle_sub{ // position: fixed; // bottom: 64rpx; width: 690rpx; margin-top: 80rpx; background-color: #4d99a8; height: 88rpx; line-height: 88rpx; @@ -401,6 +405,7 @@ background-color: #f7f7f7; display: flex; margin: 0 -30rpx; width: 750rpx; justify-content: flex-end; padding: 12rpx 30rpx; font-size: 26rpx; h5/pages/driver/reservedGuide.vue
@@ -1,5 +1,5 @@ <template> <view> <view class="box"> <mp-html :content="content" /> </view> </template> @@ -21,5 +21,7 @@ </script> <style lang="scss"> .box{ padding: 0 30rpx; } </style> h5/pages/driver/reservedRecord.vue
@@ -1,188 +1,216 @@ <template> <view class="main_app"> <!-- --> <view class="box_list"> <view class="box_list_item" v-for="(item, index) in datalist" :key="index" @click="handleDetail(item.id)" > <view class="box_list_item_head"> <text>{{item.driverName}}的入园预约</text> <text class="loading" :class="{red: item.status == 3}">{{ statusMap[item.status] }}</text> </view> <view class="box_list_item_nr"> <view class="box_list_item_nr_item"> <text>合同编号:</text> <text>{{item.contractNum}}</text> </view> <view class="box_list_item_nr_item"> <text>到场时间:</text> <text>{{item.arriveDate.slice(5,16)}}</text> </view> <view class="box_list_item_nr_item"> <text>司机姓名:</text> <text>{{item.driverName}} {{item.driverPhone}}</text> </view> <view class="box_list_item_nr_item"> <text>车辆信息:</text> <text>{{item.carCodeFront}}</text> </view> <view class="box_list_item_nr_item"> <text class="placeholder9">{{item.createDate.slice(0,16)}}提交</text> </view> </view> </view> </view> </view> </template> <script> import { driverApplyRecord } from "@/api" export default { data() { return { isShowCar: false, isShowDate: false, param: {}, page: 1, capacity: 20, total: 0, datalist: [], statusMap: { 0: '待审批', 1: '审批中', 2: '已通过', 3: '已拒绝', 4: '已取消', } } }, onShow() { this.page = 1 this.getList() }, onReachBottom() { const { total, datalist} = this if(datalist.length < total){ this.page = this.page + 1 this.getList() } else { this.showToast('暂无更多数据') } }, methods: { getList() { const { page, capacity } = this driverApplyRecord({ page, capacity,model: {} }).then(res => { this.datalist = [...this.datalist, ...res.data.records] this.total = res.data.total }) }, handleDetail(id) { uni.navigateTo({ url: `/pages/driver/reservedDetail?id=${id}` }) }, confirmDate(e) { console.log(e.value) this.param.aa = dayjs(e.value).format('YYYY-MM-DD') this.isShowDate = false }, seletedCar(e) { console.log(e.value) this.param.aa = dayjs(e.value).format('YYYY-MM-DD') this.isShowDate = false } } }; </script> <style lang="scss"> page{ background: #f7f7f7; } .main_app { background: #f7f7f7; padding: 0; } .app_header { display: flex; align-items: center; margin: 0 -15rpx; background-color: #fff; .item { width: 360rpx; height: 72rpx; margin: 15rpx; padding: 0 30rpx; display: flex; align-items: center; justify-content: center; align-items: center; } } .box_list { width: 100%; padding: 30rpx; box-sizing: border-box; .box_list_item { width: 100%; margin-bottom: 20rpx; &:last-child { margin: 0 !important; } .box_list_item_head { width: 100%; height: 100rpx; padding: 0 30rpx; box-sizing: border-box; background: linear-gradient(270deg, #fefeff 0%, #e1f7fe 100%); border-radius: 8rpx 8rpx 0rpx 0rpx; display: flex; align-items: center; justify-content: space-between; .loading { color: #4c99a8; } .success { color: #03c68f; } .error { color: #e0312a; } text { &:nth-child(1) { font-size: 32rpx; font-weight: 600; color: #222222; } &:nth-child(2) { font-size: 26rpx; font-weight: 400; } } } .box_list_item_nr { padding: 30rpx 30rpx 10rpx; width: 100%; box-sizing: border-box; background-color: #ffffff; .box_list_item_nr_item { width: 100%; display: flex; align-items: center; margin-bottom: 16rpx; text { font-size: 26rpx; font-weight: 400; color: #666666; } } } } } </style> <template> <view class="main_app"> <!-- --> <view class="box_list"> <view class="box_list_item" v-for="(item, index) in datalist" :key="index" @click="handleDetail(item.id)"> <view class="box_list_item_head"> <text>{{item.driverName}}的入园预约</text> <text class="loading" :class="{red: item.status == 3}">{{ statusMap[item.status] }}</text> </view> <view class="box_list_item_nr"> <view class="box_list_item_nr_item"> <text>合同编号:</text> <text>{{item.contractNum}}</text> </view> <view class="box_list_item_nr_item"> <text>到场时间:</text> <text>{{item.arriveDate.slice(5,16)}}</text> </view> <view class="box_list_item_nr_item"> <text>司机姓名:</text> <text>{{item.driverName}} {{item.driverPhone}}</text> </view> <view class="box_list_item_nr_item"> <text>车辆信息:</text> <text>{{item.carCodeFront}}</text> </view> <view class="box_list_item_nr_item"> <text class="placeholder9">{{item.createDate.slice(0,16)}}提交</text> </view> </view> </view> <view v-if="datalist.length === 0" style="text-align: center"> <image src="@/static/empty.png" style="width: 320rpx; margin: 120px auto 0" mode="widthFix" /> <view class="placeholder9 fs24">暂无数据</view> </view> </view> </view> </template> <script> import { driverApplyRecord } from "@/api" export default { data() { return { isShowCar: false, isShowDate: false, param: {}, page: 1, capacity: 20, total: 0, datalist: [], statusMap: { 0: '待审批', 1: '审批中', 2: '已通过', 3: '已拒绝', 4: '已取消', } } }, onShow() { this.page = 1 this.getList() }, onReachBottom() { const { total, datalist } = this if (datalist.length < total) { this.page = this.page + 1 this.getList() } else { this.showToast('暂无更多数据') } }, methods: { getList() { const { page, capacity } = this driverApplyRecord({ page, capacity, model: {} }).then(res => { this.datalist = [...this.datalist, ...res.data.records] this.total = res.data.total }) }, handleDetail(id) { uni.navigateTo({ url: `/pages/driver/reservedDetail?id=${id}` }) }, confirmDate(e) { console.log(e.value) this.param.aa = dayjs(e.value).format('YYYY-MM-DD') this.isShowDate = false }, seletedCar(e) { console.log(e.value) this.param.aa = dayjs(e.value).format('YYYY-MM-DD') this.isShowDate = false } } }; </script> <style lang="scss"> page { background: #f7f7f7; } .main_app { background: #f7f7f7; padding: 0; } .app_header { display: flex; align-items: center; margin: 0 -15rpx; background-color: #fff; .item { width: 360rpx; height: 72rpx; margin: 15rpx; padding: 0 30rpx; display: flex; align-items: center; justify-content: center; align-items: center; } } .box_list { width: 100%; padding: 30rpx; box-sizing: border-box; .box_list_item { width: 100%; margin-bottom: 20rpx; &:last-child { margin: 0 !important; } .box_list_item_head { width: 100%; height: 100rpx; padding: 0 30rpx; box-sizing: border-box; background: linear-gradient(270deg, #fefeff 0%, #e1f7fe 100%); border-radius: 8rpx 8rpx 0rpx 0rpx; display: flex; align-items: center; justify-content: space-between; .loading { color: #4c99a8; } .success { color: #03c68f; } .error { color: #e0312a; } text { &:nth-child(1) { font-size: 32rpx; font-weight: 600; color: #222222; } &:nth-child(2) { font-size: 26rpx; font-weight: 400; } } } .box_list_item_nr { padding: 30rpx 30rpx 10rpx; width: 100%; box-sizing: border-box; background-color: #ffffff; .box_list_item_nr_item { width: 100%; display: flex; align-items: center; margin-bottom: 16rpx; text { font-size: 26rpx; font-weight: 400; color: #666666; } } } } } </style> h5/pages/staff/index.vue
@@ -1,10 +1,10 @@ <template> <view class="main_app"> <view class="title_wrap"> <view class="name" v-if="userInfo.realname">{{ userInfo.realname || "" }},欢迎登录~</view> <view class="name" v-if="userInfo.realname">{{ userInfo.realname || userInfo.username || "" }},欢迎登录~</view> <view class="name" v-else>请先登录</view> <view class="btn" @click="loginOut">{{ userInfo.realname ? "退出登录" : "去登录" userInfo.username ? "退出登录" : "去登录" }}</view> </view> <view class="banner_wrap"> h5/pages/staffLogin/login.vue
@@ -176,7 +176,6 @@ }) saveHkUserOpenid({}) } else { this.initCaptcha() } }) }, h5/pages/waybill/home.vue
@@ -67,7 +67,7 @@ phone, code,openid: this.$store.state.openId, userType: 3 }).then(res => { if (res && res.code == 200) { this.$store.commit('setToken', res.data.token) this.$store.commit('setToken', res.data) getUserInfo().then(ress => { this.$store.commit('setWaybillInfo', ress.data) uni.navigateTo({ h5/utils/service.js
@@ -1,4 +1,4 @@ import { baseUrl } from "./config.js" import { baseUrl, app_url } from "./config.js" export const http = function (options) { { return new Promise((resolve, reject) => { @@ -34,12 +34,15 @@ duration: 2000 }) }) if (data.code === 500 || data.code === 5112) { uni.clearStorageSync() return uni.navigateTo({ url: '/pages/login/login' if (data.code === 500) { uni.showToast({ 'title': '服务器异常',icon:'none' }) } if (data.code === 5112) { uni.clearStorageSync() window.location.href = app_url } return resolve(data) } resolve(data) screen/src/assets/images/ic_question@2x.png
screen/src/views/LogisticsCenter.vue
@@ -25,7 +25,18 @@ <div class="second_title"> <div class="title"> <img src="@/assets/images/LogisticsCenter/ic_title@2x.png" class="icon" alt="" /> <div>累计出库量</div> <div>累计出库量(箱)</div> <div class="question"> <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> </div> </div> <div class="tabs"> <div class="tab" :class="{ active: activeTab1 == 1 }" @click="tab1Click(1)">本周</div> @@ -114,7 +125,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.transportDate || '-' }}</span> </div> </div> </div> @@ -133,6 +144,17 @@ <div class="left"> <img src="@/assets/images/ic_title@2x.png" class="icon" alt="" /> <span>出库能力</span> <div class="question"> <img src="@/assets/images/ic_question@2x.png" style="margin-left: 4px;" class="icon" alt=""> <div class="hover_wrap"> <div class="triangle"></div> <div class="title">出库能力统计说明:</div> <div>当前订单量:截至昨日未完成订单+当日下达的订单数量;</div> <div>当日任务量:截至昨日已配载未出库+当日已配载未出库数量+无需配载的任务;</div> <div>今日出库量:当日按实际出库量(以电子锁上锁为准)</div> <div>剩余任务量:当日任务量-今日出库量</div> </div> </div> </div> <div class="right"> <img @click="showPro = !showPro" src="@/assets/images/LogisticsCenter/position.png" class="posi" alt=""> @@ -147,15 +169,18 @@ <div class="item"> <img src="@/assets/images/LogisticsCenter/ic_jinrijihua@2x.png" alt=""> <div class="content"> <div class="name">当日订单量</div> <div class="num"><span class="blue" v-if="cneterData.currentOrderNum">{{ cneterData.currentOrderNum.toFixed(0) }}</span>箱</div> <div class="name">当前订单量</div> <div class="num"><span class="blue" v-if="cneterData.currentOrderNum || cneterData.currentOrderNum == 0">{{ cneterData.currentOrderNum.toFixed(0) }}</span>箱</div> </div> </div> <div class="item"> <img src="@/assets/images/LogisticsCenter/ic_jinrijihua@2.png" alt=""> <div class="content"> <div class="name">当日计划量</div> <div class="num"><span v-if="cneterData.currentPlanNum">{{ cneterData.currentPlanNum.toFixed(0) }}</span>箱</div> <div class="name">当前任务量</div> <div class="num"><span v-if="cneterData.currentPlanNum || cneterData.currentPlanNum == 0">{{ cneterData.currentPlanNum.toFixed(0) }}</span>箱</div> <div class="unit">车次:{{ cneterData.currentPlanCarNum }}</div> </div> </div> @@ -163,7 +188,9 @@ <img src="@/assets/images/LogisticsCenter/ic_jinrichuku@2x.png" alt=""> <div class="content"> <div class="name">今日出库量</div> <div class="num"><span v-if="cneterData.crrentOutNum" class="finish">{{ cneterData.crrentOutNum.toFixed(0) }}</span>箱</div> <div class="num"><span v-if="cneterData.crrentOutNum || cneterData.crrentOutNum == 0" class="finish">{{ cneterData.crrentOutNum.toFixed(0) }}</span>箱</div> <div class="unit">车次:{{ cneterData.crrentOutCarNum }}</div> </div> </div> @@ -171,7 +198,9 @@ <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" class="today">{{ cneterData.crrentRestNum.toFixed(0) }}</span>箱</div> <div class="num"><span v-if="cneterData.crrentRestNum || cneterData.crrentRestNum == 0" class="today">{{ cneterData.crrentRestNum.toFixed(0) }}</span>箱</div> <div class="unit">车次:{{ cneterData.crrentRestCarNum }}</div> </div> </div> @@ -197,7 +226,7 @@ <div :style="{ width: cneterData.level2 }" class="box box1"> <div v-if="cneterData.hoursAbility >= cneterData.currentPlanNum" class="tag tag1"> <div class="icon"></div> <span>当日计划</span> <span>当前任务</span> </div> </div> </div> @@ -213,7 +242,7 @@ :style="{ width: cneterData.level22 }" class="box box1 box11"> <div class="tag tag1"> <div class="icon"></div> <span>当日计划</span> <span>当前任务</span> </div> </div> <!-- <div class="box"></div> --> @@ -481,42 +510,42 @@ { value: [103.9526, 30.7617, 1901], itemStyle: { color: '#fff' }, name: '四川', total: 18, bj: 0, yj: 0, yx: 18, tj: 0, dw: 0 } ] const mapData = [ { name: '北京市',code:'110000', value: 0 }, { name: '天津市',code:'120000', value: 0 }, { name: '上海市', code:'310000',value: 0 }, { name: '重庆市', code:'500000',value: 0 }, { name: '河北省',code:'130000', value: 0 }, { name: '河南省',code:'410000', value: 0 }, { name: '云南省',code:'530000', value: 0 }, { name: '辽宁省',code:'210000', value: 0 }, { name: '黑龙江省', code:'230000',value: 0 }, { name: '湖南省',code:'430000', value: 0 }, { name: '安徽省', code:'340000',value: 0 }, { name: '山东省',code:'370000', value: 0 }, { name: '新疆维吾尔自治区', code:'650000',value: 0 }, { name: '江苏省',code:'320000', value: 0 }, { name: '浙江省', code:'330000', value: 0 }, { name: '江西省', code:'360000', value: 0 }, { name: '湖北省', code:'420000', value: 0 }, { name: '广西壮族自治区',code:'450000', value: 0 }, { name: '甘肃省', code:'620000', value: 0 }, { name: '山西省', code:'140000', value: 0 }, { name: '内蒙古自治区', code:'150000', value: 0 }, { name: '陕西省', code:'610000', value: 0 }, { name: '吉林省',code:'220000', value: 0 }, { name: '福建省', code:'350000', value: 0 }, { name: '贵州省', code:'520000', value: 0 }, { name: '广东省', code:'440000', value: 0 }, { name: '青海省', code:'630000', value: 0 }, { name: '西藏自治区',code:'540000', value: 0 }, { name: '宁夏回族自治区',code:'640000', value: 0 }, { name: '四川省',code:'510000', value: 0 }, { name: '宁夏省', code:'640000',value: 0 }, { name: '海南省', code:'460000',value: 0 }, { name: '台湾省', code:'710000',value: 0 }, { name: '香港特别行政区', code:'810000',value: 0 }, { name: '澳门特别行政区', code:'820003',value: 0 }, { name: '南海诸岛', code:'',value: 0 }, { name: '北京市', code: '110000', value: 0 }, { name: '天津市', code: '120000', value: 0 }, { name: '上海市', code: '310000', value: 0 }, { name: '重庆市', code: '500000', value: 0 }, { name: '河北省', code: '130000', value: 0 }, { name: '河南省', code: '410000', value: 0 }, { name: '云南省', code: '530000', value: 0 }, { name: '辽宁省', code: '210000', value: 0 }, { name: '黑龙江省', code: '230000', value: 0 }, { name: '湖南省', code: '430000', value: 0 }, { name: '安徽省', code: '340000', value: 0 }, { name: '山东省', code: '370000', value: 0 }, { name: '新疆维吾尔自治区', code: '650000', value: 0 }, { name: '江苏省', code: '320000', value: 0 }, { name: '浙江省', code: '330000', value: 0 }, { name: '江西省', code: '360000', value: 0 }, { name: '湖北省', code: '420000', value: 0 }, { name: '广西壮族自治区', code: '450000', value: 0 }, { name: '甘肃省', code: '620000', value: 0 }, { name: '山西省', code: '140000', value: 0 }, { name: '内蒙古自治区', code: '150000', value: 0 }, { name: '陕西省', code: '610000', value: 0 }, { name: '吉林省', code: '220000', value: 0 }, { name: '福建省', code: '350000', value: 0 }, { name: '贵州省', code: '520000', value: 0 }, { name: '广东省', code: '440000', value: 0 }, { name: '青海省', code: '630000', value: 0 }, { name: '西藏自治区', code: '540000', value: 0 }, { name: '宁夏回族自治区', code: '640000', value: 0 }, { name: '四川省', code: '510000', value: 0 }, { name: '宁夏省', code: '640000', value: 0 }, { name: '海南省', code: '460000', value: 0 }, { name: '台湾省', code: '710000', value: 0 }, { name: '香港特别行政区', code: '810000', value: 0 }, { name: '澳门特别行政区', code: '820003', value: 0 }, { name: '南海诸岛', code: '', value: 0 }, ] let totalNum = 0 mapList.value.forEach(i => { @@ -530,10 +559,10 @@ item.value = 0 item.monthNum = ite.monthNum item.yearNum = ite.yearNum if(totalNum > 0){ if (totalNum > 0) { item.rate = ((ite.yearNum / totalNum) * 100).toFixed(2) item.value = (ite.yearNum / totalNum).toFixed(4) } } }) @@ -702,7 +731,7 @@ mapList.value = temp.map(item => { item.value = item.monthNum item.name = item.provinceName item.code=item.provinceCode item.code = item.provinceCode return item }) initMap() @@ -1210,7 +1239,7 @@ } else if (item.seriesName === '库存利用率') { result += ` <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 2px;"> <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px; border-radius: 50%;background-color: #5a6fc0;margin-right: 4px;"></div><div>${item.seriesName}</div></div> <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px; border-radius: 50%;background-color: #b2bcd1;margin-right: 4px;"></div><div>${item.seriesName}</div></div> <div><strong>${item.value}%</strong></div> </div>` } @@ -1580,7 +1609,7 @@ // icon: 'circle', right: '10%', top: '0%', data: ['总运力资源', '当日提报运力', '车辆利用率'], data: ['当日可用运力', '当日提报运力', '车辆利用率'], itemWidth: 20, itemHeight: 10, textStyle: { @@ -1594,7 +1623,7 @@ // 遍历悬浮时的所有点,定制化显示内容 let result = `<div style="width: 160px">${params[0].name}</div>` params.forEach((item) => { if (item.seriesName === '总运力资源') { if (item.seriesName === '当日可用运力') { result += ` <div style="display: flex;align-items: center;justify-content: space-between;margin-top: 2px;"> <div style="display: flex;align-items: center;"><div style="width: 10px;height: 10px; border-radius: 50%;background-color: #88d9cc;margin-right: 4px;"></div><div>${item.seriesName}</div></div> @@ -1686,7 +1715,7 @@ ], series: [ { name: '总运力资源', name: '当日可用运力', type: 'bar', barWidth: 10, barGap: '60%', @@ -2111,6 +2140,9 @@ .left { display: flex; align-items: center; position: relative; img { width: 16px; @@ -2280,6 +2312,7 @@ .tag1 { background-color: #28F0CC; border: 1px solid #28F0CC; .icon { background-color: #28F0CC; } @@ -2405,6 +2438,55 @@ height: 192px; width: 410px; } } } } .question { display: flex; align-items: center; &:hover { .hover_wrap { display: block; } } .hover_wrap { display: none; position: absolute; left: 130px; z-index: 999; top: -5px; width: 407px; height: 134px; background: rgba(0, 30, 63, 0.6); border: 1px solid #003F82; backdrop-filter: blur(3px); padding: 10px; font-size: 13px; color: #e2ebfd; line-height: 19px; font-weight: 400; border-radius: 6px; .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: bold; font-size: 14px; color: #e2ebfd; } } } @@ -2752,6 +2834,11 @@ font-weight: 500; font-size: 16px; color: #FFFFFF; position: relative; .hover_wrap { left: 175px; } .icon { width: 16px;