zhangwencui
4 天以前 67461f55748c32d885db965bdff6c2cc63eb327b
src/pages/login.vue
@@ -5,26 +5,35 @@
      </view>
      <view class="login-form-content">
         <view class="input-item flex align-center">
            <up-input prefixIcon="account" placeholder="请输入账号" border="bottom"
        <up-input prefixIcon="account"
                  placeholder="请输入账号"
                  border="bottom"
                           @blur="getUserLoginFacotryList"
                           maxlength="30" v-model="loginForm.userName" clearable></up-input>
                  maxlength="30"
                  v-model="loginForm.userName"
                  clearable></up-input>
         </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>
        <up-input prefixIcon="lock"
                  placeholder="请输入密码"
                  border="bottom"
                  maxlength="20"
                  v-model="loginForm.password"
                  clearable
                  type="password"></up-input>
         </view>
         <view>
            <button @click="handleLogin" class="login-btn cu-btn block bg-blue lg round">登录</button>
        <button @click="handleLogin"
                class="login-btn cu-btn block bg-blue lg round">登录</button>
         </view>
      </view>
      <!-- 记住密码选项 -->
      <view class="remember-password">
         <up-checkbox
            :customStyle="{marginBottom: '8px'}"
      <up-checkbox :customStyle="{marginBottom: '8px'}"
            label="记住密码"
            name="agree"
            usedAlone
            v-model:checked="rememberPassword"
         >
                   v-model:checked="rememberPassword">
         </up-checkbox>
      </view>
   </view>
@@ -33,20 +42,20 @@
<script setup>
import {modal} from "@/plugins";
const showToast = (message) => {
  const showToast = message => {
   uni.showToast({
      title: message,
      icon: 'none'
   })
}
import { userLoginFacotryList} from '@/api/login'
      icon: "none",
    });
  };
  import { userLoginFacotryList, updateClientId } from "@/api/login";
import { ref, onMounted } from "vue";
import useUserStore from '@/store/modules/user'
import { getWxCode } from '@/utils/geek';
import { wxLogin } from '@/api/oauth';
import { setToken } from '@/utils/auth';
  import useUserStore from "@/store/modules/user";
  import { getWxCode } from "@/utils/geek";
  import { wxLogin } from "@/api/oauth";
  import { setToken } from "@/utils/auth";
import View from "@/pages/procurementManagement/procurementLedger/view.vue";
const userStore = useUserStore()
  const userStore = useUserStore();
const useWxLogin = ref(false); // 是否使用微信登录
const rememberPassword = ref(false); // 记住密码
const loginForm = ref({
@@ -54,28 +63,28 @@
   password: "",
   currentFatoryName: "",
});
const factoryList = ref([]) // 公司列表
  const factoryList = ref([]); // 公司列表
// 保存密码到本地存储
function savePassword() {
   if (rememberPassword.value) {
      uni.setStorageSync('remembered_username', loginForm.value.userName);
      uni.setStorageSync('remembered_password', loginForm.value.password);
      uni.setStorageSync('remember_password', true);
      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);
      uni.removeStorageSync("remembered_username");
      uni.removeStorageSync("remembered_password");
      uni.setStorageSync("remember_password", false);
   }
}
// 从本地存储加载密码
function loadPassword() {
   const remembered = uni.getStorageSync('remember_password');
    const remembered = uni.getStorageSync("remember_password");
   if (remembered) {
      rememberPassword.value = true;
      const savedUsername = uni.getStorageSync('remembered_username');
      const savedPassword = uni.getStorageSync('remembered_password');
      const savedUsername = uni.getStorageSync("remembered_username");
      const savedPassword = uni.getStorageSync("remembered_password");
      if (savedUsername) {
         loginForm.value.userName = savedUsername;
      }
@@ -88,73 +97,107 @@
if (useWxLogin.value) {
   getWxCode().then(res => {
      console.log(res);
      wxLogin('miniapp',res).then(res => {
      wxLogin("miniapp", res).then(res => {
         if(res.token != null){
            setToken(res.token);
            loginSuccess()
          loginSuccess();
         }
      });
   })
    });
}
function getUserLoginFacotryList() {
   if(loginForm.value.userName){
      userLoginFacotryList({userName:loginForm.value.userName}).then(res => {
         console.log('res',res)
      userLoginFacotryList({ userName: loginForm.value.userName })
        .then(res => {
          console.log("res", res);
         // 检查res.data是否为数组
         if (res.data && Array.isArray(res.data)) {
            // 重新组装数据格式:deptId变成id,deptName变成name
            factoryList.value = res.data.map(item => ({
               id: item.deptId,
               name: item.deptName
            }))
              name: item.deptName,
            }));
         } else {
            // 如果res.data不是数组,设置为空数组
            factoryList.value = []
            factoryList.value = [];
         }
      }).catch(error => {
         showToast('获取公司列表失败:', error)
         factoryList.value = []
      })
        .catch(error => {
          showToast("获取公司列表失败:", error);
          factoryList.value = [];
        });
   }else {
      factoryList.value = []
      factoryList.value = [];
   }
}
async function handleLogin() {
   if (loginForm.value.userName === "") {
      showToast("请输入您的账号")
      showToast("请输入您的账号");
   } else if (loginForm.value.password === "") {
      showToast("请输入您的密码")
      showToast("请输入您的密码");
   } else {
      showToast("登录中,请耐心等待...")
      pwdLogin()
      showToast("登录中,请耐心等待...");
      pwdLogin();
   }
};
  }
// 密码登录
async function pwdLogin() {
   userStore.loginCheckFactory(loginForm.value).then(() => {
      modal.closeLoading()
    userStore
      .loginCheckFactory(loginForm.value)
      .then(() => {
        modal.closeLoading();
      // 登录成功后保存密码
      savePassword();
      loginSuccess()
   }).catch(() => {
      modal.closeLoading()
        loginSuccess();
   })
};
      .catch(() => {
        modal.closeLoading();
      });
  }
function loginSuccess(result) {
   // 设置用户信息
   userStore.getInfo().then(res => {
      // 登录成功后,将客户端推送标识发送到服务器
      sendClientIdToServer();
      uni.switchTab({
         url: '/pages/index'
        url: "/pages/index",
      });
    });
  }
  // 将客户端推送标识发送到服务器
  function sendClientIdToServer() {
    // 获取本地存储的客户端标识
    const clientId = uni.getStorageSync("clientid");
    if (clientId) {
      console.log("登录成功,准备发送客户端标识到服务器:", clientId);
      // 这里调用后端接口发送客户端标识
      updateClientId({ cid: clientId })
        .then(res => {
          console.log("服务器响应:", res);
          if (res.code === 200) {
            console.log("客户端标识已成功发送到服务器");
          } else {
            console.log("服务器返回错误:", res.msg);
          }
   })
        .catch(error => {
          console.log("发送客户端标识到服务器失败:", error);
        });
      // 示例:api.updateClientId({ clientId: clientId });
      // 由于没有具体的接口,这里只打印日志
      console.log("客户端标识已发送到服务器");
    } else {
      console.log("未获取到客户端推送标识");
    }
}
// 页面加载时检查是否有保存的密码
onMounted(() => {
   loadPassword();
   getUserLoginFacotryList()
    getUserLoginFacotryList();
});
</script>
@@ -233,7 +276,7 @@
      .login-btn {
         margin-top: 60px;
         height: 50px;
         background: linear-gradient( 140deg, #00BAFF 0%, #006CFB 100%);
        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;
      }