From 41d730c249fd4a440b0bb09549327a5e9047a05b Mon Sep 17 00:00:00 2001 From: mediabot-pt <295750538+mediabot-pt@users.noreply.github.com> Date: Sun, 5 Jul 2026 18:56:42 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=A1=B5=E9=9D=A2=E9=85=8D?= =?UTF-8?q?=E7=BD=AE+=E9=A3=8E=E9=99=A9=E8=A7=84=E5=88=99=E6=94=B9?= =?UTF-8?q?=E7=94=A8=E7=BA=AFCodeEditor(=E5=8E=BB=E6=8E=89=E8=A1=A8?= =?UTF-8?q?=E6=A0=BC=E6=A8=A1=E5=BC=8F)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/src/views/RiskRules.vue | 48 +++++++------------------------------ web/src/views/SitePages.vue | 43 +++++++-------------------------- 2 files changed, 17 insertions(+), 74 deletions(-) diff --git a/web/src/views/RiskRules.vue b/web/src/views/RiskRules.vue index be8581b..2f06c4f 100644 --- a/web/src/views/RiskRules.vue +++ b/web/src/views/RiskRules.vue @@ -52,30 +52,11 @@
编辑: {{ editSiteId }} ({{ editSiteType }}) 修改会影响所有 {{ editSiteType }} 类型的站点 - - 表格 - JSON -
- -
+
-
+
保存 取消
@@ -95,8 +76,7 @@ import api from '../api' const loading = ref(false), saving = ref(false), viewVisible = ref(false), viewType = ref(''), viewJson = ref('') const sites = ref([]), rulesMap = ref({}) -const editSiteId = ref(''), editSiteType = ref(''), editorMode = ref('table'), editorJson = ref('') -const editingRules = ref([]) +const editSiteId = ref(''), editSiteType = ref(''), editorJson = ref('') const defaultRules = { nexusphp: [ @@ -120,11 +100,6 @@ const defaults = computed(() => { const fmt = (t) => t ? (t.substring(0,19)||'').replace('T',' ') : '-' -watch(editorMode, (m) => { - if (m === 'json') editorJson.value = JSON.stringify(editingRules.value, null, 2) - else { try { editingRules.value = JSON.parse(editorJson.value) } catch {} } -}) - const merged = computed(() => { return (Array.isArray(sites.value)?sites.value:[]).map(s => ({ siteId: s.siteId, @@ -164,17 +139,15 @@ const viewDefault = (dt) => { const editDefault = (dt) => { editSiteId.value = dt.type editSiteType.value = dt.type - editingRules.value = JSON.parse(JSON.stringify(dt.rules)) - editorMode.value = 'table' + editorJson.value = JSON.stringify(dt.rules, null, 2) window.scrollTo({top: document.body.scrollHeight, behavior:'smooth'}) } const loadDefaultRules = (row) => { editSiteId.value = row.siteId editSiteType.value = row.siteType - editingRules.value = JSON.parse(JSON.stringify(defaultRules[row.siteType] || defaultRules['nexusphp'] || [])) - if (editingRules.value.length === 0) editingRules.value.push({type:'KILL',name:'',metric:'',threshold:0,unit:'DAY',condition:'GT',level:'CRITICAL'}) - editorMode.value = 'table' + const rules = defaultRules[row.siteType] || defaultRules['nexusphp'] || [] + editorJson.value = JSON.stringify(rules, null, 2) window.scrollTo({top: document.body.scrollHeight, behavior:'smooth'}) } @@ -182,17 +155,14 @@ const startEdit = (row) => { if (editSiteId.value === row.siteId) { editSiteId.value = ''; return } editSiteId.value = row.siteId editSiteType.value = row.siteType - editorMode.value = 'table' - try { editingRules.value = JSON.parse(JSON.stringify(JSON.parse(row.rulesJson||'[]'))) } - catch { editingRules.value = [] } - if (editingRules.value.length===0) editingRules.value.push({type:'KILL',name:'',metric:'',threshold:0,unit:'DAY',condition:'GT',level:'CRITICAL'}) + try { editorJson.value = JSON.stringify(JSON.parse(row.rulesJson||'[]'), null, 2) } + catch { editorJson.value = '[]' } } const saveRules = async () => { saving.value = true try { - const rules = editorMode.value==='json' ? JSON.parse(editorJson.value) : editingRules.value - await api.raw.post('/risk-rules/'+editSiteType.value, { rules }) + await api.raw.post('/risk-rules/'+editSiteType.value, { rules: JSON.parse(editorJson.value) }) ElMessage.success('已保存'); editSiteId.value = ''; fetchAll() } catch { ElMessage.error('保存失败') } finally { saving.value = false } diff --git a/web/src/views/SitePages.vue b/web/src/views/SitePages.vue index ec55701..a83a275 100644 --- a/web/src/views/SitePages.vue +++ b/web/src/views/SitePages.vue @@ -50,25 +50,11 @@
编辑: {{ editSiteId }} - - 表格 - JSON -
- -
+
-
+
保存 取消
@@ -88,8 +74,7 @@ import api from '../api' const loading = ref(false), saving = ref(false) const sites = ref([]), pagesMap = ref({}) -const editSiteId = ref(''), editorMode = ref('table'), editorJson = ref('') -const editingEntries = ref([]) +const editSiteId = ref(''), editorJson = ref('') const defaultPages = { nexusphp: [ @@ -121,11 +106,6 @@ const defaults = computed(() => { const fmt = (t) => t ? (t.substring(0,19)||'').replace('T',' ') : '-' -watch(editorMode, (m) => { - if (m === 'json') editorJson.value = JSON.stringify(editingEntries.value, null, 2) - else { try { editingEntries.value = JSON.parse(editorJson.value) } catch {} } -}) - const merged = computed(() => { return (Array.isArray(sites.value)?sites.value:[]).map(s => ({ siteId: s.siteId, @@ -157,17 +137,13 @@ const fetchAll = async () => { const loadDefault = (row) => { editSiteId.value = row.siteId - editingEntries.value = JSON.parse(JSON.stringify(defaultPages[row.siteType] || defaultPages['nexusphp'])) - if (editingEntries.value.length === 0) editingEntries.value.push({key:'home',label:'首页',url:'{base}',method:'GET'}) - editorMode.value = 'table' + editorJson.value = JSON.stringify(defaultPages[row.siteType] || defaultPages['nexusphp'], null, 2) window.scrollTo({top: document.body.scrollHeight, behavior:'smooth'}) } const editDefault = (dt) => { editSiteId.value = dt.type - editingEntries.value = JSON.parse(JSON.stringify(dt.entries)) - if (editingEntries.value.length === 0) editingEntries.value.push({key:'home',label:'首页',url:'{base}',method:'GET'}) - editorMode.value = 'table' + editorJson.value = JSON.stringify(dt.entries, null, 2) window.scrollTo({top: document.body.scrollHeight, behavior:'smooth'}) } @@ -182,17 +158,14 @@ const previewDefault = (dt) => { const toggleEdit = (row) => { if (editSiteId.value === row.siteId) { editSiteId.value = ''; return } editSiteId.value = row.siteId - editorMode.value = 'table' - try { editingEntries.value = JSON.parse(JSON.stringify(JSON.parse(row.entriesJson||'[]'))) } - catch { editingEntries.value = [{key:'home',label:'首页',url:'{base}',method:'GET'}] } - if (editingEntries.value.length===0) editingEntries.value.push({key:'home',label:'首页',url:'{base}',method:'GET'}) + try { editorJson.value = JSON.stringify(JSON.parse(row.entriesJson||'[]'), null, 2) } + catch { editorJson.value = JSON.stringify([{key:'home',label:'首页',url:'{base}',method:'GET'}], null, 2) } } const savePages = async () => { saving.value = true try { - const entries = editorMode.value==='json' ? JSON.parse(editorJson.value) : editingEntries.value - await api.raw.put('/sites/'+editSiteId.value+'/pages', { entries }) + await api.raw.put('/sites/'+editSiteId.value+'/pages', { entries: JSON.parse(editorJson.value) }) ElMessage.success('已保存'); editSiteId.value = ''; fetchAll() } catch { ElMessage.error('保存失败') } finally { saving.value = false }