ruoyi-plus-vben5/apps/web-antd/src/views/system/dict/data/data.ts

139 lines
2.8 KiB
TypeScript
Raw Normal View History

2024-10-05 22:56:44 +08:00
import type { FormSchemaGetter, VxeGridProps } from '#/adapter';
2024-09-23 15:04:23 +08:00
2024-10-07 17:45:34 +08:00
import { reactive } from 'vue';
2024-09-24 11:23:02 +08:00
import { getPopupContainer } from '@vben/utils';
2024-10-07 17:45:34 +08:00
import { dictOptionSelectList } from '#/api/system/dict/dict-type';
2024-10-05 22:56:44 +08:00
import { renderDictTag } from '#/utils/render';
2024-10-07 17:45:34 +08:00
/**
* updateSchema无法赋值
* TODO: 使用updateSchema重构
*/
const dictTypeOptions = reactive<{ label: string; value: string }[]>([]);
(async () => {
const resp = await dictOptionSelectList();
const options = resp.map((item) => ({
label: item.dictName,
value: item.dictType,
}));
dictTypeOptions.push(...options);
})();
2024-09-24 11:23:02 +08:00
export const querySchema: FormSchemaGetter = () => [
{
component: 'Select',
2024-10-07 17:45:34 +08:00
dependencies: {
show: () => false,
triggerFields: [''],
},
2024-09-24 11:23:02 +08:00
componentProps: {
getPopupContainer,
2024-10-07 17:45:34 +08:00
options: dictTypeOptions,
2024-09-24 11:23:02 +08:00
},
fieldName: 'dictType',
label: '字典类型',
},
{
component: 'Input',
fieldName: 'dictLabel',
label: '字典标签',
},
];
2024-10-05 22:56:44 +08:00
export const columns: VxeGridProps['columns'] = [
{ type: 'checkbox', width: 60 },
{
title: '字典标签',
field: 'cssClass',
slots: {
default: ({ row }) => {
const { dictValue } = row;
return renderDictTag(dictValue, [row as any]);
},
},
},
{
title: '字典键值',
field: 'dictValue',
},
{
title: '字典排序',
field: 'dictSort',
},
{
title: '备注',
field: 'remark',
},
{
title: '创建时间',
field: 'createTime',
},
{
field: 'action',
fixed: 'right',
slots: { default: 'action' },
title: '操作',
width: 180,
},
];
2024-09-23 15:04:23 +08:00
export const drawerSchema: FormSchemaGetter = () => [
{
component: 'Input',
dependencies: {
show: () => false,
triggerFields: [''],
},
fieldName: 'dictCode',
},
{
component: 'Input',
componentProps: {
disabled: true,
},
fieldName: 'dictType',
label: '字典类型',
},
{
component: 'Input',
fieldName: 'listClass',
label: '标签样式',
},
{
component: 'Input',
fieldName: 'dictLabel',
label: '数据标签',
rules: 'required',
},
{
component: 'Input',
fieldName: 'dictValue',
label: '数据键值',
rules: 'required',
},
{
component: 'Textarea',
componentProps: {
placeholder: '可使用tailwind类名 如bg-blue w-full h-full等',
},
fieldName: 'cssClass',
formItemClass: 'items-baseline',
help: '标签的css样式, 可添加已经编译的css类名',
label: 'css类名',
},
{
component: 'InputNumber',
fieldName: 'dictSort',
label: '显示排序',
rules: 'required',
},
{
component: 'Textarea',
fieldName: 'remark',
formItemClass: 'items-baseline',
label: '备注',
},
];