From da056d7380fff877f01c88769af3fc6d5cad7c00 Mon Sep 17 00:00:00 2001 From: wujingjing <gersonwu@qq.com> Date: 星期四, 24 十月 2024 16:34:32 +0800 Subject: [PATCH] 角色管理和访问日志 --- src/views/project/yw/systemManage/accessLog/AccessLog.vue | 172 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 170 insertions(+), 2 deletions(-) diff --git a/src/views/project/yw/systemManage/accessLog/AccessLog.vue b/src/views/project/yw/systemManage/accessLog/AccessLog.vue index 940e3f3..1b015f7 100644 --- a/src/views/project/yw/systemManage/accessLog/AccessLog.vue +++ b/src/views/project/yw/systemManage/accessLog/AccessLog.vue @@ -1,6 +1,174 @@ <template> - <div>AccessLog</div> + <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"></script> +<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 ====================== 琛ㄦ牸鏁版嵁锛宼able 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> -- Gitblit v1.9.3