fix: 修复任务总览的状态不能自动更新的问题
This commit is contained in:
@@ -107,17 +107,41 @@ const toggleScript = (scriptId: string) => {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取状态颜色
|
// 获取状态颜色 - 使用更全面的映射和后备逻辑
|
||||||
const getStatusColor = (status: string) => {
|
const getStatusColor = (status: string) => {
|
||||||
const statusColorMap: Record<string, string> = {
|
// 精确匹配优先
|
||||||
|
const exactStatusColorMap: Record<string, string> = {
|
||||||
'等待': 'orange',
|
'等待': 'orange',
|
||||||
|
'排队': 'orange',
|
||||||
|
'挂起': 'orange',
|
||||||
'运行中': 'blue',
|
'运行中': 'blue',
|
||||||
|
'运行': 'blue',
|
||||||
|
'进行中': 'blue',
|
||||||
|
'执行中': 'blue',
|
||||||
'已完成': 'green',
|
'已完成': 'green',
|
||||||
|
'完成': 'green',
|
||||||
|
'成功': 'green',
|
||||||
'失败': 'red',
|
'失败': 'red',
|
||||||
|
'异常': 'red',
|
||||||
|
'错误': 'red',
|
||||||
'暂停': 'gray',
|
'暂停': 'gray',
|
||||||
'取消': 'default'
|
'取消': 'default',
|
||||||
|
'停止': 'default'
|
||||||
}
|
}
|
||||||
return statusColorMap[status] || 'default'
|
|
||||||
|
// 先尝试精确匹配
|
||||||
|
if (exactStatusColorMap[status]) {
|
||||||
|
return exactStatusColorMap[status]
|
||||||
|
}
|
||||||
|
|
||||||
|
// 使用正则表达式进行模糊匹配(作为后备)
|
||||||
|
if (/成功|完成|已完成/.test(status)) return 'green'
|
||||||
|
if (/失败|错误|异常/.test(status)) return 'red'
|
||||||
|
if (/等待|排队|挂起/.test(status)) return 'orange'
|
||||||
|
if (/进行|执行|运行/.test(status)) return 'blue'
|
||||||
|
if (/暂停|停止/.test(status)) return 'gray'
|
||||||
|
|
||||||
|
return 'default'
|
||||||
}
|
}
|
||||||
|
|
||||||
// 初始化时展开所有脚本
|
// 初始化时展开所有脚本
|
||||||
|
|||||||
@@ -31,7 +31,9 @@ interface WSMessage {
|
|||||||
type: string
|
type: string
|
||||||
id: string
|
id: string
|
||||||
data: {
|
data: {
|
||||||
task_dict: Script[]
|
task_dict?: Script[]
|
||||||
|
user_list?: User[]
|
||||||
|
task_list?: any[]
|
||||||
}
|
}
|
||||||
fullMessage?: any
|
fullMessage?: any
|
||||||
}
|
}
|
||||||
@@ -40,23 +42,84 @@ interface WSMessage {
|
|||||||
const taskData = ref<Script[]>([])
|
const taskData = ref<Script[]>([])
|
||||||
const taskTreeRef = ref()
|
const taskTreeRef = ref()
|
||||||
|
|
||||||
// 计算总任务数量
|
|
||||||
const totalTaskCount = computed(() => {
|
|
||||||
return taskData.value.reduce((total, script) => {
|
|
||||||
return total + (script.user_list?.length || 0)
|
|
||||||
}, 0)
|
|
||||||
})
|
|
||||||
|
|
||||||
// 处理 WebSocket 消息
|
// 处理 WebSocket 消息
|
||||||
const handleWSMessage = (message: WSMessage) => {
|
const handleWSMessage = (message: WSMessage) => {
|
||||||
console.log('TaskOverviewPanel 收到 WebSocket 消息:', message)
|
console.log('TaskOverviewPanel 收到 WebSocket 消息:', message)
|
||||||
if (message.type === 'Update' && message.data?.task_dict) {
|
|
||||||
console.log('更新任务数据:', message.data.task_dict)
|
if (message.type === 'Update') {
|
||||||
taskData.value = message.data.task_dict
|
// 处理 task_dict 数据(完整的脚本和用户数据)
|
||||||
console.log('设置后的 taskData:', taskData.value)
|
if (message.data?.task_dict) {
|
||||||
// 更新展开状态
|
console.log('更新任务数据 (task_dict):', message.data.task_dict)
|
||||||
if (taskTreeRef.value) {
|
taskData.value = message.data.task_dict
|
||||||
taskTreeRef.value.updateExpandedScripts()
|
console.log('设置后的 taskData:', taskData.value)
|
||||||
|
|
||||||
|
// 更新展开状态
|
||||||
|
if (taskTreeRef.value) {
|
||||||
|
taskTreeRef.value.updateExpandedScripts()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理 user_list 数据(只有用户状态更新)
|
||||||
|
else if (message.data?.user_list && Array.isArray(message.data.user_list)) {
|
||||||
|
console.log('更新用户列表 (user_list):', message.data.user_list)
|
||||||
|
|
||||||
|
// 如果还没有脚本数据,创建一个默认脚本来包含这些用户
|
||||||
|
if (taskData.value.length === 0) {
|
||||||
|
taskData.value = [{
|
||||||
|
script_id: 'default-script',
|
||||||
|
name: '新 MAA 脚本', // 使用你提供的脚本名称
|
||||||
|
status: '运行中',
|
||||||
|
user_list: message.data.user_list
|
||||||
|
}]
|
||||||
|
} else {
|
||||||
|
// 更新现有脚本的用户列表
|
||||||
|
// 假设所有用户都属于第一个脚本(根据你的使用场景)
|
||||||
|
if (taskData.value[0]) {
|
||||||
|
taskData.value[0].user_list = message.data.user_list
|
||||||
|
// 根据用户状态更新脚本状态
|
||||||
|
const userStatuses = message.data.user_list.map(u => u.status)
|
||||||
|
if (userStatuses.includes('异常') || userStatuses.includes('失败')) {
|
||||||
|
taskData.value[0].status = '异常'
|
||||||
|
} else if (userStatuses.includes('运行中')) {
|
||||||
|
taskData.value[0].status = '运行中'
|
||||||
|
} else if (userStatuses.every(s => s === '已完成')) {
|
||||||
|
taskData.value[0].status = '已完成'
|
||||||
|
} else {
|
||||||
|
taskData.value[0].status = '等待'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('更新后的 taskData:', taskData.value)
|
||||||
|
|
||||||
|
// 更新展开状态
|
||||||
|
if (taskTreeRef.value) {
|
||||||
|
taskTreeRef.value.updateExpandedScripts()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 处理 task_list 数据
|
||||||
|
else if (message.data?.task_list && Array.isArray(message.data.task_list)) {
|
||||||
|
console.log('更新任务列表 (task_list):', message.data.task_list)
|
||||||
|
const convertedData = message.data.task_list.map((task: any) => ({
|
||||||
|
script_id: task.id || task.script_id || `task_${Date.now()}`,
|
||||||
|
name: task.name || '未知任务',
|
||||||
|
status: task.status || '等待',
|
||||||
|
user_list: task.user_list || []
|
||||||
|
}))
|
||||||
|
taskData.value = convertedData
|
||||||
|
console.log('转换后的 taskData:', taskData.value)
|
||||||
|
|
||||||
|
// 更新展开状态
|
||||||
|
if (taskTreeRef.value) {
|
||||||
|
taskTreeRef.value.updateExpandedScripts()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
|
console.log('收到未识别格式的更新数据:', message.data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -330,10 +330,10 @@ export function useSchedulerLogic() {
|
|||||||
|
|
||||||
// 处理task_dict初始化消息
|
// 处理task_dict初始化消息
|
||||||
if (data.task_dict && Array.isArray(data.task_dict)) {
|
if (data.task_dict && Array.isArray(data.task_dict)) {
|
||||||
// 初始化任务队列
|
// 初始化任务队列 - 保持原始状态
|
||||||
const newTaskQueue = data.task_dict.map((item: any) => ({
|
const newTaskQueue = data.task_dict.map((item: any) => ({
|
||||||
name: item.name || '未知任务',
|
name: item.name || '未知任务',
|
||||||
status: '等待',
|
status: item.status || '等待', // 使用实际状态,而不是强制设置为等待
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// 初始化用户队列(仅包含运行状态下的用户)
|
// 初始化用户队列(仅包含运行状态下的用户)
|
||||||
|
|||||||
Reference in New Issue
Block a user