From 5fe1af6a75a87115aa827daef51796b389b9ef94 Mon Sep 17 00:00:00 2001 From: ChenYi <296215406@outlook.com> Date: Thu, 23 Oct 2025 13:54:19 +0800 Subject: [PATCH] =?UTF-8?q?OneNET=E7=89=A9=E6=A8=A1=E5=9E=8B=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web-antd/src/api-client/schemas.gen.ts | 7 +- apps/web-antd/src/api-client/types.gen.ts | 6 +- .../web-antd/src/locales/langs/en-US/abp.json | 4 +- .../web-antd/src/locales/langs/zh-CN/abp.json | 4 +- .../devicemanagement/thingmodelinfo/index.vue | 32 ++++++--- .../devicemanagement/thingmodelinfo/schema.ts | 72 ++++++------------- 6 files changed, 63 insertions(+), 62 deletions(-) diff --git a/apps/web-antd/src/api-client/schemas.gen.ts b/apps/web-antd/src/api-client/schemas.gen.ts index 2166b0c..9830caa 100644 --- a/apps/web-antd/src/api-client/schemas.gen.ts +++ b/apps/web-antd/src/api-client/schemas.gen.ts @@ -1190,10 +1190,15 @@ export const CopyAnotherProductInputSchema = { type: 'string', description: '平台产品ID', nullable: true + }, + sourceProductId: { + type: 'string', + description: '源产品ID', + nullable: true } }, additionalProperties: false, - description: '根据数据ID复制已存在物模型信息' + description: '复制已存在产品设备物模型信息' } as const; export const CopyStandardThingModelInputSchema = { diff --git a/apps/web-antd/src/api-client/types.gen.ts b/apps/web-antd/src/api-client/types.gen.ts index 2b91fc7..c25be2e 100644 --- a/apps/web-antd/src/api-client/types.gen.ts +++ b/apps/web-antd/src/api-client/types.gen.ts @@ -201,7 +201,7 @@ export type ControllerInterfaceApiDescriptionModel = { }; /** - * 根据数据ID复制已存在物模型信息 + * 复制已存在产品设备物模型信息 */ export type CopyAnotherProductInput = { ioTPlatform?: IoTPlatformTypeEnum; @@ -209,6 +209,10 @@ export type CopyAnotherProductInput = { * 平台产品ID */ ioTPlatformProductId?: (string) | null; + /** + * 源产品ID + */ + sourceProductId?: (string) | null; }; /** diff --git a/apps/web-antd/src/locales/langs/en-US/abp.json b/apps/web-antd/src/locales/langs/en-US/abp.json index b54d0f1..2c82941 100644 --- a/apps/web-antd/src/locales/langs/en-US/abp.json +++ b/apps/web-antd/src/locales/langs/en-US/abp.json @@ -224,7 +224,9 @@ "StandardFieldName": "StandardFieldName", "StandardFieldDisplayName": "StandardFieldDisplayName", "IsValueNeedConvert": "IsValueNeedConvert", - "StandardFieldValueType": "StandardFieldValueType" + "StandardFieldValueType": "StandardFieldValueType", + "copyStandardThingModel": "CopyStandardThingModel", + "copyAnotherThingModelModal": "CopyAnotherThingModelModal" }, "IoTDBBase": { "IoTDataType": "IoTDataType", diff --git a/apps/web-antd/src/locales/langs/zh-CN/abp.json b/apps/web-antd/src/locales/langs/zh-CN/abp.json index 68d67f0..ea1dd3e 100644 --- a/apps/web-antd/src/locales/langs/zh-CN/abp.json +++ b/apps/web-antd/src/locales/langs/zh-CN/abp.json @@ -217,7 +217,9 @@ "StandardFieldName": "标准物模型编码", "StandardFieldDisplayName": "标准物模型名称", "IsValueNeedConvert": "是否需要值类型转换", - "StandardFieldValueType": "标准物模型值类型" + "StandardFieldValueType": "标准物模型值类型", + "copyStandardThingModel": "复制标准模型", + "copyAnotherThingModelModal": "复制已有模型" }, "IoTDBBase": { "IoTDataType": "数据类型", diff --git a/apps/web-antd/src/views/devicemanagement/thingmodelinfo/index.vue b/apps/web-antd/src/views/devicemanagement/thingmodelinfo/index.vue index 733ab16..ff55dd7 100644 --- a/apps/web-antd/src/views/devicemanagement/thingmodelinfo/index.vue +++ b/apps/web-antd/src/views/devicemanagement/thingmodelinfo/index.vue @@ -187,6 +187,7 @@ watch( () => [props.visible, props.productId, props.ioTPlatform], async ([visible, productId, ioTPlatform]) => { console.log('物模型模态框props变化:', { visible, productId, ioTPlatform }); + console.log('所有props:', props); if (visible && productId) { // 延迟执行,确保组件完全初始化 setTimeout(async () => { @@ -274,6 +275,11 @@ const openAddModal = async () => { // 打开复制已有模型模态框 const openCopyAnotherThingModelModal = async () => { + console.log('打开复制模态框,当前props:', { + productId: props.productId, + productName: props.productName, + ioTPlatform: props.ioTPlatform + }); copyModalApi.open(); }; @@ -283,14 +289,22 @@ async function submitCopy() { if (!valid) return; const formValues = await copyFormApi.getValues(); + + console.log('复制提交参数:', { + formValues, + props: { + productId: props.productId, + productName: props.productName, + ioTPlatform: props.ioTPlatform + } + }); try { const resp = await postThingModelInfoCopyAnotherThingModelAsync({ body: { ioTPlatform: Number.parseInt(props.ioTPlatform) as 1 | 2, ioTPlatformProductId: props.productId, - sourceProductId: formValues.sourceProductId, - filedType: formValues.filedType, + sourceProductId: formValues.ioTPlatformProductId, }, }); @@ -370,14 +384,14 @@ function closeModal() { auth: ['AbpIdentity.Users.Create'], }, { - label: '复制标准模型', + label: $t('abp.thingModelInfos.copyStandardThingModel'), type: 'default', icon: 'ant-design:copy-outlined', onClick: copyStandardThingModel, auth: ['AbpIdentity.Users.Create'], }, { - label: '复制已有模型', + label: $t('abp.thingModelInfos.copyAnotherThingModelModal'), type: 'default', icon: 'ant-design:copy-outlined', onClick: openCopyAnotherThingModelModal, @@ -423,10 +437,10 @@ function closeModal() { + + + + + - - - - - diff --git a/apps/web-antd/src/views/devicemanagement/thingmodelinfo/schema.ts b/apps/web-antd/src/views/devicemanagement/thingmodelinfo/schema.ts index 4af2ca8..ddf51d1 100644 --- a/apps/web-antd/src/views/devicemanagement/thingmodelinfo/schema.ts +++ b/apps/web-antd/src/views/devicemanagement/thingmodelinfo/schema.ts @@ -4,7 +4,10 @@ import { z } from '@vben/common-ui'; import dayjs from 'dayjs'; -import { getCommonGetSelectList, postOneNetProductListAsync } from '#/api-client'; +import { + getCommonGetSelectList, + postOneNetProductListAsync, +} from '#/api-client'; import { $t } from '#/locales'; export const querySchema = computed(() => [ @@ -217,7 +220,7 @@ export const addThingModelFormSchema = computed(() => [ return []; }, }, - }, + }, { component: 'Switch', fieldName: 'isValueNeedConvert', @@ -251,7 +254,8 @@ export const editThingModelFormSchema = computed(() => [ optionsPropName: 'options', immediate: true, disabled: true, // 编辑时禁用 - placeholder: $t('common.pleaseSelect') + $t('abp.thingModelInfos.FiledType'), + placeholder: + $t('common.pleaseSelect') + $t('abp.thingModelInfos.FiledType'), afterFetch: (res: any) => { // 确保返回的是数组格式 if (Array.isArray(res)) { @@ -277,7 +281,8 @@ export const editThingModelFormSchema = computed(() => [ ), componentProps: { // disabled: true, // 编辑时禁用 - placeholder: $t('common.pleaseInput') + + placeholder: + $t('common.pleaseInput') + $t('abp.thingModelInfos.IoTPlatformRawFieldName'), }, }, @@ -298,7 +303,9 @@ export const editThingModelFormSchema = computed(() => [ .toString() .toUpperCase(); }, - placeholder: $t('common.pleaseInput') + $t('abp.thingModelInfos.StandardFieldDisplayName'), + placeholder: + $t('common.pleaseInput') + + $t('abp.thingModelInfos.StandardFieldDisplayName'), }), }, { @@ -308,7 +315,8 @@ export const editThingModelFormSchema = computed(() => [ rules: z.string().min(1, $t('common.required')), componentProps: { disabled: true, // 编辑时禁用 - placeholder: $t('common.pleaseSelect') + $t('abp.thingModelInfos.StandardFieldName') + placeholder: + $t('common.pleaseSelect') + $t('abp.thingModelInfos.StandardFieldName'), }, }, { @@ -330,7 +338,8 @@ export const editThingModelFormSchema = computed(() => [ immediate: true, allowClear: true, disabled: true, // 编辑时禁用 - placeholder: $t('common.pleaseSelect') + + placeholder: + $t('common.pleaseSelect') + $t('abp.thingModelInfos.StandardFieldValueType'), afterFetch: (res: any) => { let items = []; @@ -350,7 +359,7 @@ export const editThingModelFormSchema = computed(() => [ })); }, }, - }, + }, { component: 'Switch', fieldName: 'isValueNeedConvert', @@ -365,7 +374,7 @@ export const editThingModelFormSchema = computed(() => [ export const copyThingModelFormSchema = computed(() => [ { component: 'ApiSelect', - fieldName: 'sourceProductId', + fieldName: 'ioTPlatformProductId', label: '选择要复制的产品', rules: z.preprocess( (v) => (v == null ? '' : v), @@ -375,15 +384,13 @@ export const copyThingModelFormSchema = computed(() => [ api: postOneNetProductListAsync, params: { query: { - input: { - pageIndex: 1, - pageSize: 1000, - }, + pageIndex: 1, + pageSize: 1000, }, }, labelField: 'productName', valueField: 'ioTPlatformProductId', - optionsPropName: 'items', + optionsPropName: 'options', immediate: true, allowClear: true, placeholder: '请选择产品', @@ -398,41 +405,8 @@ export const copyThingModelFormSchema = computed(() => [ if (res && Array.isArray(res.data)) { return res.data; } - return []; - }, - }, - }, - { - component: 'ApiSelect', - fieldName: 'filedType', - label: '选择物模型类型', - rules: z.preprocess( - (v) => (v == null ? '' : v), - z.string().min(1, '请选择物模型类型'), - ), - componentProps: { - api: getCommonGetSelectList, - params: { - query: { - typeName: 'DataDictionaryTypeConst', - }, - }, - labelField: 'value', - valueField: 'key', - optionsPropName: 'options', - immediate: true, - allowClear: true, - placeholder: '请选择物模型类型', - afterFetch: (res: any) => { - // 确保返回的是数组格式 - if (Array.isArray(res)) { - return res; - } - if (res && Array.isArray(res.items)) { - return res.items; - } - if (res && Array.isArray(res.data)) { - return res.data; + if (res && Array.isArray(res.data.items)) { + return res.data.items; } return []; },