Commit 84d1a5ba authored by 李鹏 's avatar 李鹏

日志管理接口联调

parent 53337b81
......@@ -949,18 +949,38 @@ export const menuData = {
menuName: "用户行为审计",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 1,
path: "/system-admin/log/userAccount",
path: "/system-admin/log/userBehavior",
parentPath: "/system-admin/log",
icon: "",
menu_id: "185558e4-afc4-44b0-ba9e-12e11cad25ef",
p_menu_id: "224f73fd-f095-40ff-b1dd-6d094cf59280",
source: "",
children: null,
children: [
{
id: 778,
level: 5,
sort: 1,
menuName: "详情",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
path: "/system-admin/log/userBehavior/detail",
parentPath: "/system-admin/log/userBehavior",
icon: "",
menu_id: "a7f9bb86-f9b2-4bf6-a201-d7edb937f639",
p_menu_id: "185558e4-afc4-44b0-ba9e-12e11cad25ef",
source: "",
children: null,
system_type: "",
new_window: 0,
remark: "",
built_in: 0,
},
],
system_type: "",
new_window: 0,
remark: "",
built_in: 0,
name: "system-admin-log-userAccount",
name: "system-admin-log-userBehavior",
rowPath: ".3.4.1",
},
{
......@@ -970,7 +990,7 @@ export const menuData = {
menuName: "用户账户审计",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 1,
path: "/system-admin/log/userBehavior",
path: "/system-admin/log/userAccount",
parentPath: "/system-admin/log",
icon: "",
menu_id: "84f732d7-574b-4f66-9ef0-2aad4cdc353c",
......@@ -981,7 +1001,7 @@ export const menuData = {
new_window: 0,
remark: "",
built_in: 0,
name: "system-admin-log-userBehavior",
name: "system-admin-log-userAccount",
rowPath: ".3.4.2",
},
],
......
......@@ -8,7 +8,7 @@
style="width: 100%"
type="date"
value-format="YYYY-MM-DD"
v-model="date"
v-model="logTime"
placeholder="请选择日期" />
<div class="type_station bg-scroll">
......@@ -18,8 +18,8 @@
@click="nodeClick(item)"
v-for="(item, index) in containerList"
:key="index"
:title="item.name">
{{ item.name }}
:title="item">
{{ item }}
</div>
</div>
</div>
......@@ -28,10 +28,10 @@
<div class="form-filter">
<el-form :model="filterForm" inline>
<el-form-item label="级别">
<el-select placeholder="全部" style="width: 160px" v-model="filterForm.level">
<el-option label="info" value="info"> </el-option>
<el-option label="warning" value="warning"> </el-option>
<el-option label="error" value="error"> </el-option>
<el-select placeholder="全部" style="width: 160px" v-model="filterForm.logLevel">
<el-option label="INFO" value="INFO"> </el-option>
<el-option label="WARNING" value="WARNING"> </el-option>
<el-option label="ERROR" value="ERROR"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="关键字">
......@@ -63,37 +63,37 @@ import { ElMessage } from "element-plus";
import axios from "@/request/http.js";
import bgBreadcrumb from "@/components/bg-breadcrumb.vue";
const state = reactive({
date: "",
logTime: "",
containerList: [], // 容器数据
selectedNodeContainer: "",
filterForm: {
level: "",
logLevel: "",
search: "",
},
logList: [],
});
watch(
() => state.date,
() => state.logTime,
(val) => {
state.selectedNodeContainer = "";
getContainerList();
}
);
const nodeClick = (item) => {
state.selectedNodeContainer = item.value;
state.selectedNodeContainer = item;
reset();
};
// 获取容器列表
const getContainerList = () => {
let params = {
date: state.date,
logTime: state.logTime,
};
axios
.get("/apaas/system/v5/log/system/tree", { params })
.get("/v1/api/log/system/list", { params })
.then((res) => {
if (res.data.code == 200) {
state.containerList = res.data.data || [];
state.selectedNodeContainer = state.containerList.length ? state.containerList[0].value : "";
state.selectedNodeContainer = state.containerList.length ? state.containerList[0] : "";
state.selectedNodeContainer ? reset() : (state.logList = []);
} else {
ElMessage.error(res.data.data);
......@@ -106,11 +106,11 @@ const getContainerList = () => {
//查询
const search = () => {
let params = {
index: state.selectedNodeContainer,
name: state.selectedNodeContainer,
...state.filterForm,
};
axios
.get("/apaas/system/v5/log/system/log", { params })
.get("/v1/api/log/system/log", { params })
.then((res) => {
if (res.data.code == 200) {
state.logList = (res.data.data || []).map((item) => JSON.stringify(item));
......@@ -126,7 +126,7 @@ const search = () => {
//重置
const reset = () => {
state.filterForm = {
level: "",
logLevel: "",
search: "",
};
search();
......@@ -135,7 +135,7 @@ onBeforeMount(() => {
getContainerList();
});
const { date, containerList, selectedNodeContainer, filterForm, logList } = toRefs(state);
const { logTime, containerList, selectedNodeContainer, filterForm, logList } = toRefs(state);
</script>
<style lang="scss" scoped>
......
......@@ -2,16 +2,11 @@
<div class="page_container">
<bg-breadcrumb></bg-breadcrumb>
<div class="main_container">
<bg-filter-group
@search="changeSearch"
v-model="filter.search"
placeholder="请输入账号、手机号和所属组织">
<bg-filter-group @search="changeSearch" v-model="filter.search" placeholder="请输入账号、手机号和所属组织">
<template v-slot:left_action>
<div class="apaas_button">
<el-button type="primary" @click="exportFile">
<bg-icon
style="font-size: 12px; color: #fff; margin-right: 8px"
icon="#bg-ic-file-send"></bg-icon>
<bg-icon style="font-size: 12px; color: #fff; margin-right: 8px" icon="#bg-ic-file-send"></bg-icon>
导出
</el-button>
<el-popconfirm
......@@ -36,17 +31,6 @@
<template v-slot:filter_group>
<div class="left-filter filter_list">
<div class="filter_item">
<span class="filter_title">用户类型</span>
<el-select v-model="filter.is_admin" placeholder="请选择" style="width: 300px">
<el-option
v-for="(item, index) in userTypeList"
:key="index"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
<div class="filter_item">
<span class="filter_title">上次访问时间</span>
<el-date-picker
......@@ -61,22 +45,14 @@
<div class="filter_item">
<span class="filter_title">活跃度</span>
<el-select v-model="filter.active" placeholder="请选择" style="width: 300px">
<el-option
v-for="(item, index) in activeOptions"
:key="index"
:label="item.label"
:value="item.value">
<el-option v-for="(item, index) in activeOptions" :key="index" :label="item.label" :value="item.value">
</el-option>
</el-select>
</div>
<div class="filter_item">
<span class="filter_title">密码强度</span>
<el-select v-model="filter.pwd_level" placeholder="请选择" style="width: 300px">
<el-option
v-for="(item, index) in pwdLevelList"
:key="index"
:label="item.label"
:value="item.value">
<el-option v-for="(item, index) in pwdLevelList" :key="index" :label="item.label" :value="item.value">
</el-option>
</el-select>
</div>
......@@ -137,7 +113,7 @@
</bg-table>
<bg-pagination
:page="filter.page"
:size="filter.limit"
:size="filter.page_size"
:total="filter.total"
@change-page="changePage"
@change-size="changeSize">
......@@ -168,12 +144,11 @@ const accountTable = ref(null);
const state = reactive({
filter: {
search: "",
is_admin: "",
time: [],
active: 0,
pwd_level: "",
page: 1,
limit: 10,
page_size: 10,
total: 0,
},
activeOptions: [
......@@ -200,11 +175,6 @@ const state = reactive({
prop: "contact_phone",
// minWidth: 360,
},
{
label: "用户类型",
prop: "is_admin",
// width: 200,
},
{
label: "所属组织",
prop: "name",
......@@ -252,14 +222,13 @@ const exportFile = () => {
params.end_at = params.time ? params.time[1] || "" : "";
delete params.time;
axios
.get(`/apaas/system/v5/log/userAccountAudit/list/export`, {
.get(`/v1/api/log/userAccountAudit/list/export`, {
params,
responseType: "blob",
})
.then((res) => {
if (res.status === 200) {
const type =
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8";
const type = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8";
downloadBlob(res.data, type);
} else {
ElMessage.error(res.statusText);
......@@ -273,7 +242,7 @@ const forceModifyPwd = () => {
const selectedRows = Object.values(selectedObj);
if (!selectedRows.length) return ElMessage.warning("请先选择修改项");
const ids = selectedRows.map((item) => item.id);
axios.post("/apaas/system/v5/user/resetpwd", { ids }).then((res) => {
axios.post("/v1/api/user/resetPwd", { ids }).then((res) => {
if (res.data.code === 200) {
ElMessage.success(res.data.msg);
cleanSelected();
......@@ -301,7 +270,7 @@ const getTableRows = () => {
params.end_at = params.time ? params.time[1] || "" : "";
delete params.time;
axios
.get(`/apaas/system/v5/log/userAccountAudit/list`, {
.get(`/v1/api/log/userAccountAudit/list`, {
params,
})
.then((res) => {
......@@ -317,18 +286,17 @@ const filterAction = () => {
changePage(1);
};
const changeSize = (size) => {
state.filter.limit = size;
state.filter.page_size = size;
changePage(1);
};
const filterClear = () => {
state.filter = {
search: "",
is_admin: "",
time: [],
active: 0,
pwd_level: "",
page: 1,
limit: 10,
page_size: 10,
total: 0,
};
changePage(1);
......
......@@ -45,11 +45,6 @@ const instanceData = reactive({
label: "手机号",
value: "",
},
{
key: "user_type",
label: "用户类型",
value: "",
},
{
key: "org_name",
label: "所属组织",
......@@ -121,7 +116,7 @@ onBeforeMount(() => {
});
const getDetailInfo = () => {
axios
.get(`/apaas/system/v5/log/userBehavior/detail/${route.query.id}`)
.get(`/v1/api/log/userBehavior/detail/${route.query.id}`)
.then((res) => {
if (res.data.code == 200) {
const result = res.data.data || {};
......
......@@ -2,16 +2,11 @@
<div class="page_container">
<bg-breadcrumb></bg-breadcrumb>
<div class="main_container">
<bg-filter-group
@search="changeSearch"
v-model="filter.search"
placeholder="请输入账号、手机号和所属组织">
<bg-filter-group @search="changeSearch" v-model="filter.search" placeholder="请输入账号、手机号和所属组织">
<template v-slot:left_action>
<div class="apaas_button">
<el-button type="primary" @click="exportFile">
<bg-icon
style="font-size: 12px; color: #fff; margin-right: 8px"
icon="#bg-ic-file-send"></bg-icon>
<bg-icon style="font-size: 12px; color: #fff; margin-right: 8px" icon="#bg-ic-file-send"></bg-icon>
导出
</el-button>
<el-button @click="deleteBatch"> 批量删除 </el-button>
......@@ -25,17 +20,6 @@
<template v-slot:filter_group>
<div class="left-filter filter_list">
<div class="filter_item">
<span class="filter_title">用户类型</span>
<el-select v-model="filter.is_admin" placeholder="请选择" style="width: 300px">
<el-option
v-for="(item, index) in userTypeList"
:key="index"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
</div>
<div class="filter_item">
<span class="filter_title">操作时间</span>
<el-date-picker
......@@ -61,11 +45,7 @@
<div class="filter_item">
<span class="filter_title">请求方式</span>
<el-select v-model="filter.req_method" placeholder="请选择" style="width: 300px">
<el-option
v-for="(item, index) in reqMethodList"
:key="index"
:label="item.label"
:value="item.value">
<el-option v-for="(item, index) in reqMethodList" :key="index" :label="item.label" :value="item.value">
</el-option>
</el-select>
</div>
......@@ -88,16 +68,7 @@
</template>
</bg-filter-group>
<div class="table_container">
<bg-table
ref="userTable"
:headers="headers"
:rows="tableRows"
:stripe="true"
select
@selectAc="selectChange">
<template v-slot:is_admin="{ row }">
<span>{{ userTypeConfig[row.is_admin] }}</span>
</template>
<bg-table ref="userTable" :headers="headers" :rows="tableRows" :stripe="true" select @selectAc="selectChange">
<template v-slot:operate_type="{ row }">
<span>{{ filterOperateType(row.operate_type) }}</span>
</template>
......@@ -118,7 +89,7 @@
</bg-table>
<bg-pagination
:page="filter.page"
:size="filter.limit"
:size="filter.page_size"
:total="filter.total"
@change-page="changePage"
@change-size="changeSize">
......@@ -163,13 +134,12 @@ const userTypeList = computed(() => {
const state = reactive({
filter: {
search: "",
is_admin: "",
time: [],
operate_type: "",
req_method: "",
operate_status: "",
page: 1,
limit: 10,
page_size: 10,
total: 0,
},
operateStatusList: [
......@@ -184,11 +154,6 @@ const state = reactive({
prop: "system_account",
// minWidth: 280,
},
{
label: "用户类型",
prop: "is_admin",
// minWidth: 360,
},
{
label: "系统模块",
prop: "system_module",
......@@ -259,8 +224,7 @@ const state = reactive({
deleteTips: "",
});
const { filter, operateStatusList, headers, selectedNum, tableRows, deleteDialog, deleteTips } =
toRefs(state);
const { filter, operateStatusList, headers, selectedNum, tableRows, deleteDialog, deleteTips } = toRefs(state);
//导出
const exportFile = () => {
let params = { ...state.filter };
......@@ -269,14 +233,13 @@ const exportFile = () => {
delete params.time;
delete params.total;
axios
.get(`/apaas/system/v5/log/userBehavior/list/export`, {
.get(`/v1/api/log/userBehavior/list/export`, {
params,
responseType: "blob",
})
.then((res) => {
if (res.status === 200) {
const type =
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8";
const type = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8";
downloadBlob(res.data, type);
} else {
ElMessage.error(res.statusText);
......@@ -316,7 +279,7 @@ const deleteCurrent = (row) => {
const confirmDelete = () => {
const ids = state.selectedRows.map((item) => item.id);
axios
.delete(`/apaas/system/v5/log/userBehavior/delete?ids=${ids.join(",")}`)
.delete(`/v1/api/log/userBehavior/delete?ids=${ids.join(",")}`)
.then((res) => {
if (res.data.code === 200) {
ElMessage.success(res.data.data);
......@@ -348,7 +311,7 @@ const getTableRows = () => {
params.end_at = params.time ? params.time[1] || "" : "";
delete params.time;
axios
.get(`/apaas/system/v5/log/userBehavior/list`, {
.get(`/v1/api/log/userBehavior/list`, {
params,
})
.then((res) => {
......@@ -364,19 +327,18 @@ const filterAction = () => {
changePage(1);
};
const changeSize = (size) => {
state.filter.limit = size;
state.filter.page_size = size;
changePage(1);
};
const filterClear = () => {
state.filter = {
search: "",
is_admin: "",
time: [],
operate_type: "",
req_method: "",
operate_status: "",
page: 1,
limit: 10,
page_size: 10,
total: 0,
};
changePage(1);
......@@ -384,7 +346,7 @@ const filterClear = () => {
const goDetail = (row) => {
router.push({
path: "/log/userBehavior/detail",
path: "/system-admin/log/userBehavior/detail",
query: {
id: row.id,
},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment