| | |
| | | 1个知识 |
| | | </span> |
| | | <span class="set_desc_text"> |
| | | <span class="set_desc_icon ywifont ywicon-fenshu_an"> </span> |
| | | {{ item.scope }} |
| | | </span> |
| | | <span class="set_desc_text"> |
| | | <span class="set_desc_icon ywifont ywicon-cshy-shizhong"> </span> |
| | | {{ item.create_time }}更新 |
| | | </span> |
| | | <span |
| | | :class="{ |
| | | 'text-orange-500': item.publish === SupervisorPublished.N, |
| | | 'text-green-500': item.publish === SupervisorPublished.Y, |
| | | }" |
| | | class="text-[12px]" |
| | | > |
| | | {{ supervisorPublishedMap[item.publish] }} |
| | | </span> |
| | | </div> |
| | | </div> |
| | | <div class="set_btn_group"> |
| | | <el-button |
| | | link |
| | | class="text-[12px]" |
| | | @click="publishKnowledgeBase(item)" |
| | | :style="{ color: item.publish === SupervisorPublished.Y ? '#f97316' : '#22c55e' }" |
| | | >{{ item.publish === SupervisorPublished.Y ? '下架' : '发布' }} |
| | | </el-button> |
| | | <el-divider direction="vertical" /> |
| | | <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="openChatTest(item)">对话测试 </el-button> |
| | | <el-divider direction="vertical" /> |
| | | <el-button link class="text-[12px] text-[#686682]" @click="editKnowledgeBase(item)">编辑 </el-button> |
| | | <el-divider direction="vertical" /> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div |
| | | v-if="chatTestIsShow" |
| | | ref="draggableChatRef" |
| | | :style="style" |
| | | class="fixed z-50 w-[700px] h-[800px] flex flex-col bg-[rgb(239,244,253)] right-0 bottom-0 rounded-lg" |
| | | > |
| | | <div ref="chatDragHandlerRef" class="flex-0"> |
| | | <div class="flex items-center justify-between py-2 px-4"> |
| | | <div class="font-bold cursor-move"> |
| | | WI水务智能管家——【{{ chatTestMapRow?.title }}】测试 |
| | | <!-- <img src="/static/images/logo/logo-mini.svg" width="10" height="10" /> --> |
| | | </div> |
| | | <i class="ywifont ywicon-guanbi font-[10px] font-bold cursor-pointer" @click="closeChatTest"></i> |
| | | </div> |
| | | </div> |
| | | <Chat ref="chatRef" class="flex-auto px-2" :questionApi="questionAi"> </Chat> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { useDraggable } from '@vueuse/core'; |
| | | import axios, { CancelTokenSource } from 'axios'; |
| | | import { ElMessage, ElMessageBox } from 'element-plus'; |
| | | import { onMounted, ref } from 'vue'; |
| | | import { nextTick, onMounted, ref } from 'vue'; |
| | | import { useRouter } from 'vue-router'; |
| | | import { delete_docvector_name, get_docvector_list } from '/@/api/knowledge/docvector'; |
| | | import { |
| | | check_docvector_validate, |
| | | delete_docvector_name, |
| | | get_docvector_list, |
| | | publish_docvector_name, |
| | | } from '/@/api/knowledge/docvector'; |
| | | import Chat from '/@/components/chat/Chat.vue'; |
| | | import { useQueryTable } from '/@/hooks/useQueryTable'; |
| | | import mittBus from '/@/utils/mitt'; |
| | | import { useCompRef } from '/@/utils/types'; |
| | | import { SupervisorPublished, supervisorPublishedMap } from '/@/views/project/yw/lowCode/sqlAmis/types'; |
| | | import knowledgeLeft from '/static/images/knowledge/data_type_1.png'; |
| | | const router = useRouter(); |
| | | //#region ====================== 获取知识库sheet列表 ====================== |
| | |
| | | knowledge_title: row.title, |
| | | knowledge_desc: row.desc, |
| | | knowledge_prompt: row.prompt, |
| | | knowledge_scope: row.scope, |
| | | }, |
| | | }); |
| | | }; |
| | |
| | | }, |
| | | }); |
| | | }; |
| | | //发布 |
| | | const publishKnowledgeBase = async (row) => { |
| | | const res = await publish_docvector_name({ |
| | | knowlg_id: row.id, |
| | | publish: row.publish === SupervisorPublished.Y ? SupervisorPublished.N : SupervisorPublished.Y, |
| | | }); |
| | | if (res.json_ok) { |
| | | row.publish = row.publish === SupervisorPublished.Y ? SupervisorPublished.N : SupervisorPublished.Y; |
| | | ElMessage.success('同步成功'); |
| | | } |
| | | }; |
| | | //#endregion |
| | | |
| | | //#region ====================== 搜索表格,对表格排序 ====================== |
| | |
| | | displayTableData.value = knowledgeBaseList.value; |
| | | }); |
| | | //#endregion |
| | | //#region ====================== Chat 测试 ====================== |
| | | |
| | | const chatRef = useCompRef(Chat); |
| | | const chatTestMapRow = ref(null); |
| | | const chatTestIsShow = ref(false); |
| | | const openChatTest = (row) => { |
| | | chatTestMapRow.value = row; |
| | | chatTestIsShow.value = true; |
| | | nextTick(() => { |
| | | chatRef.value.clear(); |
| | | setTimeout(() => { |
| | | chatRef.value.autoSend(row.prompt); |
| | | }, 30); |
| | | }); |
| | | }; |
| | | |
| | | const closeChatTest = () => { |
| | | chatTestMapRow.value = null; |
| | | chatTestIsShow.value = false; |
| | | }; |
| | | |
| | | const draggableChatRef = ref<HTMLElement | null>(null); |
| | | const chatDragHandlerRef = ref<HTMLDivElement>(null); |
| | | const chatDragContainerRef = ref<HTMLDivElement>(null); |
| | | |
| | | // `style` will be a helper computed for `left: ?px; top: ?px;` |
| | | const { x, y, style } = useDraggable(draggableChatRef, { |
| | | handle: chatDragHandlerRef, |
| | | initialValue: { |
| | | x: document.body.clientWidth / 2 - 350, |
| | | y: document.body.clientHeight / 2 - 400, |
| | | }, |
| | | }); |
| | | |
| | | const questionAi = async (text, sourceObj: { source: CancelTokenSource }) => { |
| | | const currentSource = axios.CancelToken.source(); |
| | | sourceObj.source = currentSource; |
| | | const res = await check_docvector_validate( |
| | | { |
| | | knowlg_id: chatTestMapRow.value.id, |
| | | question: text, |
| | | }, |
| | | { |
| | | loading: false, |
| | | cancelToken: currentSource.token, |
| | | } |
| | | ); |
| | | return res; |
| | | }; |
| | | onMounted(() => { |
| | | docvectorList(); |
| | | mittBus.on('addKnowledgeBaseObj', (obj) => { |
| | |
| | | } |
| | | } |
| | | </style> |
| | | import { useQueryTable } from '/@/hooks/useQueryTable'; |