From b44b5aa1dda1d9196416cbf84e610cfd1f5b1c82 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期三, 25 九月 2024 15:54:01 +0800
Subject: [PATCH] lll
---
admin/src/assets/images/ic_google@2x.png | 0
admin/src/views/platform/LogisticsRecord/waybill.vue | 17
admin/src/assets/images/login_img@2x.png | 0
admin/src/views/login.vue | 325 +++++++++++++++++++++---
admin/src/views/platform/queueUp.vue | 6
admin/src/views/statistics/platformRecord.vue | 2
h5/api/driver.js | 8
admin/src/views/platform/components/PlatformSign.vue | 17 +
admin/src/api/platform/index.js | 8
admin/src/assets/images/bg@2x.png | 0
admin/src/views/statistics/platformStatic.vue | 140 ++++++----
/dev/null | 0
h5/pages/driver/taskDetail.vue | 2
admin/src/views/platform/index.vue | 8
admin/src/views/platform/components/WaybillDetail.vue | 96 ++++--
admin/src/router/index.js | 4
h5/manifest.json | 2
h5/pages/driver/taskConfirm.vue | 95 +++---
pda/manifest.json | 4
19 files changed, 530 insertions(+), 204 deletions(-)
diff --git a/admin/src/api/platform/index.js b/admin/src/api/platform/index.js
index f799f80..fc0eaa6 100644
--- a/admin/src/api/platform/index.js
+++ b/admin/src/api/platform/index.js
@@ -97,10 +97,18 @@
export function platformJobPage(data) {
return request.post('/visitsAdmin/cloudService/business/platformJob/page', data)
}
+// 鏈堝彴浣滀笟缁熻 鍒嗛〉鍒楄〃
+export function platformWorkReportPage(data) {
+ return request.post('/visitsAdmin/cloudService/business/platform/platformWorkReportPage', data)
+}
// 鏈堝彴璋冨害浣滀笟浠诲姟 鍒犻櫎
export function platformJobDel(id) {
return request.get('/visitsAdmin/cloudService/business/platformJob/delete?id=' + id)
}
+// 鏈堝彴杩愬崟璇︽儏
+export function platformWmsJobDetail(id) {
+ return request.get('/visitsAdmin/cloudService/business/platformWmsJob/' + id)
+}
// 鏈堝彴璋冨害浣滀笟浠诲姟 绛惧埌
export function platformJobSign(data) {
return request.post('/visitsAdmin/cloudService/business/platformJob/signIn', data)
diff --git a/admin/src/assets/images/bg@2x.png b/admin/src/assets/images/bg@2x.png
new file mode 100644
index 0000000..12cf9ff
--- /dev/null
+++ b/admin/src/assets/images/bg@2x.png
Binary files differ
diff --git a/admin/src/assets/images/ic_google@2x.png b/admin/src/assets/images/ic_google@2x.png
new file mode 100644
index 0000000..71a569b
--- /dev/null
+++ b/admin/src/assets/images/ic_google@2x.png
Binary files differ
diff --git a/admin/src/assets/images/login_img.jpg b/admin/src/assets/images/login_img.jpg
deleted file mode 100644
index c7024a0..0000000
--- a/admin/src/assets/images/login_img.jpg
+++ /dev/null
Binary files differ
diff --git a/admin/src/assets/images/login_img@2x.png b/admin/src/assets/images/login_img@2x.png
new file mode 100644
index 0000000..4abf7b0
--- /dev/null
+++ b/admin/src/assets/images/login_img@2x.png
Binary files differ
diff --git a/admin/src/router/index.js b/admin/src/router/index.js
index abcd0d2..0078cd0 100644
--- a/admin/src/router/index.js
+++ b/admin/src/router/index.js
@@ -67,6 +67,10 @@
next()
return
}
+ if (to.name === 'login') {
+ next()
+ return
+ }
getUserInfo()
.then(userInfo => {
// 濡傛灉鐢ㄦ埛涓嶅瓨鍦ㄦ潈闄�
diff --git a/admin/src/views/login.vue b/admin/src/views/login.vue
index 16a3215..652081b 100644
--- a/admin/src/views/login.vue
+++ b/admin/src/views/login.vue
@@ -1,21 +1,54 @@
<template>
<div class="wrap">
- <div class="introduce">
- <h2>{{title}}</h2>
- <h3></h3>
- </div>
- <div class="login">
- <h1>绯荤粺鐧诲綍 / LOGIN IN</h1>
- <div class="info-input">
- <el-input v-model="username" placeholder="璇疯緭鍏ョ敤鎴峰悕" prefix-icon="el-icon-user-solid" maxlength="50" v-trim/>
- <el-input v-model="password" placeholder="璇疯緭鍏ュ瘑鐮�" type="password" prefix-icon="eva-icon-password" maxlength="30" show-password/>
- <div class="captcha-input">
- <el-input v-model="captcha.value" placeholder="鍥剧墖楠岃瘉鐮�" prefix-icon="eva-icon-shield" maxlength="4" @keypress.enter.native="login"/>
- <img v-if="!captcha.loading" :src="captcha.uri" @click="refreshCaptcha">
- <span v-else><i class="el-icon-loading"></i></span>
+ <img src="@/assets/images/bg@2x.png" class="main_bg" alt="">
+ <div class="login_wrap">
+ <div class="login_img">
+ <div class="h3">鏅烘収鐗╂祦鍥尯瀹夋秷涓�浣撳寲绯荤粺</div>
+ </div>
+ <div class="form_wrap">
+ <!-- <div class="tabs">
+ <div class="tab active">
+ <div class="name">甯愬彿鐧诲綍</div>
+ <div class="icon"></div>
+ </div>
+ <div class="tab">
+ <div class="name">鎵嬫満鐧诲綍</div>
+ <div class="icon"></div>
+ </div>
+ </div> -->
+ <div class="df_ac">
+ <div class="label">甯愬彿</div>
+ <div class="line">
+ <el-input v-model="username" placeholder="璇疯緭鍏ュ笎鍙�" maxlength="50" v-trim />
+ </div>
+ </div>
+ <div class="df_ac">
+ <div class="label">瀵嗙爜</div>
+ <div class="line">
+ <el-input v-model="password" placeholder="璇疯緭鍏ュ瘑鐮�" type="password" maxlength="30" show-password />
+ </div>
+ </div>
+
+ <div class="df_ac">
+ <div class="label">楠岃瘉鐮�</div>
+ <div class="line">
+ <el-input v-model="captcha.value" placeholder="璇疯緭鍏ラ獙璇佺爜" maxlength="4" @keypress.enter.native="login" />
+ <img v-if="!captcha.loading" class="code_image" :src="captcha.uri" @click="refreshCaptcha">
+ <span v-else><i class="el-icon-loading"></i></span>
+ </div>
+ </div>
+ <el-button :loading="loading" type="primary" class="login_btn"
+ @click.native.prevent="login">绔嬪嵆鐧诲綍</el-button>
+ <div class="btn_wrap">
+ <el-checkbox v-model="isRemPsd">
+ <span style="font-size: 13px; font-weight: 400" class="placeholder9">璁颁綇瀵嗙爜</span>
+ </el-checkbox>
+ </div>
+ <div class="google">
+ <img src="@/assets/images/ic_google@2x.png" class="img" alt="">
+ <span class="placeholder6">鏈郴缁熸帹鑽愪娇鐢℅OOGLE娴忚鍣�</span>
</div>
</div>
- <el-button :loading="loading" @click="login">鐧� 褰�</el-button>
</div>
</div>
</template>
@@ -23,14 +56,14 @@
<script>
import { mapMutations } from 'vuex'
import { getCaptcha, loginByPassword } from '@/api/system/common'
-import Cookies from "js-cookie";
+import Cookies from "js-cookie"
export default {
name: 'Login',
- data () {
+ data() {
return {
loading: false,
- title: process.env.VUE_APP_TITLE,
+ isRemPsd: false,
username: '',
password: '',
// 楠岃瘉鐮�
@@ -42,10 +75,17 @@
}
}
},
+ mounted() {
+ this.username = localStorage.getItem('username') || ''
+ this.password = localStorage.getItem('password') || ''
+ const isRemPsd = localStorage.getItem('isRemPsd') || false
+ this.isRemPsd = JSON.parse(isRemPsd)
+ this.refreshCaptcha()
+ },
methods: {
...mapMutations(['setUserInfo']),
// 鐧诲綍
- login () {
+ login() {
if (this.loading) {
return
}
@@ -61,8 +101,17 @@
})
.then((res) => {
// window.location.href = process.env.VUE_APP_CONTEXT_PATH
- Cookies.set('dm_user_token',res)
- window.location.reload()
+ if (this.isRemPsd) {
+ localStorage.setItem('username', this.username.trim())
+ localStorage.setItem('password', this.password.trim())
+ localStorage.setItem('isRemPsd', this.isRemPsd)
+ } else {
+ localStorage.removeItem('username')
+ localStorage.removeItem('password')
+ localStorage.removeItem('isRemPsd')
+ }
+ Cookies.set('dm_user_token', res)
+ this.$router.push('index')
})
.catch(e => {
this.refreshCaptcha()
@@ -73,7 +122,7 @@
})
},
// 鍒锋柊楠岃瘉鐮�
- refreshCaptcha () {
+ refreshCaptcha() {
this.captcha.loading = true
getCaptcha()
.then(data => {
@@ -90,7 +139,7 @@
})
},
// 鐧诲綍鍓嶉獙璇�
- __check () {
+ __check() {
if (this.username.trim() === '') {
this.$tip.error('璇疯緭鍏ョ敤鎴峰悕')
return false
@@ -106,47 +155,218 @@
return true
}
},
- created () {
- this.refreshCaptcha()
- }
+
}
</script>
<style scoped lang="scss">
@import "@/assets/style/variables.scss";
+
+div {
+ box-sizing: border-box;
+}
+
$input-gap: 30px;
+
.wrap {
- display: flex;
width: 100%;
height: 100vh;
- background-image: url("../assets/images/login.jpg");
- background-repeat: no-repeat;
- background-size: auto 180%;
- background-clip: content-box;
- background-position: center;
+ position: relative;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+
// 宸﹁竟浠嬬粛
- .introduce {
- padding-left: 10%;
+ .main_bg {
+ position: absolute;
width: 100%;
height: 100%;
+ left: 0;
+ top: 0;
+ z-index: -1;
+ }
+
+ .login_wrap {
+ width: 1000px;
+ height: 600px;
box-sizing: border-box;
- color: #fff;
- background: rgba(0, 0, 0, 0.4);
+ background: #ffffff;
+ box-shadow: 0px 20px 60px 0px rgba(0, 0, 0, 0.11);
display: flex;
- flex-direction: column;
- justify-content: center;
- h2 {
- font-size:34px;
- font-style: italic;
- font-weight: 900;
- margin-top: 50px;
+
+ .login_img {
+ width: 500px;
+ height: 600px;
+ background: url("../assets/images/login_img@2x.png");
+ background-size: 100% 100%;
+ padding-left: 40px;
+ padding-top: 80px;
+
+ .h3 {
+ font-size: 28px;
+ font-weight: 700;
+ color: #fff;
+ margin-bottom: 26px;
+ }
+
+ .text {
+ font-size: 18px;
+ color: #fff;
+ }
}
- h3 {
- font-size: 49px;
- font-weight: 300;
- margin: 25px 0;
+
+ .form_wrap {
+ flex: 1;
+ height: 100%;
+ background-color: #fff;
+ box-sizing: border-box;
+ /* padding: 50px 80px 20px; */
+ padding: 80px 80px 20px;
+ position: relative;
+
+ .tabs {
+ display: flex;
+ justify-content: space-evenly;
+ font-size: 20px;
+ color: #666666;
+ margin-bottom: 30px;
+
+ .tab {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+
+ .icon {
+ width: 36px;
+ height: 4px;
+ background: #fff;
+ border-radius: 2px;
+ margin-top: 8px;
+ }
+ }
+
+ .active {
+ font-weight: 500;
+ font-size: 24px;
+ color: #222222;
+
+ .icon {
+ background: #207FF7;
+ }
+ }
+ }
+
+ .df_ac {
+ flex-direction: column;
+ align-items: flex-start;
+ }
+
+ .title {
+ font-size: 24px;
+ margin-top: 70px;
+ margin-bottom: 48px;
+ text-align: center;
+ }
+
+ .label {
+ color: #222222;
+ margin-bottom: 18px;
+ font-size: 14px;
+ margin-right: 12px;
+ width: 42px;
+ }
+
+ &.ey {
+ .label {
+ width: 135px;
+ }
+ }
+
+ .line {
+ margin-bottom: 17px;
+ display: flex;
+ width: 100%;
+
+ .el-input {
+ height: 40px;
+
+ // font-size: 14px;
+ ::v-deep .el-input__inner {
+ height: 40px !important;
+ }
+ }
+
+ .code_image {
+ width: 100px;
+ margin-left: 10px;
+ }
+ }
+
+ .forget {
+ justify-content: space-between;
+ width: 100%;
+
+ .text {
+ cursor: pointer;
+ }
+ }
+
+ .login_btn {
+ width: 100%;
+ height: 40px;
+ background: $primary-color;
+ box-shadow: 0px 2px 8px 0px rgba(67, 94, 190, 0.15);
+ border-radius: 2px;
+ margin: 0 auto;
+ font-weight: 500;
+ font-size: 16px;
+ }
+
+ .google {
+ position: absolute;
+ left: 50%;
+ transform: translate(-50%, 0);
+ bottom: 20px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 100%;
+ font-size: 12px;
+
+ .img {
+ margin-right: 5px;
+ width: 18px;
+ }
+ }
+
+ .btn_wrap {
+ margin-top: 20px;
+ }
+
+ .agreement {
+ text-align: center;
+ }
+
+ .google {
+ position: absolute;
+ left: 50%;
+ transform: translate(-50%, 0);
+ bottom: 20px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: 100%;
+ font-size: 12px;
+
+ .img {
+ margin-right: 5px;
+ width: 18px;
+ }
+ }
}
}
+
// 鍙宠竟鐧诲綍
.login {
height: 100%;
@@ -161,40 +381,50 @@
flex-direction: column;
justify-content: center;
box-sizing: border-box;
+
h1 {
font-size: 28px;
font-weight: 500;
}
+
.info-input {
margin-top: $input-gap;
margin-bottom: 60px;
+
/deep/ .el-input {
margin-top: 30px;
+
.el-input__inner {
height: 50px;
background: #F9F9F9;
border: 1px solid transparent;
+
&:focus {
border: 1px solid $primary-color;
}
}
}
}
+
// 楠岃瘉鐮佽緭鍏�
.captcha-input {
display: flex;
margin-top: $input-gap;
height: 50px;
+
.el-input {
width: 100%;
margin-top: 0;
}
- span, img {
+
+ span,
+ img {
width: 45%;
height: 100%;
flex-shrink: 0;
margin-left: 16px;
}
+
span {
display: flex;
align-items: center;
@@ -203,6 +433,7 @@
border-radius: 8px;
}
}
+
.el-button {
height: 50px;
width: 100%;
diff --git a/admin/src/views/platform/LogisticsRecord/waybill.vue b/admin/src/views/platform/LogisticsRecord/waybill.vue
index a86666b..2084078 100644
--- a/admin/src/views/platform/LogisticsRecord/waybill.vue
+++ b/admin/src/views/platform/LogisticsRecord/waybill.vue
@@ -49,7 +49,7 @@
<Pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" />
<!-- -->
<!-- -->
- <DriverDetail v-if="isShowDriver" ref="DriverDetailRef" />
+ <WaybillDetailRef v-if="isShowDetail" ref="WaybillDetailRef" />
</div>
</template>
@@ -58,7 +58,7 @@
import QueryForm from '@/components/common/QueryForm'
import { platformJobPage, platformJobExport, platformJobDel } from '@/api'
import { statusMap } from '../config'
-import DriverDetail from "@/views/task/driverDetail"
+import WaybillDetailRef from "../components/WaybillDetail.vue"
import GlobalWindow from '@/components/common/GlobalWindow'
import UploadFaceImg from '@/components/common/UploadFaceImg'
import { Message } from 'element-ui'
@@ -67,14 +67,14 @@
components: {
Pagination,
QueryForm,
- DriverDetail,
+ WaybillDetailRef,
GlobalWindow,
UploadFaceImg
},
data() {
return {
statusMap,
- isShowDriver: false,
+ isShowDetail: false,
exLoading: false,
loading: false,
pagination: {
@@ -198,12 +198,11 @@
this.getList()
},
handleDetail(row) {
- this.isShowDriver = true
+ this.isShowDetail = true
this.$nextTick(() => {
- this.$refs.DriverDetailRef.id = row.id
- this.$refs.DriverDetailRef.type = 6
- this.$refs.DriverDetailRef.getDetail()
- this.$refs.DriverDetailRef.isShowModal = true
+ this.$refs.WaybillDetailRef.isShowModal = true
+ this.$refs.WaybillDetailRef.id = row.id
+ this.$refs.WaybillDetailRef.getDetail()
})
},
handleSizeChange(capacity) {
diff --git a/admin/src/views/platform/components/PlatformSign.vue b/admin/src/views/platform/components/PlatformSign.vue
index 79b9000..42d5007 100644
--- a/admin/src/views/platform/components/PlatformSign.vue
+++ b/admin/src/views/platform/components/PlatformSign.vue
@@ -45,7 +45,7 @@
</div>
</div>
<div class="footer df_sb">
- <div v-if="item.type != 4" class="detail">杩愬崟璇︽儏</div>
+ <div @click="handleDetail(item)" v-if="item.type != 4" class="detail">杩愬崟璇︽儏</div>
<div v-else></div>
<el-button type="primary" @click="handleCall(item)">绛惧埌</el-button>
</div>
@@ -54,24 +54,28 @@
<pagination @size-change="handleSizeChange" @current-change="handlePageChange" :pagination="pagination">
</pagination>
</div>
+ <WaybillDetailRef v-if="isShowDetail" ref="WaybillDetailRef" />
</GlobalWindow>
</template>
<script>
import GlobalWindow from '@/components/common/GlobalWindow'
import Pagination from '@/components/common/Pagination'
+import WaybillDetailRef from "./WaybillDetail.vue"
import { platformJobPage, platformJobSign } from '@/api'
import { statusMap } from '../config'
import { Message } from 'element-ui'
export default {
components: {
GlobalWindow,
- Pagination
+ Pagination,
+ WaybillDetailRef
},
data() {
return {
statusMap,
isShowModal: false,
+ isShowDetail: false,
subLoading: false,
pagination: {
total: 0,
@@ -102,6 +106,14 @@
}).then(res => {
this.dataList = res.records
this.pagination.total = res.total
+ })
+ },
+ handleDetail(row) {
+ this.isShowDetail = true
+ this.$nextTick(() => {
+ this.$refs.WaybillDetailRef.isShowModal = true
+ this.$refs.WaybillDetailRef.id = row.id
+ this.$refs.WaybillDetailRef.getDetail()
})
},
reset() {
@@ -214,6 +226,7 @@
.footer {
.detail {
color: $primaryColor;
+ cursor: pointer;
}
}
}
diff --git a/admin/src/views/platform/components/WaybillDetail.vue b/admin/src/views/platform/components/WaybillDetail.vue
index 76f726f..066ef82 100644
--- a/admin/src/views/platform/components/WaybillDetail.vue
+++ b/admin/src/views/platform/components/WaybillDetail.vue
@@ -1,39 +1,38 @@
<template>
- <GlobalWindow
- title="杩愬崟璇︽儏"
- center
- :visible.sync="isShowModal"
- width="420px"
- :confirm-working="subLoading"
- @confirm="isShowDetail = false"
- >
+ <GlobalWindow title="杩愬崟璇︽儏" center :visible.sync="isShowModal" width="600px" :confirm-working="subLoading"
+ @confirm="isShowModal = false">
<div class="detail_modal">
<div class="head">
- <div class="plate">鐨朅12122</div>
+ <div class="plate" v-if="info.plateNumber">
+ <span>{{ info.plateNumber.slice(0, 1) }}</span>
+ <span>{{ info.plateNumber.slice(1, 2) }}</span>
+ <span>路</span>
+ <span>{{ info.plateNumber.slice(2) }}</span>
+ </div>
<div class="list">
<div class="item">
<span>杩愯緭鍗曞彿锛�</span>
- <span>22222</span>
+ <span>{{ info.carryBillCode }}</span>
</div>
<div class="item">
<span>鎬昏繍杈撻噺锛�</span>
- <span>22222</span>
+ <span>{{ info.ioQty }}涓囨敮</span>
</div>
<div class="item">
<span>椹鹃┒鍛橈細</span>
- <span>22222</span>
+ <span>{{ info.driverName }} {{ info.driverPhone }}</span>
</div>
</div>
</div>
<div class="title">鍚堝悓鍒楄〃</div>
<div class="content">
- <div class="item">
- <div class="contract">鍚堝悓鍙凤細1292992</div>
- <div class="placeholder6">鏀惰揣鍦帮細address</div>
+ <div class="item" v-for="item in info.wmsJobContractVOList">
+ <div class="contract">鍚堝悓鍙凤細{{ item.contractCode }}</div>
+ <div class="placeholder6">鏀惰揣鍦帮細{{ item.address }}</div>
<div class="list">
- <div class="line">
- <div class="left"><span>鐗╂枡鍚嶇О锛�</span><span>榛勫北</span></div>
- <div class="right"><span>鏁伴噺锛�</span><span>100</span></div>
+ <div class="line" v-for="line in item.platformWmsDetailList">
+ <div class="left"><span>鐗╂枡鍚嶇О锛�</span><span>{{ line.materialName }}</span></div>
+ <div class="right"><span>鏁伴噺锛�</span><span>{{ line.ioQty }}涓囨敮</span></div>
</div>
</div>
</div>
@@ -44,7 +43,7 @@
<script>
import GlobalWindow from '@/components/common/GlobalWindow'
-import { getPlatform, PlatformEdit, PlatformDel } from '@/api'
+import { platformWmsJobDetail } from '@/api'
export default {
components: {
GlobalWindow
@@ -53,23 +52,16 @@
return {
isShowModal: false,
subLoading: false,
- param: {}
+ info: {},
+ id: ''
}
},
methods: {
- handleSub() {
- const { param } = this
- this.subLoading = true
- PlatformEdit({
- ...param
- }).then(res => {
- this.subLoading = false
- this.isShowEdit = false
- this.$tip.success('鎻愪氦鎴愬姛')
- this.getList()
- }, () => {
- this.subLoading = false
+ getDetail() {
+ const { id } = this
+ platformWmsJobDetail(id).then(res => {
+ this.info = res
})
}
}
@@ -79,31 +71,51 @@
<style lang="scss" scoped>
@import "@/assets/style/variables.scss";
+
.detail_modal {
font-size: 12px;
color: #282828;
+
.head {
background: rgba(39, 155, 170, 0.05);
border-radius: 4px;
border: 1px solid #dfe2e8;
padding: 16px;
+
.plate {
- width: 90px;
- text-align: center;
+ display: flex;
+ font-weight: 600;
+ height: 30px;
+ line-height: 30px;
font-size: 15px;
color: #111111;
- padding: 4px 5px;
- font-weight: 700;
- border: 1px solid #279baa;
background-color: #fff;
+ border-radius: 4px;
+ border: 1px solid $primaryColor;
+ padding-right: 4px;
+ width:106px;
+ span {
+ &:nth-of-type(1) {
+ background: $primaryColor;
+ padding: 0 8px;
+ color: #fff;
+ }
+
+ &:nth-of-type(2) {
+ padding-left: 4px;
+ }
+ }
}
+
.list {
display: flex;
flex-wrap: wrap;
margin-top: 16px;
+
.item {
width: 50%;
margin-bottom: 8px;
+
span {
&:nth-child(1) {
color: #666666;
@@ -112,35 +124,43 @@
}
}
}
+
.title {
margin: 16px 0;
font-weight: 500;
font-size: 16px;
color: #222222;
}
+
.content {
.item {
border-radius: 4px;
border: 1px solid #dfe2e8;
padding: 16px;
+ margin-bottom: 10px;
+
.list {
background: #f7f7f7;
border-radius: 4px;
padding: 12px 16px;
margin-top: 10px;
}
+
.contract {
font-weight: 500;
font-size: 15px;
color: #279baa;
margin-bottom: 4px;
}
+
.line {
display: flex;
margin-bottom: 8px;
+
&:nth-last-child(1) {
margin: 0;
}
+
div {
span {
&:nth-child(1) {
@@ -148,9 +168,11 @@
}
}
}
+
.left {
flex: 6;
}
+
.right {
flex: 4;
}
diff --git a/admin/src/views/platform/index.vue b/admin/src/views/platform/index.vue
index 890d23c..e82f7a4 100644
--- a/admin/src/views/platform/index.vue
+++ b/admin/src/views/platform/index.vue
@@ -94,7 +94,7 @@
</div>
<div class="line">
<div v-if="task.type != 4" class="left">
- <span class="primaryColor pointer" @click="handleDetail">杩愬崟璇︽儏</span>
+ <span class="primaryColor pointer" @click="handleDetail(task)">杩愬崟璇︽儏</span>
</div>
<div v-else></div>
<div class="right">
@@ -320,10 +320,12 @@
this.$refs.PlatformQueuingRef.title = item.name
})
},
- handleDetail() {
+ handleDetail(row) {
this.isShowDetail = true
this.$nextTick(() => {
this.$refs.WaybillDetailRef.isShowModal = true
+ this.$refs.WaybillDetailRef.id = row.id
+ this.$refs.WaybillDetailRef.getDetail()
})
},
getList() {
@@ -483,14 +485,12 @@
border-radius: 4px;
border: 1px solid $primaryColor;
padding-right: 4px;
-
span {
&:nth-of-type(1) {
background: $primaryColor;
padding: 0 8px;
color: #fff;
}
-
&:nth-of-type(2) {
padding-left: 4px;
}
diff --git a/admin/src/views/platform/queueUp.vue b/admin/src/views/platform/queueUp.vue
index 4b2d2f3..329fef3 100644
--- a/admin/src/views/platform/queueUp.vue
+++ b/admin/src/views/platform/queueUp.vue
@@ -43,9 +43,9 @@
</template>
</el-table-column>
<el-table-column prop="signDate" label="绛惧埌鏃堕棿" min-width="150" />
- <el-table-column label="鎿嶄綔" width="100" fixed="right">
+ <el-table-column label="鎿嶄綔" align="center" width="100" fixed="right">
<template slot-scope="{ row }">
- <el-button type="text" @click="handleDetail(row)" v-permissions="['business:company:update']">杩愬崟璇︽儏</el-button>
+ <el-button v-if="row.type != 4" type="text" @click="handleDetail(row)" v-permissions="['business:company:update']">杩愬崟璇︽儏</el-button>
</template>
</el-table-column>
</el-table>
@@ -169,6 +169,8 @@
this.isShowDetail = true
this.$nextTick(() => {
this.$refs.WaybillDetailRef.isShowModal = true
+ this.$refs.WaybillDetailRef.id = row.id
+ this.$refs.WaybillDetailRef.getDetail()
})
},
}
diff --git a/admin/src/views/statistics/platformRecord.vue b/admin/src/views/statistics/platformRecord.vue
index a7edbbe..1d71124 100644
--- a/admin/src/views/statistics/platformRecord.vue
+++ b/admin/src/views/statistics/platformRecord.vue
@@ -55,6 +55,7 @@
filed: 'platformGroupId',
type: 'select',
label: '鏈堝彴缁�',
+ placeholder: '鍏ㄩ儴鏈堝彴缁�',
options: []
},
{
@@ -92,6 +93,7 @@
label: i.name
}
})
+ // this.queryFormConfig.formItems[1].options.unshift({ value: '', label: '鍏ㄩ儴鏈堝彴缁�' })
})
},
getList(page) {
diff --git a/admin/src/views/statistics/platformStatic.vue b/admin/src/views/statistics/platformStatic.vue
index 4e69412..4af9ec1 100644
--- a/admin/src/views/statistics/platformStatic.vue
+++ b/admin/src/views/statistics/platformStatic.vue
@@ -1,108 +1,138 @@
<template>
<div class="main_app">
- <QueryForm
- v-model="filters"
- :query-form-config="queryFormConfig"
- @handleQuery="getList(1)"
- @clear="clear"
- />
+ <QueryForm v-model="filters" :query-form-config="queryFormConfig" @handleQuery="getList(1)" @clear="clear">
+ <template #fastdate>
+ <el-radio-group v-model="filters.fastdate" size="small" @input="changeRadio">
+ <el-radio-button label="0">褰撳ぉ</el-radio-button>
+ <el-radio-button label="6">杩�7澶�</el-radio-button>
+ <el-radio-button label="29">杩�30澶�</el-radio-button>
+ </el-radio-group>
+ </template>
+ </QueryForm>
<el-table v-loading="loading" :data="list" stripe>
- <el-table-column
- prop="name"
- label="鏈堝彴鍚嶇О"
- min-width="100"
- show-overflow-tooltip
- />
- <el-table-column
- prop="name"
- label="鏈堝彴缁�"
- min-width="100"
- show-overflow-tooltip
- />
- <el-table-column
- prop="name"
- label="鍋滈潬娆℃暟(娆�)"
- min-width="100"
- show-overflow-tooltip
- />
- <el-table-column
- prop="name"
- label="宸ヤ綔鏃堕暱"
- min-width="100"
- show-overflow-tooltip
- />
- <el-table-column
- prop="name"
- label="鏈堝彴浣跨敤鐜�"
- min-width="100"
- show-overflow-tooltip
- />
+ <el-table-column prop="name" label="鏈堝彴鍚嶇О" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="groupName" label="鏈堝彴缁�" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="stopCount" label="鍋滈潬娆℃暟(娆�)" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="workCountTime" label="宸ヤ綔鏃堕暱" min-width="100" show-overflow-tooltip />
+ <el-table-column prop="useRata" label="鏈堝彴浣跨敤鐜�" min-width="100" show-overflow-tooltip />
</el-table>
- <pagination
- @size-change="handleSizeChange"
- @current-change="getList"
- :pagination="pagination"
- />
+ <!-- <pagination @size-change="handleSizeChange" @current-change="getList" :pagination="pagination" /> -->
</div>
</template>
<script>
import Pagination from '@/components/common/Pagination'
import QueryForm from '@/components/common/QueryForm'
+import dayjs from 'dayjs'
+import { platformWorkReportPage, getPlatformGroupList } from '@/api'
export default {
components: {
Pagination,
QueryForm
},
- data () {
+ data() {
return {
loading: false,
pagination: {
- capacity: 10,
- page: 1
+ pageSize: 10,
+ page: 1,
+ total: 0
},
- filters: {},
+ filters: {
+ fastdate: 0,
+ selDate: []
+ },
list: [],
total: 0,
queryFormConfig: {
formItems: [
{
- filed: 'aaaa',
+ filed: 'name',
type: 'input',
label: '鏈堝彴鍚嶇О'
},
{
- filed: 'bbb',
+ filed: 'groupId',
type: 'select',
label: '鏈堝彴缁�',
+ placeholder: '鍏ㄩ儴鏈堝彴缁�',
options: []
+ },
+ {
+ type: 'slot',
+ filed: 'fastdate',
+ label: ''
},
{
filed: 'selDate',
type: 'daterange',
- label: '閫夋嫨鏃堕棿'
+ clearable: false,
+ label: '鏃ユ湡'
}
],
online: true
}
}
},
+ created() {
+ this.changeRadio('0')
+ this.getList()
+ },
methods: {
- handleSub () {
+ changeRadio(day) {
+ const arr = [dayjs().subtract(day, 'day').format('YYYY-MM-DD'), dayjs().format('YYYY-MM-DD')]
+ this.$set(this.filters, 'selDate', arr)
+ this.getList()
+ },
+ handleSub() {
this.$refs.ruleForm.validate((valid) => {
if (valid) {
alert('submit!')
}
})
},
- getList (page) { },
- clear () { },
- handleSizeChange (capacity) {
- this.pagination.capacity = capacity
+ getGroupList() {
+ getPlatformGroupList({ queryData: 0, queryType: 0 }).then(res => {
+ this.queryFormConfig.formItems[1].options = res.map(i => {
+ return {
+ value: i.id,
+ label: i.name
+ }
+ })
+ // this.queryFormConfig.formItems[1].options.unshift({ value: '', label: '鍏ㄩ儴鏈堝彴缁�' })
+ })
+ },
+ getList(page) {
+ const { pagination, filters } = this
+ this.loading = true
+ platformWorkReportPage({
+ ...filters,
+ queryDateStart: filters.selDate && filters.selDate.length > 0 ? filters.selDate[0] : null,
+ queryDateEnd: filters.selDate && filters.selDate.length > 0 ? filters.selDate[1] : null,
+ }).then(res => {
+ this.loading = false
+ this.list = res || []
+ this.list.forEach(item => {
+ item.useRata = item.useRata + '%'
+ item.workCountTime = item.workCountTime + '鏃�'
+ // item.workTime = dayjs.duration(item.workTime, 'seconds').format('H鏃秏鍒唖绉�')
+ })
+ }, () => {
+ this.loading = false
+ })
+ },
+ clear() {
+ this.filters = {
+ fastdate: 0,
+ selDate: []
+ }
+ this.changeRadio('0')
+ },
+ handleSizeChange(capacity) {
+ this.pagination.pageSize = capacity
}
}
}
</script>
-<style>
-</style>
+<style></style>
diff --git a/h5/api/driver.js b/h5/api/driver.js
index 22aaa04..f0c8f77 100644
--- a/h5/api/driver.js
+++ b/h5/api/driver.js
@@ -112,4 +112,12 @@
method: 'post',
data
})
+}
+// wms杩愬崟璇︽儏
+export const wmsJobDetail = (data) => {
+ return http({
+ url: 'visitsAdmin/cloudService/web/driverPlatform/wmsJobDetail',
+ method: 'get',
+ data
+ })
}
\ No newline at end of file
diff --git a/h5/manifest.json b/h5/manifest.json
index 0688118..8563963 100644
--- a/h5/manifest.json
+++ b/h5/manifest.json
@@ -92,7 +92,7 @@
"/admin_interface" : {
// 杩欎釜瀛楁鍚嶉渶涓庝綘閰嶇疆鐨刡asePrefixUrl涓�鑷达紝绯荤粺璇嗗埆鍒板甫鏈�/dev-api璇锋眰鐨勫湴鍧�鏃讹紝浼氬湪鍓嶉潰鎷兼帴涓婁唬鐞嗘湇鍔″櫒鍦板潃
// "target" : "http://172.20.10.7:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
- "target" : "http://192.168.0.103:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+ "target" : "http://192.168.0.100:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
// "target" : "http://10.50.250.178:8088/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
"changeOrigin" : true, // 鍏佽璺ㄥ煙
"pathRewrite" : {
diff --git a/h5/pages/driver/taskConfirm.vue b/h5/pages/driver/taskConfirm.vue
index dd156a3..97860e4 100644
--- a/h5/pages/driver/taskConfirm.vue
+++ b/h5/pages/driver/taskConfirm.vue
@@ -18,8 +18,8 @@
</view>
<view class="line">
<view class="label">杩愯緭鍗曞彿</view>
- <view class="value" @click="showDetail = true">
- <text class="waybill_num">{{ param.contractNum }}</text>
+ <view class="value" @click="wmsDetail">
+ <text class="waybill_num">{{ param.billCode }}</text>
<text class="btn">杩愬崟璇︽儏</text>
</view>
</view>
@@ -59,49 +59,45 @@
<u-popup :show="showDetail" :round="10" :safeAreaInsetBottom="true" closeOnClickOverlay :closeable="true" mode="bottom" @close="showDetail = false">
<view class="detail_modal">
<view class="modal_title">杩愬崟璇︽儏</view>
- <view class="id_card">
- <view class="last">鐨�</view>
- <view class="name">AD1111</view>
+ <view v-if="wmsInfo.plateNumber" class="id_card">
+ <text>{{ wmsInfo.plateNumber.slice(0, 1) }}</text>
+ <text>{{ wmsInfo.plateNumber.slice(1, 2) }}</text>
+ <text>路</text>
+ <text>{{ wmsInfo.plateNumber.slice(2) }}</text>
</view>
<!-- -->
<view class="info">
<view class="line">
<view class="label">杩愯緭鍗曞彿</view>
- <view class="value">2222</view>
+ <view class="value">{{ wmsInfo.carryBillCode }}</view>
</view>
<view class="line">
<view class="label">椹鹃┒鍛�</view>
- <view class="value">2222</view>
+ <view class="value">{{ wmsInfo.driverName }} {{ wmsInfo.driverPhone }}</view>
</view>
<view class="line">
<view class="label">鎬昏繍杈撻噺</view>
- <view class="value">2222</view>
+ <view class="value">{{ wmsInfo.ioQty }}涓囨敮</view>
</view>
<view class="line">
<view class="label">杩愯緭鍏徃</view>
- <view class="value">2222</view>
+ <view class="value">{{ wmsInfo.carrierName }}</view>
</view>
</view>
<view class="separate"></view>
- <view class="contract_list">
- <view class="title">鍚堝悓鍙凤細111</view>
- <view class="address">aadd</view>
+ <view class="contract_list" v-for="item in wmsInfo.wmsJobContractVOList">
+ <view class="title">鍚堝悓鍙凤細{{ item.contractCode }}</view>
+ <view class="address">鏀惰揣鍦帮細{{ item.address }}</view>
<view class="list">
- <view class="line">
- <view class="label">鐗╂枡锛�</view>
- <view class="value">榛勫北榛戦┈</view>
- </view>
- <view class="line">
- <view class="label">鏁伴噺锛�</view>
- <view class="value">榛勫北榛戦┈</view>
- </view>
- <view class="line">
- <view class="label">鐗╂枡锛�</view>
- <view class="value">榛勫北榛戦┈</view>
- </view>
- <view class="line">
- <view class="label">鏁伴噺锛�</view>
- <view class="value">榛勫北榛戦┈</view>
+ <view class="item" v-for="line in item.platformWmsDetailList">
+ <view class="line">
+ <view class="label">鐗╂枡锛�</view>
+ <view class="value">{{ line.materialName }}</view>
+ </view>
+ <view class="line">
+ <view class="label">鏁伴噺锛�</view>
+ <view class="value">{{ line.ioQty }}</view>
+ </view>
</view>
</view>
</view>
@@ -115,7 +111,7 @@
<script>
import keyboardInput from '@/components/keyboard-input/keyboard-input.vue';
-import { driverTaskJobDetail, driverConfirmTask } from '@/api';
+import { driverTaskJobDetail, driverConfirmTask, wmsJobDetail } from '@/api';
import dayjs from 'dayjs'
export default {
components: {
@@ -124,6 +120,7 @@
data() {
return {
param: {},
+ wmsInfo: {},
showDate: false,
showDetail: false,
minDate: '',
@@ -155,6 +152,13 @@
}).then(ress => {
this.param = { ...ress.data, carCodeBack: '' };
});
+ },
+ wmsDetail() {
+ const { param } = this
+ wmsJobDetail({ id: param.id }).then(res => {
+ this.wmsInfo = res.data
+ this.showDetail = true
+ })
},
dateEnter(e) {
setTimeout(() => {
@@ -435,26 +439,29 @@
}
.id_card {
- border-radius: 8rpx;
display: flex;
+ font-weight: 600;
height: 60rpx;
line-height: 60rpx;
- font-weight: 600;
- font-size: 36rpx;
+ font-size: 32rpx;
color: #111111;
- text-align: center;
- margin-bottom: 30rpx;
-
- .last {
- background: #e9f5f6;
- width: 60rpx;
- border-radius: 8rpx 0rpx 0rpx 8rpx;
- border: 1rpx solid #dfdede;
- }
-
- .name {
- width: 186rpx;
- border: 1rpx solid #dfdede;
+ border-radius: 8rpx;
+ border: 1rpx solid #dfdede;
+ width: 220rpx;
+ margin-bottom: 15rpx;
+ text {
+ &:nth-of-type(1) {
+ background: #e9f5f6;
+ padding: 0 12rpx;
+ }
+
+ &:nth-of-type(2) {
+ padding-left: 10rpx;
+ }
+
+ &:nth-of-type(4) {
+ padding-right: 6rpx;
+ }
}
}
}
diff --git a/h5/pages/driver/taskDetail.vue b/h5/pages/driver/taskDetail.vue
index 6f15732..9d23139 100644
--- a/h5/pages/driver/taskDetail.vue
+++ b/h5/pages/driver/taskDetail.vue
@@ -27,7 +27,7 @@
<view class="line">
<view class="label">杩愯緭鍗曞彿</view>
<view class="value" @click="showDetail = true">
- <text class="waybill_num">{{param.code}}</text>
+ <text class="waybill_num">{{param.billCode}}</text>
<text class="btn">杩愬崟璇︽儏</text>
</view>
</view>
diff --git a/pda/manifest.json b/pda/manifest.json
index 9b5c102..c6e620f 100644
--- a/pda/manifest.json
+++ b/pda/manifest.json
@@ -18,8 +18,8 @@
"proxy": {
"/gateway_interface": {
// 杩欎釜瀛楁鍚嶉渶涓庝綘閰嶇疆鐨刡asePrefixUrl涓�鑷达紝绯荤粺璇嗗埆鍒板甫鏈�/dev-api璇锋眰鐨勫湴鍧�鏃讹紝浼氬湪鍓嶉潰鎷兼帴涓婁唬鐞嗘湇鍔″櫒鍦板潃
- "target" : "http://10.50.250.178:8088/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
- // "target": "http://192.168.0.139:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+ // "target" : "http://10.50.250.178:8088/gateway_interface", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
+ "target": "http://192.168.0.100:10010", // 浠g悊鏈嶅姟鍣ㄥ煙鍚嶆垨IP鍦板潃
"changeOrigin": true, // 鍏佽璺ㄥ煙
"pathRewrite": {
"^/gateway_interface": "" // 閲嶅啓鍦板潃锛屽鏋滃疄闄呮帴鍙d腑鏄笉甯�/dev-api锛岄渶瑕佸皢杩欎釜鍓嶇紑缃┖锛屽洜涓鸿繖涓墠缂�鍙槸涓轰簡璇嗗埆鐢紝璇嗗埆瀹屼箣鍚庡氨娌$敤浜�
--
Gitblit v1.9.3