田源
2025-01-16 404966637eda6881a0f17683c5aacc7c1c34aed8
Source/plt-web/plt-web-ui/src/views/system/userInfo/index.vue
@@ -1,25 +1,55 @@
<template>
  <div>
    <basic-container>
      <avue-form
        ref="form"
        v-model="form"
        :option="option"
        @submit="handleSubmit"
        @tab-click="handleTabClick">
        <template slot="avatar" slot-scope="{disabled,size}">
          <div>
            <userAvatar :avatar="form.avatar"/>
          </div>
        </template>
      </avue-form>
      <el-tabs v-model="index" @tab-click="handleTabClick">
        <el-tab-pane label="个人信息" name="0">
          <el-form ref="userForm" :model="userForm" :rules="userRules" label-width="90px" size="small">
            <el-form-item label="头像:">
              <userAvatar :avatar="userForm.avatar"/>
            </el-form-item>
            <el-form-item label="用户名:">
              <el-input v-model="userForm.userId" :disabled="true"></el-input>
            </el-form-item>
            <el-form-item label="姓名:" prop="userName">
              <el-input v-model="userForm.userName"></el-input>
            </el-form-item>
            <el-form-item label="当前角色:">
              <el-input v-model="userForm.personName" :disabled="true"></el-input>
            </el-form-item>
            <el-form-item label="邮箱:">
              <el-input v-model="userForm.email"></el-input>
            </el-form-item>
            <el-form-item>
              <el-button type="primary" @click="userSubmit">提交</el-button>
              <el-button @click="handleWitch">清空</el-button>
            </el-form-item>
          </el-form>
        </el-tab-pane>
        <el-tab-pane label="修改密码" name="1">
          <el-form ref="passWordForm" :model="passWordForm" :rules="rules" label-width="145px" size="small">
            <el-form-item label="登陆密码:" prop="oldPassword">
              <el-input v-model="passWordForm.oldPassword"></el-input>
            </el-form-item>
            <el-form-item label="新登陆密码:" prop="password">
              <el-input v-model="passWordForm.password"></el-input>
            </el-form-item>
            <el-form-item label="新密码登陆确认:" prop="confirmPassword">
              <el-input v-model="passWordForm.confirmPassword"></el-input>
            </el-form-item>
            <el-form-item>
              <el-button type="primary" @click="passWordSubmit">提交</el-button>
              <el-button @click="handleWitch">清空</el-button>
            </el-form-item>
          </el-form>
        </el-tab-pane>
      </el-tabs>
    </basic-container>
  </div>
</template>
<script>
import option from "@/option/user/info";
import { updateUser } from "@/api/system/user/api";
import {updateUser} from "@/api/system/user/api";
import func from "../../../util/func";
import {changePassword} from "../../../api/user"
import userAvatar from "./userAvatar";
@@ -30,9 +60,26 @@
  components: {userAvatar,},
  data() {
    return {
      index: 0,
      index: '0',
      option: option,
      form: {}
      userForm: {},
      passWordForm: {},
      userRules: {
        userName: [
          {required: true, message: '请输入密码', trigger: 'blur'},
        ],
      },
      rules: {
        oldPassword: [
          {required: true, message: '请输入密码', trigger: 'blur'},
        ],
        password: [
          {required: true, message: '请输入密码', trigger: 'blur'},
        ],
        confirmPassword: [
          {required: true, message: '请输入密码', trigger: 'blur'},
        ],
      }
    };
  },
  computed: {
@@ -42,56 +89,73 @@
    this.handleWitch();
  },
  methods: {
    handleSubmit(form, done) {
      if (this.index === 0) {
        updateUser(form).then(res => {
          if (res.data.success) {
            this.$message({
              type: "success",
              message: "修改信息成功!"
            });
          } else {
            this.$message({
              type: "error",
              message: res.data.msg
            });
          }
          done();
        }, error => {
          done();
        })
      } else {
        let userInfo = JSON.parse(localStorage.getItem('saber-userInfo'));
        let params = {
          userName: userInfo.content.userId,
          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(res.data.msg);
            this.passwordVisible = false;
            this.$store.dispatch("LogOut").then(() => {
              resetRouter();
              this.$router.push({path: "/login"});
            });
          }
        }).catch(err => {
          console.log(err);
        })
      }
    },
    handleWitch() {
      if (this.index === 0) {
        this.form = {...this.userInfo};
      if (this.index === '0') {
        const {avatar, userId, userName, email, personName} = this.userInfo;
        this.userForm = {avatar, userId, userName, email, personName};
      } else {
        this.passWordForm = {};
        this.$refs.passWordForm.clearValidate();
      }
    },
    handleTabClick(tabs) {
      this.index = func.toInt(tabs.index);
      this.index = tabs.index
      this.handleWitch();
      this.$refs.form.resetFields();
    },
    userSubmit() {
      this.$refs.userForm.validate((valid) => {
        if (valid) {
          const params = {
            id: this.userInfo.userId,
            name: this.userForm.userName,
            email: this.userForm.email
          }
          updateUser(params).then(res => {
            if (res.data.success) {
              this.$message({
                type: "success",
                message: "修改信息成功!"
              });
            } else {
              this.$message({
                type: "error",
                message: res.data.msg
              });
            }
            done();
          })
        } else {
          return false;
        }
      });
    },
    passWordSubmit() {
      this.$refs.passWordForm.validate((valid) => {
        if (valid) {
          let userInfo = JSON.parse(localStorage.getItem('saber-userInfo'));
          let params = {
            userName: userInfo.content.userId,
            oldPassword: func.encryptData(this.passWordForm.oldPassword, 'daliantan0v0vcip'),
            password: func.encryptData(this.passWordForm.password, 'daliantan0v0vcip'),
            confirmPassword: func.encryptData(this.passWordForm.confirmPassword, 'daliantan0v0vcip'),
          }
          changePassword(params).then(res => {
            if (res.data.code === 200) {
              this.$message.success(res.data.msg);
              this.$store.dispatch("LogOut").then(() => {
                resetRouter();
                this.$router.push({path: "/login"});
              });
            }
          }).catch(err => {
            console.log(err);
          })
        } else {
          return false;
        }
      });
    }
  }
};