From 03c38da7555b69cb598e534c97fa25bd5385701c Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期二, 29 十月 2024 17:55:50 +0800
Subject: [PATCH] 表单定义权限控制和属性权限&&成员管理添加密级&&首页修改密码&&登录判断过期停用修改密码后跳转首页

---
 Source/plt-web/plt-web-ui/src/page/login/userlogin.vue |  106 +++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 98 insertions(+), 8 deletions(-)

diff --git a/Source/plt-web/plt-web-ui/src/page/login/userlogin.vue b/Source/plt-web/plt-web-ui/src/page/login/userlogin.vue
index fad37a7..48701ab 100644
--- a/Source/plt-web/plt-web-ui/src/page/login/userlogin.vue
+++ b/Source/plt-web/plt-web-ui/src/page/login/userlogin.vue
@@ -46,7 +46,16 @@
                  @click.native.prevent="handleLogin">{{ $t('login.submit') }}
       </el-button>
     </el-form-item>
-
+    <el-dialog
+      v-dialogDrag
+      :visible.sync="passwordVisible"
+      append-to-body="true"
+      class="avue-dialog"
+      style="margin-top: -15vh"
+      title="淇敼瀵嗙爜"
+      width="50%">
+      <avue-form ref="changeForm" v-model="passwordForm" :option="passwordOption" @submit="submitSwitch"/>
+    </el-dialog>
 
   </el-form>
 </template>
@@ -55,11 +64,63 @@
 import {mapGetters} from "vuex";
 import {info} from "@/api/system/tenant";
 import {getTopUrl} from "@/util/util";
+import func from "@/util/func";
+import {changePassword} from "@/api/user";
 
 export default {
   name: "userlogin",
   data() {
     return {
+      userName:'',
+      passwordVisible: false,
+      passwordForm: {},
+      passwordOption: {
+        submitText: '淇濆瓨',
+        column: [
+          {
+            label: '鐧婚檰瀵嗙爜',
+            prop: 'oldPassword',
+            span: 24,
+            labelWidth: "15%",
+            type: 'password',
+            rules: [
+              {
+                required: true,
+                message: '璇疯緭鍏ョ櫥闄嗗瘑鐮�',
+                trigger: 'blur'
+              }
+            ]
+          },
+          {
+            label: '鏂扮櫥闄嗗瘑鐮�',
+            prop: 'password',
+            span: 24,
+            labelWidth: "15%",
+            type: 'password',
+            rules: [
+              {
+                required: true,
+                message: '璇疯緭鍏ユ柊鐧婚檰瀵嗙爜',
+                trigger: 'blur'
+              }
+            ]
+          },
+          {
+            label: '鏂板瘑鐮佺櫥闄嗙‘璁�',
+            prop: 'confirmPassword',
+            span: 24,
+            labelWidth: "15%",
+            type: 'password',
+            rules: [
+              {
+                required: true,
+                message: '璇风‘璁ょ櫥闄嗗瘑鐮�',
+                trigger: 'blur'
+              }
+            ]
+          }
+        ]
+      },
       tenantMode: this.website.tenantMode,
       ButtonList: [],
       loginForm: {
@@ -175,9 +236,14 @@
             spinner: "el-icon-loading"
           });
           this.$store.dispatch("LoginByUsername", this.loginForm).then((data) => {
-            if (data.obj.passwordInfo) {
-              this.$message.warning(data.obj.passwordInfo);
+            if (data.obj.failCode !== 'loginSuccess') {
+              // console.log('data', data);
+              this.$message.error(data.msg);
+              if (data.obj.mustChangePassword) {
+                this.passwordVisible = true;
+              }
             }
+
             if (this.website.switchMode) {
               const deptId = this.userInfo.deptOid;
               const roleId = this.userInfo.userOid;
@@ -190,14 +256,11 @@
                 });
                 return false;
               }
-            }
-            ;
+            };
             this.$router.push({path: this.tagWel.value});
             loading.close();
           }).catch((err) => {
-            console.log('err', err)
             loading.close();
-
           });
         }
       });
@@ -214,7 +277,34 @@
           this.$parent.$refs.login.style.backgroundImage = `url(${data.data.backgroundUrl})`;
         }
       })
-    }
+    },
+
+    submitSwitch(form, done) {
+      let userInfo = JSON.parse(localStorage.getItem('saber-userInfo'));
+
+      let params = {
+        userName: this.loginForm.username,
+        oldPassword: func.encryptData(form.oldPassword, 'daliantan0v0vcip'),
+        password: func.encryptData(form.password, 'daliantan0v0vcip'),
+        confirmPassword: func.encryptData(form.confirmPassword, 'daliantan0v0vcip'),
+      }
+      changePassword(params).then(res => {
+        if (res.data.code === 200) {
+          this.$message.success('淇敼鎴愬姛锛屽嵆灏嗚烦杞埌棣栭〉');
+          this.passwordVisible = false;
+          this.$refs.changeForm.resetFields();
+          this.$store.dispatch("LoginByUsername",{...this.loginForm,password:form.confirmPassword}).then(data => {
+            if (data.obj.failCode !== 'loginSuccess') {
+              this.$message.error(data.msg);
+            }
+            this.$router.push({path: this.tagWel.value});
+          })
+        }
+      }).catch(err => {
+        console.log(err);
+      })
+      done();
+    },
   }
 };
 </script>

--
Gitblit v1.9.3