chenyc
2025-10-14 a6f64303f88508d1c4d6ce53ff46be6b745cfb93
src/views/login/component/account.vue
@@ -1,7 +1,7 @@
<template>
   <el-form size="large" class="login-content-form">
      <el-form-item class="login-animation1">
         <el-input text :placeholder="$t('message.account.accountPlaceholder1')" v-model="state.ruleForm.userName" clearable autocomplete="off">
         <el-input text placeholder="请输入用户登录账号默认是手机号码" v-model="state.ruleForm.userName" clearable autocomplete="off">
            <template #prefix>
               <el-icon class="el-input__icon"><ele-User /></el-icon>
            </template>
@@ -26,6 +26,11 @@
               </i>
            </template>
         </el-input>
      </el-form-item>
      <el-form-item v-if="state.clients.length>1">
         <el-select v-model="state.ruleForm.clientCode" placeholder="请选择登录客户">
            <el-option v-for="item in state.clients" :key="item.code" :label="item.clientName" :value="item.code" />
         </el-select>
      </el-form-item>
      <!-- <el-form-item class="login-animation3">
         <el-col :span="15">
@@ -65,11 +70,10 @@
import { useThemeConfig } from '/@/stores/themeConfig';
import { initFrontEndControlRoutes } from '/@/router/frontEnd';
import { initBackEndControlRoutes } from '/@/router/backEnd';
import { Session } from '/@/utils/storage';
import { Session,Local } from '/@/utils/storage';
import { formatAxis } from '/@/utils/formatTime';
import { NextLoading } from '/@/utils/loading';
import { signIn } from '/@/api/login';
import { error } from 'console';
import { confirmClient, getuserinfo, signIn,getclients } from '/@/api/login';
// 定义变量内容
const { t } = useI18n();
@@ -78,12 +82,15 @@
const route = useRoute();
const router = useRouter();
const state = reactive({
   LS_token: '',
   isShowPassword: false,
   ruleForm: {
      userName: 'admin',
      password: '123456',
      code: '1234',
      userName: '',
      password: '',
      code: '',
      clientCode: '',
   },
   clients: [],
   loading: {
      signIn: false,
   },
@@ -95,24 +102,82 @@
});
// 登录
const onSignIn = async () => {
   try{
      state.loading.signIn = true;
       const signInRes = await signIn(`user_no=${state.ruleForm.userName}&user_password=${state.ruleForm.password}`)
      if(signInRes.data){
         // 存储 token 到浏览器缓存
         Session.set('token', signInRes.data);
   try {
      // 第二次请求登录获取到了客户 换绑定token
      if (state.ruleForm.clientCode) {
         // 重新绑定token
         const tokenRe= await confirmClient('clientCode='+state.ruleForm.clientCode);
         // 更新token
         Session.set('token', tokenRe.data);
         // 更新客户选择缓存
         Local.set('client_'+state.ruleForm.userName,state.ruleForm.clientCode)
         console.log('更新tokeng重新请求用户信息')
         // 模拟数据,对接接口时,记得删除多余代码及对应依赖的引入。用于 `/src/stores/userInfo.ts` 中不同用户登录判断(模拟数据)
         Cookies.set('userName', state.ruleForm.userName);
         // 前端控制路由,2、请注意执行顺序
         const isNoPower = await initFrontEndControlRoutes();
         signInSuccess(isNoPower);
      } else { //第一次登录没有选择到客户
         state.loading.signIn = true;
         const signInRes = await signIn(`userno=${state.ruleForm.userName}&password=${state.ruleForm.password}`);
         if (signInRes.data) {
            // 存储 token 到浏览器缓存
            Session.set('token', signInRes.data);
            const userinfoRes = await getuserinfo();
            if (userinfoRes?.data?.clientInfos.length > 1) {
               console.log('多中心管理账号');
               console.log(userinfoRes.data);
               state.clients = userinfoRes?.data?.clientInfos;
               state.loading.signIn = false;
               console.log(Local.get('client_'+state.ruleForm.userName))
               // 看看有没有缓存客户选择
               const lscode=Local.get('client_'+state.ruleForm.userName)
               if(lscode){
                  const x=state.clients.findIndex((cl:any)=>{return cl.code===lscode})
                  if(x>=0){
                     // 默认选择客户项
                     state.ruleForm.clientCode=lscode
                  }
               }
               ElMessage.success('请选择登录客户再登录')
            } else if (
               userinfoRes?.data?.roles.findIndex((ro: any) => {
                  return ro.roleName === 'admin';
               }) >= 0
            ) {
               console.log('管理员登录');
               state.loading.signIn = false;
               state.clients=userinfoRes?.data?.管理员能看到的客户列表
               // 看看有没有缓存客户选择
               const lscode=Local.get('client_'+state.ruleForm.userName)
               if(lscode){
                  const x=state.clients.findIndex((cl:any)=>{return cl.code===lscode})
                  if(x>=0){
                     // 默认选择客户项
                     state.ruleForm.clientCode=lscode
                  }
               }
               ElMessage.success('请选择登录客户再登录')
            } else {
               console.log('普通登录');
               console.log('-----------用token 换用户信息---------------');
               // 模拟数据,对接接口时,记得删除多余代码及对应依赖的引入。用于 `/src/stores/userInfo.ts` 中不同用户登录判断(模拟数据)
               Cookies.set('userName', state.ruleForm.userName);
               // 前端控制路由,2、请注意执行顺序
               const isNoPower = await initFrontEndControlRoutes();
               signInSuccess(isNoPower);
            }
         }
      }
   }catch(err){
      console.log(err)
      state.loading.signIn = false
   } catch (err) {
      console.log(err);
      state.loading.signIn = false;
   }
   // 存储 token 到浏览器缓存
   // Session.set('token', '999');