import type { VxeGridProps } from '#/adapter/vxe-table'; import { computed } from 'vue'; import { z } from '@vben/common-ui'; import { $t } from '#/locales'; export const querySchema = computed(() => [ { component: 'Input', fieldName: 'meterAddress', label: $t('abp.meters.meterAddress'), }, ]); export const meterTypeOptions = [ { label: $t('abp.meters.ElectricityMeter'), value: 1, }, { label: $t('abp.meters.waterMeter'), value: 2, }, { label: $t('abp.meters.GasMeter'), value: 3, }, { label: $t('abp.meters.HeatMeter'), value: 4, }, { label: $t('abp.meters.WaterMeterFlowmeter'), value: 5, }, { label: $t('abp.meters.GasMeterFlowmeter'), value: 6, }, ]; export const rateOptions = [ { label: $t('abp.meters.MultipleRate'), value: false, }, { label: $t('abp.meters.SingleRate'), value: true, }, ]; export const tableSchema: any = computed((): VxeGridProps['columns'] => [ { title: $t('common.seq'), type: 'seq', width: 50 }, { field: 'meterName', title: $t('abp.meters.meterName'), minWidth: '150' }, { field: 'meterAddress', title: $t('abp.meters.meterAddress'), minWidth: '150', }, { field: 'meterType', title: $t('abp.meters.meterType'), minWidth: '150', slots: { default: 'isMeterType' }, }, { field: 'dynamicPassword', title: $t('abp.meters.dynamicPassword'), minWidth: '150', slots: { default: 'isDynamicPassword' }, }, { field: 'password', title: $t('abp.meters.password'), minWidth: '100', }, { field: 'singleRate', title: $t('abp.meters.singleRate'), minWidth: '150', slots: { default: 'isSingleRate' }, }, { field: 'selfDevelop', title: $t('abp.meters.selfDevelop'), minWidth: '150', slots: { default: 'isSelfDevelop' }, }, { field: 'brandType', title: $t('abp.meters.brandType'), minWidth: '150' }, { field: 'archiveStatus', title: $t('abp.meters.archiveStatus'), minWidth: '150', slots: { default: 'isArchiveStatus' }, }, { field: 'tripState', title: $t('abp.meters.tripState'), minWidth: '150', slots: { default: 'isTripState' }, }, { field: 'timesA', title: $t('abp.meters.timesA'), minWidth: '100' }, { field: 'timev', title: $t('abp.meters.timev'), minWidth: '100' }, { field: 'haveValve', title: $t('abp.meters.haveValve'), minWidth: '150', slots: { default: 'isHaveValve' }, }, { field: 'enabled', title: $t('common.isEnable'), minWidth: '150', slots: { default: 'isEnable' }, }, { title: $t('common.action'), field: 'action', fixed: 'right', width: '150', slots: { default: 'action' }, }, ]); export const addUserFormSchema: any = computed(() => [ { component: 'Input', fieldName: 'meterName', label: $t('abp.meters.meterName'), rules: z.string().min(1, { message: `${$t('common.pleaseInput')}${$t('common.info')}${$t('abp.meters.meterName')}`, }), }, { component: 'Input', fieldName: 'meterAddress', label: $t('abp.meters.meterAddress'), rules: z .string() .min(1, { message: `${$t('common.pleaseInput')}${$t('common.numberType')}${$t('abp.meters.meterAddress')}`, }) .refine((value) => /^\d+$/.test(value), { message: $t('abp.meters.checkmeterAddress'), }), }, { component: 'Select', componentProps: { allowClear: true, options: meterTypeOptions, placeholder: `${$t('common.pleaseSelect')}${$t('abp.meters.meterType')}`, }, fieldName: 'meterType', label: $t('abp.meters.meterType'), rules: z .number() .min(1, { message: `${$t('common.pleaseSelect')}${$t('abp.meters.meterType')}`, }) .default(1), }, { component: 'Select', componentProps: { allowClear: true, options: rateOptions, placeholder: `${$t('common.pleaseSelect')}${$t('abp.meters.singleRate')}`, }, dependencies: { show(values: any) { return values.meterType === 1; }, rules(values: any) { if (values.meterType === 1) { return 'required'; } return null; }, triggerFields: ['meterType'], }, fieldName: 'singleRate', label: $t('abp.meters.singleRate'), }, { component: 'Switch', componentProps: { class: 'w-auto', }, fieldName: 'selfDevelop', label: $t('abp.meters.selfDevelop'), }, { component: 'Input', fieldName: 'brandType', label: $t('abp.meters.brandType'), rules: z.string().optional(), }, { component: 'Switch', componentProps: { class: 'w-auto', }, fieldName: 'dynamicPassword', label: $t('abp.meters.dynamicPassword'), }, { component: 'Input', fieldName: 'password', label: $t('abp.meters.password'), rules: z.string().optional(), }, { component: 'Switch', componentProps: { class: 'w-auto', }, dependencies: { show(values: any) { return values.meterType === 2; }, triggerFields: ['meterType'], }, fieldName: 'haveValve', label: $t('abp.meters.haveValve'), }, { component: 'Input', fieldName: 'timesA', label: $t('abp.meters.timesA'), componentProps: { allowClear: true, placeholder: `${$t('common.pleaseInput')}${$t('abp.meters.timesA')}`, }, dependencies: { show(values: any) { return values.meterType === 1; }, triggerFields: ['meterType'], }, rules: z .string({ message: `${$t('common.pleaseInput')}${$t('abp.meters.timesA')}`, }) .default('1'), }, { component: 'Input', fieldName: 'timev', label: $t('abp.meters.timev'), componentProps: { allowClear: true, placeholder: `${$t('common.pleaseInput')}${$t('abp.meters.timev')}`, }, dependencies: { show(values: any) { return values.meterType === 1; }, triggerFields: ['meterType'], }, rules: z .string({ message: `${$t('common.pleaseInput')}${$t('abp.meters.timesA')}`, }) .default('1'), }, { component: 'Input', fieldName: 'meteringCode', label: $t('abp.meters.meteringCode'), componentProps: { allowClear: true, placeholder: `${$t('common.pleaseInput')}${$t('abp.meters.meteringCode')}`, }, rules: z .string({ message: `${$t('common.pleaseInput')}${$t('abp.meters.meteringCode')}`, }) .default('1'), }, ]); export const editUserFormSchemaEdit: any = computed(() => [ { component: 'Input', fieldName: 'meterName', label: $t('abp.meters.meterName'), rules: z.string().min(1, { message: `${$t('common.pleaseInput')}${$t('common.info')}${$t('abp.meters.meterName')}`, }), }, { component: 'Input', fieldName: 'meterAddress', label: $t('abp.meters.meterAddress'), rules: z .string() .min(1, { message: `${$t('common.pleaseInput')}${$t('common.numberType')}${$t('abp.meters.meterAddress')}`, }) .refine((value) => /^\d+$/.test(value), { message: $t('abp.meters.checkmeterAddress'), }), }, { component: 'Select', componentProps: { allowClear: true, options: meterTypeOptions, placeholder: `${$t('common.pleaseSelect')}${$t('abp.meters.meterType')}`, }, fieldName: 'meterType', label: $t('abp.meters.meterType'), rules: z .number() .min(1, { message: `${$t('common.pleaseSelect')}${$t('abp.meters.meterType')}`, }) .default(1), }, { component: 'Select', componentProps: { allowClear: true, options: rateOptions, placeholder: `${$t('common.pleaseSelect')}${$t('abp.meters.singleRate')}`, }, dependencies: { show(values: any) { return values.meterType === 1; }, rules(values: any) { if (values.meterType === 1) { return 'required'; } return null; }, triggerFields: ['meterType'], }, fieldName: 'singleRate', label: $t('abp.meters.singleRate'), }, { component: 'Switch', componentProps: { class: 'w-auto', }, fieldName: 'selfDevelop', label: $t('abp.meters.selfDevelop'), }, { component: 'Input', fieldName: 'brandType', label: $t('abp.meters.brandType'), rules: z.string().optional(), }, { component: 'Switch', componentProps: { class: 'w-auto', }, fieldName: 'dynamicPassword', label: $t('abp.meters.dynamicPassword'), }, { component: 'Input', fieldName: 'password', label: $t('abp.meters.password'), rules: z.string().optional(), }, { component: 'Switch', componentProps: { class: 'w-auto', }, dependencies: { show(values: any) { return values.meterType === 2; }, triggerFields: ['meterType'], }, fieldName: 'haveValve', label: $t('abp.meters.haveValve'), }, { component: 'Input', fieldName: 'timesA', label: $t('abp.meters.timesA'), componentProps: { allowClear: true, placeholder: `${$t('common.pleaseInput')}${$t('abp.meters.timesA')}`, }, dependencies: { show(values: any) { return values.meterType === 1; }, triggerFields: ['meterType'], }, rules: z .string({ message: `${$t('common.pleaseInput')}${$t('abp.meters.timesA')}`, }) .default('1'), }, { component: 'Input', fieldName: 'timev', label: $t('abp.meters.timev'), componentProps: { allowClear: true, placeholder: `${$t('common.pleaseInput')}${$t('abp.meters.timev')}`, }, dependencies: { show(values: any) { return values.meterType === 1; }, triggerFields: ['meterType'], }, rules: z .string({ message: `${$t('common.pleaseInput')}${$t('abp.meters.timev')}`, }) .default('1'), }, { component: 'Input', fieldName: 'meteringCode', label: $t('abp.meters.meteringCode'), componentProps: { allowClear: true, placeholder: `${$t('common.pleaseInput')}${$t('abp.meters.meteringCode')}`, }, rules: z .string({ message: `${$t('common.pleaseInput')}${$t('abp.meters.meteringCode')}`, }) .min(1, { message: `${$t('common.MustGreaterTthan0')}`, }) .default('1'), }, ]);