From 7d6006d1fd4b8a9d51830eec51173ffe391f1946 Mon Sep 17 00:00:00 2001 From: fanxb Date: Thu, 13 Apr 2023 20:42:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=94=AF=E6=8C=81=E6=A0=B9=E6=8D=AE?= =?UTF-8?q?=E6=8B=93=E5=B1=95=E5=90=8D=E5=88=86=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/bo/rules/SerializationRule.ts | 147 +++++++++--------- openRenamerFront/public/index.html | 2 +- openRenamerFront/src/App.vue | 23 ++- .../components/rules/SerializationRule.vue | 28 +++- 4 files changed, 120 insertions(+), 80 deletions(-) diff --git a/openRenamerBackend/entity/bo/rules/SerializationRule.ts b/openRenamerBackend/entity/bo/rules/SerializationRule.ts index e99f116..e8dbf68 100644 --- a/openRenamerBackend/entity/bo/rules/SerializationRule.ts +++ b/openRenamerBackend/entity/bo/rules/SerializationRule.ts @@ -3,78 +3,85 @@ import FileObj from "../../vo/FileObj"; import path from 'path'; export default class InsertRule implements RuleInterface { - /** - * 开始位置 - */ - start: number; - /** - * 记录当前的值是多少 - */ - currentIndex: number; - /** - * 增量 - */ - increment: number; - /** - * 是否填充0 - */ - addZero: boolean; - /** - * 填充后长度 - */ - numLength: number; - /** - * 插入位置,front:前缀,backend:后缀,at:位置 - */ - insertType: string; - /** - * 插入的位置 - */ - insertValue: number; - /** - * 忽略拓展名 - */ - ignorePostfix: boolean; + /** + * 开始位置 + */ + start: number; + /** + * 记录当前的值是多少 + */ + currentIndexMap: Map; + /** + * 增量 + */ + increment: number; + /** + * 是否填充0 + */ + addZero: boolean; + /** + * 填充后长度 + */ + numLength: number; + /** + * 插入位置,front:前缀,backend:后缀,at:位置 + */ + insertType: string; + /** + * 插入的位置 + */ + insertValue: number; + /** + * 忽略拓展名 + */ + ignorePostfix: boolean; + /** + * 拓展名分组 + */ + postfixGroup: boolean; - constructor(data: any) { - this.start = data.start; - this.currentIndex = data.start; - this.increment = data.increment; - this.addZero = data.addZero; - this.numLength = data.numLength; - this.insertType = data.insertType; - this.insertValue = data.insertValue; - this.ignorePostfix = data.ignorePostfix; - } + constructor(data: any) { + this.start = data.start; + this.currentIndexMap = new Map(); + this.increment = data.increment; + this.addZero = data.addZero; + this.numLength = data.numLength; + this.insertType = data.insertType; + this.insertValue = data.insertValue; + this.ignorePostfix = data.ignorePostfix; + this.postfixGroup = data.postfixGroup; + } - deal(file: FileObj): void { - let length = this.currentIndex.toString().length; - let numStr = (this.addZero && this.numLength > length ? "0".repeat(this.numLength - length) : "") + this.currentIndex; - let str = this.ignorePostfix ? file.realName : file.name; - switch (this.insertType) { - case "front": - str = numStr + str; - break; - case "backend": - str = str + numStr; - break; - case "at": - str = str.substring(0, this.insertValue - 1) + numStr + str.substring(this.insertValue - 1); - break; - } - this.currentIndex += this.increment; + deal(file: FileObj): void { + let expand = this.postfixGroup ? file.expandName : ""; + let currentIndex = this.currentIndexMap.has(expand) ? this.currentIndexMap.get(expand) : this.start; + let length = currentIndex.toString().length; + let numStr = (this.addZero && this.numLength > length ? "0".repeat(this.numLength - length) : "") + currentIndex; + let str = this.ignorePostfix ? file.realName : file.name; + switch (this.insertType) { + case "front": + str = numStr + str; + break; + case "backend": + str = str + numStr; + break; + case "at": + str = str.substring(0, this.insertValue - 1) + numStr + str.substring(this.insertValue - 1); + break; + } + this.currentIndexMap.set(expand, currentIndex + this.increment); - if (this.ignorePostfix) { - file.realName = str; - } else { - file.expandName = path.extname(str); - if (file.expandName.length > 0) { - file.realName = str.substring(0, str.lastIndexOf(".")); - } else { - file.realName = str; - } - } + if (this.ignorePostfix) { + file.realName = str; + } else { + file.expandName = path.extname(str); + if (file.expandName.length > 0) { + file.realName = str.substring(0, str.lastIndexOf(".")); + } else { + file.realName = str; + } + } - file.name = file.realName + file.expandName; - } + file.name = file.realName + file.expandName; + } } \ No newline at end of file diff --git a/openRenamerFront/public/index.html b/openRenamerFront/public/index.html index 42153b5..e46fff9 100644 --- a/openRenamerFront/public/index.html +++ b/openRenamerFront/public/index.html @@ -35,6 +35,6 @@ //设置上一节获取到的key window.qieziStatisticKey = "13ec82dd91294ae4a88b0d2cc6cbdf76"; - + diff --git a/openRenamerFront/src/App.vue b/openRenamerFront/src/App.vue index 819a446..c36b911 100644 --- a/openRenamerFront/src/App.vue +++ b/openRenamerFront/src/App.vue @@ -19,7 +19,7 @@ {{ version }}    -