import type { FormSchemaGetter } from '#/adapter/form' import type { VxeGridProps } from '#/adapter/vxe-table' import { getDictOptions } from '#/utils/dict' import { renderDict } from '#/utils/render' export function initDrawerForm(type: number) { const drawerSchema: FormSchemaGetter = () => [ { label: '主键id', fieldName: 'id', component: 'Input', dependencies: { show: () => false, triggerFields: [''], }, }, { label: '仪表名称', fieldName: 'meterName', component: 'Input', rules: 'selectRequired', }, { label: '楼层', fieldName: 'floorId', component: 'TreeSelect', defaultValue: undefined, rules: 'required', }, { label: '安装位置', fieldName: 'installLocation', component: 'Input', }, { label: '仪表编码', fieldName: 'meterCode', component: 'Input', rules: 'required', }, { label: '采集器IP', fieldName: 'hostIp', component: 'Input', rules: 'required', }, { label: type === 1 ? '设备类型(电表)' : type === 2 ? '设备类型(水表)' : '设备类型(气表)', fieldName: 'meterType', component: 'Select', defaultValue: type.toString(), disabled: true, componentProps: { // 可选从DictEnum中获取 DictEnum.METER_TYPE 便于维护 options: getDictOptions('meter_type'), }, rules: 'selectRequired', }, { label: type === 1 ? '计量单位(度)' : type === 2 ? '计量单位(吨)' : '计量单位(立方米)', fieldName: 'meterUnit', component: 'Select', defaultValue: type.toString(), disabled: true, componentProps: { // 可选从DictEnum中获取 DictEnum.METER_UNIT 便于维护 options: getDictOptions('meter_unit'), }, rules: 'selectRequired', }, { label: '初始读数', fieldName: 'initReading', component: 'Input', }, { label: '最大量程', fieldName: 'maxRang', component: 'Input', }, { label: '通信状态', fieldName: 'communicationState', component: 'Select', componentProps: { // 可选从DictEnum中获取 DictEnum.SIS_DEVICE_STATUS 便于维护 options: getDictOptions('sis_device_status'), }, }, // { // label: '运行状态', // fieldName: 'runningState', // component: 'Select', // componentProps: { // // 可选从DictEnum中获取 DictEnum.SIS_DEVICE_STATUS 便于维护 // options: getDictOptions('sis_device_status'), // }, // }, { label: '备注', fieldName: 'remark', component: 'Textarea', }, ] return drawerSchema } export function initQuerySchema(type: number) { const querySchema: FormSchemaGetter = () => [ { component: 'Input', fieldName: 'meterName', label: '仪表名称', }, { component: 'Input', fieldName: 'meterCode', label: '仪表编码', }, { component: 'Select', disabled: true, componentProps: { // 可选从DictEnum中获取 DictEnum.METER_TYPE 便于维护 options: getDictOptions('meter_type'), }, defaultValue: type.toString(), fieldName: 'meterType', label: '设备类型', } ] return querySchema } export function initColumns(type: number) { // 需要使用i18n注意这里要改成getter形式 否则切换语言不会刷新 // export const columns: () => VxeGridProps['columns'] = () => [ const columns: VxeGridProps['columns'] = [ { type: 'checkbox', width: 60 }, { title: '仪表名称', field: 'meterName', }, { title: '仪表编码', field: 'meterCode', }, // { // title: '设备厂商', // field: 'factoryNo', // }, { title: type === 1 ? '设备类型(电表)' : type === 2 ? '设备类型(水表)' : '设备类型(气表)', field: 'meterType', slots: { default: ({ row }) => { // 可选从DictEnum中获取 DictEnum.METER_TYPE 便于维护 return renderDict(row.meterType, 'meter_type') }, }, }, { title: type === 1 ? '计量单位(度)' : type === 2 ? '计量单位(吨)' : '计量单位(立方米)', field: 'meterUnit', slots: { default: ({ row }) => { // 可选从DictEnum中获取 DictEnum.METER_UNIT 便于维护 return renderDict(row.meterUnit, 'meter_unit') }, }, }, { title: '楼层', field: 'floorName', }, { title: '安装位置', field: 'installLocation', }, { title: '初始读数', field: 'initReading', }, { title: '最大量程', field: 'maxRang', }, { title: '通信状态', field: 'communicationState', slots: { default: ({ row }) => { // 可选从DictEnum中获取 DictEnum.SIS_DEVICE_STATUS 便于维护 return renderDict(row.communicationState, 'sis_device_status') }, }, }, // { // title: '运行状态', // field: 'runningState', // slots: { // default: ({ row }) => { // // 可选从DictEnum中获取 DictEnum.SIS_DEVICE_STATUS 便于维护 // return renderDict(row.runningState, 'sis_device_status') // }, // }, // }, { title: '备注', field: 'remark', }, { field: 'action', fixed: 'right', slots: { default: 'action' }, title: '操作', width: 180, }, ] return columns }