wujingjing
2025-02-17 0f01c4bbce19fa8489a4e835c83cb9415549f681
src/views/project/yw/systemManage/flowApp/FlowApp.vue
@@ -1,11 +1,18 @@
<template>
   <div class="absolute bottom-0 left-0 right-0 top-0">
   <div class="absolute bottom-0 left-0 right-0 top-0 bg-page text-base">
      <div class="relative flex h-full w-full flex-col">
         <Header v-if="flowAgent" :flowAgent="flowAgent" :queryId="queryId" />
         <Header :isViewMode="isViewMode" v-if="flowAgent" :flowAgent="flowAgent" :queryId="queryId" @saveClick="validateForm" />
         <main class="relative flex h-full w-full flex-1">
            <Sidebar @dragstart="handleOnDragStart" />
            <Sidebar v-if="!isViewMode" class="w-52" @dragstart="handleOnDragStart" />
            <div class="relative h-full flex-1 overflow-hidden" v-if="flowJson">
               <MainCanvas :flowJson="flowJson"/>
               <MainCanvas
                  ref="mainCanvasRef"
                  :isViewMode="isViewMode"
                  :flowJson="flowJson"
                  :agentNames="agentNames"
                  :funcNames="funcNames"
                  :llmInfoList="llmInfoList"
               />
            </div>
         </main>
      </div>
@@ -20,13 +27,23 @@
import { computed, onMounted, ref } from 'vue';
import Header from './components/Header.vue';
import Sidebar from './components/Sidebar.vue';
import { get_workflow_agent_list, get_workflow_json_flow } from '/@/api/workflow';
import {
   get_agent_names,
   get_flow_func_names,
   get_workflow_agent_list,
   get_workflow_json_flow,
   get_llm_info_list,
} from '/@/api/workflow';
import MainCanvas from '/@/components/vue-flow/MainCanvas.vue';
import router from '/@/router';
const props = defineProps<{
   isViewMode: {
      type: Boolean;
      default: false;
   };
}>();
// import { Button } from '@/components/ui/button';
// import { Toaster, useToast } from '@/components/ui/toast';
function handleOnDragStart(event: DragEvent, nodeType: any) {
   if (event.dataTransfer) {
      event.dataTransfer.setData('application/vueflow', nodeType);
@@ -47,20 +64,65 @@
   const res = await get_workflow_json_flow({
      agent_id: id,
   });
   flowJson.value = res.json_ok ? res.json_flow : {};
   flowJson.value = res.json_ok ? res.json_flow ?? {} : {};
};
const getFlowAgent =async()=>{
const getFlowAgent = async () => {
   const res = await get_workflow_agent_list();
   const flowAgentList = res.values??[]
   const currentFlowAgent = flowAgentList.find((item:any)=>item.id===queryId.value)
   const flowAgentList = res.values ?? [];
   const currentFlowAgent = flowAgentList.find((item: any) => item.id === queryId.value);
   flowAgent.value = currentFlowAgent;
}
};
const agentNames = ref([]);
const getAgentNames = async () => {
   const res = await get_agent_names();
   agentNames.value = res.agents ?? [];
};
const funcNames = ref([]);
const getFuncNames = async () => {
   const res = await get_flow_func_names();
   funcNames.value = res.funcs ?? [];
};
const llmInfoList = ref([]);
const getLlmInfoList = async () => {
   const res = await get_llm_info_list();
   const factorys = res.factorys ?? [];
   const connections = res.connections ?? [];
   const logicTree = [];
   factorys.forEach((factory: any) => {
      logicTree.push({
         id: factory.factory_id,
         name: factory.factory_name,
         type: 'factory',
         model: factory,
         children: connections
            .filter((connection: any) => connection.factory_id === factory.factory_id)
            .map((item: any) => ({
               id: item.connect_id,
               name: item.connect_title,
               type: 'connection',
               model: item,
            })),
      });
   });
   llmInfoList.value = logicTree;
};
const mainCanvasRef = ref();
const validateForm = () => {
   mainCanvasRef.value.validateForm();
};
onMounted(() => {
   if (!queryId.value) return;
   handleGetJSON(queryId.value);
   getFlowAgent();
   getAgentNames();
   getFuncNames();
   getLlmInfoList();
});
</script>