feat(web): 更新审批中心、审计、政策制度页面及对应的业务脚本,增强前端交互逻辑

This commit is contained in:
caoxiaozhu
2026-05-15 06:57:07 +00:00
parent 344ac126b3
commit 244b3a58f7
7 changed files with 1142 additions and 325 deletions

View File

@@ -88,7 +88,7 @@
<div class="card-head">
<div>
<h3>Markdown 规则内容</h3>
<p>当前展示版本{{ selectedSkill.displayVersion }}保存后会生成新的版本快照</p>
<p>当前展示版本{{ selectedSkill.displayVersion }}规则说明与运行时 JSON 分开编辑但保存时会一起进入版本快照</p>
</div>
<button
class="mini-btn primary"
@@ -118,7 +118,7 @@
</label>
<div class="editor-foot">
<span>版本说明{{ selectedSkill.currentVersionChangeNote }}</span>
<span>版本说明{{ selectedSkill.displayVersionChangeNote }}</span>
<span>最近保存{{ selectedSkill.updatedAt }}</span>
</div>
@@ -128,6 +128,60 @@
</div>
</article>
<article v-if="selectedSkill.type === 'rules'" class="detail-card panel json-editor-card">
<div class="card-head">
<div>
<h3>运行时 JSON</h3>
<p>编辑规则中心实际消费的 `config_json.runtime_rule`保存时会同步写入配置并追加到 Markdown 版本快照</p>
</div>
<button
class="mini-btn"
type="button"
:disabled="!canEditMarkdown || detailBusy"
@click="saveRuleRuntimeJson"
>
<i class="mdi mdi-code-json"></i>
<span>{{ actionState === 'save-runtime-json' ? '保存中...' : '保存 JSON' }}</span>
</button>
</div>
<div class="json-template-meta">
<span>
<strong>模板</strong>
{{ selectedSkill.ruleTemplateLabel }}
</span>
<span>
<strong>模板键</strong>
{{ selectedSkill.ruleTemplateKey || '未指定' }}
</span>
<span>
<strong>运行时类型</strong>
{{ selectedSkill.runtimeKind || 'policy_rule_draft' }}
</span>
</div>
<label class="field">
<span>config_json.runtime_rule</span>
<textarea
v-model="selectedSkill.runtimeRuleText"
class="json-editor"
:class="{ disabled: !canEditMarkdown }"
spellcheck="false"
:readonly="!canEditMarkdown || detailBusy"
></textarea>
</label>
<div class="editor-foot">
<span>JSON 必须是对象保存后会同步写入资产配置并以 `expense-rule` 代码块落到版本历史里</span>
<span>当前展示版本{{ selectedSkill.displayVersion }}</span>
</div>
<div v-if="!canEditMarkdown" class="review-note-block muted">
<strong>只读模式</strong>
<p>当前账号没有规则编辑权限运行时 JSON 仅可查看</p>
</div>
</article>
<article class="detail-card panel">
<div class="card-head">
<div>
@@ -539,7 +593,7 @@
</span>
</div>
<div class="table-wrap">
<div class="table-wrap" :class="{ 'is-empty': !loading && !errorMessage && !visibleSkills.length }">
<div v-if="loading" class="table-state">
<i class="mdi mdi-loading mdi-spin"></i>
<p>正在加载{{ activeTabLabel }}资产...</p>
@@ -608,7 +662,7 @@
</table>
</div>
<footer v-if="!loading && !errorMessage" class="list-foot">
<footer v-if="!loading && !errorMessage && visibleSkills.length" class="list-foot">
<span class="page-summary">当前展示 {{ visibleSkills.length }} 条资产</span>
</footer>
</article>