fix: 调度中心界面小范围优化
This commit is contained in:
@@ -31,22 +31,17 @@
|
||||
<div class="control-spacer"></div>
|
||||
<a-space size="middle">
|
||||
<a-button
|
||||
@click="onStart"
|
||||
type="primary"
|
||||
:disabled="disabled || !localSelectedTaskId || !localSelectedMode"
|
||||
@click="onAction"
|
||||
:type="status === '运行' ? 'default' : 'primary'"
|
||||
:danger="status === '运行'"
|
||||
:disabled="status === '运行' ? false : (!localSelectedTaskId || !localSelectedMode || disabled)"
|
||||
size="large"
|
||||
>
|
||||
<template #icon><PlayCircleOutlined /></template>
|
||||
开始执行
|
||||
</a-button>
|
||||
<a-button
|
||||
@click="onStop"
|
||||
:disabled="status !== '运行'"
|
||||
danger
|
||||
size="large"
|
||||
>
|
||||
<template #icon><StopOutlined /></template>
|
||||
停止任务
|
||||
<template #icon>
|
||||
<StopOutlined v-if="status === '运行'" />
|
||||
<PlayCircleOutlined v-else />
|
||||
</template>
|
||||
{{ status === '运行' ? '停止任务' : '开始执行' }}
|
||||
</a-button>
|
||||
</a-space>
|
||||
</div>
|
||||
@@ -55,7 +50,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed, h, ref, watch } from 'vue'
|
||||
import { computed, ref, watch } from 'vue'
|
||||
import { PlayCircleOutlined, StopOutlined } from '@ant-design/icons-vue'
|
||||
import { TaskCreateIn } from '@/api/models/TaskCreateIn'
|
||||
import type { ComboBoxItem } from '@/api/models/ComboBoxItem'
|
||||
@@ -124,12 +119,13 @@ const onModeChange = (value: TaskCreateIn.mode) => {
|
||||
emit('update:selectedMode', value)
|
||||
}
|
||||
|
||||
const onStart = () => {
|
||||
emit('start')
|
||||
}
|
||||
|
||||
const onStop = () => {
|
||||
emit('stop')
|
||||
// 合并的按钮事件处理
|
||||
const onAction = () => {
|
||||
if (props.status === '运行') {
|
||||
emit('stop')
|
||||
} else {
|
||||
emit('start')
|
||||
}
|
||||
}
|
||||
|
||||
// 任务选项过滤
|
||||
|
||||
@@ -242,7 +242,8 @@ export function useSchedulerLogic() {
|
||||
|
||||
// 不再取消订阅,保持WebSocket连接以便接收结束信号
|
||||
// 只需发送停止请求,等待后端通过WebSocket发送结束信号
|
||||
message.success('已发送停止任务请求,等待任务完成确认')
|
||||
// 移除了提示消息"已发送停止任务请求,等待任务完成确认"
|
||||
// 因为任务状态变更必须由明确外部信号驱动,不应该使用提示消息来表示等待状态
|
||||
saveTabsToStorage(schedulerTabs.value)
|
||||
} catch (error) {
|
||||
console.error('停止任务失败:', error)
|
||||
@@ -273,13 +274,6 @@ export function useSchedulerLogic() {
|
||||
return
|
||||
}
|
||||
|
||||
// 处理通过Info类型包装的Signal消息
|
||||
if (type === 'Info' && data && data.title === 'Signal' && data.data) {
|
||||
console.log('[Scheduler] 处理通过Info包装的Signal消息:', data.data)
|
||||
handleSignalMessage(tab, data.data)
|
||||
return
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
case 'Update':
|
||||
console.log('[Scheduler] 处理Update消息:', data)
|
||||
@@ -318,26 +312,27 @@ export function useSchedulerLogic() {
|
||||
}
|
||||
|
||||
const handleUpdateMessage = (tab: SchedulerTab, data: any) => {
|
||||
// 处理task_dict初始化消息
|
||||
// 直接使用所有状态信息,不进行额外初始化操作
|
||||
// 按照层级结构处理任务和用户队列
|
||||
if (data.task_dict && Array.isArray(data.task_dict)) {
|
||||
// 初始化任务队列
|
||||
// 处理任务队列
|
||||
const newTaskQueue = data.task_dict.map((item: any) => ({
|
||||
name: item.name || '未知任务',
|
||||
status: '等待',
|
||||
status: item.status || '未知',
|
||||
}));
|
||||
|
||||
// 初始化用户队列(仅包含运行状态下的用户)
|
||||
// 处理用户队列,按照层级结构处理
|
||||
// 用户是任务的子级,需要保留任务与用户之间的关联关系
|
||||
const newUserQueue: QueueItem[] = [];
|
||||
data.task_dict.forEach((taskItem: any) => {
|
||||
if (taskItem.user_list && Array.isArray(taskItem.user_list)) {
|
||||
taskItem.user_list.forEach((user: any) => {
|
||||
// 只有在用户状态为运行时才添加到用户队列中
|
||||
if (user.status === '运行') {
|
||||
newUserQueue.push({
|
||||
name: `${taskItem.name}-${user.name}`,
|
||||
status: user.status,
|
||||
});
|
||||
}
|
||||
// 用户作为任务的子级,使用"任务名-用户名"格式保持关联关系
|
||||
// 这样TaskOverviewPanel组件可以通过前缀匹配正确构建树形结构
|
||||
newUserQueue.push({
|
||||
name: `${taskItem.name}-${user.name}`,
|
||||
status: user.status || '未知',
|
||||
});
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -426,7 +421,7 @@ export function useSchedulerLogic() {
|
||||
tab.websocketId = null
|
||||
}
|
||||
|
||||
notification.success({ message: '任务完成', description: data.Accomplish })
|
||||
message.success('任务完成')
|
||||
checkAllTasksCompleted()
|
||||
saveTabsToStorage(schedulerTabs.value)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user