zxh 2 years ago
parent
commit
ca351b829b

+ 19 - 2
src/api/systemStatistical.js

@@ -7,7 +7,7 @@ import request from '@/utils/request'
   */
 
 // 获取登录次数
-export function geLoginNumber(params) {
+export function getLoginNumber(params) {
     return request({
         url: '/base/countCenter/loginCountByNumPage',
         method: 'get',
@@ -16,7 +16,7 @@ export function geLoginNumber(params) {
 }
 
 // 按人获取登录次数
-export function geLoginNumberByPerson(params) {
+export function getLoginNumberByPerson(params) {
     return request({
         url: '/base/countCenter/loginCountByPersonPage',
         method: 'get',
@@ -31,4 +31,21 @@ export function loginCountByDepartmentPage(params) {
         method: 'get',
         params
     })
+}
+
+export function userOperateCountPage(params) {
+    return request({
+        url: '/base/countCenter/userOperateCountPage',
+        method: 'get',
+        params
+    })
+}
+
+// 获取统计数据
+export function userOperateCountNum(params) {
+    return request({
+        url: '/base/countCenter/userOperateCountNum',
+        method: 'get',
+        params
+    })
 }

+ 15 - 0
src/router/_import.js

@@ -63,4 +63,19 @@ const map = {
     byTimes: () => import('@/views/kxcSystem/systemStatistical/systemAdmin/byTimes/index'), //  按次数统计
     byPerson: () => import('@/views/kxcSystem/systemStatistical/systemAdmin/byPerson/index'), //  按人员
     byDept: () => import('@/views/kxcSystem/systemStatistical/systemAdmin/byDept/index'), //  按单位
+
+    secrecyAdmin: () => import('@/views/kxcSystem/systemStatistical/secrecyAdmin/index'), // 安全保密管理员
+    loginAndOut: () => import('@/views/kxcSystem/systemStatistical/secrecyAdmin/loginAndOut/index'), //  安全审计员登入登出
+    abnormalIp: () => import('@/views/kxcSystem/systemStatistical/secrecyAdmin/abnormalIp/index'), //  异常ip统计
+    userBehavior: () => import('@/views/kxcSystem/systemStatistical/secrecyAdmin/userBehavior/index'), //  用户行为统计
+
+    safetyAuditor: () => import('@/views/kxcSystem/systemStatistical/safetyAuditor/index'),
+    adminChange: () => import('@/views/kxcSystem/systemStatistical/safetyAuditor/adminChange/index'), // 管理员变更统计
+    organizationalChange: () => import('@/views/kxcSystem/systemStatistical/safetyAuditor/organizationalChange/index'), // 组织机构变更统计
+    userChange: () => import('@/views/kxcSystem/systemStatistical/safetyAuditor/userChange/index'), // 业务用户变更统计
+    jobsChange: () => import('@/views/kxcSystem/systemStatistical/safetyAuditor/jobsChange/index'), // 岗位变更统计
+    adminLoginAndOut: () => import('@/views/kxcSystem/systemStatistical/safetyAuditor/adminLoginAndOut/index'), // 管理员登入登出统计
+    permissionChange: () => import('@/views/kxcSystem/systemStatistical/safetyAuditor/permissionChange/index'), // 权限变更统计
+    organizationalRoleChanges: () => import('@/views/kxcSystem/systemStatistical/safetyAuditor/organizationalRoleChanges/index'), // 组织机构变更统计
+    
 }

+ 1 - 1
src/styles/variables.scss

@@ -9,7 +9,7 @@ $menuHover: rgba(220, 38, 38, 0);
 $subMenuBg: #2687c7;
 $subMenuHover: #2687c7;
 
-$sideBarWidth: 200px;
+$sideBarWidth: 220px;
 
 :export {
   menuText: $menuText;

+ 1 - 1
src/views/currentSystem/authorityManagement/userAuthorize/index.vue

@@ -634,7 +634,7 @@ export default {
       this[key] = event
     },
     companyChange(val) {
-      this.form.roleDepartmentIds = val.length > 0 ? val.at(-1) : ''
+      this.company = val.length > 0 ? val.at(-1) : ''
     },
     departChange(val) {
       this.departmentId = val.length > 0 ? val.at(-1) : ''

+ 169 - 0
src/views/kxcSystem/systemStatistical/safetyAuditor/adminChange/index.vue

@@ -0,0 +1,169 @@
+<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>
+            <el-option label="添加" value="6"></el-option>
+            <el-option label="启用" value="12"></el-option>
+            <el-option label="禁用" value="13"></el-option>
+            <el-option label="删除" value="7"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="统计对象" label-width="auto">
+          <el-select v-model="form.roleType" placeholder="选择密级" size="small" clearable multiple collapse-tags>
+            <el-option label="系统管理员" value="6"></el-option>
+            <el-option label="安全审计员" value="5"></el-option>
+            <el-option label="安全保密管理员" value="4"></el-option>
+          </el-select>
+        </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))
+      params['roleType'] = '4,5,6' // 统计对象
+       params['operateType'] = "6,12,13,7"
+      if (this.form.operateType&&this.form.operateType.length>0) {
+        params['operateType'] = this.form.operateType.join(',')
+      }
+      if (this.form.roleType&&this.form.roleType.length>0) {
+        params['roleType'] = this.form.roleType.join(',')
+      }
+      if (this.form.time && this.form.time.length == 2) {
+        params['countStartTime'] = this.form.time[0]
+        params['countEndTime'] = this.form.time[1]
+      }
+
+      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>

+ 161 - 0
src/views/kxcSystem/systemStatistical/safetyAuditor/adminLoginAndOut/index.vue

@@ -0,0 +1,161 @@
+<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>
+            <el-option label="登入" value="1"></el-option>
+            <el-option label="登出" value="2"></el-option>
+          </el-select>
+        </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="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
+    },
+    roleType() {
+      return this.$store.state.permission.sysDics.roleType
+    }
+  },
+  mounted() {
+    this.loginCountByDepartmentPage()
+  },
+  methods: {
+    loginCountByDepartmentPage() {
+      let params = JSON.parse(JSON.stringify(this.pagination))
+      params['operateType'] = this.form.operateType ? this.form.operateType : '1,2'
+      if (this.form.time && this.form.time.length == 2) {
+        params['countStartTime'] = this.form.time[0]
+        params['countEndTime'] = this.form.time[1]
+      }
+      params['roleType'] = '4,6' // 安全保密管理员,系统管理员
+      // params['moduleName'] = '5'
+
+      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)
+          // let role = this.roleType.find(titem => titem.code == item.roleType)
+          item['time'] = this.form.time && this.form.time.length == 2 ? this.form.time.join('-') : '全部'
+          item['optype'] = optype.value
+          // item['role'] = role.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>

+ 7 - 0
src/views/kxcSystem/systemStatistical/safetyAuditor/index.vue

@@ -0,0 +1,7 @@
+<template>
+  <div>
+    <keep-alive>
+      <router-view />
+    </keep-alive>
+  </div>
+</template>

+ 161 - 0
src/views/kxcSystem/systemStatistical/safetyAuditor/jobsChange/index.vue

@@ -0,0 +1,161 @@
+<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">
+          </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>
+            <el-option label="添加" value="6"></el-option>
+            <el-option label="启用" value="12"></el-option>
+            <el-option label="禁用" value="13"></el-option>
+            <el-option label="修改" value="5"></el-option>
+          </el-select>
+        </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 } 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))
+      params['roleType'] = '1,2,3' // 统计对象
+       params['operateType'] = "6,12,13,5"
+      if (this.form.operateType&&this.form.operateType.length>0) {
+        params['operateType'] = this.form.operateType.join(',')
+      }
+      if (this.form.time && this.form.time.length == 2) {
+        params['countStartTime'] = this.form.time[0]
+        params['countEndTime'] = this.form.time[1]
+      }
+
+      userOperateCountPage(params).then(res => {
+        // console.log('输出:renyuan{>>单位', res)
+        let sData = []
+        let sDataObj = {}
+        let data = res.result.records
+        this.tableData3 = data.map(item => {
+          let optype = this.operateType.find(titem => titem.code == item.operateType)
+          item.operateType = optype.value
+          if (!sDataObj.hasOwnProperty(optype.value)) sDataObj[optype.value] = 1
+          else sDataObj[optype.value] += 1
+          return item
+        })
+        for (const key in sDataObj) {
+          sData.push({
+            optype: key,
+            time: this.form.time && this.form.time.length == 2 ? this.form.time.join('-') : '全部',
+            num: sDataObj[key]
+          })
+        }
+        this.sTableData = sData
+        this.tableData3 = res.result.records
+        this.pagination.total = res.result.total
+      })
+    },
+    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>

+ 160 - 0
src/views/kxcSystem/systemStatistical/safetyAuditor/organizationalChange/index.vue

@@ -0,0 +1,160 @@
+<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>
+            <el-option label="添加" value="6"></el-option>
+            <el-option label="启用" value="12"></el-option>
+            <el-option label="禁用" value="13"></el-option>
+            <el-option label="编辑" value="5"></el-option>
+            <el-option label="删除" value="7"></el-option>
+          </el-select>
+        </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))
+       params['moduleName'] = "department"
+       params['operateType'] = "6,12,13,5,7"
+      if (this.form.operateType&&this.form.operateType.length>0) {
+        params['operateType'] = this.form.operateType.join(',')
+      }
+      if (this.form.time && this.form.time.length == 2) {
+        params['countStartTime'] = this.form.time[0]
+        params['countEndTime'] = this.form.time[1]
+      }
+
+      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>

+ 13 - 0
src/views/kxcSystem/systemStatistical/safetyAuditor/organizationalRoleChanges/index.vue

@@ -0,0 +1,13 @@
+<template>
+  <div>组织机构角色变更统计</div>
+</template>
+
+<script>
+export default {
+
+}
+</script>
+
+<style>
+
+</style>

+ 153 - 0
src/views/kxcSystem/systemStatistical/safetyAuditor/permissionChange/index.vue

@@ -0,0 +1,153 @@
+<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-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="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
+    },
+    roleType() {
+      return this.$store.state.permission.sysDics.roleType
+    }
+  },
+  mounted() {
+    this.loginCountByDepartmentPage()
+  },
+  methods: {
+    loginCountByDepartmentPage() {
+      let params = JSON.parse(JSON.stringify(this.pagination))
+      if (this.form.time && this.form.time.length == 2) {
+        params['countStartTime'] = this.form.time[0]
+        params['countEndTime'] = this.form.time[1]
+      }
+      params['roleType'] = '1,4' // 普通用户,安全保密管理员
+
+      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)
+          // let role = this.roleType.find(titem => titem.code == item.roleType)
+          item['time'] = this.form.time && this.form.time.length == 2 ? this.form.time.join('-') : '全部'
+          item['optype'] = optype.value
+          // item['role'] = role.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>

+ 160 - 0
src/views/kxcSystem/systemStatistical/safetyAuditor/userChange/index.vue

@@ -0,0 +1,160 @@
+<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>
+            <el-option label="添加" value="6"></el-option>
+            <el-option label="启用" value="12"></el-option>
+            <el-option label="禁用" value="13"></el-option>
+            <el-option label="修改" value="5"></el-option>
+            <el-option label="删除" value="7"></el-option>
+          </el-select>
+        </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))
+      params['roleType'] = '1,2,3' // 统计对象
+       params['operateType'] = "6,12,13,5,7"
+      if (this.form.operateType&&this.form.operateType.length>0) {
+        params['operateType'] = this.form.operateType.join(',')
+      }
+      if (this.form.time && this.form.time.length == 2) {
+        params['countStartTime'] = this.form.time[0]
+        params['countEndTime'] = this.form.time[1]
+      }
+
+      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>

+ 157 - 0
src/views/kxcSystem/systemStatistical/secrecyAdmin/abnormalIp/index.vue

@@ -0,0 +1,157 @@
+<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="合法IP段" label-width="auto">
+          <el-input v-model="form.ip1" placeholder="起止" size="small" clearable></el-input>
+        </el-form-item>-
+        <el-form-item label-width="0">
+          <el-input v-model="form.ip2" placeholder="终止" size="small" clearable></el-input>
+        </el-form-item>
+        <el-form-item label="内容" label-width="auto">
+          <el-select v-model="form.userLevel" placeholder="选择内容" size="small" clearable multiple collapse-tags>
+            <el-option label="合法IP" value="1"></el-option>
+            <el-option label="非法IP" value="2"></el-option>
+          </el-select>
+        </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>
+      <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 } 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.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 => {
+        // console.log('输出:renyuan{>>单位', res)
+        let sData = []
+        let sDataObj = {}
+        let data = res.result.records
+        this.tableData3 = data.map(item => {
+          let optype = this.operateType.find(titem => titem.code == item.operateType)
+          item.operateType = optype.value
+          if (!sDataObj.hasOwnProperty(optype.value)) sDataObj[optype.value] = 1
+          else sDataObj[optype.value] += 1
+          return item
+        })
+        for (const key in sDataObj) {
+          sData.push({
+            optype: key,
+            time: this.form.time && this.form.time.length == 2 ? this.form.time.join('-') : '全部',
+            num: sDataObj[key]
+          })
+        }
+        this.sTableData = sData
+        this.tableData3 = res.result.records
+        this.pagination.total = res.result.total
+      })
+    },
+    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>

+ 7 - 0
src/views/kxcSystem/systemStatistical/secrecyAdmin/index.vue

@@ -0,0 +1,7 @@
+<template>
+  <div>
+    <keep-alive>
+      <router-view />
+    </keep-alive>
+  </div>
+</template>

+ 154 - 0
src/views/kxcSystem/systemStatistical/secrecyAdmin/loginAndOut/index.vue

@@ -0,0 +1,154 @@
+<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>
+            <el-option label="登入" value="1"></el-option>
+            <el-option label="登出" value="2"></el-option>
+          </el-select>
+        </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))
+      params['operateType'] = this.form.operateType ? this.form.operateType : '1,2'
+      if (this.form.time && this.form.time.length == 2) {
+        params['countStartTime'] = this.form.time[0]
+        params['countEndTime'] = this.form.time[1]
+      }
+      params['roleType'] = '5' // 审计员
+
+      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>

+ 189 - 0
src/views/kxcSystem/systemStatistical/secrecyAdmin/userBehavior/index.vue

@@ -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>

+ 86 - 11
src/views/kxcSystem/systemStatistical/systemAdmin/byDept/index.vue

@@ -3,25 +3,28 @@
     <div class="page-top">
       <el-form ref="form3" :inline="true" :model="form3">
         <el-form-item label="统计周期" label-width="auto">
-          <el-select v-model="form3.cycle" placeholder="请选择统计周期" style="width:200px">
+          <el-select v-model="cycle" placeholder="请选择统计周期" style="width:200px" size="small">
             <el-option label="年度" value="y"></el-option>
             <el-option label="月度" value="m"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="时间" label-width="auto">
-          <el-date-picker :type="{y:'year',m:'month'}[form3.cycle]" placeholder="选择日期" v-model="form3.date" style="width:300px"
-                          value-format="yyyy-MM-dd"></el-date-picker>
+          <el-date-picker :type="{y:'year',m:'month'}[cycle]" placeholder="选择日期" v-model="form3.date" style="width:300px"
+                          value-format="yyyy-MM-dd" size="small"></el-date-picker>
         </el-form-item>
         <el-form-item label="单位" label-width="auto">
-          <el-cascader :options="options" :props="{ checkStrictly: true }" v-model="form3.dept" clearable style="width:300px"></el-cascader>
+          <el-cascader size="small" v-model="form3.departmentIds" :options="deptTreeData"
+                       :props="{ expandTrigger: 'hover',checkStrictly: true }" clearable @change="companyChange" style="width:300px">
+          </el-cascader>
         </el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="small" style="margin-top: 4px;" @click="query()">查询</el-button>
       </el-form>
     </div>
     <div class="table-container">
       <el-table :data="tableData3" border :header-cell-style="{
             height:'40px',backgroundColor:'#e1f0fd',color:'#606266'}" style="width: 100%" height="100%">
         <el-table-column prop="name" label="单位" width="200"></el-table-column>
-        <el-table-column prop="loginNumber" label="登录次数" width="200"></el-table-column>
+        <el-table-column prop="loginNum" label="登录次数" width="200"></el-table-column>
         <el-table-column prop="loginPerson" label="登录人数"></el-table-column>
       </el-table>
     </div>
@@ -30,24 +33,96 @@
 
 <script>
 import { loginCountByDepartmentPage } from '@/api/systemStatistical';
+import { getCompany } from '@/api/base'
 export default {
   data() {
     return {
-      form3: { cycle: 'y' },
-      tableData3: []
+      cycle: 'y',
+      form3: {},
+      tableData3: [],
+      deptTreeData: []
     }
   },
   mounted() {
+    this.getDeptInfo()
     this.loginCountByDepartmentPage()
   },
   methods: {
+    /**
+    * 获取部门信息 
+   */
+    getDeptInfo() {
+      getCompany().then(res => {
+        this.optionsDepts = res.result
+        for (let i = 0; i < this.optionsDepts.length; i++) {
+          this.optionsDepts[i].id = this.optionsDepts[i].id.toString()
+        }
+        this.setDeptTree(res.result)
+      })
+    },
+
+    /***
+    * 设置部门树数据
+   */
+    setDeptTree(datas) {
+      this.deptTreeData = [];
+      if (!datas || datas.length < 1) {
+        this.$message.info('未获取到部门数据!');
+        return;
+      }
+      datas.forEach(item => {
+        let data = datas.filter(dt => dt.id == item.parentId);
+        if (data.length < 1) this.deptTreeData.push(item)
+      });
+      this.deptTreeData.forEach(node => {
+        node['value'] = node.id;
+        node['label'] = node.name;
+        let children = this.getChildrens(datas, node.id);
+        if (children.length > 0) node['children'] = children;
+      });
+
+    },
+
+    getChildrens(datas, id) {
+      let data = datas.filter(item => item.parentId == id);
+      if (data.length > 0) {
+        data.forEach(node => {
+          node['value'] = node.id;
+          node['label'] = node.name;
+          let children = this.getChildrens(datas, node.id);
+          if (children.length > 0) node['children'] = children;
+        });
+      }
+      else {
+        return [];
+      }
+      return data;
+    },
     loginCountByDepartmentPage() {
-      loginCountByDepartmentPage().then(res => {
-        console.log('输出:renyuan{>>单位', res)
+      let params = {}
+      if (this.cycle != 'a' && this.form3.date) {
+        if (this.cycle == 'y') {
+          params['countStartTime'] = this.form3.date
+          params['countEndTime'] = `${this.form3.date.split('-')[0]}-12-31`
+        } else if (this.cycle == 'm') {
+          params['countStartTime'] = this.form3.date
+          params['countEndTime'] = `${this.form3.date.split('-')[0]}-${this.form3.date.split('-')[1]}-31`
+        }
+      }
+      if(this.form3.departmentIds) params['departmentId'] = this.form3.departmentIds
+      loginCountByDepartmentPage(params).then(res => {
+        // console.log('输出:renyuan{>>单位', res)
         this.tableData3 = res.result
+        this.pagination.total = res.result.total
       })
+    },
+    query() {
+      this.loginCountByDepartmentPage()
+    },
+    companyChange(val) {
+      this.form3.departmentIds = val.length > 0 ? val.at(-1) : ''
     }
-  }
+  },
 }
 </script>
 
@@ -65,7 +140,7 @@ export default {
   .table-container {
     width: 100%;
     height: calc(100% - 100px) !important;
-    background-color: #ccc;
+    // background-color: #ccc;
   }
 }
 </style>

+ 43 - 18
src/views/kxcSystem/systemStatistical/systemAdmin/byPerson/index.vue

@@ -3,28 +3,27 @@
     <div class="page-top">
       <el-form ref="form2" :inline="true" :model="form2">
         <el-form-item label="统计周期" label-width="auto">
-          <el-select v-model="form2.cycle" placeholder="请选择统计周期" style="width:200px">
+          <el-select v-model="cycle" placeholder="请选择统计周期" style="width:200px" size="small">
             <el-option label="全部" value="a"></el-option>
             <el-option label="年度" value="y"></el-option>
             <el-option label="月度" value="m"></el-option>
             <el-option label="日度" value="d"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="时间" label-width="auto" v-if="form2.cycle!='a'">
-          <el-date-picker :type="{y:'year',m:'month',d:'date'}[form2.cycle]" placeholder="选择日期" v-model="form2.date" style="width:300px"
-                          value-format="yyyy-MM-dd"></el-date-picker>
+        <el-form-item label="时间" label-width="auto" v-if="cycle!='a'">
+          <el-date-picker :type="{y:'year',m:'month',d:'date'}[cycle]" placeholder="选择日期" v-model="form2.date" style="width:300px"
+                          value-format="yyyy-MM-dd" size="small"></el-date-picker>
         </el-form-item>
         <el-form-item label="用户" label-width="auto">
-          <el-input v-model="form2.user" placeholder="请输入用户" style="width:300px"></el-input>
+          <el-input v-model="form2.userName" placeholder="请输入用户" style="width:300px" size="small" clearable></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>
     </div>
     <div class="table-container">
       <el-table :data="tableData2" border :header-cell-style="{
-            height:'40px',backgroundColor:'#e1f0fd',color:'#606266'}" style="width: 100%" height="100%">
-        <el-table-column prop="time" label="时间" width="200">
-          <template>{{form2.date?form12.date:'全部'}}</template>
-        </el-table-column>
+            height:'40px',backgroundColor:'#e1f0fd',color:'#606266'}" style="width: 100%"  height="100%">
+        <el-table-column prop="time" label="时间" width="200"></el-table-column>
         <el-table-column prop="name" label="单位" width="200"></el-table-column>
         <el-table-column prop="realName" label="用户"></el-table-column>
         <el-table-column prop="loginNum" label="登录次数"></el-table-column>
@@ -34,25 +33,51 @@
 </template>
 
 <script>
-import { geLoginNumber, geLoginNumberByPerson, loginCountByDepartmentPage } from '@/api/systemStatistical';
+import { getLoginNumber, getLoginNumberByPerson, loginCountByDepartmentPage } from '@/api/systemStatistical';
 export default {
   data() {
     return {
-      form2: { cycle: 'a' },
+      cycle: 'a',
+      form2: {},
       tableData2: []
     }
   },
   mounted() {
-    this.geLoginNumberByPerson()
+    this.getLoginNumberByPerson()
   },
   methods: {
-    geLoginNumberByPerson() {
-      geLoginNumberByPerson().then(res => {
-        console.log('输出:renyuan{>>', res)
+    getLoginNumberByPerson() {
+      let params = {}
+      let time = '全部'
+      if (this.cycle != 'a' && this.form2.date) {
+        if (this.cycle == 'y') {
+          params['countStartTime'] = this.form2.date
+          params['countEndTime'] = `${this.form2.date.split('-')[0]}-12-31`
+          time = this.form2.date.split('-')[0]
+        } else if (this.cycle == 'm') {
+          params['countStartTime'] = this.form2.date
+          params['countEndTime'] = `${this.form2.date.split('-')[0]}-${this.form2.date.split('-')[1]}-31`
+          time = `${this.form2.date.split('-')[0]}-${this.form2.date.split('-')[1]}`
+        } else if (this.cycle == 'd') {
+          params['countStartTime'] = this.form2.date
+          params['countEndTime'] = this.form2.date
+          time = this.form2.date
+        }
+      }
+      if(this.form2.userName) params['userName'] = this.form2.userName
+      getLoginNumberByPerson(params).then(res => {
+        // console.log('输出:renyuan{>>', res)
         // this.tableData2 = res.result
-        this.tableData2 = res.result
+        let data = res.result
+        this.tableData2 = data.map(item => {
+          item['time'] = time;
+          return item
+        })
       })
-    }
+    },
+    query() {
+      this.getLoginNumberByPerson()
+    },
   }
 }
 </script>
@@ -71,7 +96,7 @@ export default {
   .table-container {
     width: 100%;
     height: calc(100% - 100px) !important;
-    background-color: #ccc;
+    // background-color: #ccc;
   }
 }
 </style>

+ 39 - 15
src/views/kxcSystem/systemStatistical/systemAdmin/byTimes/index.vue

@@ -3,26 +3,24 @@
     <div class="page-top">
       <el-form ref="form1" :inline="true" :model="form1">
         <el-form-item label="统计周期" label-width="auto">
-          <el-select v-model="form1.cycle" placeholder="请选择统计周期" style="width:200px">
+          <el-select v-model="cycle" placeholder="请选择统计周期" style="width:200px" size="small">
             <el-option label="全部" value="a"></el-option>
             <el-option label="年度" value="y"></el-option>
             <el-option label="月度" value="m"></el-option>
             <el-option label="日度" value="d"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="时间" label-width="auto" v-if="form1.cycle!='a'">
-          <el-date-picker :type="{y:'year',m:'month',d:'date'}[form1.cycle]" placeholder="选择日期" v-model="form1.date" style="width:300px"
-                          value-format="yyyy-MM-dd"></el-date-picker>
+        <el-form-item label="时间" label-width="auto" v-if="cycle!='a'">
+          <el-date-picker :type="{y:'year',m:'month',d:'date'}[cycle]" placeholder="选择日期" v-model="form1.date" style="width:300px"
+                          value-format="yyyy-MM-dd" size="small"></el-date-picker>
         </el-form-item>
-        <el-button type="primary" icon="el-icon-search">查询</el-button>
+        <el-button type="primary" icon="el-icon-search" size="small" style="margin-top: 4px;" @click="query()">查询</el-button>
       </el-form>
     </div>
     <div class="table-container">
       <el-table :data="tableData1" border :header-cell-style="{
             height:'40px',backgroundColor:'#e1f0fd',color:'#606266'}" style="width: 100%" height="100%">
-        <el-table-column prop="time" label="时间" width="200">
-          <template>{{form1.date?form1.date:'全部'}}</template>
-        </el-table-column>
+        <el-table-column prop="time" label="时间" width="200"></el-table-column>
         <el-table-column prop="loginNum" label="用户登录次数"></el-table-column>
       </el-table>
     </div>
@@ -30,27 +28,53 @@
 </template>
 
 <script>
-import { geLoginNumber } from '@/api/systemStatistical';
+import { getLoginNumber } from '@/api/systemStatistical';
 export default {
   data() {
     return {
-      form1: { cycle: 'a' },
+      cycle: 'a',
+      form1: {},
       tableData1: [],
       options: []
     }
   },
   mounted() {
-    this.geLoginNumber()
+    this.getLoginNumber()
   },
   methods: {
     handleClick() {
 
     },
-    geLoginNumber() {
-      geLoginNumber().then(res => {
+    getLoginNumber() {
+      let params = {}
+      let time = '全部'
+      if (this.cycle != 'a' && this.form1.date) {
+        console.log('输出:', this.form1.date)
+        if (this.cycle == 'y') {
+          params['countStartTime'] = this.form1.date
+          params['countEndTime'] = `${this.form1.date.split('-')[0]}-12-31`
+          time = this.form1.date.split('-')[0]
+        } else if (this.cycle == 'm') {
+          params['countStartTime'] = this.form1.date
+          params['countEndTime'] = `${this.form1.date.split('-')[0]}-${this.form1.date.split('-')[1]}-31`
+          time = `${this.form1.date.split('-')[0]}-${this.form1.date.split('-')[1]}`
+        } else if (this.cycle == 'd') {
+          params['countStartTime'] = this.form1.date
+          params['countEndTime'] = this.form1.date
+          time = this.form1.date
+        }
+      }
+      getLoginNumber(params).then(res => {
         console.log('输出:quanbu-{{{>>', res)
-        this.tableData1 = res.result
+        let data = res.result
+        this.tableData1 = data.map(item => {
+          item['time'] = time;
+          return item
+        })
       })
+    },
+    query() {
+      this.getLoginNumber()
     }
   }
 }
@@ -70,7 +94,7 @@ export default {
   .table-container {
     width: 100%;
     height: calc(100% - 100px) !important;
-    background-color: #ccc;
+    // background-color: #ccc;
   }
 }
 </style>