feat: access log mangement
This commit is contained in:
@@ -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>
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
102
src/views/personnelManagement/accessLogManagement/index.vue
Normal file
102
src/views/personnelManagement/accessLogManagement/index.vue
Normal 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>
|
||||
@@ -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>
|
||||
|
||||
@@ -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" />
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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')
|
||||
// }
|
||||
// })
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user