diff --git a/src/api/cs-harmonic-boot/datatrend.ts b/src/api/cs-harmonic-boot/datatrend.ts index 8b382eb..ff3da07 100644 --- a/src/api/cs-harmonic-boot/datatrend.ts +++ b/src/api/cs-harmonic-boot/datatrend.ts @@ -1,5 +1,5 @@ import createAxios from '@/utils/request' - +import { genFileId, ElMessage, ElNotification } from 'element-plus' // 查询设备数据趋势 export function getDeviceDataTrend(data: any) { return createAxios({ @@ -9,8 +9,6 @@ export function getDeviceDataTrend(data: any) { }) } - - // 波形下载 export function getFileZip(params: any) { return createAxios({ @@ -27,5 +25,35 @@ export function exportModel(data: any) { method: 'post', data: data, responseType: 'blob' + }).then(async res => { + let load: any = await readJsonBlob(res) + if (load.code) { + if (load.data.code == 'A0011') { + ElMessage.warning('下载失败!') + } else { + ElMessage.warning(load.data.message) + } + } else { + return res + } }) } +async function readJsonBlob(blob) { + try { + // 1. Blob.text() 读取二进制 → 直接转为 字符串(自动处理编码) + const jsonStr = await blob.text() + // 2. JSON.parse 解析字符串 → 得到可用的 JS 对象/数组 + const jsonData = JSON.parse(jsonStr) + // 3. 拿到数据,后续随便用 + return { + code: true, + data: jsonData + } + } catch (err) { + return { + code: false, + data: {} + } + // console.error('解析Blob的JSON数据失败:', err) + } +} diff --git a/src/api/harmonic-boot/cockpit/cockpit.ts b/src/api/harmonic-boot/cockpit/cockpit.ts index 47c8b26..05b4497 100644 --- a/src/api/harmonic-boot/cockpit/cockpit.ts +++ b/src/api/harmonic-boot/cockpit/cockpit.ts @@ -1,5 +1,5 @@ import request from '@/utils/request' - +import { genFileId, ElMessage, ElNotification } from 'element-plus' // 主要监测点列表查询>>分页 export function mainLineList(data: any) { return request({ @@ -115,7 +115,6 @@ export function limitProbabilityData(data: any) { }) } - // 电网侧指标越限统计列表 export function gridSideLimitStatisticsList(data: any) { return request({ @@ -152,7 +151,6 @@ export function getListByIds(data: any) { }) } - // 上传治理报告 export function uploadReport(data: any) { return request({ @@ -260,14 +258,42 @@ export function getSimpleLine() { }) } - -export function getLineExport(data:any) { +export function getLineExport(data: any) { return request({ url: '/cs-harmonic-boot/eventReport/getLineExport', method: 'post', data: data, responseType: 'blob' + }).then(async res => { + let load: any = await readJsonBlob(res) + if (load.code) { + if (load.data.code == 'A0011') { + ElMessage.warning('下载失败!') + } else { + ElMessage.warning(load.data.message) + } + } else { + return res + } }) } - +async function readJsonBlob(blob) { + try { + // 1. Blob.text() 读取二进制 → 直接转为 字符串(自动处理编码) + const jsonStr = await blob.text() + // 2. JSON.parse 解析字符串 → 得到可用的 JS 对象/数组 + const jsonData = JSON.parse(jsonStr) + // 3. 拿到数据,后续随便用 + return { + code: true, + data: jsonData + } + } catch (err) { + return { + code: false, + data: {} + } + // console.error('解析Blob的JSON数据失败:', err) + } +} diff --git a/src/assets/img/jss.png b/src/assets/img/jss.png index b3512ea..2e7a8f7 100644 Binary files a/src/assets/img/jss.png and b/src/assets/img/jss.png differ diff --git a/src/components/cockpit/indicatorCrossingTime/index.vue b/src/components/cockpit/indicatorCrossingTime/index.vue index 56b74cd..a089aa6 100644 --- a/src/components/cockpit/indicatorCrossingTime/index.vue +++ b/src/components/cockpit/indicatorCrossingTime/index.vue @@ -26,12 +26,21 @@
+
@@ -144,6 +146,7 @@ import { getLineExport } from '@/api/harmonic-boot/cockpit/cockpit' defineOptions({ name: 'TransientReport/monitoringpointReport' }) +const loading = ref(false) const height = mainHeight(20) const size = ref(0) const dictData = useDictData() @@ -210,7 +213,7 @@ const exportEvent = () => { return ElMessage.warning('请选择监测点进行报告生成!') } let a = '' - + loading.value = true // formd.value.lineId = monitoringPoint.state.lineId // formd.value.lineName = monitoringPoint.state.lineName.split('>').at(-1) formd.value.lineId = dotList.value.id @@ -219,26 +222,37 @@ const exportEvent = () => { formd.value.searchEndTime = TableHeaderRef.value.datePickerRef.timeValue[1] formd.value.flag = TableHeaderRef.value.datePickerRef.interval ElMessage('生成报告中,请稍等!') - const now = new Date() + + const now = new Date() const year = now.getFullYear() // 4位年份 const month = now.getMonth() + 1 // 月份0-11,需+1 const day = now.getDate() // 日期1-31 // 格式化YYYY - MM - DD(补零) const formattedDate = `${year}${String(month).padStart(2, '0')}${String(day).padStart(2, '0')}` - getLineExport(formd.value).then((res: any) => { - let blob = new Blob([res], { - type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=UTF-8' + getLineExport(formd.value) + .then(async (res: any) => { + if (res == undefined) { + loading.value = false + return + } + + let blob = new Blob([res], { + type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=UTF-8' + }) + // createObjectURL(blob); //创建下载的链接 + const url = window.URL.createObjectURL(blob) + const link = document.createElement('a') // 创建a标签 + link.href = url + link.download = dotList.value.name + formattedDate // 设置下载的文件名 + document.body.appendChild(link) + link.click() //执行下载 + document.body.removeChild(link) + loading.value = false + }) + .catch((err: any) => { + loading.value = false }) - // createObjectURL(blob); //创建下载的链接 - const url = window.URL.createObjectURL(blob) - const link = document.createElement('a') // 创建a标签 - link.href = url - link.download = dotList.value.name+formattedDate // 设置下载的文件名 - document.body.appendChild(link) - link.click() //执行下载 - document.body.removeChild(link) - }) }