From 8ba4ef9b9a7ad816957f6dd67bc74f631b89bb66 Mon Sep 17 00:00:00 2001 From: xingyuv Date: Tue, 21 Mar 2023 14:53:17 +0800 Subject: [PATCH] feat: menu init --- src/views/system/menu/MenuModel.vue | 58 +++++++++++++++ src/views/system/menu/index.vue | 74 +++++++++++++++++-- src/views/system/menu/menu.data.ts | 106 +++++++++++++++++++++++++--- 3 files changed, 221 insertions(+), 17 deletions(-) create mode 100644 src/views/system/menu/MenuModel.vue diff --git a/src/views/system/menu/MenuModel.vue b/src/views/system/menu/MenuModel.vue new file mode 100644 index 0000000..17cc8dc --- /dev/null +++ b/src/views/system/menu/MenuModel.vue @@ -0,0 +1,58 @@ + + diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue index 1d56bb4..d5eb512 100644 --- a/src/views/system/menu/index.vue +++ b/src/views/system/menu/index.vue @@ -2,19 +2,51 @@
+ +
diff --git a/src/views/system/menu/menu.data.ts b/src/views/system/menu/menu.data.ts index 8686b0a..bc1be8d 100644 --- a/src/views/system/menu/menu.data.ts +++ b/src/views/system/menu/menu.data.ts @@ -1,4 +1,5 @@ import Icon from '@/components/Icon' +import { listSimpleMenusApi } from '@/api/system/menu' import { BasicColumn, FormSchema, useRender } from '@/components/Table' import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { h } from 'vue' @@ -69,35 +70,118 @@ export const formSchema: FormSchema[] = [ component: 'Input' }, { - label: '岗位名称', + label: '上级菜单', + field: 'parentId', + required: true, + component: 'ApiTreeSelect', + componentProps: { + api: () => listSimpleMenusApi(), + fieldNames: { + label: 'name', + key: 'id', + value: 'id' + }, + handleTree: 'id' + } + }, + { + label: '菜单类型', + field: 'type', + required: true, + defaultValue: '0', + component: 'RadioButtonGroup', + componentProps: { + options: getIntDictOptions(DICT_TYPE.SYSTEM_MENU_TYPE) + }, + colProps: { lg: 24, md: 24 } + }, + { + label: '菜单名称', field: 'name', required: true, component: 'Input' }, { - label: '岗位编码', - field: 'code', + label: '菜单图标', + field: 'icon', + component: 'IconPicker', + ifShow: ({ values }) => values.type !== 3 + }, + { + label: '显示排序', + field: 'sort', required: true, component: 'Input' }, { - label: '岗位顺序', - field: 'sort', + label: '路由地址', + field: 'path', required: true, - component: 'InputNumber' + component: 'Input', + ifShow: ({ values }) => values.type !== 3 }, { - label: '状态', + label: '权限标识', + field: 'permission', + component: 'Input', + ifShow: ({ values }) => values.type !== 1 + }, + { + label: '组件路径', + field: 'component', + component: 'Input', + ifShow: ({ values }) => values.type === 2 + }, + { + label: '组件名称', + field: 'componentName', + component: 'Input', + ifShow: ({ values }) => values.type === 2 + }, + { + label: '菜单状态', field: 'status', - component: 'Select', + required: true, + component: 'RadioButtonGroup', defaultValue: 0, componentProps: { options: getIntDictOptions(DICT_TYPE.COMMON_STATUS) } }, { - label: '备注', - field: 'remark', - component: 'InputTextArea' + label: '显示状态', + field: 'visible', + component: 'RadioButtonGroup', + componentProps: { + options: [ + { label: true, key: true, value: '显示' }, + { label: false, key: false, value: '隐藏' } + ] + }, + ifShow: ({ values }) => values.type !== 3 + }, + { + label: '总是显示', + field: 'alwaysShow', + component: 'RadioButtonGroup', + componentProps: { + options: [ + { label: true, key: true, value: '显示' }, + { label: false, key: false, value: '隐藏' } + ] + }, + ifShow: ({ values }) => values.type !== 3 + }, + { + label: '是否缓存', + field: 'keepAlive', + component: 'RadioButtonGroup', + componentProps: { + options: [ + { label: true, key: true, value: '缓存' }, + { label: false, key: false, value: '不缓存' } + ] + }, + ifShow: ({ values }) => values.type === 2 } ]