From 6d74957b6e37d4541d4078c95dbd67bb05436c11 Mon Sep 17 00:00:00 2001 From: liutao <790864623@qq.com> Date: Mon, 29 Jun 2026 11:08:27 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E7=82=B9=E4=BD=8D=E5=AF=BC?= =?UTF-8?q?=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/erp/product/unit/index.ts | 4 +- src/api/iot/device/index.ts | 6 +- src/locales/en.ts | 17 +- src/locales/zh-CN.ts | 16 +- .../product/unit/ProductUnitImportForm.vue | 2 +- .../components/DeviceAttributeImportForm.vue | 151 ++++++++++++++++++ .../device/components/DeviceAttributeList.vue | 21 +++ 7 files changed, 207 insertions(+), 10 deletions(-) create mode 100644 src/views/iot/device/components/DeviceAttributeImportForm.vue diff --git a/src/api/erp/product/unit/index.ts b/src/api/erp/product/unit/index.ts index 5354dbd1..d0991170 100644 --- a/src/api/erp/product/unit/index.ts +++ b/src/api/erp/product/unit/index.ts @@ -57,8 +57,8 @@ export const ProductUnitApi = { return await request.get({ url: `/erp/product-unit/flag-list`}) }, - // 下载用户导入模板 - importUserTemplate: async () => { + // 下载产品主单位导入模板 + importProductUnitTemplate: async () => { return await request.download({ url: '/erp/product-unit/get-import-template' }) } } diff --git a/src/api/iot/device/index.ts b/src/api/iot/device/index.ts index 806a7129..d021b322 100644 --- a/src/api/iot/device/index.ts +++ b/src/api/iot/device/index.ts @@ -195,6 +195,10 @@ export const DeviceApi = { getDeviceAttributeList: async (deviceId: number | string) => { return await request.get({ url: `/iot/device/device-attribute/list?deviceId=` + deviceId }) }, + // 下载设备属性导入模板 + importDeviceAttributeTemplate: async () => { + return await request.download({ url: '/iot/device/device-attribute/get-import-template' }) + }, getDeviceContactModelPage: async () => { return await request.get({ url: `/iot/device-contact-model/page` }) @@ -219,7 +223,7 @@ export const DeviceApi = { return await request.download({ url: `/iot/device-contact-model/export-excel`, params }) }, - // 获得设备属性 + // 获得设备点位 getDeviceAttribute: async (id: number) => { return await request.get({ url: `/iot/device-contact-model/get?id=` + id }) } diff --git a/src/locales/en.ts b/src/locales/en.ts index 5bbc6658..eaa079f7 100644 --- a/src/locales/en.ts +++ b/src/locales/en.ts @@ -4935,6 +4935,7 @@ export default { create: 'Create', batchDelete: 'Batch Delete', export: 'Export', + import: 'Import', placeholderCode: 'Please enter type code', placeholderName: 'Please enter type name', @@ -5059,7 +5060,7 @@ export default { create: 'Create', batchDelete: 'Batch Delete', export: 'Export', - + import: 'Import', placeholderDeviceCode: 'Please enter device code', placeholderDeviceName: 'Please enter device name', placeholderModel: 'Please select device model', @@ -5089,7 +5090,7 @@ export default { dataUnit: 'Unit', ratio: 'Ratio', remark: 'Remark', - deviceAttributeTabLabel: 'Device Attributes', + deviceAttributeTabLabel: 'Device Point', deviceRuleTabLabel: 'Point Rules', currentDeviceLabel: 'Current Device: ', @@ -5136,7 +5137,17 @@ export default { messageDeviceInfoMissingForRules: 'Device information is missing, unable to load point rules', gridView: 'gridView', - sudoku: 'sudoku' + sudoku: 'sudoku', + importDragText: 'Drag file here, or', + importClickText: 'click to upload', + importUpdateSupport: 'Update existing user data if present', + importFormatLimit: 'Only xls, xlsx format files are allowed.', + importDownloadTemplate: 'Download template', + importFileRequired: 'Please upload file', + importSuccessTip: + 'Upload success: {createCount}; Update success: {updateCount}; Update failed: {failureCount};', + importFailed: 'Upload failed, please upload again!', + importFileLimit: 'Only one file can be uploaded!' }, RunReport: { moduleName: 'Device Operation Report', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index c6dfa782..75165755 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -4912,7 +4912,7 @@ export default { create: '新增', batchDelete: '批量删除', export: '导出', - + import: '导入', placeholderDeviceCode: '请输入设备编号', placeholderDeviceName: '请输入设备名称', placeholderModel: '请选择设备模型', @@ -4942,7 +4942,7 @@ export default { dataUnit: '单位', ratio: '倍率', remark: '备注', - deviceAttributeTabLabel: '设备属性', + deviceAttributeTabLabel: '设备点位', deviceRuleTabLabel: '点位规则', currentDeviceLabel: '当前设备:', @@ -4989,7 +4989,17 @@ export default { messageDeviceInfoMissingForRules: '设备信息缺失,无法加载点位规则', gridView: '表格视图', - sudoku: '九宫格' + sudoku: '九宫格', + importDragText: '将文件拖到此处,或', + importClickText: '点击上传', + importUpdateSupport: '是否更新已经存在的用户数据', + importFormatLimit: '仅允许导入 xls、xlsx 格式文件。', + importDownloadTemplate: '下载模板', + importFileRequired: '请上传文件', + importSuccessTip: + '上传成功数量:{createCount};更新成功数量:{updateCount};更新失败数量:{failureCount};', + importFailed: '上传失败,请您重新上传!', + importFileLimit: '最多只能上传一个文件!' }, RunReport: { moduleName: '设备运行报表', diff --git a/src/views/erp/product/unit/ProductUnitImportForm.vue b/src/views/erp/product/unit/ProductUnitImportForm.vue index 55d3e426..f6c97a59 100644 --- a/src/views/erp/product/unit/ProductUnitImportForm.vue +++ b/src/views/erp/product/unit/ProductUnitImportForm.vue @@ -138,7 +138,7 @@ const handleExceed = (): void => { /** 下载模板操作 */ const importTemplate = async () => { - const res = await ProductUnitApi.importUserTemplate() + const res = await ProductUnitApi.importProductUnitTemplate() download.excel(res, '单位导入模版.xls') } diff --git a/src/views/iot/device/components/DeviceAttributeImportForm.vue b/src/views/iot/device/components/DeviceAttributeImportForm.vue new file mode 100644 index 00000000..7c7cd1d0 --- /dev/null +++ b/src/views/iot/device/components/DeviceAttributeImportForm.vue @@ -0,0 +1,151 @@ + + + + + + {{ t('DataCollection.Device.importDragText') }}{{ t('DataCollection.Device.importClickText') }} + + + + + {{ t('DataCollection.Device.importFormatLimit') }} + + {{ t('DataCollection.Device.importDownloadTemplate') }} + + + + + + {{ t('common.ok') }} + {{ t('common.cancel') }} + + + + diff --git a/src/views/iot/device/components/DeviceAttributeList.vue b/src/views/iot/device/components/DeviceAttributeList.vue index 54bbab93..91550390 100644 --- a/src/views/iot/device/components/DeviceAttributeList.vue +++ b/src/views/iot/device/components/DeviceAttributeList.vue @@ -51,6 +51,14 @@ > {{ t('DataCollection.Device.create') }} + + {{ t('DataCollection.Device.import') }} + + + +