yangan
2024-06-28 3fef62b03c16aa69c109c355150cdb698b777feb
pages/login/userPassword.vue
@@ -2,133 +2,169 @@
   <view>
      <view class="list">
         <view class="list-call">
            <u--input
               v-model="username"
            <u--input v-model="username"
               clearable
               maxlength="32"
               type="text"
               placeholder="请输入用户名"
               placeholder="请输入手机号"
               prefixIcon="account"
               prefixIconStyle="font-size: 22px;color: #909399"
            ></u--input>
               fontSize='40'
               prefixIconStyle="font-size: 25px;color: #909399"></u--input>
         </view>
         <view class="list-call">
            <u--input
               v-model="password"
            <u--input v-model="password"
               clearable
               maxlength="32"
               type="password"
               placeholder="请输入密码"
               prefixIcon="lock"
               prefixIconStyle="font-size: 22px;color: #909399"
            ></u--input>
               fontSize='40'
               prefixIconStyle="font-size: 25px;color: #909399"></u--input>
         </view>
      </view>
      <view class="loginBtn"><u-button type="primary" :text="btnText == 1 ? '绑定' : '登录'" @click="submit()"></u-button></view>
      <view class="loginBtn"><u-button type="primary"
            :text="btnText == 1 ? '绑定' : '登录'"
            @click="submit()"
        :loading="submitLoading"
            ></u-button></view>
   </view>
</template>
<script>
import { apiLoginPassword } from '@/api/publicInterface.js';
import { mapMutations } from 'vuex';
import { setToken, setRefreshToken, setUsernameKey, setCustomerId, redirectHome } from '@/utils/status.js';
export default {
   name: 'userPassword',
   props: {
      //0:正常,1:微信绑定
      btnText: {
         type: Number,
         default: 0
      }
   },
   data() {
      return {
         username: 'appuser',// 客户
         // username: '18805080506',// 王楠(司机)
         password: '123456',
         remember: true,
         baseUrl: ''
      };
   },
   methods: {
      ...mapMutations(['setUserTabbar']),
      //登录
      async submit() {
         uni.showLoading({
            title: '登录中...'
         });
         //表单校验
         if (this.username.length === 0) {
            this.$u.toast('请输入账号');
            return;
   import { apiLoginPassword } from '@/api/publicInterface.js';
   import { mapMutations } from 'vuex';
   import { setName, setToken, setRefreshToken, setUsernameKey, setCustomerId, redirectHome,setUserId } from '@/utils/status.js';
   export default {
      name: 'userPassword',
      props: {
         //0:正常,1:微信绑定
         btnText: {
            type: Number,
            default: 0
         }
         if (this.password.length === 0) {
            this.$u.toast('请输入密码');
            return;
         }
         let grant_type = 'password';
         //登录接口
         await apiLoginPassword({
            username: this.username,
            password: this.password,
            grant_type,
            scope: 'server'
         })
            .then(res => {
               setToken(res.access_token);
               setRefreshToken(res.refresh_token);
               if (this.btnText == 0) {
                  if (res.code != 1) {
                     // 登陆成功,存储相关信息
                     setToken(res.access_token);
                     setRefreshToken(res.refresh_token);
                     setUsernameKey(res.username);
                     //查询用户详细信息并储存
                     this.$reqGet('getUserEntity').then(res => {
                        this.$u.toast('恭喜您,登录成功!');
                        this.setUserTabbar(res.data.type);
                        uni.setStorageSync('roleType', res.data.type);
                        setCustomerId(res.data.customerid);
      },
      data() {
         return {
            username: '', // 客户
            // username:'13333333331',//货代
            // username: '13333333332',// 司机
            password: '',
            remember: true,
            baseUrl: '',
        submitLoading: false
         };
      },
      methods: {
         ...mapMutations(['setUserTabbar']),
         //登录
         async submit() {
            uni.showLoading({
               title: '登录中...'
            });
            //表单校验
            if (this.username.length === 0) {
               this.$u.toast('请输入账号');
               return;
            }
            if (this.password.length === 0) {
               this.$u.toast('请输入密码');
               return;
            }
            let grant_type = 'password';
            //登录接口
        this.submitLoading = true
            await apiLoginPassword({
                  username: this.username,
                  password: this.password,
                  grant_type,
                  scope: 'server'
               })
               .then(res => {
                  setToken(res.access_token);
                  setRefreshToken(res.refresh_token);
                  if (this.btnText == 0) {
              this.submitLoading = false
                     if (res.code != 1) {
                        // 登陆成功,存储相关信息
                        setToken(res.access_token);
                        setRefreshToken(res.refresh_token);
                        setUsernameKey(res.username);
                        //查询用户详细信息并储存
                        this.$reqGet('getUserEntity')
                           .then(res => {
                              this.$u.toast('登录成功');
                              this.setUserTabbar(res.data.type);
                              uni.setStorageSync('roleType', res.data.type);
                    uni.setStorageSync("userId", res.data.userId)
                    uni.setStorageSync("userInfo", res.data)
                              setCustomerId(res.data.customerid);
                              setUserId(res.data.userId);
                              setName(res.name);
                              uni.hideLoading();
                    if(res.data.forcePassword == 1) {  //forcePassword为1强制修改密码
                      uni.navigateTo({
                        url: `/pages/login/resetPassword/resetPassword?userInfo=${JSON.stringify(res.data)}`
                      })
                    }else {
                      //跳转页面
                      this.$nextTick(() => {
                        redirectHome();
                      });
                    }
                           })
                           .catch(err => {
                              this.$u.toast('登录异常!');
                              console.log(err);
                           });
                     } else {
                        uni.hideLoading();
                        //跳转页面
                        this.$nextTick(() => {
                           redirectHome();
                        });
                     }).catch(err=>{
                        this.$u.toast('登录异常!');
                        console.log(err);
                     });
                        this.$u.toast(res.msg);
                     }
                  } else {
                     uni.hideLoading();
                     this.$u.toast(res.msg);
                  }
               } else {
                  this.$nextTick(() => {
                     this.$reqPost('wxBind', { state: 'MINI', code: uni.getStorageSync('code') }, 'params').then(res => {
                        uni.hideLoading();
                        if (res.code == 0) {
                           this.$u.toast('绑定成功!即将回到登录页!');
                           setTimeout(() => {
                              uni.navigateBack();
                           }, 1000);
                        } else {
                           this.$u.toast(res.msg ? res.msg : '绑定失败');
                     uni.login({
                        success: res => {
                           if (res.code) {
                              uni.setStorageSync('bindcode', res.code);
                           }
                        }
                     });
                  });
               }
            })
            .catch(e => {
               this.$u.toast(e);
            });
                     if (uni.getStorageSync('bindcode')) {
                        this.$reqPost('wxBind', { state: 'MINI', code: uni.getStorageSync('bindcode') },
                           'params').then(res => {
                           uni.hideLoading();
                           if (res.code == 0) {
                              this.$u.toast('绑定成功!即将回到登录页!');
                              setTimeout(() => {
                                 uni.navigateBack();
                              }, 1000);
                           } else {
                              this.$u.toast(res.msg ? res.msg : '绑定失败');
                           }
                        });
                     }
                  }
               })
               .catch(e => {
            this.submitLoading = false
                  this.$u.toast(e);
               });
         }
      }
   }
};
   };
</script>
<style lang="scss">
@import 'index.scss';
.dengluBtn {
   margin-top: 80rpx;
}
<style lang="scss"
   scoped>
   @import 'index.scss';
   .dengluBtn {
      margin-top: 80rpx;
   }
   /deep/.loginBtn {
      .u-button {
         font-size: 40rpx !important;
         letter-spacing: 10rpx;
      }
   }
</style>