mirror of
http://112.124.100.131/ebiz-ai/ebiz-ai-knowledge-manage.git
synced 2025-12-10 03:16:49 +08:00
feat(knowledge): 添加文档拆分和题词配置步骤、调整表格组件,支持单选功能
- 新增文件导入功能,支持手动和自动两种方式 - 添加文档拆分和题词配置步骤 - 优化导入流程,增加状态提示和错误处理 - 调整表格组件,支持单选功能
This commit is contained in:
@@ -137,7 +137,7 @@ export function addRuleExtract(data) {
|
||||
data
|
||||
})
|
||||
}
|
||||
// 拆分规则-编辑
|
||||
// 题词-编辑
|
||||
export function updateRuleExtractSplit(data) {
|
||||
return request({
|
||||
url: getUrl(`/ruleAttributeExtractEx/update`),
|
||||
@@ -145,7 +145,14 @@ export function updateRuleExtractSplit(data) {
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 题词-下一步校验
|
||||
export function execExtract(data) {
|
||||
return request({
|
||||
url: getUrl(`/datasetDocumentEx/execExtract`),
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
//知识库文件上传-自定义
|
||||
export function uploadFileByCustom(data) {
|
||||
return request({
|
||||
|
||||
@@ -171,6 +171,11 @@ export default {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
//是否只能选择一条数据
|
||||
isSelectOnly: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
//是否展示 删减行 按钮 和新增行按钮
|
||||
deletion: {
|
||||
type: Boolean,
|
||||
@@ -317,7 +322,17 @@ export default {
|
||||
this.$emit('row-click', row, column, event)
|
||||
},
|
||||
handleSelectionChange(row) {
|
||||
this.$emit('selection-change', row)
|
||||
if (this.isSelectOnly && row.length > 1) {
|
||||
// 如果只能选择一条数据,且当前选择超过一条,则只保留最后选择的一条
|
||||
const lastRow = row[row.length - 1]
|
||||
this.$refs.renderTable.clearSelection()
|
||||
this.$nextTick(() => {
|
||||
this.$refs.renderTable.toggleRowSelection(lastRow, true)
|
||||
})
|
||||
this.$emit('selection-change', [lastRow])
|
||||
} else {
|
||||
this.$emit('selection-change', row)
|
||||
}
|
||||
},
|
||||
//具体查看element 文档
|
||||
toggleRowSelection(rows) {
|
||||
|
||||
@@ -140,7 +140,8 @@ export default {
|
||||
if (this.form.beMinerU) {
|
||||
this.$emit('beMinerU', true)
|
||||
}
|
||||
this.documentId = response.content.content.id
|
||||
console.log(response.content.content)
|
||||
this.documentId = response.content.content
|
||||
// 向上导入documentId
|
||||
this.$emit('getDocumentId', this.documentId)
|
||||
// 文件内容
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
</el-row>
|
||||
<!-- 其他表单项 -->
|
||||
</el-form>
|
||||
<r-table :columns="columns" :data="tableData" :deletion="false"></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>
|
||||
|
||||
@@ -50,7 +50,8 @@ export default {
|
||||
},
|
||||
tableData: [],
|
||||
addRuleVisible: false, // 控制 AddRule 组件的显示状态
|
||||
previewDialogVisible: false // 控制预览弹窗的显示状态
|
||||
previewDialogVisible: false, // 控制预览弹窗的显示状态
|
||||
ruleId: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -58,6 +59,10 @@ export default {
|
||||
this.visible = true
|
||||
this.getDataList()
|
||||
},
|
||||
getCheckData(value) {
|
||||
console.log(value)
|
||||
this.ruleId = value[0].id
|
||||
},
|
||||
getDataList() {
|
||||
console.log('getRulesPage')
|
||||
// 1-文档拆分规则 2-文档题词规则
|
||||
|
||||
@@ -61,6 +61,7 @@
|
||||
|
||||
<script>
|
||||
import CustomSplitDialog from './CustomSplitDialog.vue'
|
||||
import { execSplit } from '@/api/generatedApi'
|
||||
|
||||
export default {
|
||||
name: 'splitConfig',
|
||||
@@ -98,6 +99,23 @@ export default {
|
||||
} else {
|
||||
this.$refs.customTable.close()
|
||||
}
|
||||
},
|
||||
nextStep(documentId) {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
let params = {
|
||||
documentId: documentId,
|
||||
beAuto: this.activeIndex === 0
|
||||
}
|
||||
if (params.beAuto === false) {
|
||||
params.rulesId = this.$refs.customTable.ruleId
|
||||
}
|
||||
let res = await execSplit(params)
|
||||
console.log(res.content)
|
||||
resolve({
|
||||
result: res.content.result,
|
||||
data: res.content
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
</el-row>
|
||||
<!-- 其他表单项 -->
|
||||
</el-form>
|
||||
<r-table :columns="columns" :data="tableData" :deletion="false"></r-table>
|
||||
<r-table :columns="columns" :data="tableData" :isSelectOnly="true" :deletion="false" @selection-change="getCheckData"></r-table>
|
||||
<!-- 添加 AddRule 组件 -->
|
||||
<add-rule ref="addRule"></add-rule>
|
||||
|
||||
@@ -63,6 +63,10 @@ export default {
|
||||
this.visible = true
|
||||
this.getDataList()
|
||||
},
|
||||
getCheckData(value) {
|
||||
console.log(value)
|
||||
this.ruleId = value[0].id
|
||||
},
|
||||
getDataList() {
|
||||
console.log('getRulesPage')
|
||||
// 1-文档拆分规则 2-文档题词规则
|
||||
|
||||
@@ -61,6 +61,7 @@
|
||||
|
||||
<script>
|
||||
import CustomSplitDialog from './CustomWords.vue'
|
||||
import { execExtract, execSplit } from '@/api/generatedApi'
|
||||
|
||||
export default {
|
||||
name: 'splitConfig',
|
||||
@@ -98,6 +99,23 @@ export default {
|
||||
} else {
|
||||
this.$refs.customTable.close()
|
||||
}
|
||||
},
|
||||
nextStep(documentId) {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
let params = {
|
||||
documentId: documentId,
|
||||
beAuto: this.activeIndex === 0
|
||||
}
|
||||
if (params.beAuto === false) {
|
||||
params.rulesId = this.$refs.customTable.ruleId
|
||||
}
|
||||
let res = await execExtract(params)
|
||||
console.log(res.content)
|
||||
resolve({
|
||||
result: res.content.result,
|
||||
data: res.content
|
||||
})
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {},
|
||||
|
||||
@@ -17,12 +17,11 @@
|
||||
<step-words v-show="active === 2"></step-words>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card-bottom">
|
||||
<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" v-if="active === 2">确定</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="active++" v-if="active < 2">下一步</el-button>-->
|
||||
<el-button type="primary" size="medium" @click="nextStep" v-if="active < 2">下一步</el-button>
|
||||
@@ -81,12 +80,24 @@ export default {
|
||||
getDocumentId(id) {
|
||||
this.documentId = id
|
||||
},
|
||||
nextStep() {
|
||||
async nextStep() {
|
||||
if (this.active === 0) {
|
||||
// this.active++
|
||||
this.$refs.stepPreProcessing.uploadFiled()
|
||||
} else if (this.active === 1) {
|
||||
this.$refs.splitConfig.nextStep()
|
||||
const res = await this.$refs.splitConfig.nextStep(this.documentId)
|
||||
if (res.result === '0') {
|
||||
// 处理成功的情况
|
||||
console.log('拆分成功', res.content)
|
||||
this.active++
|
||||
}
|
||||
} else if (this.active === 2) {
|
||||
const res = await this.$refs.words.nextStep(this.documentId)
|
||||
if (res.result === '0') {
|
||||
// 处理成功的情况
|
||||
console.log('拆分成功', res.content)
|
||||
this.$message.success('创建成功')
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<script>
|
||||
import { getDocByPage } from "@/api/knowledge/task-page";
|
||||
import KnowledgeInfo from "@/views/track/views/knowledge-info/Index.vue";
|
||||
import { getDocByPage } from '@/api/knowledge/task-page'
|
||||
import KnowledgeInfo from '@/views/track/views/knowledge-info/Index.vue'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
@@ -13,121 +13,126 @@ export default {
|
||||
tabList: [],
|
||||
currentPage: 1,
|
||||
form: {
|
||||
knowledge: "",
|
||||
knowledgeName: "",
|
||||
uploadUser: "",
|
||||
taskStatus: "",
|
||||
knowledge: '',
|
||||
knowledgeName: '',
|
||||
uploadUser: '',
|
||||
taskStatus: '',
|
||||
taskTime: []
|
||||
},
|
||||
tableConfig: {
|
||||
columns: [
|
||||
{ prop: "taskCode", key: "任务号", width: "180" },
|
||||
{ prop: "docTypeName", key: "知识库", width: "180" },
|
||||
{ prop: "fileName", key: "知识文件名称" },
|
||||
{ prop: "processStatus", key: "上传状态", width: "100" },
|
||||
{ prop: "createdUser", key: "上传用户", width: "100" },
|
||||
{ prop: "uploadDate", key: "上传时间", width: "200" },
|
||||
{ prop: 'taskCode', key: '任务号', width: '180' },
|
||||
{ prop: 'docTypeName', key: '知识库', width: '180' },
|
||||
{ prop: 'fileName', key: '知识文件名称' },
|
||||
{ prop: 'processStatus', key: '上传状态', width: '100' },
|
||||
{ prop: 'createdUser', key: '上传用户', width: '100' },
|
||||
{ prop: 'uploadDate', key: '上传时间', width: '200' },
|
||||
{
|
||||
key: "操作",
|
||||
key: '操作',
|
||||
render: (h, params) => {
|
||||
return h("div", [h("el-button", {
|
||||
props: { type: "text", size: "mini" },
|
||||
on: { click: () => this.handleActiveInfo(params) }
|
||||
}, "查看详情")]);
|
||||
return h('div', [
|
||||
h(
|
||||
'el-button',
|
||||
{
|
||||
props: { type: 'text', size: 'mini' },
|
||||
on: { click: () => this.handleActiveInfo(params) }
|
||||
},
|
||||
'查看详情'
|
||||
)
|
||||
])
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
};
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
/**
|
||||
* 获取筛选后的列表数据
|
||||
*/
|
||||
getFilterTableData() {
|
||||
let filteredList = this.tabList;
|
||||
let filteredList = this.tabList
|
||||
|
||||
// 按照顺序进行筛选,先按照知识库进行筛选
|
||||
filteredList = this.form.knowledge
|
||||
? filteredList.filter(item => {
|
||||
return item.docTypeName === this.form.knowledge;
|
||||
})
|
||||
: filteredList;
|
||||
return item.docTypeName === this.form.knowledge
|
||||
})
|
||||
: filteredList
|
||||
|
||||
// 按照知识文件名称进行筛选
|
||||
filteredList = this.form.knowledgeName
|
||||
? filteredList.filter(item => {
|
||||
return item.fileName === this.form.knowledgeName;
|
||||
})
|
||||
: filteredList;
|
||||
return item.fileName === this.form.knowledgeName
|
||||
})
|
||||
: filteredList
|
||||
|
||||
// 按照上传用户进行筛选
|
||||
filteredList = this.form.uploadUser
|
||||
? filteredList.filter(item => {
|
||||
return item.createdUser === this.form.uploadUser;
|
||||
})
|
||||
: filteredList;
|
||||
return item.createdUser === this.form.uploadUser
|
||||
})
|
||||
: filteredList
|
||||
|
||||
// 按照任务状态进行筛选
|
||||
filteredList = this.form.taskStatus
|
||||
? filteredList.filter(item => {
|
||||
return item.processStatus === this.form.taskStatus;
|
||||
})
|
||||
: filteredList;
|
||||
return item.processStatus === this.form.taskStatus
|
||||
})
|
||||
: filteredList
|
||||
|
||||
// 处理的状态格式化
|
||||
filteredList = filteredList.map(item => {
|
||||
console.log(`item.processStatus`, item.processStatus, typeof item.processStatus);
|
||||
item.processStatus = item.processStatus === 1 ? "成功" :
|
||||
item.processStatus === "成功" ? "成功" : "失败";
|
||||
return item;
|
||||
});
|
||||
console.log(`item.processStatus`, item.processStatus, typeof item.processStatus)
|
||||
item.processStatus = item.processStatus === 1 ? '成功' : item.processStatus === '成功' ? '成功' : '失败'
|
||||
return item
|
||||
})
|
||||
|
||||
// 按照任务时间进行筛选
|
||||
filteredList =
|
||||
this.form.taskTime.length > 0
|
||||
? filteredList.filter(item => {
|
||||
return (
|
||||
new Date(item.uploadDate).getTime() >= new Date(this.form.taskTime[0]).getTime() &&
|
||||
new Date(item.uploadDate).getTime() <= new Date(this.form.taskTime[1]).getTime()
|
||||
);
|
||||
})
|
||||
: filteredList;
|
||||
return (
|
||||
new Date(item.uploadDate).getTime() >= new Date(this.form.taskTime[0]).getTime() &&
|
||||
new Date(item.uploadDate).getTime() <= new Date(this.form.taskTime[1]).getTime()
|
||||
)
|
||||
})
|
||||
: filteredList
|
||||
|
||||
// 默认返回所有列表
|
||||
return filteredList;
|
||||
return filteredList
|
||||
},
|
||||
/**
|
||||
* 获取知识库列表
|
||||
*/
|
||||
getKnowledgeList() {
|
||||
// 进行去重处理
|
||||
const knowledgeList = [...new Set(this.tabList.map(item => item.docTypeName))];
|
||||
return knowledgeList;
|
||||
const knowledgeList = [...new Set(this.tabList.map(item => item.docTypeName))]
|
||||
return knowledgeList
|
||||
},
|
||||
/**
|
||||
* 获取知识文件名称列表
|
||||
*/
|
||||
getKnowledgeNameList() {
|
||||
// 进行去重处理
|
||||
const knowledgeNameList = [...new Set(this.tabList.map(item => item.fileName))];
|
||||
return knowledgeNameList;
|
||||
const knowledgeNameList = [...new Set(this.tabList.map(item => item.fileName))]
|
||||
return knowledgeNameList
|
||||
},
|
||||
/**
|
||||
* 获取上传用户列表
|
||||
*/
|
||||
getUploadUserList() {
|
||||
// 进行去重处理
|
||||
const uploadUserList = [...new Set(this.tabList.map(item => item.createdUser))];
|
||||
return uploadUserList;
|
||||
const uploadUserList = [...new Set(this.tabList.map(item => item.createdUser))]
|
||||
return uploadUserList
|
||||
},
|
||||
/**
|
||||
* 获取任务状态列表
|
||||
*/
|
||||
getTaskStatusList() {
|
||||
// 进行去重处理
|
||||
const taskStatusList = [...new Set(this.tabList.map(item => item.processStatus))];
|
||||
return taskStatusList;
|
||||
const taskStatusList = [...new Set(this.tabList.map(item => item.processStatus))]
|
||||
return taskStatusList
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -135,32 +140,32 @@ export default {
|
||||
const payload = {
|
||||
page: this.currentPage,
|
||||
pageSize: 10,
|
||||
docId: ""
|
||||
};
|
||||
docId: ''
|
||||
}
|
||||
|
||||
getDocByPage(payload).then(res => {
|
||||
this.tabList = res.content.content.list ? res.content.content.list : [];
|
||||
console.log(`res:`, res.content.content.list);
|
||||
});
|
||||
this.tabList = res.content.content.list ? res.content.content.list : []
|
||||
console.log(`res:`, res.content.content.list)
|
||||
})
|
||||
},
|
||||
handleReset() {
|
||||
this.form = {
|
||||
knowledge: "",
|
||||
knowledgeName: "",
|
||||
uploadUser: "",
|
||||
taskStatus: "",
|
||||
knowledge: '',
|
||||
knowledgeName: '',
|
||||
uploadUser: '',
|
||||
taskStatus: '',
|
||||
taskTime: []
|
||||
};
|
||||
}
|
||||
},
|
||||
handleActiveInfo(scope) {
|
||||
this.infoDialogVisible = true;
|
||||
this.activeForm = scope.row;
|
||||
this.infoDialogVisible = true
|
||||
this.activeForm = scope.row
|
||||
}
|
||||
},
|
||||
beforeMount() {
|
||||
this.getTableData();
|
||||
this.getTableData()
|
||||
}
|
||||
};
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -229,8 +234,7 @@ export default {
|
||||
<r-table :columns="tableConfig.columns" :data="getFilterTableData" :deletion="false"></r-table>
|
||||
|
||||
<!-- 弹出提示框, 里面是各种详情内容 -->
|
||||
<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>
|
||||
|
||||
Reference in New Issue
Block a user