From f7ad95439053af6e89e04a2b669e16b6408ece25 Mon Sep 17 00:00:00 2001 From: haoxuan <haoxuan> Date: 星期二, 07 十一月 2023 17:02:15 +0800 Subject: [PATCH] 更新加载状态问题 --- src/stores/tasks.ts | 77 ++++++++++++++++++++++++++++---------- 1 files changed, 56 insertions(+), 21 deletions(-) diff --git a/src/stores/tasks.ts b/src/stores/tasks.ts index 8f8599d..e115738 100644 --- a/src/stores/tasks.ts +++ b/src/stores/tasks.ts @@ -25,14 +25,66 @@ offset: 0, limit: 3 } - getTaskList(params) + return getTaskList(params) .then((res) => { channels.value = res.data + + // 棣栨鑾峰彇閫氶亾鏁版嵁鏃惰嚜鍔ㄩ�変腑绗竴涓换鍔� + if (!activeTask?.value) { + selectFirstTask(channels.value) + } }) .catch((err) => { console.error(err) channels.value = [] }) + } + + function selectFirstTask(channels: TasksGroupByChannel) { + const firstNotEmptyChannel = Object.entries(channels).find((ele) => { + const taskList = (ele[1] as TasksResponse)?.Tasks + + return !!taskList.length + }) + + if (firstNotEmptyChannel) { + const channelNumber = +firstNotEmptyChannel[0] + activeTask.value = channels[channelNumber].Tasks[0] + } + } + + /** + * 鏁版嵁鍔犺浇瀹屾垚鍚庤嚜鍔ㄩ�変腑涓�涓换鍔� + */ + function autoSelectTask(channel: number) { + const currentChannelTaskList = channels.value[channel].Tasks + if (currentChannelTaskList?.length) { + activeTask.value = currentChannelTaskList[0] + } else { + const firstNotEmptyChannel = Object.entries(channels.value).find((ele) => { + const taskList = (ele[1] as TasksResponse)?.Tasks + + return !!taskList.length + }) + + if (firstNotEmptyChannel) { + const channelNumber = +firstNotEmptyChannel[0] + activeTask.value = channels.value[channelNumber].Tasks[0] + } + } + } + + /** + * 鍒锋柊鎵�鏈夋暟鎹� + */ + function reloadChannel(channel: number) { + getChannels(currentType.value).then(() => { + autoSelectTask(channel) + }) + } + + function reloadAllData() { + getChannels(currentType.value) } function moreChannelTasksBtn(channelNumber: number) { @@ -75,32 +127,15 @@ activeTask.value = task } - const requestParamsMap = ref<{ - [channel: number]: TaskListParams - }>({}) - function getParamsByChannel(channel: number) { - return ( - requestParamsMap.value[channel] ?? { - type: 1, - offset: 0, - limit: 3 - } - ) - } - - function setParamsByChannel(channel: number, params: TaskListParams) { - requestParamsMap.value[channel] = params - } return { channels, getChannels, moreBtnStatus, activeTask, + reloadChannel, setActiveTask, - requestParamsMap, - getParamsByChannel, - setParamsByChannel, moreChannelTasksBtn, - foldChannelTasksBtn + foldChannelTasksBtn, + reloadAllData } }) -- Gitblit v1.8.0