diff --git a/hx-ai-intelligent/src/api/carbonEmissionFactorLibrary.ts b/hx-ai-intelligent/src/api/carbonEmissionFactorLibrary.ts index 349d256..2fbfe1b 100644 --- a/hx-ai-intelligent/src/api/carbonEmissionFactorLibrary.ts +++ b/hx-ai-intelligent/src/api/carbonEmissionFactorLibrary.ts @@ -80,6 +80,7 @@ export enum uploadPic { select = '/carbon-smart/api/common/file/select', uploadfile = '/carbon-smart/api/common/file/uploadfile', download = '/carbon-smart/api/common/file/download', + downloadZip = '/carbon-smart/api/common/file/downloadZip', } // 碳规划 export enum carbonPlanning { diff --git a/hx-ai-intelligent/src/view/carbonEmissionManage/carbonAssets/carbonAssetsDetail/index.vue b/hx-ai-intelligent/src/view/carbonEmissionManage/carbonAssets/carbonAssetsDetail/index.vue index 4a3fef0..c99a2f6 100644 --- a/hx-ai-intelligent/src/view/carbonEmissionManage/carbonAssets/carbonAssetsDetail/index.vue +++ b/hx-ai-intelligent/src/view/carbonEmissionManage/carbonAssets/carbonAssetsDetail/index.vue @@ -295,6 +295,7 @@ uid: item.id.toString(), // 使用文件的id作为唯一标识 name: item.fileName, // 文件名 status: 'done', // 设置默认状态为已完成 + type: 'done', url: item.filePath, // 文件的URL,这里假设用示例的URL格式 })); }); @@ -415,7 +416,9 @@ message.error(`${info.file.name} 文件上传失败`); } }; + const delIds = ref([]); const handleFileRemove = (file) => { + delIds.value.push(file.uid); const newFileList = []; fileList.value.forEach((item) => { if (item.uid !== file.uid) { @@ -440,14 +443,20 @@ // uploadQuery.value.bizId = res.data.id; const formData = ref(new FormData()); fileList.value.forEach((file) => { - formData.value.append('files', file.originFileObj); + if (file.type !== 'done') { + formData.value.append('files', file.originFileObj); + } }); formData.value.append('bizType', 1); formData.value.append('bizId', res.data.id); + delIds.value.forEach((item) => { + formData.value.append('deleteList', item); + }); fetch(uploadPic.uploadfiles, formData.value) .then((res) => { message.success('操作成功!'); visible.value = false; + delIds.value = []; getDetailList(); }) .catch((error) => { @@ -456,6 +465,7 @@ } else { message.success('操作成功!'); visible.value = false; + delIds.value = []; getDetailList(); } }); @@ -476,6 +486,7 @@ // 关闭新增抽屉 const onClose = () => { visible.value = false; + delIds.value = []; formState.value = {}; fileList.value = []; formRef.value.resetFields(); diff --git a/hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionFactorLibrary/index.vue b/hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionFactorLibrary/index.vue index a571d30..9be85b4 100644 --- a/hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionFactorLibrary/index.vue +++ b/hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionFactorLibrary/index.vue @@ -641,6 +641,9 @@ name: 'carbonEmissionFactorLibraryImport', extra: { api: carbonEmissionFactorLibrary.excel, // 导入接口名 + params: { + orgId, + }, title: '设备信息', // 弹窗title templateName: 'whiteListUser', // 所使用的文件名称 indexName: '设备id', // 匹配类型字段 @@ -1035,10 +1038,18 @@ onOk() { fetch(carbonEmissionFactorLibrary.delDictionary, formState.value).then((res) => { message.success('操作成功!'); + formState.value = { + grp: 'MEASUREMENT_UNIT', + grpDesc: '计量单位', + }; getUnitTree(); }); }, onCancel() { + formState.value = { + grp: 'MEASUREMENT_UNIT', + grpDesc: '计量单位', + }; console.log('Cancel'); }, }); diff --git a/hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/energyConsumption/index.vue b/hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/energyConsumption/index.vue index 368a56e..3b2bc53 100644 --- a/hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/energyConsumption/index.vue +++ b/hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/energyConsumption/index.vue @@ -274,7 +274,7 @@ :columns="downLoadColumns" :data-source="downLoadData" bordered - :rowKey="(record, index) => index" + rowKey="id" :rowSelection="{ selectedRowKeys: selectedRowKeysSet, onChange: onSelectionChangeSet, @@ -534,6 +534,7 @@ uid: item.id.toString(), // 使用文件的id作为唯一标识 name: item.fileName, // 文件名 status: 'done', // 设置默认状态为已完成 + type: 'done', url: item.filePath, // 文件的URL,这里假设用示例的URL格式 })); }); @@ -623,14 +624,20 @@ if (fileList.value.length !== 0) { const formData = ref(new FormData()); fileList.value.forEach((file) => { - formData.value.append('files', file.originFileObj); + if (file.type !== 'done') { + formData.value.append('files', file.originFileObj); + } }); formData.value.append('bizType', 3); formData.value.append('bizId', formState.value.id); + delIds.value.forEach((item) => { + formData.value.append('deleteList', item); + }); fetch(uploadPic.uploadfiles, formData.value) .then((res) => { message.success('操作成功!'); visible.value = false; + delIds.value = []; formState.value = { orgId: orgId.value, }; @@ -641,6 +648,7 @@ }); } else { visible.value = false; + delIds.value = []; formState.value = { orgId: orgId.value, }; @@ -652,6 +660,7 @@ fetch(energyConsumption.creat, formState.value).then((res) => { if (res.data === '新增数据已存在') { visible.value = false; + delIds.value = []; NsMessage.warning(res.data); } else { if (fileList.value.length !== 0) { @@ -665,6 +674,7 @@ .then((res) => { message.success('操作成功!'); visible.value = false; + delIds.value = []; formState.value = { orgId: orgId.value, }; @@ -675,6 +685,7 @@ }); } else { visible.value = false; + delIds.value = []; formState.value = { orgId: orgId.value, }; @@ -766,6 +777,7 @@ // 关闭新增抽屉 const onClose = () => { visible.value = false; + delIds.value = []; formState.value = { orgId: orgId.value, }; @@ -796,7 +808,9 @@ message.error(`${info.file.name} 文件上传失败`); } }; + const delIds = ref([]); const handleFileRemove = (file) => { + delIds.value.push(file.uid); const newFileList = []; fileList.value.forEach((item) => { if (item.uid !== file.uid) { @@ -840,12 +854,50 @@ const downLoad = (record) => { const deleteId = ref(new FormData()); deleteId.value.append('id', record.id); - fetch(uploadPic.download, deleteId.value).then((res) => { - console.log(res); + fetch(uploadPic.download, deleteId.value) + .then((res) => { + // 创建一个 URL 对象,指向图片数据的 blob + const url = window.URL.createObjectURL(new Blob([res.data])); + // 创建一个 标签,用于触发下载 + const link = document.createElement('a'); + link.href = url; + link.setAttribute('download', record.fileName); // 设置下载的文件名 + document.body.appendChild(link); + link.click(); + + // 清理 URL 对象 + window.URL.revokeObjectURL(url); + }) + .catch((error) => { + console.error('下载图片失败:', error); + }); + }; + const onSubmitDownLoad = () => { + const deleteIds = ref(new FormData()); + selectedRowKeysSet.value.forEach((item) => { + deleteIds.value.append('ids', item); }); + fetch(uploadPic.downloadZip, deleteIds.value) + .then((res) => { + // 创建一个 URL 对象,指向图片数据的 blob + const url = window.URL.createObjectURL(new Blob([res.data])); + // 创建一个 标签,用于触发下载 + const link = document.createElement('a'); + link.href = url; + debugger + link.setAttribute('download', ''); // 设置下载的文件名 + document.body.appendChild(link); + link.click(); + + // 清理 URL 对象 + window.URL.revokeObjectURL(url); + }) + .catch((error) => { + console.error('下载图片失败:', error); + }); }; - const onSubmitDownLoad = () => {}; const onCloseDownLoad = () => { + selectedRowKeysSet.value = [] downLoadVisible.value = false; }; diff --git a/hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/quickCalculation/index.vue b/hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/quickCalculation/index.vue index f49bd40..a39353a 100644 --- a/hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/quickCalculation/index.vue +++ b/hx-ai-intelligent/src/view/carbonEmissionManage/carbonEmissionStatistics/quickCalculation/index.vue @@ -102,7 +102,7 @@ - + @@ -281,7 +281,7 @@ type: 'primary', handle: () => { visible.value = true; - getNewTable(); + // getNewTable(); }, }, ], @@ -384,7 +384,7 @@ // 点击新增按钮 const addNewData = () => { visible.value = true; - getNewTable(); + // getNewTable(); }; // 获取新增页面的列表 const selectedRowKeys = ref([]); @@ -404,6 +404,11 @@ newTableData.value = res.data.records; }); }; + const selectData = ref(); + const keyChange = () => { + queryData.value.emissionSources = selectData.value; + getNewTable(); + }; // 点击编辑按钮 const editData = (record) => { selectedRowKeys.value = [record.factorId]; diff --git a/hx-ai-intelligent/src/view/carbonEmissionManage/carbonInventoryCheck/fillInPage/index.vue b/hx-ai-intelligent/src/view/carbonEmissionManage/carbonInventoryCheck/fillInPage/index.vue index 457306a..c85cfb3 100644 --- a/hx-ai-intelligent/src/view/carbonEmissionManage/carbonInventoryCheck/fillInPage/index.vue +++ b/hx-ai-intelligent/src/view/carbonEmissionManage/carbonInventoryCheck/fillInPage/index.vue @@ -291,6 +291,7 @@ @@ -848,7 +849,7 @@ const openVoucher = ref(false); const downLoadVoucher = () => { fetch(carbonInventoryCheck.voucherDownloadList, { bizType: 2 }).then((res) => { - voucherData.value = res.data + voucherData.value = res.data; }); openVoucher.value = true; }; @@ -898,6 +899,7 @@ uid: item.id.toString(), // 使用文件的id作为唯一标识 name: item.fileName, // 文件名 status: 'done', // 设置默认状态为已完成 + type: 'done', url: item.filePath, // 文件的URL,这里假设用示例的URL格式 })); }); @@ -909,6 +911,10 @@ total.value = res.data.total; }); }; + const searchKey = () => { + queryData.value.emissionSources = editFormState.value.emissionFactors; + getNewTable(); + }; // 数据来源选择框改变 const canEdit = ref(false); const automatic = ref(false); @@ -957,7 +963,9 @@ message.error(`${info.file.name} 文件上传失败`); } }; + const delIds = ref([]); const handleFileRemove = (file) => { + delIds.value.push(file.uid); const newFileList = []; fileList.value.forEach((item) => { if (item.uid !== file.uid) { @@ -985,14 +993,20 @@ if (fileList.value.length !== 0) { const formData = ref(new FormData()); fileList.value.forEach((file) => { - formData.value.append('files', file.originFileObj); + if (file.type !== 'done') { + formData.value.append('files', file.originFileObj); + } }); formData.value.append('bizType', 2); formData.value.append('bizId', editFormState.value.id); + delIds.value.forEach((item) => { + formData.value.append('deleteList', item); + }); fetch(uploadPic.uploadfiles, formData.value) .then((res) => { message.success('操作成功!'); editData.value = false; + delIds.value = []; getPFYTableList(getTableId.value); }) .catch((error) => { @@ -1000,6 +1014,7 @@ }); } else { editData.value = false; + delIds.value = []; getPFYTableList(getTableId.value); } }); @@ -1010,6 +1025,7 @@ }; const onCloseEditData = () => { editData.value = false; + delIds.value = []; editFormState.value = { orgId: orgId.value, }; diff --git a/hx-ai-intelligent/src/view/carbonEmissionManage/carbonPlanning/category/index.vue b/hx-ai-intelligent/src/view/carbonEmissionManage/carbonPlanning/category/index.vue index efa4496..6d2d2d1 100644 --- a/hx-ai-intelligent/src/view/carbonEmissionManage/carbonPlanning/category/index.vue +++ b/hx-ai-intelligent/src/view/carbonEmissionManage/carbonPlanning/category/index.vue @@ -48,7 +48,12 @@
- +
@@ -159,7 +164,7 @@ }; const getMonthPillarData = () => { fetch(carbonPlanning.electricityUsageBackThen, getPillarQuery.value).then((res) => { - xAxisData.value = res.data.year; + xAxisData.value = res.data.yearMonth; referenceValue.value = res.data.referenceValue; budget.value = res.data.budget; actualUsage.value = res.data.actualUsage; @@ -286,6 +291,7 @@ type: props.tabId, year: selectYearValue.value.format('YYYY'), yearAndMonth: 'year', + yearMonth: selectMonthValue.value.format('YYYY-DD'), }); const ballValue = ref(); const getBallData = () => { @@ -447,7 +453,7 @@ fetch(carbonPlanning.searchListByYear, yearQueryParams.value).then((res) => { data.value = res.data; res.data.forEach((item) => { - treeCheckedKeys.value.push((item.itemizeId).toString()); + treeCheckedKeys.value.push(item.itemizeId.toString()); }); }); }; @@ -460,7 +466,9 @@ }); const changeMonth = () => { monthQueryParams.value.yearMonth = selectMonthValue.value; + getBallQuery.value.yearMonth = selectMonthValue.value; getMonthData(); + getBallData(); }; const getMonthData = () => { fetch(carbonPlanning.searchListByMonth, monthQueryParams.value).then((res) => { diff --git a/lib/util/xlsx-util.ts b/lib/util/xlsx-util.ts index 83a459b..1c2086b 100644 --- a/lib/util/xlsx-util.ts +++ b/lib/util/xlsx-util.ts @@ -1,10 +1,9 @@ - - import { utils, write } from 'xlsx'; import { dateUtil } from '/nerv-lib/util/date-util'; import { NsMessage } from '/nerv-lib/component/message'; import axios from 'axios'; import { createVNode, h, render as vueRender } from 'vue'; +import { Cookies } from '/nerv-lib/util/cookie'; import { NsXlsxImport } from '/nerv-lib/component/xlsx'; import { NsModal } from '/nerv-lib/component/modal'; @@ -126,7 +125,9 @@ export const importFile = ( }); formData.append('file', event); axios - .post(api, formData) + .post(api, formData, { + headers: { token: Cookies.get(`${import.meta.env.VITE_PUBLIC_PATH}-nervsid`) }, + }) .then((res) => { if (res) { NsMessage.success('导入成功', 1, () => {