lll
liukangdong
2024-08-26 1df1e9daa4d33a0e975db7ef0a73ee4dd45d216b
lll
已添加4个文件
已修改7个文件
549 ■■■■■ 文件已修改
admin/src/components/business/OperaCarUseBookWindow.vue 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/common/CommonHeader.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/.gitignore 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages.json 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/login.vue 220 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/register.vue 227 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/driver/taskDetail.vue 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/login/login.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staff/task/visitorApprove.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/pages/staffLogin/forgetPsd.vue 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
h5/static/driver/position.png 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/OperaCarUseBookWindow.vue
@@ -244,16 +244,12 @@
    },
    agreeOpen () {
      this.isShowProblem = true
      this.dealForm = {
        driveId: null,
        checkInfo: null
      }
      this.$set(this.dealForm, 'checkInfo', '')
      this.loadMemberList()
    },
    jectOpen () {
      this.isBackProblem = true
      this.dealForm = {
        driveId: null,
      this.backForm = {
        checkInfo: null
      }
    },
admin/src/components/common/CommonHeader.vue
@@ -3,6 +3,13 @@
    <div class="header">
      <div class="logo">
        <div>{{ title }}</div>
        <div class="list">
          <div class="item">服务中心</div>
          <div class="item">安防中心</div>
          <div class="item">消防中心</div>
          <div class="item">能管中心</div>
          <div class="item">驾驶舱</div>
        </div>
        <!-- <div class="title-en">Diagnosis of Intelligent Manufacturing Integrated Service Platfrom</div> -->
      </div>
      <div class="user">
@@ -215,6 +222,8 @@
    font-size: 22px;
    font-weight: 600;
    color: #fff;
    display: flex;
    align-items: center;
    // display: inline;
    .title-en {
      font-size: 11px;
h5/.gitignore
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
.DS_Store
coderd.json
node_modules
.env.development
uview-ui
/dist
# local env files
.env.local
.env.*.local
unpackage
admin
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
h5/pages.json
@@ -405,7 +405,25 @@
                "enablePullDownRefresh": false
            }
        }
    ],
        ,{
            "path" : "pages/driver/login",
            "style" :
            {
                "navigationBarTitleText": "登录",
                "enablePullDownRefresh": false
            }
        }
        ,{
            "path" : "pages/driver/register",
            "style" :
            {
                "navigationBarTitleText": "注册",
                "enablePullDownRefresh": false
            }
        }
    ],
    "subPackages": [
        {
            "root": "n_pages",
h5/pages/driver/login.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,220 @@
<template>
  <view class="login">
    <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_list">
      <view class="login_list_item">
        <image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
        <input v-model="form.phone" maxlength="18" placeholder="手机号" />
      </view>
      <view class="login_list_item">
        <image src="@/static/login_ic_password@2x.png" mode="widthFix" />
        <input
          v-model="form.password"
          type="password"
          placeholder="密码"
        />
      </view>
    </view>
    <view class="login_btn">
      <view class="login_btn_n" @click="onLogin">立即登录</view>
    </view>
    <!--  -->
        <view class="btns">
            <view class="btn" @click="handleRegister">立即注册</view>
            <view class="btn separate"> | </view>
            <view class="btn">忘记密码</view>
        </view>
  </view>
</template>
<script>
import { resetPassword, sendSms } from '@/api'
export default {
  data() {
    return {
      form: {
      },
      isShowProtocol: false,
      countDown: 0
    }
  },
  onLoad() {
  },
  methods: {
        handleRegister() {
            uni.navigateTo({
                url: "/pages/driver/register"
            })
        },
    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)
      })
    },
    onLogin() {
      const { form } = this
      if (!form.phone) return uni.showToast({
        title: '手机号不能为空',
        icon: 'none'
      })
      if (!form.password) return uni.showToast({
        title: '密码不能为空',
        icon: 'none'
      })
      resetPassword({
        ...form
      }).then(res => {
        if (res && res.code == 200) {
          setTimeout(() => {
            uni.showToast({
              title: '密码修改成功,请重新登录',
              icon: 'success',
              duration: 2000
            })
          })
          uni.redirectTo({
            url: "/pages/staffLogin/login"
          })
        }
      })
    }
  }
}
</script>
<style lang="scss" scoped>
.login {
  width: 100%;
  display: flex;
  padding-top: 100rpx;
  box-sizing: border-box;
  align-items: center;
  flex-direction: column;
  background: linear-gradient(
    180deg,
    rgba(39, 155, 170, 0.2) 0%,
    rgba(39, 155, 170, 0) 100%
  );
  .login_logo {
    width: 180rpx;
    height: 180rpx;
        margin-bottom: 40rpx;
  }
  .login_bg {
    position: absolute;
    top: 0;
    width: 750rpx;
  }
  .login_title {
    font-size: 44rpx;
    font-weight: 600;
    color: #333333;
  }
  .login_list {
        margin-top: 60rpx;
    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 {
        color: $uni-color-primary;
      }
      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: 80rpx;
    .for_psd {
      color: $uni-color-primary;
      margin-top: 40rpx;
      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: 108rpx;
    .deal {
      color: $uni-color-primary;
    }
  }
    .btns{
        display: flex;
        align-items: center;
        justify-content: center;
        position: fixed;
        bottom: 60rpx;
        left: 0;
        width: 100%;
        .btn{
            font-size: 30rpx;
            color: $uni-color-primary;
        }
        .separate{ margin: 0 8rpx; }
    }
}
.modal {
  padding: 32rpx;
}
</style>
h5/pages/driver/register.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,227 @@
<template>
  <view class="login">
    <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_list">
      <view class="login_list_item">
        <image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
        <input v-model="form.name" maxlength="18" placeholder="请输入姓名" />
      </view>
            <view class="login_list_item">
              <image src="@/static/login_ic_phone@2x.png" mode="widthFix" />
              <input v-model="form.phone" maxlength="18" placeholder="请输入手机号" />
            </view>
      <view class="login_list_item">
        <image src="@/static/ic_captcha.png" mode="widthFix"></image>
        <input
          v-model="form.validCode"
          placeholder="请输入验证码"
          type="text"
        />
        <text class="captcha" v-if="countDown == 0" @click="initCaptcha"
          >获取验证码</text
        >
        <text class="placeholder9" v-else>{{ countDown }}</text>
      </view>
      <view class="login_list_item">
        <image src="@/static/login_ic_password@2x.png" mode="widthFix" />
        <input
          v-model="form.password"
          type="password"
          placeholder="请输入密码"
        />
      </view>
    </view>
    <view class="login_btn">
      <view class="login_btn_n" @click="onLogin">立即注册</view>
    </view>
    <!--  -->
    <u-popup
      :show="isShowProtocol"
      @close="isShowProtocol = false"
      mode="center"
    >
      <view class="modal">111</view>
    </u-popup>
  </view>
</template>
<script>
import { resetPassword, sendSms } from '@/api'
export default {
  data() {
    return {
      form: {
      },
      isShowProtocol: false,
      countDown: 0
    }
  },
  onLoad() {
  },
  methods: {
    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)
      })
    },
    onLogin() {
      const { form } = this
            if (!form.name) return uni.showToast({
              title: '手机号姓名',
              icon: 'none'
            })
      if (!form.phone) return uni.showToast({
        title: '手机号不能为空',
        icon: 'none'
      })
      if (!form.validCode) return uni.showToast({
        title: '验证码不能为空',
        icon: 'none'
      })
      if (!form.password) return uni.showToast({
        title: '密码不能为空',
        icon: 'none'
      })
      resetPassword({
        ...form
      }).then(res => {
        if (res && res.code == 200) {
          setTimeout(() => {
            uni.showToast({
              title: '注册成功,请前往登录',
              icon: 'success',
              duration: 2000
            })
          })
          uni.redirectTo({
            url: "/pages/driver/login"
          })
        }
      })
    }
  }
}
</script>
<style lang="scss" scoped>
.login {
  width: 100%;
  display: flex;
  padding-top: 100rpx;
  box-sizing: border-box;
  align-items: center;
  flex-direction: column;
  background: linear-gradient(
    180deg,
    rgba(39, 155, 170, 0.2) 0%,
    rgba(39, 155, 170, 0) 100%
  );
  .login_logo {
    width: 180rpx;
    height: 180rpx;
        margin-bottom: 40rpx;
  }
  .login_bg {
    position: absolute;
    top: 0;
    width: 750rpx;
  }
  .login_title {
    font-size: 44rpx;
    font-weight: 600;
    color: #333333;
  }
  .login_list {
        margin-top: 60rpx;
    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 {
        color: $uni-color-primary;
      }
      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: 80rpx;
    .for_psd {
      color: $uni-color-primary;
      margin-top: 40rpx;
      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: 108rpx;
    .deal {
      color: $uni-color-primary;
    }
  }
}
.modal {
  padding: 32rpx;
}
</style>
h5/pages/driver/taskDetail.vue
@@ -41,11 +41,7 @@
        <view class="value">
          <view class="">0 å…¬é‡Œ</view>
          <view class="btn" @click="getLocation">
            <u-icon
              name="map"
              :color="$store.state.primaryColor"
              class="mr6"
            ></u-icon>
                        <image class="icon mr6" src="../../static/driver/position.png"></image>
            é‡æ–°å®šä½
          </view>
        </view>
@@ -209,6 +205,11 @@
          font-size: 28rpx;
          color: $uni-color-primary;
          display: flex;
                    align-items: center;
                    .icon{
                        width: 30rpx;
                        height: 30rpx;
                    }
        }
      }
    }
h5/pages/login/login.vue
@@ -19,7 +19,7 @@
      </view>
      <u-icon name="arrow-right" size="24" color="#979797" />
    </view>
    <view class="item">
    <view class="item" @click="driverLogin">
      <image class="avatar" src="@/static/ic_driver@2x.png" />
      <view class="content">
        <view class="name">我是物流车司机</view>
@@ -39,6 +39,18 @@
        url
      })
    },
        driverLogin() {
            const driverInfo = uni.getStorageSync('driverInfo') || {}
            if (driverInfo && driverInfo.memberId) {
              uni.navigateTo({
                url: '/pages/driver/index'
              })
            }else{
              uni.navigateTo({
                url: '/pages/driver/login'
              })
            }
        },
    staffLogin() {
      const userInfo = uni.getStorageSync('userInfo') || {}
      if (userInfo && userInfo.memberId) {
h5/pages/staff/task/visitorApprove.vue
@@ -199,8 +199,8 @@
      statusMap: {
        0: '待审批',
        1: '审批中',
        2: '审批通过',
        3: '审批未通过',
        2: '已通过',
        3: '已拒绝',
        4: '已取消',
        5: '他人或签',
        6: '他人拒绝',
h5/pages/staffLogin/forgetPsd.vue
@@ -40,14 +40,6 @@
    <view class="login_btn">
      <view class="login_btn_n" @click="onLogin">确认修改</view>
    </view>
    <!--  -->
    <u-popup
      :show="isShowProtocol"
      @close="isShowProtocol = false"
      mode="center"
    >
      <view class="modal">111</view>
    </u-popup>
  </view>
</template>
@@ -58,7 +50,6 @@
    return {
      form: {
      },
      isShowProtocol: false,
      countDown: 0
    }
  },
h5/static/driver/position.png