refactor: 配置弹窗适配纯Groovy方案,无JSON时提示,完善脚本编辑提示
This commit is contained in:
@@ -44,32 +44,39 @@
|
||||
<el-button size="small" @click="startEdit">编辑</el-button>
|
||||
</template>
|
||||
|
||||
<el-button size="small" text @click="configVisible=true" v-if="selectedConfigId">查看配置JSON</el-button>
|
||||
<el-button size="small" text @click="configVisible=true" v-if="selectedConfigId">查看配置</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
<!-- 配置/脚本弹窗 -->
|
||||
<el-dialog v-model="configVisible" title="适配配置" width="800px" :close-on-click-modal="false">
|
||||
<el-dialog v-model="configVisible" title="适配配置 · v{{ selectedConfig?.version }}" width="880px" :close-on-click-modal="false">
|
||||
<el-tabs v-model="configTab" type="card" size="small">
|
||||
<el-tab-pane label="配置JSON" name="config">
|
||||
<template v-if="editing">
|
||||
<el-input v-model="editContent" type="textarea" :rows="20" style="font-family:monospace;font-size:12px" />
|
||||
<div v-if="!selectedConfigJson" style="text-align:center;padding:40px;color:#909399">
|
||||
无 JSON 配置,已切换为纯 Groovy 方案
|
||||
</div>
|
||||
<template v-else-if="editing">
|
||||
<el-input v-model="editContent" type="textarea" :rows="22" style="font-family:monospace;font-size:12px" />
|
||||
</template>
|
||||
<pre v-else class="config-json" v-html="highlightedConfig"></pre>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane label="Groovy 脚本" name="script">
|
||||
<div v-if="scriptLoading" style="text-align:center;padding:20px;color:#909399">加载中...</div>
|
||||
<template v-else>
|
||||
<el-input v-model="scriptContent" type="textarea" :rows="20" style="font-family:monospace;font-size:12px"
|
||||
placeholder="// Groovy 解析脚本 // 内置变量: content(页面内容), url(访问URL), jsoup, json, utils def doc = jsoup.parse(content) ..." />
|
||||
<div style="margin-bottom:6px;font-size:11px;color:#909399">
|
||||
内置变量: <code>content</code>(页面内容) <code>url</code>(访问URL) <code>jsoup</code> <code>json</code> <code>utils</code>
|
||||
· 返回 Map{pageName,extracted,message} 或 List
|
||||
</div>
|
||||
<el-input v-model="scriptContent" type="textarea" :rows="22" style="font-family:monospace;font-size:12px"
|
||||
placeholder="def doc = jsoup.parse(content) def rows = [] doc.select('table tr').each { row -> rows << [ title: utils.text(utils.selectFirst(row,'td.name a')), size: utils.text(utils.selectFirst(row,'td.size')) ] } return [pageName:'search', extracted:rows]" />
|
||||
</template>
|
||||
</el-tab-pane>
|
||||
</el-tabs>
|
||||
<template #footer>
|
||||
<el-button @click="configVisible=false">关闭</el-button>
|
||||
<template v-if="selectedConfig?.status==='pending'">
|
||||
<el-button v-if="configTab==='config'" type="primary" size="small" @click="editing? saveEdit() : startEdit()">
|
||||
{{ editing ? '保存' : '编辑' }}
|
||||
<el-button v-if="configTab==='config' && selectedConfigJson" type="primary" size="small" @click="editing? saveEdit() : startEdit()">
|
||||
{{ editing ? '保存JSON' : '编辑JSON' }}
|
||||
</el-button>
|
||||
<el-button v-if="configTab==='config' && editing" size="small" @click="cancelEdit">取消</el-button>
|
||||
<el-button v-if="configTab==='script'" type="primary" size="small" @click="saveScript" :loading="saving">
|
||||
|
||||
Reference in New Issue
Block a user