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; }