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;
@@ -195,9 +261,7 @@
            this.$router.push({path: this.tagWel.value});
            loading.close();
          }).catch((err) => {
            console.log('err', err)
            loading.close();
          });
        }
      });
@@ -214,7 +278,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>