ll
liukangdong
2025-01-23 904436a616ca08fc95e1cbbbd13059835ef37e72
ll
已修改14个文件
928 ■■■■■ 文件已修改
h5/pages/driver/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/login.vue 297 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/taskDetail.vue 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staff/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staffLogin/login.vue 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/waybill/home.vue 418 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/waybill/list.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/waybill/waybillDetail.vue 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/wdata/home.vue 56 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/wdata/list.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/utils/config.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/router/index.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/views/LogisticsCenter.vue 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
screen/src/views/SecurityControl.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/index.vue
@@ -2,7 +2,7 @@
    <view class="main_app">
        <view class="title_wrap">
            <view class="name">{{ driverInfo.realname || driverInfo.username }},欢迎登录~</view>
            <view class="btn" @click="loginOut">退出登录</view>
            <view class="btn" @click="loginOut">账号解绑</view>
        </view>
        <!--  -->
        <view class="banner_wrap">
h5/pages/driver/login.vue
@@ -3,43 +3,42 @@
        <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="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 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="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 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">
@@ -58,9 +57,9 @@
    import {
        driverLogin,
        loginCaptcha,
        getUserInfo,
        sendSms,
        loginDriverByPhone
        getUserInfo,
        sendSms,
        loginDriverByPhone
    } from '@/api'
    import {
        mapState,
@@ -70,114 +69,119 @@
        data() {
            return {
                form: {
                    username: null,
                    username: null,
                    phone: null,
                    password: null
                },
                isShowProtocol: false,
                showKeyboard: false,
                countDown: 0,
                activeTab: 0,
                countDown: 0,
                activeTab: 0,
                ywinfo: {}
            }
        },
        onLoad() {
            const ywinfo = uni.getStorageSync('ywinfo') || {}
            if (ywinfo.ywid && ywinfo.type == 0) {
            if (ywinfo.ywid && ywinfo.type == 0) {
                this.ywinfo = ywinfo
                uni.setStorageSync('ywinfo', {})
            }
        },
        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"
                            })
                        })
                    }
                })
        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() {
                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"
                    })
            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() {
                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() {
                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)
                if (!this.form.phone) return uni.showToast({
                    title: '手机号不能为空',
                    icon: 'none'
                })
                sendSms({
                    phone: this.form.phone
                }).then(res => {
                    if (res.code === 200) {
                        this.countDown = 60
                        setInterval(() => {
                            if (this.countDown == 0) return
                            this.countDown--
                        }, 1000)
                    }
                })
            },
        }
@@ -215,32 +219,37 @@
            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);
                }
            }
        .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: 36rpx;
            width: 100%;
@@ -270,7 +279,7 @@
                }
                .captcha {
                    color: $uni-color-primary;
                    color: $uni-color-primary;
                    font-size: 30rpx;
                }
h5/pages/driver/taskDetail.vue
@@ -207,8 +207,8 @@
                //         'openLocation'
                //     ] // 必填,需要使用的JS接口列表
                // })
                // this.getLocation()
                this.getDetail()
                this.getLocation()
                // this.getDetail()
            } else {
                this.getDetail()
            }
@@ -324,7 +324,7 @@
                display: flex;
                .label {
                    width: 150rpx;
                    width: 154rpx;
                    font-size: 30rpx;
                    color: #666666;
                }
h5/pages/staff/index.vue
@@ -4,7 +4,7 @@
            <view class="name" v-if="userInfo.realname">{{ userInfo.realname || userInfo.username || "" }},欢迎登录~</view>
            <view class="name" v-else>请先登录</view>
            <view class="btn" @click="loginOut">{{
                userInfo.username ? "退出登录" : "去登录"
                userInfo.username ? "账号解绑" : "去登录"
            }}</view>
        </view>
        <view class="banner_wrap">
h5/pages/staffLogin/login.vue
@@ -81,7 +81,7 @@
        loginH5ByPhone,
        getUserInfo,
        getSystemDictData,
        saveHkUserOpenid,
        saveHkUserOpenid,
        sendSms
    } from '@/api'
    import {
@@ -95,7 +95,7 @@
            return {
                form: {
                    // username: '18655749830',
                    username: null,
                    username: null,
                    phone: null,
                    password: null,
                    code: null
@@ -159,7 +159,7 @@
                        title: '验证码不能为空',
                        icon: 'none'
                    })
                }
                }
                let fn = activeTab == 0 ? loginPost : loginH5ByPhone
                fn({
                    ...form,
@@ -175,8 +175,7 @@
                            })
                        })
                        saveHkUserOpenid({})
                    } else {
                    }
                    } else {}
                })
            },
            ...mapMutations(["setToken", "setUserInfo"]),
@@ -215,11 +214,13 @@
                sendSms({
                    phone: this.form.phone
                }).then(res => {
                    this.countDown = 60
                    setInterval(() => {
                        if (this.countDown == 0) return
                        this.countDown--
                    }, 1000)
                    if (res.code === 200) {
                        this.countDown = 60
                        setInterval(() => {
                            if (this.countDown == 0) return
                            this.countDown--
                        }, 1000)
                    }
                })
            }
        }
h5/pages/waybill/home.vue
@@ -1,201 +1,217 @@
<template>
    <view class="main_app">
        <image class="bg" src="@/static/wuliuche_bg@2x.png" mode="widthFix"></image>
        <view class="login_wrap">
            <view class="item">
                <view class="la">手机号</view>
              <input v-model="form.phone" type="tel" maxlength="18" placeholder-class="placeholder9" placeholder="请输入手机号" />
            </view>
            <view class="item">
                <view class="la">验证码</view>
              <view class="df_sb">
                  <input
                    v-model="form.code"
                    placeholder="请输入验证码"
                      placeholder-class="placeholder9"
                        :maxlength="6"
                    type="number"
                  />
                  <text class="captcha" v-if="countDown == 0" @click="initCaptcha"
                    >获取验证码</text
                  >
                  <text class="placeholder9" v-else>{{ countDown }}</text>
              </view>
            </view>
            <view class="login_btn" @click="onSubmit">
                <view class="login_btn_n">查询</view>
            </view>
        </view>
    </view>
</template>
<script>
    import { sendSms, loginGkUserWithCode, wxAuthorizea, getUserInfo } from '@/api'
    export default {
        data() {
            return {
                form: {
                    code: '',
                    phone: ''
                },
                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('验证码不能为空')
                loginGkUserWithCode({
                  phone, code,openid: this.$store.state.openId, userType: 3
                }).then(res => {
                  if (res && res.code == 200) {
                        this.$store.commit('setToken', res.data)
                        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: '手机号不能为空',
                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">
.main_app{
    padding-top: 218rpx;
    .bg{
        width: 750rpx;
        position: absolute;
        left: 0;
        top: 0;
        z-index: -1;
    }
    .login_wrap {
      width: 690rpx;
      height: 490rpx;
      background: #FFFFFF;
      box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(39,155,170,0.16);
      border-radius: 16rpx;
      padding: 40rpx 30rpx;
      box-sizing: border-box;
      .item {
        width: 100%;
        height: 126rpx;
            padding-right: 10rpx;
        box-sizing: border-box;
        margin-bottom: 30rpx;
            border-bottom: 1px solid #E5E5E5;
        &:last-child {
          margin-bottom: 0 !important;
        }
        .la{
                font-weight: 400;
                font-size: 28rpx;
                color: #222222;
            }
        .captcha {
          color: $uni-color-primary;
        }
            .df_sb{
                display: flex;
                justify-content: space-between;
                align-items: center;
            }
        input {
          flex: 1;
          height: 86rpx;
          color: #666666;
          // margin-left: 24rpx;
                display: flex;
                align-items: center;
          border: none;
        }
      }
    }
    .login_btn {
     width: 630rpx;
     height: 88rpx;
      box-sizing: border-box;
      margin-top: 40rpx;
      .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-size: 30rpx;
        color: #ffffff;
        border-radius: 50rpx;
      }
    }
}
</style>
<template>
    <view class="main_app">
        <image class="bg" src="@/static/wuliuche_bg@2x.png" mode="widthFix"></image>
        <view class="login_wrap">
            <view class="item">
                <view class="la">手机号</view>
                <input v-model="form.phone" type="tel" maxlength="18" placeholder-class="placeholder9" placeholder="请输入手机号" />
            </view>
            <view class="item">
                <view class="la">验证码</view>
                <view class="df_sb">
                    <input v-model="form.code" placeholder="请输入验证码" placeholder-class="placeholder9" :maxlength="6"
                        type="number" />
                    <text class="captcha" v-if="countDown == 0" @click="initCaptcha">获取验证码</text>
                    <text class="placeholder9" v-else>{{ countDown }}</text>
                </view>
            </view>
            <view class="login_btn" @click="onSubmit">
                <view class="login_btn_n">查询</view>
            </view>
        </view>
    </view>
</template>
<script>
    import {
        sendSms,
        loginGkUserWithCode,
        wxAuthorizea,
        getUserInfo
    } from '@/api'
    export default {
        data() {
            return {
                form: {
                    code: '',
                    phone: ''
                },
                countDown: 0,
                code: '111'
            };
        },
        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('验证码不能为空')
                loginGkUserWithCode({
                    phone,
                    code,
                    openid: this.$store.state.openId,
                    userType: 3
                }).then(res => {
                    if (res && res.code == 200) {
                        this.$store.commit('setToken', res.data)
                        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: '手机号不能为空',
                    icon: 'none'
                })
                sendSms({
                    phone: this.form.phone
                }).then(res => {
                    if (res.code === 200) {
                        this.countDown = 60
                        setInterval(() => {
                            if (this.countDown == 0) return
                            this.countDown--
                        }, 1000)
                    }
                })
            },
        }
    }
</script>
<style lang="scss">
    .main_app {
        padding-top: 218rpx;
        .bg {
            width: 750rpx;
            position: absolute;
            left: 0;
            top: 0;
            z-index: -1;
        }
        .login_wrap {
            width: 690rpx;
            height: 490rpx;
            background: #FFFFFF;
            box-shadow: 0rpx 4rpx 20rpx 0rpx rgba(39, 155, 170, 0.16);
            border-radius: 16rpx;
            padding: 40rpx 30rpx;
            box-sizing: border-box;
            .item {
                width: 100%;
                height: 126rpx;
                padding-right: 10rpx;
                box-sizing: border-box;
                margin-bottom: 30rpx;
                border-bottom: 1px solid #E5E5E5;
                &:last-child {
                    margin-bottom: 0 !important;
                }
                .la {
                    font-weight: 400;
                    font-size: 28rpx;
                    color: #222222;
                }
                .captcha {
                    color: $uni-color-primary;
                }
                .df_sb {
                    display: flex;
                    justify-content: space-between;
                    align-items: center;
                }
                input {
                    flex: 1;
                    height: 86rpx;
                    color: #666666;
                    // margin-left: 24rpx;
                    display: flex;
                    align-items: center;
                    border: none;
                }
            }
        }
        .login_btn {
            width: 630rpx;
            height: 88rpx;
            box-sizing: border-box;
            margin-top: 40rpx;
            .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-size: 30rpx;
                color: #ffffff;
                border-radius: 50rpx;
            }
        }
    }
</style>
h5/pages/waybill/list.vue
@@ -2,7 +2,7 @@
    <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 class="btn" @click="loginOut">账号解绑</view>
        </view>
        <view class="head_wrap" @click="openModal">
            <view class="search_box">
@@ -232,7 +232,7 @@
                        ...form
                    },
                    pager: {
                        rows: 10,
                        rows: 16,
                        page
                    }
                }).then(res => {
h5/pages/waybill/waybillDetail.vue
@@ -34,12 +34,28 @@
                    </view>
                    <view class="line">
                        <view class="la">车辆位置</view>
                        <view class="val">{{'-'}}</view>
                        <view class="val">{{ info.address || '-'}}</view>
                    </view>
                    <view class="line">
                        <view class="la">预计到达</view>
                        <view class="val primaryColor" v-if="info.plannedArrivedDate">{{info.plannedArrivedDate.slice(0,11)}}</view>
                    </view>
                    </view>
                    <view v-if="showRecord" class="table">
                        <view class="ite header">
                            <view class="name">品规名称</view>
                            <view class="num">数量<text>(万支)</text></view>
                        </view>
                        <view class="ite" v-for="ite in info.orderDetailVOList">
                            <view class="name">{{ite.productName}}</view>
                            <view class="num">{{ite.pnumber}}</view>
                        </view>
                    </view>
                    <view class="line switch" @click="showRecord = !showRecord">
                        <view class="">查看品规明细</view>
                        <u-icon v-if="!showRecord" name="arrow-down" size="12" class="ml6" color='#666666'></u-icon>
                        <u-icon v-if="showRecord" name="arrow-up" size="12" class="ml6" color='#666666'></u-icon>
                    </view>
                </view>
            </view>
            <view class="drive_info">
@@ -116,7 +132,8 @@
                    //     color: '#FF0000',
                    //     width: 3
                    // }, 
                ]
                ],
                showRecord: false
            };
        },
        onLoad(options) {
@@ -177,7 +194,17 @@
                    }
                    if (res.data && res.data.gisList && res.data.gisList.length > 0) {
                        this.gisInfo = res.data.gisList[0]
                        if (this.gisInfo && this.gisInfo.gisList && this.gisInfo.gisList.length > 0) {
                        if (this.gisInfo && this.gisInfo.gisList && this.gisInfo.gisList.length > 0) {
                            const apiKey = 'd9a554b1808ce10a12a932ed9b0db1d0';
                            let adsInfo = this.gisInfo.gisList[this.gisInfo.gisList.length - 1]
                            const location = adsInfo.lon1 + ',' + adsInfo.lat1;
                            uni.request({
                                url: `https://restapi.amap.com/v3/geocode/regeo?key=${apiKey}&location=${location}`,
                                method: 'GET',
                                success: (res) => {
                                    this.$set(this.info, 'address', res.data.regeocode.formatted_address)
                                },
                            })
                            this.polyline = []
                            let temp = {
                                color: '#ff0000',
@@ -191,7 +218,8 @@
                            }
                            this.polyline.push(temp)
                        }
                    }
                    }
                })
            },
            distance() {
@@ -417,12 +445,47 @@
                        width: 140rpx;
                    }
                    .val {}
                    .val {
                        flex: 1;
                    }
                    &:nth-last-child(1) {
                        margin-bottom: 0;
                    }
                }
                .table{
                    margin: 0 auto 20rpx;
                    .ite{
                        width: 100%;
                        height: 68rpx;
                        background: #FFFFFF;
                        border-bottom: 1rpx solid #E5E5E5;
                        display: flex;
                        align-items: center;
                        font-size: 28rpx;
                        padding-left: 30rpx;
                        .name{
                            flex: 8;
                            // padding-left: 20rpx;
                        }
                        .num{
                            flex: 3;
                        }
                    }
                    .header{
                        background: #F4F7FC;
                        font-weight: 500;
                        text{
                            font-size: 22rpx;
                        }
                    }
                }
                .switch{
                    display: flex;
                    align-items: center;
                    justify-content: center;
                    color: #666666;
                }
            }
        }
h5/pages/wdata/home.vue
@@ -24,9 +24,9 @@
<script>
    import {
        sendSms,
        sendSms,
        wxAuthorizea,
        loginDriverWithCode,
        loginDriverWithCode,
        getUserInfo
    } from '@/api'
    export default {
@@ -65,20 +65,20 @@
                if (!code) return this.showToast('验证码不能为空')
                loginDriverWithCode({
                    phone,
                    code,
                    code,
                    openid: this.$store.state.openId || '111'
                }).then(res => {
                    if (res && res.code == 200) {
                        if (res.data) {
                            this.$store.commit('setToken', res.data)
                            getUserInfo().then(ress => {
                                this.$store.commit('setDriverInfo', ress.data)
                                setTimeout(() => {
                                    uni.navigateTo({
                                        url: '/pages/wdata/list'
                                    })
                                }, 100)
                            })
                    if (res && res.code == 200) {
                        if (res.data) {
                            this.$store.commit('setToken', res.data)
                            getUserInfo().then(ress => {
                                this.$store.commit('setDriverInfo', ress.data)
                                setTimeout(() => {
                                    uni.navigateTo({
                                        url: '/pages/wdata/list'
                                    })
                                }, 100)
                            })
                        }
                    }
                })
@@ -91,11 +91,13 @@
                sendSms({
                    phone: this.form.phone
                }).then(res => {
                    this.countDown = 10
                    setInterval(() => {
                        if (this.countDown == 0) return
                        this.countDown--
                    }, 1000)
                    if (res.code === 200) {
                        this.countDown = 60
                        setInterval(() => {
                            if (this.countDown == 0) return
                            this.countDown--
                        }, 1000)
                    }
                })
            },
            userAuth(source) {
@@ -116,14 +118,14 @@
                    }).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('setDriverInfo', ress.data)
                                    uni.navigateTo({
                                        url: '/pages/wdata/list'
                                    })
                                })
                            if (res.data.token) {
                                that.$store.commit('setToken', res.data.token)
                                getUserInfo().then(ress => {
                                    that.$store.commit('setDriverInfo', ress.data)
                                    uni.navigateTo({
                                        url: '/pages/wdata/list'
                                    })
                                })
                            }
                        }
                    })
h5/pages/wdata/list.vue
@@ -4,7 +4,7 @@
            <view class="name" v-if="driverInfo.realname || driverInfo.username">{{ driverInfo.realname || driverInfo.username }},欢迎登录~</view>
            <view class="name" v-else>请先登录</view>
            <view class="btn" @click="loginOut">{{
                driverInfo.realname || driverInfo.username ? "退出登录" : "去登录"
                driverInfo.realname || driverInfo.username ? "账号解绑" : "去登录"
            }}</view>
        </view>
        <view class="head_wrap">
h5/utils/config.js
@@ -1,8 +1,8 @@
// export const baseUrl = 'zhyq_interface/'
export const baseUrl = 'zhyq_interface/'
// export const baseUrl = 'http://192.168.0.173/gateway_interface/'
// export const baseUrl = 'http://10.50.250.253:8088/gateway_interface/'
export const baseUrl = 'https://atwl.ahzyssl.com/zhyq_interface/'
// export const baseUrl = 'https://atwl.ahzyssl.com/zhyq_interface/'
export const app_url = 'https://atwl.ahzyssl.com/zhyq_h5/#/'
screen/src/router/index.js
@@ -35,7 +35,7 @@
      path: '/SecurityControl',  // 安防管控大屏 -
      name: 'SecurityControl',
      meta: {
        title: '安泰智慧物流园区-安防智能监测'
        title: '安泰智慧物流园区-智能安防监测'
      },
      component: () => import('../views/SecurityControl.vue')
    },
@@ -43,7 +43,7 @@
      path: '/LogisticsCenter', //全省物流在途-物流中心
      name: 'LogisticsCenter',
      meta: {
        title: '安徽中烟成品集控大屏'
        title: '安徽中烟数智成品管控'
      },
      component: () => import('../views/LogisticsCenter.vue')
    },
screen/src/views/LogisticsCenter.vue
@@ -4,7 +4,7 @@
      <img src="@/assets/images/LogisticsCenter/bg@2x.png" class="main_bg" alt="" />
      <div class="main_header">
        <img src="@/assets/images/maintitle.gif" class="main_header_bg" alt="" />
        <div class="title">安徽中烟成品集控大屏</div>
        <div class="title">安徽中烟数智成品管控</div>
        <div class="time_wrap">
          <span class="date">{{ date }}</span>
          <span class="week">{{ week }}</span>
@@ -438,7 +438,7 @@
          <div class="item">
            <div class="dian"></div>
            <div class="la">车辆位置:</div>
            <div class="val">{{ modalInfo.aa || '-' }}</div>
            <div class="val">{{ modalInfo.position || '-' }}</div>
          </div>
          <div class="item">
            <div class="dian"></div>
@@ -510,6 +510,7 @@
import VScaleScreen from 'v-scale-screen'
import Percent from '@/components/percent.vue'
import dayjs from 'dayjs'
import axios from "axios"
import * as echarts from 'echarts'
import 'swiper/css/swiper.min.css'
import Swiper from 'swiper'
@@ -1008,6 +1009,20 @@
  showModal.value = true
  kzorderInfo({ contractNumber: item.contractNumber }).then(res => {
    modalInfo.value = res.data
    const apiKey = 'd9a554b1808ce10a12a932ed9b0db1d0'
    if (modalInfo.value.gisList && modalInfo.value.gisList.length > 0) {
      const gisInfo = modalInfo.value.gisList[0]
      if (gisInfo && gisInfo.gisList && gisInfo.gisList.length > 0) {
        const adsInfo = gisInfo.gisList[gisInfo.gisList.length - 1]
        const location = adsInfo.lon1 + ',' + adsInfo.lat1
        axios.get(`https://restapi.amap.com/v3/geocode/regeo?key=${apiKey}&location=${location}`).then(res => {
          console.log('res', res.data)
          if(res.data.status == 1){
            modalInfo.value.position = res.data.regeocode.formatted_address
          }
        })
      }
    }
    modalLoading.value = false
    nextTick(() => {
@@ -1997,6 +2012,7 @@
      padding: 0px 10px 30px 20px;
      position: relative;
      height: 160px;
      .content_wrap {
        display: flex;
        justify-content: space-between;
@@ -2402,13 +2418,15 @@
                z-index: -1;
              }
            }
            .tooltip_wrap{
              .tooltip{
            .tooltip_wrap {
              .tooltip {
                z-index: 9999999999;
                top: 34px;
                transform: translate(70px, -42%);
              }
            }
            .tag1 {
              background-color: #28F0CC;
              border: 1px solid #28F0CC;
@@ -2862,12 +2880,12 @@
    flex-wrap: wrap;
    background-color: #0d2845;
    border-radius: 4px;
    padding: 10px 20px 0;
    padding: 10px 20px 0px;
    margin-bottom: 16px;
    .item {
      display: flex;
      align-items: center;
      /* align-items: center; */
      font-size: 13px;
      width: 55%;
      margin-bottom: 8px;
@@ -2882,10 +2900,15 @@
        background-color: #fff;
        border-radius: 50%;
        margin-right: 4px;
        margin-top: 7px;
      }
      .la {
        color: #01D9FE;
        width: 70px;
      }
      .val{
        flex: 1;
      }
    }
  }
screen/src/views/SecurityControl.vue
@@ -4,7 +4,7 @@
      <img src="@/assets/images/SecurityControl/bg@2x.png" class="main_bg" alt="" />
      <div class="main_header">
        <img src="@/assets/images/maintitle.gif" class="main_header_bg" alt="" />
        <div class="title">安泰智慧物流园区-安防智能监测</div>
        <div class="title">安泰智慧物流园区-智能安防监测</div>
        <div class="time_wrap">
          <span class="date">{{ date }}</span>
          <span class="week">{{ week }}</span>