From 1b9fea7d4af68d8f933b2dc42bf6084b9646f64c Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期二, 04 三月 2025 08:39:55 +0800
Subject: [PATCH] 修改作业等级名称

---
 src/views/loginPage/component/accountLogin.vue |  223 ++++++++++++++++++++++++++++++-------------------------
 1 files changed, 122 insertions(+), 101 deletions(-)

diff --git a/src/views/loginPage/component/accountLogin.vue b/src/views/loginPage/component/accountLogin.vue
index a7d06a9..39ec524 100644
--- a/src/views/loginPage/component/accountLogin.vue
+++ b/src/views/loginPage/component/accountLogin.vue
@@ -13,7 +13,7 @@
                     <el-icon class="el-input__icon" style="margin-right: 20px"><img src="../../../assets/loginPage/login_icon_password.png" style="width: 24px; height: 24px" /></el-icon>
                 </template>
                 <template #suffix>
-                    <i class="iconfont el-input__icon login-content-password" :class="isShowPassword ? 'icon-yincangmima' : 'icon-xianshimima'" @click="isShowPassword = !isShowPassword"> </i>
+                    <i class="iconfont el-input__icon login-content-password" :class="isShowPassword ? 'icon-xianshimima' : 'icon-yincangmima'" @click="isShowPassword = !isShowPassword"> </i>
                 </template>
             </el-input>
         </el-form-item>
@@ -27,16 +27,36 @@
             </el-button>
         </el-form-item>
     </el-form>
-    <el-dialog v-model="identifyDialog" title="重置密码须进行身份校验(仅供测试)" width="30%" center @close="clearIdentity">
+    <el-dialog v-model="identifyDialog" title="重置密码" width="30%" center @close="clearIdentity">
         <el-form :model="identity" label-width="80px" ref="identifyRef" :rules="identityRules">
-            <el-form-item label="姓名" prop="userName">
-                <el-input v-model="identity.userName"/>
+            <el-divider border-style="dashed">身份验证</el-divider>
+            <el-form-item label="姓名" prop="realName">
+                <el-input v-model="identity.realName"/>
             </el-form-item>
-            <el-form-item label="身份证号" prop="ID">
-                <el-input v-model="identity.ID"/>
+            <el-form-item label="身份证号" prop="identify">
+                <el-input v-model="identity.identify"/>
             </el-form-item>
             <el-form-item label="手机号" prop="phone">
                 <el-input v-model="identity.phone"/>
+            </el-form-item>
+            <el-divider border-style="dashed">重设密码</el-divider>
+            <el-form-item label="密码" prop="password">
+                <el-input v-model="identity.password" :type="showPass ? 'text': 'password'" autocomplete="off">
+                    <template #suffix>
+                        <i class="iconfont el-input__icon login-content-password" :class="showPass ? 'icon-xianshimima' : 'icon-yincangmima'" @click="showPass = !showPass"> </i>
+                    </template>
+                </el-input>
+            </el-form-item>
+            <el-form-item label="确认密码" prop="rePassword">
+                <el-input
+                        v-model="identity.rePassword"
+                        :type="showRePass ? 'text': 'password'"
+                        autocomplete="off"
+                >
+                    <template #suffix>
+                        <i class="iconfont el-input__icon login-content-password" :class="showRePass ? 'icon-xianshimima' : 'icon-yincangmima'" @click="showRePass = !showRePass"> </i>
+                    </template>
+                </el-input>
             </el-form-item>
         </el-form>
         <template #footer>
@@ -46,30 +66,10 @@
               </span>
         </template>
     </el-dialog>
-    <el-dialog v-model="changeDialog" title="修改密码" width="30%" center @close="clearCode">
-        <el-form :model="codeForm" label-width="80px" ref="codeRef" :rules="codeRules">
-            <el-form-item label="密码" prop="pass">
-                <el-input v-model="codeForm.pass" type="password" autocomplete="off" />
-            </el-form-item>
-            <el-form-item label="确认密码" prop="checkPass">
-                <el-input
-                        v-model="codeForm.checkPass"
-                        type="password"
-                        autocomplete="off"
-                />
-            </el-form-item>
-        </el-form>
-        <template #footer>
-              <span class="dialog-footer">
-                <el-button type="warning" @click="changeDialog = false" size="default">取消</el-button>
-                <el-button type="primary" @click="confirmChange(codeRef)" size="default">确认修改</el-button>
-              </span>
-        </template>
-    </el-dialog>
 </template>
 
 <script lang="ts">
-import {toRefs, reactive, defineComponent, computed, ref} from 'vue';
+import {toRefs, reactive, defineComponent, computed, ref, onMounted} from 'vue';
 import { useRoute, useRouter } from 'vue-router';
 import { ElMessage } from 'element-plus';
 import { useI18n } from 'vue-i18n';
@@ -83,10 +83,10 @@
 import { NextLoading } from '/@/utils/loading';
 import { useLoginApi } from '/@/api/login';
 import { useUserInfo } from '/@/stores/userInfo';
-import { ElMessage } from 'element-plus'
 import type { FormInstance, FormRules } from 'element-plus'
 import {workApplyApi} from "/@/api/specialWorkSystem/workApply";
-import {verifyPhone,verifyIdCard} from "/@/utils/toolsValidate"
+import {verifyPhone,verifyIdCard,verifyPwd} from "/@/utils/toolsValidate"
+import { Base64 } from 'js-base64'
 export default defineComponent({
     name: 'accountLogin',
     setup() {
@@ -96,6 +96,9 @@
         const router = useRouter();
         const state = reactive({
             isShowPassword: false,
+            showPass: false,
+            showRePass: false,
+            saveCode: false,
             ruleForm: {
                 username: '',
                 password: ''
@@ -104,19 +107,29 @@
                 signIn: false
             },
             identity:{
-                name: '',
-                ID: '',
-                phone: ''
+                realName: '',
+                identify: '',
+                phone: '',
+                password: '',
+                rePassword: ''
             },
-            codeForm:{
-                pass: '',
-                checkPass: ''
-            },
-            identifyDialog: false,
-            changeDialog: false
+            identifyDialog: false
         });
         const identifyRef = ref<FormInstance>()
-        const codeRef = ref<FormInstance>()
+
+        // 页面载入时执行方法
+        onMounted(() => {
+            hasUserCodeOrPassword()
+            // getAllDepartment();
+        });
+
+        const hasUserCodeOrPassword =()=> {
+            if (localStorage.getItem('userCode') && localStorage.getItem('userPassword')) {
+                state.ruleForm.username = localStorage.getItem('userCode') as string
+                state.ruleForm.password = Base64.decode(localStorage.getItem('userPassword'))//解密
+                state.saveCode = true
+            }
+        }
         const checkCode = (rule: any, value: any, callback: any) => {
             if (value == '') {
                 return callback(new Error('该内容不能为空'))
@@ -137,10 +150,46 @@
                 }else callback();
             }, 400)
         }
+
+        let validatePwd = (rule: any, value: any, callback: any)=>{
+          if(value === ''){
+            callback(new Error('请输入密码'))
+          }else{
+            if(!verifyPwd(value)){
+              callback(new Error('密码须包含字母、数字、特殊字符,长度在6-16之间'))
+            }else{
+              callback()
+            }
+          }
+        }
+
+        // 修改密码
+        // const validatePass = (rule: any, value: any, callback: any) => {
+        //     if (value === '') {
+        //         callback(new Error('该内容不能为空'))
+        //     } else {
+        //         if (state.identity.rePassword !== '') {
+        //             if (!identifyRef.value) return
+        //             identifyRef.value.validateField('rePassword', () => null)
+        //         }
+        //         callback()
+        //     }
+        // }
+        const validatePass2 = (rule: any, value: any, callback: any) => {
+            if (value === '') {
+                callback(new Error('该内容不能为空'))
+            } else if (value !== state.identity.password) {
+                callback(new Error("两次输入的密码不一致!"))
+            } else {
+                callback()
+            }
+        }
         const identityRules = reactive({
-            userName: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
-            ID: [{ required: true, validator: checkCode, trigger: 'blur'}],
-            phone: [{ required: true, validator: checkPhone, trigger: 'blur' }]
+            realName: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            identify: [{ required: true, validator: checkCode, trigger: 'blur'}],
+            phone: [{ required: true, validator: checkPhone, trigger: 'blur' }],
+            password: [{ required: true, validator: validatePwd, trigger: 'blur' }],
+            rePassword: [{ required: true, validator: validatePass2, trigger: 'blur' }]
         });
 
         // 时间获取
@@ -151,15 +200,26 @@
         const onSignIn = async () => {
             state.loading.signIn = true;
             // 存储 token 到浏览器缓存
-            let res = await useLoginApi().signIn(state.ruleForm);
+            const data = JSON.parse(JSON.stringify(state.ruleForm))
+            data.password = Base64.encode(data.password)
+            let res = await useLoginApi().signIn(data);
             if (res.data.code === '200') {
                 await userInfo.setUserInfos(res.data.data);
                 Cookies.set('token', res.data.data.accessToken);
                 Cookies.set('projectId', '');
                 Cookies.set('uid', res.data.data.uid);
+                Cookies.set('depId', res.data.data.depId);
                 // Session.set('token', res.data.data.accessToken);
                 // Session.set('projectId', '');
                 // Session.set('uid', res.data.data.uid);
+              console.log(state.ruleForm,'form')
+                if (state.saveCode) {
+                    localStorage.setItem('userCode', state.ruleForm.username)
+                    localStorage.setItem('userPassword', Base64.encode(state.ruleForm.password),)
+                } else {
+                    localStorage.removeItem('userCode')
+                    localStorage.removeItem('userPassword')
+                }
                 await signInSuccess();
             } else {
                 state.loading.signIn = false;
@@ -187,6 +247,7 @@
         // 登录成功后的跳转
         const signInSuccess = async () => {
             // 初始化登录成功时间问候语
+            console.log('登录>>>')
             let currentTimeInfo = currentTime.value;
             // 登录成功,跳到转首页
             // 如果是复制粘贴的路径,非首页/登录页,那么登录成功后重定向到对应的路径中
@@ -216,10 +277,21 @@
         // 提交验证
         const confirmIdentity = (formEl: FormInstance | undefined) => {
             if (!formEl) return
-            formEl.validate((valid) => {
+            formEl.validate(async(valid) => {
                 if (valid) {
+                    const res = await useLoginApi().changeCode(state.identity);
+                    if(res.data.code == '200'){
+                        ElMessage({
+                            type: 'success',
+                            message: '修改成功,请使用新密码登录'
+                        });
+                    }else{
+                        ElMessage({
+                            type: 'warning',
+                            message:  res.data.msg
+                        });
+                    }
                     state.identifyDialog = false
-                    state.changeDialog = true
                 } else {
                     console.log('error submit!')
                     return false
@@ -228,72 +300,21 @@
         }
         const clearIdentity = ()=>{
             state.identity = {
-                name: '',
-                ID: '',
-                phone: ''
-            }
-        }
-        // 修改密码
-        const validatePass = (rule: any, value: any, callback: any) => {
-            if (value === '') {
-                callback(new Error('请输入密码'))
-            } else {
-                if (state.codeForm.checkPass !== '') {
-                    if (!codeRef.value) return
-                    codeRef.value.validateField('checkPass', () => null)
-                }
-                callback()
-            }
-        }
-        const validatePass2 = (rule: any, value: any, callback: any) => {
-            if (value === '') {
-                callback(new Error('请输入密码'))
-            } else if (value !== state.codeForm.pass) {
-                callback(new Error("两次输入的密码不一致!"))
-            } else {
-                callback()
+                realName: '',
+                identify: '',
+                phone: '',
+                password: '',
+                rePassword: ''
             }
         }
 
-        const codeRules = reactive({
-            pass: [{ required: true, validator: validatePass, trigger: 'blur' }],
-            checkPass: [{ required: true, validator: validatePass2, trigger: 'blur' }]
-        })
-
-        const confirmChange = (formEl: FormInstance | undefined) => {
-            if (!formEl) return
-            formEl.validate((valid) => {
-                if (valid) {
-                    ElMessage({
-                        type: 'success',
-                        message: '修改成功,请使用新密码登录'
-                    });
-                    state.changeDialog = false
-                    router.push('/login');
-                } else {
-                    console.log('error submit!')
-                    return false
-                }
-            })
-        }
-        const clearCode=()=>{
-            state.codeForm = {
-                pass: '',
-                checkPass: ''
-            }
-        }
         return {
             identifyRef,
-            codeRef,
             identityRules,
-            codeRules,
             clearIdentity,
             onSignIn,
             identify,
             confirmIdentity,
-            confirmChange,
-            clearCode,
-            validatePass,
             validatePass2,
             ...toRefs(state)
         };

--
Gitblit v1.9.2