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 [];
},