ソースを参照

权限管理支持默认展开功能

zhontai 2 年 前
コミット
8b1d00c3fe

+ 16 - 4
src/api/admin/File.ts

@@ -72,9 +72,15 @@ export class FileApi<SecurityDataType = unknown> extends HttpClient<SecurityData
       file: File
     },
     query?: {
-      /** @default "" */
+      /**
+       * 文件目录
+       * @default ""
+       */
       fileDirectory?: string
-      /** @default true */
+      /**
+       * 文件重命名
+       * @default true
+       */
       fileReName?: boolean
     },
     params: RequestParams = {}
@@ -103,9 +109,15 @@ export class FileApi<SecurityDataType = unknown> extends HttpClient<SecurityData
       files: File[]
     },
     query?: {
-      /** @default "" */
+      /**
+       * 文件目录
+       * @default ""
+       */
       fileDirectory?: string
-      /** @default true */
+      /**
+       * 文件重命名
+       * @default true
+       */
       fileReName?: boolean
     },
     params: RequestParams = {}

+ 2 - 0
src/api/admin/data-contracts.ts

@@ -1836,6 +1836,8 @@ export interface PermissionListOutput {
   apiPaths?: string | null
   /** 图标 */
   icon?: string | null
+  /** 展开 */
+  opened?: boolean
   /**
    * 排序
    * @format int32

+ 10 - 3
src/views/admin/file/index.vue

@@ -59,10 +59,17 @@
                 <el-button size="small" text type="primary">地址</el-button>
               </template>
             </el-popover>
-            <el-link class="my-link mr12 ml12" :href="row.linkUrl" type="primary" icon="ele-Download" size="small" :underline="false" target="_blank"
+            <el-link
+              class="my-el-link mr12 ml12"
+              :href="row.linkUrl"
+              type="primary"
+              icon="ele-Download"
+              size="small"
+              :underline="false"
+              target="_blank"
               >下载</el-link
             >
-            <el-button v-auth="'api:admin:view:softdelete'" icon="ele-Delete" size="small" text type="danger" @click="onDelete(row)">删除</el-button>
+            <el-button v-auth="'api:admin:file:delete'" icon="ele-Delete" size="small" text type="danger" @click="onDelete(row)">删除</el-button>
           </template>
         </el-table-column>
       </el-table>
@@ -189,7 +196,7 @@ export default defineComponent({
 </script>
 
 <style scoped lang="scss">
-.my-link {
+.my-el-link {
   font-size: 12px;
 }
 </style>

+ 8 - 3
src/views/admin/permission/index.vue

@@ -35,6 +35,7 @@
             v-loading="state.loading"
             row-key="id"
             :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
+            :expand-row-keys="state.expandRowKeys"
           >
             <el-table-column prop="label" label="权限名称" width="240" show-overflow-tooltip>
               <template #default="{ row }">
@@ -114,7 +115,7 @@
 import { ref, reactive, onMounted, getCurrentInstance, onUnmounted, defineAsyncComponent } from 'vue'
 import { PermissionListOutput } from '/@/api/admin/data-contracts'
 import { PermissionApi } from '/@/api/admin/Permission'
-import { listToTree } from '/@/utils/tree'
+import { listToTree, treeToList } from '/@/utils/tree'
 import { cloneDeep } from 'lodash-es'
 import eventBus from '/@/utils/mitt'
 import { auth } from '/@/utils/authFunction'
@@ -139,10 +140,14 @@ const state = reactive({
   permissionTreeData: [] as Array<PermissionListOutput>,
   formPermissionGroupTreeData: [] as Array<PermissionListOutput>,
   formPermissionMenuTreeData: [] as Array<PermissionListOutput>,
+  expandRowKeys: [] as string[],
 })
 
-onMounted(() => {
-  onQuery()
+onMounted(async () => {
+  await onQuery()
+  state.expandRowKeys = treeToList(cloneDeep(state.permissionTreeData))
+    .filter((a: PermissionListOutput) => a.opened === true)
+    .map((a: PermissionListOutput) => a.id + '') as string[]
   eventBus.on('refreshPermission', async () => {
     onQuery()
   })