| | |
| | | <div class="flex flex-col h100"> |
| | | <div class="text-[16px] font-[500] h-[22px]">知识库管理</div> |
| | | <div class="mx-0 mt-[12px] mb-[16px] flex justify-between items-center"> |
| | | <el-input |
| | | v-model="state.knowledgeBaseForm.Name" |
| | | style="width: 230px; margin-right: 10px; background: #ffffff; border-radius: 6px; transition: all 0.2s" |
| | | placeholder="搜索知识库名称" |
| | | clearable |
| | | :suffix-icon="Search" |
| | | ></el-input> |
| | | <div class="flex-col"> |
| | | <el-input |
| | | v-model="knowledgeBaseForm.title" |
| | | style="width: 230px; margin-right: 10px; background: #ffffff; border-radius: 6px; transition: all 0.2s" |
| | | placeholder="搜索知识库名称" |
| | | clearable |
| | | ></el-input> |
| | | <el-button type="primary" icon="ele-Search" @click="handleQueryTable"> 查询 </el-button> |
| | | <el-button icon="ele-Refresh" @click="resetQuery">重置 </el-button> |
| | | </div> |
| | | <el-button icon="ele-Plus" @click="createKnowledgeBase()" type="primary"> 创建知识库 </el-button> |
| | | </div> |
| | | <div class="flex flex-wrap gap-3 overflow-x-auto set_item_jel"> |
| | | <img :src="knowledgeLeft" class="set_item_img" /> |
| | | <div class="set_item_content"> |
| | | <div class="flex items-center"> |
| | | <div class="mr-[10px] text-[14px] font-[500] h-[22px]">知识库名称</div> |
| | | <span class="set_desc_text"> |
| | | <span class="set_desc_icon ywifont ywicon-wendang"> </span> |
| | | 1个知识 |
| | | </span> |
| | | <span class="set_desc_text"> |
| | | <span class="set_desc_icon ywifont ywicon-wendang"> </span> |
| | | {{ state.currentKnowledgeBaseTime }}更新 |
| | | </span> |
| | | <div class="flex flex-wrap gap-[12px]"> |
| | | <div class="flex flex-wrap gap-3 overflow-x-auto set_item_jel" v-for="item in displayTableData" :key="item.id"> |
| | | <img :src="knowledgeLeft" class="set_item_img" /> |
| | | <div class="set_item_content"> |
| | | <div class="flex items-center"> |
| | | <div class="mr-[10px] text-[14px] font-[500] h-[22px]">{{ item.title }}</div> |
| | | <span class="set_desc_text"> |
| | | <span class="set_desc_icon ywifont ywicon-wendang"> </span> |
| | | 1个知识 |
| | | </span> |
| | | <span class="set_desc_text"> |
| | | <span class="set_desc_icon ywifont ywicon-cshy-shizhong"> </span> |
| | | {{ item.create_time }}更新 |
| | | </span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="set_btn_group"> |
| | | <el-button link class="text-[12px] text-[#686682]">查看 </el-button> |
| | | <el-divider direction="vertical" /> |
| | | <el-button link class="text-[12px] text-[#686682]">命中测试 </el-button> |
| | | <el-divider direction="vertical" /> |
| | | <el-button link class="text-[12px] text-[#686682]">编辑 </el-button> |
| | | <el-divider direction="vertical" /> |
| | | <el-button link class="text-[12px] text-[#686682]">删除 </el-button> |
| | | <div class="set_btn_group"> |
| | | <el-button link class="text-[12px] text-[#686682]" @click="viewKnowledgeBase(item)">查看 </el-button> |
| | | <el-divider direction="vertical" /> |
| | | <el-button link class="text-[12px] text-[#686682]" @click="editKnowledgeBase(item)">编辑 </el-button> |
| | | <el-divider direction="vertical" /> |
| | | <el-button link class="text-[12px]" @click="deleteKnowledgeBase(item)" style="color: #f00">删除 </el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { Search } from '@element-plus/icons-vue'; |
| | | import { reactive } from 'vue'; |
| | | import knowledgeLeft from '/static/images/knowledge/left.png'; |
| | | const state = reactive({ |
| | | knowledgeBaseForm: { |
| | | Name: '', |
| | | }, |
| | | currentKnowledgeBaseTime: '2024-08-29 14:22:14', |
| | | }); |
| | | import { ElMessage, ElMessageBox } from 'element-plus'; |
| | | import { onMounted, ref } from 'vue'; |
| | | import { useRouter } from 'vue-router'; |
| | | import { delete_docvector_name, get_docvector_list } from '/@/api/knowledge/docvector'; |
| | | import { useQueryTable } from '/@/hooks/useQueryTable'; |
| | | import mittBus from '/@/utils/mitt'; |
| | | import knowledgeLeft from '/static/images/knowledge/data_type_1.png'; |
| | | const router = useRouter(); |
| | | //#region ====================== 获取知识库sheet列表 ====================== |
| | | const knowledgeBaseList = ref([]); |
| | | //创建知识库 |
| | | const createKnowledgeBase = () => { |
| | | console.log('createKnowledgeBase'); |
| | | router.push({ |
| | | name: 'AddKnowledge', |
| | | }); |
| | | }; |
| | | //获取知识库列表 |
| | | const docvectorList = async () => { |
| | | const res = await get_docvector_list(); |
| | | if (res.json_ok) { |
| | | res.values.forEach((item) => { |
| | | item.create_time = new Date(item.create_time).toLocaleString(); |
| | | }); |
| | | knowledgeBaseList.value = res.values; |
| | | } else { |
| | | return ElMessage.error('获取列表索引失败' + (res?.json_msg ? `,${JSON.stringify(res.json_msg)}` : '')); |
| | | } |
| | | }; |
| | | const deleteKnowledgeBase = async (row) => { |
| | | ElMessageBox.confirm(`确定删除当前的知识库:【${row.title}】?`, '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '取消', |
| | | type: 'warning', |
| | | }).then(async () => { |
| | | const res = await delete_docvector_name({ |
| | | knowlg_id: row.id, |
| | | }); |
| | | if (res.json_ok) { |
| | | ElMessage.success('删除知识库成功'); |
| | | const index = knowledgeBaseList.value.findIndex((d) => d.id === row.id); |
| | | knowledgeBaseList.value.splice(index, 1); |
| | | } |
| | | }); |
| | | }; |
| | | //#endregion |
| | | //#region ====================== 对知识库进行编辑查看操作 ====================== |
| | | const editKnowledgeBase = (row) => { |
| | | router.push({ |
| | | name: 'EditKnowledge', |
| | | query: { |
| | | knowledge_id: row.id, |
| | | knowledge_title: row.title, |
| | | knowledge_desc: row.desc, |
| | | knowledge_prompt: row.prompt, |
| | | }, |
| | | }); |
| | | }; |
| | | const viewKnowledgeBase = (row) => { |
| | | router.push({ |
| | | name: 'ViewKnowledge', |
| | | query: { |
| | | knowledge_id: row.id, |
| | | knowledge_title: row.title, |
| | | }, |
| | | }); |
| | | }; |
| | | //#endregion |
| | | |
| | | //#region ====================== 搜索表格,对表格排序 ====================== |
| | | const knowledgeBaseForm = ref({ |
| | | title: '', |
| | | }); |
| | | const { resetQuery, handleQueryTable, displayTableData } = useQueryTable(knowledgeBaseList, knowledgeBaseForm, () => { |
| | | displayTableData.value = knowledgeBaseList.value; |
| | | }); |
| | | //#endregion |
| | | onMounted(() => { |
| | | docvectorList(); |
| | | mittBus.on('addKnowledgeBaseObj', (obj) => { |
| | | knowledgeBaseList.value.push(obj); |
| | | }); |
| | | }); |
| | | </script> |
| | | <style scoped lang="scss"> |
| | | .set_item_jel { |
| | | align-items: center; |
| | | background: #fff; |
| | | border-radius: 16px; |
| | | max-width: 700px; |
| | | max-width: calc(50% - 6px); |
| | | padding: 16px 20px; |
| | | width: 100%; |
| | | box-sizing: border-box; |