| | |
| | | </el-form-item> |
| | | <el-checkbox v-model="loginForm.rememberMe" style="margin:0px 0px 25px 0px;">记住密码</el-checkbox> |
| | | <el-form-item style="float: right;"> |
| | | <el-button circle title="微信登录"> |
| | | <svg-icon icon-class="wechat" @click="doSocialLogin('wechat')" /> |
| | | <el-button circle title="微信登录" @click="doSocialLogin('wechat')"> |
| | | <svg-icon icon-class="wechat" /> |
| | | </el-button> |
| | | <el-button circle title="MaxKey登录"> |
| | | <svg-icon icon-class="maxkey" @click="doSocialLogin('maxkey')" /> |
| | | <el-button circle title="MaxKey登录" @click="doSocialLogin('maxkey')"> |
| | | <svg-icon icon-class="maxkey" /> |
| | | </el-button> |
| | | <el-button circle title="Gitee登录"> |
| | | <svg-icon icon-class="gitee" @click="doSocialLogin('gitee')" /> |
| | | <el-button circle title="Gitee登录" @click="doSocialLogin('gitee')"> |
| | | <svg-icon icon-class="gitee" /> |
| | | </el-button> |
| | | <el-button circle title="Github登录"> |
| | | <svg-icon icon-class="github" @click="doSocialLogin('github')" /> |
| | | <el-button circle title="Github登录" @click="doSocialLogin('github')"> |
| | | <svg-icon icon-class="github" /> |
| | | </el-button> |
| | | </el-form-item> |
| | | <el-form-item style="width:100%;"> |
| | |
| | | <script setup lang="ts"> |
| | | import { getCodeImg, getTenantList } from '@/api/login'; |
| | | import { authBinding } from '@/api/system/social/auth'; |
| | | import Cookies from 'js-cookie'; |
| | | import { encrypt, decrypt } from '@/utils/jsencrypt'; |
| | | import { useUserStore } from '@/store/modules/user'; |
| | | import { LoginData, TenantVO } from '@/api/types'; |
| | | import { to } from 'await-to-js'; |
| | |
| | | rememberMe: false, |
| | | code: '', |
| | | uuid: '' |
| | | }); |
| | | } as LoginData); |
| | | |
| | | const loginRules: ElFormRules = { |
| | | tenantId: [{ required: true, trigger: "blur", message: "请输入您的租户编号" }], |
| | |
| | | loginRef.value?.validate(async (valid: boolean, fields: any) => { |
| | | if (valid) { |
| | | loading.value = true; |
| | | // 勾选了需要记住密码设置在 cookie 中设置记住用户名和密码 |
| | | // 勾选了需要记住密码设置在 localStorage 中设置记住用户名和密码 |
| | | if (loginForm.value.rememberMe) { |
| | | Cookies.set("tenantId", loginForm.value.tenantId, { expires: 30 }); |
| | | Cookies.set('username', loginForm.value.username, { expires: 30 }); |
| | | Cookies.set('password', String(encrypt(loginForm.value.password)), { expires: 30 }); |
| | | Cookies.set('rememberMe', String(loginForm.value.rememberMe), { expires: 30 }); |
| | | localStorage.setItem("tenantId", String(loginForm.value.tenantId)); |
| | | localStorage.setItem('username', String(loginForm.value.username)); |
| | | localStorage.setItem('password', String(loginForm.value.password)); |
| | | localStorage.setItem('rememberMe', String(loginForm.value.rememberMe)); |
| | | } else { |
| | | // 否则移除 |
| | | Cookies.remove("tenantId"); |
| | | Cookies.remove('username'); |
| | | Cookies.remove('password'); |
| | | Cookies.remove('rememberMe'); |
| | | localStorage.removeItem("tenantId"); |
| | | localStorage.removeItem('username'); |
| | | localStorage.removeItem('password'); |
| | | localStorage.removeItem('rememberMe'); |
| | | } |
| | | // 调用action的登录方法 |
| | | const [err] = await to(userStore.login(loginForm.value)); |
| | |
| | | } |
| | | }; |
| | | |
| | | const getCookie = () => { |
| | | const tenantId = Cookies.get("tenantId"); |
| | | const username = Cookies.get('username'); |
| | | const password = Cookies.get('password'); |
| | | const rememberMe = Cookies.get('rememberMe'); |
| | | const getLoginData = () => { |
| | | const tenantId = localStorage.getItem("tenantId"); |
| | | const username = localStorage.getItem('username'); |
| | | const password = localStorage.getItem('password'); |
| | | const rememberMe = localStorage.getItem('rememberMe'); |
| | | loginForm.value = { |
| | | tenantId: tenantId === undefined ? loginForm.value.tenantId : tenantId, |
| | | username: username === undefined ? loginForm.value.username : username, |
| | | password: password === undefined ? loginForm.value.password : (decrypt(password) as string), |
| | | rememberMe: rememberMe === undefined ? false : Boolean(rememberMe) |
| | | }; |
| | | tenantId: tenantId === null ? String(loginForm.value.tenantId) : tenantId, |
| | | username: username === null ? String(loginForm.value.username) : username, |
| | | password: password === null ? String(loginForm.value.password) : String(password), |
| | | rememberMe: rememberMe === null ? false : Boolean(rememberMe) |
| | | } as LoginData; |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | |
| | | //检测租户选择框的变化 |
| | | watch(() => loginForm.value.tenantId, (val: string) => { |
| | | Cookies.set("tenantId", loginForm.value.tenantId, { expires: 30 }) |
| | | watch(() => loginForm.value.tenantId, () => { |
| | | localStorage.setItem("tenantId", String(loginForm.value.tenantId)) |
| | | }); |
| | | |
| | | /** |
| | |
| | | onMounted(() => { |
| | | getCode(); |
| | | initTenantList(); |
| | | getCookie(); |
| | | getLoginData(); |
| | | }); |
| | | </script> |
| | | |