From 41d11d9db46ccd44163860f6be6bfd2137aff369 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 07 一月 2025 09:16:48 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
h5/pages/staffLogin/login.vue | 704 ++++++++++++++++++++---------------
h5/api/driver.js | 12
h5/pages/waybill/home.vue | 66 ++
h5/pages/driver/forgetPsd.vue | 2
h5/pages/driver/reservedDetail.vue | 2
screen/src/views/LogisticsEfficiency.vue | 40 ++
screen/src/assets/images/ic_jiankong@2x.png | 0
h5/pages/wdata/home.vue | 6
h5/store/index.js | 7
admin/src/views/index.vue | 2
h5/pages/waybill/list.vue | 63 ++
screen/src/views/LogisticsCenter.vue | 25
h5/api/staff.js | 7
h5/pages/driver/reservedRecord.vue | 16
admin/src/components/common/CommonHeader.vue | 2
h5/App.vue | 5
h5/pages/driver/login.vue | 209 +++++++--
screen/src/views/EnergyConsum.vue | 18
admin/src/components/business/OperaProblemsWindow.vue | 1
h5/pages/driver/register.vue | 2
20 files changed, 771 insertions(+), 418 deletions(-)
diff --git a/admin/src/components/business/OperaProblemsWindow.vue b/admin/src/components/business/OperaProblemsWindow.vue
index 0a61331..3ea89b9 100644
--- a/admin/src/components/business/OperaProblemsWindow.vue
+++ b/admin/src/components/business/OperaProblemsWindow.vue
@@ -86,6 +86,7 @@
],
answer: '',
sortnu: '',
+ score: '',
type: 0,
scroe:null,
useType: 1
diff --git a/admin/src/components/common/CommonHeader.vue b/admin/src/components/common/CommonHeader.vue
index 2a784ef..5b49084 100644
--- a/admin/src/components/common/CommonHeader.vue
+++ b/admin/src/components/common/CommonHeader.vue
@@ -224,7 +224,7 @@
}
let argus = JSON.stringify(params)
myWindow.postMessage('{"method":"goToApp","argument":' + argus + '}', '*')
- }, 3000)
+ }, 8000)
},
// 纭畾淇敼瀵嗙爜
confirmChangePwd() {
diff --git a/admin/src/views/index.vue b/admin/src/views/index.vue
index f97c7b7..f1d8dd4 100644
--- a/admin/src/views/index.vue
+++ b/admin/src/views/index.vue
@@ -332,7 +332,7 @@
}
// const argus = JSON.stringify(params)
myWindow.postMessage('{"method":"goToApp","argument":' + row.param5 + '}', '*')
- }, 3000)
+ }, 8000)
})
},
SubSuccess (str) {
diff --git a/h5/App.vue b/h5/App.vue
index 5ce65e1..0bf9fc9 100644
--- a/h5/App.vue
+++ b/h5/App.vue
@@ -4,13 +4,16 @@
onLaunch: function () {
window.addEventListener("popstate", (event) => {
const path = this.$route.fullPath
+ // console.log('path', path);
if(path == '/pages/login/login' || path == '/'){
window.location.href = app_url
}
- // console.log('path', path);
if(path == '/pages/wdata/home'){
window.location.href = 'https://atwl.ahzyssl.com/zhyq_h5/#/pages/wdata/home'
}
+ if(path == '/pages/waybill/home'){
+ window.location.href = 'https://atwl.ahzyssl.com/zhyq_h5/#/pages/waybill/home'
+ }
})
console.log('onLaunch')
},
diff --git a/h5/api/driver.js b/h5/api/driver.js
index b2ce4c6..858578a 100644
--- a/h5/api/driver.js
+++ b/h5/api/driver.js
@@ -16,6 +16,14 @@
data
})
}
+// 鍙告満鐧诲綍
+export const loginDriverByPhone = (data) => {
+ return http({
+ url: 'loginDriverByPhone',
+ method: 'post',
+ data
+ })
+}
// 鍙告満楠岃瘉鐮佺櫥褰�
export const loginDriverWithCode = (data) => {
return http({
@@ -129,9 +137,9 @@
data
})
}
-export const validPhoneCaptcha = (data) => {
+export const loginGkUserWithCode = (data) => {
return http({
- url: 'visitsAdmin/cloudService/business/smsEmail/validPhoneCaptcha',
+ url: 'loginGkUserWithCode',
method: 'post',
data
})
diff --git a/h5/api/staff.js b/h5/api/staff.js
index b7c9605..56bb771 100644
--- a/h5/api/staff.js
+++ b/h5/api/staff.js
@@ -8,6 +8,13 @@
data
})
}
+export const loginH5ByPhone = (data) => {
+ return http({
+ url: 'loginH5ByPhone',
+ method: 'post',
+ data
+ })
+}
export const loginCaptcha = () => {
return http({
url: 'captcha',
diff --git a/h5/pages/driver/forgetPsd.vue b/h5/pages/driver/forgetPsd.vue
index b2d5c36..acb83b1 100644
--- a/h5/pages/driver/forgetPsd.vue
+++ b/h5/pages/driver/forgetPsd.vue
@@ -57,7 +57,7 @@
onLoad(option) {
if(option.phone){
- this.$set(this.form, 'phone', option.phone)
+ this.$set(this.form, 'phone', option.phone || '')
}
},
diff --git a/h5/pages/driver/login.vue b/h5/pages/driver/login.vue
index 99240e5..28c5d00 100644
--- a/h5/pages/driver/login.vue
+++ b/h5/pages/driver/login.vue
@@ -3,18 +3,44 @@
<image class="login_bg" src="@/static/login_bg@2x.png" mode="widthFix" />
<image class="login_logo" src="@/static/logo@2x.png" mode="widthFix" />
<view class="login_title">瀹夋嘲鐗╂祦鏅烘収鍥尯</view>
- <view class="login_title">鐗╂祦杞﹀徃鏈虹櫥褰�</view>
+ <view class="login_title">鐗╂祦杞﹀徃鏈虹櫥褰�</view>
+ <view class="tabs">
+ <view class="tab" @click="tabsClick(0)" :class="{active: activeTab == 0 }"><view>璐﹀彿鐧诲綍</view><view class="bor"></view></view>
+ <view class="tab" @click="tabsClick(1)" :class="{active: activeTab == 1 }"><view>楠岃瘉鐮佺櫥褰�</view><view class="bor"></view></view>
+ </view>
<view class="login_list">
- <view class="login_list_item">
- <image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
- <input v-model="form.username" type="tel" @focus="showKeyboard = true" @blur="showKeyboard = false"
- maxlength="18" placeholder="鎵嬫満鍙�" />
- </view>
- <view class="login_list_item">
- <image src="@/static/login_ic_password@2x.png" mode="widthFix" />
- <input v-model="form.password" @focus="showKeyboard = true" @blur="showKeyboard = false" type="password"
- placeholder="瀵嗙爜" />
- </view>
+ <template v-if="activeTab == 0">
+ <view class="login_list_item">
+ <image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
+ <input v-model="form.username" type="tel" @focus="showKeyboard = true" @blur="showKeyboard = false"
+ maxlength="18" placeholder="璐﹀彿" />
+ </view>
+ <view class="login_list_item">
+ <image src="@/static/login_ic_password@2x.png" mode="widthFix" />
+ <input v-model="form.password" @focus="showKeyboard = true" @blur="showKeyboard = false" type="password"
+ placeholder="瀵嗙爜" />
+ </view>
+ </template>
+ <template v-else>
+ <view class="login_list_item">
+ <image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
+ <input v-model="form.phone" type="tel" @focus="showKeyboard = true" @blur="showKeyboard = false"
+ :maxlength="18" placeholder="鎵嬫満鍙�" />
+ </view>
+ <view class="login_list_item">
+ <image src="@/static/ic_captcha.png" mode="widthFix"></image>
+ <input
+ v-model="form.code"
+ placeholder="璇疯緭鍏ラ獙璇佺爜"
+ :maxlength="6"
+ type="number"
+ />
+ <text class="captcha" v-if="countDown == 0" @click="initCaptcha"
+ >鑾峰彇楠岃瘉鐮�</text
+ >
+ <text class="placeholder9" v-else>{{ countDown }}</text>
+ </view>
+ </template>
</view>
<view class="login_btn">
<view class="login_btn_n" @click="onLogin">绔嬪嵆鐧诲綍</view>
@@ -32,7 +58,9 @@
import {
driverLogin,
loginCaptcha,
- getUserInfo
+ getUserInfo,
+ sendSms,
+ loginDriverByPhone
} from '@/api'
import {
mapState,
@@ -42,18 +70,19 @@
data() {
return {
form: {
- username: '',
- password: ''
+ username: null,
+ phone: null,
+ password: null
},
isShowProtocol: false,
showKeyboard: false,
countDown: 0,
+ activeTab: 0,
ywinfo: {}
}
},
onLoad() {
- this.initCaptcha()
const ywinfo = uni.getStorageSync('ywinfo') || {}
if (ywinfo.ywid && ywinfo.type == 0) {
this.ywinfo = ywinfo
@@ -61,60 +90,96 @@
}
},
- methods: {
+ methods: {
+ onLogin() {
+ const {
+ form,activeTab
+ } = this
+ if(activeTab == 0){
+ if (!form.username) return uni.showToast({
+ title: '璐﹀彿涓嶈兘涓虹┖',
+ icon: 'none'
+ })
+ if (!form.password) return uni.showToast({
+ title: '瀵嗙爜涓嶈兘涓虹┖',
+ icon: 'none'
+ })
+ }else{
+ if (!form.phone) return uni.showToast({
+ title: '鎵嬫満鍙蜂笉鑳戒负绌�',
+ icon: 'none'
+ })
+ if (!form.code) return uni.showToast({
+ title: '楠岃瘉鐮佷笉鑳戒负绌�',
+ icon: 'none'
+ })
+ }
+ let fn = activeTab == 0 ? driverLogin : loginDriverByPhone
+ fn({
+ ...form,
+ openid: this.$store.state.openId,
+ }).then(res => {
+ if (res.code === 200) {
+ this.setToken(res.data)
+ getUserInfo().then(ress => {
+ setTimeout(() => {
+ this.showToast('鐧诲綍鎴愬姛')
+ })
+ uni.setStorageSync('ywinfo', this.ywinfo)
+ this.setDriverInfo(ress.data)
+ uni.redirectTo({
+ url: "/pages/driver/index"
+ })
+ })
+ }
+ })
+ },
...mapMutations(["setToken", "setDriverInfo"]),
handleRegister() {
uni.navigateTo({
url: "/pages/driver/register"
})
+ },
+ tabsClick(val) {
+ this.activeTab = val
+ if(val == 0){
+ this.form.username = this.form.username || this.form.phone
+ this.form.phone = null
+ this.form.code = null
+ }else{
+ this.form.phone = this.form.username || this.form.phone
+ this.form.password = null
+ this.form.username = null
+ }
},
- handleSetPsd() {
- uni.navigateTo({
- url: "/pages/driver/forgetPsd?phone=" + this.form.username
- })
+ handleSetPsd() {
+ if(this.form.username || this.form.phone){
+ uni.navigateTo({
+ url: "/pages/driver/forgetPsd?phone=" + this.form.username || this.form.phone || ''
+ })
+ }else{
+ uni.navigateTo({
+ url: "/pages/driver/forgetPsd"
+ })
+ }
+
},
dealChange(e) {
console.log(e)
},
initCaptcha() {
- loginCaptcha().then(res => {
- this.captcha = res.data
+ if (!this.form.phone) return uni.showToast({
+ title: '鎵嬫満鍙蜂笉鑳戒负绌�',
+ icon: 'none'
+ })
+ sendSms({ phone: this.form.phone }).then(res => {
+ this.countDown = 60
+ setInterval(() => {
+ if (this.countDown == 0) return
+ this.countDown--
+ }, 1000)
})
},
-
- onLogin() {
- const {
- form
- } = this
- if (!form.username) return uni.showToast({
- title: '鎵嬫満鍙蜂笉鑳戒负绌�',
- icon: 'none'
- })
- if (!form.password) return uni.showToast({
- title: '瀵嗙爜涓嶈兘涓虹┖',
- icon: 'none'
- })
- driverLogin({
- ...form,
- uuid: this.captcha.uuid,
- openid: this.$store.state.openId,
- code: '1'
- }).then(res => {
- if (res.code === 200) {
- this.setToken(res.data)
- getUserInfo().then(ress => {
- setTimeout(() => {
- this.showToast('鐧诲綍鎴愬姛')
- })
- uni.setStorageSync('ywinfo', this.ywinfo)
- this.setDriverInfo(ress.data)
- uni.redirectTo({
- url: "/pages/driver/index"
- })
- })
- }
- })
- }
}
}
</script>
@@ -150,9 +215,34 @@
font-weight: 600;
color: #333333;
}
-
+ .tabs{
+ display: flex;
+ align-items: center;
+ justify-content: space-evenly;
+ width: 530rpx;
+ margin: 48rpx auto 0rpx;
+ .tab{
+ font-size: 30rpx;
+ color: #666666;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ height: 52rpx;
+ line-height: 36rpx;
+ }
+ .active{
+ font-weight: bold;
+ font-size: 34rpx;
+ color: #222222;
+ .bor{
+ width: 80rpx;
+ height: 8rpx;
+ background: linear-gradient(to bottom, #4d99a8, #a3c8d4);
+ }
+ }
+ }
.login_list {
- margin-top: 60rpx;
+ margin-top: 36rpx;
width: 100%;
padding: 0 60rpx;
box-sizing: border-box;
@@ -180,7 +270,8 @@
}
.captcha {
- color: $uni-color-primary;
+ color: $uni-color-primary;
+ font-size: 30rpx;
}
input {
diff --git a/h5/pages/driver/register.vue b/h5/pages/driver/register.vue
index 3221f3a..743db75 100644
--- a/h5/pages/driver/register.vue
+++ b/h5/pages/driver/register.vue
@@ -3,7 +3,7 @@
<image class="login_bg" src="@/static/login_bg@2x.png" />
<image class="login_logo" src="@/static/logo@2x.png" mode="widthFix" />
<view class="login_title">瀹夋嘲鐗╂祦鏅烘収鍥尯</view>
- <view class="login_title">鐗╂祦杞﹀徃鏈虹櫥褰�</view>
+ <view class="login_title">鐗╂祦杞﹀徃鏈�</view>
<view class="login_list">
<view class="login_list_item">
<image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
diff --git a/h5/pages/driver/reservedDetail.vue b/h5/pages/driver/reservedDetail.vue
index 911f0f0..6f86053 100644
--- a/h5/pages/driver/reservedDetail.vue
+++ b/h5/pages/driver/reservedDetail.vue
@@ -145,6 +145,8 @@
if (res.confirm) {
driverCarRevoke({
id: info.id, info: ''
+ }).then(() => {
+ this.getDetail(info.id)
})
} else if (res.cancel) {
console.log('鐢ㄦ埛鐐瑰嚮鍙栨秷');
diff --git a/h5/pages/driver/reservedRecord.vue b/h5/pages/driver/reservedRecord.vue
index 91c20e3..6876112 100644
--- a/h5/pages/driver/reservedRecord.vue
+++ b/h5/pages/driver/reservedRecord.vue
@@ -47,7 +47,7 @@
isShowDate: false,
param: {},
page: 1,
- capacity: 10,
+ capacity: 20,
total: 0,
datalist: [],
statusMap: {
@@ -59,8 +59,18 @@
}
}
},
- created() {
+ 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() {
@@ -68,7 +78,7 @@
driverApplyRecord({
page, capacity,model: {}
}).then(res => {
- this.datalist = res.data.records
+ this.datalist = [...this.datalist, ...res.data.records]
this.total = res.data.total
})
},
diff --git a/h5/pages/staffLogin/login.vue b/h5/pages/staffLogin/login.vue
index af0b5a4..6c5aafd 100644
--- a/h5/pages/staffLogin/login.vue
+++ b/h5/pages/staffLogin/login.vue
@@ -1,302 +1,404 @@
-<template>
- <view class="login" :style="{height: windowHeight + 'px'}">
- <image class="login_bg" src="@/static/login_bg@2x.png" mode="widthFix" />
- <image class="login_logo" src="@/static/logo@2x.png" mode="widthFix" />
- <view class="login_title">瀹夋嘲鐗╂祦鏅烘収鍥尯</view>
- <view class="login_list">
- <view class="login_list_item">
- <image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
- <input v-model="form.username" type="number" maxlength="18" @focus="showKeyboard = true" @blur="showKeyboard = false" placeholder="璐﹀彿" />
- </view>
- <view class="login_list_item">
- <image src="@/static/login_ic_password@2x.png" mode="widthFix" />
- <input v-model="form.password" @focus="showKeyboard = true" @blur="showKeyboard = false" type="password" placeholder="瀵嗙爜" />
- </view>
- <view class="login_list_item">
- <image src="@/static/ic_captcha.png" mode="widthFix"></image>
- <input v-model="form.code" @focus="showKeyboard = true" @blur="showKeyboard = false" placeholder="楠岃瘉鐮�" type="text" />
- <image
- @click="initCaptcha"
- :src="captcha.image"
- class="captcha"
- mode="widthFix"
- />
- </view>
- </view>
- <view class="login_btn">
- <view class="login_btn_n" @click="onLogin">绔嬪嵆鐧诲綍</view>
- <view @click="$jump('/pages/staffLogin/forgetPsd')" class="for_psd"
- >蹇樿瀵嗙爜</view
- >
- </view>
-
- <view class="deal_wrap">
- <image
- @click="changeFalg"
- v-if="ProtocolFlag"
- src="@/static/checkbox_sel@2x.png"
- mode="widthFix"
- class="checked"
- ></image>
- <image
- @click="changeFalg"
- v-if="!ProtocolFlag"
- src="@/static/meeting/icon/ic_choose@2x.png"
- mode="widthFix"
- class="checked"
-
- ></image>
- <text>鐧诲綍鍗冲悓鎰�</text>
- <text class="deal" @click="showContent">銆婂畨娉扮墿娴佺敤鎴峰崗璁��</text>
- </view>
- <!-- -->
- <u-popup
- :show="isShowProtocol"
- @close="isShowProtocol = false"
- closeable
- :round="8"
- mode="center"
- >
- <view class="modal">
- <!-- <view v-html="htmlText"></view> -->
- <view class="content">
- <mp-html :content="htmlText" />
- </view>
- </view>
- </u-popup>
- </view>
-</template>
-
-<script>
-import { loginPost, loginCaptcha, getUserInfo, getSystemDictData, saveHkUserOpenid } from '@/api'
-import { mapState, mapMutations } from 'vuex'
-export default {
- name: 'login',
-
- data() {
- return {
- form: {
- // username: '18056814089',
- username: '',
- password: '',
- code: ''
- },
- showKeyboard: false,
- isShowProtocol: false,
- ProtocolFlag: false,
- captcha: {},
- htmlText: '',
- windowHeight: '',
-
- ywinfo: {}
- }
- },
-
- onLoad() {
- this.initCaptcha()
- const result = uni.getWindowInfo()
- this.windowHeight = result.windowHeight
-
- const ywinfo = uni.getStorageSync('ywinfo') || {}
- if (ywinfo.ywid && ywinfo.type == 2) {
- this.ywinfo = ywinfo
- uni.setStorageSync('ywinfo', {})
- }
- },
- onBackPress(options) {
- uni.redirectTo({
- url: '/pages/login/login'
- })
- return true
- },
- methods: {
- ...mapMutations(["setToken", "setUserInfo"]),
- changeFalg() {
- this.ProtocolFlag = !this.ProtocolFlag
- },
- getContent() {
- getSystemDictData({
- dictCode: 'SYSTEM',
- label: 'USER_PROTOCOL'
- }).then(res => {
- this.htmlText = res.data.code
- this.isShowProtocol = true
- })
- },
- showContent() {
- this.getContent()
- },
- initCaptcha() {
- loginCaptcha().then(res => {
- this.captcha = res.data
- })
- },
-
- onLogin() {
- const { form, ProtocolFlag } = this
- if (!ProtocolFlag) return uni.showToast({
- title: '璇峰厛闃呰骞跺悓鎰忕敤鎴峰崗璁�',
- icon: 'none'
- })
- if (!form.username) return uni.showToast({
- title: '璐﹀彿涓嶈兘涓虹┖',
- icon: 'none'
- })
- if (!form.password) return uni.showToast({
- title: '瀵嗙爜涓嶈兘涓虹┖',
- icon: 'none'
- })
- if (!form.code) return uni.showToast({
- title: '楠岃瘉鐮佷笉鑳戒负绌�',
- icon: 'none'
- })
- loginPost({
- ...form,
- uuid: this.captcha.uuid,
- openid: this.$store.state.openId
- }).then(res => {
- if (res.code === 200) {
- this.setToken(res.data)
- getUserInfo().then(ress => {
- uni.setStorageSync('ywinfo', this.ywinfo)
- this.setUserInfo(ress.data)
- uni.redirectTo({
- url: "/pages/staff/index"
- })
- })
- saveHkUserOpenid({})
- }else{
- this.initCaptcha()
+<template>
+ <view class="login" :style="{height: windowHeight + 'px'}">
+ <image class="login_bg" src="@/static/login_bg@2x.png" mode="widthFix" />
+ <image class="login_logo" src="@/static/logo@2x.png" mode="widthFix" />
+ <view class="login_title">瀹夋嘲鐗╂祦鏅烘収鍥尯</view>
+ <view class="tabs">
+ <view class="tab" @click="tabsClick(0)" :class="{active: activeTab == 0 }">
+ <view>璐﹀彿鐧诲綍</view>
+ <view class="bor"></view>
+ </view>
+ <view class="tab" @click="tabsClick(1)" :class="{active: activeTab == 1 }">
+ <view>楠岃瘉鐮佺櫥褰�</view>
+ <view class="bor"></view>
+ </view>
+ </view>
+ <view class="login_list">
+ <template v-if="activeTab == 0">
+ <view class="login_list_item">
+ <image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
+ <input v-model="form.username" type="number" maxlength="18" @focus="showKeyboard = true"
+ @blur="showKeyboard = false" placeholder="璐﹀彿" />
+ </view>
+ <view class="login_list_item">
+ <image src="@/static/login_ic_password@2x.png" mode="widthFix" />
+ <input v-model="form.password" @focus="showKeyboard = true" @blur="showKeyboard = false" type="password"
+ placeholder="瀵嗙爜" />
+ </view>
+ </template>
+ <template v-else>
+ <view class="login_list_item">
+ <image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
+ <input v-model="form.phone" type="tel" @focus="showKeyboard = true" @blur="showKeyboard = false"
+ :maxlength="18" placeholder="鎵嬫満鍙�" />
+ </view>
+ <view class="login_list_item">
+ <image src="@/static/ic_captcha.png" mode="widthFix"></image>
+ <input v-model="form.code" placeholder="璇疯緭鍏ラ獙璇佺爜" :maxlength="6" type="number" />
+ <text class="captcha" v-if="countDown == 0" @click="initCaptcha">鑾峰彇楠岃瘉鐮�</text>
+ <text class="placeholder9" v-else>{{ countDown }}</text>
+ </view>
+ </template>
+ <!-- <view class="login_list_item">
+ <image src="@/static/ic_captcha.png" mode="widthFix"></image>
+ <input v-model="form.code" @focus="showKeyboard = true" @blur="showKeyboard = false" placeholder="楠岃瘉鐮�" type="text" />
+ <image
+ @click="initCaptcha"
+ :src="captcha.image"
+ class="captcha"
+ mode="widthFix"
+ />
+ </view> -->
+ </view>
+ <view class="login_btn">
+ <view class="login_btn_n" @click="onLogin">绔嬪嵆鐧诲綍</view>
+ <view @click="$jump('/pages/staffLogin/forgetPsd')" class="for_psd">蹇樿瀵嗙爜</view>
+ </view>
+
+ <view class="deal_wrap">
+ <image @click="changeFalg" v-if="ProtocolFlag" src="@/static/checkbox_sel@2x.png" mode="widthFix" class="checked">
+ </image>
+ <image @click="changeFalg" v-if="!ProtocolFlag" src="@/static/meeting/icon/ic_choose@2x.png" mode="widthFix"
+ class="checked"></image>
+ <text>鐧诲綍鍗冲悓鎰�</text>
+ <text class="deal" @click="showContent">銆婂畨娉扮墿娴佺敤鎴峰崗璁��</text>
+ </view>
+ <!-- -->
+ <u-popup :show="isShowProtocol" @close="isShowProtocol = false" closeable :round="8" mode="center">
+ <view class="modal">
+ <!-- <view v-html="htmlText"></view> -->
+ <view class="content">
+ <mp-html :content="htmlText" />
+ </view>
+ </view>
+ </u-popup>
+ </view>
+</template>
+
+<script>
+ import {
+ loginPost,
+ loginH5ByPhone,
+ getUserInfo,
+ getSystemDictData,
+ saveHkUserOpenid,
+ sendSms
+ } from '@/api'
+ import {
+ mapState,
+ mapMutations
+ } from 'vuex'
+ export default {
+ name: 'login',
+
+ data() {
+ return {
+ form: {
+ // username: '18655749830',
+ username: null,
+ phone: null,
+ password: null,
+ code: null
+ },
+ showKeyboard: false,
+ isShowProtocol: false,
+ ProtocolFlag: false,
+ captcha: {},
+ htmlText: '',
+ windowHeight: '',
+
+ countDown: 0,
+ activeTab: 0,
+
+ ywinfo: {}
+ }
+ },
+
+ onLoad() {
+ const result = uni.getWindowInfo()
+ this.windowHeight = result.windowHeight
+
+ const ywinfo = uni.getStorageSync('ywinfo') || {}
+ if (ywinfo.ywid && ywinfo.type == 2) {
+ this.ywinfo = ywinfo
+ uni.setStorageSync('ywinfo', {})
+ }
+ },
+ onBackPress(options) {
+ uni.redirectTo({
+ url: '/pages/login/login'
+ })
+ return true
+ },
+ methods: {
+ onLogin() {
+ const {
+ form,
+ ProtocolFlag,
+ activeTab
+ } = this
+ if (!ProtocolFlag) return uni.showToast({
+ title: '璇峰厛闃呰骞跺悓鎰忕敤鎴峰崗璁�',
+ icon: 'none'
+ })
+ if (activeTab == 0) {
+ if (!form.username) return uni.showToast({
+ title: '璐﹀彿涓嶈兘涓虹┖',
+ icon: 'none'
+ })
+ if (!form.password) return uni.showToast({
+ title: '瀵嗙爜涓嶈兘涓虹┖',
+ icon: 'none'
+ })
+ } else {
+ if (!form.phone) return uni.showToast({
+ title: '鎵嬫満鍙蜂笉鑳戒负绌�',
+ icon: 'none'
+ })
+ if (!form.code) return uni.showToast({
+ title: '楠岃瘉鐮佷笉鑳戒负绌�',
+ icon: 'none'
+ })
}
- })
- }
- }
-}
-</script>
-
-<style lang="scss" scoped>
-.login {
- width: 100%;
- display: flex;
- padding-top: 130rpx;
- box-sizing: border-box;
- align-items: center;
- flex-direction: column;
- position: relative;
- background: linear-gradient(
- 180deg,
- rgba(39, 155, 170, 0.2) 0%,
- rgba(39, 155, 170, 0) 100%
- );
- .login_logo {
- width: 180rpx;
- height: 180rpx;
- }
- .login_bg {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- z-index: -1;
- }
- .login_title {
- font-size: 44rpx;
- font-weight: 600;
- color: #333333;
- margin-top: 40rpx;
- margin-bottom: 80rpx;
- }
- .login_list {
- width: 100%;
- padding: 0 60rpx;
- box-sizing: border-box;
- .login_list_item {
- width: 100%;
- border-radius: 50rpx;
- height: 98rpx;
- padding: 0 40rpx;
- box-sizing: border-box;
- background: #ffffff;
- margin-bottom: 40rpx;
- display: flex;
- align-items: center;
- justify-content: space-between;
- &:last-child {
- margin-bottom: 0 !important;
- }
- image {
- flex-shrink: 0;
- width: 40rpx;
- height: 40rpx;
- }
- .captcha {
- width: 200rpx;
- }
- input {
- flex: 1;
- height: 100%;
- color: #666666;
- margin-left: 24rpx;
- border: none;
- }
- }
- }
- .login_btn {
- width: 100%;
- padding: 0 60rpx;
- box-sizing: border-box;
- margin-top: 60rpx;
- .for_psd {
- color: $uni-color-primary;
- width: 140rpx;
- text-align: center;
- margin: 40rpx auto;
- }
- .login_btn_n {
- width: 100%;
- height: 98rpx;
- background: $uni-color-primary;
- box-shadow: 0rpx 12rpx 24rpx 0rpx rgba(39, 155, 170, 0.2);
- display: flex;
- align-items: center;
- justify-content: center;
- font-weight: 600;
- font-size: 32rpx;
- color: #ffffff;
- border-radius: 50rpx;
- }
- }
- .deal_wrap {
- position: absolute;
- width: 100%;
- left: 0;
- text-align: center;
- bottom: 48rpx;
- display: flex;
- justify-content: center;
- align-items: center;
- .deal {
- color: $uni-color-primary;
- }
- .checked {
- width: 48rpx;
- margin-right: 12rpx;
- }
- }
- .rela_wrap{
- position: relative;
- margin-top: 360rpx;
- }
-}
-.modal {
- width: 690rpx;
- max-height: 80vh;
- border-radius: 24rpx;
- padding: 30rpx 30rpx;
- overflow: auto;
- // .content{
- // height: 100%;
- // overflow: auto;
- // }
-}
-</style>
+ let fn = activeTab == 0 ? loginPost : loginH5ByPhone
+ fn({
+ ...form,
+ openid: this.$store.state.openId
+ }).then(res => {
+ if (res.code === 200) {
+ this.setToken(res.data)
+ getUserInfo().then(ress => {
+ uni.setStorageSync('ywinfo', this.ywinfo)
+ this.setUserInfo(ress.data)
+ uni.redirectTo({
+ url: "/pages/staff/index"
+ })
+ })
+ saveHkUserOpenid({})
+ } else {
+ this.initCaptcha()
+ }
+ })
+ },
+ ...mapMutations(["setToken", "setUserInfo"]),
+ tabsClick(val) {
+ this.activeTab = val
+ if (val == 0) {
+ this.form.username = this.form.username || this.form.phone
+ this.form.phone = null
+ this.form.code = null
+ } else {
+ this.form.phone = this.form.username || this.form.phone
+ this.form.password = null
+ this.form.username = null
+ }
+ },
+ changeFalg() {
+ this.ProtocolFlag = !this.ProtocolFlag
+ },
+ getContent() {
+ getSystemDictData({
+ dictCode: 'SYSTEM',
+ label: 'USER_PROTOCOL'
+ }).then(res => {
+ this.htmlText = res.data.code
+ this.isShowProtocol = true
+ })
+ },
+ showContent() {
+ this.getContent()
+ },
+ initCaptcha() {
+ if (!this.form.phone) return uni.showToast({
+ title: '鎵嬫満鍙蜂笉鑳戒负绌�',
+ icon: 'none'
+ })
+ sendSms({
+ phone: this.form.phone
+ }).then(res => {
+ this.countDown = 60
+ setInterval(() => {
+ if (this.countDown == 0) return
+ this.countDown--
+ }, 1000)
+ })
+ }
+ }
+ }
+</script>
+
+<style lang="scss" scoped>
+ .login {
+ width: 100%;
+ display: flex;
+ padding-top: 130rpx;
+ box-sizing: border-box;
+ align-items: center;
+ flex-direction: column;
+ position: relative;
+ background: linear-gradient(180deg,
+ rgba(39, 155, 170, 0.2) 0%,
+ rgba(39, 155, 170, 0) 100%);
+
+ .login_logo {
+ width: 180rpx;
+ height: 180rpx;
+ }
+
+ .login_bg {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ z-index: -1;
+ }
+
+ .login_title {
+ font-size: 44rpx;
+ font-weight: 600;
+ color: #333333;
+ margin-top: 40rpx;
+ }
+
+ .tabs {
+ display: flex;
+ align-items: center;
+ justify-content: space-evenly;
+ width: 530rpx;
+ margin: 60rpx auto 42rpx;
+
+ .tab {
+ font-size: 30rpx;
+ color: #666666;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ height: 52rpx;
+ line-height: 36rpx;
+ }
+
+ .active {
+ font-weight: bold;
+ font-size: 34rpx;
+ color: #222222;
+
+ .bor {
+ width: 80rpx;
+ height: 8rpx;
+ background: linear-gradient(to bottom, #4d99a8, #a3c8d4);
+ }
+ }
+ }
+
+ .login_list {
+ width: 100%;
+ padding: 0 60rpx;
+ box-sizing: border-box;
+
+ .login_list_item {
+ width: 100%;
+ border-radius: 50rpx;
+ height: 98rpx;
+ padding: 0 40rpx;
+ box-sizing: border-box;
+ background: #ffffff;
+ margin-bottom: 40rpx;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+
+ &:last-child {
+ margin-bottom: 0 !important;
+ }
+
+ .captcha {
+ color: $uni-color-primary;
+ font-size: 30rpx;
+ }
+
+ image {
+ flex-shrink: 0;
+ width: 40rpx;
+ height: 40rpx;
+ }
+
+ .captcha {
+ width: 200rpx;
+ }
+
+ input {
+ flex: 1;
+ height: 100%;
+ color: #666666;
+ margin-left: 24rpx;
+ border: none;
+ }
+ }
+ }
+
+ .login_btn {
+ width: 100%;
+ padding: 0 60rpx;
+ box-sizing: border-box;
+ margin-top: 60rpx;
+
+ .for_psd {
+ color: $uni-color-primary;
+ width: 140rpx;
+ text-align: center;
+ margin: 40rpx auto;
+ }
+
+ .login_btn_n {
+ width: 100%;
+ height: 98rpx;
+ background: $uni-color-primary;
+ box-shadow: 0rpx 12rpx 24rpx 0rpx rgba(39, 155, 170, 0.2);
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: 600;
+ font-size: 32rpx;
+ color: #ffffff;
+ border-radius: 50rpx;
+ }
+ }
+
+ .deal_wrap {
+ position: absolute;
+ width: 100%;
+ left: 0;
+ text-align: center;
+ bottom: 48rpx;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ .deal {
+ color: $uni-color-primary;
+ }
+
+ .checked {
+ width: 48rpx;
+ margin-right: 12rpx;
+ }
+ }
+
+ .rela_wrap {
+ position: relative;
+ margin-top: 360rpx;
+ }
+ }
+
+ .modal {
+ width: 690rpx;
+ max-height: 80vh;
+ border-radius: 24rpx;
+ padding: 30rpx 30rpx;
+ overflow: auto;
+ // .content{
+ // height: 100%;
+ // overflow: auto;
+ // }
+ }
+</style>
\ No newline at end of file
diff --git a/h5/pages/waybill/home.vue b/h5/pages/waybill/home.vue
index dc5d12e..b1cead8 100644
--- a/h5/pages/waybill/home.vue
+++ b/h5/pages/waybill/home.vue
@@ -30,7 +30,7 @@
</template>
<script>
- import { sendSms, validPhoneCaptcha } from '@/api'
+ import { sendSms, loginGkUserWithCode, wxAuthorizea, getUserInfo } from '@/api'
export default {
data() {
return {
@@ -38,24 +38,76 @@
code: '',
phone: ''
},
- countDown: 0
+ countDown: 0,
+
+ code: ''
};
+ },
+ onShow() {
+ var that = this
+ let url = 'https://atwl.ahzyssl.com/zhyq_h5/#/pages/waybill/home'
+ let code = ''
+ if (window.location.href.indexOf('code=') !== -1 || this.code) {
+ this.userAuth(3)
+ } else {
+ // let url = window.location.href
+ const appID = 'wx173e6caf5abc718a'
+ let uri = encodeURIComponent(url)
+ let authURL =
+ `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appID}&redirect_uri=${uri}&response_type=code&scope=snsapi_base#wechat_redirect`
+ window.location.href = authURL
+ }
},
methods: {
onSubmit() {
const { code, phone } = this.form
if (!phone) return this.showToast('鎵嬫満鍙蜂笉鑳戒负绌�')
if (!code) return this.showToast('楠岃瘉鐮佷笉鑳戒负绌�')
- validPhoneCaptcha({
- phone, code
+ loginGkUserWithCode({
+ phone, code,openid: this.$store.state.openId, userType: 3
}).then(res => {
if (res && res.code == 200) {
- uni.navigateTo({
- url: "/pages/waybill/list?phone=" + phone
- })
+ this.$store.commit('setToken', res.data.token)
+ getUserInfo().then(ress => {
+ this.$store.commit('setWaybillInfo', ress.data)
+ uni.navigateTo({
+ url: '/pages/waybill/list'
+ })
+ })
}
})
},
+ userAuth(source) {
+ var that = this
+ let url = window.location.href
+ let code = ''
+ if (url.indexOf('code=') !== -1 || this.code) {
+ const query = url.split('?')
+ for (const q of query) {
+ if (q.indexOf('code=') !== -1) {
+ let statusIndex = q.indexOf('&state')
+ code = q.substring(q.indexOf('code=') + 5, statusIndex)
+ }
+ }
+ wxAuthorizea({
+ code: code || this.code,
+ source: source
+ }).then(res => {
+ if (res.code === 200) {
+ that.$store.commit('setOpenId', res.data.openid)
+ if (res.data.token) {
+ that.$store.commit('setToken', res.data.token)
+ getUserInfo().then(ress => {
+ that.$store.commit('setWaybillInfo', ress.data)
+ uni.navigateTo({
+ url: '/pages/waybill/list'
+ })
+ })
+ }
+ }
+ })
+ }
+ },
initCaptcha() {
if (!this.form.phone) return uni.showToast({
title: '鎵嬫満鍙蜂笉鑳戒负绌�',
diff --git a/h5/pages/waybill/list.vue b/h5/pages/waybill/list.vue
index 70dd191..3886421 100644
--- a/h5/pages/waybill/list.vue
+++ b/h5/pages/waybill/list.vue
@@ -1,5 +1,9 @@
<template>
- <view class="main_app">
+ <view class="main_app">
+ <view class="title_wrap">
+ <view class="name">{{ waybillInfo.realname || waybillInfo.username || waybillInfo.mobile }}锛屾杩庣櫥褰曪綖</view>
+ <view class="btn" @click="loginOut">閫�鍑虹櫥褰�</view>
+ </view>
<view class="head_wrap" @click="openModal">
<view class="search_box">
<image src="@/static/ic_search@2x.png" class="search" mode=""></image>
@@ -109,7 +113,8 @@
<script>
import {
- orderListTms
+ orderListTms,
+ logoutPost
} from '@/api'
import dayjs from 'dayjs';
export default {
@@ -119,7 +124,8 @@
list: [],
page: 1,
total: 0,
-
+
+ waybillInfo: uni.getStorageSync('waybillInfo'),
showModal: false,
showStarttime: false,
showEndtime: false,
@@ -137,14 +143,11 @@
};
},
onLoad(options) {
- this.$set(this.param, 'phoneNumber', options.phone)
this.getList()
},
methods: {
clear() {
- this.param = {
- phoneNumber: this.param.phoneNumber
- }
+ this.param = {}
this.form = {}
this.page = 1
this.list = []
@@ -154,6 +157,17 @@
diaodu() {
uni.navigateTo({
url: '/pages/staff/signin'
+ })
+ },
+ loginOut() {
+ let app_url = 'https://atwl.ahzyssl.com/zhyq_h5/#/pages/waybill/home'
+ logoutPost({
+ isH5: 1
+ }).then(res => {
+ this.$store.commit('empty')
+ setTimeout(() => {
+ window.location.href = app_url
+ }, 300)
})
},
modalSub() {
@@ -212,11 +226,6 @@
form,
page
} = this
- // if (form.contract) {
- // form.contractNumber = form.contract
- // } else {
- // form.contractNumber = null
- // }
orderListTms({
parameters: {
...param,
@@ -240,6 +249,33 @@
<style lang="scss">
page {
background: #F7F7F7;
+ }
+ .title_wrap {
+ display: flex;
+ justify-content: space-between;
+ // align-items: center;
+ background-color: #fff;
+ width: 750rpx;
+ height: 70rpx;
+ margin: -10rpx -30rpx 0;
+ padding: 12rpx 30rpx;
+ .name {
+ font-weight: 600;
+ font-size: 34rpx;
+ color: #222222;
+ }
+
+ .btn {
+ width: 144rpx;
+ height: 56rpx;
+ border-radius: 36rpx;
+ border: 1rpx solid $uni-color-primary;
+ font-size: 26rpx;
+ color: $uni-color-primary;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ }
}
.head_title{
color: $uni-color-primary;
@@ -290,9 +326,8 @@
.scroll_Y {
background-color: #f7f7f7;
- height: calc(100vh - 180rpx);
+ height: calc(100vh - 250rpx);
margin-top: 10rpx;
-
.main_list {
width: 750rpx;
margin: 0 -30rpx;
diff --git a/h5/pages/wdata/home.vue b/h5/pages/wdata/home.vue
index 4613bb3..db0bc8e 100644
--- a/h5/pages/wdata/home.vue
+++ b/h5/pages/wdata/home.vue
@@ -120,9 +120,9 @@
that.$store.commit('setToken', res.data.token)
getUserInfo().then(ress => {
that.$store.commit('setDriverInfo', ress.data)
- })
- uni.navigateTo({
- url: '/pages/wdata/list'
+ uni.navigateTo({
+ url: '/pages/wdata/list'
+ })
})
}
}
diff --git a/h5/store/index.js b/h5/store/index.js
index 9e5b043..464e8a8 100644
--- a/h5/store/index.js
+++ b/h5/store/index.js
@@ -14,6 +14,7 @@
const time = uni.getStorageSync('time')
const userInfo = uni.getStorageSync('userInfo')
const driverInfo = uni.getStorageSync('driverInfo')
+const waybillInfo = uni.getStorageSync('waybillInfo')
const sessionKey = uni.getStorageSync('sessionKey')
const store = new Vuex.Store({
@@ -27,6 +28,7 @@
time: time || null,
userInfo: userInfo || {},
driverInfo: driverInfo || {},
+ waybillInfo: waybillInfo || {},
height: height || '0',
sessionKey: sessionKey || '',
primaryColor: '#279baa'
@@ -42,6 +44,10 @@
setMember(state, val) {
state.member = val
uni.setStorageSync('member', val)
+ },
+ setWaybillInfo(state, val) {
+ state.waybillInfo = val
+ uni.setStorageSync('waybillInfo', val)
},
// 璁剧疆瀵艰埅鏍忛珮搴�
setHeight(state, val) {
@@ -84,6 +90,7 @@
state.openId = ''
state.userInfo = {}
state.driverInfo = {}
+ state.waybillInfo = {}
}
},
actions: {
diff --git a/screen/src/assets/images/ic_jiankong@2x.png b/screen/src/assets/images/ic_jiankong@2x.png
new file mode 100644
index 0000000..7495067
--- /dev/null
+++ b/screen/src/assets/images/ic_jiankong@2x.png
Binary files differ
diff --git a/screen/src/views/EnergyConsum.vue b/screen/src/views/EnergyConsum.vue
index 6a4ec2a..1071fa2 100644
--- a/screen/src/views/EnergyConsum.vue
+++ b/screen/src/views/EnergyConsum.vue
@@ -143,22 +143,18 @@
</div>
<div class="static" v-if="data1.gasQuantity">
<span class="lab">鍚屾瘮</span>
- <template v-if="data1.gasQuantity.sameNum">
- <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="" />
- </template>
+ <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
* 100).toFixed(1))
}}%</span>
<span class="val" v-else style="margin-left: 4px;">-</span>
<span class="lab">鐜瘮</span>
- <template v-if="data1.gasQuantity.sameNum">
- <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="" />
- </template>
+ <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
* 100).toFixed(1))
@@ -933,7 +929,7 @@
}
.bottom {
- width: 140px;
+ width: 150px;
height: 194px;
position: absolute;
text-align: center;
diff --git a/screen/src/views/LogisticsCenter.vue b/screen/src/views/LogisticsCenter.vue
index 9f37ba8..1f74d2b 100644
--- a/screen/src/views/LogisticsCenter.vue
+++ b/screen/src/views/LogisticsCenter.vue
@@ -148,14 +148,14 @@
<img src="@/assets/images/LogisticsCenter/ic_jinrijihua@2x.png" alt="">
<div class="content">
<div class="name">褰撴棩璁㈠崟閲�</div>
- <div class="num"><span class="blue">{{ cneterData.currentOrderNum }}</span>涓囨敮</div>
+ <div class="num"><span class="blue" v-if="cneterData.currentOrderNum">{{ 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>{{ cneterData.currentPlanNum }}</span>涓囨敮</div>
+ <div class="num"><span v-if="cneterData.currentPlanNum">{{ cneterData.currentPlanNum.toFixed(0) }}</span>绠�</div>
<div class="unit">杞︽锛歿{ cneterData.currentPlanCarNum }}</div>
</div>
</div>
@@ -163,7 +163,7 @@
<img src="@/assets/images/LogisticsCenter/ic_jinrichuku@2x.png" alt="">
<div class="content">
<div class="name">浠婃棩鍑哄簱閲�</div>
- <div class="num"><span class="finish">{{ cneterData.crrentOutNum }}</span>涓囨敮</div>
+ <div class="num"><span v-if="cneterData.crrentOutNum" class="finish">{{ cneterData.crrentOutNum.toFixed(0) }}</span>绠�</div>
<div class="unit">杞︽锛歿{ cneterData.crrentOutCarNum }}</div>
</div>
</div>
@@ -171,7 +171,7 @@
<img src="@/assets/images/LogisticsCenter/ic_jinriweichu@2x.png" alt="">
<div class="content">
<div class="name">鍓╀綑浠诲姟閲�</div>
- <div class="num"><span class="today">{{ cneterData.crrentRestNum }}</span>涓囨敮</div>
+ <div class="num"><span v-if="cneterData.crrentRestNum" class="today">{{ cneterData.crrentRestNum.toFixed(0) }}</span>绠�</div>
<div class="unit">杞︽锛歿{ cneterData.crrentRestCarNum }}</div>
</div>
</div>
@@ -278,7 +278,7 @@
<div class="side">
鍏ㄧ渷锛�
<span>{{ data5.currentNum }}</span>
- <span class="unit">涓囨敮 | </span>
+ <span class="unit">绠� | </span>
<span v-if="data5.totalNum">{{ ((data5.currentNum / data5.totalNum) * 100).toFixed(1) }}%</span>
</div>
</div>
@@ -295,7 +295,7 @@
<div class="side">
鍏ㄧ渷锛�
<span>{{ data6.currentNum }}</span>
- <span class="unit">涓囨敮 | </span>
+ <span class="unit">绠� | </span>
<span v-if="data6.totalNum">{{ ((data6.currentNum / data6.totalNum) * 100).toFixed(1) }}%</span>
</div>
</div>
@@ -658,14 +658,14 @@
<span class="dot bj"></span>
<span class="item-state-num">
<span class="text">鏈湀璋冩嫧閲忥細</span>
- <span class="num">${params.data.monthNum}涓囨敮</span>
+ <span class="num">${params.data.monthNum}绠�</span>
</span>
</div>
<div class="item-state-con">
<span class="dot yj"></span>
<span class="item-state-num">
<span class="text">鏈勾璋冩嫧閲忥細</span>
- <span class="num">${params.data.yearNum}涓囨敮</span>
+ <span class="num">${params.data.yearNum}绠�</span>
</span>
</div>
<div class="item-state-con">
@@ -1240,7 +1240,7 @@
nameTextStyle: {
color: '#869CC9',
},
- name: '涓囨敮',
+ name: '绠�',
nameGap: 16,
type: 'value',
axisLabel: {
@@ -1442,7 +1442,7 @@
}],
yAxis: [
{
- name: '涓囨敮',
+ name: '绠�',
nameGap: 16,
type: 'value',
axisLabel: {
@@ -2159,7 +2159,6 @@
.static_wrap {
display: flex;
justify-content: space-between;
- align-items: center;
margin: 30px 0 14px;
.item {
@@ -2263,7 +2262,7 @@
align-items: center;
justify-content: center;
min-width: 76px;
- border: 1px solid #fff;
+ border: 1px solid #FECE01;
.icon {
position: absolute;
@@ -2280,7 +2279,7 @@
.tag1 {
background-color: #28F0CC;
-
+ border: 1px solid #28F0CC;
.icon {
background-color: #28F0CC;
}
diff --git a/screen/src/views/LogisticsEfficiency.vue b/screen/src/views/LogisticsEfficiency.vue
index 8fcfb75..2a13ff0 100644
--- a/screen/src/views/LogisticsEfficiency.vue
+++ b/screen/src/views/LogisticsEfficiency.vue
@@ -201,6 +201,12 @@
</div>
</div>
</div>
+ <div @click="openCloudAddr" class="monitoring">
+ <img src="@/assets/images/ic_jiankong@2x.png" class="icon" alt="">
+ <div>杞﹁締鐩戞帶骞冲彴</div>
+ <img class="top" src="@/assets/images/SecurityControl/ar_open@2x.png" alt="">
+ </div>
+
</div>
</div>
<div class="right_box">
@@ -850,6 +856,10 @@
})
}
+const openCloudAddr = () => {
+ window.open('https://vms.hikvisionauto.com:8040/', '_blank')
+}
+
const data1 = ref({})
const activeTab1 = ref(0)
@@ -1347,6 +1357,7 @@
overflow: auto;
padding-left: 10px;
padding-bottom: 12px;
+
.line {
font-size: 13px;
color: #D2E0FF;
@@ -1368,6 +1379,35 @@
}
}
}
+
+ .monitoring {
+ position: absolute;
+ cursor: pointer;
+ bottom: 10px;
+ left: 0;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: 500;
+ font-size: 15px;
+ width: 156px;
+ height: 40px;
+ background: linear-gradient(180deg, rgba(0, 148, 235, 0.68) 0%, rgba(0, 148, 235, 0) 100%);
+ border-radius: 2px;
+ border: 1px solid;
+ border-image: linear-gradient(180deg, rgba(177, 210, 255, 0.64), rgba(0, 171, 255, 0.7)) 1 1;
+
+ .icon {
+ width: 16px;
+ height: 16px;
+ margin-right: 10px;
+ }
+
+ .top {
+ width: 7px;
+ margin-left: 6px;
+ }
+ }
}
}
--
Gitblit v1.9.3