ahjung 2 年 前
コミット
2a3665cc8b

+ 8 - 0
CHANGELOG.md

@@ -2,6 +2,14 @@
 
 ## Pending
 
+## 1.3.8 (2023-06-12)
+
+- 🐞 修复 `修改密码异常`
+- 🐞 修复 `菜单无法删除`
+- 💎 优化 `菜单编辑交互`
+- 💎 优化 `上级菜单显示层级`
+- 💎 优化 `上级部门显示层级`
+
 ## 1.3.7 (2023-06-09)
 
 - 🐞 修复 `组件示例页面异常` 

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "naive-admin-element-tenant",
-  "version": "1.3.7",
+  "version": "1.3.8",
   "author": {
     "name": "Ahjung",
     "email": "735878602@qq.com",

+ 6 - 3
src/layout/components/Header/AmendPwd.vue

@@ -17,29 +17,32 @@
 
   const schemas: FormSchema[] = [
     {
-      field: 'formerPwd',
+      field: 'oldPwd',
       component: 'Input',
       label: '旧密码',
       componentProps: {
         placeholder: '请输入旧密码',
+        type: 'password',
       },
       rules: [{ required: true, message: '请输入旧密码', trigger: ['blur'] }],
     },
     {
-      field: 'password',
+      field: 'newPwd',
       component: 'Input',
       label: '新密码',
       componentProps: {
         placeholder: '请输入新密码',
+        type: 'password',
       },
       rules: [{ required: true, message: '请输入新密码', trigger: ['blur'] }],
     },
     {
-      field: 'rePassword',
+      field: 'comfirmPwd',
       component: 'Input',
       label: '确认密码',
       componentProps: {
         placeholder: '请再次输入新密码',
+        type: 'password',
       },
       rules: [{ required: true, message: '请再次输入新密码', trigger: ['blur'] }],
     },

+ 2 - 0
src/router/router-icons.ts

@@ -12,6 +12,7 @@ import {
   SafetyOutlined,
   BellOutlined,
   BookOutlined,
+  ToolOutlined,
 } from '@vicons/antd';
 import {
   OptionsSharp,
@@ -38,4 +39,5 @@ export const constantRouterIcon = {
   SafetyOutlined: renderIcon(SafetyOutlined),
   BellOutlined: renderIcon(BellOutlined),
   BookOutlined: renderIcon(BookOutlined),
+  ToolOutlined: renderIcon(ToolOutlined),
 };

+ 8 - 1
src/views/auth/dept/CreateDrawer.vue

@@ -14,6 +14,7 @@
         <el-tree-select
           :data="getTreeList"
           clearable
+          check-strictly
           v-model="formParams.parent"
           placeholder="请选择上级部门"
         />
@@ -85,7 +86,13 @@
   const subLoading = ref(false);
 
   const getTreeList = computed(() => {
-    return replaceParams(props.deptList || [], 'deptName', 'deptId');
+    return [
+      {
+        label: '顶级部门',
+        value: 0,
+        children: replaceParams(props.deptList || [], 'deptName', 'deptId'),
+      },
+    ];
   });
 
   const formParams = ref<formParamsType>(defaultValueRef());

+ 11 - 3
src/views/system/menu/MenuForm.vue

@@ -22,6 +22,7 @@
         rowKey="key"
         :data="getPermissionList"
         clearable
+        check-strictly
         v-model="formParams.parentId"
       />
     </el-form-item>
@@ -369,7 +370,14 @@
   const formParams: any = ref(defaultValueRef());
 
   const getPermissionList = computed(() => {
-    return replaceParams(cloneDeep(props.permissionList || []), 'label', 'key');
+    // 可根据需要是否需要嵌套这个 避免出现选择器出现 0 的情况
+    return [
+      {
+        label: '顶级目录',
+        value: 0,
+        children: replaceParams(cloneDeep(props.permissionList || []), 'label', 'key'),
+      },
+    ];
   });
 
   const getTypeLable = computed(() => {
@@ -412,8 +420,8 @@
 
   function formSubmit() {
     subLoading.value = true;
-    formRef.value.validate((errors) => {
-      if (!errors) {
+    formRef.value.validate((valid) => {
+      if (valid) {
         if (!formParams.value.id) {
           addMenu(formParams.value)
             .then(() => {

+ 21 - 27
src/views/system/menu/menu.vue

@@ -36,9 +36,9 @@
                   :pattern="pattern"
                   :data="treeData"
                   nodeKey="key"
-                  show-checkbox
+                  highlight-current
                   check-strictly
-                  @check="selectedTree"
+                  @current-change="selectedTree"
                   @update:expanded-keys="onExpandedKeys"
                 />
               </el-scrollbar>
@@ -49,19 +49,22 @@
       <el-col :span="18">
         <el-card shadow="hover">
           <template #header>
-            <el-space>
-              <span>编辑{{ getTypeMsg }}{{ treeItemTitle ? `:${treeItemTitle}` : '' }}</span>
-              <el-divider direction="vertical" />
-              <p depth="3" class="text-sm"> 从左侧列表选择一项后,进行编辑 </p>
-            </el-space>
-          </template>
-          <template #header-extra>
-            <el-popconfirm @positive-click="handleDeleteMenu" v-if="isEditMenu">
-              <template #trigger>
-                <el-button quaternary type="info">删除{{ getTypeMsg }}</el-button>
-              </template>
-              确定要删除 {{ treeItemTitle }} {{ getTypeMsg }}吗?
-            </el-popconfirm>
+            <div class="flex justify-between">
+              <el-space>
+                <span>编辑{{ getTypeMsg }}{{ treeItemTitle ? `:${treeItemTitle}` : '' }}</span>
+                <el-divider direction="vertical" />
+                <p depth="3" class="text-sm"> 从左侧列表选择一项后,进行编辑 </p>
+              </el-space>
+              <el-popconfirm
+                @confirm="handleDeleteMenu"
+                v-if="isEditMenu"
+                :title="`确定要删除 ${treeItemTitle} ${getTypeMsg}吗?`"
+              >
+                <template #reference>
+                  <el-button type="danger" size="small">删除{{ getTypeMsg }}</el-button>
+                </template>
+              </el-popconfirm>
+            </div>
           </template>
           <!-- 表单 -->
           <div v-loading="loadingR" class="pt-6">
@@ -98,8 +101,6 @@
   const treeRef = ref();
   const message = ElMessage;
 
-  let treeItemKey = ref([]);
-
   let expandedKeys = ref([]);
 
   const treeData = ref([]);
@@ -159,12 +160,10 @@
     openDrawer();
   }
 
-  async function selectedTree(checkedNodes, checkedInfo) {
-    const currentKey = checkedNodes.key;
-    const keys = checkedInfo.checkedKeys;
-    if (keys.length) {
+  async function selectedTree(checkedInfo) {
+    const currentKey = checkedInfo.key;
+    if (currentKey) {
       const treeItem = getTreeItem(unref(treeData), currentKey);
-      treeItemKey.value = keys;
       treeItemTitle.value = treeItem.label;
       loadingR.value = true;
       const info = await menuInfo({ permissionId: currentKey });
@@ -198,11 +197,6 @@
       isEditMenu.value = true;
       loadingR.value = false;
       treeRef.value.setCheckedKeys([currentKey]);
-    } else {
-      isEditMenu.value = false;
-      treeItemKey.value = [];
-      treeItemTitle.value = '';
-      treeRef.value.setCheckedKeys([]);
     }
   }
 

+ 3 - 7
src/views/system/role/CreateDrawer.vue

@@ -55,7 +55,7 @@
 </template>
 
 <script lang="ts" setup>
-  import { ref, onMounted, nextTick, unref } from 'vue';
+  import { ref, onMounted, nextTick } from 'vue';
   import { ElMessage } from 'element-plus';
   import type { formParamsType } from './types';
 
@@ -112,10 +112,6 @@
 
   const formParams = ref<formParamsType>(defaultValueRef());
 
-  function onExpandedKeys(keys) {
-    expandedKeys.value = keys;
-  }
-
   function treeNodeExpand(status) {
     for (var i = 0; i < treeRef.value.store._getAllNodes().length; i++) {
       treeRef.value.store._getAllNodes()[i].expanded = status;
@@ -210,8 +206,8 @@
         roleName: res.roleName,
         roleCode: res.roleCode,
         remark: res.remark,
-        permissions: res.permissionIds,
-        permissionKeys: res.permissionKeys,
+        permissions: res.permissionIds || [],
+        permissionKeys: res.permissionKeys || [],
       };
       formParams.value = info;
       isDrawer.value = true;

+ 1 - 0
src/views/system/user/CreateDrawer.vue

@@ -18,6 +18,7 @@
         <el-tree-select
           :data="deptList"
           clearable
+          check-strictly
           v-model="formParams.deptId"
           placeholder="请选择部门"
         />