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
}
]