detect-embeded/src/views/system/device/schema.ts
2024-11-14 13:43:41 +08:00

381 lines
9.6 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-09-26 11:50:00
*/
import { BasicColumn } from '@/components/Table';
import { FormSchema } from '@/components/Table';
import * as RegionApi from "@/api/system/regionApi";
const colProps = { xs: { span: 24 }, sm: { span: 24 }, lg: { span: 6 } };
const colPropsInDrawer = { span: 24 };
export const schema = {
model: 'Device',
viewInPage: true,
properties: [
{
field: 'id',
label: 'ID系统自动生成',
defaultValue: undefined,
form: {
componentProps: {
allowClear: false,
placeholder: 'ID系统自动生成',
},
colProps,
component: 'InputNumber',
rules: [{ required: true, message: '请输入ID系统自动生成' }],
},
table: {
},
},
{
field: 'regionId',
label: '区域',
defaultValue: undefined,
form: {
colProps,
component: 'ApiSelect',
componentProps: {
allowClear: true,
placeholder: '请选择区域',
api: (_) => RegionApi.all(),
labelField: 'name',
valueField: 'id',
},
rules: [{ required: true, message: '请选择区域!' }],
},
table: {
customRender: ({ text, record }) => record.region ? record.region.name : text,
},
},
{
field: 'name',
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: 'devicePort',
label: '设备端口',
defaultValue: undefined,
form: {
componentProps: {
allowClear: true,
placeholder: '设备端口',
},
colProps,
component: 'Input',
},
table: {
},
},
{
field: 'deviceUsername',
label: '用户名',
defaultValue: undefined,
form: {
componentProps: {
allowClear: true,
placeholder: '用户名',
},
colProps,
component: 'Input',
},
table: {
},
},
{
field: 'devicePassword',
label: '密码',
defaultValue: undefined,
form: {
componentProps: {
allowClear: true,
placeholder: '密码',
},
colProps,
component: 'InputPassword',
},
table: {
},
},
{
field: 'deviceType',
label: '设备类型',
defaultValue: undefined,
form: {
componentProps: {
allowClear: true,
placeholder: '设备类型',
},
colProps,
component: 'Input',
},
table: {
},
},
{
field: 'softwareVersion',
label: '软件版本',
defaultValue: undefined,
form: {
componentProps: {
allowClear: true,
placeholder: '软件版本',
},
colProps,
component: 'Input',
},
table: {
},
},
{
field: 'firmwareVersion',
label: '固件版本',
defaultValue: undefined,
form: {
componentProps: {
allowClear: true,
placeholder: '固件版本',
},
colProps,
component: 'Input',
},
table: {
},
},
{
field: 'algorithmVersion',
label: '算法版本',
defaultValue: undefined,
form: {
componentProps: {
allowClear: true,
placeholder: '算法版本',
},
colProps,
component: 'Input',
},
table: {
},
},
{
field: 'modelVersion',
label: '模型版本',
defaultValue: undefined,
form: {
componentProps: {
allowClear: true,
placeholder: '模型版本',
},
colProps,
component: 'Input',
},
table: {
},
},
{
field: 'cameraIp',
label: '相机IP地址',
defaultValue: undefined,
form: {
componentProps: {
allowClear: true,
placeholder: '相机IP地址',
},
colProps,
component: 'Input',
},
table: {
},
},
{
field: 'cameraUsername',
label: '相机用户名',
defaultValue: undefined,
form: {
componentProps: {
allowClear: true,
placeholder: '相机用户名',
},
colProps,
component: 'Input',
},
table: {
},
},
{
field: 'cameraPassword',
label: '相机密码',
defaultValue: undefined,
form: {
componentProps: {
allowClear: true,
placeholder: '相机密码',
},
colProps,
component: 'InputPassword',
},
table: {
},
},
{
field: 'cameraRtsp',
label: '相机rtsp完整地址',
defaultValue: undefined,
form: {
componentProps: {
allowClear: true,
placeholder: '相机rtsp完整地址',
},
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 = ['regionId','name','deviceIp'];
const editFields = ['regionId','name','deviceIp','devicePort','deviceUsername','devicePassword','deviceType','softwareVersion','firmwareVersion','algorithmVersion','modelVersion','cameraIp','cameraUsername','cameraPassword','cameraRtsp'];
const tableFields = ['regionId','name','deviceIp','devicePort','deviceUsername','devicePassword','deviceType','softwareVersion','firmwareVersion','algorithmVersion','modelVersion','cameraIp','cameraUsername','cameraPassword','cameraRtsp','createTime','updateTime'];
const descriptionFields = ['regionId','name','deviceIp','devicePort','deviceUsername','devicePassword','deviceType','softwareVersion','firmwareVersion','algorithmVersion','modelVersion','cameraIp','cameraUsername','cameraPassword','cameraRtsp','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;
});