Merge branch 'master' of http://git.hivekion.com:3000/panbaolin/SourceTermAnalysisSystem_vue
This commit is contained in:
commit
bb0b951d96
|
|
@ -253,8 +253,8 @@
|
|||
background-color: #409eff !important; /* 高亮色,与背景区分 */
|
||||
}
|
||||
|
||||
.el-select-dropdown .el-select-dropdown__item.selected {
|
||||
background-color: #409eff !important; /* 选中色 */
|
||||
.el-select-dropdown .el-select-dropdown__item.selected, .el-select-dropdown .el-select-dropdown__item.is-selected {
|
||||
background-color: #297CD1 !important; /* 选中色 */
|
||||
}
|
||||
|
||||
.el-popper {
|
||||
|
|
|
|||
|
|
@ -45,7 +45,8 @@ export interface mapRightMenu {
|
|||
pointData?: () => void;
|
||||
// 二三维切换
|
||||
ts3D?: () => void;
|
||||
|
||||
// gif
|
||||
gif?: () => void;
|
||||
}
|
||||
|
||||
// 定位参数接口
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@ export function setMultiplier(num: number) {
|
|||
// 设置动画时间
|
||||
export function setAnimationTime(opt: any) {
|
||||
if (olClock && opt) {
|
||||
if (!opt.startTime || !opt.endTime) { return }
|
||||
olClock.startTime = JulianDate.fromDate(new Date(opt.startTime));
|
||||
olClock.currentTime = JulianDate.fromDate(new Date(opt.startTime));
|
||||
olClock.stopTime = JulianDate.fromDate(new Date(opt.endTime));
|
||||
|
|
|
|||
|
|
@ -4,15 +4,20 @@
|
|||
import type { LocateParams, MapControlItem } from '@/gis/ol/interface/common';
|
||||
import { domFullscreenStatus } from '@/gis/common/domHandle';
|
||||
import { mapRightMenuEvent } from '@/gis/ol/olRightMenu';
|
||||
import { getGif } from "@/utils/axios/symn";
|
||||
|
||||
// 是否显示定位页面
|
||||
const isShowLocate = ref(false);
|
||||
|
||||
const locate = ref<LocateParams>({
|
||||
lon: null,
|
||||
lat: null,
|
||||
});
|
||||
|
||||
// 是否显示gif
|
||||
const isShowGif = ref(false);
|
||||
const gifSrc = ref('');
|
||||
const gifParams = ref({ taskId: '', speciesId: '' });
|
||||
|
||||
// 图标基础集合
|
||||
const baseList = ref<MapControlItem[]>([
|
||||
{
|
||||
|
|
@ -88,7 +93,7 @@ const baseList = ref<MapControlItem[]>([
|
|||
},
|
||||
{
|
||||
name: 'zoomOut',
|
||||
isMargin: true,
|
||||
isMargin: false,
|
||||
tooltip: '缩小',
|
||||
isActive: false,
|
||||
activeName: 'zoomOut',
|
||||
|
|
@ -128,6 +133,17 @@ const yxcjTool = ref<MapControlItem[]>([
|
|||
|
||||
]);
|
||||
|
||||
// 输运模拟
|
||||
const symnTool = ref<MapControlItem[]>([
|
||||
{
|
||||
name: 'gif',
|
||||
isMargin: false,
|
||||
tooltip: 'GIF',
|
||||
isActive: false,
|
||||
activeName: 'gif',
|
||||
}
|
||||
]);
|
||||
|
||||
// 图标集合
|
||||
const svgList = ref<MapControlItem[]>([...baseList.value]);
|
||||
// 图标点击事件处理
|
||||
|
|
@ -183,6 +199,14 @@ function handleIconClick(item: MapControlItem) {
|
|||
falg,
|
||||
});
|
||||
}
|
||||
|
||||
// 处理gif
|
||||
else if (item.name === 'gif') {
|
||||
getGif(gifParams.value,(res: any) => {
|
||||
gifSrc.value = window.FSXConfig.VUE_APP_SERVER_IP + res;
|
||||
isShowGif.value = true;
|
||||
});
|
||||
}
|
||||
// 处理其他功能(全屏、定位等)
|
||||
else {
|
||||
// 缩放按钮不激活状态切换
|
||||
|
|
@ -254,9 +278,10 @@ onMounted(() => {
|
|||
// 根据菜单,进行工具栏选项的变动
|
||||
if (res.key === 'baseList') {
|
||||
svgList.value = [...baseList.value];
|
||||
}
|
||||
else if (res.key === 'allList') {
|
||||
} else if (res.key === 'allList') {
|
||||
svgList.value = [...baseList.value, ...yxcjTool.value];
|
||||
} else if (res.key === 'gifIcon') {
|
||||
svgList.value = [...baseList.value, ...symnTool.value];
|
||||
}
|
||||
// 按钮菜单触发状态
|
||||
if (res.key === 'dataExport') { // 数据导出
|
||||
|
|
@ -266,6 +291,12 @@ onMounted(() => {
|
|||
switchIconActive(res.key, res.falg);
|
||||
}
|
||||
});
|
||||
|
||||
EventBusTool.getEventBus().subscribe('speciesChange', (res: any) => {
|
||||
if (res.key === 'speciesId') {
|
||||
gifParams.value = res.data;
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
|
|
@ -301,6 +332,12 @@ onMounted(() => {
|
|||
</el-col>
|
||||
</el-row>
|
||||
</Dialog>
|
||||
<Dialog v-model="isShowGif" title="GIF" width="1340" class="config-dialog" style="min-height: 120px" @close="isShowGif=false">
|
||||
<img v-if="isShowGif" :src="gifSrc" alt="GIF" style="width: 100%">
|
||||
<a v-if="gifSrc" :href="gifSrc" download="gif" class="download-icon">
|
||||
<el-icon size="20"><Download /></el-icon>
|
||||
</a>
|
||||
</Dialog>
|
||||
</template>
|
||||
|
||||
<style lang="less" scoped>
|
||||
|
|
@ -350,4 +387,25 @@ onMounted(() => {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
.download-icon {
|
||||
position: absolute;
|
||||
bottom: 20px;
|
||||
right: 20px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-radius: 50%;
|
||||
background-color: rgba(0,0,0,0.2);
|
||||
cursor: pointer;
|
||||
color: black;
|
||||
&:hover {
|
||||
background-color: rgba(0,0,0,0.3);
|
||||
}
|
||||
&:active {
|
||||
background-color: rgba(0,0,0,0.4);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -76,7 +76,7 @@ const isQueryData = ref<boolean>(true);
|
|||
const marskType = ref<string>('hour');
|
||||
const start = ref<any>(dayjs('2025-09-15 00:00:00'));
|
||||
const end = ref<any>(dayjs('2025-09-16 00:00:00'));
|
||||
const totalHours = ref<number>(end.value.diff(start, marskType.value));
|
||||
const totalHours = ref<number>(end.value.diff(start.value, marskType.value));
|
||||
const value = ref<number>(0);
|
||||
const playFalg = ref<boolean>(false);
|
||||
const slodtooltip: any = (toolNum: number) => {
|
||||
|
|
@ -270,6 +270,13 @@ function setStartAndEndTime(param: any) {
|
|||
// updateTimeLabel(start.value.valueOf());
|
||||
}
|
||||
|
||||
const speciesValueChange = () => {
|
||||
EventBusTool.getEventBus().publish('speciesChange', {
|
||||
key: 'speciesId',
|
||||
data: { taskId: props.taskId, speciesId: speciesValue.value },
|
||||
});
|
||||
};
|
||||
|
||||
// 监听 speciesList 变化(比如父组件异步获取数据后更新)
|
||||
watch(
|
||||
() => props.speciesList,
|
||||
|
|
@ -278,6 +285,10 @@ watch(
|
|||
console.log(newVal);
|
||||
|
||||
speciesValue.value = newVal[0].value;
|
||||
EventBusTool.getEventBus().publish('speciesChange', {
|
||||
key: 'speciesId',
|
||||
data: { taskId: props.taskId, speciesId: newVal[0].value },
|
||||
});
|
||||
}
|
||||
else {
|
||||
speciesValue.value = null;
|
||||
|
|
@ -353,7 +364,7 @@ onMounted(() => {
|
|||
<el-select-v2 v-if="props.activeMenu === '核事件模拟'" v-model="layerValue" :disabled="!isQueryData"
|
||||
:options="props.layerList" placeholder="请选择图层" style="width: 230px" />
|
||||
<el-select-v2 v-if="props.activeMenu === '输运模拟' && speciesValue" v-model="speciesValue" :disabled="!isQueryData"
|
||||
:options="props.speciesList" placeholder="请选择物种" style="width: 230px" />
|
||||
:options="props.speciesList" placeholder="请选择物种" style="width: 230px" @change="speciesValueChange" />
|
||||
</div>
|
||||
<div v-if="isShowTabs" class="tabs">
|
||||
<div v-for="(v, i) in tabsList" :key="i" class="tabItem" :class="{ active: v.isActive }" @click="switchTab(v)">
|
||||
|
|
@ -367,6 +378,7 @@ onMounted(() => {
|
|||
<SvgIcon name="stop" title="停止" width="34" height="34" />
|
||||
</div>
|
||||
<div class="slider">
|
||||
<div style="color: white">value:{{ value }} ----- totalHours:{{ totalHours }}</div>
|
||||
<el-slider v-model="value" :disabled="isDisabledSlider"
|
||||
:style="{ width: isShowTabs ? (props.sliderWidth ?? '58vw') : '62vw' }" :max="totalHours"
|
||||
:format-tooltip="slodtooltip" :marks="marks" @input="handleChange" />
|
||||
|
|
|
|||
|
|
@ -103,6 +103,7 @@ export class X6Graph {
|
|||
|
||||
// 1. 配置同步字段:新增“配置”菜单项
|
||||
const configItem = document.createElement('div');
|
||||
configItem.id = 'ant-x6-menu-1';
|
||||
configItem.style.cssText = `
|
||||
padding: 6px 12px;
|
||||
cursor: pointer;
|
||||
|
|
@ -197,6 +198,7 @@ export class X6Graph {
|
|||
|
||||
// 2. 配置同步数量
|
||||
const syncNumItem = document.createElement('div');
|
||||
syncNumItem.id = 'ant-x6-menu-2';
|
||||
syncNumItem.style.cssText = `
|
||||
padding: 6px 12px;
|
||||
cursor: pointer;
|
||||
|
|
@ -226,6 +228,7 @@ export class X6Graph {
|
|||
|
||||
// 3. 原有“删除”菜单项(保持不变,调整顺序在配置项下方)
|
||||
const deleteItem = document.createElement('div');
|
||||
deleteItem.id = 'ant-x6-menu-3';
|
||||
deleteItem.style.cssText = `
|
||||
padding: 6px 12px;
|
||||
cursor: pointer;
|
||||
|
|
@ -356,6 +359,14 @@ export class X6Graph {
|
|||
if (!nodeData.level) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (nodeData.level === 'level2') {
|
||||
|
||||
} else if (nodeData.level === 'level3') {
|
||||
|
||||
} else if (nodeData.level === 'level4') {
|
||||
|
||||
}
|
||||
// 显示菜单(位置为点击坐标)
|
||||
this.showMenu(node.id, e.clientX, e.clientY);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -368,7 +368,7 @@ function handleSave() {
|
|||
});
|
||||
emit('cancel');
|
||||
}
|
||||
});
|
||||
}, 30 * 60 * 1000);
|
||||
}
|
||||
else {
|
||||
ElMessage({
|
||||
|
|
@ -392,18 +392,19 @@ function handleCancel() {
|
|||
<ElFormItem :label="t('mode')">
|
||||
<ElSelect v-model="formData.mode" style="width: 220px" multiple :max-collapse-tags="0" collapse-tags
|
||||
collapse-tags-tooltip filterable :placeholder="t('pleaseSelect')" class="custom-select"
|
||||
allow-create default-first-option :reserve-keyword="false"
|
||||
@change="handleModeChange">
|
||||
<ElOption v-for="(item, index) in modeList" :key="index" :label="item.label" :value="item.value" />
|
||||
</ElSelect>
|
||||
</ElFormItem>
|
||||
<ElFormItem label="手动输入模式" v-show="!formData.mode || !formData.mode.length">
|
||||
<!--<ElFormItem label="手动输入模式" v-show="!formData.mode || !formData.mode.length">
|
||||
<div style="display: flex; align-items: center;">
|
||||
<ElInput v-model="manualModeInput" style="width: 160px" placeholder="输入模式名" @keyup.enter="handleAddMode" />
|
||||
<ElButton type="primary" style="margin-left: 4px; height: 34px; border-radius: 4px;" @click="handleAddMode">
|
||||
添加
|
||||
</ElButton>
|
||||
</div>
|
||||
</ElFormItem>
|
||||
</ElFormItem>-->
|
||||
<ElFormItem :label="t('dataTable')">
|
||||
<ElSelect ref="level3" v-model="formData.dataValue" style="width: 220px" multiple :max-collapse-tags="0"
|
||||
collapse-tags collapse-tags-tooltip filterable :placeholder="t('pleaseSelect')" class="custom-select"
|
||||
|
|
|
|||
|
|
@ -9,11 +9,12 @@ import targetIconB from '@/assets/icon/targetIconB.svg';
|
|||
import { setAnimationTime, setMultiplier } from '@/gis/ol/olClock';
|
||||
import { classInstances } from '@/gis/ol/olHandleEntry';
|
||||
import { sendPlaybackPostMassage } from '@/gis/worker/playbackWorkerMa';
|
||||
import { add, deleteData, edit, getAllNuclearfacility, getAllStations,getReleaseDataByForwardId,saveSiteAndReleaseData,delSiteAndReleaseData, getById, getData, getTaskLog, resume, exportTemplate, importFile, pinToTopOrUnpin } from '@/utils/axios/symn';
|
||||
import { add, deleteData, edit, getAllNuclearfacility, getAllStations,getReleaseDataByForwardId,saveSiteAndReleaseData,delSiteAndReleaseData, getById, getData, getTaskLog, resume, exportTemplate, importFile, pinToTop, unpin } from '@/utils/axios/symn';
|
||||
import fhdfx from './compliance/index.vue';
|
||||
import gxfx from './contribution/index.vue';
|
||||
import log from './log/index.vue';
|
||||
import sxfx from './timingAnalysis/index.vue';
|
||||
import {activeMoudleInf} from "@/gis/ol";
|
||||
|
||||
const { t, locale } = useI18n();
|
||||
const formEl = ref<FormInstance>();
|
||||
|
|
@ -147,13 +148,13 @@ interface OptionItem {
|
|||
value: number;
|
||||
}
|
||||
const taskStatusList = ref<OptionItem[]>([
|
||||
// -1执行失败,0未开始,1等待中,2运行中,3已完成,4任务检查未通过
|
||||
// -1执行失败,0未开始,1等待中,2运行中,3已完成,4检查未通过
|
||||
{ label: '执行失败', value: -1 },
|
||||
{ label: '未开始', value: 0 },
|
||||
{ label: '等待中', value: 1 },
|
||||
{ label: '运行中', value: 2 },
|
||||
{ label: '已完成', value: 3 },
|
||||
{ label: '任务检查未通过', value: 4 },
|
||||
{ label: '检查未通过', value: 4 },
|
||||
]);
|
||||
|
||||
function handleClose() {
|
||||
|
|
@ -255,15 +256,25 @@ function clearChild() {
|
|||
childList.splice(0);
|
||||
}
|
||||
// 置顶和取消置顶
|
||||
const pinToTopTask = (row: any) => {
|
||||
pinToTopOrUnpin({ id: row.id }, (res) => {
|
||||
if (res.code === 200) {
|
||||
ElMessage.success('操作成功!');
|
||||
getList();
|
||||
}
|
||||
});
|
||||
const pinToTopTask = (row: any, isPin: boolean) => {
|
||||
if (!isPin) {
|
||||
pinToTop({ taskId: row.id }, (res) => {
|
||||
if (res.code === 200) {
|
||||
ElMessage.success('置顶成功!');
|
||||
getList();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
unpin({ taskId: row.id }, (res) => {
|
||||
if (res.code === 200) {
|
||||
ElMessage.success('取消置顶成功!');
|
||||
getList();
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
function viewTask(task: any) {
|
||||
debugger
|
||||
console.log('查看任务:', task);
|
||||
handleClose();
|
||||
form.value = {
|
||||
|
|
@ -281,6 +292,11 @@ function viewTask(task: any) {
|
|||
key: 'isQueryData',
|
||||
value: true,
|
||||
});
|
||||
if (task.taskMode === 1) {
|
||||
EventBusTool.getEventBus().publish('mapRightMenuUIEvent', {
|
||||
key: 'gifIcon'
|
||||
});
|
||||
}
|
||||
|
||||
// 移除所有台站
|
||||
classInstances.olTarget?.clearMarkers();
|
||||
|
|
@ -546,7 +562,7 @@ function handleSizeChangeLog(val: number) {
|
|||
}
|
||||
function handleCurrentChangeLog(val: number) {
|
||||
console.log(`current page: ${val}`);
|
||||
currentPage.value = val;
|
||||
currentPageLog.value = val;
|
||||
getTaskLog({
|
||||
taskId: logId.value,
|
||||
pageNum:currentPageLog.value,
|
||||
|
|
@ -646,6 +662,9 @@ watch(drawerVisible, (newValue) => {
|
|||
console.log('抽屉状态变化:', newValue);
|
||||
if (newValue === false) {
|
||||
dialogVisible.value = true;
|
||||
EventBusTool.getEventBus().publish('mapRightMenuUIEvent', {
|
||||
key: 'baseList'
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
|
@ -960,7 +979,7 @@ getStations();
|
|||
<el-input v-if="form.taskStatus === 1" value="等待中" />
|
||||
<el-input v-if="form.taskStatus === 2" value="运行中" />
|
||||
<el-input v-if="form.taskStatus === 3" value="已完成" />
|
||||
<el-input v-if="form.taskStatus === 4" value="任务检查未通过" />
|
||||
<el-input v-if="form.taskStatus === 4" value="检查未通过" />
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('dataSource')">
|
||||
<el-input v-if="form.useMetType === 1" value="盘古模型" />
|
||||
|
|
@ -1158,7 +1177,7 @@ getStations();
|
|||
<div v-if="scope.row.taskStatus === 1" style="color:#ffcb40;">等待中</div>
|
||||
<div v-if="scope.row.taskStatus === 2" style="color:#ffcb40;">运行中</div>
|
||||
<div v-if="scope.row.taskStatus === 3" style="color:#2af442;">已完成</div>
|
||||
<div v-if="scope.row.taskStatus === 4" style="color:#f42a2a;">任务检查未通过</div>
|
||||
<div v-if="scope.row.taskStatus === 4" style="color:#f42a2a;">检查未通过</div>
|
||||
</template>
|
||||
</ElTableColumn>
|
||||
<ElTableColumn :label="t('dataSource')">
|
||||
|
|
@ -1196,40 +1215,44 @@ getStations();
|
|||
<ElTableColumn prop="createTime" :label="t('creationTime')" />
|
||||
<ElTableColumn :label="t('operation')" width="330">
|
||||
<template #default="scope">
|
||||
<ElButton v-if="scope.row.taskStatus === 1" type="text" class="table-btn" @click="pinToTopTask(scope)">
|
||||
{{ true ? t('pinToTop') : t('unpin') }}
|
||||
<ElButton v-if="scope.row.taskStatus === 1" type="text" class="table-btn" @click="pinToTopTask(scope, scope.topTask)">
|
||||
{{ !scope.topTask ? t('pinToTop') : t('unpin') }}
|
||||
</ElButton>
|
||||
<ElButton v-else type="text" style="color:#588589;cursor:no-drop">
|
||||
{{ true ? t('pinToTop') : t('unpin') }}
|
||||
{{ !scope.topTask ? t('pinToTop') : t('unpin') }}
|
||||
</ElButton>
|
||||
<!-- -1执行失败,0未开始,1等待中,2运行中,3已完成,4任务检查未通过-->
|
||||
<!-- -1执行失败,0未开始,1等待中,2运行中,3已完成,4检查未通过-->
|
||||
<!--任务处于等待中,运行中状态时,不能编辑和删除;处于未开始,已完成,检查未通过时可以删除;处于已完成状态时也不能编辑-->
|
||||
<ElButton type="text" class="custom-text-btn" @click="viewTask(scope.row)">
|
||||
<ElButton v-if="scope.row.taskStatus === -1 || scope.row.taskStatus === 0 || scope.row.taskStatus === 4" type="text" class="custom-text-btn" @click="start(scope.row.id)">
|
||||
{{ t('startOperation') }}
|
||||
</ElButton>
|
||||
<ElButton v-else type="text" style="color:#588589;cursor:no-drop">
|
||||
{{ t('startOperation') }}
|
||||
</ElButton>
|
||||
<ElButton v-if="scope.row.taskStatus === 3" type="text" class="custom-text-btn" @click="viewTask(scope.row)">
|
||||
{{ t('view') }}
|
||||
</ElButton>
|
||||
<ElButton v-if="scope.row.taskStatus !== 1 && scope.row.taskStatus !== 2 && scope.row.taskStatus !== 3" type="text" class="custom-text-btn" @click="editTask(scope.row, scope.$index)">
|
||||
<ElButton v-else type="text" style="color:#588589;cursor:no-drop">
|
||||
{{ t('view') }}
|
||||
</ElButton>
|
||||
<ElButton v-if="scope.row.taskStatus === -1 || scope.row.taskStatus === 0 && scope.row.taskStatus === 4" type="text" class="custom-text-btn" @click="editTask(scope.row, scope.$index)">
|
||||
{{ t('edit') }}
|
||||
</ElButton>
|
||||
<ElButton v-else type="text" style="color:#588589;cursor:no-drop">
|
||||
{{ t('edit') }}
|
||||
</ElButton>
|
||||
<ElButton v-if="scope.row.taskStatus == 0 || scope.row.taskStatus === 3 || scope.row.taskStatus === 4" type="text" class="custom-text-btn" @click="deleteTask(scope.row)">
|
||||
<ElButton v-if="scope.row.taskStatus == -1 || scope.row.taskStatus == 0 || scope.row.taskStatus === 3 || scope.row.taskStatus === 4" type="text" class="custom-text-btn" @click="deleteTask(scope.row)">
|
||||
{{ t('delete') }}
|
||||
</ElButton>
|
||||
<ElButton v-else type="text" style="color:#588589;cursor:no-drop">
|
||||
{{ t('delete') }}
|
||||
</ElButton>
|
||||
<ElButton type="text" class="custom-text-btn" @click="showLog(scope.row.id)">
|
||||
<ElButton v-if="scope.row.taskStatus === -1 || scope.row.taskStatus === 0 || scope.row.taskStatus === 1 || scope.row.taskStatus === 2 || scope.row.taskStatus === 3 || scope.row.taskStatus === 4" type="text" class="custom-text-btn" @click="showLog(scope.row.id)">
|
||||
{{ t('operationLog') }}
|
||||
</ElButton>
|
||||
<ElButton v-if="scope.row.taskStatus === 2 || scope.row.taskStatus === 1" type="text"
|
||||
style="color:#588589;cursor:no-drop">
|
||||
{{ t('startOperation') }}
|
||||
<ElButton v-else type="text" style="color:#588589;cursor:no-drop">
|
||||
{{ t('operationLog') }}
|
||||
</ElButton>
|
||||
<ElButton v-else type="text" class="custom-text-btn" @click="start(scope.row.id)">
|
||||
{{ t('startOperation') }}
|
||||
</ElButton>
|
||||
|
||||
|
||||
</template>
|
||||
</ElTableColumn>
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import { gisImgOpt, tqycAnimationType, weathFlag } from '@/gis/ol/index';
|
|||
import { playbackSearchData, weatherDataLine, weatherPreview } from '@/utils/axios/tqyb/data/index';
|
||||
import tab1 from './tab-1/index.vue';
|
||||
import tab2 from './tab-2/index.vue';
|
||||
import tab3 from './tab-3/index.vue';
|
||||
import WindRose from './WindRose.vue';
|
||||
|
||||
const { t } = useI18n();
|
||||
|
|
@ -238,7 +239,7 @@ onMounted(() => {
|
|||
<tab2 v-if="tabActive === '公开气象数据'" type="gkqx" @playback="handleSendData" @preview="weatherPreviewHandle" />
|
||||
</el-tab-pane>
|
||||
<el-tab-pane :label="t('associateMeteorologicalData')" name="关联气象数据">
|
||||
建设中...
|
||||
<tab3 />
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
</Dialog>
|
||||
|
|
|
|||
|
|
@ -42,13 +42,13 @@ interface OptionItem {
|
|||
value: number;
|
||||
}
|
||||
const taskStatusList = ref<OptionItem[]>([
|
||||
// -1执行失败,0未开始,1等待中,2运行中,3已完成,4任务检查未通过
|
||||
// -1执行失败,0未开始,1等待中,2运行中,3已完成,4检查未通过
|
||||
{ label: '执行失败', value: -1 },
|
||||
{ label: '未开始', value: 0 },
|
||||
{ label: '等待中', value: 1 },
|
||||
{ label: '运行中', value: 2 },
|
||||
{ label: '已完成', value: 3 },
|
||||
{ label: '任务检查未通过', value: 4 },
|
||||
{ label: '检查未通过', value: 4 },
|
||||
]);
|
||||
|
||||
function search() {
|
||||
|
|
@ -509,7 +509,7 @@ getList();
|
|||
<div v-if="scope.row.taskStatus === 1" style="color:#ffcb40;">等待中</div>
|
||||
<div v-if="scope.row.taskStatus === 2" style="color:#ffcb40;">运行中</div>
|
||||
<div v-if="scope.row.taskStatus === 3" style="color:#2af442;">已完成</div>
|
||||
<div v-if="scope.row.taskStatus === 4" style="color:#f42a2a;">任务检查未通过</div>
|
||||
<div v-if="scope.row.taskStatus === 4" style="color:#f42a2a;">检查未通过</div>
|
||||
</template>
|
||||
</ElTableColumn>
|
||||
<ElTableColumn prop="model" :label="t('predictionModel')">
|
||||
|
|
@ -568,7 +568,7 @@ getList();
|
|||
<ElButton v-else type="text" style="color:#588589;cursor:no-drop">
|
||||
{{ true ? t('pinToTop') : t('unpin') }}
|
||||
</ElButton>
|
||||
<!-- -1执行失败,0未开始,1等待中,2运行中,3已完成,4任务检查未通过-->
|
||||
<!-- -1执行失败,0未开始,1等待中,2运行中,3已完成,4检查未通过-->
|
||||
<!--任务处于等待中,运行中状态时,不能编辑和删除;处于未开始,已完成,检查未通过时可以删除;处于已完成状态时也不能编辑-->
|
||||
<ElButton v-if="scope.row.taskStatus === 0 || scope.row.taskStatus === -1" type="text" class="custom-text-btn"
|
||||
@click="start(scope.row, scope.$index)">
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ function getList() {
|
|||
}];
|
||||
}
|
||||
if (propsWithDefaults.type === 'gkqx') {
|
||||
dataS = '6';
|
||||
dataS = '';
|
||||
selectOption.value = [{
|
||||
value: '6',
|
||||
label: 't1h',
|
||||
|
|
@ -408,6 +408,9 @@ getList();
|
|||
</ElSelect>
|
||||
<el-date-picker v-model="pickerValue" unlink-panels type="datetimerange" :default-time="new Date()"
|
||||
range-separator="至" :start-placeholder="t('startDate')" :end-placeholder="t('endDate')"
|
||||
:disabled-minutes="() => Array.from({ length: 60 }, (_, i) => i)"
|
||||
:disabled-seconds="() => Array.from({ length: 60 }, (_, i) => i)"
|
||||
value-format="YYYY-MM-DD HH:00:00"
|
||||
:disabled-hours="disabledHour" />
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,11 @@ import { nextTick, onMounted, ref, watch } from 'vue';
|
|||
import { useECharts } from '@/hooks/useECharts';
|
||||
// import axios from 'axios'
|
||||
import { getBivariate } from '@/utils/axios/yxcj';
|
||||
|
||||
const props = defineProps({
|
||||
taskId: Number,
|
||||
});
|
||||
|
||||
// ======================== 1. 数据类型定义 ========================
|
||||
interface DataPoint {
|
||||
lon: number; // 经度
|
||||
|
|
@ -224,7 +229,7 @@ const { updateChart: startAndStopChartStruUpdate } = useECharts({
|
|||
});
|
||||
|
||||
function getlist() {
|
||||
getBivariate({ taskId: 8 }, (result) => {
|
||||
getBivariate({ taskId: props.taskId }, (result) => {
|
||||
// axios.get('/mokedata.json').then(result => {
|
||||
console.log(result);
|
||||
const res = result.result;
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import { ElButton, ElCol, ElDatePicker, ElForm, ElFormItem, ElInput, ElLoading,
|
|||
import { useI18n } from 'vue-i18n';
|
||||
import Table from '@/components/Table/index.vue';
|
||||
import { activeMoudleInf } from '@/gis/ol/index';
|
||||
import { createTask, deleteTask as deleteData, exportAcTimeSeriesTxt, exportBayesProbLocTxt, exportBivariateTxt, exportTemplate, exportUnivariateTxt, getBayesProbLoc, getById, getIdDetail, getPage, getTaskLog, importTask, runTask, updateTask, pinToTopOrUnpin } from '@/utils/axios/yxcj';
|
||||
import { createTask, deleteTask as deleteData, exportAcTimeSeriesTxt, exportBayesProbLocTxt, exportBivariateTxt, exportTemplate, exportUnivariateTxt, getBayesProbLoc, getById, getIdDetail, getPage, getTaskLog, importTask, runTask, updateTask, pinToTop, unpin } from '@/utils/axios/yxcj';
|
||||
import { transformLogData } from '@/utils/index';
|
||||
import { exportCharts } from '@/utils/index'; // 下载图表图片
|
||||
import scatter from './dbvarScatter/index.vue';
|
||||
|
|
@ -108,6 +108,7 @@ const exportFlag = ref('');
|
|||
const monOrAnaObj = ref();
|
||||
const dbScatterObj = ref();
|
||||
const univarBanObj = ref();
|
||||
const uploadButtonShow = ref(false);
|
||||
|
||||
// 通过watch监听侧边栏的变化
|
||||
watch(drawerVisible, (newValue) => {
|
||||
|
|
@ -123,13 +124,13 @@ interface OptionItem {
|
|||
}
|
||||
|
||||
const taskStatusList = ref<OptionItem[]>([
|
||||
// -1执行失败,0未开始,1等待中,2运行中,3已完成,4任务检查未通过
|
||||
// -1执行失败,0未开始,1等待中,2运行中,3已完成,4检查未通过
|
||||
{ label: '执行失败', value: -1 },
|
||||
{ label: '未开始', value: 0 },
|
||||
{ label: '等待中', value: 1 },
|
||||
{ label: '运行中', value: 2 },
|
||||
{ label: '已完成', value: 3 },
|
||||
{ label: '任务检查未通过', value: 4 },
|
||||
{ label: '检查未通过', value: 4 },
|
||||
]);
|
||||
const releaseTypeList = ref<OptionItem[]>([
|
||||
{ label: '持续释放', value: 1 },
|
||||
|
|
@ -418,6 +419,12 @@ function getDetail(id: string) {
|
|||
});
|
||||
}
|
||||
function viewDetail(row: any) {
|
||||
if (row.id) {
|
||||
uploadButtonShow.value = true
|
||||
} else {
|
||||
uploadButtonShow.value = false
|
||||
}
|
||||
|
||||
viewDetailVisible.value = true;
|
||||
getDetail(form.value?.id || row.id);
|
||||
}
|
||||
|
|
@ -440,13 +447,22 @@ function getData(id: string) {
|
|||
});
|
||||
}
|
||||
// 置顶和取消置顶
|
||||
const pinToTopTask = (row: any) => {
|
||||
pinToTopOrUnpin({ id: row.id }, (res) => {
|
||||
if (res.code === 200) {
|
||||
ElMessage.success('操作成功!');
|
||||
getList();
|
||||
}
|
||||
});
|
||||
const pinToTopTask = (row: any, isPin: boolean) => {
|
||||
if (!isPin) {
|
||||
pinToTop({ taskId: row.id }, (res) => {
|
||||
if (res.code === 200) {
|
||||
ElMessage.success('置顶成功!');
|
||||
getList();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
unpin({ taskId: row.id }, (res) => {
|
||||
if (res.code === 200) {
|
||||
ElMessage.success('取消置顶成功!');
|
||||
getList();
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
// 执行重建任务
|
||||
function runTaskId(row: any) {
|
||||
|
|
@ -890,6 +906,9 @@ onMounted(() => {
|
|||
v-model="viewDetailVisible" :title="t('view')" width="61vw" class="view-dialog"
|
||||
@close="viewDetailVisible = false"
|
||||
>
|
||||
<!--<ElFormItem :label="t('upload')" style="width: 40%;">-->
|
||||
<ElButton v-if="uploadButtonShow" type="default" class="custom-btn" style="margin-bottom: 6px;" @click="listUpload">{{ t('upload') }}abc</ElButton>
|
||||
<!--</ElFormItem>-->
|
||||
<Table
|
||||
class="table" :show-index="true" :table-data="detailData" :table-header="detailColumns"
|
||||
:select-options="selectOptions" :page="pageNum"
|
||||
|
|
@ -909,7 +928,7 @@ onMounted(() => {
|
|||
</ElCol>
|
||||
<ElCol :span="5">
|
||||
<ElFormItem :label="t('taskStatus')" style="margin-bottom: 0;">
|
||||
<ElSelect v-model="queryForm.taskStatus" :placeholder="t('pleaseSelect')" @change="handleTaskStatusChange">
|
||||
<ElSelect v-model="queryForm.taskStatus" clearable :placeholder="t('pleaseSelect')" @change="handleTaskStatusChange">
|
||||
<ElOption v-for="item in taskStatusList" :key="item.value" :label="item.label" :value="item.value" style="background-color: transparent;" />
|
||||
</ElSelect>
|
||||
</ElFormItem>
|
||||
|
|
@ -950,33 +969,33 @@ onMounted(() => {
|
|||
@pagination="handlePagination"
|
||||
>
|
||||
<template #operate="{ scope }">
|
||||
<ElButton v-if="scope.taskStatus === 1" type="text" class="table-btn" @click="pinToTopTask(scope)">
|
||||
{{ true ? t('pinToTop') : t('unpin') }}
|
||||
<ElButton v-if="scope.taskStatus === 1" type="text" class="table-btn" @click="pinToTopTask(scope, scope.topTask)">
|
||||
{{ !scope.topTask ? t('pinToTop') : t('unpin') }}
|
||||
</ElButton>
|
||||
<ElButton v-else type="text" style="color:#588589;cursor:no-drop">
|
||||
{{ true ? t('pinToTop') : t('unpin') }}
|
||||
{{ !scope.topTask ? t('pinToTop') : t('unpin') }}
|
||||
</ElButton>
|
||||
<!-- -1执行失败,0未开始,1等待中,2运行中,3已完成,4任务检查未通过-->
|
||||
<!-- -1执行失败,0未开始,1等待中,2运行中,3已完成,4检查未通过-->
|
||||
<!--任务处于等待中,运行中状态时,不能编辑和删除;处于未开始,已完成,检查未通过时可以删除;处于已完成状态时也不能编辑-->
|
||||
<ElButton v-if="scope.taskStatus === 0" type="text" class="table-btn" @click="runTaskId(scope)">
|
||||
<ElButton v-if="scope.taskStatus === -1 || scope.taskStatus === 0 || scope.taskStatus === 4" type="text" class="table-btn" @click="runTaskId(scope)">
|
||||
{{ t('start') }}
|
||||
</ElButton>
|
||||
<ElButton v-else type="text" style="color:#588589;cursor:no-drop">
|
||||
{{ t('start') }}
|
||||
</ElButton>
|
||||
<ElButton v-if="scope.taskStatus === 2" type="text" class="table-btn" @click="viewTask(scope)">
|
||||
<ElButton v-if="scope.taskStatus === 3" type="text" class="table-btn" @click="viewTask(scope)">
|
||||
{{ t('view') }}
|
||||
</ElButton>
|
||||
<ElButton v-else type="text" style="color:#588589;cursor:no-drop">
|
||||
{{ t('view') }}
|
||||
</ElButton>
|
||||
<ElButton v-if="scope.taskStatus !== 1 && scope.taskStatus !== 2 && scope.taskStatus !== 3" type="text" class="table-btn" @click="editTask(scope)">
|
||||
<ElButton v-if="scope.taskStatus === -1 || scope.taskStatus === 0 || scope.taskStatus === 4" type="text" class="table-btn" @click="editTask(scope)">
|
||||
{{ t('edit') }}
|
||||
</ElButton>
|
||||
<ElButton v-else type="text" style="color:#588589;cursor:no-drop">
|
||||
{{ t('edit') }}
|
||||
</ElButton>
|
||||
<ElButton v-if="scope.taskStatus == 0 || scope.taskStatus === 3 || scope.taskStatus === 4" type="text" class="table-btn" @click="deleteTask(scope)">
|
||||
<ElButton v-if="scope.taskStatus === -1 || scope.taskStatus === 0 || scope.taskStatus === 3 || scope.taskStatus === 4" type="text" class="table-btn" @click="deleteTask(scope)">
|
||||
{{ t('delete') }}
|
||||
</ElButton>
|
||||
<ElButton v-else type="text" style="color:#588589;cursor:no-drop">
|
||||
|
|
@ -988,10 +1007,16 @@ onMounted(() => {
|
|||
<ElButton v-else type="text" style="color:#588589;cursor:no-drop">
|
||||
{{ t('upload') }}
|
||||
</ElButton>-->
|
||||
<ElButton type="text" class="table-btn" @click="getLog(scope)">
|
||||
<ElButton v-if="scope.taskStatus === -1 || scope.taskStatus === 0 || scope.taskStatus === 1 || scope.taskStatus === 2 || scope.taskStatus === 3 || scope.taskStatus === 4" type="text" class="table-btn" @click="getLog(scope)">
|
||||
{{ t('operationLog') }}
|
||||
</ElButton>
|
||||
<ElButton type="text" class="table-btn" @click="viewDetail(scope)">
|
||||
<ElButton v-else type="text" style="color:#588589;cursor:no-drop">
|
||||
{{ t('operationLog') }}
|
||||
</ElButton>
|
||||
<ElButton v-if="scope.taskStatus === -1 || scope.taskStatus === 0 || scope.taskStatus === 1 || scope.taskStatus === 2 || scope.taskStatus === 3 || scope.taskStatus === 4" type="text" class="table-btn" @click="viewDetail(scope)">
|
||||
{{ t('monitoringData') }}
|
||||
</ElButton>
|
||||
<ElButton v-else type="text" style="color:#588589;cursor:no-drop">
|
||||
{{ t('monitoringData') }}
|
||||
</ElButton>
|
||||
</template>
|
||||
|
|
@ -1014,7 +1039,7 @@ onMounted(() => {
|
|||
<ElFormItem :label="t('taskName')" prop="taskName" style="width: 40%;">
|
||||
<ElInput v-model="detailForm.taskName" :placeholder="t('pleaseEnter')" />
|
||||
</ElFormItem>
|
||||
<ElFormItem :label="t('taskStatus')" prop="taskStatus" style="width: 40%;">
|
||||
<ElFormItem v-if="!(taskFlag==='add' || taskFlag==='edit')" :label="t('taskStatus')" prop="taskStatus" style="width: 40%;">
|
||||
<ElSelect v-model="detailForm.taskStatus" :placeholder="t('pleaseSelect')" disabled>
|
||||
<ElOption v-for="item in taskStatusList" :key="item.value" :label="item.label" :value="item.value" />
|
||||
</ElSelect>
|
||||
|
|
@ -1087,10 +1112,6 @@ onMounted(() => {
|
|||
<ElInput v-model="detailForm.sourceStrength" type="number" :placeholder="t('pleaseEnter')" />
|
||||
</ElFormItem>
|
||||
|
||||
<ElFormItem :label="t('upload')" style="width: 40%;">
|
||||
<ElButton type="default" class="custom-btn" @click="listUpload">{{ t('upload') }}</ElButton>
|
||||
</ElFormItem>
|
||||
|
||||
<!-- <ElFormItem label="耗时">
|
||||
<ElInput v-model="detailForm.time" :placeholder="t('pleaseEnter')" />
|
||||
</ElFormItem> -->
|
||||
|
|
|
|||
|
|
@ -81,16 +81,33 @@ export async function delSiteAndReleaseData(params: any, callback?: (data: any)
|
|||
}
|
||||
|
||||
/**
|
||||
* @method 置顶任务和取消置顶
|
||||
* @method 置顶任务
|
||||
* @param {string} [params.id] - id
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
export async function pinToTopOrUnpin(params: {
|
||||
id: string;
|
||||
export async function pinToTop(params: {
|
||||
taskId: string;
|
||||
}, callback?: (data: any) => void): Promise<any> {
|
||||
const response = await request({
|
||||
url: `${serverIp}${baseURL}/source/uuuuuuuuuu`,
|
||||
method: 'GET',
|
||||
url: `${serverIp}${baseURL}/transportTask/setTaskTop`,
|
||||
method: 'PUT',
|
||||
params,
|
||||
});
|
||||
// 执行回调(如果存在)
|
||||
callback?.(response);
|
||||
}
|
||||
|
||||
/**
|
||||
* @method 取消置顶
|
||||
* @param {string} [params.id] - id
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
export async function unpin(params: {
|
||||
taskId: string;
|
||||
}, callback?: (data: any) => void): Promise<any> {
|
||||
const response = await request({
|
||||
url: `${serverIp}${baseURL}/transportTask/setCancelTaskTop`,
|
||||
method: 'PUT',
|
||||
params,
|
||||
});
|
||||
// 执行回调(如果存在)
|
||||
|
|
@ -428,3 +445,19 @@ export async function importFile(
|
|||
callback?.(response.result);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取gif
|
||||
*/
|
||||
export async function getGif(param: any, callback?: (data: any) => void): Promise<any> {
|
||||
const response = await request({
|
||||
url: `${serverIp}${baseURL}/transportResult/getTaskGifAddr`,
|
||||
method: 'GET',
|
||||
params: param,
|
||||
});
|
||||
|
||||
// 执行回调(如果存在)
|
||||
if (callback && typeof callback === 'function') {
|
||||
callback(response.result);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -235,11 +235,13 @@ export async function targetSourceUser(params: any, callback?: (data: any) => vo
|
|||
export async function createTargetTables(
|
||||
data: any,
|
||||
callback?: (data: any) => void,
|
||||
timeout?: number,
|
||||
): Promise<any> {
|
||||
const response = await request({
|
||||
url: `${serverIp}${baseURL}/syncStrategy/createTargetTables`,
|
||||
method: 'POST',
|
||||
data,
|
||||
timeout: timeout || 300000
|
||||
});
|
||||
|
||||
if (response.success && response.code === 200) {
|
||||
|
|
|
|||
|
|
@ -211,16 +211,33 @@ export async function deleteTask(params: {
|
|||
}
|
||||
|
||||
/**
|
||||
* @method 置顶任务和取消置顶
|
||||
* @method 置顶任务
|
||||
* @param {string} [params.id] - id
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
export async function pinToTopOrUnpin(params: {
|
||||
id: string;
|
||||
export async function pinToTop(params: {
|
||||
taskId: string;
|
||||
}, callback?: (data: any) => void): Promise<any> {
|
||||
const response = await request({
|
||||
url: `${serverIp}${baseURL}/source/xxxxxxxxx`,
|
||||
method: 'GET',
|
||||
url: `${serverIp}${baseURL}/source/setTaskTop`,
|
||||
method: 'PUT',
|
||||
params,
|
||||
});
|
||||
// 执行回调(如果存在)
|
||||
callback?.(response);
|
||||
}
|
||||
|
||||
/**
|
||||
* @method 取消置顶
|
||||
* @param {string} [params.id] - id
|
||||
* @returns {Promise<any>}
|
||||
*/
|
||||
export async function unpin(params: {
|
||||
taskId: string;
|
||||
}, callback?: (data: any) => void): Promise<any> {
|
||||
const response = await request({
|
||||
url: `${serverIp}${baseURL}/source/setCancelTaskTop`,
|
||||
method: 'PUT',
|
||||
params,
|
||||
});
|
||||
// 执行回调(如果存在)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user