From 7fbce1ecd95b4e12ceda0a5b874ec8f3951625f7 Mon Sep 17 00:00:00 2001
From: wujingjing <gersonwu@qq.com>
Date: 星期五, 17 一月 2025 17:58:59 +0800
Subject: [PATCH] WI水务智能助理

---
 src/layout/component/login/Login.vue |  134 +++++++++++++++++++++++++-------------------
 1 files changed, 77 insertions(+), 57 deletions(-)

diff --git a/src/layout/component/login/Login.vue b/src/layout/component/login/Login.vue
index 18b3533..5af5bc6 100644
--- a/src/layout/component/login/Login.vue
+++ b/src/layout/component/login/Login.vue
@@ -1,52 +1,54 @@
 <template>
-	<div class="pc-login items-center justify-center" style="display: flex" v-show="isShowLogin">
-		<div class="login_box">
-			<div class="sign_in">
-				<i class="ywifont ywicon-guanbi closes" @click="handleClose"></i>
-				<h1><span>鐧诲綍 WI 姘村姟鏅鸿兘</span></h1>
-				<el-tabs v-model="state.activeLoginName" class="mt-[24px]" @tab-change="handleUserClick">
-					<el-tab-pane label="璐︽埛瀵嗙爜鐧诲綍" name="accountUser">
-						<el-form
-							ref="loginFormRef"
-							:model="state.loginForm"
-							:rules="loginRules"
-							class="demo-ruleForm mt-[24px] min-h-[140px]"
-							size="large"
-						>
-							<el-form-item label="璐﹀彿" prop="account">
-								<el-input v-model="state.loginForm.account" clearable />
-							</el-form-item>
-							<el-form-item label="瀵嗙爜" prop="pwd">
-								<el-input v-model="state.loginForm.pwd" type="password" autocomplete="off" clearable />
-							</el-form-item>
-						</el-form>
-					</el-tab-pane>
-					<el-tab-pane label="鎵嬫満鍙风櫥褰�" name="phoneUser">
-						<el-form
-							ref="formPhoneRef"
-							:rules="loginPhoneRules"
-							:model="state.loginPhoneForm"
-							size="large"
-							class="mt-[24px] min-h-[140px]"
-						>
-							<el-form-item label="鎵嬫満鍙�" prop="phoneUser">
-								<el-input v-model="state.loginPhoneForm.phoneUser" placeholder="璇疯緭鍏ユ墜鏈哄彿鐮�" clearable>
-									<template #prepend>+86</template>
-								</el-input>
-							</el-form-item>
-							<el-form-item prop="verifyCode" label="楠岃瘉鐮�">
-								<el-input v-model="state.loginPhoneForm.verifyCode" placeholder="璇疯緭鍏ュ洓浣嶉獙璇佺爜" maxlength="6" clearable>
-									<template #append>
-										<el-button type="primary" @click="handleSendVerifyCode" :disabled="hasSended">{{ sendCodeMsg }}</el-button>
-									</template>
-								</el-input>
-							</el-form-item>
-						</el-form>
-					</el-tab-pane>
-				</el-tabs>
+	<div class="pc-login" v-if="isShowLogin">
+		<div class="items-center justify-center flex">
+			<div class="login_box">
+				<div class="sign_in">
+					<i class="ywifont ywicon-guanbi closes" @click="handleClose"></i>
+					<h1><span>鐧诲綍 WI 姘村姟鏅鸿兘</span></h1>
+					<el-tabs v-model="state.activeLoginName" class="mt-[24px]" @tab-change="handleUserClick">
+						<el-tab-pane label="璐︽埛瀵嗙爜鐧诲綍" name="accountUser">
+							<el-form
+								ref="loginFormRef"
+								:model="state.loginForm"
+								:rules="loginRules"
+								class="demo-ruleForm mt-[24px] min-h-[140px]"
+								size="large"
+							>
+								<el-form-item label="璐﹀彿" prop="account">
+									<el-input v-model="state.loginForm.account" clearable v-focus />
+								</el-form-item>
+								<el-form-item label="瀵嗙爜" prop="pwd">
+									<el-input v-model="state.loginForm.pwd" type="password" autocomplete="off" clearable />
+								</el-form-item>
+							</el-form>
+						</el-tab-pane>
+						<el-tab-pane label="鎵嬫満鍙风櫥褰�" name="phoneUser">
+							<el-form
+								ref="formPhoneRef"
+								:rules="loginPhoneRules"
+								:model="state.loginPhoneForm"
+								size="large"
+								class="mt-[24px] min-h-[140px]"
+							>
+								<el-form-item label="鎵嬫満鍙�" prop="phoneUser">
+									<el-input v-model="state.loginPhoneForm.phoneUser" placeholder="璇疯緭鍏ユ墜鏈哄彿鐮�" clearable>
+										<template #prepend>+86</template>
+									</el-input>
+								</el-form-item>
+								<el-form-item prop="verifyCode" label="楠岃瘉鐮�">
+									<el-input v-model="state.loginPhoneForm.verifyCode" placeholder="璇疯緭鍏ュ洓浣嶉獙璇佺爜" maxlength="6" clearable>
+										<template #append>
+											<el-button type="primary" @click="handleSendVerifyCode" :disabled="hasSended">{{ sendCodeMsg }}</el-button>
+										</template>
+									</el-input>
+								</el-form-item>
+							</el-form>
+						</el-tab-pane>
+					</el-tabs>
 
-				<div class="mt-[24px]">
-					<el-button type="primary" @click="onSubmit" class="set-login_btn">鐧诲綍</el-button>
+					<div class="mt-[24px]">
+						<el-button type="primary" @click="onSubmit" class="set-login_btn">鐧诲綍</el-button>
+					</div>
 				</div>
 			</div>
 		</div>
@@ -56,9 +58,9 @@
 import { ElMessage, type FormInstance } from 'element-plus';
 import { computed, reactive, ref } from 'vue';
 import { PostLogin, loginMessageUser, loginVerifyMessage } from '/@/api/ai/user';
-import { isLoginStatus, isNewOldUser, isShowLogin } from '/@/stores/chatRoom';
-
-import { LoginInfo } from '/@/utils/storage';
+import { isLoginStatus, isShowLogin, userInfo } from '/@/stores/chatRoom';
+import { Local, LoginInfo } from '/@/utils/storage';
+import { userInfoKey } from '/@/utils/request';
 
 const handleClose = () => {
 	isShowLogin.value = false;
@@ -67,8 +69,6 @@
 //鍒囨崲鐢ㄦ埛鐧诲綍椤甸潰
 const handleUserClick = (item) => {
 	state.activeLoginName = item;
-	// formPhoneRef?.value?.resetFields();
-	// loginFormRef.value.resetFields();
 };
 const state = reactive({
 	activeLoginName: 'accountUser',
@@ -103,11 +103,12 @@
 });
 //鐧诲綍
 const onSubmit = async () => {
+	let res;
 	if (state.activeLoginName === 'accountUser') {
 		//璐︽埛瀵嗙爜鐧诲綍
 		const isValid = await loginFormRef.value.validate().catch(() => {});
 		if (!isValid) return;
-		const res = await PostLogin({
+		res = await PostLogin({
 			user: state.loginForm.account,
 			pass: state.loginForm.pwd,
 			client: LOGIN_CLIENT,
@@ -115,13 +116,22 @@
 		if (!res.json_ok) {
 			return ElMessage.error(res.json_msg);
 		}
-		isNewOldUser.value = res.web_login;
+		Local.set(userInfoKey, {
+			id: res.id,
+			realName: res.real_name,
+			department: res.part,
+			sex: res.sex,
+			note: res.note,
+			userName: res.name,
+			phoneNumber: res.phone,
+			email: res.email,
+		} as any);
 		LoginInfo.set(res.hswatersession, state.loginForm.account);
 	} else if (state.activeLoginName === 'phoneUser') {
 		//鎵嬫満鐧诲綍
 		const isValid = await formPhoneRef.value.validate().catch(() => {});
 		if (!isValid) return;
-		const res = await loginMessageUser({
+		res = await loginMessageUser({
 			phone: state.loginPhoneForm.phoneUser,
 			code: state.loginPhoneForm.verifyCode,
 			client: LOGIN_CLIENT,
@@ -129,12 +139,22 @@
 		if (!res.json_ok) {
 			return ElMessage.error(res.json_msg);
 		}
+		Local.set(userInfoKey, {
+			id: res.id,
+			realName: res.real_name,
+			department: res.part,
+			sex: res.sex,
+			note: res.note,
+			userName: res.name,
+			phoneNumber: res.phone,
+			email: res.email,
+		} as any);
 		LoginInfo.set(res.hswatersession, state.loginPhoneForm.phoneUser);
-		isNewOldUser.value = res.web_login;
 	}
+	Local.set('isNewUser', !res?.web_login);
 	isShowLogin.value = false;
 	isLoginStatus.value = true;
-	// window.location.reload();
+	window.location.reload();
 };
 const countdown = ref(null);
 

--
Gitblit v1.9.3