feat[knowledge]: 知识拆分预览

- 现在可以查看知识自定义拆分预览
This commit is contained in:
Huangzhe
2025-04-15 13:31:37 +08:00
parent 9f0a5ca238
commit 13205a1d84
2 changed files with 48 additions and 25 deletions

View File

@@ -1,55 +1,67 @@
<template>
<div>
<!-- 添加预处理结果预览对话框 -->
<el-drawer :title="currentId ? '编辑知识拆分规则' : '新增知识拆分规则'" :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="12">
<el-col :span="isPreview? 24 : 12">
<el-form-item label="规则名称" prop="ruleName">
<el-input v-model="form.ruleName" placeholder="请输入规则名称"></el-input>
<el-input :disabled="isPreview" v-model="form.ruleName" placeholder="请输入规则名称" />
</el-form-item>
</el-col>
<el-col :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-option>
<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>
</el-col>
</el-row>
<p class="tips">支持中文英文数字下划线(_)50个字符以内不能以下划线为开头</p>
<p v-if="!isPreview" class="tips">支持中文英文数字下划线(_)50个字符以内不能以下划线为开头</p>
</div>
<div class="form-section" v-for="(rule, index) in form.ruleList" :key="index">
<div class="section-title">
拆分规则 {{ index + 1 }}
<el-button v-if="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 v-model="rule.titleLevel" placeholder="请选择标题级别">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option>
<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-select>
</el-form-item>
<el-form-item label="关键词" :prop="'ruleList.' + index + '.ruleRegex'">
<el-input 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 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 type="primary" size="medium" @click="copyRule(index)">复制拆分规则</el-button>
<el-button v-if="!isPreview" type="primary" size="medium" @click="copyRule(index)">
复制拆分规则
</el-button>
</div>
</div>
<div class="add-rule-btn">
<el-button type="primary" size="medium" @click="addSplitRule"> <i class="el-icon-plus"></i> 新增拆分规则 </el-button>
<el-button v-if="!isPreview" type="primary" size="medium" @click="addSplitRule">
<i class="el-icon-plus"></i>
新增拆分规则
</el-button>
</div>
</el-form>
</div>
<div class="drawer-footer">
<div class="drawer-footer" v-if="!isPreview">
<el-button size="medium" @click="handleClose"> </el-button>
<el-button type="primary" size="medium" @click="handleSubmit"> </el-button>
</div>
@@ -58,12 +70,13 @@
</template>
<script>
import { addRuleSplit, getRuleDetail, updateRuleSplit, getRulesList } from '@/api/generatedApi'
import { addRuleSplit, getRuleDetail, getRulesList, updateRuleSplit } from '@/api/generatedApi'
export default {
name: 'AddRule',
data() {
return {
isPreview: false,
dialogVisible: false,
currentId: null, // 当前编辑的规则ID
form: {
@@ -109,7 +122,11 @@ export default {
ruleName: [
{ required: true, message: '请输入规则名称', trigger: 'blur' },
{ max: 50, message: '长度不能超过50个字符', trigger: 'blur' },
{ pattern: /^(?!_)[a-zA-Z0-9\u4e00-\u9fa5_]+$/, message: '支持中文、英文、数字、下划线(_),不能以下划线为开头', trigger: 'blur' }
{
pattern: /^(?!_)[a-zA-Z0-9\u4e00-\u9fa5_]+$/,
message: '支持中文、英文、数字、下划线(_),不能以下划线为开头',
trigger: 'blur'
}
],
'ruleList.0.titleLevel': [{ required: true, message: '请选择标题级别' }],
'ruleList.0.ruleRegex': [{ required: true, message: '请输入关键词', trigger: 'blur' }]
@@ -117,7 +134,9 @@ export default {
}
},
methods: {
init(id) {
init(id, options = { preview: false }) {
this.isPreview = options.preview
this.dialogVisible = true
this.getRuleList()
this.currentId = id

View File

@@ -5,7 +5,7 @@
<el-row>
<el-col :span="8">
<el-form-item label="知识拆分规则">
<el-input v-model="form.ruleName" size="medium" placeholder="请输入知识拆分规则"></el-input>
<el-input size="small" v-model="form.ruleName" placeholder="请输入知识拆分规则"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
@@ -14,7 +14,8 @@
</el-row>
<!-- 其他表单项 -->
</el-form>
<r-table :columns="columns" :data="tableData" :isSelectOnly="true" :deletion="false" @selection-change="getCheckData"></r-table>
<r-table :columns="columns" :data="tableData" :isSelectOnly="true" :deletion="false"
@selection-change="getCheckData"></r-table>
<!-- 添加 AddRule 组件 -->
<add-rule ref="addRule" :ruleList="tableData" @getDataList="getDataList"></add-rule>
@@ -33,13 +34,13 @@
</template>
<script>
import AddRule from './AddRule.vue' // 导入 AddRule 组件
import addRule from './AddRule.vue' // 导入 AddRule 组件
import { getRulesPage } from '@/api/generatedApi/index'
export default {
name: 'CustomSplitDialog',
components: {
AddRule // 注册 AddRule 组件
addRule: addRule // 注册 AddRule 组件
},
props: {},
data() {
@@ -79,9 +80,11 @@ export default {
this.visible = false
},
handlePreview(row) {
this.$refs.addRule.init(row.id, { preview: true })
// return
// 预览逻辑
console.log('Preview', row)
this.previewDialogVisible = true // 显示预览弹窗
// console.log('Preview', row)
// this.previewDialogVisible = true // 显示预览弹窗
},
handleEdit(row) {
// 修改逻辑
@@ -99,7 +102,8 @@ export default {
.then(_ => {
done()
})
.catch(_ => {})
.catch(_ => {
})
}
},
computed: {