feat(knowledge): 添加知识拆分预览功能

- 新增 SplitPreview 组件用于展示拆分预览结果
- 在 split 配置中集成预览功能,实现拆分和预览一体化
- 优化知识创建流程,支持预览确认后继续上传
-重构 API 调用,增加拆分结果预览接口
This commit is contained in:
du.meimei
2025-04-15 14:31:00 +08:00
parent 13205a1d84
commit 9e940180de
9 changed files with 306 additions and 58 deletions

View File

@@ -1,23 +1,25 @@
<template>
<div>
<!-- 添加预处理结果预览对话框 -->
<el-drawer :title="currentId ? (isPreview? '预览' : '编辑')+'知识拆分规则' : '新增知识拆分规则'"
:visible.sync="dialogVisible" size="40%" :before-close="handleClose">
<el-drawer
:title="currentId ? (isPreview ? '预览' : '编辑') + '知识拆分规则' : '新增知识拆分规则'"
:visible.sync="dialogVisible"
size="40%"
:before-close="handleClose"
>
<div class="content">
<el-form ref="ruleForm" :model="form" :rules="rules" label-width="100px">
<div class="form-section">
<div class="section-title">基本信息</div>
<el-row :gutter="20">
<el-col :span="isPreview? 24 : 12">
<el-col :span="isPreview ? 24 : 12">
<el-form-item label="规则名称" prop="ruleName">
<el-input :disabled="isPreview" v-model="form.ruleName" placeholder="请输入规则名称" />
</el-form-item>
</el-col>
<el-col v-if="!isPreview" :span="12">
<el-select v-model="searchValue" @change="queryExistingRules" filterable clearable
placeholder="查询并导入现有规则">
<el-option v-for="item in ruleList" :key="item.id" :label="item.ruleName"
:value="item.id" />
<el-select v-model="searchValue" @change="queryExistingRules" filterable clearable placeholder="查询并导入现有规则">
<el-option v-for="item in ruleList" :key="item.id" :label="item.ruleName" :value="item.id" />
</el-select>
</el-col>
</el-row>
@@ -27,24 +29,20 @@
<div class="form-section" v-for="(rule, index) in form.ruleList" :key="index">
<div class="section-title">
拆分规则 {{ index + 1 }}
<el-button v-if="!isPreview && form.ruleList.length > 1" type="text" class="delete-btn"
@click="removeRule(index)">
<el-button v-if="!isPreview && form.ruleList.length > 1" type="text" class="delete-btn" @click="removeRule(index)">
<i class="el-icon-delete"></i> 删除
</el-button>
</div>
<el-form-item label="样式" :prop="'ruleList.' + index + '.titleLevel'">
<el-select :disabled="isPreview" v-model="rule.titleLevel" placeholder="请选择标题级别">
<el-option v-for="item in options" :key="item.value" :label="item.label"
:value="item.value"></el-option>
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item label="关键词" :prop="'ruleList.' + index + '.ruleRegex'">
<el-input :disabled="isPreview" type="textarea" v-model="rule.ruleRegex"
placeholder="请输入规则表达式"></el-input>
<el-input :disabled="isPreview" type="textarea" v-model="rule.ruleRegex" placeholder="请输入规则表达式"></el-input>
</el-form-item>
<el-form-item label="备注" :prop="'ruleList.' + index + '.description'">
<el-input :disabled="isPreview" type="textarea" v-model="rule.description"
placeholder="请输入规则备注"></el-input>
<el-input :disabled="isPreview" type="textarea" v-model="rule.description" placeholder="请输入规则备注"></el-input>
</el-form-item>
<div class="text-right mb20">
<el-button v-if="!isPreview" type="primary" size="medium" @click="copyRule(index)">