diff --git a/par-api/src/main/java/com/par/api/controller/AdminController.java b/par-api/src/main/java/com/par/api/controller/AdminController.java
index d662698..150e363 100644
--- a/par-api/src/main/java/com/par/api/controller/AdminController.java
+++ b/par-api/src/main/java/com/par/api/controller/AdminController.java
@@ -256,16 +256,16 @@ public class AdminController {
checkAdmin(request);
SiteConfig config = siteConfigMapper.selectById(configId);
if (config == null) return ApiResponse.error(404, "Config not found");
- if (config.getStatus() != ConfigStatus.PENDING) {
- return ApiResponse.error(400, "只能编辑待审核的配置");
- }
String script = payload.get("script");
if (script == null) return ApiResponse.error(400, "script is required");
String scriptPath = config.getScriptStoragePath();
if (scriptPath == null || scriptPath.isBlank()) {
- scriptPath = String.format("configs/%s/pending/%s.groovy", config.getSiteId(), config.getConfigHash().substring(0, 8));
+ String hash = config.getConfigHash() != null ? config.getConfigHash().substring(0, 8)
+ : Long.toHexString(System.currentTimeMillis());
+ scriptPath = String.format("configs/%s/%s/%s.groovy", config.getSiteId(),
+ config.getStatus() == ConfigStatus.PENDING ? "pending" : "approved", hash);
config.setScriptStoragePath(scriptPath);
}
storageService.store(scriptPath, script);
diff --git a/par-core/src/main/java/com/par/core/dto/SiteConfigDTO.java b/par-core/src/main/java/com/par/core/dto/SiteConfigDTO.java
index a6743d0..50485ed 100644
--- a/par-core/src/main/java/com/par/core/dto/SiteConfigDTO.java
+++ b/par-core/src/main/java/com/par/core/dto/SiteConfigDTO.java
@@ -15,6 +15,7 @@ public class SiteConfigDTO {
private String siteId;
private String version;
private String configHash;
+ private String scriptStoragePath;
private Long fileSize;
private String schemaVersion;
private ConfigStatus status;
diff --git a/par-core/src/main/java/com/par/core/service/impl/ConfigServiceImpl.java b/par-core/src/main/java/com/par/core/service/impl/ConfigServiceImpl.java
index aa3e9be..1654a2c 100644
--- a/par-core/src/main/java/com/par/core/service/impl/ConfigServiceImpl.java
+++ b/par-core/src/main/java/com/par/core/service/impl/ConfigServiceImpl.java
@@ -115,6 +115,7 @@ public class ConfigServiceImpl implements ConfigService {
dto.setSiteId(config.getSiteId());
dto.setVersion(config.getVersion());
dto.setConfigHash(config.getConfigHash());
+ dto.setScriptStoragePath(config.getScriptStoragePath());
dto.setFileSize(config.getFileSize());
dto.setSchemaVersion(config.getSchemaVersion());
dto.setStatus(config.getStatus());
diff --git a/web/src/views/AccessResultCheck.vue b/web/src/views/AccessResultCheck.vue
index 30c40b2..d05cce4 100644
--- a/web/src/views/AccessResultCheck.vue
+++ b/web/src/views/AccessResultCheck.vue
@@ -44,7 +44,8 @@
编辑
- 查看配置
+ 编辑脚本
+ 查看配置
@@ -74,14 +75,14 @@
关闭
-
-
+
+ 取消
+
{{ editing ? '保存JSON' : '编辑JSON' }}
- 取消
-
- 保存脚本
-
+
+
+ 保存脚本
@@ -193,6 +194,7 @@ const allResults = ref([])
const pageParsed = ref({})
const expandedSet = reactive(new Set())
+const hasScript = computed(() => !!selectedConfig.value?.scriptStoragePath)
const totalResults = computed(() => allResults.value.length)
// 始终从 allResults 按 URL 分组