|
@@ -4,30 +4,25 @@
|
|
<div class="left">知识库管理</div>
|
|
<div class="left">知识库管理</div>
|
|
<div class="right adfac">
|
|
<div class="right adfac">
|
|
<div class="r_query adfacjb queryInput">
|
|
<div class="r_query adfacjb queryInput">
|
|
- <el-input v-model="queryParams.name" placeholder="请输入知识库名称查询"></el-input>
|
|
|
|
|
|
+ <el-input v-model="queryParams.baseName" placeholder="请输入知识库名称查询" @keyup.enter.native="getList"></el-input>
|
|
<img src="@/assets/images/agent/query_mini.png">
|
|
<img src="@/assets/images/agent/query_mini.png">
|
|
</div>
|
|
</div>
|
|
- <!-- <div class="r_add" @click="handleAdd">+ 创建知识库</div> -->
|
|
|
|
<div class="r_add" @click="show=true">+ 创建知识库</div>
|
|
<div class="r_add" @click="show=true">+ 创建知识库</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<template v-if="list.length">
|
|
<template v-if="list.length">
|
|
<div class="list">
|
|
<div class="list">
|
|
<div class="item" v-for="(item, index) in list" :key="index" @click.self="handleFileList(item)">
|
|
<div class="item" v-for="(item, index) in list" :key="index" @click.self="handleFileList(item)">
|
|
- <div class="i_top adfac">
|
|
|
|
|
|
+ <div class="i_top adfac" @click.self="handleFileList(item)">
|
|
<img src="@/assets/images/agent/file_mini.png">
|
|
<img src="@/assets/images/agent/file_mini.png">
|
|
<div class="texts">
|
|
<div class="texts">
|
|
- <p>{{ '创衡 - 团队教练知识库' }}</p>
|
|
|
|
- <p><span>{{ 13 }}</span>文档·<span>{{ 22 }}</span>千字符·<span>{{ 0 }}</span>关联应用</p>
|
|
|
|
|
|
+ <p>{{ item.baseName }}</p>
|
|
|
|
+ <p>知识库<span>{{ item.dataNum||0 }}</span></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
- <div class="i_txt" v-if="index===0">
|
|
|
|
- </div>
|
|
|
|
- <div class="i_txt" v-if="index===1">
|
|
|
|
- {{ 'useful for when you want to answer queries about the 一百个小故事_酒太白.txt' }}
|
|
|
|
- </div>
|
|
|
|
|
|
+ <div class="i_txt" @click.self="handleFileList(item)">{{ item.description||'' }}</div>
|
|
<div class="i_bottom adfacjb">
|
|
<div class="i_bottom adfacjb">
|
|
- <div class="ib_l adfac" @click="handleTag">
|
|
|
|
|
|
+ <div class="ib_l adfac" @click="handleTag(item)">
|
|
<img src="@/assets/images/agent/tag_mini.png">
|
|
<img src="@/assets/images/agent/tag_mini.png">
|
|
<span>添加标签</span>
|
|
<span>添加标签</span>
|
|
</div>
|
|
</div>
|
|
@@ -43,6 +38,18 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
+ <el-row style="display: flex;justify-content: center;">
|
|
|
|
+ <el-pagination
|
|
|
|
+ @size-change="handleSizeChange"
|
|
|
|
+ @current-change="handleCurrentChange"
|
|
|
|
+ :current-page="queryParams.page"
|
|
|
|
+ :page-sizes="[5, 10, 20, 50]"
|
|
|
|
+ :page-size="10"
|
|
|
|
+ layout="total, sizes, prev, pager, next, jumper"
|
|
|
|
+ :total="total"
|
|
|
|
+ v-show="total > 0">
|
|
|
|
+ </el-pagination>
|
|
|
|
+ </el-row>
|
|
</template>
|
|
</template>
|
|
<template v-else>
|
|
<template v-else>
|
|
<div class="empty adffcacjc">
|
|
<div class="empty adffcacjc">
|
|
@@ -82,11 +89,11 @@
|
|
</el-dialog>
|
|
</el-dialog>
|
|
<el-dialog width="579px" :visible.sync="setShow" title="知识库设置" @close="cancel3">
|
|
<el-dialog width="579px" :visible.sync="setShow" title="知识库设置" @close="cancel3">
|
|
<el-form ref="setRef" :model="zskForm" :rules="zskRules" label-width="120px" style="width: 90%;margin: 0 auto;" label-position="top">
|
|
<el-form ref="setRef" :model="zskForm" :rules="zskRules" label-width="120px" style="width: 90%;margin: 0 auto;" label-position="top">
|
|
- <el-form-item label="知识库名称" prop="aaa">
|
|
|
|
- <el-input v-model="zskForm.aaa" placeholder="请输入知识库名称"></el-input>
|
|
|
|
|
|
+ <el-form-item label="知识库名称" prop="baseName">
|
|
|
|
+ <el-input v-model="zskForm.baseName" placeholder="请输入知识库名称"></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="知识库描述" prop="bbb">
|
|
|
|
- <el-input type="textarea" :rows="2" v-model="zskForm.bbb" placeholder="请输入知识库描述"></el-input>
|
|
|
|
|
|
+ <el-form-item label="知识库描述" prop="description">
|
|
|
|
+ <el-input type="textarea" :rows="2" v-model="zskForm.description" placeholder="请输入知识库描述"></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-form>
|
|
<div class="demo-drawer__footer" style="display: flex;justify-content: end;">
|
|
<div class="demo-drawer__footer" style="display: flex;justify-content: end;">
|
|
@@ -98,12 +105,16 @@
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script setup name="">
|
|
<script setup name="">
|
|
- import { ref, getCurrentInstance } from 'vue'
|
|
|
|
|
|
+ import { ref, getCurrentInstance, onMounted } from 'vue'
|
|
|
|
+ import {getKnowledgeList,addKnowledge,updateKnowledge,getKnowledgeInfo,deleteKnowledge} from '@/api/agent/index.js'
|
|
const { proxy } = getCurrentInstance();
|
|
const { proxy } = getCurrentInstance();
|
|
|
|
|
|
const queryParams = ref({
|
|
const queryParams = ref({
|
|
- name: ''
|
|
|
|
|
|
+ page:1,
|
|
|
|
+ limit:10,
|
|
|
|
+ baseName: ''
|
|
})
|
|
})
|
|
|
|
+ const total = ref(0)
|
|
const pvisibles = ref([false,false])
|
|
const pvisibles = ref([false,false])
|
|
const show = ref(false)
|
|
const show = ref(false)
|
|
const tagShow = ref(false)
|
|
const tagShow = ref(false)
|
|
@@ -112,10 +123,13 @@
|
|
const buttonLoading3 = ref(false)
|
|
const buttonLoading3 = ref(false)
|
|
const setShow = ref(false)
|
|
const setShow = ref(false)
|
|
const tagList = ref([])
|
|
const tagList = ref([])
|
|
- const list = ref([1,1])
|
|
|
|
|
|
+ const list = ref([])
|
|
const form = ref({
|
|
const form = ref({
|
|
id:'',
|
|
id:'',
|
|
- baseName: ''
|
|
|
|
|
|
+ coachId:proxy.$store.state.user.id,
|
|
|
|
+ baseName: '',
|
|
|
|
+ description: '',
|
|
|
|
+ labels:''
|
|
})
|
|
})
|
|
const rules = ref({
|
|
const rules = ref({
|
|
baseName: [
|
|
baseName: [
|
|
@@ -125,14 +139,17 @@
|
|
const zskRef = ref(null)
|
|
const zskRef = ref(null)
|
|
const setRef = ref(null)
|
|
const setRef = ref(null)
|
|
const zskForm = ref({
|
|
const zskForm = ref({
|
|
- aaa: '',
|
|
|
|
- bbb: ''
|
|
|
|
|
|
+ id:'',
|
|
|
|
+ baseName: '',
|
|
|
|
+ coachId:proxy.$store.state.user.id,
|
|
|
|
+ description: '',
|
|
|
|
+ labels:''
|
|
})
|
|
})
|
|
const zskRules = ref({
|
|
const zskRules = ref({
|
|
- aaa: [
|
|
|
|
|
|
+ baseName: [
|
|
{ required: true, message: '请输入知识库名称', trigger: 'blur' }
|
|
{ required: true, message: '请输入知识库名称', trigger: 'blur' }
|
|
],
|
|
],
|
|
- bbb: [
|
|
|
|
|
|
+ description: [
|
|
{ required: true, message: '请输入知识库描述', trigger: 'blur' }
|
|
{ required: true, message: '请输入知识库描述', trigger: 'blur' }
|
|
]
|
|
]
|
|
})
|
|
})
|
|
@@ -140,7 +157,12 @@
|
|
const submitForm = () => {
|
|
const submitForm = () => {
|
|
proxy.$refs.zskRef.validate((valid) => {
|
|
proxy.$refs.zskRef.validate((valid) => {
|
|
if (valid) {
|
|
if (valid) {
|
|
- buttonLoading.value = true
|
|
|
|
|
|
+ addKnowledge(form.value).then(res => {
|
|
|
|
+ if(res.code!==0) return proxy.$message.error(res.msg)
|
|
|
|
+ proxy.$message.success('创建成功')
|
|
|
|
+ show.value = false;
|
|
|
|
+ getList()
|
|
|
|
+ })
|
|
|
|
|
|
} else {
|
|
} else {
|
|
return false;
|
|
return false;
|
|
@@ -148,12 +170,20 @@
|
|
});
|
|
});
|
|
}
|
|
}
|
|
const cancel = () => {
|
|
const cancel = () => {
|
|
- show.value = false
|
|
|
|
- proxy.$refs.zskRef.resetFields()
|
|
|
|
|
|
+ show.value = false;
|
|
|
|
+ form.value = {
|
|
|
|
+ id:'',
|
|
|
|
+ coachId:proxy.$store.state.user.id,
|
|
|
|
+ baseName: '',
|
|
|
|
+ description: '',
|
|
|
|
+ labels:''
|
|
|
|
+ }
|
|
|
|
+ proxy.$refs.zskRef.resetFields();
|
|
}
|
|
}
|
|
|
|
|
|
const handleFileList = (item) => {
|
|
const handleFileList = (item) => {
|
|
- proxy.$router.push({path: 'agentKnowledgeFile', query:{title: item.title||'知识库标题'}})
|
|
|
|
|
|
+ console.log(item)
|
|
|
|
+ proxy.$router.push({path: 'agentKnowledgeFile', query:{title: item.baseName,id:item.id}})
|
|
}
|
|
}
|
|
|
|
|
|
const handleShowPop = (index) => {
|
|
const handleShowPop = (index) => {
|
|
@@ -161,6 +191,7 @@
|
|
}
|
|
}
|
|
|
|
|
|
const handleSet = (item,index) => {
|
|
const handleSet = (item,index) => {
|
|
|
|
+ zskForm.value = {...zskForm.value, ...item}
|
|
setShow.value = true;
|
|
setShow.value = true;
|
|
pvisibles.value[index] = false;
|
|
pvisibles.value[index] = false;
|
|
}
|
|
}
|
|
@@ -172,11 +203,17 @@
|
|
cancelButtonText: '取消',
|
|
cancelButtonText: '取消',
|
|
type: 'warning'
|
|
type: 'warning'
|
|
}).then(() => {
|
|
}).then(() => {
|
|
-
|
|
|
|
|
|
+ deleteKnowledge(item.id).then((res)=>{
|
|
|
|
+ if(res.code!==0) return proxy.$message.error(res.msg)
|
|
|
|
+ proxy.$message.success('删除成功')
|
|
|
|
+ getList()
|
|
|
|
+ })
|
|
}).catch(() => {});
|
|
}).catch(() => {});
|
|
}
|
|
}
|
|
|
|
|
|
- const handleTag = () => {
|
|
|
|
|
|
+ const handleTag = (item) => {
|
|
|
|
+ form.value = {...form.value, ...item}
|
|
|
|
+ tagList.value = item.labels.split(',').map(l => ({name: l}));
|
|
tagShow.value = true;
|
|
tagShow.value = true;
|
|
}
|
|
}
|
|
const handleDeleteTag = (item, index) => {
|
|
const handleDeleteTag = (item, index) => {
|
|
@@ -188,24 +225,40 @@
|
|
}
|
|
}
|
|
|
|
|
|
const submitForm2 = () => {
|
|
const submitForm2 = () => {
|
|
|
|
+ if(tagList.value.length === 0) return proxy.$message.error('请至少输入一条标签')
|
|
|
|
+ form.value.labels = tagList.value.map(item => item.name).join(',');
|
|
buttonLoading2.value = true;
|
|
buttonLoading2.value = true;
|
|
- setTimeout(() => {
|
|
|
|
|
|
+ updateKnowledge(form.value).then((res)=>{
|
|
|
|
+ if(res.code!==0) return proxy.$message.error(res.msg)
|
|
|
|
+ proxy.$message.success('添加成功')
|
|
tagShow.value = false;
|
|
tagShow.value = false;
|
|
buttonLoading2.value = false;
|
|
buttonLoading2.value = false;
|
|
- }, 1000)
|
|
|
|
|
|
+ getList();
|
|
|
|
+ })
|
|
}
|
|
}
|
|
const cancel2 = () => {
|
|
const cancel2 = () => {
|
|
tagShow.value = false;
|
|
tagShow.value = false;
|
|
|
|
+ form.value = {
|
|
|
|
+ id:'',
|
|
|
|
+ coachId:proxy.$store.state.user.id,
|
|
|
|
+ baseName: '',
|
|
|
|
+ description: '',
|
|
|
|
+ labels:''
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
const submitForm3 = () => {
|
|
const submitForm3 = () => {
|
|
proxy.$refs.setRef.validate((valid) => {
|
|
proxy.$refs.setRef.validate((valid) => {
|
|
if (valid) {
|
|
if (valid) {
|
|
buttonLoading3.value = true;
|
|
buttonLoading3.value = true;
|
|
- setTimeout(() => {
|
|
|
|
|
|
+ updateKnowledge(zskForm.value).then((res)=>{
|
|
|
|
+ if(res.code!==0) return proxy.$message.error(res.msg)
|
|
|
|
+ proxy.$message.success('修改成功')
|
|
setShow.value = false;
|
|
setShow.value = false;
|
|
buttonLoading3.value = false;
|
|
buttonLoading3.value = false;
|
|
- }, 1000)
|
|
|
|
|
|
+ getList();
|
|
|
|
+ })
|
|
|
|
+
|
|
} else {
|
|
} else {
|
|
return false;
|
|
return false;
|
|
}
|
|
}
|
|
@@ -214,11 +267,35 @@
|
|
const cancel3 = () => {
|
|
const cancel3 = () => {
|
|
setShow.value = false;
|
|
setShow.value = false;
|
|
zskForm.value = {
|
|
zskForm.value = {
|
|
- aaa: '',
|
|
|
|
- bbb: ''
|
|
|
|
|
|
+ id:'',
|
|
|
|
+ coachId:proxy.$store.state.user.id,
|
|
|
|
+ baseName: '',
|
|
|
|
+ description: '',
|
|
|
|
+ labels:''
|
|
}
|
|
}
|
|
proxy.$refs.setRef.resetFields();
|
|
proxy.$refs.setRef.resetFields();
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ const getList = () => {
|
|
|
|
+ getKnowledgeList(queryParams.value).then((res)=>{
|
|
|
|
+ if(res.code!==0) return proxy.$message.error(res.msg);
|
|
|
|
+ list.value = res.data.list;
|
|
|
|
+ total.value = res.data.total
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ const handleCurrentChange = (val) => {
|
|
|
|
+ queryParams.value.page = val;
|
|
|
|
+ getList()
|
|
|
|
+ }
|
|
|
|
+ const handleSizeChange = (val) => {
|
|
|
|
+ queryParams.value.limit = val;
|
|
|
|
+ getList()
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ onMounted(()=>{
|
|
|
|
+ getList();
|
|
|
|
+ })
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style scoped lang="scss">
|
|
<style scoped lang="scss">
|
|
@@ -312,7 +389,7 @@
|
|
span{
|
|
span{
|
|
font-weight: bold;
|
|
font-weight: bold;
|
|
color: #6B7280;
|
|
color: #6B7280;
|
|
- margin: 0 2px;
|
|
|
|
|
|
+ margin-left: 5px;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|