diff --git a/apps/web-antd/.env.development b/apps/web-antd/.env.development
index 6470208..6069b02 100644
--- a/apps/web-antd/.env.development
+++ b/apps/web-antd/.env.development
@@ -29,10 +29,10 @@ VITE_REFRESH_ROLE = true
# VITE_WEBSOCKET_URL=http://182.43.18.151:44317/signalr/notification
# 后端接口地址
-VITE_APP_API_ADDRESS=http://47.110.53.196:28080
-# VITE_APP_API_ADDRESS=http://10.10.70.222:44333
+#VITE_APP_API_ADDRESS=http://47.110.53.196:28080
+ VITE_APP_API_ADDRESS=http://10.10.70.11:10500
# websocket地址
-VITE_WEBSOCKET_URL=http://localhost:44315/signalr/notification
+VITE_WEBSOCKET_URL=http://10.10.70.11:10500/signalr/notification
diff --git a/apps/web-antd/src/views/ctwingManger/account/index.vue b/apps/web-antd/src/views/ctwingManger/account/index.vue
new file mode 100644
index 0000000..9a3e3c8
--- /dev/null
+++ b/apps/web-antd/src/views/ctwingManger/account/index.vue
@@ -0,0 +1,326 @@
+
+
+
+
+
+
+
+
+
+
+ {{ meterTypeOptions[row.meterType - 1]?.label }}
+
+
+ {{ rateOptions.find((item) => item.value === row.singleRate)?.label }}
+
+
+ {{
+ row.archiveStatus ? $t('common.Issued') : $t('common.Undistributed')
+ }}
+
+
+ {{ row.tripState ? $t('common.SwitchOff') : $t('common.Closing') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/web-antd/src/views/ctwingManger/account/schema.ts b/apps/web-antd/src/views/ctwingManger/account/schema.ts
new file mode 100644
index 0000000..ff24414
--- /dev/null
+++ b/apps/web-antd/src/views/ctwingManger/account/schema.ts
@@ -0,0 +1,442 @@
+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'),
+ },
+]);
diff --git a/apps/web-antd/src/views/ctwingManger/privateProduct/index.vue b/apps/web-antd/src/views/ctwingManger/privateProduct/index.vue
new file mode 100644
index 0000000..9a3e3c8
--- /dev/null
+++ b/apps/web-antd/src/views/ctwingManger/privateProduct/index.vue
@@ -0,0 +1,326 @@
+
+
+
+
+
+
+
+
+
+
+ {{ meterTypeOptions[row.meterType - 1]?.label }}
+
+
+ {{ rateOptions.find((item) => item.value === row.singleRate)?.label }}
+
+
+ {{
+ row.archiveStatus ? $t('common.Issued') : $t('common.Undistributed')
+ }}
+
+
+ {{ row.tripState ? $t('common.SwitchOff') : $t('common.Closing') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/web-antd/src/views/ctwingManger/privateProduct/schema.ts b/apps/web-antd/src/views/ctwingManger/privateProduct/schema.ts
new file mode 100644
index 0000000..ff24414
--- /dev/null
+++ b/apps/web-antd/src/views/ctwingManger/privateProduct/schema.ts
@@ -0,0 +1,442 @@
+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'),
+ },
+]);
diff --git a/apps/web-antd/src/views/dataManger/measuringPoint/index.vue b/apps/web-antd/src/views/dataManger/ctwingLog/index.vue
similarity index 100%
rename from apps/web-antd/src/views/dataManger/measuringPoint/index.vue
rename to apps/web-antd/src/views/dataManger/ctwingLog/index.vue
diff --git a/apps/web-antd/src/views/dataManger/measuringPoint/schema.ts b/apps/web-antd/src/views/dataManger/ctwingLog/schema.ts
similarity index 100%
rename from apps/web-antd/src/views/dataManger/measuringPoint/schema.ts
rename to apps/web-antd/src/views/dataManger/ctwingLog/schema.ts
diff --git a/apps/web-antd/src/views/dataManger/deviceData/index.vue b/apps/web-antd/src/views/dataManger/deviceData/index.vue
new file mode 100644
index 0000000..439bb1f
--- /dev/null
+++ b/apps/web-antd/src/views/dataManger/deviceData/index.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
diff --git a/apps/web-antd/src/views/dataManger/deviceData/schema.ts b/apps/web-antd/src/views/dataManger/deviceData/schema.ts
new file mode 100644
index 0000000..4ca1afc
--- /dev/null
+++ b/apps/web-antd/src/views/dataManger/deviceData/schema.ts
@@ -0,0 +1,42 @@
+import type { VxeGridProps } from '#/adapter/vxe-table';
+
+import { computed } from 'vue';
+
+import dayjs from 'dayjs';
+
+import { $t } from '#/locales';
+
+export const querySchema = computed(() => [
+ {
+ component: 'Input',
+ fieldName: 'FocusAddress',
+ label: $t('abp.focus.focusAddress'),
+ },
+]);
+export const tableSchema: any = computed((): VxeGridProps['columns'] => [
+ { title: $t('common.seq'), type: 'seq', width: 50 },
+ { field: 'systemName', title: $t('abp.log.systemName'), minWidth: '150' },
+ {
+ field: 'projectId',
+ title: $t('abp.log.projectId'),
+ minWidth: '150',
+ },
+ {
+ field: 'dataType',
+ title: $t('abp.log.dataType'),
+ minWidth: '150',
+ },
+ {
+ field: 'deviceType',
+ title: $t('abp.log.deviceType'),
+ minWidth: '150',
+ },
+ {
+ field: 'times',
+ title: $t('abp.log.timestamps'),
+ minWidth: '150',
+ formatter: ({ cellValue }) => {
+ return dayjs(cellValue).format('YYYY-MM-DD HH:mm:ss');
+ },
+ },
+]);
diff --git a/apps/web-antd/src/views/dataManger/onenetLog/index.vue b/apps/web-antd/src/views/dataManger/onenetLog/index.vue
new file mode 100644
index 0000000..439bb1f
--- /dev/null
+++ b/apps/web-antd/src/views/dataManger/onenetLog/index.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
diff --git a/apps/web-antd/src/views/dataManger/onenetLog/schema.ts b/apps/web-antd/src/views/dataManger/onenetLog/schema.ts
new file mode 100644
index 0000000..4ca1afc
--- /dev/null
+++ b/apps/web-antd/src/views/dataManger/onenetLog/schema.ts
@@ -0,0 +1,42 @@
+import type { VxeGridProps } from '#/adapter/vxe-table';
+
+import { computed } from 'vue';
+
+import dayjs from 'dayjs';
+
+import { $t } from '#/locales';
+
+export const querySchema = computed(() => [
+ {
+ component: 'Input',
+ fieldName: 'FocusAddress',
+ label: $t('abp.focus.focusAddress'),
+ },
+]);
+export const tableSchema: any = computed((): VxeGridProps['columns'] => [
+ { title: $t('common.seq'), type: 'seq', width: 50 },
+ { field: 'systemName', title: $t('abp.log.systemName'), minWidth: '150' },
+ {
+ field: 'projectId',
+ title: $t('abp.log.projectId'),
+ minWidth: '150',
+ },
+ {
+ field: 'dataType',
+ title: $t('abp.log.dataType'),
+ minWidth: '150',
+ },
+ {
+ field: 'deviceType',
+ title: $t('abp.log.deviceType'),
+ minWidth: '150',
+ },
+ {
+ field: 'times',
+ title: $t('abp.log.timestamps'),
+ minWidth: '150',
+ formatter: ({ cellValue }) => {
+ return dayjs(cellValue).format('YYYY-MM-DD HH:mm:ss');
+ },
+ },
+]);
diff --git a/apps/web-antd/src/views/onenetManger/account/index.vue b/apps/web-antd/src/views/onenetManger/account/index.vue
new file mode 100644
index 0000000..9a3e3c8
--- /dev/null
+++ b/apps/web-antd/src/views/onenetManger/account/index.vue
@@ -0,0 +1,326 @@
+
+
+
+
+
+
+
+
+
+
+ {{ meterTypeOptions[row.meterType - 1]?.label }}
+
+
+ {{ rateOptions.find((item) => item.value === row.singleRate)?.label }}
+
+
+ {{
+ row.archiveStatus ? $t('common.Issued') : $t('common.Undistributed')
+ }}
+
+
+ {{ row.tripState ? $t('common.SwitchOff') : $t('common.Closing') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/web-antd/src/views/onenetManger/account/schema.ts b/apps/web-antd/src/views/onenetManger/account/schema.ts
new file mode 100644
index 0000000..ff24414
--- /dev/null
+++ b/apps/web-antd/src/views/onenetManger/account/schema.ts
@@ -0,0 +1,442 @@
+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'),
+ },
+]);
diff --git a/apps/web-antd/src/views/onenetManger/privateProduct/index.vue b/apps/web-antd/src/views/onenetManger/privateProduct/index.vue
new file mode 100644
index 0000000..9a3e3c8
--- /dev/null
+++ b/apps/web-antd/src/views/onenetManger/privateProduct/index.vue
@@ -0,0 +1,326 @@
+
+
+
+
+
+
+
+
+
+
+ {{ meterTypeOptions[row.meterType - 1]?.label }}
+
+
+ {{ rateOptions.find((item) => item.value === row.singleRate)?.label }}
+
+
+ {{
+ row.archiveStatus ? $t('common.Issued') : $t('common.Undistributed')
+ }}
+
+
+ {{ row.tripState ? $t('common.SwitchOff') : $t('common.Closing') }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/web-antd/src/views/onenetManger/privateProduct/schema.ts b/apps/web-antd/src/views/onenetManger/privateProduct/schema.ts
new file mode 100644
index 0000000..ff24414
--- /dev/null
+++ b/apps/web-antd/src/views/onenetManger/privateProduct/schema.ts
@@ -0,0 +1,442 @@
+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'),
+ },
+]);