¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <HMContainer type="card"> |
| | | <template #header> |
| | | <el-form ref="queryFormRef" :inline="true" :model="queryParams"> |
| | | <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> |
| | | <el-form-item label="æä½äººå" prop="user"> |
| | | <el-input v-model="queryParams.user" style="width: 226.4px" placeholder="æä½äººå" clearable @input="debounceQueryTable" /> |
| | | </el-form-item> |
| | | </el-form> |
| | | </template> |
| | | <template #main> |
| | | <div class="h-full" ref="chatDragContainerRef"> |
| | | <el-table |
| | | v-loading="tableLoading" |
| | | ref="draggableTableRef" |
| | | class="h100" |
| | | border |
| | | :row-class-name="isDragStatus ? 'cursor-move' : 'cursor-pointer'" |
| | | :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> |
| | | </div> |
| | | </template> |
| | | </HMContainer> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { debounce, getItemMap } from '/@/utils/util'; |
| | | |
| | | import { onMounted, ref } from 'vue'; |
| | | |
| | | |
| | | import * as userApi from '/@/api/auth/user'; |
| | | |
| | | 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'; |
| | | |
| | | //#region ====================== è¡¨æ ¼æ°æ®ï¼table init ====================== |
| | | const tableLoading = ref(false); |
| | | const tableData = ref([]); |
| | | const isDragStatus = ref(false); |
| | | |
| | | //#endregion |
| | | |
| | | //#region ====================== è¡¨æ ¼æ¥è¯¢ãæåºï¼search form init ====================== |
| | | |
| | | const queryParams = ref({ |
| | | timeRange: [], |
| | | type: '', |
| | | user: '', |
| | | }); |
| | | |
| | | const handleQueryTable = async () => { |
| | | const res = await getOperateLog({ |
| | | start_time: queryParams.value.timeRange[0], |
| | | end_time: queryParams.value.timeRange[1], |
| | | |
| | | type: queryParams.value.type, |
| | | user: queryParams.value.user, |
| | | }); |
| | | |
| | | tableData.value = res?.values ?? []; |
| | | }; |
| | | |
| | | 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 }); |
| | | }; |
| | | //#endregion |
| | | |
| | | const deleteCurrentRow = (row: any) => { |
| | | ElMessageBox.confirm(`ç¡®å®å é¤ç¨æ·ï¼ã${row.user_name}ã?`, 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | type: 'warning', |
| | | }).then(async () => { |
| | | const res = await userApi.deleteUserInfoByPost({ |
| | | user_id: row.user_id, |
| | | }); |
| | | const foundIndex = tableData.value.findIndex((item) => item === row); |
| | | foundIndex > -1 && tableData.value.splice(foundIndex, 1); |
| | | ElMessage.success('å é¤ç¨æ·æå'); |
| | | }); |
| | | }; |
| | | //#region ====================== ä¿®æ¹å¯ç æä½ ====================== |
| | | const optPasswordDlgIsShow = ref(false); |
| | | const optPasswordDlgMapRow = ref(null); |
| | | const openOptPasswordDlg = (row?: any) => { |
| | | optPasswordDlgMapRow.value = row; |
| | | optPasswordDlgIsShow.value = true; |
| | | }; |
| | | |
| | | const updatePasswordOpt = (formValue) => { |
| | | const foundIndex = tableData.value.findIndex((item) => item.user_id === formValue.user_id); |
| | | if (foundIndex > -1) { |
| | | tableData.value[foundIndex] = { |
| | | ...tableData.value[foundIndex], |
| | | ...formValue, |
| | | }; |
| | | } |
| | | }; |
| | | |
| | | //#endregion |
| | | |
| | | //#region ====================== ä¿®æ¹è§è²æä½ ====================== |
| | | const optRoleDlgIsShow = ref(false); |
| | | const optRoleDlgMapRow = ref(null); |
| | | const openOptRoleDlg = (row?: any) => { |
| | | optRoleDlgMapRow.value = row; |
| | | optRoleDlgIsShow.value = true; |
| | | }; |
| | | |
| | | const updateRoleOpt = (formValue) => { |
| | | const foundIndex = tableData.value.findIndex((item) => item.user_id === formValue.user_id); |
| | | if (foundIndex > -1) { |
| | | tableData.value[foundIndex] = { |
| | | ...tableData.value[foundIndex], |
| | | ...formValue, |
| | | }; |
| | | } |
| | | }; |
| | | |
| | | //#endregion |
| | | |
| | | const roleList = ref([]); |
| | | const roleMap = computed(() => getItemMap(roleList.value, 'id')); |
| | | const getRoleList = async () => { |
| | | const res = await getRoleInfoListByPost(); |
| | | |
| | | roleList.value = res?.values ?? []; |
| | | }; |
| | | onMounted(async () => { |
| | | nextTick(() => { |
| | | handleQueryTable(); |
| | | }); |
| | | }); |
| | | </script> |
| | | <style scoped lang="scss"></style> |