Files
admin-vben5/apps/web-antd/src/views/property/inspectionManagement/inspectionPlan/data.ts
dev_ljl 620bf8dd17
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run
1、巡检计划
2025-07-11 17:29:59 +08:00

249 lines
5.2 KiB
TypeScript

import type {FormSchemaGetter} from '#/adapter/form';
import type {VxeGridProps} from '#/adapter/vxe-table';
import {getDictOptions} from "#/utils/dict";
import {renderDict} from "#/utils/render";
import {z} from "#/adapter/form";
export const querySchema: FormSchemaGetter = () => [
{
component: 'Input',
fieldName: 'planName',
label: '计划名称',
},
{
component: 'Select',
componentProps: {
options: getDictOptions('wy_xjzq'),
},
fieldName: 'inspectionPlanPeriod',
label: '巡检周期',
},
{
component: 'Select',
componentProps: {
options: getDictOptions('wy_xjqdfs'),
},
fieldName: 'signType',
label: '签到方式',
},
];
export const columns: VxeGridProps['columns'] = [
{type: 'checkbox', width: 60},
{
title: '计划名称',
field: 'planName',
minWidth: 180,
},
{
title: '巡检路线',
field: 'inspectionRouteId',
width: 180,
},
{
title: '巡检周期',
field: 'inspectionPlanPeriod',
slots: {
default: ({row}) => {
return renderDict(row.inspectionPlanPeriod, 'wy_xjzq');
},
},
width: 100,
},
{
title: '任务提前分钟',
field: 'beforeTime',
width: 120,
},
{
title: '开始日期',
field: 'startDate',
width: 120,
},
{
title: '结束日期',
field: 'endDate',
width: 120,
},
{
title: '签到方式',
field: 'signType',
slots: {
default: ({row}) => {
return renderDict(row.signType, 'wy_xjqdfs');
},
},
width: 120,
},
{
title: '是否允许补检',
field: 'canReexamine',
slots: {
default: ({row}) => {
return renderDict(row.canReexamine, 'wy_sf');
},
},
width: 120,
},
{
title: '状态',
field: 'state',
width: 120,
slots:{default: 'state'}
},
{
field: 'action',
fixed: 'right',
slots: {default: 'action'},
title: '操作',
width: 180,
},
];
export const modalSchema: FormSchemaGetter = () => [
{
label: '主键id',
fieldName: 'id',
component: 'Input',
dependencies: {
show: () => false,
triggerFields: [''],
},
},
{
label: '计划名称',
fieldName: 'planName',
component: 'Input',
rules: 'required',
},
{
label: '巡检路线',
fieldName: 'inspectionRouteId',
component: 'ApiSelect',
rules: 'required',
},
{
label: '巡检周期',
fieldName: 'inspectionPlanPeriod',
component: 'Select',
rules: 'required',
componentProps: {
options: getDictOptions('wy_xjzq'),
},
},
{
label: '任务提前',
fieldName: 'beforeTime',
component: 'Input',
rules: z.number({
required_error: "请输入任务提前完成分钟数",
invalid_type_error: "请输入任务提前完成分钟数"
}),
slots: {default: 'beforeTime'},
},
{
label: '周',
fieldName: 'inspectionWorkday',
component: 'CheckboxGroup',
rules: 'selectRequired',
formItemClass: 'col-span-2',
dependencies: {
show: (formValue) => formValue.inspectionPlanPeriod == '2',
triggerFields: ['inspectionPlanPeriod'],
},
componentProps: {
options: getDictOptions('wy_xq')
}
},
{
label: '月',
fieldName: 'inspectionMonth',
component: 'CheckboxGroup',
rules: 'selectRequired',
formItemClass: 'col-span-2',
dependencies: {
show: (formValue) => formValue.inspectionPlanPeriod == '1',
triggerFields: ['inspectionPlanPeriod'],
},
componentProps: {
options: Array.from({ length: 12 }, (_, i) => ({
label: `${i + 1}`,
value: (i + 1).toString(),
})),
}
},
{
label: '日',
fieldName: 'inspectionDay',
component: 'CheckboxGroup',
rules: 'selectRequired',
formItemClass: 'col-span-2',
dependencies: {
show: (formValue) => formValue.inspectionPlanPeriod == '1',
triggerFields: ['inspectionPlanPeriod'],
},
componentProps: {
options: Array.from({ length: 31 }, (_, i) => ({
label: `${i + 1}`,
value: (i + 1).toString(),
})),
}
},
{
label: '计划日期',
fieldName: 'planDate',
component: 'RangePicker',
componentProps: {
showTime: true,
format: 'YYYY-MM-DD HH:mm:ss',
valueFormat: 'YYYY-MM-DD HH:mm:ss',
},
rules: 'required',
},
{
label: '签到方式',
fieldName: 'signType',
component: 'Select',
componentProps: {
options: getDictOptions('wy_xjqdfs'),
},
rules: 'selectRequired',
},
{
label: '允许补检',
fieldName: 'canReexamine',
component: 'RadioGroup',
componentProps: {
options: getDictOptions('wy_sf'),
buttonStyle: 'solid',
},
rules: 'selectRequired',
},
{
label: '巡检人员',
fieldName: 'userId',
component: 'ApiSelect',
componentProps:{
mode: 'multiple',
},
rules: z.array(z.string()).min(1, { message: '请选择巡检人员' }),
formItemClass: 'col-span-2'
},
{
label: '备注',
fieldName: 'remark',
component: 'Textarea',
formItemClass: 'col-span-2'
},
];
const weekOptions = (): any[] => {
let arr: any[] = []
for (let i = 1; i <= 7; i++) {
arr.push({label: '星期' + '', value: i})
}
return arr;
}