feat: access log mangement

This commit is contained in:
zzc
2025-05-07 20:35:49 +08:00
parent 36ad546e99
commit 0355575fee
17 changed files with 6753 additions and 8745 deletions

View File

@@ -4,10 +4,10 @@
<el-row :gutter="20">
<el-col :lg="12" :md="12" :sm="24" :xl="12" :xs="24">
<div class="pic-error">
<img alt="401" class="pic-error-parent" src="@/assets/error_images/401.png" />
<img alt="401" class="pic-error-child left" src="@/assets/error_images/cloud.png" />
<img alt="401" class="pic-error-child" src="@/assets/error_images/cloud.png" />
<img alt="401" class="pic-error-child" src="@/assets/error_images/cloud.png" />
<img alt="401" class="pic-error-parent" :src="require('@/assets/error_images/401.png')" />
<img alt="401" class="pic-error-child left" :src="require('@/assets/error_images/cloud.png')" />
<img alt="401" class="pic-error-child" :src="require('@/assets/error_images/cloud.png')" />
<img alt="401" class="pic-error-child" :src="require('@/assets/error_images/cloud.png')" />
</div>
</el-col>

View File

@@ -35,9 +35,9 @@
</span>
</el-form-item>
<el-button class="login-btn" :loading="loading" type="primary" @click="handleLogin">登录</el-button>
<router-link to="/register">
<!-- <router-link to="/register">
<div style="margin-top: 20px">注册</div>
</router-link>
</router-link> -->
</el-form>
</el-col>
</el-row>

View File

@@ -0,0 +1,102 @@
<template>
<div class="accessLogManagement-container">
<vab-query-form>
<vab-query-form-right-panel :span="12">
<el-form :inline="true" :model="queryForm" @submit.native.prevent>
<el-form-item>
<el-input v-model.trim="queryForm.permission" clearable placeholder="请输入查询条件" />
</el-form-item>
<el-form-item>
<el-button icon="el-icon-search" type="primary" @click="queryData">查询</el-button>
</el-form-item>
</el-form>
</vab-query-form-right-panel>
</vab-query-form>
<el-table v-loading="listLoading" :data="list" :element-loading-text="elementLoadingText" @selection-change="setSelectRows">
<el-table-column show-overflow-tooltip type="selection" />
<el-table-column align="center" label="IP" prop="ip" show-overflow-tooltip />
<el-table-column align="center" label="地址" prop="address" show-overflow-tooltip />
<el-table-column align="center" label="url" prop="url" show-overflow-tooltip />
<el-table-column align="center" label="应用" show-overflow-tooltip>
<template slot-scope="{ row }">
{{ row.appName || row.addId }}
</template>
</el-table-column>
<el-table-column align="center" label="用户" show-overflow-tooltip>
<template slot-scope="{ row }">
{{ row.userName || row.userId }}
</template>
</el-table-column>
<el-table-column align="center" label="userAgent" prop="userAgent" show-overflow-tooltip />
<el-table-column align="center" label="referrer" prop="referrer" show-overflow-tooltip />
</el-table>
<el-pagination
background
:current-page="queryForm.pageNo"
:layout="layout"
:page-size="queryForm.pageSize"
:total="total"
@current-change="handleCurrentChange"
@size-change="handleSizeChange"
/>
</div>
</template>
<script>
import { getList } from '@/api/accessLogManagement'
import { formatTime } from '@/utils'
export default {
name: 'AccessLogManagement',
data() {
return {
list: null,
listLoading: true,
layout: 'total, sizes, prev, pager, next, jumper',
total: 0,
selectRows: '',
elementLoadingText: '正在加载...',
queryForm: {
pageNo: 1,
pageSize: 10,
permission: '',
},
timeOutID: null,
}
},
created() {
this.fetchData()
},
beforeDestroy() {
clearTimeout(this.timeOutID)
},
methods: {
setSelectRows(val) {
this.selectRows = val
},
handleSizeChange(val) {
this.queryForm.pageSize = val
this.fetchData()
},
handleCurrentChange(val) {
this.queryForm.pageNo = val
this.fetchData()
},
queryData() {
this.queryForm.pageNo = 1
this.fetchData()
},
async fetchData() {
this.listLoading = true
const { data } = await getList(this.queryForm)
this.list = data.list
this.total = data.totalCount
this.timeOutID = setTimeout(() => {
this.listLoading = false
}, 300)
},
},
}
</script>

View File

@@ -1,8 +1,5 @@
<template>
<div class="appManagement-container">
<el-divider content-position="left">
演示环境仅做基础功能展示若想实现不同角色的真实菜单配置需将settings.js路由加载模式改为all模式由后端全面接管路由渲染与权限控制
</el-divider>
<vab-query-form>
<vab-query-form-left-panel :span="12">
<el-button icon="el-icon-plus" type="primary" @click="handleEdit">添加</el-button>

View File

@@ -1,8 +1,5 @@
<template>
<div class="menuManagement-container">
<el-divider content-position="left">
演示环境仅做基础功能展示若想实现不同角色的真实菜单配置需将settings.js路由加载模式改为all模式由后端全面接管路由渲染与权限控制
</el-divider>
<el-row>
<el-col :lg="4" :md="8" :sm="24" :xl="4" :xs="24">
<el-tree :data="data" :default-expanded-keys="['root']" node-key="id" :props="defaultProps" @node-click="handleNodeClick" />

View File

@@ -1,8 +1,5 @@
<template>
<div class="roleManagement-container">
<el-divider content-position="left">
演示环境仅做基础功能展示若想实现不同角色的真实菜单配置需将settings.js路由加载模式改为all模式由后端全面接管路由渲染与权限控制
</el-divider>
<vab-query-form>
<vab-query-form-left-panel :span="12">
<el-button icon="el-icon-plus" type="primary" @click="handleEdit">添加</el-button>

View File

@@ -37,7 +37,7 @@
</el-input>
</el-form-item>
<el-form-item>
<el-button class="register-btn" type="primary" @click.native.prevent="handleReister">注册</el-button>
<!-- <el-button class="register-btn" type="primary" @click.native.prevent="handleReister">注册</el-button> -->
<router-link to="/login">
<div style="margin-top: 20px">登录</div>
</router-link>
@@ -111,47 +111,47 @@
}
},
created() {
document.body.style.overflow = 'hidden'
// document.body.style.overflow = 'hidden'
},
beforeDestroy() {
document.body.style.overflow = 'auto'
clearInterval(this.getPhoneIntval)
this.getPhoneIntval = null
// document.body.style.overflow = 'auto'
// clearInterval(this.getPhoneIntval)
// this.getPhoneIntval = null
},
methods: {
getPhoneCode() {
if (!isPhone(this.form.phone)) {
//this.$baseMessage('请输入手机号', 'error')
this.$refs['registerForm'].validateField('phone')
return
}
this.isGetphone = true
let n = 60
this.getPhoneIntval = setInterval(() => {
if (n > 0) {
n--
this.phoneCode = `重新获取(${n}s)`
} else {
clearInterval(this.getPhoneIntval)
this.getPhoneIntval = null
this.phoneCode = '获取验证码'
this.isGetphone = false
}
}, 1000)
// if (!isPhone(this.form.phone)) {
// //this.$baseMessage('请输入手机号', 'error')
// this.$refs['registerForm'].validateField('phone')
// return
// }
// this.isGetphone = true
// let n = 60
// this.getPhoneIntval = setInterval(() => {
// if (n > 0) {
// n--
// this.phoneCode = `重新获取(${n}s)`
// } else {
// clearInterval(this.getPhoneIntval)
// this.getPhoneIntval = null
// this.phoneCode = '获取验证码'
// this.isGetphone = false
// }
// }, 1000)
},
handleReister() {
this.$refs['registerForm'].validate(async (valid) => {
if (valid) {
const param = {
username: this.form.username,
phone: this.form.phone,
password: this.form.password,
phoneCode: this.form.phoneCode,
}
const { msg } = await register(param)
this.$baseMessage(msg, 'success')
}
})
// this.$refs['registerForm'].validate(async (valid) => {
// if (valid) {
// const param = {
// username: this.form.username,
// phone: this.form.phone,
// password: this.form.password,
// phoneCode: this.form.phoneCode,
// }
// const { msg } = await register(param)
// this.$baseMessage(msg, 'success')
// }
// })
},
},
}