From a547e5c34b4a17885d0cd44bef8147d7246b17a0 Mon Sep 17 00:00:00 2001 From: Aqr-K <95741669+Aqr-K@users.noreply.github.com> Date: Thu, 26 Sep 2024 20:24:28 +0800 Subject: [PATCH] feat: Add new card with duplicate name judgment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 给添加新卡片时,自动生成的名称增加一层重名判断,避免出现重名。 - 目录卡片特化处理,在保存时,增加一层重名检查。 --- src/views/setting/AccountSettingDirectory.vue | 11 ++++++++++- src/views/setting/AccountSettingRule.vue | 18 +++++++++++++++--- src/views/setting/AccountSettingSystem.vue | 12 ++++++++++-- 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/views/setting/AccountSettingDirectory.vue b/src/views/setting/AccountSettingDirectory.vue index 5bd3723c..e09b22e3 100644 --- a/src/views/setting/AccountSettingDirectory.vue +++ b/src/views/setting/AccountSettingDirectory.vue @@ -81,6 +81,11 @@ async function loadDirectories() { async function saveDirectories() { orderDirectoryCards() try { + const names = directories.value.map(item => item.name) + if (new Set(names).size !== names.length) { + $toast.error('存在重复目录名称!无法保存,请修改!') + return + } const result: { [key: string]: any } = await api.post('system/setting/Directories', directories.value) if (result.success) { $toast.success('目录设置保存成功') @@ -93,8 +98,12 @@ async function saveDirectories() { // 添加媒体库目录 function addDirectory() { + let name = `目录${directories.value.length + 1}`; + while (directories.value.some(item => item.name === name)) { + name = `目录${parseInt(name.split('目录')[1]) + 1}`; + } directories.value.push({ - name: `目录${directories.value.length + 1}`, + name: name, storage: 'local', download_path: '', priority: -1, diff --git a/src/views/setting/AccountSettingRule.vue b/src/views/setting/AccountSettingRule.vue index 652cb820..dd0d3f70 100644 --- a/src/views/setting/AccountSettingRule.vue +++ b/src/views/setting/AccountSettingRule.vue @@ -52,9 +52,17 @@ async function saveCustomRules() { // 添加自定义规则 function addCustomRule() { + let id = `RULE${customRules.value.length + 1}`; + while (customRules.value.some(item => item.id === id)) { + id = `RULE${parseInt(id.split('RULE')[1]) + 1}`; + } + let name = `规则${customRules.value.length + 1}`; + while (customRules.value.some(item => item.name === name)) { + name = `规则${parseInt(name.split('规则')[1]) + 1}`; + } customRules.value.push({ - id: `RULE${customRules.value.length + 1}`, - name: `规则${customRules.value.length + 1}`, + id: id, + name: name, include: '', exclude: '', }) @@ -89,8 +97,12 @@ async function saveFilterRuleGroups() { // 添加规则组 function addFilterRuleGroup() { + let name = `规则组${filterRuleGroups.value.length + 1}`; + while (filterRuleGroups.value.some(item => item.name === name)) { + name = `规则组${parseInt(name.split('规则组')[1]) + 1}`; + } filterRuleGroups.value.push({ - name: `规则组${filterRuleGroups.value.length + 1}`, + name: name, rule_string: '', media_type: '', category: '', diff --git a/src/views/setting/AccountSettingSystem.vue b/src/views/setting/AccountSettingSystem.vue index 174366cc..a7279ef9 100644 --- a/src/views/setting/AccountSettingSystem.vue +++ b/src/views/setting/AccountSettingSystem.vue @@ -113,8 +113,12 @@ async function saveSystemSetting() { // 添加下载器 function addDownloader(downloader: string) { + let name = `下载器${downloaders.value.length + 1}`; + while (downloaders.value.some(item => item.name === name)) { + name = `下载器${parseInt(name.split('下载器')[1]) + 1}`; + } downloaders.value.push({ - name: `下载器${downloaders.value.length + 1}`, + name: name, type: downloader, default: false, enabled: false, @@ -136,8 +140,12 @@ function onDownloaderChange(downloader: DownloaderConf) { // 添加媒体服务器 function addMediaServer(mediaserver: string) { + let name = `服务器${mediaServers.value.length + 1}`; + while (mediaServers.value.some(item => item.name === name)) { + name = `服务器${parseInt(name.split('服务器')[1]) + 1}`; + } mediaServers.value.push({ - name: `服务器${mediaServers.value.length + 1}`, + name: name, type: mediaserver, enabled: false, config: {},