parent
54a788a917
commit
f131de1dc4
@ -0,0 +1,80 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询系统登录日志列表页接口
|
||||||
|
* @param {*} data
|
||||||
|
*/
|
||||||
|
export function queryLoginLogListAPI(data) {
|
||||||
|
return request({
|
||||||
|
url: 'admin/log/loginRecord',
|
||||||
|
method: 'post',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json;charset=UTF-8'
|
||||||
|
},
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统登录日志导出
|
||||||
|
* @param {*} data
|
||||||
|
*/
|
||||||
|
// export function loginLogExportAPI(data) {
|
||||||
|
// return request({
|
||||||
|
// url: 'admin/log/excelImport',
|
||||||
|
// method: 'post',
|
||||||
|
// data: data,
|
||||||
|
// responseType: 'blob',
|
||||||
|
// headers: {
|
||||||
|
// 'Content-Type': 'application/json;charset=UTF-8'
|
||||||
|
// },
|
||||||
|
// timeout: 60000
|
||||||
|
// })
|
||||||
|
// }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查看系统操作日志接口
|
||||||
|
* @param {*} data
|
||||||
|
*/
|
||||||
|
export function querySystemLogListAPI(data) {
|
||||||
|
return request({
|
||||||
|
url: 'admin/log/systemRecord',
|
||||||
|
method: 'post',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json;charset=UTF-8'
|
||||||
|
},
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查看数据操作日志接口
|
||||||
|
* @param {*} data
|
||||||
|
*/
|
||||||
|
export function queryDataOptionLogListAPI(data) {
|
||||||
|
return request({
|
||||||
|
url: 'admin/log/dataRecord',
|
||||||
|
method: 'post',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json;charset=UTF-8'
|
||||||
|
},
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 系统日志导出
|
||||||
|
* @param {*} data
|
||||||
|
*/
|
||||||
|
export function systemLogExportAPI(data) {
|
||||||
|
return request({
|
||||||
|
url: 'admin/log/excelImport',
|
||||||
|
method: 'post',
|
||||||
|
data: data,
|
||||||
|
responseType: 'blob',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json;charset=UTF-8'
|
||||||
|
},
|
||||||
|
timeout: 60000
|
||||||
|
})
|
||||||
|
}
|
@ -0,0 +1,129 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
ref="wkDialog"
|
||||||
|
:visible="visible"
|
||||||
|
:append-to-body="true"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
title="重置部门"
|
||||||
|
width="500px"
|
||||||
|
@close="handleCancel">
|
||||||
|
<div >
|
||||||
|
<el-form
|
||||||
|
ref="form"
|
||||||
|
:model="fieldFrom"
|
||||||
|
:rules="rules"
|
||||||
|
label-position="top">
|
||||||
|
<el-form-item
|
||||||
|
label="部门"
|
||||||
|
prop="structure_id">
|
||||||
|
<wk-dep-select
|
||||||
|
v-model="fieldFrom.structure_id"
|
||||||
|
radio
|
||||||
|
style="width: 100%;"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
<span
|
||||||
|
slot="footer"
|
||||||
|
class="dialog-footer">
|
||||||
|
<el-button @click.native="handleCancel">取消</el-button>
|
||||||
|
<el-button
|
||||||
|
v-debounce="handleConfirm"
|
||||||
|
type="primary">保存</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
adminUserSetUserDeptPI
|
||||||
|
} from '@/api/admin/employeeDep'
|
||||||
|
|
||||||
|
import WkDepSelect from '@/components/NewCom/WkDepSelect'
|
||||||
|
|
||||||
|
import ElDialogLoadingMixin from '@/mixins/ElDialogLoading'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
// 重置部门
|
||||||
|
name: 'EditDepDialog',
|
||||||
|
|
||||||
|
components: {
|
||||||
|
WkDepSelect
|
||||||
|
},
|
||||||
|
|
||||||
|
mixins: [ElDialogLoadingMixin],
|
||||||
|
|
||||||
|
props: {
|
||||||
|
selectionList: Array, // 员工信息
|
||||||
|
visible: {
|
||||||
|
type: Boolean,
|
||||||
|
required: true,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
fieldFrom: {
|
||||||
|
structure_id: ''
|
||||||
|
},
|
||||||
|
rules: {
|
||||||
|
structure_id: { required: true, message: '请选择', trigger: 'change' }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
computed: {},
|
||||||
|
|
||||||
|
watch: {},
|
||||||
|
|
||||||
|
created() {},
|
||||||
|
|
||||||
|
mounted() {},
|
||||||
|
|
||||||
|
beforeDestroy() {},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
/**
|
||||||
|
* 取消选择
|
||||||
|
*/
|
||||||
|
handleCancel() {
|
||||||
|
this.$emit('update:visible', false)
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 点击确定
|
||||||
|
*/
|
||||||
|
handleConfirm() {
|
||||||
|
this.$refs.form.validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
const id = this.selectionList.map(item => item.id)
|
||||||
|
this.loading = true
|
||||||
|
adminUserSetUserDeptPI({
|
||||||
|
...this.fieldFrom,
|
||||||
|
id
|
||||||
|
}).then(res => {
|
||||||
|
this.loading = false
|
||||||
|
this.$message.success('操作成功')
|
||||||
|
this.$emit('change')
|
||||||
|
this.handleCancel()
|
||||||
|
}).catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.el-form {
|
||||||
|
margin-top: 10px;
|
||||||
|
/deep/ .el-form-item__label {
|
||||||
|
line-height: 30px;
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
@ -0,0 +1,263 @@
|
|||||||
|
<template>
|
||||||
|
<div class="main">
|
||||||
|
<xr-header
|
||||||
|
icon-class="wk wk-record"
|
||||||
|
icon-color="#2362FB"
|
||||||
|
label="数据操作日志" />
|
||||||
|
<div class="main-body">
|
||||||
|
<flexbox class="main-table-header">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="dateTime"
|
||||||
|
type="daterange"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
range-separator="-"
|
||||||
|
start-placeholder="开始时间"
|
||||||
|
end-placeholder="结束时间"/>
|
||||||
|
<xh-user-cell
|
||||||
|
:radio="false"
|
||||||
|
placeholder="选择人员"
|
||||||
|
@value-change="userChange" />
|
||||||
|
<el-select
|
||||||
|
v-model="model"
|
||||||
|
@click="modelChange">
|
||||||
|
<el-option
|
||||||
|
v-for="item in modelOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"/>
|
||||||
|
</el-select>
|
||||||
|
<el-select
|
||||||
|
v-model="subModelLabels"
|
||||||
|
multiple
|
||||||
|
collapse-tags>
|
||||||
|
<el-option
|
||||||
|
v-for="item in subModelsOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"/>
|
||||||
|
</el-select>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="refreshList">查询</el-button>
|
||||||
|
<el-button
|
||||||
|
class="main-table-header-button"
|
||||||
|
@click="exportClick">导出</el-button>
|
||||||
|
</flexbox>
|
||||||
|
<el-table
|
||||||
|
v-loading="loading"
|
||||||
|
:data="list"
|
||||||
|
:height="tableHeight"
|
||||||
|
class="main-table"
|
||||||
|
highlight-current-row
|
||||||
|
style="width: 100%">
|
||||||
|
<el-table-column
|
||||||
|
v-for="(item, index) in fieldList"
|
||||||
|
:key="index"
|
||||||
|
:prop="item.prop"
|
||||||
|
:label="item.label"
|
||||||
|
show-overflow-tooltip/>
|
||||||
|
<el-table-column/>
|
||||||
|
</el-table>
|
||||||
|
<div class="p-contianer">
|
||||||
|
<el-pagination
|
||||||
|
:current-page="currentPage"
|
||||||
|
:page-sizes="pageSizes"
|
||||||
|
:page-size.sync="pageSize"
|
||||||
|
:total="total"
|
||||||
|
class="p-bar"
|
||||||
|
background
|
||||||
|
layout="prev, pager, next, sizes, total, jumper"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
systemLogExportAPI,
|
||||||
|
queryDataOptionLogListAPI
|
||||||
|
} from '@/api/admin/log'
|
||||||
|
|
||||||
|
import XrHeader from '@/components/XrHeader'
|
||||||
|
import XhUserCell from '@/components/CreateCom/XhUserCell'
|
||||||
|
import { Loading } from 'element-ui'
|
||||||
|
import HandleLogMixin from './mixins/HandleLog'
|
||||||
|
|
||||||
|
import { downloadExcelWithResData } from '@/utils'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
// 操作日志日志
|
||||||
|
name: 'DataHandleLog',
|
||||||
|
components: {
|
||||||
|
XrHeader,
|
||||||
|
XhUserCell
|
||||||
|
},
|
||||||
|
mixins: [HandleLogMixin],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
loading: false, // 加载动画
|
||||||
|
tableHeight: document.documentElement.clientHeight - 240, // 表的高度
|
||||||
|
dateTime: [],
|
||||||
|
userList: [],
|
||||||
|
model: '',
|
||||||
|
subModelLabels: [],
|
||||||
|
list: [],
|
||||||
|
currentPage: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
pageSizes: [10, 20, 30, 40],
|
||||||
|
total: 0,
|
||||||
|
|
||||||
|
postParams: {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
subModelsOptions() {
|
||||||
|
const item = this.modelOptions.find(item => item.value === this.model)
|
||||||
|
return item ? item.list : []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
// 控制table的高度
|
||||||
|
window.onresize = () => {
|
||||||
|
self.tableHeight = document.documentElement.clientHeight - 240
|
||||||
|
}
|
||||||
|
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
userChange(data) {
|
||||||
|
this.userList = data.value || []
|
||||||
|
},
|
||||||
|
|
||||||
|
refreshList() {
|
||||||
|
this.currentPage = 1
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模块change
|
||||||
|
*/
|
||||||
|
modelChange() {
|
||||||
|
this.subModelLabels = []
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取列表数据
|
||||||
|
*/
|
||||||
|
getList() {
|
||||||
|
this.loading = true
|
||||||
|
const params = {
|
||||||
|
page: this.currentPage,
|
||||||
|
limit: this.pageSize,
|
||||||
|
model: this.model
|
||||||
|
// type: 1 // 1 数据操作日志 2 系统操作日志
|
||||||
|
}
|
||||||
|
if (this.userList && this.userList.length) {
|
||||||
|
params.userIds = this.userList.map(item => item.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.dateTime && this.dateTime.length) {
|
||||||
|
params.startTime = this.dateTime[0]
|
||||||
|
params.endTime = this.dateTime[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
params.subModelLabels = this.subModelLabels
|
||||||
|
this.postParams = params
|
||||||
|
queryDataOptionLogListAPI(params)
|
||||||
|
.then(res => {
|
||||||
|
const list = res.data.list
|
||||||
|
// list.forEach(item => {
|
||||||
|
// item.model = this.getModelName(item.model)
|
||||||
|
// })
|
||||||
|
this.list = list
|
||||||
|
this.total = res.data.count
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加审批流
|
||||||
|
*/
|
||||||
|
exportClick() {
|
||||||
|
const loading = Loading.service({ fullscreen: true, text: '导出中...' })
|
||||||
|
systemLogExportAPI({ ...this.postParams, action: 'getRecordLogs' })
|
||||||
|
.then(res => {
|
||||||
|
downloadExcelWithResData(res)
|
||||||
|
loading.close()
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
loading.close()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 更改每页展示数量
|
||||||
|
handleSizeChange(val) {
|
||||||
|
this.pageSize = val
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
// 更改当前页数
|
||||||
|
handleCurrentChange(val) {
|
||||||
|
this.currentPage = val
|
||||||
|
this.getList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.main {
|
||||||
|
height:100%;
|
||||||
|
|
||||||
|
/deep/ .xr-header {
|
||||||
|
padding: 15px 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.main-body {
|
||||||
|
background-color: white;
|
||||||
|
border-top: 1px solid $xr-border-line-color;
|
||||||
|
border-bottom: 1px solid $xr-border-line-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main-table-header {
|
||||||
|
height: 50px;
|
||||||
|
background-color: white;
|
||||||
|
position: relative;
|
||||||
|
.main-table-header-button {
|
||||||
|
margin-right: 20px;
|
||||||
|
position: absolute;
|
||||||
|
right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-date-editor--daterange {
|
||||||
|
width: 300px;
|
||||||
|
margin: 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .user-container {
|
||||||
|
width: 200px;
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-select {
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.p-contianer {
|
||||||
|
position: relative;
|
||||||
|
background-color: white;
|
||||||
|
height: 44px;
|
||||||
|
.p-bar {
|
||||||
|
float: right;
|
||||||
|
margin: 5px 100px 0 0;
|
||||||
|
font-size: 14px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@import '../styles/table.scss';
|
||||||
|
</style>
|
@ -0,0 +1,275 @@
|
|||||||
|
<template>
|
||||||
|
<div class="main">
|
||||||
|
<xr-header
|
||||||
|
icon-class="wk wk-record"
|
||||||
|
icon-color="#2362FB"
|
||||||
|
label="登录日志" />
|
||||||
|
<div class="main-body">
|
||||||
|
<flexbox class="main-table-header">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="dateTime"
|
||||||
|
type="daterange"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
range-separator="-"
|
||||||
|
start-placeholder="开始时间"
|
||||||
|
end-placeholder="结束时间"/>
|
||||||
|
<xh-user-cell
|
||||||
|
:radio="false"
|
||||||
|
placeholder="选择人员"
|
||||||
|
@value-change="userChange" />
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="refreshList">查询</el-button>
|
||||||
|
<el-button
|
||||||
|
class="main-table-header-button"
|
||||||
|
@click="exportClick">导出</el-button>
|
||||||
|
</flexbox>
|
||||||
|
<el-table
|
||||||
|
v-loading="loading"
|
||||||
|
:data="list"
|
||||||
|
:height="tableHeight"
|
||||||
|
:cell-class-name="cellClassName"
|
||||||
|
class="main-table"
|
||||||
|
highlight-current-row
|
||||||
|
style="width: 100%">
|
||||||
|
<el-table-column
|
||||||
|
v-for="(item, index) in fieldList"
|
||||||
|
:key="index"
|
||||||
|
:prop="item.prop"
|
||||||
|
:label="item.label"
|
||||||
|
show-overflow-tooltip/>
|
||||||
|
<el-table-column/>
|
||||||
|
</el-table>
|
||||||
|
<div class="p-contianer">
|
||||||
|
<el-pagination
|
||||||
|
:current-page="currentPage"
|
||||||
|
:page-sizes="pageSizes"
|
||||||
|
:page-size.sync="pageSize"
|
||||||
|
:total="total"
|
||||||
|
class="p-bar"
|
||||||
|
background
|
||||||
|
layout="prev, pager, next, sizes, total, jumper"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
queryLoginLogListAPI,
|
||||||
|
systemLogExportAPI
|
||||||
|
} from '@/api/admin/log'
|
||||||
|
|
||||||
|
import XrHeader from '@/components/XrHeader'
|
||||||
|
import XhUserCell from '@/components/CreateCom/XhUserCell'
|
||||||
|
import { Loading } from 'element-ui'
|
||||||
|
|
||||||
|
import { downloadExcelWithResData } from '@/utils'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
// 登录日志
|
||||||
|
name: 'LoginLog',
|
||||||
|
components: {
|
||||||
|
XrHeader,
|
||||||
|
XhUserCell
|
||||||
|
},
|
||||||
|
mixins: [],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
loading: false, // 加载动画
|
||||||
|
tableHeight: document.documentElement.clientHeight - 240, // 表的高度
|
||||||
|
dateTime: [],
|
||||||
|
userList: [],
|
||||||
|
list: [],
|
||||||
|
fieldList: [
|
||||||
|
{
|
||||||
|
prop: 'username',
|
||||||
|
label: '用户',
|
||||||
|
width: 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'create_time',
|
||||||
|
label: '登录时间',
|
||||||
|
width: 150
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'ip',
|
||||||
|
label: 'IP地址',
|
||||||
|
width: 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'address',
|
||||||
|
label: '登录地点',
|
||||||
|
width: 150
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'remark',
|
||||||
|
label: '设备类型',
|
||||||
|
width: 150
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'browser',
|
||||||
|
label: '终端内核',
|
||||||
|
width: 150
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'os',
|
||||||
|
label: '平台',
|
||||||
|
width: 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'type',
|
||||||
|
label: '认证结果',
|
||||||
|
width: 100
|
||||||
|
}
|
||||||
|
],
|
||||||
|
currentPage: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
pageSizes: [10, 20, 30, 40],
|
||||||
|
total: 0,
|
||||||
|
|
||||||
|
postParams: {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {},
|
||||||
|
mounted() {
|
||||||
|
// 控制table的高度
|
||||||
|
window.onresize = () => {
|
||||||
|
self.tableHeight = document.documentElement.clientHeight - 240
|
||||||
|
}
|
||||||
|
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
userChange(data) {
|
||||||
|
this.userList = data.value || []
|
||||||
|
},
|
||||||
|
|
||||||
|
refreshList() {
|
||||||
|
this.currentPage = 1
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
|
||||||
|
/** 获取列表数据 */
|
||||||
|
getList() {
|
||||||
|
this.loading = true
|
||||||
|
const params = {
|
||||||
|
page: this.currentPage,
|
||||||
|
limit: this.pageSize
|
||||||
|
}
|
||||||
|
if (this.userList && this.userList.length) {
|
||||||
|
params.userIds = this.userList.map(item => item.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.dateTime && this.dateTime.length) {
|
||||||
|
params.startTime = this.dateTime[0]
|
||||||
|
params.endTime = this.dateTime[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
this.postParams = params
|
||||||
|
queryLoginLogListAPI(params)
|
||||||
|
.then(res => {
|
||||||
|
const list = res.data.list || []
|
||||||
|
// list.forEach(item => {
|
||||||
|
// item.authResult = {
|
||||||
|
// 1: '成功',
|
||||||
|
// 2: '失败'
|
||||||
|
// }[item.authResult]
|
||||||
|
// })
|
||||||
|
this.list = list
|
||||||
|
this.total = res.data.dataCount
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 通过回调控制class
|
||||||
|
*/
|
||||||
|
cellClassName({ row, column, rowIndex, columnIndex }) {
|
||||||
|
if (column.property === 'name') {
|
||||||
|
return 'can-visit--underline'
|
||||||
|
} else {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 添加审批流
|
||||||
|
*/
|
||||||
|
exportClick() {
|
||||||
|
const loading = Loading.service({ fullscreen: true, text: '导出中...' })
|
||||||
|
systemLogExportAPI({ ...this.postParams, action: 'getLoginRecord' })
|
||||||
|
.then(res => {
|
||||||
|
downloadExcelWithResData(res)
|
||||||
|
loading.close()
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
loading.close()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 更改每页展示数量
|
||||||
|
handleSizeChange(val) {
|
||||||
|
this.pageSize = val
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
// 更改当前页数
|
||||||
|
handleCurrentChange(val) {
|
||||||
|
this.currentPage = val
|
||||||
|
this.getList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.main {
|
||||||
|
height:100%;
|
||||||
|
|
||||||
|
/deep/ .xr-header {
|
||||||
|
padding: 15px 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.main-body {
|
||||||
|
background-color: white;
|
||||||
|
border-top: 1px solid $xr-border-line-color;
|
||||||
|
border-bottom: 1px solid $xr-border-line-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main-table-header {
|
||||||
|
height: 50px;
|
||||||
|
background-color: white;
|
||||||
|
position: relative;
|
||||||
|
.main-table-header-button {
|
||||||
|
margin-right: 20px;
|
||||||
|
position: absolute;
|
||||||
|
right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-date-editor--daterange {
|
||||||
|
width: 300px;
|
||||||
|
margin: 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .user-container {
|
||||||
|
width: 200px;
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.p-contianer {
|
||||||
|
position: relative;
|
||||||
|
background-color: white;
|
||||||
|
height: 44px;
|
||||||
|
.p-bar {
|
||||||
|
float: right;
|
||||||
|
margin: 5px 100px 0 0;
|
||||||
|
font-size: 14px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@import '../styles/table.scss';
|
||||||
|
</style>
|
@ -0,0 +1,240 @@
|
|||||||
|
<template>
|
||||||
|
<div class="main">
|
||||||
|
<xr-header
|
||||||
|
icon-class="wk wk-record"
|
||||||
|
icon-color="#2362FB"
|
||||||
|
label="系统操作日志" />
|
||||||
|
<div class="main-body">
|
||||||
|
<flexbox class="main-table-header">
|
||||||
|
<el-date-picker
|
||||||
|
v-model="dateTime"
|
||||||
|
type="daterange"
|
||||||
|
value-format="yyyy-MM-dd"
|
||||||
|
range-separator="-"
|
||||||
|
start-placeholder="开始时间"
|
||||||
|
end-placeholder="结束时间"/>
|
||||||
|
<xh-user-cell
|
||||||
|
:radio="false"
|
||||||
|
placeholder="选择人员"
|
||||||
|
@value-change="userChange" />
|
||||||
|
<el-select
|
||||||
|
v-model="subModelLabels"
|
||||||
|
multiple
|
||||||
|
style="width: 200px;"
|
||||||
|
collapse-tags>
|
||||||
|
<el-option
|
||||||
|
v-for="item in sysOptions"
|
||||||
|
:key="item.value"
|
||||||
|
:label="item.label"
|
||||||
|
:value="item.value"/>
|
||||||
|
</el-select>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
@click="refreshList">查询</el-button>
|
||||||
|
<el-button
|
||||||
|
class="main-table-header-button"
|
||||||
|
@click="exportClick">导出</el-button>
|
||||||
|
</flexbox>
|
||||||
|
<el-table
|
||||||
|
v-loading="loading"
|
||||||
|
:data="list"
|
||||||
|
:height="tableHeight"
|
||||||
|
class="main-table"
|
||||||
|
highlight-current-row
|
||||||
|
style="width: 100%">
|
||||||
|
<el-table-column
|
||||||
|
v-for="(item, index) in fieldList"
|
||||||
|
:key="index"
|
||||||
|
:prop="item.prop"
|
||||||
|
:label="item.label"
|
||||||
|
show-overflow-tooltip/>
|
||||||
|
<el-table-column/>
|
||||||
|
</el-table>
|
||||||
|
<div class="p-contianer">
|
||||||
|
<el-pagination
|
||||||
|
:current-page="currentPage"
|
||||||
|
:page-sizes="pageSizes"
|
||||||
|
:page-size.sync="pageSize"
|
||||||
|
:total="total"
|
||||||
|
class="p-bar"
|
||||||
|
background
|
||||||
|
layout="prev, pager, next, sizes, total, jumper"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import {
|
||||||
|
querySystemLogListAPI,
|
||||||
|
systemLogExportAPI
|
||||||
|
} from '@/api/admin/log'
|
||||||
|
|
||||||
|
import XrHeader from '@/components/XrHeader'
|
||||||
|
import XhUserCell from '@/components/CreateCom/XhUserCell'
|
||||||
|
import { Loading } from 'element-ui'
|
||||||
|
|
||||||
|
import HandleLogMixin from './mixins/HandleLog'
|
||||||
|
import { downloadExcelWithResData } from '@/utils'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
// 系统操作日志
|
||||||
|
name: 'SysHandleLog',
|
||||||
|
components: {
|
||||||
|
XrHeader,
|
||||||
|
XhUserCell
|
||||||
|
},
|
||||||
|
mixins: [HandleLogMixin],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
loading: false, // 加载动画
|
||||||
|
tableHeight: document.documentElement.clientHeight - 240, // 表的高度
|
||||||
|
dateTime: [],
|
||||||
|
userList: [],
|
||||||
|
subModelLabels: [],
|
||||||
|
list: [],
|
||||||
|
currentPage: 1,
|
||||||
|
pageSize: 10,
|
||||||
|
pageSizes: [10, 20, 30, 40],
|
||||||
|
total: 0,
|
||||||
|
|
||||||
|
postParams: {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {},
|
||||||
|
mounted() {
|
||||||
|
// 控制table的高度
|
||||||
|
window.onresize = () => {
|
||||||
|
self.tableHeight = document.documentElement.clientHeight - 240
|
||||||
|
}
|
||||||
|
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
userChange(data) {
|
||||||
|
this.userList = data.value || []
|
||||||
|
},
|
||||||
|
|
||||||
|
refreshList() {
|
||||||
|
this.currentPage = 1
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
|
||||||
|
/** 获取列表数据 */
|
||||||
|
getList() {
|
||||||
|
this.loading = true
|
||||||
|
const params = {
|
||||||
|
page: this.currentPage,
|
||||||
|
limit: this.pageSize
|
||||||
|
// modules: 'admin'
|
||||||
|
// type: 2 // 1 数据操作日志 2 系统操作日志
|
||||||
|
}
|
||||||
|
if (this.userList && this.userList.length) {
|
||||||
|
params.userIds = this.userList.map(item => item.id)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.dateTime && this.dateTime.length) {
|
||||||
|
params.startTime = this.dateTime[0]
|
||||||
|
params.endTime = this.dateTime[1]
|
||||||
|
}
|
||||||
|
|
||||||
|
params.subModelLabels = this.subModelLabels
|
||||||
|
this.postParams = params
|
||||||
|
querySystemLogListAPI(params)
|
||||||
|
.then(res => {
|
||||||
|
const list = res.data.list
|
||||||
|
list.forEach(item => {
|
||||||
|
item.action = item.module
|
||||||
|
})
|
||||||
|
this.list = list
|
||||||
|
this.total = res.data.count
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
this.loading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 添加审批流
|
||||||
|
*/
|
||||||
|
exportClick() {
|
||||||
|
const loading = Loading.service({ fullscreen: true, text: '导出中...' })
|
||||||
|
systemLogExportAPI({ ...this.postParams, action: 'getSystemLogs' })
|
||||||
|
.then(res => {
|
||||||
|
downloadExcelWithResData(res)
|
||||||
|
loading.close()
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
loading.close()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 更改每页展示数量
|
||||||
|
handleSizeChange(val) {
|
||||||
|
this.pageSize = val
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
// 更改当前页数
|
||||||
|
handleCurrentChange(val) {
|
||||||
|
this.currentPage = val
|
||||||
|
this.getList()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.main {
|
||||||
|
height:100%;
|
||||||
|
|
||||||
|
/deep/ .xr-header {
|
||||||
|
padding: 15px 30px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.main-body {
|
||||||
|
background-color: white;
|
||||||
|
border-top: 1px solid $xr-border-line-color;
|
||||||
|
border-bottom: 1px solid $xr-border-line-color;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main-table-header {
|
||||||
|
height: 50px;
|
||||||
|
background-color: white;
|
||||||
|
position: relative;
|
||||||
|
.main-table-header-button {
|
||||||
|
margin-right: 20px;
|
||||||
|
position: absolute;
|
||||||
|
right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-date-editor--daterange {
|
||||||
|
width: 300px;
|
||||||
|
margin: 0 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/deep/ .user-container {
|
||||||
|
width: 200px;
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.el-select {
|
||||||
|
margin-right: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.p-contianer {
|
||||||
|
position: relative;
|
||||||
|
background-color: white;
|
||||||
|
height: 44px;
|
||||||
|
.p-bar {
|
||||||
|
float: right;
|
||||||
|
margin: 5px 100px 0 0;
|
||||||
|
font-size: 14px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@import '../styles/table.scss';
|
||||||
|
</style>
|
@ -0,0 +1,226 @@
|
|||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
modelOptions: [{
|
||||||
|
label: '客户管理',
|
||||||
|
value: 'crm',
|
||||||
|
list: [{
|
||||||
|
label: '线索',
|
||||||
|
value: 'crm_leads'
|
||||||
|
}, {
|
||||||
|
label: '客户',
|
||||||
|
value: 'crm_customer'
|
||||||
|
}, {
|
||||||
|
label: '联系人',
|
||||||
|
value: 'crm_contacts'
|
||||||
|
}, {
|
||||||
|
label: '商机',
|
||||||
|
value: 'crm_business'
|
||||||
|
}, {
|
||||||
|
label: '合同',
|
||||||
|
value: 'crm_contract'
|
||||||
|
}, {
|
||||||
|
label: '回款',
|
||||||
|
value: 'crm_receivables'
|
||||||
|
}, {
|
||||||
|
label: '发票',
|
||||||
|
value: 'crm_invoice'
|
||||||
|
}, {
|
||||||
|
label: '回访',
|
||||||
|
value: 'crm_visit'
|
||||||
|
}, {
|
||||||
|
label: '产品',
|
||||||
|
value: 'crm_product'
|
||||||
|
}
|
||||||
|
// {
|
||||||
|
// label: '市场活动',
|
||||||
|
// value: 30
|
||||||
|
// }
|
||||||
|
]
|
||||||
|
}, {
|
||||||
|
label: '办公管理',
|
||||||
|
value: 'oa',
|
||||||
|
list: [{
|
||||||
|
label: '日历',
|
||||||
|
value: 'oa_event'
|
||||||
|
}, {
|
||||||
|
label: '日志',
|
||||||
|
value: 'oa_log'
|
||||||
|
}]
|
||||||
|
}, {
|
||||||
|
label: '项目管理',
|
||||||
|
value: 'work',
|
||||||
|
list: [{
|
||||||
|
label: '项目',
|
||||||
|
value: 'work'
|
||||||
|
}, {
|
||||||
|
label: '任务',
|
||||||
|
value: 'work_task'
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
// {
|
||||||
|
// label: '人力资源',
|
||||||
|
// value: 'hrm',
|
||||||
|
// list: [{
|
||||||
|
// label: '组织管理',
|
||||||
|
// value: 61
|
||||||
|
// }, {
|
||||||
|
// label: '招聘管理',
|
||||||
|
// value: 62
|
||||||
|
// }, {
|
||||||
|
// label: '候选人',
|
||||||
|
// value: 63
|
||||||
|
// }, {
|
||||||
|
// label: '员工管理',
|
||||||
|
// value: 64
|
||||||
|
// }, {
|
||||||
|
// label: '社保管理',
|
||||||
|
// value: 65
|
||||||
|
// }, {
|
||||||
|
// label: '薪资管理',
|
||||||
|
// value: 66
|
||||||
|
// }, {
|
||||||
|
// label: '薪资档案',
|
||||||
|
// value: 67
|
||||||
|
// }, {
|
||||||
|
// label: '工资条',
|
||||||
|
// value: 68
|
||||||
|
// }, {
|
||||||
|
// label: '绩效考核',
|
||||||
|
// value: 69
|
||||||
|
// }]
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// label: '进销存',
|
||||||
|
// value: 'jxc',
|
||||||
|
// list: [{
|
||||||
|
// label: '供应商',
|
||||||
|
// value: 81
|
||||||
|
// }, {
|
||||||
|
// label: '采购订单',
|
||||||
|
// value: 82
|
||||||
|
// }, {
|
||||||
|
// label: '采购退货',
|
||||||
|
// value: 83
|
||||||
|
// }, {
|
||||||
|
// label: '产品管理',
|
||||||
|
// value: 84
|
||||||
|
// }, {
|
||||||
|
// label: '销售订单',
|
||||||
|
// value: 85
|
||||||
|
// }, {
|
||||||
|
// label: '销售退货',
|
||||||
|
// value: 86
|
||||||
|
// }, {
|
||||||
|
// label: '仓库管理',
|
||||||
|
// value: 87
|
||||||
|
// }, {
|
||||||
|
// label: '产品库存',
|
||||||
|
// value: 88
|
||||||
|
// }, {
|
||||||
|
// label: '产品入库',
|
||||||
|
// value: 89
|
||||||
|
// }, {
|
||||||
|
// label: '产品出库',
|
||||||
|
// value: 90
|
||||||
|
// }, {
|
||||||
|
// label: '库存调拨',
|
||||||
|
// value: 91
|
||||||
|
// }, {
|
||||||
|
// label: '库存盘点',
|
||||||
|
// value: 92
|
||||||
|
// }, {
|
||||||
|
// label: '回款',
|
||||||
|
// value: 93
|
||||||
|
// }, {
|
||||||
|
// label: '付款',
|
||||||
|
// value: 93
|
||||||
|
// }]
|
||||||
|
// }
|
||||||
|
],
|
||||||
|
sysOptions: [{
|
||||||
|
label: '企业首页',
|
||||||
|
value: 'company'
|
||||||
|
}, {
|
||||||
|
label: '应用管理',
|
||||||
|
value: 'application'
|
||||||
|
}, {
|
||||||
|
label: '员工管理',
|
||||||
|
value: 'employee'
|
||||||
|
}, {
|
||||||
|
label: '部门管理',
|
||||||
|
value: 'structures'
|
||||||
|
}, {
|
||||||
|
label: '角色管理',
|
||||||
|
value: 'role'
|
||||||
|
}, {
|
||||||
|
label: '项目管理',
|
||||||
|
value: 'project'
|
||||||
|
}, {
|
||||||
|
label: '客户管理',
|
||||||
|
value: 'customer'
|
||||||
|
},
|
||||||
|
// {
|
||||||
|
// label: '人力资源',
|
||||||
|
// value: 8
|
||||||
|
// }, {
|
||||||
|
// label: '进销存',
|
||||||
|
// value: 9
|
||||||
|
// },
|
||||||
|
{
|
||||||
|
label: '其他设置',
|
||||||
|
value: 'work_task'
|
||||||
|
}],
|
||||||
|
fieldList: [
|
||||||
|
{
|
||||||
|
prop: 'user_name',
|
||||||
|
label: '用户',
|
||||||
|
width: 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'create_time',
|
||||||
|
label: '时间',
|
||||||
|
width: 150
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'ip',
|
||||||
|
label: 'IP地址',
|
||||||
|
width: 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'action',
|
||||||
|
label: '模块',
|
||||||
|
width: 150
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'action_name',
|
||||||
|
label: '行为',
|
||||||
|
width: 150
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'source_name',
|
||||||
|
label: '对象',
|
||||||
|
width: 150
|
||||||
|
},
|
||||||
|
{
|
||||||
|
prop: 'content',
|
||||||
|
label: '操作详情',
|
||||||
|
width: 100
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
getModelName(model) {
|
||||||
|
return {
|
||||||
|
crm: '客户管理',
|
||||||
|
oa: '办公管理',
|
||||||
|
work: '项目管理',
|
||||||
|
hrm: '人力资源',
|
||||||
|
jxc: '进销存',
|
||||||
|
admin: '系统管理'
|
||||||
|
}[model]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue