瀏覽代碼

refactor🎨 更新日志相关功能

zhangwenjian 5 年之前
父節點
當前提交
eeed16d0ed

+ 0 - 35
src/api/system/loginlog.js

@@ -1,35 +0,0 @@
-import request from '@/utils/request'
-
-// 查询登录日志列表
-export function list(query) {
-  return request({
-    url: '/api/v1/loginloglist',
-    method: 'get',
-    params: query
-  })
-}
-
-// 删除登录日志
-export function delLogininfor(infoId) {
-  return request({
-    url: '/api/v1/loginlog/' + infoId,
-    method: 'delete'
-  })
-}
-
-// 清空登录日志
-export function cleanLogininfor() {
-  return request({
-    url: '/api/v1/loginlog/clean',
-    method: 'delete'
-  })
-}
-
-// 导出登录日志
-export function exportLogininfor(query) {
-  return request({
-    url: '/api/v1/loginlog/export',
-    method: 'get',
-    params: query
-  })
-}

+ 0 - 35
src/api/system/operlog.js

@@ -1,35 +0,0 @@
-import request from '@/utils/request'
-
-// 查询操作日志列表
-export function list(query) {
-  return request({
-    url: '/api/v1/operloglist',
-    method: 'get',
-    params: query
-  })
-}
-
-// 删除操作日志
-export function delOperlog(operId) {
-  return request({
-    url: '/api/v1/operlog/' + operId,
-    method: 'delete'
-  })
-}
-
-// 清空操作日志
-export function cleanOperlog() {
-  return request({
-    url: '/api/v1/operlog/clean',
-    method: 'delete'
-  })
-}
-
-// 导出操作日志
-export function exportOperlog(query) {
-  return request({
-    url: '/api/v1/operlog/export',
-    method: 'get',
-    params: query
-  })
-}

+ 28 - 0
src/api/system/sys-login-log.js

@@ -0,0 +1,28 @@
+import request from '@/utils/request'
+
+// 查询SysLoginlog列表
+export function listSysLoginlog(query) {
+  return request({
+    url: '/api/v1/sys-login-log',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询SysLoginlog详细
+export function getSysLoginlog(ID) {
+  return request({
+    url: '/api/v1/sys-login-log/' + ID,
+    method: 'get'
+  })
+}
+
+// 删除SysLoginlog
+export function delSysLoginlog(data) {
+  return request({
+    url: '/api/v1/sys-login-log',
+    method: 'delete',
+    data: data
+  })
+}
+

+ 28 - 0
src/api/system/sys-opera-log.js

@@ -0,0 +1,28 @@
+import request from '@/utils/request'
+
+// 清空操作日志
+export function cleanOperlog() {
+  return request({
+    url: '/api/v1/operlog/clean',
+    method: 'delete'
+  })
+}
+
+// 查询SysOperlog列表
+export function listSysOperlog(query) {
+  return request({
+    url: '/api/v1/sys-opera-log',
+    method: 'get',
+    params: query
+  })
+}
+
+// 删除SysOperlog
+export function delSysOperlog(data) {
+  return request({
+    url: '/api/v1/sys-opera-log',
+    method: 'delete',
+    data: data
+  })
+}
+

+ 211 - 120
src/views/loginlog/index.vue

@@ -1,43 +1,38 @@
+
 <template>
   <BasicLayout>
     <template #wrapper>
       <el-card class="box-card">
         <el-form ref="queryForm" :model="queryParams" :inline="true" label-width="68px">
-          <el-form-item label="登录地址" prop="ipaddr">
-            <el-input
-              v-model="queryParams.ipaddr"
-              placeholder="请输入登录地址"
-              clearable
-              style="width: 240px;"
-              size="small"
-              @keyup.enter.native="handleQuery"
-            />
+          <el-form-item label="用户名" prop="username"><el-input
+            v-model="queryParams.username"
+            placeholder="请输入用户名"
+            clearable
+            size="small"
+            @keyup.enter.native="handleQuery"
+          />
           </el-form-item>
-          <el-form-item label="用户名称" prop="userName">
-            <el-input
-              v-model="queryParams.userName"
-              placeholder="请输入用户名称"
-              clearable
-              style="width: 240px;"
-              size="small"
-              @keyup.enter.native="handleQuery"
+          <el-form-item label="状态" prop="status"><el-select
+            v-model="queryParams.status"
+            placeholder="系统登录日志状态"
+            clearable
+            size="small"
+          >
+            <el-option
+              v-for="dict in statusOptions"
+              :key="dict.dictValue"
+              :label="dict.dictLabel"
+              :value="dict.dictValue"
             />
+          </el-select>
           </el-form-item>
-          <el-form-item label="状态" prop="status">
-            <el-select
-              v-model="queryParams.status"
-              placeholder="登录状态"
-              clearable
-              size="small"
-              style="width: 240px"
-            >
-              <el-option
-                v-for="dict in statusOptions"
-                :key="dict.dictValue"
-                :label="dict.dictLabel"
-                :value="dict.dictValue"
-              />
-            </el-select>
+          <el-form-item label="ip地址" prop="ipaddr"><el-input
+            v-model="queryParams.ipaddr"
+            placeholder="请输入ip地址"
+            clearable
+            size="small"
+            @keyup.enter.native="handleQuery"
+          />
           </el-form-item>
 
           <el-form-item>
@@ -49,49 +44,88 @@
         <el-row :gutter="10" class="mb8">
           <el-col :span="1.5">
             <el-button
-              v-permisaction="['system:sysloginlog:remove']"
+              v-permisaction="['admin:sysloginlog:remove']"
               type="danger"
               icon="el-icon-delete"
               size="mini"
               :disabled="multiple"
               @click="handleDelete"
-            >删除</el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button
-              v-permisaction="['system:sysloginlog:remove']"
-              type="danger"
-              icon="el-icon-delete"
-              size="mini"
-              @click="handleClean"
-            >清空</el-button>
-          </el-col>
-          <el-col :span="1.5">
-            <el-button
-              v-permisaction="['system:sysloginlog:export']"
-              type="warning"
-              icon="el-icon-download"
-              size="mini"
-              @click="handleExport"
-            >导出</el-button>
+            >删除
+            </el-button>
           </el-col>
         </el-row>
 
-        <el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange">
+        <el-table v-loading="loading" :data="sysloginlogList" @selection-change="handleSelectionChange">
           <el-table-column type="selection" width="55" align="center" />
-          <el-table-column label="编号" width="70" align="center" prop="infoId" />
-          <el-table-column label="用户名称" width="85" align="center" prop="username" />
-          <el-table-column label="登录地址" align="center" prop="ipaddr" width="130" :show-overflow-tooltip="true" />
-          <el-table-column label="登录地点" align="center" prop="loginLocation" />
-          <el-table-column label="浏览器" align="center" prop="browser" />
-          <el-table-column label="操作系统" align="center" prop="os" />
-          <el-table-column label="登录状态" width="80" align="center" prop="status" :formatter="statusFormat" />
-          <el-table-column label="操作信息" width="90" align="center" prop="msg" />
-          <el-table-column label="登录日期" align="center" prop="loginTime" width="180">
+          <el-table-column
+            label="用户名"
+            align="center"
+            prop="username"
+            :show-overflow-tooltip="true"
+          />
+          <el-table-column
+            label="状态"
+            align="center"
+            prop="status"
+            :formatter="statusFormat"
+            width="100"
+          >
+            <template slot-scope="scope">
+              {{ statusFormat(scope.row) }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="ip地址"
+            align="center"
+            prop="ipaddr"
+            :show-overflow-tooltip="true"
+          />
+          <el-table-column
+            label="归属地"
+            align="center"
+            prop="loginLocation"
+            :show-overflow-tooltip="true"
+          />
+          <el-table-column
+            label="浏览器"
+            align="center"
+            prop="browser"
+            :show-overflow-tooltip="true"
+          />
+          <el-table-column
+            label="系统"
+            align="center"
+            prop="os"
+            :show-overflow-tooltip="true"
+          />
+          <el-table-column
+            label="固件"
+            align="center"
+            prop="platform"
+            :show-overflow-tooltip="true"
+          />
+          <el-table-column
+            label="登录时间"
+            align="center"
+            prop="loginTime"
+            width="180"
+          >
             <template slot-scope="scope">
               <span>{{ parseTime(scope.row.loginTime) }}</span>
             </template>
           </el-table-column>
+          <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+            <template slot-scope="scope">
+              <el-button
+                v-permisaction="['admin:sysloginlog:remove']"
+                size="mini"
+                type="text"
+                icon="el-icon-delete"
+                @click="handleDelete(scope.row)"
+              >删除
+              </el-button>
+            </template>
+          </el-table-column>
         </el-table>
 
         <pagination
@@ -107,34 +141,51 @@
 </template>
 
 <script>
-import { list, delLogininfor, cleanLogininfor } from '@/api/system/loginlog'
-import { formatJson } from '@/utils'
+import { delSysLoginlog, getSysLoginlog, listSysLoginlog } from '@/api/system/sys-login-log'
 
 export default {
-  name: 'Logininfor',
+  name: 'SysLoginlog',
+  components: {
+  },
   data() {
     return {
       // 遮罩层
       loading: true,
       // 选中数组
       ids: [],
+      // 非单个禁用
+      single: true,
       // 非多个禁用
       multiple: true,
       // 总条数
       total: 0,
-      // 表格数据
-      list: [],
-      // 状态数据字典
+      // 弹出层标题
+      title: '',
+      // 是否显示弹出层
+      open: false,
+      isEdit: false,
+      fileOpen: false,
+      fileIndex: undefined,
+      // 类型数据字典
+      typeOptions: [],
+      sysloginlogList: [],
       statusOptions: [],
-      // 日期范围
-      dateRange: [],
+      // 关系表类型
+
       // 查询参数
       queryParams: {
         pageIndex: 1,
         pageSize: 10,
+        username: undefined,
+        status: undefined,
         ipaddr: undefined,
-        userName: undefined,
-        status: undefined
+        loginLocation: undefined
+      },
+      // 表单参数
+      form: {
+      },
+      // 表单校验
+      rules: {
       }
     }
   },
@@ -145,20 +196,49 @@ export default {
     })
   },
   methods: {
-    /** 查询登录日志列表 */
+    /** 查询参数列表 */
     getList() {
       this.loading = true
-      list(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
-        this.list = response.data.list
+      listSysLoginlog(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
+        this.sysloginlogList = response.data.list
         this.total = response.data.count
         this.loading = false
       }
       )
     },
-    // 登录状态字典翻译
-    statusFormat(row, column) {
+    // 取消按钮
+    cancel() {
+      this.open = false
+      this.reset()
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        ID: undefined,
+        username: undefined,
+        status: undefined,
+        ipaddr: undefined,
+        loginLocation: undefined,
+        browser: undefined,
+        os: undefined,
+        platform: undefined,
+        loginTime: undefined,
+        remark: undefined,
+        msg: undefined
+      }
+      this.resetForm('form')
+    },
+    getImgList: function() {
+      this.form[this.fileIndex] = this.$refs['fileChoose'].resultList[0].fullUrl
+    },
+    fileClose: function() {
+      this.fileOpen = false
+    },
+    statusFormat(row) {
       return this.selectDictLabel(this.statusOptions, row.status)
     },
+    // 关系
+    // 文件
     /** 搜索按钮操作 */
     handleQuery() {
       this.queryParams.pageIndex = 1
@@ -170,64 +250,75 @@ export default {
       this.resetForm('queryForm')
       this.handleQuery()
     },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset()
+      this.open = true
+      this.title = '添加系统登录日志'
+      this.isEdit = false
+    },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.infoId)
+      this.ids = selection.map(item => item.ID)
+      this.single = selection.length !== 1
       this.multiple = !selection.length
     },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset()
+      const ID =
+                row.ID || this.ids
+      getSysLoginlog(ID).then(response => {
+        this.form = response.data
+        this.open = true
+        this.title = '修改系统登录日志'
+        this.isEdit = true
+      })
+    },
+    /** 提交按钮 */
+    submitForm: function() {
+      this.$refs['form'].validate(valid => {
+        if (valid) {
+          if (this.form.ID !== undefined) {
+            updateSysLoginlog(this.form).then(response => {
+              if (response.code === 200) {
+                this.msgSuccess('修改成功')
+                this.open = false
+                this.getList()
+              } else {
+                this.msgError(response.msg)
+              }
+            })
+          } else {
+            addSysLoginlog(this.form).then(response => {
+              if (response.code === 200) {
+                this.msgSuccess('新增成功')
+                this.open = false
+                this.getList()
+              } else {
+                this.msgError(response.msg)
+              }
+            })
+          }
+        }
+      })
+    },
     /** 删除按钮操作 */
     handleDelete(row) {
-      const infoIds = row.infoId || this.ids
-      this.$confirm('是否确认删除访问编号为"' + infoIds + '"的数据项?', '警告', {
+      var Ids = (row.ID && [row.ID]) || this.ids
+
+      this.$confirm('是否确认删除编号为"' + Ids + '"的数据项?', '警告', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
       }).then(function() {
-        return delLogininfor(infoIds)
+        return delSysLoginlog({ 'ids': Ids })
       }).then(() => {
         this.getList()
         this.msgSuccess('删除成功')
-      }).catch(function() {})
-    },
-    /** 清空按钮操作 */
-    handleClean() {
-      this.$confirm('是否确认清空所有登录日志数据项?', '警告', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(function() {
-        return cleanLogininfor()
-      }).then(() => {
-        this.getList()
-        this.msgSuccess('清空成功')
-      }).catch(function() {})
-    },
-    /** 导出按钮操作 */
-    handleExport() {
-      // const queryParams = this.queryParams
-      this.$confirm('是否确认导出所有操作日志数据项?', '警告', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        this.downloadLoading = true
-        import('@/vendor/Export2Excel').then(excel => {
-          const tHeader = ['编号', '用户名称', '登陆地址', '登陆地点', '浏览器', '操作系统', '登陆状态', '操作信息', '登陆日期']
-          const filterVal = ['infoId', 'username', 'ipaddr', 'loginLocation', 'browser', 'os', 'status', 'msg', 'loginTime']
-          const list = this.list
-          const data = formatJson(filterVal, list)
-          excel.export_json_to_excel({
-            header: tHeader,
-            data,
-            filename: '登陆日志',
-            autoWidth: true, // Optional
-            bookType: 'xlsx' // Optional
-          })
-          this.downloadLoading = false
-        })
+      }).catch(function() {
       })
     }
   }
 }
 </script>
-

+ 12 - 31
src/views/operlog/index.vue

@@ -13,16 +13,6 @@
               @keyup.enter.native="handleQuery"
             />
           </el-form-item>
-          <el-form-item label="操作人员" prop="operName">
-            <el-input
-              v-model="queryParams.operName"
-              placeholder="请输入操作人员"
-              clearable
-              style="width: 240px;"
-              size="small"
-              @keyup.enter.native="handleQuery"
-            />
-          </el-form-item>
           <el-form-item label="类型" prop="businessType">
             <el-select
               v-model="queryParams.businessType"
@@ -72,15 +62,6 @@
               @click="handleDelete"
             >删除</el-button>
           </el-col>
-          <el-col :span="1.5">
-            <el-button
-              v-permisaction="['system:sysoperlog:remove']"
-              type="danger"
-              icon="el-icon-delete"
-              size="mini"
-              @click="handleClean"
-            >清空</el-button>
-          </el-col>
           <el-col :span="1.5">
             <el-button
               v-permisaction="['system:sysoperlog:export']"
@@ -94,14 +75,14 @@
 
         <el-table v-loading="loading" :data="list" @selection-change="handleSelectionChange">
           <el-table-column type="selection" width="55" align="center" />
-          <el-table-column label="日志编号" width="80" align="center" prop="operId" />
-          <el-table-column label="系统模块" align="center" prop="title" />
-          <el-table-column label="操作类型" width="80" align="center" prop="businessType" :formatter="typeFormat" />
-          <el-table-column label="请求方式" width="80" align="center" prop="requestMethod" />
-          <el-table-column label="操作人员" align="center" prop="operName" />
+          <el-table-column label="日志编号" width="80" align="center" prop="ID" />
+          <el-table-column label="系统模块" align="center" prop="title" :show-overflow-tooltip="true" />
+          <el-table-column label="操作类型" width="80" align="center" prop="businessType" :formatter="typeFormat" :show-overflow-tooltip="true" />
+          <el-table-column label="请求方式" width="80" align="center" prop="requestMethod" :show-overflow-tooltip="true" />
+          <el-table-column label="操作人员" align="center" prop="operName" :show-overflow-tooltip="true" />
           <el-table-column label="主机" align="center" prop="operIp" width="130" :show-overflow-tooltip="true" />
-          <el-table-column label="操作地点" align="center" prop="operLocation" />
-          <el-table-column label="操作状态" align="center" prop="status" :formatter="statusFormat" />
+          <el-table-column label="操作地点" align="center" prop="operLocation" :show-overflow-tooltip="true" />
+          <el-table-column label="操作状态" align="center" prop="status" :formatter="statusFormat" :show-overflow-tooltip="true" />
           <el-table-column label="操作日期" align="center" prop="operTime" width="180">
             <template slot-scope="scope">
               <span>{{ parseTime(scope.row.operTime) }}</span>
@@ -178,7 +159,7 @@
 </template>
 
 <script>
-import { list, delOperlog, cleanOperlog } from '@/api/system/operlog'
+import { listSysOperlog, delSysOperlog, cleanOperlog } from '@/api/system/sys-opera-log'
 import { formatJson } from '@/utils'
 
 export default {
@@ -229,7 +210,7 @@ export default {
     /** 查询登录日志 */
     getList() {
       this.loading = true
-      list(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
+      listSysOperlog(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
         this.list = response.data.list
         this.total = response.data.count
         this.loading = false
@@ -267,13 +248,13 @@ export default {
     },
     /** 删除按钮操作 */
     handleDelete(row) {
-      const operIds = row.operId || this.ids
+      const operIds = row.ID || this.ids
       this.$confirm('是否确认删除日志编号为"' + operIds + '"的数据项?', '警告', {
         confirmButtonText: '确定',
         cancelButtonText: '取消',
         type: 'warning'
       }).then(function() {
-        return delOperlog(operIds)
+        return delSysOperlog(operIds)
       }).then(() => {
         this.getList()
         this.msgSuccess('删除成功')
@@ -303,7 +284,7 @@ export default {
         this.downloadLoading = true
         import('@/vendor/Export2Excel').then(excel => {
           const tHeader = ['日志编号', '系统模块', '操作类型', '请求方式', '操作人员', '主机', '操作地点', '操作状态', '操作url', '操作日期']
-          const filterVal = ['operId', 'title', 'businessType', 'method', 'operName', 'operIp', 'operLocation', 'status', 'operUrl', 'operTime']
+          const filterVal = ['ID', 'title', 'businessType', 'method', 'operName', 'operIp', 'operLocation', 'status', 'operUrl', 'operTime']
           const list = this.list
           const data = formatJson(filterVal, list)
           excel.export_json_to_excel({