Files
ebiz-ai-knowledge-manage/src/views/track/Index.vue
Huangzhe dcc4b9bf68 feat[track]: 调整任务轨迹内容
1. 调整 `getDocByPage` 接口内容
2. 界面显示效果调整
-
2025-04-15 15:43:51 +08:00

273 lines
8.2 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 { getDocByPage } from '@/api/knowledge/task-page'
import KnowledgeInfo from '@/views/track/views/knowledge-info/Index.vue'
export default {
components: {
KnowledgeInfo
},
data() {
return {
infoDialogVisible: false,
activeForm: {},
tabList: [],
form: {
knowledge: '',
knowledgeName: '',
uploadUser: '',
documentStatus: '',
taskTime: []
},
tableConfig: {
total: 0,
currentPage: 1,
pageSize: 10,
columns: [
{ prop: 'taskCode', key: '任务号', width: '180' },
{ prop: 'docTypeName', key: '知识库', width: '180' },
{ prop: 'fileName', key: '知识文件名称' },
{ prop: 'documentStatus', key: '上传状态', width: '100' },
{ prop: 'createdUser', key: '上传用户', width: '100' },
{ prop: 'createdDate', key: '上传时间', width: '200' },
{
key: '操作',
render: (h, params) => {
return h('div', [
h(
'el-button',
{
props: { type: 'text', size: 'mini' },
on: { click: () => this.handleActiveInfo(params) }
},
'查看详情'
)
])
}
}
]
}
}
},
computed: {
/**
* 获取筛选后的列表数据
*/
getFilterTableData() {
let filteredList = this.tabList
// 按照顺序进行筛选,先按照知识库进行筛选
filteredList = this.form.knowledge
? filteredList.filter(item => {
return item.docTypeName === this.form.knowledge
})
: filteredList
// 按照知识文件名称进行筛选
filteredList = this.form.knowledgeName
? filteredList.filter(item => {
return item.fileName === this.form.knowledgeName
})
: filteredList
// 按照上传用户进行筛选
filteredList = this.form.uploadUser
? filteredList.filter(item => {
return item.createdUser === this.form.uploadUser
})
: filteredList
// 按照任务状态进行筛选
filteredList = this.form.documentStatus
? filteredList.filter(item => {
return item.documentStatus === this.form.documentStatus
})
: filteredList
// 处理的状态格式化
filteredList = filteredList.map(item => {
if (item.documentStatus === 0 || item.documentStatus === '上传中') {
item.documentStatus = '上传中'
} else if (item.documentStatus === 1 || item.documentStatus === '成功') {
item.documentStatus = '成功'
} else if (item.documentStatus === -1 || item.documentStatus === '失败') {
item.documentStatus = '失败'
}
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 filteredList
},
/**
* 获取知识库列表
*/
getKnowledgeList() {
// 进行去重处理
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
},
/**
* 获取上传用户列表
*/
getUploadUserList() {
// 进行去重处理
const uploadUserList = [...new Set(this.tabList.map(item => item.createdUser))]
return uploadUserList
},
/**
* 获取任务状态列表
*/
getTaskStatusList() {
// 进行去重处理
const taskStatusList = [...new Set(this.tabList.map(item => item.documentStatus))]
return taskStatusList
}
},
methods: {
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,
docId: ''
}
getDocByPage(payload).then(res => {
this.tabList = res.content.content.list ? res.content.content.list : []
this.tableConfig.total = res.content.content.total
console.log(`res:`, res.content.content.list)
})
},
handleReset() {
this.form = {
knowledge: '',
knowledgeName: '',
uploadUser: '',
documentStatus: '',
taskTime: []
}
},
handleActiveInfo(scope) {
this.infoDialogVisible = true
this.activeForm = scope.row
}
},
created() {
this.getTableData()
}
}
</script>
<template>
<div class="track-container">
<el-card shadow="hover">
<!-- <template #header>
<div class="card-header">
<h3>知识库管理</h3>
</div>
</template> -->
<!-- 知识库信息 -->
<el-form :model="form" label-width="100px" size="small">
<el-row>
<el-col :span="8">
<el-form-item label="知识库">
<el-select v-model="form.knowledge" placeholder="请选择知识库">
<el-option v-for="item in getKnowledgeList" :key="item" :label="item" :value="item"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="知识文件名称">
<el-select v-model="form.knowledgeName" placeholder="请选择知识文件名称">
<el-option v-for="item in getKnowledgeNameList" :key="item" :label="item" :value="item"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="上传用户">
<el-select v-model="form.uploadUser" placeholder="请选择上传用户">
<el-option v-for="item in getUploadUserList" :key="item" :label="item" :value="item"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="上传状态">
<el-select v-model="form.documentStatus" placeholder="请选择上传状态">
<el-option v-for="item in getTaskStatusList" :key="item" :label="item" :value="item"></el-option>
</el-select>
</el-form-item>
</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>
</el-form-item>
</el-col>
<el-col :span="9">
<el-button type="primary" size="small" @click="handleReset">重置筛选</el-button>
</el-col>
</el-row>
</el-form>
<!-- 任务列表 -->
<div>
<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)">
<knowledge-info :form="activeForm" v-if="infoDialogVisible"></knowledge-info>
</el-drawer>
</div>
</el-card>
</div>
</template>
<style lang="scss" scoped>
.track-container {
padding: 20px 20px;
}
</style>