From 83aa382fd3b88ec7a564f14d41a9c8e5d43beeb3 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期一, 09 十二月 2024 10:26:31 +0800
Subject: [PATCH] 修改表单定义样式&&修改ui上下文btmName&&添加登录密码即将过期进入首页并提醒

---
 Source/plt-web/plt-web-ui/src/page/login/userlogin.vue |  131 ++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 114 insertions(+), 17 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..00bf9eb 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
@@ -7,17 +7,6 @@
            status-icon
   >
 
-    <!--      <el-form-item prop="selectInput">-->
-    <!--        <el-select v-model="loginForm.value" placeholder="璇烽�夋嫨缁勭粐" style="width: 326px" @change="selectchange">-->
-    <!--          <i slot="prefix" class="el-icon-s-operation"/>-->
-    <!--          <el-option-->
-    <!--            v-for="(item,index) in loginForm.region"-->
-    <!--            :key="index"-->
-    <!--            :label="item.TENANT_NAME"-->
-    <!--            :value="item.TENANT_ID">-->
-    <!--          </el-option>-->
-    <!--        </el-select>-->
-    <!--      </el-form-item>-->
     <el-form-item prop="username">
       <el-input v-model="loginForm.username"
                 :placeholder="$t('login.username')"
@@ -46,7 +35,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 +53,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: {
@@ -162,6 +212,10 @@
       done();
     },
     handleLogin() {
+      if (!this.loginForm.username) {
+        this.$message.error('璇疯緭鍏ョ敤鎴峰悕');
+        return;
+      }
       if (!this.loginForm.password) {
         this.$message.error('璇疯緭鍏ュ瘑鐮�');
         return;
@@ -175,9 +229,26 @@
             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') {
+              if (data.obj.failCode === 'passwordRemainDay') {
+                this.$message.warning(data.obj.passwordInfo);
+                this.$router.push({path: this.tagWel.value});
+                loading.close();
+                return;
+              }
+
+              if (data.obj.failCode === 'userIsLocked') {
+                this.$message.error(`鐧诲綍閿欒娆℃暟杩囧锛岃处鍙疯閿佸畾銆�${data.obj.failMsgArray[0]}銆戝垎閽焋);
+                loading.close();
+                return;
+              }
+              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;
@@ -192,12 +263,11 @@
               }
             }
             ;
+
             this.$router.push({path: this.tagWel.value});
             loading.close();
           }).catch((err) => {
-            console.log('err', err)
             loading.close();
-
           });
         }
       });
@@ -214,7 +284,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' && data.obj.failCode !== 'passwordRemainDay') {
+              this.$message.error(data.msg);
+            }
+            this.$router.push({path: this.tagWel.value});
+          })
+        }
+      }).catch(err => {
+        console.log(err);
+      })
+      done();
+    },
   }
 };
 </script>

--
Gitblit v1.9.3