From e6ce09ca661049fd9a4034e4db5a7584cae5c1ec Mon Sep 17 00:00:00 2001
From: Your Name <123456>
Date: 星期二, 20 九月 2022 10:41:37 +0800
Subject: [PATCH] Merge branch 'master' of https://sinanoaq.cn:8888/r/gtqt

---
 src/views/loginPage/component/accountLogin.vue |  175 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 171 insertions(+), 4 deletions(-)

diff --git a/src/views/loginPage/component/accountLogin.vue b/src/views/loginPage/component/accountLogin.vue
index 8da2b39..a7d06a9 100644
--- a/src/views/loginPage/component/accountLogin.vue
+++ b/src/views/loginPage/component/accountLogin.vue
@@ -19,7 +19,7 @@
         </el-form-item>
         <el-form-item class="login-animation4 codeDeal">
             <el-checkbox v-model="saveCode" label="记住密码" size="large" />
-            <span class="forgetCode">忘记密码?</span>
+            <span class="forgetCode" @click="identify">忘记密码?</span>
         </el-form-item>
         <el-form-item class="login-animation4">
             <el-button type="primary" class="login-content-submit" round @click="onSignIn" :loading="loading.signIn">
@@ -27,10 +27,49 @@
             </el-button>
         </el-form-item>
     </el-form>
+    <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-form-item>
+            <el-form-item label="身份证号" prop="ID">
+                <el-input v-model="identity.ID"/>
+            </el-form-item>
+            <el-form-item label="手机号" prop="phone">
+                <el-input v-model="identity.phone"/>
+            </el-form-item>
+        </el-form>
+        <template #footer>
+              <span class="dialog-footer">
+                <el-button type="warning" @click="identifyDialog = false" size="default">取消</el-button>
+                <el-button type="primary" @click="confirmIdentity(identifyRef)" size="default">确认</el-button>
+              </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 } from 'vue';
+import {toRefs, reactive, defineComponent, computed, ref} from 'vue';
 import { useRoute, useRouter } from 'vue-router';
 import { ElMessage } from 'element-plus';
 import { useI18n } from 'vue-i18n';
@@ -44,7 +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"
 export default defineComponent({
     name: 'accountLogin',
     setup() {
@@ -60,8 +102,47 @@
             },
             loading: {
                 signIn: false
-            }
+            },
+            identity:{
+                name: '',
+                ID: '',
+                phone: ''
+            },
+            codeForm:{
+                pass: '',
+                checkPass: ''
+            },
+            identifyDialog: false,
+            changeDialog: false
         });
+        const identifyRef = ref<FormInstance>()
+        const codeRef = ref<FormInstance>()
+        const checkCode = (rule: any, value: any, callback: any) => {
+            if (value == '') {
+                return callback(new Error('该内容不能为空'))
+            }
+            setTimeout(() => {
+                if (!verifyIdCard(value)) {
+                    callback(new Error('身份证格式不正确'))
+                }else callback();
+            }, 400)
+        }
+        const checkPhone = (rule: any, value: any, callback: any) => {
+            if (value == '') {
+                return callback(new Error('该内容不能为空'))
+            }
+            setTimeout(() => {
+                if (!verifyPhone(value)) {
+                    callback(new Error('手机号格式不正确'))
+                }else callback();
+            }, 400)
+        }
+        const identityRules = reactive({
+            userName: [{ required: true, message: '该内容不能为空', trigger: 'blur' }],
+            ID: [{ required: true, validator: checkCode, trigger: 'blur'}],
+            phone: [{ required: true, validator: checkPhone, trigger: 'blur' }]
+        });
+
         // 时间获取
         const currentTime = computed(() => {
             return formatAxis(new Date());
@@ -126,8 +207,94 @@
             // 添加 loading,防止第一次进入界面时出现短暂空白
             // NextLoading.start();
         };
+
+        // 修改密码
+        const identify =()=>{
+            state.identifyDialog = true
+        }
+
+        // 提交验证
+        const confirmIdentity = (formEl: FormInstance | undefined) => {
+            if (!formEl) return
+            formEl.validate((valid) => {
+                if (valid) {
+                    state.identifyDialog = false
+                    state.changeDialog = true
+                } else {
+                    console.log('error submit!')
+                    return false
+                }
+            })
+        }
+        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()
+            }
+        }
+
+        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