| | |
| | | <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> |
| | |
| | | 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; |
| | |
| | | //切换用户登录页面 |
| | | const handleUserClick = (item) => { |
| | | state.activeLoginName = item; |
| | | // formPhoneRef?.value?.resetFields(); |
| | | // loginFormRef.value.resetFields(); |
| | | }; |
| | | const state = reactive({ |
| | | activeLoginName: 'accountUser', |
| | |
| | | }); |
| | | //登录 |
| | | 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, |
| | |
| | | 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, |
| | |
| | | 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); |
| | | |