211 lines
4.5 KiB
TypeScript
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),
|
|
// },
|
|
];
|