Merge branch 'wxk-main'

This commit is contained in:
王兴凯 2026-09-02 10:44:49 +08:00
commit 80af0e2bfa
33 changed files with 200 additions and 133 deletions

View File

@ -11,7 +11,7 @@ VITE_APP_BASE_URL = 'http://localhost:8093'
# 测试环境
# VITE_APP_BASE_URL = 'http://172.16.21.142:8093'
# 汤伟
VITE_APP_BASE_URL = 'http://10.84.111.235:8093'
VITE_APP_BASE_URL = 'http://10.84.216.252:8093'
# 李林
# VITE_APP_BASE_URL = 'http://10.84.111.25:8093'

View File

@ -286,6 +286,14 @@ export function getFishReleaseMonitorSectionList(data) {
data
});
}
//过鱼设施名称新接口
export function overviewvmsstbprptGetKendoList(data) {
return request({
url: '/overview/vmsstbprpt/GetKendoList',
method: 'post',
data
});
}
// 过鱼监测数据
export function getFishReleaseMonitorList(data) {
return request({

View File

@ -81,3 +81,8 @@ watch(
}
);
</script>
<style scoped lang="scss">
:deep(.ant-descriptions-item-label){
min-width: 140px;
}
</style>

View File

@ -147,6 +147,11 @@ const columns = computed<any[]>(() => [
visible: true,
width: 120,
ellipsis: true,
customRender: ({ text, record }: any) => {
// recordId
if (text && text !== '-' && text !== 'null' && text !== 'undefined') return text;
return record.recordId || '-';
},
},
{
key: "operator",

View File

@ -178,6 +178,7 @@
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择第一台机组投产时间"
style="width: 100%"
:disabled-date="disabledPiodtDate"
/>
</a-form-item>
</a-col>
@ -189,6 +190,7 @@
value-format="YYYY-MM-DD HH:mm:ss"
placeholder="请选择全部机组投产时间"
style="width: 100%"
:disabled-date="disabledAiodtDate"
/>
</a-form-item>
</a-col>
@ -900,6 +902,7 @@
<script setup lang="ts">
import { ref, computed, watch } from 'vue';
import dayjs from 'dayjs';
import { message } from 'ant-design-vue';
import { addPowerInfo, updatePowerInfo } from '@/api/DataQueryMenuModule';
import { BasicColumns } from '@/components/MapModal/column.config';
@ -949,6 +952,18 @@ const formRules = computed(() => ({
reachcd: [{ required: true, message: '请选择所在河段', trigger: 'change' }]
}));
// disabled-date
const disabledPiodtDate = (current: any) => {
const aiodt = formData.value?.aiodt;
if (!aiodt) return false;
return current && current.endOf('day') > dayjs(aiodt);
};
const disabledAiodtDate = (current: any) => {
const piodt = formData.value?.piodt;
if (!piodt) return false;
return current && current.endOf('day') < dayjs(piodt);
};
//
const confirmModalVisible = ref(false);

View File

@ -176,7 +176,7 @@ const columnMetaMap: Record<string, any> = {
addvcdName: { width: 150, sort: true, ellipsis: true },
stlc: { width: 200, sort: true, ellipsis: true },
baseName: { width: 120, ellipsis: true },
jcdt: { width: 180, sort: true, ellipsis: true, customRender: dateRender },
jcdt: { width: 120, sort: true, ellipsis: true, customRender: dateRender },
piodt: { width: 160, sort: true, ellipsis: true, customRender: dateRender },
aiodt: { width: 150, sort: true, ellipsis: true, customRender: dateRender },
bldsttCcodeName: { width: 100, sort: true, ellipsis: true },

View File

@ -60,7 +60,7 @@
</a-col>
<a-col :span="12">
<a-form-item label="纬度(°)" name="lttd">
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" style="width: 100%" />
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" :min="-90" :max="90" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12">

View File

@ -64,12 +64,12 @@
</a-col>
<a-col :span="12">
<a-form-item label="经度(°)" name="lgtd">
<a-input-number v-model:value="formData.lgtd" placeholder="请输入" :precision="6" style="width: 100%" />
<a-input-number v-model:value="formData.lgtd" placeholder="请输入" :precision="6" :min="-180" :max="180" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="纬度(°)" name="lttd">
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" style="width: 100%" />
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" :min="-90" :max="90" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12">

View File

@ -64,12 +64,12 @@
</a-col>
<a-col :span="12">
<a-form-item label="经度(°)" name="lgtd">
<a-input-number v-model:value="formData.lgtd" placeholder="请输入" :precision="6" style="width: 100%" />
<a-input-number v-model:value="formData.lgtd" placeholder="请输入" :precision="6" :min="-180" :max="180" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="纬度(°)" name="lttd">
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" style="width: 100%" />
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" :min="-90" :max="90" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12">

View File

@ -108,6 +108,8 @@
v-model:value="formData.lgtd"
placeholder="请输入"
:precision="6"
:min="-180"
:max="180"
style="width: 100%"
/>
</a-form-item>
@ -118,6 +120,8 @@
v-model:value="formData.lttd"
placeholder="请输入"
:precision="6"
:min="-90"
:max="90"
style="width: 100%"
/>
</a-form-item>
@ -596,7 +600,7 @@ const loadDropdownData = () => {
field: 'sttpCode',
operator: 'in',
dataType: 'string',
value: ['FP', 'FP_1', 'FP_2', 'FP_3', 'FP_4', 'FP_5']
value: ['FP_1', 'FP_2', 'FP_3', 'FP_4', 'FP_5']
}
]
}

View File

@ -28,7 +28,7 @@ const searchList: any = computed(() => [
const getBaseList = async () => {
const res = await sttpGetKendoList({
filter: { logic: 'and', filters: [{ field: 'sttpCode', operator: 'in', dataType: 'string', value: ['FP', 'FP_1', 'FP_2', 'FP_3', 'FP_4', 'FP_5'] }] }
filter: { logic: 'and', filters: [{ field: 'sttpCode', operator: 'in', dataType: 'string', value: ['FP_1', 'FP_2', 'FP_3', 'FP_4', 'FP_5'] }] }
});
sttpOption.value = res.data.data.map(item => ({ label: item.sttpName, value: item.sttpCode }));
};

View File

@ -64,12 +64,12 @@
</a-col>
<a-col :span="12">
<a-form-item label="经度(°)" name="lgtd">
<a-input-number v-model:value="formData.lgtd" placeholder="请输入" :precision="6" style="width: 100%" />
<a-input-number v-model:value="formData.lgtd" placeholder="请输入" :precision="6" :min="-180" :max="180" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="纬度(°)" name="lttd">
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" style="width: 100%" />
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" :min="-90" :max="90" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12">

View File

@ -59,6 +59,8 @@
v-model:value="formData.lgtd"
placeholder="请输入"
:precision="6"
:min="-180"
:max="180"
style="width: 100%"
/>
</a-form-item>
@ -69,6 +71,8 @@
v-model:value="formData.lttd"
placeholder="请输入"
:precision="6"
:min="-90"
:max="90"
style="width: 100%"
/>
</a-form-item>

View File

@ -40,12 +40,12 @@
</a-col>
<a-col :span="8">
<a-form-item label="经度(°)" name="lgtd">
<a-input-number v-model:value="formData.lgtd" placeholder="请输入" :precision="6" style="width: 100%" />
<a-input-number v-model:value="formData.lgtd" placeholder="请输入" :precision="6" :min="-180" :max="180" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="纬度(°)" name="lttd">
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" style="width: 100%" />
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" :min="-90" :max="90" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="8">

View File

@ -43,11 +43,9 @@ const bldsttMap: Record<number, string> = { 0: '规划', 1: '在建', 2: '已建
const columns = ref<any[]>([
{ key: 'stnm', title: '设施名称', dataIndex: 'stnm', visible: true, width: 160, fixed: 'left',ellipsis: true },
{ key: 'stcd', title: '设施编码', dataIndex: 'stcd', visible: true, width: 180, ellipsis: true },
{ key: 'sttpName', title: '设施类型', dataIndex: 'sttpName', visible: true, width: 100, ellipsis: true },
{ key: 'sttpName', title: '设施类型', dataIndex: 'sttpName', visible: true, width:120, ellipsis: true },
{ key: 'baseName', title: '水电基地', dataIndex: 'baseName', visible: true, width: 120, ellipsis: true },
{ key: 'ennm', title: '所属电站', dataIndex: 'ennm', visible: true, width: 100, ellipsis: true },
{ key: 'bldsttCode', title: '建设状态', dataIndex: 'bldsttCode', visible: true, width: 80, customRender: ({ text }) => (text !== null && text !== undefined ? (bldsttMap[text] || text) : '-') },
{ key: 'minFlow', title: '最小下泄流量(m³/s)', dataIndex: 'minFlow', visible: true, width: 150 },
{ key: 'swdt', title: '开工日期', dataIndex: 'swdt', visible: true, width: 110, customRender: ({ text }) => { if (!text || text === '-') return '-'; const date = dayjs(text); return date.isValid() ? date.format('YYYY-MM-DD') : '-'; } },

View File

@ -69,7 +69,7 @@
</a-col>
<a-col :span="12">
<a-form-item label="纬度(°)" name="lttd">
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" style="width: 100%" />
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" :min="-90" :max="90" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12">

View File

@ -64,12 +64,12 @@
</a-col>
<a-col :span="12">
<a-form-item label="经度(°)" name="lgtd">
<a-input-number v-model:value="formData.lgtd" placeholder="请输入" :precision="6" style="width: 100%" />
<a-input-number v-model:value="formData.lgtd" placeholder="请输入" :precision="6" :min="-180" :max="180" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="纬度(°)" name="lttd">
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" style="width: 100%" />
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" :min="-90" :max="90" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12">

View File

@ -69,6 +69,8 @@
v-model:value="formData.lgtd"
placeholder="请输入"
:precision="6"
:min="-180"
:max="180"
style="width: 100%"
/>
</a-form-item>
@ -79,6 +81,8 @@
v-model:value="formData.lttd"
placeholder="请输入"
:precision="6"
:min="-90"
:max="90"
style="width: 100%"
/>
</a-form-item>

View File

@ -64,12 +64,12 @@
</a-col>
<a-col :span="12">
<a-form-item label="经度(°)" name="lgtd">
<a-input-number v-model:value="formData.lgtd" placeholder="请输入" :precision="6" style="width: 100%" />
<a-input-number v-model:value="formData.lgtd" placeholder="请输入" :precision="6" :min="-180" :max="180" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="纬度(°)" name="lttd">
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" style="width: 100%" />
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" :min="-90" :max="90" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12">

View File

@ -69,7 +69,7 @@
</a-col>
<a-col :span="12">
<a-form-item label="纬度(°)" name="lttd">
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" style="width: 100%" />
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" :min="-90" :max="90" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12">

View File

@ -26,12 +26,12 @@
</a-col>
<a-col :span="8">
<a-form-item label="经度(°)" name="lgtd">
<a-input-number v-model:value="formData.lgtd" placeholder="请输入" :precision="6" style="width: 100%" />
<a-input-number v-model:value="formData.lgtd" placeholder="请输入" :precision="6" :min="-180" :max="180" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="8">
<a-form-item label="纬度(°)" name="lttd">
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" style="width: 100%" />
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" :min="-90" :max="90" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="8">

View File

@ -26,12 +26,12 @@
</a-col>
<a-col :span="12">
<a-form-item label="经度(°)" name="lgtd">
<a-input-number v-model:value="formData.lgtd" placeholder="请输入" :precision="6" style="width: 100%" />
<a-input-number v-model:value="formData.lgtd" placeholder="请输入" :precision="6" :min="-180" :max="180" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12">
<a-form-item label="纬度(°)" name="lttd">
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" style="width: 100%" />
<a-input-number v-model:value="formData.lttd" placeholder="请输入" :precision="6" :min="-90" :max="90" style="width: 100%" />
</a-form-item>
</a-col>
<a-col :span="12">

View File

@ -48,7 +48,7 @@ const columns = ref<any[]>([
{ key: 'swdt', title: '开工日期', dataIndex: 'swdt', visible: true, width: 110, customRender: ({ text }) => { if (!text || text === '-') return '-'; const date = dayjs(text); return date.isValid() ? date.format('YYYY-MM-DD') : '-'; } },
{ key: 'jcdt', title: '建成日期', dataIndex: 'jcdt', visible: true, width: 110, customRender: ({ text }) => { if (!text || text === '-') return '-'; const date = dayjs(text); return date.isValid() ? date.format('YYYY-MM-DD') : '-'; } },
{ key: 'bhfs', title: '保护方式', dataIndex: 'bhfs', visible: true, width: 200, ellipsis: true },
{ key: 'stlc', title: '站址', dataIndex: 'stlc', visible: true, width: 200, ellipsis: true },
{ key: 'stlc', title: '站址', dataIndex: 'stlc', visible: true, width: 280, ellipsis: true },
{ key: 'action', title: '操作', dataIndex: 'action', fixed: 'right', width: 120 }
]);

View File

@ -97,7 +97,11 @@
/>
</a-form-item>
<a-form-item label="数据来源" name="dataSource" v-if="formData.timeDimension === 'month'">
<a-form-item
label="数据来源"
name="dataSource"
v-if="formData.timeDimension === 'month'"
>
<a-radio-group v-model:value="formData.dataSource">
<a-radio value="true">日统计表</a-radio>
<a-radio value="false">小时表</a-radio>
@ -192,13 +196,14 @@
<div style="display: flex; align-items: center">
<a-checkbox value="baseId">基地</a-checkbox>
<a-select
v-model:value="formData.yearBaseId"
v-model:value="formData.rvcd"
placeholder="请选择水电基地"
mode="multiple"
allow-clear
show-search
:filter-option="filterOption"
:loading="rvcdLoading"
@change="handleRvcdChange"
style="width: 200px; margin-right: 10px"
:max-tag-count="2"
>
@ -291,7 +296,6 @@ const formData = reactive({
yearStatContent: [] as string[],
statYears: [] as string[],
yearDimContent: [] as string[],
yearBaseId: [] as string[],
lyRvcd: [] as string[],
dimensionStat: '',
content: ''
@ -361,7 +365,7 @@ const loadStationOptions = async (rvcds?: string[]) => {
const initDone = ref(false);
watch(
() => JidiSelectEventStore.jidiData,
(val) => {
val => {
if (initDone.value) return;
const data = (val || []).filter((item: any) => item.wbsCode !== 'all');
if (data.length === 0) return;
@ -403,50 +407,12 @@ const loadLyOptions = async () => {
lyLoading.value = false;
}
};
//
watch(
() => formData.timeDimension,
(newVal, oldVal) => {
if (newVal === oldVal) return;
// //
formData.rvcd = [];
formData.stations = [];
formData.lyRvcd = [];
formData.yearBaseId = [];
if (newVal === 'year') {
// //
formData.monitorElements = [];
formData.statMonths = [];
formData.dataSource = 'true';
//
formData.yearStatContent = ['wq', 'qec'];
formData.yearDimContent = ['stcd', 'baseId'];
formData.statYears = [String(new Date().getFullYear())];
// /
if (rvcdOptions.value.length > 0) {
formData.rvcd = [rvcdOptions.value[0].value];
formData.yearBaseId = [rvcdOptions.value[0].value];
loadStationOptions(formData.rvcd);
}
loadLyOptions();
} else {
//
formData.yearStatContent = [];
formData.statYears = [];
formData.yearDimContent = [];
//
formData.statMonths = getDefaultStatMonths();
if (dataFieldOption.value.length > 0) {
formData.monitorElements = dataFieldOption.value.map((item: any) => item.itemCode);
}
if (rvcdOptions.value.length > 0) {
formData.rvcd = [rvcdOptions.value[0].value];
loadStationOptions(formData.rvcd);
}
}
}
);
const dataOptions = ref([
{ itemCode: 'month', dictName: '月度报表' },
{ itemCode: 'year', dictName: '年度报表' },
{ itemCode: 'day', dictName: '日度报表' },
{ itemCode: 'hour', dictName: '小时报表' }
]);
const getExstatus = async (taskId, exportParams) => {
let res1: any = await qgcExportstatus({ taskId: taskId });
if (res1.status == 'PROCESSING') {
@ -454,12 +420,16 @@ const getExstatus = async (taskId, exportParams) => {
getExstatus(taskId, exportParams);
}, 5000);
} else if (res1.status == 'DONE') {
const { data: blob } = await qgcExportdownload({ taskId: taskId, ...exportParams });
const blob: any = await qgcExportdownload({
taskId: taskId,
...exportParams
});
//
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = `export_${taskId}.zip`;
const matched = dataOptions.value.find((item:any) => item.itemCode == formData.timeDimension);
a.download =`${matched.dictName}.zip`;
a.click();
window.URL.revokeObjectURL(url);
exportLoading.value = false;
@ -501,11 +471,8 @@ const handleExport = async () => {
if (formData.yearDimContent.includes('stcd')) {
params.stcd = formData.stations.join(',');
}
if (
formData.yearDimContent.includes('baseId') &&
formData.yearBaseId.length > 0
) {
params.baseId = formData.yearBaseId.join(',');
if (formData.yearDimContent.includes('baseId')) {
params.baseId = formData.rvcd.join(',');
}
if (formData.yearDimContent.includes('ly')) {
params.hbRvcd = formData.lyRvcd.join(',');
@ -521,7 +488,7 @@ const handleExport = async () => {
} catch (e) {
message.error('导出失败');
} finally {
exportLoading.value = false;
// exportLoading.value = false;
}
};
const dataFieldOption = ref([]);
@ -557,4 +524,7 @@ onMounted(() => {
z-index: 900;
pointer-events: all;
}
// .export-container{
// }
</style>

View File

@ -46,7 +46,7 @@
width="800px"
>
<div style="text-align: center">
<img :src="previewImageUrl" style="width: 100%; height: 600px" />
<a-image :src="previewImageUrl" style="width: 100%; height: 600px" />
</div>
</a-modal>
@ -106,7 +106,11 @@ import EditFishDataManualModal from './EditFishDataManualModal.vue';
import EditFishDataAutoModal from './EditFishDataAutoModal.vue';
import DeleteConfirmModal from '@/views/conventionalHydropower/BasicData/DeleteConfirmModal.vue';
import OperationLogModal from '@/components/OperationLogModal/index.vue';
import { getFishReleaseMonitorList, deleteFpssRInfo, deleteFpssrlRInfo } from '@/api/DataQueryMenuModule';
import {
getFishReleaseMonitorList,
deleteFpssRInfo,
deleteFpssrlRInfo
} from '@/api/DataQueryMenuModule';
import { calcTableScrollY } from '@/utils/index';
import { useDraggable } from '@/utils/drag';
@ -699,4 +703,5 @@ onMounted(() => {
position: relative;
z-index: 900;
pointer-events: all;
}</style>
}
</style>

View File

@ -73,7 +73,7 @@ import dayjs from 'dayjs';
import BasicSearch from '@/components/BasicSearch/index.vue';
import { DateSetting } from '@/utils/enumeration';
import { useTimeScale } from '@/store/composables/useTimeScale';
import { getFishReleaseMonitorSectionList } from '@/api/DataQueryMenuModule';
import { overviewvmsstbprptGetKendoList } from '@/api/DataQueryMenuModule';
import { getDictItemsByCode } from '@/api/dict';
const emit = defineEmits<{
@ -211,7 +211,7 @@ const initCrossSectionList = params => {
}
}
crossSectionListLoading.value = true;
return getFishReleaseMonitorSectionList({
return overviewvmsstbprptGetKendoList({
filter: {
logic: 'and',
filters: filters

View File

@ -46,7 +46,7 @@
width="800px"
>
<div style="text-align: center">
<img :src="previewImageUrl" style="width: 100%; height: 600px" />
<a-image :src="previewImageUrl" style="width: 100%; height: 600px" />
</div>
</a-modal>

View File

@ -11,7 +11,7 @@ VITE_APP_BASE_URL = 'http://localhost:8093'
# 测试环境
# VITE_APP_BASE_URL = 'http://172.16.21.142:8093'
# 汤伟
VITE_APP_BASE_URL = 'http://10.84.111.235:8093'
VITE_APP_BASE_URL = 'http://10.84.216.252:8093'
# 李林
# VITE_APP_BASE_URL = 'http://10.84.111.25:8093'
# VITE_APP_BASE_URL = 'http://10.84.111.211:8093'

View File

@ -1,5 +1,5 @@
<template>
<div class="w-full h-full flex flex-col">
<div class="w-full h-full flex flex-col body_one" >
<!-- 搜索组件 -->
<ApprovalSearch
@export-btn="exportBtn"
@ -346,5 +346,12 @@ onMounted(() => {
});
});
</script>
<style scoped lang="scss"></style>
<style scoped lang="scss">
.body_one {
padding: 20px 0px 0px 20px ;
position: relative;
z-index: 200;
pointer-events: all;
background-color: #fff;
}
</style>

View File

@ -97,7 +97,11 @@
/>
</a-form-item>
<a-form-item label="数据来源" name="dataSource" v-if="formData.timeDimension === 'month'">
<a-form-item
label="数据来源"
name="dataSource"
v-if="formData.timeDimension === 'month'"
>
<a-radio-group v-model:value="formData.dataSource">
<a-radio value="true">日统计表</a-radio>
<a-radio value="false">小时表</a-radio>
@ -361,7 +365,7 @@ const loadStationOptions = async (rvcds?: string[]) => {
const initDone = ref(false);
watch(
() => JidiSelectEventStore.jidiData,
(val) => {
val => {
if (initDone.value) return;
const data = (val || []).filter((item: any) => item.wbsCode !== 'all');
if (data.length === 0) return;
@ -403,6 +407,12 @@ const loadLyOptions = async () => {
lyLoading.value = false;
}
};
const dataOptions = ref([
{ itemCode: 'month', dictName: '月度报表' },
{ itemCode: 'year', dictName: '年度报表' },
{ itemCode: 'day', dictName: '日度报表' },
{ itemCode: 'hour', dictName: '小时报表' }
]);
const getExstatus = async (taskId, exportParams) => {
let res1: any = await qgcExportstatus({ taskId: taskId });
if (res1.status == 'PROCESSING') {
@ -410,12 +420,16 @@ const getExstatus = async (taskId, exportParams) => {
getExstatus(taskId, exportParams);
}, 5000);
} else if (res1.status == 'DONE') {
const blob = await qgcExportdownload({ taskId: taskId, ...exportParams });
const blob: any = await qgcExportdownload({
taskId: taskId,
...exportParams
});
//
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = `export_${taskId}.zip`;
const matched = dataOptions.value.find((item:any) => item.itemCode == formData.timeDimension);
a.download =`${matched.dictName}.zip`;
a.click();
window.URL.revokeObjectURL(url);
exportLoading.value = false;
@ -474,7 +488,7 @@ const handleExport = async () => {
} catch (e) {
message.error('导出失败');
} finally {
exportLoading.value = false;
// exportLoading.value = false;
}
};
const dataFieldOption = ref([]);

View File

@ -11,12 +11,6 @@
<a-tab-pane tab="水质站" key="shuiZhiJianCe">
<shuiZhiJianCe />
</a-tab-pane>
<a-tab-pane tab="生态流量设防设施" key="shengTaiLiuLiang">
<shengTaiLiuLiang />
</a-tab-pane>
<a-tab-pane tab="低温水减缓措施" key="tempMit">
<tempMit />
</a-tab-pane>
<a-tab-pane tab="栖息地" key="qiXiDi">
<qiXiDi />
</a-tab-pane>
@ -26,9 +20,6 @@
<a-tab-pane tab="动物救助站" key="rescueStation">
<rescueStation />
</a-tab-pane>
<a-tab-pane tab="过鱼设施" key="guoYuSheShi">
<guoYuSheShi />
</a-tab-pane>
<a-tab-pane tab="水生生态调查断面" key="shuiShengShengTaiDiaoCha">
<shuiShengShengTaiDiaoCha />
</a-tab-pane>
@ -41,27 +32,12 @@
<a-tab-pane tab="其他陆生生态保护工程" key="terrEco">
<terrEco />
</a-tab-pane>
<a-tab-pane tab="视频站" key="shiPinJianKong">
<shiPinJianKong />
</a-tab-pane>
<a-tab-pane tab="鱼类资源" key="FishResource">
<FishResource />
</a-tab-pane>
<a-tab-pane tab="鱼类增殖站" key="zengZhiFangLiu">
<zengZhiFangLiu />
</a-tab-pane>
<a-tab-pane tab="声纳及水下摄像头" key="sonarCam">
<sonarCam />
</a-tab-pane>
<a-tab-pane tab="AI智能监测装置" key="fishSurvey">
<fishSurvey />
</a-tab-pane>
<a-tab-pane tab="AI边缘计算盒子" key="aiBox">
<aiBox />
</a-tab-pane>
<a-tab-pane tab="批复文件" key="Approval">
<Approval />
</a-tab-pane>
</a-tabs>
</div>
</template>
@ -69,23 +45,15 @@
import BasicData from './components/conventionalHydropower/BasicData/index.vue';
import shuiWenJianCe from './components/conventionalHydropower/shuiWenJianCe/index.vue';
import shuiZhiJianCe from './components/conventionalHydropower/shuiZhiJianCe/index.vue';
import shengTaiLiuLiang from './components/conventionalHydropower/shengTaiLiuLiang/index.vue';
import tempMit from './components/conventionalHydropower/tempMit/index.vue';
import qiXiDi from './components/conventionalHydropower/qiXiDi/index.vue';
import zhenXIZhiWuYuan from './components/conventionalHydropower/zhenXIZhiWuYuan/index.vue';
import rescueStation from './components/conventionalHydropower/rescueStation/index.vue';
import guoYuSheShi from './components/conventionalHydropower/guoYuSheShi/index.vue';
import shuiShengShengTaiDiaoCha from './components/conventionalHydropower/shuiShengShengTaiDiaoCha/index.vue';
import aquaEco from './components/conventionalHydropower/aquaEco/index.vue';
import luShengShengTaiDiaoCha from './components/conventionalHydropower/luShengShengTaiDiaoCha/index.vue';
import terrEco from './components/conventionalHydropower/terrEco/index.vue';
import shiPinJianKong from './components/conventionalHydropower/shiPinJianKong/index.vue';
import FishResource from './components/conventionalHydropower/FishResource/index.vue';
import zengZhiFangLiu from './components/conventionalHydropower/zengZhiFangLiu/index.vue';
import sonarCam from './components/conventionalHydropower/sonarCam/index.vue';
import fishSurvey from './components/conventionalHydropower/fishSurvey/index.vue';
import aiBox from './components/conventionalHydropower/aiBox/index.vue';
import Approval from './components/conventionalHydropower/Approval/index.vue';
import { ref } from 'vue';
const activeTab = ref('BasicData');
</script>

View File

@ -0,0 +1,60 @@
<template>
<div class="conventionalHydropower-page">
<!-- 1. 排序 -->
<a-tabs v-model:activeKey="activeTab" class="conventionalHydropower-tabs">
<a-tab-pane tab="生态流量泄放设施" key="shengTaiLiuLiang">
<shengTaiLiuLiang />
</a-tab-pane>
<a-tab-pane tab="低温水减缓设施" key="tempMit">
<tempMit />
</a-tab-pane>
<a-tab-pane tab="过鱼设施" key="guoYuSheShi">
<guoYuSheShi />
</a-tab-pane>
<a-tab-pane tab="视频站" key="shiPinJianKong">
<shiPinJianKong />
</a-tab-pane>
<a-tab-pane tab="声纳及水下摄像头" key="sonarCam">
<sonarCam />
</a-tab-pane>
<a-tab-pane tab="AI智能监测装置" key="fishSurvey">
<fishSurvey />
</a-tab-pane>
<a-tab-pane tab="AI边缘计算盒子" key="aiBox">
<aiBox />
</a-tab-pane>
</a-tabs>
</div>
</template>
<script setup lang="ts">
import shengTaiLiuLiang from './components/conventionalHydropower/shengTaiLiuLiang/index.vue';
import tempMit from './components/conventionalHydropower/tempMit/index.vue';
import guoYuSheShi from './components/conventionalHydropower/guoYuSheShi/index.vue';
import shiPinJianKong from './components/conventionalHydropower/shiPinJianKong/index.vue';
import sonarCam from './components/conventionalHydropower/sonarCam/index.vue';
import fishSurvey from './components/conventionalHydropower/fishSurvey/index.vue';
import aiBox from './components/conventionalHydropower/aiBox/index.vue';
import { ref } from 'vue';
const activeTab = ref('shengTaiLiuLiang');
</script>
<style scoped lang="scss">
.conventionalHydropower-page {
position: relative;
z-index: 900;
pointer-events: all;
width: 100%;
height: 100%;
background-color: #ffffff;
box-sizing: border-box;
overflow: hidden;
}
.conventionalHydropower-tabs {
padding-left: 20px;
width: calc(100% - 20px);
height: calc(100% - 20px);
:deep(.ant-tabs-content) {
height: 100%;
}
}
</style>