mirror of
http://112.124.100.131/ebiz-ai/ebiz-ai-knowledge-manage.git
synced 2025-12-16 06:16:51 +08:00
feat(knowledge): 优化知识拆分和题词功能
- 添加复制拆分规则按钮 -优化拆分规则和题词界面布局 - 修复题词内容保存逻辑 - 优化规则列表展示样式 - 调整创建规则界面样式
This commit is contained in:
@@ -29,9 +29,12 @@
|
||||
<div class="form-section" v-for="(rule, index) in form.ruleList" :key="index">
|
||||
<div class="section-title">
|
||||
拆分规则 {{ index + 1 }}
|
||||
<div>
|
||||
<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>
|
||||
<el-button v-if="!isPreview" type="text" class="copy-btn" @click="copyRule(index)"> <i class="el-icon-copy-document"></i> 复制 </el-button>
|
||||
</div>
|
||||
</div>
|
||||
<el-form-item label="样式" :prop="'ruleList.' + index + '.titleLevel'">
|
||||
<el-select :disabled="isPreview" v-model="rule.titleLevel" placeholder="请选择标题级别">
|
||||
@@ -44,11 +47,6 @@
|
||||
<el-form-item label="备注" :prop="'ruleList.' + index + '.description'">
|
||||
<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)">
|
||||
复制拆分规则
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="add-rule-btn">
|
||||
@@ -264,7 +262,8 @@ export default {
|
||||
<style scoped lang="scss">
|
||||
.content {
|
||||
padding: 20px;
|
||||
min-height: 500px;
|
||||
height: calc(100vh - 120px);
|
||||
overflow-y: auto;
|
||||
|
||||
.form-section {
|
||||
margin-bottom: 24px;
|
||||
@@ -289,6 +288,14 @@ export default {
|
||||
color: #f78989;
|
||||
}
|
||||
}
|
||||
.copy-btn {
|
||||
color: #70b936;
|
||||
font-size: 14px;
|
||||
|
||||
&:hover {
|
||||
color: #70b936;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -242,8 +242,9 @@ export default {
|
||||
<style scoped lang="scss">
|
||||
.splitConfig {
|
||||
.title {
|
||||
font-size: 15px;
|
||||
margin-bottom: 20px;
|
||||
font-size: 20px;
|
||||
margin: 10px 0;
|
||||
font-weight: bold;
|
||||
}
|
||||
ul {
|
||||
list-style-type: none;
|
||||
@@ -266,7 +267,7 @@ export default {
|
||||
margin-left: 20px;
|
||||
h3 {
|
||||
margin-bottom: 20px;
|
||||
font-size: 18px;
|
||||
font-size: 16px;
|
||||
color: #333;
|
||||
}
|
||||
.tips {
|
||||
|
||||
@@ -29,9 +29,14 @@
|
||||
<div class="form-section" v-for="(rule, index) in form.ruleList" :key="index">
|
||||
<div class="section-title">
|
||||
拆分规则 {{ index + 1 }}
|
||||
<div>
|
||||
<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>
|
||||
<el-button v-if="!isPreview" type="text" class="copy-btn" @click="addValidationRules(index)">
|
||||
<i class="el-icon-copy-document"></i> 复制
|
||||
</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<el-form-item label="属性" :prop="'ruleList.' + index + '.attribute'">
|
||||
<el-input v-model="rule.attribute" placeholder="请输入属性" :disabled="isPreview"></el-input>
|
||||
@@ -48,9 +53,6 @@
|
||||
<el-form-item label="提示词" :prop="'ruleList.' + index + '.prompt'">
|
||||
<el-input v-model="rule.prompt" placeholder="请输入提示词" :disabled="isPreview"></el-input>
|
||||
</el-form-item>
|
||||
<div class="text-right mb20" v-if="!isPreview">
|
||||
<el-button type="primary" size="medium" @click="copyRule(index)" :disabled="isPreview">复制拆分规则</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="add-rule-btn" v-if="!isPreview">
|
||||
<el-button type="primary" size="medium" @click="addSplitRule"> <i class="el-icon-plus"></i> 新增拆分规则 </el-button>
|
||||
@@ -270,7 +272,8 @@ export default {
|
||||
<style scoped lang="scss">
|
||||
.content {
|
||||
padding: 20px;
|
||||
min-height: 500px;
|
||||
height: calc(100vh - 120px);
|
||||
overflow-y: auto;
|
||||
|
||||
.form-section {
|
||||
margin-bottom: 24px;
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
</el-form>
|
||||
<r-table :columns="columns" :data="tableData" :isSelectOnly="true" :deletion="false" @selection-change="getCheckData"></r-table>
|
||||
<!-- 添加 AddRule 组件 -->
|
||||
<add-rule ref="addRule"></add-rule>
|
||||
<add-rule ref="addRule" @getDataList="getDataList"></add-rule>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -59,7 +59,6 @@ export default {
|
||||
this.ruleId = value[0].id
|
||||
},
|
||||
getDataList() {
|
||||
console.log('getRulesPage')
|
||||
// 1-文档拆分规则 2-文档题词规则
|
||||
let params = {
|
||||
ruleType: 2,
|
||||
|
||||
@@ -6,7 +6,11 @@
|
||||
<template v-if="extractResults && extractResults.length > 0">
|
||||
<el-table :data="extractResults" border style="width: 100%">
|
||||
<el-table-column prop="attribute" label="属性" align="center" width="180"></el-table-column>
|
||||
<el-table-column prop="attributeContent" label="题词内容" align="center"></el-table-column>
|
||||
<el-table-column prop="attributeContent" label="题词内容" align="center">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="scope.row.attributeContent"></el-input>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</template>
|
||||
<el-empty v-else-if="!extractResults || extractResults.length === 0" description="暂无题词结果"></el-empty>
|
||||
|
||||
@@ -175,14 +175,11 @@ export default {
|
||||
this.saveContentToDocumentOperation(this.documentId, extractResults)
|
||||
},
|
||||
// 保存题词内容到文档
|
||||
async saveContentToDocumentOperation(documentId, resultList) {
|
||||
async saveContentToDocumentOperation(documentId, resultDTOList) {
|
||||
try {
|
||||
const params = {
|
||||
documentId,
|
||||
resultDTOList: resultList.map(item => ({
|
||||
attribute: item.attribute,
|
||||
attributeContent: item.attributeContent
|
||||
}))
|
||||
resultDTOList
|
||||
}
|
||||
|
||||
const res = await saveContentToDocument(params)
|
||||
@@ -230,8 +227,9 @@ export default {
|
||||
<style scoped lang="scss">
|
||||
.splitConfig {
|
||||
.title {
|
||||
font-size: 15px;
|
||||
margin-bottom: 20px;
|
||||
font-size: 20px;
|
||||
margin: 10px 0;
|
||||
font-weight: bold;
|
||||
}
|
||||
ul {
|
||||
list-style-type: none;
|
||||
@@ -254,7 +252,7 @@ export default {
|
||||
margin-left: 20px;
|
||||
h3 {
|
||||
margin-bottom: 20px;
|
||||
font-size: 18px;
|
||||
font-size: 16px;
|
||||
color: #333;
|
||||
}
|
||||
.tips {
|
||||
|
||||
@@ -26,9 +26,9 @@
|
||||
<el-button v-if="active === 0 && $refs.stepPreprocessing && $refs.stepPreprocessing.form.radio === '2'" type="primary" size="medium" @click="fetchApi">
|
||||
一键处理
|
||||
</el-button>
|
||||
<el-button type="primary" size="medium" @click="nextStep" v-if="active === 2">确定</el-button>
|
||||
<el-button size="medium" @click="active--" v-if="active >= 1">上一步</el-button>
|
||||
<el-button type="primary" size="medium" @click="nextStep" v-if="active < 2">下一步</el-button>
|
||||
<el-button type="primary" size="medium" @click="nextStep" v-if="active === 2">确定</el-button>
|
||||
<el-button type="primary" size="medium" @click="$router.history.go(-1)">取消</el-button>
|
||||
</div>
|
||||
</el-card>
|
||||
|
||||
@@ -141,8 +141,7 @@ export default {
|
||||
},
|
||||
watch: {
|
||||
form: {
|
||||
handler() {
|
||||
},
|
||||
handler() {},
|
||||
deep: true
|
||||
}
|
||||
},
|
||||
@@ -258,9 +257,15 @@ export default {
|
||||
<!-- 创建时间 -->
|
||||
<el-col :span="8">
|
||||
<el-form-item label="创建时间">
|
||||
<el-date-picker v-model="form.createdDate" type="daterange" unlink-panels range-separator="至"
|
||||
start-placeholder="开始日期" end-placeholder="结束日期"
|
||||
:picker-options="form.pickerOptions">
|
||||
<el-date-picker
|
||||
v-model="form.createdDate"
|
||||
type="daterange"
|
||||
unlink-panels
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
:picker-options="form.pickerOptions"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@@ -278,15 +283,27 @@ export default {
|
||||
|
||||
<!-- 下方规则列表 -->
|
||||
<div class="p20">
|
||||
<r-table :columns="tableConfig.columns" :data="getCurrentTableData" :deletion="false" :total="tableConfig.total"
|
||||
@currentChange="handleCurrentChange" @sizeChange="handleSizeChange" />
|
||||
<r-table
|
||||
:columns="tableConfig.columns"
|
||||
:data="getCurrentTableData"
|
||||
:deletion="false"
|
||||
:total="tableConfig.total"
|
||||
@currentChange="handleCurrentChange"
|
||||
@sizeChange="handleSizeChange"
|
||||
/>
|
||||
</div>
|
||||
</el-card>
|
||||
<!-- 规则详情弹窗 -->
|
||||
<el-drawer :visible.sync="dialogOptions.visible" size="50%" :title="dialogOptions.title">
|
||||
<!-- diglog 弹窗内容组件 -->
|
||||
<component class="container" v-if="dialogOptions.visible" :is="dialogOptions.currentComponent" :data="tableData"
|
||||
:columns="columns" :currentRow="dialogOptions.currentRow" />
|
||||
<component
|
||||
class="container"
|
||||
v-if="dialogOptions.visible"
|
||||
:is="dialogOptions.currentComponent"
|
||||
:data="tableData"
|
||||
:columns="columns"
|
||||
:currentRow="dialogOptions.currentRow"
|
||||
/>
|
||||
</el-drawer>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -132,8 +132,12 @@ export default {
|
||||
</el-form-item>
|
||||
<el-card shadow="hover" v-if="form.ruleList.length > 0">
|
||||
<el-tabs closable @tab-remove="handleDelete">
|
||||
<el-tab-pane v-for="(item, index) in form.ruleList" :name="index.toString()" :key="index"
|
||||
:label="item.ruleRegex ? item.ruleRegex : `未命名${index + 1}`">
|
||||
<el-tab-pane
|
||||
v-for="(item, index) in form.ruleList"
|
||||
:name="index.toString()"
|
||||
:key="index"
|
||||
:label="item.ruleRegex ? item.ruleRegex : `未命名${index + 1}`"
|
||||
>
|
||||
<el-form-item label="样式">
|
||||
<el-select v-model="item.titleLevel" placeholder="请选择">
|
||||
<el-option v-for="level in 6" :key="level" :label="level" :value="level" />
|
||||
|
||||
@@ -228,8 +228,14 @@ export default {
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="任务时间">
|
||||
<el-date-picker v-model="form.taskTime" type="daterange" unlink-panels range-separator="至"
|
||||
start-placeholder="开始日期" end-placeholder="结束日期">
|
||||
<el-date-picker
|
||||
v-model="form.taskTime"
|
||||
type="daterange"
|
||||
unlink-panels
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
>
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
@@ -241,12 +247,17 @@ export default {
|
||||
|
||||
<!-- 任务列表 -->
|
||||
<div>
|
||||
<r-table :columns="tableConfig.columns" :data="getFilterTableData" :deletion="false" :total="tableConfig.total"
|
||||
@currentChange="handleCurrentChange" @sizeChange="handleSizeChange" />
|
||||
<r-table
|
||||
:columns="tableConfig.columns"
|
||||
:data="getFilterTableData"
|
||||
:deletion="false"
|
||||
:total="tableConfig.total"
|
||||
@currentChange="handleCurrentChange"
|
||||
@sizeChange="handleSizeChange"
|
||||
/>
|
||||
|
||||
<!-- 弹出提示框, 里面是各种详情内容 -->
|
||||
<el-drawer title="上传任务详情" :visible.sync="infoDialogVisible" size="80%"
|
||||
:before-close="() => (infoDialogVisible = false)">
|
||||
<el-drawer title="上传任务详情" :visible.sync="infoDialogVisible" size="80%" :before-close="() => (infoDialogVisible = false)">
|
||||
<knowledge-info :form="activeForm" v-if="infoDialogVisible"></knowledge-info>
|
||||
</el-drawer>
|
||||
</div>
|
||||
|
||||
@@ -51,7 +51,6 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
getPdfUrl,
|
||||
_getTaskDetail() {
|
||||
queryTask({ id: this.form.id }).then(res => {
|
||||
@@ -69,7 +68,6 @@ export default {
|
||||
// this.form.knowledgeContent = content
|
||||
})
|
||||
}
|
||||
|
||||
},
|
||||
created() {
|
||||
this._getTaskDetail()
|
||||
@@ -144,16 +142,17 @@ export default {
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="知识内容">
|
||||
|
||||
</el-form-item>
|
||||
<el-form-item label="知识内容"> </el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="原文内容" />
|
||||
<iframe id="iframe"
|
||||
<iframe
|
||||
id="iframe"
|
||||
:src="`${iframeSrc}/pdfjs-dist/web/viewer.html?file=${encodeURIComponent(getPdfUrl({ documentId: form.id }))}`"
|
||||
class="miner-u el-card is-always-shadow ml20" style="width: 98%; height: 800px;"></iframe>
|
||||
class="miner-u el-card is-always-shadow ml20"
|
||||
style="width: 98%; height: 800px;"
|
||||
></iframe>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
|
||||
Reference in New Issue
Block a user