llj
2026-02-25 9ca554079555718e298efea45bbb46d951647e0d
侧边框修改密码功能
1个文件已添加
1个文件已修改
143 ■■■■■ 已修改文件
src/layout/components/Navbar.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/UpdatePsw.vue 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/Navbar.vue
@@ -31,17 +31,22 @@
          <el-dropdown-item @click.native="setLayout" v-if="setting">
            <span>布局设置</span>
          </el-dropdown-item>
          <el-dropdown-item @click.native="handleUpdatePsw">
            <span>修改密码</span>
          </el-dropdown-item>
          <el-dropdown-item divided @click.native="logout">
            <span>退出登录</span>
          </el-dropdown-item>
        </el-dropdown-menu>
      </el-dropdown>
    </div>
    <update-psw ref="pswDialog" />
  </div>
</template>
<script>
import { mapGetters } from 'vuex'
import UpdatePsw from '@/layout/components/UpdatePsw'
import Breadcrumb from '@/components/Breadcrumb'
import TopNav from '@/components/TopNav'
import Hamburger from '@/components/Hamburger'
@@ -61,7 +66,8 @@
    SizeSelect,
    Search,
    RuoYiGit,
    RuoYiDoc
    RuoYiDoc,
    UpdatePsw
  },
  computed: {
    ...mapGetters([
@@ -87,6 +93,9 @@
    }
  },
  methods: {
      handleUpdatePsw() {
      this.$refs.pswDialog.open()
    },
    toggleSideBar() {
      this.$store.dispatch('app/toggleSideBar')
    },
src/layout/components/UpdatePsw.vue
New file
@@ -0,0 +1,132 @@
<template>
  <el-dialog title="修改密码" :visible.sync="dialogVisible" width="500px" @close="handleClose">
    <el-form ref="form" :model="form" :rules="rules" label-width="120px">
      <el-form-item label="当前用户">
        <el-input v-model="form.currentUser" :readonly="true" />
      </el-form-item>
      <el-form-item label="当前密码">
        <el-input v-model="form.oldPassword" type="password" :readonly="true" />
      </el-form-item>
      <el-form-item label="新密码" prop="newPassword">
        <el-input v-model="form.newPassword" type="password" placeholder="6到16个字符" show-password />
      </el-form-item>
      <el-form-item label="确认新密码" prop="confirmPassword">
        <el-input v-model="form.confirmPassword" type="password" placeholder="再次输入新密码" show-password />
      </el-form-item>
      <el-form-item label="金蝶云账号">
        <el-input v-model="form.cloudUserName" />
      </el-form-item>
      <el-form-item label="金蝶云密码">
        <el-input v-model="form.cloudUserPsd" type="password" show-password />
      </el-form-item>
    </el-form>
    <span slot="footer" class="dialog-footer">
      <el-button @click="dialogVisible = false">取 消</el-button>
      <el-button type="primary" @click="submitForm" :loading="submitting">确 认 修 改</el-button>
    </span>
  </el-dialog>
</template>
<script>
import request from '@/utils/request'
export default {
  name: 'UpdatePsw',
  data() {
    const validateConfirm = (rule, value, callback) => {
      if (value !== this.form.newPassword) {
        callback(new Error('两次输入密码不一致'))
      } else {
        callback()
      }
    }
    return {
      dialogVisible: false,
      submitting: false,
      form: {
        currentUser: '',
        oldPassword: '',
        newPassword: '',
        confirmPassword: '',
        cloudUserName: '',
        cloudUserPsd: ''
      },
      rules: {
        newPassword: [
          { required: true, message: '请输入新密码', trigger: 'blur' },
          { min: 6, max: 16, message: '长度在 6 到 16 个字符', trigger: 'blur' }
        ],
        confirmPassword: [
          { required: true, message: '请再次输入新密码', trigger: 'blur' },
          { validator: validateConfirm, trigger: 'blur' }
        ]
      }
    }
  },
  methods: {
    open() {
      this.form.currentUser = sessionStorage['HUserName'] || ''
      this.form.oldPassword = sessionStorage['Czmm'] || ''
      this.form.cloudUserName = sessionStorage['HCloudUserName'] || ''
      this.form.cloudUserPsd = sessionStorage['HCloudUserPsd'] || ''
      this.form.newPassword = ''
      this.form.confirmPassword = ''
      this.dialogVisible = true
      this.$nextTick(() => {
        this.$refs.form?.clearValidate()
      })
    },
    handleClose() {
      this.$refs.form?.resetFields()
    },
    submitForm() {
      this.$refs.form.validate(valid => {
        if (!valid) return
        this.submitting = true
        const params = {
          UserName: sessionStorage['Czybm'] || '',
          oldPassword: this.form.oldPassword,
          PassWord: this.form.newPassword,
          Repassword: this.form.confirmPassword,
          HCloudUserName: this.form.cloudUserName,
          HCloudUserPsd: this.form.cloudUserPsd
        }
        request({
          url: '/Web/GetXGPassword',
          method: 'get',
          params: params
        }).then(res => {
          if (res.count === 1) {
            this.$modal.msgSuccess(res.Message || '修改成功')
            sessionStorage.clear()
            this.$router.push('/index')
            this.dialogVisible = false
          } else {
            this.$modal.msgError(res.Message || '修改失败')
          }
        }).catch(err => {
          this.$modal.msgError(err.message || '请求失败')
        }).finally(() => {
          this.submitting = false
        })
      })
    }
  }
}
</script>
<style scoped>
</style>