mirror of
http://112.124.100.131/ebiz-ai/ebiz-ai-knowledge-manage.git
synced 2025-12-06 17:36:48 +08:00
- 修改知识管理模块相关组件中的图片资源路径- 使用环境变量 VUE_APP_STATIC 来统一静态资源路径 - 删除冗余的图片资源引用,简化代码结构 - 在根目录下添加 .env.prd 文件,配置生产环境变量
355 lines
10 KiB
Vue
355 lines
10 KiB
Vue
<script>
|
||
import {
|
||
datasetsExTaskPages as datasetsExPages,
|
||
docManageDataset
|
||
} from '@/api/generatedApi'
|
||
import KnowledgeInfo from '@/views/track/views/knowledge-info/Index.vue'
|
||
import { getUserList } from '@/api/generatedApi/system'
|
||
import knowledgePng_2 from '../../../public/loadImage/knowledge-2.png'
|
||
|
||
export default {
|
||
components: {
|
||
KnowledgeInfo
|
||
},
|
||
data() {
|
||
return {
|
||
knowledgePng_2,
|
||
infoDialogVisible: false,
|
||
activeForm: {},
|
||
tableData: [],
|
||
form: {
|
||
datasetId: '',
|
||
datasetValue: '',
|
||
createdUserLike: '',
|
||
documentStatus: '',
|
||
// 知识文件名称(新字段)
|
||
knowledgeName: '',
|
||
taskTime: []
|
||
},
|
||
createdUserOptions: [],
|
||
datasetList: [],
|
||
tableConfig: {
|
||
uploadStatusType: {
|
||
'1': '成功',
|
||
'0': '上传中',
|
||
'-1': '失败'
|
||
},
|
||
total: 0,
|
||
currentPage: 1,
|
||
pageSize: 10,
|
||
columns: [
|
||
{ prop: 'id', key: '任务号', width: '180' },
|
||
{ prop: 'datasetName', key: '知识库', width: '180' },
|
||
{ prop: 'knowledgeName', key: '知识文件名称' },
|
||
{
|
||
prop: 'documentStatus',
|
||
key: '上传状态',
|
||
width: '100',
|
||
render: (h, params) => {
|
||
return h(
|
||
'span',
|
||
this.tableConfig.uploadStatusType[params.row.documentStatus]
|
||
)
|
||
}
|
||
},
|
||
{ prop: 'createdUser', key: '上传用户', width: '100' },
|
||
{ prop: 'createdDate', key: '上传时间', width: '200' },
|
||
{
|
||
key: '操作',
|
||
isRedraw: true,
|
||
render: (h, params) => {
|
||
return h('div', [
|
||
h('el-button', {
|
||
props: { icon: 'el-icon-tickets', title: '查看详情' },
|
||
class: 'normal-button',
|
||
on: { click: () => this.handleActiveInfo(params) }
|
||
})
|
||
])
|
||
}
|
||
}
|
||
]
|
||
}
|
||
}
|
||
},
|
||
filters: {
|
||
filterSegmentedMode(val) {
|
||
switch (val) {
|
||
case 0:
|
||
return '传统分段模式'
|
||
case 1:
|
||
return ' Q&A分段模式'
|
||
default:
|
||
return ''
|
||
}
|
||
}
|
||
},
|
||
computed: {
|
||
/**
|
||
* 格式化上传时间
|
||
* @returns {string[]} 格式化后的日期字符串 格式是 年-月-日
|
||
*/
|
||
formattedDate() {
|
||
if (!this.form.taskTime || this.form.taskTime.length !== 2) return ''
|
||
|
||
return this.form.taskTime.map((date, index) => {
|
||
return `${new Date(date).getFullYear()}-${String(
|
||
new Date(date).getMonth() + 1
|
||
).padStart(2, '0')}-${String(new Date(date).getDate()).padStart(
|
||
2,
|
||
'0'
|
||
)} ${index === 0 ? '00:00:00' : '23:59:59'}`
|
||
})
|
||
}
|
||
},
|
||
methods: {
|
||
getUserData() {
|
||
getUserList({}).then(res => {
|
||
this.createdUserOptions = res.content.content.map(item => {
|
||
return {
|
||
label: item.realName,
|
||
value: item.userName
|
||
}
|
||
})
|
||
})
|
||
},
|
||
// 搜索
|
||
handleSearch() {
|
||
// 重置页码
|
||
this.tableConfig.currentPage = 1
|
||
|
||
this.getTableData()
|
||
},
|
||
// 反转 uploadStatusType ,获取 key 值
|
||
reverseUploadStatusType(value) {
|
||
const values = Object.values(this.tableConfig.uploadStatusType)
|
||
const res = values.indexOf(value) + 1
|
||
// 如果没有找到,默认查询所有内容
|
||
if (res === -1) return ''
|
||
return res
|
||
},
|
||
handleCurrentChange(current) {
|
||
// 重置页码
|
||
this.tableConfig.currentPage = current
|
||
this.getTableData()
|
||
},
|
||
handleSizeChange(size) {
|
||
this.tableConfig.pageSize = size
|
||
this.getTableData()
|
||
},
|
||
getTableData() {
|
||
const payload = {
|
||
// 分页参数
|
||
page: this.tableConfig.currentPage,
|
||
pageSize: this.tableConfig.pageSize,
|
||
// // 知识库名称
|
||
datasetId: this.form.datasetId,
|
||
// // 知识文件名称
|
||
// fileName: this.form.knowledgeName,
|
||
// 上传用户
|
||
createdUserLike: this.form.createdUserLike,
|
||
// // 上传状态
|
||
// documentStatus: this.form.documentStatus,
|
||
// // 任务时间
|
||
startCreatedDate:
|
||
this.formattedDate.length > 1 ? this.formattedDate[0] : '',
|
||
endCreatedDate:
|
||
this.formattedDate.length > 1 ? this.formattedDate[1] : '',
|
||
knowledgeNameLike: this.form.knowledgeName,
|
||
documentStatus: this.form.documentStatus
|
||
}
|
||
|
||
datasetsExPages(payload).then(res => {
|
||
this.tableData = res.content.content.list
|
||
? res.content.content.list
|
||
: []
|
||
this.tableConfig.total = res.content.content.total
|
||
})
|
||
},
|
||
// 远程搜索知识库内容, 暂时不添加这个功能
|
||
remoteSearchDataset(query) {
|
||
this.form.datasetValue = query
|
||
|
||
if (query !== '') {
|
||
this.getKnowledgeList()
|
||
}
|
||
},
|
||
// 获取知识库列表
|
||
getKnowledgeList() {
|
||
docManageDataset({
|
||
// 对搜索的内容不做限制,主要获取所有的内容, 后续再添加参数
|
||
// page: this.tableConfig.currentPage,
|
||
// pageSize: this.tableConfig.pageSize,
|
||
nameLike: this.form.datasetValue
|
||
}).then(res => {
|
||
this.datasetList = res.content.content ? res.content.content : []
|
||
})
|
||
},
|
||
// 重置 form 表单状态
|
||
handleReset() {
|
||
this.form = {
|
||
datasetId: '',
|
||
datasetValue: '',
|
||
fileName: '',
|
||
createdUserLike: '',
|
||
documentStatus: '',
|
||
taskTime: []
|
||
}
|
||
this.handleSearch()
|
||
},
|
||
// 处理查看详情
|
||
handleActiveInfo(scope) {
|
||
this.infoDialogVisible = true
|
||
this.activeForm = scope.row
|
||
}
|
||
},
|
||
created() {
|
||
this.getTableData()
|
||
this.getKnowledgeList()
|
||
this.getUserData()
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<template>
|
||
<div class="track-container render-container">
|
||
<div class="flex justify-content-b">
|
||
<el-form
|
||
:model="form"
|
||
label-width="100px"
|
||
size="small"
|
||
label-position="top"
|
||
inline
|
||
>
|
||
<el-form-item label="知识库">
|
||
<!-- 启用远程加载 -->
|
||
<el-select
|
||
filterable
|
||
v-model="form.datasetId"
|
||
placeholder="输入搜索知识库"
|
||
size="medium"
|
||
>
|
||
<!-- 后续需要添加懒加载 -->
|
||
<el-option
|
||
v-for="item in datasetList"
|
||
:key="item.id"
|
||
:label="item.name"
|
||
:value="item.id"
|
||
/>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="知识文件名称">
|
||
<el-input
|
||
size="medium"
|
||
@keydown.enter.native="handleSearch"
|
||
v-model="form.knowledgeName"
|
||
placeholder="请输入知识文件名称"
|
||
></el-input>
|
||
</el-form-item>
|
||
<el-form-item label="上传用户">
|
||
<el-select
|
||
v-model="form.createdUserLike"
|
||
placeholder="请选择上传用户"
|
||
size="medium"
|
||
>
|
||
<el-option label="全部" value=""></el-option>
|
||
<el-option
|
||
v-for="item in createdUserOptions"
|
||
:label="item.label"
|
||
:value="item.value"
|
||
:key="item.value"
|
||
></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="上传状态">
|
||
<el-select
|
||
v-model="form.documentStatus"
|
||
placeholder="请选择上传状态"
|
||
size="medium"
|
||
>
|
||
<el-option label="全部上传状态" value="" />
|
||
<el-option
|
||
v-for="item in Object.keys(this.tableConfig.uploadStatusType)"
|
||
:key="item"
|
||
:label="tableConfig.uploadStatusType[item]"
|
||
:value="Number(item)"
|
||
/>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="任务时间">
|
||
<el-date-picker
|
||
v-model="form.taskTime"
|
||
type="daterange"
|
||
unlink-panels
|
||
size="medium"
|
||
range-separator="-"
|
||
start-placeholder="开始日期"
|
||
end-placeholder="结束日期"
|
||
style="width: 100%"
|
||
/>
|
||
</el-form-item>
|
||
<!-- 搜索按钮 -->
|
||
</el-form>
|
||
|
||
<div class="mt30 text-right w200">
|
||
<el-button type="primary" size="medium" @click="handleSearch"
|
||
>查询</el-button
|
||
>
|
||
<!-- 重置按钮 -->
|
||
<el-button size="medium" @click="handleReset">重置</el-button>
|
||
</div>
|
||
</div>
|
||
<!-- 知识库信息 -->
|
||
|
||
<!-- 任务列表 -->
|
||
<div>
|
||
<r-table
|
||
:columns="tableConfig.columns"
|
||
:data="tableData"
|
||
:deletion="false"
|
||
:total="tableConfig.total"
|
||
@currentChange="handleCurrentChange"
|
||
@sizeChange="handleSizeChange"
|
||
:currentPage="tableConfig.currentPage"
|
||
:pageSize="tableConfig.pageSize"
|
||
/>
|
||
|
||
<!-- 弹出提示框, 里面是各种详情内容 -->
|
||
<el-drawer
|
||
:title="activeForm.datasetName"
|
||
:visible.sync="infoDialogVisible"
|
||
:wrapperClosable="false"
|
||
size="80%"
|
||
:before-close="() => (infoDialogVisible = false)"
|
||
>
|
||
<div slot="title">
|
||
<div class="flex align-items-c">
|
||
<img :src="knowledgePng_2" alt="" style="width: 25px;" />
|
||
<div class="ml10">{{ activeForm.datasetName }}</div>
|
||
<div class="segment-content ml10">
|
||
{{ activeForm.segmentedMode | filterSegmentedMode }}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<knowledge-info
|
||
:noEdit="true"
|
||
:form="activeForm"
|
||
:fullscreen="true"
|
||
:key="activeForm.id"
|
||
></knowledge-info>
|
||
</el-drawer>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<style lang="scss" scoped>
|
||
@import '@/assets/sass/renderSass/theme.scss';
|
||
.segment-content {
|
||
font-size: 12px;
|
||
background: #f6f8fa;
|
||
color: #4e5969;
|
||
text-align: left;
|
||
font-style: normal;
|
||
padding: 5px;
|
||
}
|
||
</style>
|