diff --git a/admin.html b/admin.html index 0e878d0..4e6b0f1 100644 --- a/admin.html +++ b/admin.html @@ -92,9 +92,9 @@ {{ scope.row.route }} - + @@ -193,7 +193,7 @@
- 接口列表 + 接口管理(api)
刷新 @@ -451,7 +451,7 @@ @@ -510,8 +510,8 @@ @@ -877,6 +877,13 @@ routeSearch: function () { this.routePagination.currentPage = 1; }, mockFileSearch: function () { this.mockFilePagination.currentPage = 1; }, mockGroupFilter: function () { this.mockFilePagination.currentPage = 1; }, + "mockFileDialog.form.alias": function () { + if (this.mockFileDialog.mode === "create" || this.mockFileDialog.mode === "copy") { + this.mockFileDialog.form.fileName = this.generateMockFileName( + this.mockFileDialog.form.alias, + ); + } + }, apiSearch: function () { this.apiPagination.currentPage = 1; }, ipRuleSearch: function () { this.ipRulePagination.currentPage = 1; }, }, @@ -1283,9 +1290,20 @@ }; this.routeDialog.visible = true; }, + sanitizeMockFileAlias: function (alias) { + var text = String(alias || "").trim(); + text = text.replace(/[\\/:*?"<>|]/g, "_").replace(/\s+/g, "_"); + text = text.replace(/_+/g, "_").replace(/^_+|_+$/g, ""); + return text || "mock"; + }, + generateMockFileName: function (alias) { + var prefix = this.sanitizeMockFileAlias(alias); + var random = Math.random().toString(36).slice(2, 10); + return prefix + "_" + random + ".json"; + }, getDefaultMockFileForm: function () { return { - fileName: "", + fileName: this.generateMockFileName(""), alias: "", content: "", groupId: null, @@ -1319,12 +1337,21 @@ } this.openMockFileDialogForEdit(mockFile); }, + getMockFileAlias: function (filePath) { + var path = filePath || ""; + var mockFile = this.mockFiles.find(function (f) { return f.filePath === path; }); + if (mockFile && mockFile.alias) { + return mockFile.alias; + } + return path || "-"; + }, openMockFileDialogForCopy: function (item) { + var alias = String(item.alias || "") + "-副本"; this.mockFileDialog.mode = "copy"; this.mockFileDialog.fullscreen = false; this.mockFileDialog.form = { - fileName: "", - alias: String(item.alias || "") + "-副本", + fileName: this.generateMockFileName(alias), + alias: alias, content: String(item.content || ""), groupId: item.groupId || null, }; @@ -1346,6 +1373,10 @@ }, submitMockFileDialog: async function () { var fileName = (this.mockFileDialog.form.fileName || "").trim(); + if (this.mockFileDialog.mode === "create" || this.mockFileDialog.mode === "copy") { + fileName = this.generateMockFileName(this.mockFileDialog.form.alias); + this.mockFileDialog.form.fileName = fileName; + } if (!fileName) { this.$message.error("文件名不能为空"); return;