detect-embeded/src/views/data/device/schema.ts
2025-04-23 10:27:38 +08:00

197 lines
5.3 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 项目:中核预埋件检测
* 模型分组:数据管理
* 模型名称:设备表
* @Author: xiongwei
* @Date: 2024-11-15 11:50:00
*/
import { BasicColumn } from '@/components/Table';
import { FormSchema } from '@/components/Table';
const colProps = { xs: { span: 24 }, sm: { span: 24 }, lg: { span: 6 } };
const colPropsInDrawer = { span: 24 };
export const schema = {
model: 'Device',
viewInPage: false,
properties: [
{
field: 'id',
label: 'ID系统自动生成',
defaultValue: undefined,
form: {
componentProps: {
allowClear: false,
placeholder: 'ID系统自动生成',
},
colProps,
component: 'InputNumber',
rules: [{ required: true, message: '请输入ID系统自动生成' }],
},
table: {
},
},
{
field: 'name',
label: '设备名称',
defaultValue: undefined,
form: {
componentProps: {
allowClear: false,
placeholder: '设备名称',
},
colProps,
component: 'Input',
rules: [{ required: true, message: '请输入设备名称!' }],
},
table: {
},
},
{
field: 'deviceSn',
label: '设备序列号',
defaultValue: undefined,
form: {
componentProps: {
allowClear: true,
placeholder: '设备序列号',
},
colProps,
component: 'Input',
rules: [{ required: true, message: '请输入设备序列号!' }],
},
table: {
},
},
{
field: 'deviceIp',
label: '设备IP地址',
defaultValue: undefined,
form: {
componentProps: {
allowClear: true,
placeholder: '设备IP地址',
},
colProps,
component: 'Input',
},
table: {
},
},
{
field: 'createTime',
label: '创建时间',
defaultValue: undefined,
form: {
colProps,
componentProps: {
allowClear: false,
placeholder: ['开始时间', '结束时间'],
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
showTime: false,
},
component: 'RangePicker',
rules: [{ required: true, message: '请输入CreateTime' }],
},
table: {
},
},
{
field: 'updateTime',
label: '更新时间',
defaultValue: undefined,
form: {
colProps,
componentProps: {
allowClear: false,
placeholder: ['开始时间', '结束时间'],
format: 'YYYY-MM-DD',
valueFormat: 'YYYY-MM-DD',
showTime: false,
},
component: 'RangePicker',
rules: [{ required: true, message: '请输入UpdateTime' }],
},
table: {
},
},
],
};
const queryFields = ['name','deviceSn','deviceIp'];
const editFields = ['name','deviceSn','deviceIp'];
const tableFields = ['name','deviceSn','deviceIp','createTime','updateTime'];
const descriptionFields = ['name','deviceSn','deviceIp','createTime','updateTime'];
const queryFieldsIndexMap = new Map(queryFields.map((field, index) => [field, index]));
export const searchFormSchema: FormSchema[] = schema.properties.filter(item => queryFields.includes(item.field))
.map(
({ field, label, form: { ...formProps } }) =>
({
field,
label,
defaultValue: undefined,
...formProps,
required: false,
rules: [{ required: false }],
} as FormSchema),
)
.sort((a, b) => {
const indexA = queryFieldsIndexMap.get(a.field) as number;
const indexB = queryFieldsIndexMap.get(b.field) as number;
return indexA - indexB;
});
const editFieldsIndexMap = new Map(editFields.map((field, index) => [field, index]));
export const formSchema: FormSchema[] = schema.properties.filter(item => editFields.includes(item.field))
.map(
({ field, label, defaultValue, form }) =>
({
field,
label,
defaultValue,
...form,
colProps: colPropsInDrawer,
} as FormSchema),
)
.sort((a, b) => {
const indexA = editFieldsIndexMap.get(a.field) as number;
const indexB = editFieldsIndexMap.get(b.field) as number;
return indexA - indexB;
});
const tableFieldsIndexMap = new Map(tableFields.map((field, index) => [field, index]));
export const columns: BasicColumn[] = schema.properties.filter(item => tableFields.includes(item.field))
.map(
({ field, label, table }) =>
({
dataIndex: field,
title: label,
...table,
} as BasicColumn)
)
.sort((a, b) => {
const indexA = tableFieldsIndexMap.get(a.dataIndex as string) as number;
const indexB = tableFieldsIndexMap.get(b.dataIndex as string) as number;
return indexA - indexB;
});
const descriptionFieldsIndexMap = new Map(descriptionFields.map((field, index) => [field, index]));
export const descriptionColumns: BasicColumn[] = schema.properties.filter(item => descriptionFields.includes(item.field))
.map(
({ field, label, table }) =>
({
dataIndex: field,
title: label,
...table,
} as BasicColumn),
)
.sort((a, b) => {
const indexA = descriptionFieldsIndexMap.get(a.dataIndex as string) as number;
const indexB = descriptionFieldsIndexMap.get(b.dataIndex as string) as number;
return indexA - indexB;
});