From 140e83402814ffd2e92dfe313f5681feedd39f86 Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期二, 06 二月 2024 16:49:12 +0800 Subject: [PATCH] 修复弹窗bug --- src/views/Login.vue | 106 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 97 insertions(+), 9 deletions(-) diff --git a/src/views/Login.vue b/src/views/Login.vue index da63a14..9eb9abe 100644 --- a/src/views/Login.vue +++ b/src/views/Login.vue @@ -15,9 +15,10 @@ > <a-form-model-item ref="name" prop="name"> <a-input - placeholder="请输入用户" + placeholder="请输入用户名" size="large" v-model="form.name" + autocomplete="new-password" > <a-icon slot="prefix" type="user" style="color:rgba(0,0,0,.25)" /> </a-input> @@ -28,6 +29,7 @@ placeholder="请输入密码" size="large" v-model="form.pwd" + autocomplete="new-password" > <a-icon slot="prefix" type="lock" style="color:rgba(0,0,0,.25)" /> </a-input-password> @@ -78,8 +80,8 @@ <!-- </a-tab-pane>--> <!-- </a-tabs>--> <div style="margin-bottom: 20px"> - <a-checkbox :checked="true" style="color:#fff;">自动登录</a-checkbox> - <a style="float: right">忘记密码</a> + <a-checkbox :checked="saveAccount" style="color:#fff;" @change="isSave">记住密码</a-checkbox> +<!-- <a style="float: right">忘记密码</a>--> </div> <a-form-item style="text-align: center"> <a-button @@ -88,11 +90,13 @@ style="width: 100%" size="large" @click="handleSubmit" + :loading="isLoading" + v-preventReClick="1500" > 登录 </a-button> </a-form-item> - <center><p>技术支持:中国科学院</p></center> + <center><p>技术支持:技术保障部</p></center> </a-form-model> </div> </div> @@ -100,12 +104,18 @@ <script> -import { Login, getMenuAdmin } from "@/api/login"; +import { login, getMenuAdmin } from "@/api/login"; import Cookies from 'js-cookie'; +import {Base64} from "js-base64"; +import {getAreaWithUserIfo} from "@/api/user"; + + export default { name: "login", data() { return { + isLoading: false, + saveAccount: false, // hasErrors, // form: this.$form.createForm(this), form: { @@ -119,29 +129,107 @@ menu: [] }; }, - mounted() { + created() { // this.$nextTick(() => { // this.form.validateFields(); // }); + this.hasUserCodeOrPassword() }, methods: { + hasUserCodeOrPassword(){ + if (localStorage.getItem('userName') && localStorage.getItem('userPassword')) { + this.form.name = localStorage.getItem('userName') + this.form.pwd = Base64.decode(localStorage.getItem('userPassword'))//解密 + this.saveAccount = true + } + }, + + isSave(e){ + const t = this + t.saveAccount = !t.saveAccount + }, + handleSubmit() { this.$refs.ruleForm.validate(async (valid) => { if (valid) { - const res = await Login(this.form) + this.isLoading = true + const res = await login(this.form) if (res.data.code === 100) { Cookies.set('resTk', res.data.data.tk); Cookies.set('resUid', res.data.data.uid); + Cookies.set('userInfo',JSON.stringify(res.data.data),{expires: 7}) + await this.getAreaUsers(res.data.data.districtId) + if (this.saveAccount) { + localStorage.setItem('userName', this.form.name) + localStorage.setItem('userPassword', Base64.encode(this.form.pwd)) + } else { + localStorage.removeItem('userName') + localStorage.removeItem('userPassword') + } this.$router.push('/home') } else { - console.log(res.data.msg) this.$message.warning(res.data.msg); } + this.isLoading = false } else { console.log('error submit!!'); return false; } }); + }, + + async getAreaUsers(districtId) { + let t = this + let res = await getAreaWithUserIfo() + if (res.data.code == 100) { + if (res.data.data) { + t.userTitTree(res.data.data) + const areaUsers = t.findNodeById(res.data.data, districtId).children + localStorage.removeItem('areaUsers') + localStorage.setItem('areaUsers',JSON.stringify(areaUsers)) + } else { + console.log('暂无数据') + } + } else { + this.$message.warning(res.data.msg); + } + }, + + // 根据id查对象 + findNodeById(data, value) { + for (const node of data) { + if (node.id === value) { + return node; + } + if (node.children) { + const foundNode = this.findNodeById(node.children, value); + if (foundNode) { + return foundNode; + } + } + } + return null; + }, + + // 将树状数据name字段放入users的姓名电话 + userTitTree(treeData) { + for (const node of treeData) { + if (node.users) { + node.users = node.users.filter(i => i.roleId == 3) + node.users = node.users.map((i) => { + return { + ...i, + unittype: node.type, + districtId: node.id + } + }) + node.name = node.name + '(' + node.users.map(i => i.realName + ' ' + i.phone).join(',') + ')' + } + if (node.children) { + this.userTitTree(node.children) + } + } + return treeData } }, }; @@ -170,7 +258,7 @@ } .hedaer { margin: 0px auto; - padding-top:100px; + padding-top:200px; width: 1000px; text-align: center; text-shadow:0 0 1px #000; -- Gitblit v1.9.2