gaoluyang
2 天以前 025e46e11cb2962fd7692adfa401333758cc779b
src/pages/login.vue
@@ -1,17 +1,17 @@
<template>
  <view class="normal-login-container">
    <view class="logo-content">
      <text>账号密码登录</text>
    </view>
    <view class="login-form-content">
      <view class="input-item flex align-center">
   <view class="normal-login-container">
      <view class="logo-content">
         <text>账号密码登录</text>
      </view>
      <view class="login-form-content">
         <view class="input-item flex align-center">
            <up-input prefixIcon="account" placeholder="请输入账号" border="bottom"
                           @blur="getUserLoginFacotryList"
                           maxlength="30" v-model="loginForm.username" clearable></up-input>
      </view>
      <view class="input-item flex align-center">
         </view>
         <view class="input-item flex align-center">
            <up-input prefixIcon="lock" placeholder="请输入密码" border="bottom" maxlength="20" v-model="loginForm.password" clearable type="password"></up-input>
      </view>
         </view>
         <view class="input-item flex align-center select-container">
            <up-icon name="tags" size="18"></up-icon>
            <up-picker-data
@@ -22,10 +22,10 @@
               labelKey="name">
            </up-picker-data>
         </view>
      <view>
        <button @click="handleLogin" class="login-btn cu-btn block bg-blue lg round">登录</button>
      </view>
    </view>
         <view>
            <button @click="handleLogin" class="login-btn cu-btn block bg-blue lg round">登录</button>
         </view>
      </view>
      <!-- 记住密码选项 -->
      <view class="remember-password">
         <up-checkbox
@@ -37,7 +37,7 @@
         >
         </up-checkbox>
      </view>
  </view>
   </view>
</template>
<script setup>
@@ -52,8 +52,8 @@
const useWxLogin = ref(false); // 是否使用微信登录
const rememberPassword = ref(false); // 记住密码
const loginForm = ref({
  username: "",
  password: "",
   username: "",
   password: "",
   factoryId: "",
   currentFatoryName: "",
});
@@ -61,43 +61,43 @@
// 保存密码到本地存储
function savePassword() {
  if (rememberPassword.value) {
    uni.setStorageSync('remembered_username', loginForm.value.username);
    uni.setStorageSync('remembered_password', loginForm.value.password);
    uni.setStorageSync('remember_password', true);
  } else {
    uni.removeStorageSync('remembered_username');
    uni.removeStorageSync('remembered_password');
    uni.setStorageSync('remember_password', false);
  }
   if (rememberPassword.value) {
      uni.setStorageSync('remembered_username', loginForm.value.username);
      uni.setStorageSync('remembered_password', loginForm.value.password);
      uni.setStorageSync('remember_password', true);
   } else {
      uni.removeStorageSync('remembered_username');
      uni.removeStorageSync('remembered_password');
      uni.setStorageSync('remember_password', false);
   }
}
// 从本地存储加载密码
function loadPassword() {
  const remembered = uni.getStorageSync('remember_password');
  if (remembered) {
    rememberPassword.value = true;
    const savedUsername = uni.getStorageSync('remembered_username');
    const savedPassword = uni.getStorageSync('remembered_password');
    if (savedUsername) {
      loginForm.value.username = savedUsername;
    }
    if (savedPassword) {
      loginForm.value.password = savedPassword;
    }
  }
   const remembered = uni.getStorageSync('remember_password');
   if (remembered) {
      rememberPassword.value = true;
      const savedUsername = uni.getStorageSync('remembered_username');
      const savedPassword = uni.getStorageSync('remembered_password');
      if (savedUsername) {
         loginForm.value.username = savedUsername;
      }
      if (savedPassword) {
         loginForm.value.password = savedPassword;
      }
   }
}
if (useWxLogin.value) {
  getWxCode().then(res => {
    console.log(res);
    wxLogin('miniapp',res).then(res => {
      if(res.token != null){
        setToken(res.token);
        loginSuccess()
      }
    });
  })
   getWxCode().then(res => {
      console.log(res);
      wxLogin('miniapp',res).then(res => {
         if(res.token != null){
            setToken(res.token);
            loginSuccess()
         }
      });
   })
}
function getUserLoginFacotryList() {
@@ -124,36 +124,36 @@
}
async function handleLogin() {
  if (loginForm.value.username === "") {
    modal.msgError("请输入您的账号")
  } else if (loginForm.value.password === "") {
    modal.msgError("请输入您的密码")
  } else if (loginForm.value.factoryId === "") {
    modal.msgError("请选择公司")
  } else {
    modal.loading("登录中,请耐心等待...")
    pwdLogin()
  }
   if (loginForm.value.username === "") {
      modal.msgError("请输入您的账号")
   } else if (loginForm.value.password === "") {
      modal.msgError("请输入您的密码")
   } else if (loginForm.value.factoryId === "") {
      modal.msgError("请选择公司")
   } else {
      modal.loading("登录中,请耐心等待...")
      pwdLogin()
   }
};
// 密码登录
async function pwdLogin() {
  userStore.loginCheckFactory(loginForm.value).then(() => {
    modal.closeLoading()
    // 登录成功后保存密码
    savePassword();
    loginSuccess()
  }).catch(() => {
   userStore.loginCheckFactory(loginForm.value).then(() => {
      modal.closeLoading()
  })
      // 登录成功后保存密码
      savePassword();
      loginSuccess()
   }).catch(() => {
      modal.closeLoading()
   })
};
function loginSuccess(result) {
  // 设置用户信息
  userStore.getInfo().then(res => {
    uni.switchTab({
      url: '/pages/index'
    });
  })
   // 设置用户信息
   userStore.getInfo().then(res => {
      uni.switchTab({
         url: '/pages/index'
      });
   })
}
// 页面加载时检查是否有保存的密码
onMounted(() => {
@@ -164,55 +164,55 @@
<style lang="scss">
page {
  background-color: #ffffff;
   background-color: #ffffff;
}
.normal-login-container {
  width: 100%;
   width: 100%;
   height: 100vh;
  .logo-content {
    width: 90%;
   .logo-content {
      width: 90%;
      font-weight: 400;
      font-size: 30px;
      color: #333333;
      margin: 80px 0 0 30px;
    image {
      border-radius: 4px;
    }
    .title {
      margin-left: 10px;
    }
  }
      image {
         border-radius: 4px;
      }
      .title {
         margin-left: 10px;
      }
   }
   .u-checkbox {
      margin-left: 34px;
   }
  .login-form-content {
    text-align: center;
    margin: 58px auto;
   .login-form-content {
      text-align: center;
      margin: 58px auto;
      padding: 0 30px;
      .input-item {
       margin: 30px auto;
       height: 45px;
       .icon {
         font-size: 38rpx;
         margin-left: 10px;
         color: #999;
       }
       .input {
         width: 100%;
         font-size: 14px;
         line-height: 20px;
         text-align: left;
         padding-left: 15px;
       }
     }
         margin: 30px auto;
         height: 45px;
         .icon {
            font-size: 38rpx;
            margin-left: 10px;
            color: #999;
         }
         .input {
            width: 100%;
            font-size: 14px;
            line-height: 20px;
            text-align: left;
            padding-left: 15px;
         }
      }
      .select-container {
         flex: 1;
         border-bottom: 1px solid #e5e5e5;
@@ -233,31 +233,31 @@
            }
         }
      }
    .login-btn {
      margin-top: 60px;
      height: 50px;
      .login-btn {
         margin-top: 60px;
         height: 50px;
         background: linear-gradient( 140deg, #00BAFF 0%, #006CFB 100%);
         box-shadow: 0px 4px 10px 0px rgba(3,88,185,0.2);
         border-radius: 40px 40px 40px 40px;
    }
    .xieyi {
      color: #333;
      margin-top: 20px;
    }
    .login-code {
      height: 38px;
      float: right;
      .login-code-img {
        height: 38px;
        position: absolute;
        margin-left: 10px;
        width: 200rpx;
      }
    }
  }
      }
      .xieyi {
         color: #333;
         margin-top: 20px;
      }
      .login-code {
         height: 38px;
         float: right;
         .login-code-img {
            height: 38px;
            position: absolute;
            margin-left: 10px;
            width: 200rpx;
         }
      }
   }
}
</style>