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