wujingjing
2025-01-13 0bb7dffa90bfa3bd5ad04b75da9c31d21347c668
src/views/project/yw/systemManage/metricAgentMgr/MetricAgentMgr.vue
@@ -36,17 +36,11 @@
            <el-form-item>
               <el-button icon="ele-Refresh" @click="resetQuery">重置 </el-button>
            </el-form-item>
            <div class="absolute top-0 right-0 w-[112px] h-[24[x]] bg-white z-50 leading-3 pt-2">
               <el-radio-group v-model="canvasRadio" size="small">
                  <el-radio-button label="列表" :value="RadioType.List" />
                  <el-radio-button label="画布" :value="RadioType.Canvas" />
               </el-radio-group>
            </div>
         </el-form>
      </template>
      <template #main>
         <div class="w100 h100">
            <div class="h-full" v-show="canvasRadio === RadioType.List">
            <div class="h-full">
               <el-table
                  v-loading="tableLoading"
                  ref="draggableTableRef"
@@ -56,8 +50,16 @@
                  :data="displayTableData"
                  highlight-current-row
               >
                  <el-table-column type="index" label="序号" width="55" fixed="left" align="center"></el-table-column>
                  <el-table-column prop="title" label="名称" width="300" fixed="left" show-overflow-tooltip> </el-table-column>
                  <el-table-column label="创建人" prop="creator" width="100" show-overflow-tooltip> </el-table-column>
                  <el-table-column label="调用方式" prop="inner_call" width="100" show-overflow-tooltip>
                     <template #default="scope">
                        {{ scope.row.inner_call === 'Y' ? '内部' : '外部' }}
                     </template>
                  </el-table-column>
                  <el-table-column label="创建人" prop="create_user" width="100" show-overflow-tooltip> </el-table-column>
                  <el-table-column label="创建时间" prop="create_time" width="105" show-overflow-tooltip> </el-table-column>
                  <el-table-column label="发布状态" prop="published" width="85" show-overflow-tooltip>
                     <template #default="scope">
@@ -80,7 +82,12 @@
                                 @click="openMetricNameDlg(scope.row)"
                              ></i>
                           </el-tooltip>
                           <el-tooltip effect="dark" content="指标图谱" placement="top">
                              <i
                                 class="ywifont ywicon-duoweidu !text-[17px] text-blue-400 cursor-pointer"
                                 @click="gotoAgentGraph(scope.row)"
                              ></i>
                           </el-tooltip>
                           <el-tooltip effect="dark" content="对话测试" placement="top">
                              <i class="ywifont ywicon-ceshi !text-[20px] text-blue-400 cursor-pointer" @click="openChatTest(scope.row)"></i>
                           </el-tooltip>
@@ -106,7 +113,6 @@
                  <Chat ref="chatRef" class="flex-auto px-2" :questionApi="questionAi"> </Chat>
               </div>
            </div>
            <AgentGraph v-if="canvasRadio ===RadioType.Canvas" />
         </div>
      </template>
      <!-- <OptDlg v-model="optDlgIsShow" :item="optDlgMapRow" @insert="insertOpt" @update="updateOpt" :groupId="currentListID"></OptDlg> -->
@@ -129,10 +135,10 @@
import LeftTreeByMgr from '/@/components/tree/leftTreeByMgr.vue';
import { useQueryTable } from '/@/hooks/useQueryTable';
import { useSearch } from '/@/hooks/useSearch';
import { gotoRoute } from '/@/utils/route';
import { useCompRef } from '/@/utils/types';
import { convertListToTree, debounce } from '/@/utils/util';
import { convertListToTree, debounce, travelTree } from '/@/utils/util';
import { OptClassificationMap, classificationEnum } from '/@/views/types/metrics';
import AgentGraph from './graph/AgentGraph.vue';
//#region ====================== 左侧树数据,tree init ======================
const leftTreeRef = useCompRef(LeftTreeByMgr);
const treeLoading = ref(false);
@@ -181,12 +187,20 @@
const isDragStatus = ref(false);
const metricStatus = ref(false);
const allTableData = ref(null);
const getLenById = (data: any[], id: string, value: any) => {
   return data.filter((item) => item.agent_group === id || value.children?.some((treeItem) => treeItem.group_id === item.agent_group))
      .length;
};
const getTableData = async () => {
   if (!allTableData.value) {
      const res = await metricApi.getMetricAgentListByPost();
      allTableData.value = (res.values || []).map((item) => {
         item.create_time = item.create_time?.slice(0, 10);
         return item;
      });
      travelTree(listTreeData.value, (value, index, array, parent) => {
         const len = getLenById(allTableData.value, value.group_id, value);
         value.group_name = `${value.group_name} (${len})`;
      });
   }
   tableData.value = allTableData.value;
@@ -212,15 +226,7 @@
   showQuotaList.value = tableData.value;
});
//#endregion
//#region ====================== 模型管理(没有父节点) ======================
 const enum RadioType {
   List = 'list',
   Canvas='canvas'
}
const canvasRadio = ref(RadioType.List);
const getNodeTableData = () => {};
//#endregion
//#region ====================== Chat 测试 ======================
const chatRef = useCompRef(Chat);
const chatTestMapRow = ref(null);
@@ -278,6 +284,15 @@
   metricNameMapRow.value = row;
   metricNameIsShow.value = true;
};
const gotoAgentGraph = (row) => {
   gotoRoute({
      name: 'AgentGraph',
      query: {
         id: row.id,
      },
   });
};
//#endregion
onMounted(() => {