From 46b07fcdac590fd96d6584e17ab7c2832e6727cb Mon Sep 17 00:00:00 2001 From: x1ao4 Date: Sun, 14 Sep 2025 18:22:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=BB=E5=8A=A1=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E7=BB=A7=E6=89=BF=E9=80=BB=E8=BE=91=EF=BC=8C=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=8C=89=E8=A7=86=E5=9B=BE=E7=B1=BB=E5=9E=8B=E7=BB=A7?= =?UTF-8?q?=E6=89=BF=E5=AF=B9=E5=BA=94=E4=BB=BB=E5=8A=A1=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 getLastTaskByCurrentFilter() 方法,根据当前视图筛选条件获取对应类型中编号最大的任务 - 修改 addTask() 方法,使用新的筛选逻辑继承任务配置 - 修改 openCreateTaskModal() 方法,使用新的筛选逻辑继承任务配置 - 现在在剧集视图下新建任务会继承剧集类型中编号最大的任务配置,动画视图下会继承动画类型中编号最大的任务配置,以此类推 - 提升了用户在特定类型视图下新建同类任务时的操作体验 --- app/templates/index.html | 105 +++++++++++++++++++++++++++++++-------- 1 file changed, 83 insertions(+), 22 deletions(-) diff --git a/app/templates/index.html b/app/templates/index.html index 482770a..89811db 100644 --- a/app/templates/index.html +++ b/app/templates/index.html @@ -4100,11 +4100,52 @@ if (!this.tasklist || !this.tasklist.selectedType || this.tasklist.selectedType === 'all') return true; const name = task.taskname || task.task_name || ''; let contentType = ''; - const t = (this.calendar.tasks || []).find(x => (x.task_name || x.taskname) === name); - contentType = (t && t.content_type) || 'other'; + + // 优先从任务配置中读取内容类型 + if (task.content_type) { + contentType = task.content_type; + } else if (task.calendar_info && task.calendar_info.extracted && task.calendar_info.extracted.content_type) { + contentType = task.calendar_info.extracted.content_type; + } else { + // 如果任务配置中没有,则从 calendar.tasks 中查找 + const t = (this.calendar.tasks || []).find(x => (x.task_name || x.taskname) === name); + contentType = (t && t.content_type) || 'other'; + } + return contentType === this.tasklist.selectedType; } catch (e) { return true; } }, + // 获取根据当前视图筛选条件过滤后的任务中编号最大的任务 + getLastTaskByCurrentFilter() { + try { + if (!this.formData.tasklist || this.formData.tasklist.length === 0) { + return null; + } + + // 如果当前视图是"全部",返回所有任务中编号最大的任务 + if (!this.tasklist || !this.tasklist.selectedType || this.tasklist.selectedType === 'all') { + return this.formData.tasklist[this.formData.tasklist.length - 1]; + } + + // 根据当前筛选条件过滤任务 + const filteredTasks = this.formData.tasklist.filter(task => { + return this.tasklistFilterByType(task); + }); + + // 如果没有匹配的任务,返回所有任务中编号最大的任务 + if (filteredTasks.length === 0) { + return this.formData.tasklist[this.formData.tasklist.length - 1]; + } + + // 返回过滤后任务中编号最大的任务(最后一个) + return filteredTasks[filteredTasks.length - 1]; + } catch (e) { + // 出错时返回所有任务中编号最大的任务 + return this.formData.tasklist && this.formData.tasklist.length > 0 + ? this.formData.tasklist[this.formData.tasklist.length - 1] + : null; + } + }, // 计算转存进度(已转存/已播出 的百分比,取整),优先使用实时映射 getTransferProgress(task) { try { @@ -6781,16 +6822,33 @@ // 如果有上一个任务,继承保存路径和命名规则 if (this.formData.tasklist.length > 0) { - const lastTask = this.formData.tasklist[this.formData.tasklist.length - 1]; - newTask.savepath = lastTask.savepath || ""; - newTask.pattern = lastTask.pattern || ""; - - // 继承命名规则选择模式 - newTask.use_sequence_naming = lastTask.use_sequence_naming || false; - newTask.use_episode_naming = lastTask.use_episode_naming || false; - newTask.sequence_naming = lastTask.sequence_naming || ""; - newTask.episode_naming = lastTask.episode_naming || ""; - newTask.replace = lastTask.replace || ""; + // 使用新的筛选逻辑:根据当前视图筛选条件获取对应类型中编号最大的任务 + const lastTask = this.getLastTaskByCurrentFilter(); + if (lastTask) { + newTask.savepath = lastTask.savepath || ""; + newTask.pattern = lastTask.pattern || ""; + + // 继承命名规则选择模式 + newTask.use_sequence_naming = lastTask.use_sequence_naming || false; + newTask.use_episode_naming = lastTask.use_episode_naming || false; + newTask.sequence_naming = lastTask.sequence_naming || ""; + newTask.episode_naming = lastTask.episode_naming || ""; + newTask.replace = lastTask.replace || ""; + } + } + + // 根据当前视图筛选条件设置新任务的内容类型 + if (this.tasklist && this.tasklist.selectedType && this.tasklist.selectedType !== 'all') { + // 确保 calendar_info 结构存在 + if (!newTask.calendar_info) { + newTask.calendar_info = {}; + } + if (!newTask.calendar_info.extracted) { + newTask.calendar_info.extracted = {}; + } + // 设置内容类型 + newTask.calendar_info.extracted.content_type = this.tasklist.selectedType; + newTask.content_type = this.tasklist.selectedType; } // 应用全局插件配置到新任务 @@ -11514,16 +11572,19 @@ // 如果有上一个任务,继承保存路径和命名规则 if (this.formData.tasklist && this.formData.tasklist.length > 0) { - const lastTask = this.formData.tasklist[this.formData.tasklist.length - 1]; - this.createTask.taskData.savepath = lastTask.savepath || ""; - this.createTask.taskData.pattern = lastTask.pattern || ""; - this.createTask.taskData.replace = lastTask.replace || ""; - - // 继承命名规则选择模式 - this.createTask.taskData.use_sequence_naming = lastTask.use_sequence_naming || false; - this.createTask.taskData.use_episode_naming = lastTask.use_episode_naming || false; - this.createTask.taskData.sequence_naming = lastTask.sequence_naming || ""; - this.createTask.taskData.episode_naming = lastTask.episode_naming || ""; + // 使用新的筛选逻辑:根据当前视图筛选条件获取对应类型中编号最大的任务 + const lastTask = this.getLastTaskByCurrentFilter(); + if (lastTask) { + this.createTask.taskData.savepath = lastTask.savepath || ""; + this.createTask.taskData.pattern = lastTask.pattern || ""; + this.createTask.taskData.replace = lastTask.replace || ""; + + // 继承命名规则选择模式 + this.createTask.taskData.use_sequence_naming = lastTask.use_sequence_naming || false; + this.createTask.taskData.use_episode_naming = lastTask.use_episode_naming || false; + this.createTask.taskData.sequence_naming = lastTask.sequence_naming || ""; + this.createTask.taskData.episode_naming = lastTask.episode_naming || ""; + } } // 应用全局插件配置