From 8d83544ff6e123df4facf40c446e7d9bf4a522b6 Mon Sep 17 00:00:00 2001 From: wujingjing <gersonwu@qq.com> Date: 星期二, 31 十二月 2024 18:07:54 +0800 Subject: [PATCH] 序号 --- src/views/project/yw/systemManage/chatLog/ChatLog.vue | 152 +++++++++++++++++++++++++++++++++++--------------- 1 files changed, 107 insertions(+), 45 deletions(-) diff --git a/src/views/project/yw/systemManage/chatLog/ChatLog.vue b/src/views/project/yw/systemManage/chatLog/ChatLog.vue index 1b015f7..971a131 100644 --- a/src/views/project/yw/systemManage/chatLog/ChatLog.vue +++ b/src/views/project/yw/systemManage/chatLog/ChatLog.vue @@ -5,8 +5,40 @@ <el-form-item label="鏃ユ湡鑼冨洿" prop="timeRange"> <TimeRange v-model="queryParams.timeRange" :quickActive="TimeRangeEnum.CurrentDay" @change="handleQueryTable" /> </el-form-item> - <el-form-item label="鎿嶄綔绫诲瀷" prop="type"> - <el-input v-model="queryParams.type" style="width: 226.4px" placeholder="鎿嶄綔绫诲瀷" clearable @input="debounceQueryTable" /> + + <el-form-item label="涓氬姟鍦烘櫙" prop="group_type"> + <el-select + multiple + v-model="queryParams.group_type" + style="width: 226.4px" + placeholder="涓氬姟鍦烘櫙" + clearable + @change="handleQueryTable" + > + <el-option v-for="item in groupTypeList" :key="item" :value="item" :label="item"></el-option> + </el-select> + </el-form-item> + <el-form-item label="闂鍐呭" prop="question"> + <el-input + v-model="queryParams.question" + style="width: 226.4px" + placeholder="闂鍐呭" + clearable + @input="debounceQueryTable" + /> + </el-form-item> + + <el-form-item label="缁撴灉" prop="state"> + <el-select + + v-model="queryParams.state" + style="width: 226.4px" + placeholder="缁撴灉" + clearable + @change="handleQueryTable" + > + <el-option v-for="item in resultList" :key="item" :value="item" :label="item"></el-option> + </el-select> </el-form-item> <el-form-item label="鎿嶄綔浜哄憳" prop="user"> <el-input v-model="queryParams.user" style="width: 226.4px" placeholder="鎿嶄綔浜哄憳" clearable @input="debounceQueryTable" /> @@ -24,32 +56,50 @@ :data="tableData" highlight-current-row > - <el-table-column prop="time" label="鏃堕棿" width="185" fixed="left" show-overflow-tooltip> </el-table-column> - <el-table-column label="鐢ㄦ埛" prop="user" width="70" show-overflow-tooltip> </el-table-column> - <el-table-column label="绫诲瀷" prop="type" show-overflow-tooltip> </el-table-column> + <el-table-column label="鐢ㄦ埛" prop="user" width="120" fixed="left" show-overflow-tooltip> </el-table-column> + <el-table-column prop="time" label="鏃堕棿" width="185" show-overflow-tooltip> </el-table-column> + <el-table-column label="涓氬姟鍦烘櫙" width="120" prop="group_type" show-overflow-tooltip> </el-table-column> + <el-table-column label="闂鍐呭" prop="question" show-overflow-tooltip> </el-table-column> + <el-table-column label="缁撴灉" width="80" prop="state" show-overflow-tooltip> + <template #default="scope"> + <span :class="{ 'text-red-500': scope.row.state === 'NG', 'font-bold': scope.row.state === 'NG' }"> + {{ scope.row.state }} + </span> + </template> + </el-table-column> + <el-table-column width="120" label="鑺辫垂鏃堕棿(绉�)" prop="run_ms" show-overflow-tooltip> </el-table-column> + <el-table-column label="鎿嶄綔" width="180" fixed="right" show-overflow-tooltip> + <template #default="scope"> + <div class="space-x-3 items-center flex"> + <el-tooltip effect="dark" content="鍥炵瓟鍐呭" placement="top"> + <i class="ywifont ywicon-xiaoxi1 !text-[15px] text-blue-400 cursor-pointer" @click="openShowAnswer(scope.row)"></i> + </el-tooltip> + </div> </template + ></el-table-column> </el-table> </div> </template> + + <AnswerView v-model="infoDlgIsShow" :item="infoDlgMapRow"></AnswerView> </HMContainer> </template> <script setup lang="ts"> -import { debounce, getItemMap } from '/@/utils/util'; +import { debounce, getItemMap, toMyFixed } from '/@/utils/util'; import { onMounted, ref } from 'vue'; - import * as userApi from '/@/api/auth/user'; +import { ElMessage, ElMessageBox } from 'element-plus'; +import { computed, nextTick } from 'vue'; +import { getChatHistoryListByPost } from '/@/api/ai/chat'; import { getRoleInfoListByPost } from '/@/api/auth/role'; -import HMContainer from '/@/components/layout/HMContainer.vue'; -import { ElMessageBox, ElMessage } from 'element-plus'; -import { computed } from 'vue'; import TimeRange from '/@/components/chat/chatComponents/summaryCom/components/recordSet/components/TimeRange.vue'; import { TimeRangeEnum } from '/@/components/chat/chatComponents/summaryCom/components/recordSet/components/types'; -import { getOperateLog } from '/@/api/auth/log'; -import { nextTick } from 'vue'; - +import HMContainer from '/@/components/layout/HMContainer.vue'; +import { getSceneGroupTreeByPost } from '/@/api/scene'; +import AnswerView from './optDlg/AnswerView.vue'; //#region ====================== 琛ㄦ牸鏁版嵁锛宼able init ====================== const tableLoading = ref(false); const tableData = ref([]); @@ -61,46 +111,57 @@ const queryParams = ref({ timeRange: [], - type: '', + group_type: [], user: '', + question: '', + state: '', }); +const resultList = ['OK', 'NG']; +// groupType 鍒楄〃 +const groupTypeList = computed(() => Array.from(new Set(sceneGroupList.value.map((item) => item.group_type)))); +const sceneGroupList = ref([]); + +//鑾峰彇鍦烘櫙閫夋嫨鍒楄〃 +const getSceneGroupList = async () => { + const res = await getSceneGroupTreeByPost(); + sceneGroupList.value = res?.groups ?? []; +}; + const handleQueryTable = async () => { - const res = await getOperateLog({ + const res = await getChatHistoryListByPost({ start_time: queryParams.value.timeRange[0], end_time: queryParams.value.timeRange[1], - - type: queryParams.value.type, + + group_type: queryParams.value.group_type.join(','), user: queryParams.value.user, + question: queryParams.value.question, + state:queryParams.value.state }); - tableData.value = res?.values ?? []; + tableData.value = (res?.values ?? []).map((item) => { + let runSecond; + if (item.run_ms !== 0 && !item.run_ms) { + runSecond = null; + } else { + runSecond = toMyFixed(Number(item.run_ms) / 1000, 2); + } + return { + ...item, + run_ms: runSecond, + }; + }); }; const debounceQueryTable = debounce(handleQueryTable, 400); //#endregion - -//#region ====================== 娣诲姞淇敼鎿嶄綔 ====================== -const optDlgIsShow = ref(false); -const optDlgMapRow = ref(null); -const openOptDlg = (row?: any) => { - optDlgMapRow.value = row; - optDlgIsShow.value = true; -}; - -const updateOpt = (formValue) => { - const foundIndex = tableData.value.findIndex((item) => item.user_id === formValue.user_id); - if (foundIndex > -1) { - tableData.value[foundIndex] = { - ...tableData.value[foundIndex], - ...formValue, - }; - } -}; - -const insertOpt = (newData) => { - tableData.value.push({ ...newData }); +//#region ====================== 鏌ョ湅 ====================== +const infoDlgIsShow = ref(false); +const infoDlgMapRow = ref(null); +const openShowAnswer = (row) => { + infoDlgMapRow.value = row; + infoDlgIsShow.value = true; }; //#endregion @@ -158,13 +219,14 @@ //#endregion -const roleList = ref([]); -const roleMap = computed(() => getItemMap(roleList.value, 'id')); -const getRoleList = async () => { - const res = await getRoleInfoListByPost(); +// const roleList = ref([]); +// const roleMap = computed(() => getItemMap(roleList.value, 'id')); +// const getRoleList = async () => { +// const res = await getRoleInfoListByPost(); - roleList.value = res?.values ?? []; -}; +// roleList.value = res?.values ?? []; +// }; +getSceneGroupList(); onMounted(async () => { nextTick(() => { handleQueryTable(); -- Gitblit v1.9.3