This commit is contained in:
renxiangke 2026-07-27 14:52:39 +08:00
commit bb0b951d96
16 changed files with 272 additions and 83 deletions

View File

@ -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 {

View File

@ -45,7 +45,8 @@ export interface mapRightMenu {
pointData?: () => void;
// 二三维切换
ts3D?: () => void;
// gif
gif?: () => void;
}
// 定位参数接口

View File

@ -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));

View File

@ -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>

View File

@ -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" />

View File

@ -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);
});

View File

@ -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"

View File

@ -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[]>([
// -101234
// -101234
{ 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>

View File

@ -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>

View File

@ -42,13 +42,13 @@ interface OptionItem {
value: number;
}
const taskStatusList = ref<OptionItem[]>([
// -101234
// -101234
{ 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)">

View File

@ -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>

View File

@ -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;

View File

@ -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[]>([
// -101234
// -101234
{ 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> -->

View File

@ -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);
}
}

View File

@ -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) {

View File

@ -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,
});
// 执行回调(如果存在)