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