Files
ebiz-ai-knowledge-manage/src/views/track/Index.vue
陈昱达 92c6db8274 refactor(环境): 优化图片资源加载路径
- 修改知识管理模块相关组件中的图片资源路径- 使用环境变量 VUE_APP_STATIC 来统一静态资源路径
- 删除冗余的图片资源引用,简化代码结构
- 在根目录下添加 .env.prd 文件,配置生产环境变量
2025-05-22 09:58:46 +08:00

355 lines
10 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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>