|
@@ -0,0 +1,189 @@
|
|
|
+<template>
|
|
|
+ <div class="page-container">
|
|
|
+ <div class="page-top">
|
|
|
+ <el-form ref="form" :inline="true" :model="form">
|
|
|
+ <el-form-item label="起止时间" label-width="auto">
|
|
|
+ <el-date-picker v-model="form.time" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"
|
|
|
+ size="small" value-format="yyyy-MM-dd">
|
|
|
+ </el-date-picker>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="操作" label-width="auto">
|
|
|
+ <el-select v-model="form.operateType" placeholder="选择行为" size="small" clearable multiple collapse-tags style="width:150px">
|
|
|
+ <el-option label="上传" value="10"></el-option>
|
|
|
+ <el-option label="阅读" value="4"></el-option>
|
|
|
+ <el-option label="下载" value="11"></el-option>
|
|
|
+ <el-option label="编辑" value="5"></el-option>
|
|
|
+ <el-option label="导入" value="8"></el-option>
|
|
|
+ <el-option label="导出" value="9"></el-option>
|
|
|
+ <el-option label="修改" value="0"></el-option>
|
|
|
+ <el-option label="删除" value="7"></el-option>
|
|
|
+ <el-option label="添加" value="6"></el-option>
|
|
|
+ <el-option label="查询" value="3"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="用户密级" label-width="auto">
|
|
|
+ <el-select v-model="form.userLevel" placeholder="选择密级" size="small" clearable multiple collapse-tags style="width:150px">
|
|
|
+ <el-option label="一般" value="2"></el-option>
|
|
|
+ <el-option label="重要" value="3"></el-option>
|
|
|
+ <el-option label="核心" value="4"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="文件密级" label-width="auto">
|
|
|
+ <el-select v-model="form.fileLevel" placeholder="选择文件密级" size="small" clearable multiple collapse-tags style="width:150px">
|
|
|
+ <el-option label="公开" value="1"></el-option>
|
|
|
+ <el-option label="内部" value="2"></el-option>
|
|
|
+ <el-option label="秘密" value="3"></el-option>
|
|
|
+ <el-option label="机密" value="4"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="下载数量超过" label-width="auto">
|
|
|
+ <el-input v-model="form.downLoadNum" oninput="value=value.replace(/[^\d]/g,'')" placeholder="输入数量" size="small"
|
|
|
+ style="width:150px">
|
|
|
+ <span slot="suffix" style="color:#606266;">篇</span>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-button type="primary" icon="el-icon-search" size="small" style="margin-top: 4px;" @click="query()">查询</el-button>
|
|
|
+ <el-form-item style="margin-left:20px">
|
|
|
+ <el-switch style="display: block;margin-top: 10px;" v-model="showType" active-color="#2d74e7" inactive-color="#2d74e7"
|
|
|
+ active-text="统计表格" inactive-text="数据表格" :inactive-value="1" :active-value="2">
|
|
|
+ </el-switch>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ </el-form>
|
|
|
+ </div>
|
|
|
+ <div class="table-container" v-show="showType==1">
|
|
|
+ <el-table :data="tableData3" border :header-cell-style="{
|
|
|
+ height:'40px',backgroundColor:'#e1f0fd',color:'#606266'}" style="width: 100%" height="calc(100% - 35px)">
|
|
|
+ <el-table-column prop="序号" label="序号" width="200">
|
|
|
+ <template slot-scope="scope">{{scope.$index+1}}</template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="createTime" label="操作时间" width="200">
|
|
|
+ <template
|
|
|
+ slot-scope="{row}">{{new Date(parseInt(row.createTime)).toLocaleDateString().replace(new RegExp('/',"g"),"-")}}</template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="remoteAddr" label="IP地址"></el-table-column>
|
|
|
+ <el-table-column prop="userAgent" label="浏览器" show-overflow-tooltip></el-table-column>
|
|
|
+ <el-table-column prop="osName " label="设备"></el-table-column>
|
|
|
+ <el-table-column prop="createBy" label="操作者"></el-table-column>
|
|
|
+ <el-table-column prop="serviceId" label="系统模块" show-overflow-tooltip></el-table-column>
|
|
|
+ <el-table-column prop="requestUri" label="日志登记" show-overflow-tooltip></el-table-column>
|
|
|
+ <el-table-column prop="content" label="日志内容"></el-table-column>
|
|
|
+ <el-table-column prop="operateType" label="日志类型"></el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pagination.current"
|
|
|
+ :page-sizes="[20, 50, 100, 200]" :page-size="pagination.size" layout="total, sizes, prev, pager, next, jumper"
|
|
|
+ :total="pagination.total" style="margin-top:5px">
|
|
|
+ </el-pagination>
|
|
|
+ </div>
|
|
|
+ <div class="table-container" v-show="showType==2">
|
|
|
+ <el-table :data="sTableData" border :header-cell-style="{
|
|
|
+ height:'40px',backgroundColor:'#e1f0fd',color:'#606266'}" style="width: 100%" height="100%">
|
|
|
+ <el-table-column prop="optype" label="操作"></el-table-column>
|
|
|
+ <el-table-column prop="time" label="起止时间" show-overflow-tooltip></el-table-column>
|
|
|
+ <el-table-column prop="num" label="次数"></el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import { loginCountByDepartmentPage, userOperateCountPage,userOperateCountNum } from '@/api/systemStatistical';
|
|
|
+import { getCompany } from '@/api/base'
|
|
|
+export default {
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ cycle: 'y',
|
|
|
+ form: {},
|
|
|
+ tableData3: [],
|
|
|
+ pagination: { current: 1, size: 20, total: 0 },
|
|
|
+ deptTreeData: [],
|
|
|
+ showType: 1,
|
|
|
+ sTableData: []
|
|
|
+ }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ operateType() {
|
|
|
+ return this.$store.state.permission.sysDics.operateType
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted() {
|
|
|
+ this.loginCountByDepartmentPage()
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ loginCountByDepartmentPage() {
|
|
|
+ let params = JSON.parse(JSON.stringify(this.pagination))
|
|
|
+ if (this.form.operateType && this.form.operateType.length > 0) {
|
|
|
+ params['operateType'] = this.form.operateType.join(',')
|
|
|
+ }
|
|
|
+ if (this.form.userLevel && this.form.userLevel.length > 0) {
|
|
|
+ params['userLevel'] = this.form.userLevel.join(',')
|
|
|
+ }
|
|
|
+ if (this.form.fileLevel && this.form.fileLevel.length > 0) {
|
|
|
+ params['fileLevel'] = this.form.userLevel.join(',')
|
|
|
+ }
|
|
|
+ if (this.form.time && this.form.time.length == 2) {
|
|
|
+ params['countStartTime'] = this.form.time[0]
|
|
|
+ params['countEndTime'] = this.form.time[1]
|
|
|
+ }
|
|
|
+ params['roleType'] = '1,2,3' // 用户
|
|
|
+
|
|
|
+ userOperateCountPage(params).then(res => {
|
|
|
+ let data = res.result.records
|
|
|
+ this.tableData3 = data.map(item => {
|
|
|
+ let optype = this.operateType.find(titem => titem.code == item.operateType)
|
|
|
+ item.operateType = optype.value
|
|
|
+ return item
|
|
|
+ })
|
|
|
+ this.tableData3 = res.result.records
|
|
|
+ this.pagination.total = res.result.total
|
|
|
+ })
|
|
|
+
|
|
|
+ // 统计表格
|
|
|
+ userOperateCountNum(params).then(res => {
|
|
|
+ let data = res.result
|
|
|
+ this.sTableData = data.map(item => {
|
|
|
+ let optype = this.operateType.find(titem => titem.code == item.operateType)
|
|
|
+ item['time'] = this.form.time && this.form.time.length == 2 ? this.form.time.join('-') : '全部'
|
|
|
+ item['optype'] = optype.value
|
|
|
+ return item
|
|
|
+ })
|
|
|
+ })
|
|
|
+ },
|
|
|
+ query() {
|
|
|
+ this.pagination.current = 1
|
|
|
+ this.pagination.size = 20
|
|
|
+ this.loginCountByDepartmentPage()
|
|
|
+ },
|
|
|
+ handleSizeChange(size) {
|
|
|
+ this.pagination.size = size
|
|
|
+ this.loginCountByDepartmentPage()
|
|
|
+ },
|
|
|
+ handleCurrentChange(current) {
|
|
|
+ this.pagination.current = current
|
|
|
+ this.loginCountByDepartmentPage()
|
|
|
+ },
|
|
|
+ companyChange(val) {
|
|
|
+ this.form.departmentIds = val.length > 0 ? val.at(-1) : ''
|
|
|
+ }
|
|
|
+ },
|
|
|
+}
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss" scoped>
|
|
|
+.page-container {
|
|
|
+ position: absolute;
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ // background-color: #ccc;
|
|
|
+ box-sizing: border-box;
|
|
|
+ padding: 20px;
|
|
|
+ .page-top {
|
|
|
+ padding: 10px 0;
|
|
|
+ }
|
|
|
+ .table-container {
|
|
|
+ width: 100%;
|
|
|
+ height: calc(100% - 100px) !important;
|
|
|
+ // background-color: #ccc;
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|