修改导出数据结果

This commit is contained in:
limengnan 2026-04-09 15:57:02 +08:00
parent 3d6d4d7d7d
commit d0e5969a71
3 changed files with 61 additions and 13 deletions

View File

@ -66,3 +66,19 @@ export function getByScenario(queryParams:any){
params: queryParams params: queryParams
}); });
} }
// 导出全部结果
export function exportAllExports(scenarioId:any,deviceId:any){
let url = '/scenario-results/export/by-scenario?scenarioId='+scenarioId
if(deviceId != null){
url = '/scenario-results/export/by-scenario?scenarioId='+scenarioId + '&deviceId='+deviceId
}
return request({
url: url ,
method: 'get',
responseType: 'arraybuffer'
});
}

View File

@ -8,7 +8,7 @@ export default {
import { onMounted, ref, nextTick } from "vue"; import { onMounted, ref, nextTick } from "vue";
import { ElForm, ElMessage, ElMessageBox, selectEmits } from "element-plus"; import { ElForm, ElMessage, ElMessageBox, selectEmits } from "element-plus";
import Page from '@/components/Pagination/page.vue' import Page from '@/components/Pagination/page.vue'
import { getByScenario } from "@/api/business/scenario"; import { getByScenario,exportAllExports } from "@/api/business/scenario";
const apiUrl = import.meta.env.VITE_APP_BASE_API; // const apiUrl = import.meta.env.VITE_APP_BASE_API; //
const emit = defineEmits([ 'closeEditdevice']); const emit = defineEmits([ 'closeEditdevice']);
@ -72,15 +72,30 @@ onMounted(() => {
getScenarioResults() getScenarioResults()
}); });
function downloadFile(obj :any, name :any, suffix :any) {
const url = window.URL.createObjectURL(new Blob([obj]))
const link = document.createElement('a')
link.style.display = 'none'
link.href = url
const fileName = name.trim() + '.' + suffix
link.setAttribute('download', fileName)
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
}
function exportExportsClick(){
exportAllExports(props.scenarioId,props.deviceId).then((response:any) => {
debugger
downloadFile(response, '结果数据' , 'xlsx')
});
}
</script> </script>
<template> <template>
<div class="editdevice-box"> <div class="editdevice-box">
<div style="margin-bottom: 10px;display: flex;justify-content: flex-end;"> <div style="margin-bottom: 10px;display: flex;justify-content: flex-end;">
<a :href="apiUrl + '/scenario-results/export/by-scenario?scenarioId='+props.scenarioId+'&deviceId='+props.deviceId" target="_blank" rel="noopener noreferrer"> <el-button type="primary" @click="exportExportsClick">导出</el-button>
<el-button type="primary">导出</el-button>
</a>
</div> </div>
<el-table :data="scenarioResultData" style="width: 100%; height: calc(100vh - 315px);margin-bottom: 10px;" border <el-table :data="scenarioResultData" style="width: 100%; height: calc(100vh - 315px);margin-bottom: 10px;" border

View File

@ -7,7 +7,7 @@ export default {
<script setup lang="ts"> <script setup lang="ts">
import { onMounted, ref, nextTick } from "vue"; import { onMounted, ref, nextTick } from "vue";
import { ElForm, ElMessage, ElMessageBox } from "element-plus"; import { ElForm, ElMessage, ElMessageBox } from "element-plus";
import { searchScenariosLsit,addScenarios,updateScenarios,deleteScenarios,deleteBatchScenarios} from "@/api/business/scenario"; import { searchScenariosLsit,addScenarios,updateScenarios,deleteScenarios,deleteBatchScenarios,exportAllExports} from "@/api/business/scenario";
import { getActiveAlgorithms } from "@/api/business/scenario"; import { getActiveAlgorithms } from "@/api/business/scenario";
import ConditionModel from '@/views/component/scenario/condition.vue' import ConditionModel from '@/views/component/scenario/condition.vue'
import { simRun,simulationRun } from "@/api/business/project"; import { simRun,simulationRun } from "@/api/business/project";
@ -424,6 +424,24 @@ function initDeviceData(){
function changeSonAlgorithmType(){ function changeSonAlgorithmType(){
info.value.algorithmType = "" info.value.algorithmType = ""
} }
function downloadFile(obj :any, name :any, suffix :any) {
const url = window.URL.createObjectURL(new Blob([obj]))
const link = document.createElement('a')
link.style.display = 'none'
link.href = url
const fileName = name.trim() + '.' + suffix
link.setAttribute('download', fileName)
document.body.appendChild(link)
link.click()
document.body.removeChild(link)
}
function exportAllExportsClick(){
exportAllExports(scenarioId.value,null).then((response:any) => {
downloadFile(response, '全部设备结果数据' , 'xlsx')
});
}
</script> </script>
<template> <template>
@ -542,29 +560,28 @@ function initDeviceData(){
</div> </div>
</el-dialog> </el-dialog>
<el-dialog v-model="isShowCondition" :close-on-click-modal="false" <el-dialog v-model="isShowCondition" :close-on-click-modal="false"
:modal="false" draggable :before-close="handleScenarioClose" :title="title" :modal="false" draggable :before-close="handleScenarioClose" :title="title"
append-to-body width="1000px"> append-to-body width="1000px">
<ConditionModel v-if="isShowCondition" ref="conditionModelRef" :projectInfo="projectInfo" :scenarioId="scenarioId" <ConditionModel v-if="isShowCondition" ref="conditionModelRef" :projectInfo="projectInfo" :scenarioId="scenarioId"
:isEdit="isEdit" :isEdit="isEdit"
/> />
<div style="text-align: center;"> <div style="text-align: center;">
<el-button @click="handleScenarioClose">取消</el-button> <el-button @click="handleScenarioClose">取消</el-button>
<el-button type="primary" @click="submitConditionClick" v-if="title == '初始条件设置'">确定</el-button> <el-button type="primary" @click="submitConditionClick" v-if="title == '初始条件设置'">确定</el-button>
</div> </div>
</el-dialog> </el-dialog>
<el-dialog v-model="isShowResult" :close-on-click-modal="false" <el-dialog v-model="isShowResult" :close-on-click-modal="false"
:modal="false" draggable :before-close="handleResultClose" :title="title" :modal="false" draggable :before-close="handleResultClose" :title="title"
append-to-body width="calc(100% - 100px)" class="resultmodel-dialog-box"> append-to-body width="calc(100% - 100px)" class="resultmodel-dialog-box">
<div style="position: relative; display: flex; margin-bottom: 0px; border-bottom: 1px solid #e5e5e5;padding-bottom: 5px;padding-top: 10px;padding-left: 10px;"> <div style="position: relative; display: flex; margin-bottom: 0px; border-bottom: 1px solid #e5e5e5;padding-bottom: 5px;padding-top: 10px;padding-left: 10px;">
<div @click="changeShowResult(0)" class="adddevice_navigation_left" :class="{'adddevice_navigation_activeleft':isEchartsModel == 0}">图形化</div> <div @click="changeShowResult(0)" class="adddevice_navigation_left" :class="{'adddevice_navigation_activeleft':isEchartsModel == 0}">图形化</div>
<div @click="changeShowResult(1)" class="adddevice_navigation_right" :class="{'adddevice_navigation_activeright':isEchartsModel == 1}">列表</div> <div @click="changeShowResult(1)" class="adddevice_navigation_right" :class="{'adddevice_navigation_activeright':isEchartsModel == 1}">列表</div>
<div @click="changeShowResult(2)" class="adddevice_navigation_right" :class="{'adddevice_navigation_activeright':isEchartsModel == 2}">图形</div> <div @click="changeShowResult(2)" class="adddevice_navigation_right" :class="{'adddevice_navigation_activeright':isEchartsModel == 2}">图形</div>
<a :href="apiUrl + '/scenario-results/export/by-scenario?scenarioId='+scenarioId" target="_blank" rel="noopener noreferrer"> <el-button v-if="isEchartsModel == 1" style="position: absolute;right: 50px;top: 5px;" type="primary" @click="exportAllExportsClick">导出全部</el-button>
<el-button v-if="isEchartsModel == 1" style="position: absolute;right: 50px;top: 5px;" type="primary">导出全部</el-button>
</a>
</div> </div>
<Viewx6 v-if="isShowResult && isEchartsModel == 0 " :projectId="projectInfo.projectId" <Viewx6 v-if="isShowResult && isEchartsModel == 0 " :projectId="projectInfo.projectId"