liujq 4 yıl önce
ebeveyn
işleme
ee242a268a

+ 3 - 0
src/api/base.js

@@ -8,6 +8,9 @@ export default {
   admLogin: params => { // 登录
     return nologinRequest('/adm/login', params, 'loading')
   },
+  admchangepwd: params => { // 修改密码
+    return getRequest('/adm/change/pwd', params, 'loading')
+  },
   admdicttypelist: params => { // 字典类型列表接口
     return getRequest('/adm/dict/type/list', params)
   },

+ 70 - 0
src/components/Common/PwdEdit.vue

@@ -0,0 +1,70 @@
+<template>
+  <div>
+    <el-dialog
+      v-loading="loading"
+      :show-close="false"
+      :close-on-click-modal="false"
+      :visible.sync="isShow"
+      :title="'修改密码'"
+      :fullscreen="false"
+      width="400px"
+      custom-class="xl-dialog"
+      center
+    >
+      <base-form ref="ruleForm" class="lib-edit" :data="formData" :is-inline="false" label-width="110px">
+        <div slot="footer" style="padding-top: 20px;">
+          <el-button class="xl-form-btn t2" @click="close">关 闭</el-button>
+          <el-button class="xl-form-btn t1" @click="close('confirm')">确定</el-button>
+        </div>
+      </base-form>
+    </el-dialog>
+  </div>
+</template>
+<script>
+export default {
+  components: { },
+  props: {
+    isShow: Boolean,
+  },
+  data() {
+    return {
+      formData: [],
+      loading: true,
+      cObj: {},
+      isShowMap: false
+    }
+  },
+  watch: {
+    isShow: function(val) {
+      if (val) {
+        this.formData = [
+          { label: '旧密码', key: 'old_pwd'},
+          { label: '新密码', key: 'new_pwd'},
+          { label: '确认新密码', key: 'repeat_new_pwd'},
+        ]
+      }
+    },
+  },
+  methods: {
+    close(str) {
+      if (str === 'confirm') {
+        this.$refs['ruleForm'].$refs['baseForm'].validate((valid) => {
+          if (valid) {
+            const oldform = this.$refs.ruleForm.baseForm
+            let newForm = { ...oldform }
+            this.$api.base.admchangepwd(newForm).then(res => {
+              this.$msg('修改成功~')
+            })
+            this.$emit('close', newForm)
+          }
+        })
+      } else {
+        this.$emit('close')
+      }
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+
+</style>

+ 29 - 2
src/layout/components/Navbar.vue

@@ -7,6 +7,7 @@
     <div class="right-menu">
       <div class="xl-form" style="padding-right: 20px;">
         <span class="scoped-op" @click="cashUpdate">更新缓存</span>
+        <span class="scoped-op2" @click="openPwdPopup">修改密码</span>
         <span class="scoped-user">{{sysUser.nickname}}</span>
         <el-button icon="el-icon-user" class="xl-form-btn t4 xs" @click="logout">退出</el-button>
       </div>
@@ -33,6 +34,10 @@
         </el-dropdown-menu>
       </el-dropdown> -->
     </div>
+    <pwd-edit
+      :isShow="isPwdShow"
+      @close="closePwdPopup"
+    />
   </div>
 </template>
 
@@ -40,11 +45,12 @@
 import { mapGetters } from 'vuex'
 import Breadcrumb from '@/components/Breadcrumb'
 import Hamburger from '@/components/Hamburger'
-
+import PwdEdit from '@/components/Common/PwdEdit'
 export default {
   components: {
     Breadcrumb,
-    Hamburger
+    Hamburger,
+    PwdEdit,
   },
   computed: {
     ...mapGetters([
@@ -53,7 +59,18 @@ export default {
       'sysUser',
     ])
   },
+  data () {
+    return {
+      isPwdShow: false
+    }
+  },
   methods: {
+    closePwdPopup () {
+      this.isPwdShow = false
+    },
+    openPwdPopup () {
+      this.isPwdShow = true
+    },
     cashUpdate () {
       this.$store.dispatch('user/getDict').then(() => {
         this.$store.dispatch('user/getMenu').then(() => {
@@ -174,5 +191,15 @@ export default {
   text-decoration: underline;
   cursor: pointer;
 }
+.scoped-op2 {
+  display: inline-block;
+  vertical-align: middle;
+  font-weight: bold;
+  color: #e94141;
+  padding-right: 20px;
+  font-size: 14px;
+  text-decoration: underline;
+  cursor: pointer;
+}
 
 </style>

+ 1 - 0
src/views/base/components/popup/RoleEdit.vue

@@ -56,6 +56,7 @@ export default {
           {label: '角色名称', key: 'name', rules: 1},
           {label: '角色描述', key: 'description', rules: 1},
         ]
+        this.setDefaultValue(params)
         this.checkedIds = params.permissions_ids || []
         this.$nextTick(() => {
           this.$refs.menuTree.setCheckedKeys(params.permissions_ids)

+ 24 - 11
src/views/user/components/popup/IndexEdit.vue

@@ -57,17 +57,30 @@ export default {
       } else {
         params.rolesIds = []
       }
-      this.formData = [
-        { label: '账号', key: 'username', rules: 1 },
-        { label: '昵称', key: 'nickname', rules: 1 },
-        { label: '密码', key: 'password', rules: 1 },
-        { label: '角色', key: 'rolesIds', type: 'selectRemote', multiple: true,
-          remoteParams: { skey: 'name', api: `base.admroleslist`, opKey: 'name', opVal: 'id' },
-          remoteOptions: remoteOptionsRoles
-        },
-        { label: '邮箱', key: 'email' },
-        { label: '头像', key: 'avatar', type: 'upload' },
-      ]
+      if (this.curObj.id) {
+        this.formData = [
+          { label: '账号', key: 'username', rules: 1 },
+          { label: '昵称', key: 'nickname', rules: 1 },
+          { label: '角色', key: 'rolesIds', type: 'selectRemote', multiple: true,
+            remoteParams: { skey: 'name', api: `base.admroleslist`, opKey: 'name', opVal: 'id' },
+            remoteOptions: remoteOptionsRoles
+          },
+          { label: '邮箱', key: 'email' },
+          { label: '头像', key: 'avatar', type: 'upload' },
+        ]
+      } else {
+        this.formData = [
+          { label: '账号', key: 'username', rules: 1 },
+          { label: '昵称', key: 'nickname', rules: 1 },
+          { label: '密码', key: 'password', rules: 1 },
+          { label: '角色', key: 'rolesIds', type: 'selectRemote', multiple: true,
+            remoteParams: { skey: 'name', api: `base.admroleslist`, opKey: 'name', opVal: 'id' },
+            remoteOptions: remoteOptionsRoles
+          },
+          { label: '邮箱', key: 'email' },
+          { label: '头像', key: 'avatar', type: 'upload' },
+        ]
+      }
       this.setDefaultValue(params)
     },
     close(str) {