fix: 任务页操作补防抖加载
This commit is contained in:
@@ -44,6 +44,9 @@ const pageSize = 20;
|
||||
const taskApplications = ref<TaskApplication[]>([]);
|
||||
const applicationsLoading = ref(false);
|
||||
const appUrlTitles = ref<Record<number, string>>({});
|
||||
const updatingApplicationId = ref<number | null>(null);
|
||||
const removingTask = ref(false);
|
||||
const weightsLoading = ref(false);
|
||||
|
||||
const selectedTask = computed(() =>
|
||||
tasks.value.find((item) => item.taskId === selectedTaskId.value) || null
|
||||
@@ -104,6 +107,8 @@ async function loadTaskApplications(taskNum: string) {
|
||||
}
|
||||
|
||||
const changeApplicationStatus = async (item: TaskApplication) => {
|
||||
if (updatingApplicationId.value !== null) return;
|
||||
updatingApplicationId.value = item.id;
|
||||
try {
|
||||
await updateTaskApplication(item.id, {
|
||||
title: item.title,
|
||||
@@ -117,6 +122,8 @@ const changeApplicationStatus = async (item: TaskApplication) => {
|
||||
if (selectedTask.value) {
|
||||
await loadTaskApplications(selectedTask.value.taskNum);
|
||||
}
|
||||
} finally {
|
||||
updatingApplicationId.value = null;
|
||||
}
|
||||
};
|
||||
|
||||
@@ -203,6 +210,8 @@ const removeTask = async () => {
|
||||
ElMessage.warning("请先选择一个任务");
|
||||
return;
|
||||
}
|
||||
if (removingTask.value) return;
|
||||
removingTask.value = true;
|
||||
const target = selectedTask.value;
|
||||
try {
|
||||
await ElMessageBox.confirm(`确定删除任务「${target.title}」?关联的学习会话、学习报告、应用场景等数据将被一并删除。`, "确认删除", {
|
||||
@@ -210,15 +219,17 @@ const removeTask = async () => {
|
||||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
});
|
||||
} catch {
|
||||
return; // 用户取消
|
||||
}
|
||||
const res = await request.del(`/tasks/${target.taskId}`, {});
|
||||
if (res.code === 200) {
|
||||
ElMessage.success(`任务 ${target.title} 删除成功`);
|
||||
tasks.value = tasks.value.filter((item) => item.taskId !== target.taskId);
|
||||
selectedTaskId.value = tasks.value[0]?.taskId ?? null;
|
||||
}
|
||||
} catch {
|
||||
// 用户取消或删除失败,保持页面状态
|
||||
} finally {
|
||||
removingTask.value = false;
|
||||
}
|
||||
};
|
||||
|
||||
// ============ 优先级权重配置 ============
|
||||
@@ -237,6 +248,8 @@ const weightsSum = computed(() =>
|
||||
);
|
||||
|
||||
const openWeightsDialog = async () => {
|
||||
if (weightsLoading.value) return;
|
||||
weightsLoading.value = true;
|
||||
try {
|
||||
const res = await getPriorityWeights();
|
||||
const data = res?.data;
|
||||
@@ -248,8 +261,10 @@ const openWeightsDialog = async () => {
|
||||
}
|
||||
} catch {
|
||||
// 读取失败时保持默认值
|
||||
}
|
||||
} finally {
|
||||
weightsLoading.value = false;
|
||||
weightsDialogVisible.value = true;
|
||||
}
|
||||
};
|
||||
|
||||
const saveWeights = async () => {
|
||||
@@ -385,6 +400,8 @@ onMounted(() => {
|
||||
v-model="item.status"
|
||||
size="small"
|
||||
class="application-status"
|
||||
:loading="updatingApplicationId === item.id"
|
||||
:disabled="updatingApplicationId !== null"
|
||||
@change="changeApplicationStatus(item)"
|
||||
>
|
||||
<el-option
|
||||
@@ -413,8 +430,8 @@ onMounted(() => {
|
||||
<el-button type="success" size="large" @click="startTask">开始任务</el-button>
|
||||
<el-button @click="addTask">添加任务</el-button>
|
||||
<el-button @click="changeTask">更新任务</el-button>
|
||||
<el-button @click="openWeightsDialog">权重配置</el-button>
|
||||
<el-button type="danger" @click="removeTask">删除任务</el-button>
|
||||
<el-button :loading="weightsLoading" @click="openWeightsDialog">权重配置</el-button>
|
||||
<el-button type="danger" :loading="removingTask" @click="removeTask">删除任务</el-button>
|
||||
</aside>
|
||||
</main>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user