CaiYuanYiTiHua/src/views/demo/system/menu/menu.data.ts

211 lines
4.5 KiB
TypeScript

import { BasicColumn, FormSchema } from '@/components/Table';
import { h } from 'vue';
import { Tag } from 'ant-design-vue';
import Icon from '@/components/Icon/Icon.vue';
export const columns: BasicColumn[] = [
{
title: '按钮名称',
dataIndex: 'name',
},
{
title: 'DOMID',
dataIndex: 'domId',
},
{
title: '排序',
dataIndex: 'sort',
},
{
title: '样式',
dataIndex: 'class',
},
{
title: '状态',
dataIndex: 'enabledMark',
width: 80,
customRender: ({ record }) => {
const color = record.status == 1 ? 'blue' : 'red';
const text = record.status == 1 ? '启用' : '停用';
return h(Tag, { color: color }, () => text);
},
},
];
const isDir = (type: string) => type === '0';
const isMenu = (type: string) => type === '1';
const isButton = (type: string) => type === '2';
export const searchFormSchema: FormSchema[] = [
{
field: 'key',
label: '关键字',
component: 'Input',
colProps: { span: 8 },
},
];
export const formSchema: FormSchema[] = [
{
field: 'type',
label: '类型',
component: 'RadioButtonGroup',
defaultValue: '1',
componentProps: {
options: [
// { label: '目录', value: '0' },
{ label: '菜单', value: '1' },
{ label: '按钮', value: '2' },
],
},
colProps: { lg: 24, md: 24 },
},
{
field: 'id',
label: '名称',
component: 'Input',
ifShow: false,
},
{
field: 'name',
label: '名称',
component: 'Input',
required: true,
},
{
field: 'parentId',
label: '上级',
component: 'TreeSelect',
componentProps: {
fieldNames: {
label: 'name',
key: 'id',
value: 'id',
},
getPopupContainer: () => document.body,
},
ifShow: ({ values }) => !isButton(values.type),
},
{
field: 'moduleId',
label: '菜单',
component: 'TreeSelect',
componentProps: {
fieldNames: {
label: 'name',
key: 'id',
value: 'id',
},
getPopupContainer: () => document.body,
},
ifShow: ({ values }) => isButton(values.type),
required: true,
},
{
field: 'domId',
label: 'DMOID',
component: 'Input',
required: true,
ifShow: ({ values }) => isButton(values.type),
},
{
field: 'sortNo',
label: '排序',
component: 'InputNumber',
ifShow: ({ values }) => !isButton(values.type),
},
{
field: 'sort',
label: '排序',
component: 'InputNumber',
ifShow: ({ values }) => isButton(values.type),
},
{
field: 'class',
helpMessage: ['参考参数值', 'success、warning、error'],
label: '样式',
component: 'Input',
ifShow: ({ values }) => isButton(values.type),
},
{
field: 'iconName',
label: '图标',
component: 'IconPicker',
ifShow: ({ values }) => !isButton(values.type),
},
{
field: 'url',
label: '路由地址',
component: 'Input',
required: true,
ifShow: ({ values }) => !isButton(values.type),
},
// {
// field: 'component',
// label: '组件路径',
// component: 'Input',
// ifShow: ({ values }) => isMenu(values.type),
// },
{
field: 'code',
label: '权限标识',
component: 'Input',
ifShow: ({ values }) => !isButton(values.type),
},
{
field: 'status',
label: '是否启用',
component: 'RadioButtonGroup',
defaultValue: 1,
componentProps: {
options: [
{ label: '否', value: 0 },
{ label: '是', value: 1 },
],
},
},
// {
// field: 'isExt',
// label: '是否外链',
// component: 'RadioButtonGroup',
// defaultValue: '0',
// componentProps: {
// options: [
// { label: '否', value: '0' },
// { label: '是', value: '1' },
// ],
// },
// ifShow: ({ values }) => !isButton(values.type),
// },
// {
// field: 'keepalive',
// label: '是否缓存',
// component: 'RadioButtonGroup',
// defaultValue: '0',
// componentProps: {
// options: [
// { label: '否', value: '0' },
// { label: '是', value: '1' },
// ],
// },
// ifShow: ({ values }) => isMenu(values.type),
// },
// {
// field: 'show',
// label: '是否显示',
// component: 'RadioButtonGroup',
// defaultValue: '0',
// componentProps: {
// options: [
// { label: '是', value: '0' },
// { label: '否', value: '1' },
// ],
// },
// ifShow: ({ values }) => !isButton(values.type),
// },
];