Преглед на файлове

日志管理中的前端导出

lph преди 1 година
родител
ревизия
a6ead3de60

+ 56 - 0
zkqy-ui/src/components/ExcelDownLoad/index.vue

@@ -155,6 +155,62 @@ export default {
             item.status = item.status == 0 ? "正常" : "暂停";
           });
           break;
+        case "operlog":
+          list.forEach((item) => {
+            switch (item.businessType) {
+              case "0":
+                item.businessType = "其它";
+                break;
+              case "1":
+                item.businessType = "新增";
+                break;
+              case "2":
+                item.businessType = "修改";
+                break;
+              case "3":
+                item.businessType = "删除";
+                break;
+              case "4":
+                item.businessType = "授权";
+                break;
+              case "5":
+                item.businessType = "导出";
+                break;
+              case "6":
+                item.businessType = "导入";
+                break;
+              case "7":
+                item.businessType = "强退";
+                break;
+              case "8":
+                item.businessType = "生成代码";
+                break;
+              case "9":
+                item.businessType = "清空数据";
+                break;
+              default:
+                break;
+            }
+            item.operatorType =
+              item.operatorType == 0
+                ? "其它"
+                : item.operatorType == 1
+                ? "后台用户"
+                : "手机端用户";
+            item.status = item.status == 0 ? "正常" : "异常";
+            item.operTime = moment(new Date(item.operTime)).format(
+              "YYYY-MM-DD HH:mm:ss"
+            );
+          });
+          break;
+        case "logininfor":
+          list.forEach((item) => {
+            item.status = item.status == 0 ? "成功" : "失败";
+            item.loginTime = moment(new Date(item.loginTime)).format(
+              "YYYY-MM-DD HH:mm:ss"
+            );
+          });
+          break;
         default:
           break;
       }

+ 167 - 53
zkqy-ui/src/views/monitor/logininfor/index.vue

@@ -1,12 +1,19 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
       <el-form-item label="登录地址" prop="ipaddr">
         <el-input
           v-model="queryParams.ipaddr"
           placeholder="请输入登录地址"
           clearable
-          style="width: 240px;"
+          style="width: 240px"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
@@ -15,7 +22,7 @@
           v-model="queryParams.userName"
           placeholder="请输入用户名称"
           clearable
-          style="width: 240px;"
+          style="width: 240px"
           @keyup.enter.native="handleQuery"
         />
       </el-form-item>
@@ -47,8 +54,16 @@
         ></el-date-picker>
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+          >重置</el-button
+        >
       </el-form-item>
     </el-form>
 
@@ -62,7 +77,8 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['monitor:logininfor:remove']"
-        >删除</el-button>
+          >删除</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -72,7 +88,8 @@
           size="mini"
           @click="handleClean"
           v-hasPermi="['monitor:logininfor:remove']"
-        >清空</el-button>
+          >清空</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -83,36 +100,93 @@
           :disabled="single"
           @click="handleUnlock"
           v-hasPermi="['monitor:logininfor:unlock']"
-        >解锁</el-button>
+          >解锁</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
+          v-if="selection.length == 0"
           type="warning"
           plain
           icon="el-icon-download"
           size="mini"
           @click="handleExport"
           v-hasPermi="['monitor:logininfor:export']"
-        >导出</el-button>
+          >导出</el-button
+        >
+        <ExcelDownLoad
+          v-else
+          :headerList="headerList"
+          :fieldList="selection"
+          :excelTitle="excelTitle"
+        ></ExcelDownLoad>
       </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
     </el-row>
 
-    <el-table ref="tables" v-loading="loading" :data="list" @selection-change="handleSelectionChange" :default-sort="defaultSort" @sort-change="handleSortChange">
+    <el-table
+      ref="tables"
+      v-loading="loading"
+      :data="list"
+      @selection-change="handleSelectionChange"
+      :default-sort="defaultSort"
+      @sort-change="handleSortChange"
+    >
       <el-table-column type="selection" width="55" align="center" />
       <el-table-column label="访问编号" align="center" prop="infoId" />
-      <el-table-column label="用户名称" align="center" prop="userName" :show-overflow-tooltip="true" sortable="custom" :sort-orders="['descending', 'ascending']" />
-      <el-table-column label="登录地址" align="center" prop="ipaddr" width="130" :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="userName"
+        :show-overflow-tooltip="true"
+        sortable="custom"
+        :sort-orders="['descending', 'ascending']"
+      />
+      <el-table-column
+        label="登录地址"
+        align="center"
+        prop="ipaddr"
+        width="130"
+        :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" />
       <el-table-column label="登录状态" align="center" prop="status">
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.sys_common_status" :value="scope.row.status"/>
+          <dict-tag
+            :options="dict.type.sys_common_status"
+            :value="scope.row.status"
+          />
         </template>
       </el-table-column>
-      <el-table-column label="操作信息" align="center" prop="msg" :show-overflow-tooltip="true" />
-      <el-table-column label="登录日期" align="center" prop="loginTime" sortable="custom" :sort-orders="['descending', 'ascending']" width="180">
+      <el-table-column
+        label="操作信息"
+        align="center"
+        prop="msg"
+        :show-overflow-tooltip="true"
+      />
+      <el-table-column
+        label="登录日期"
+        align="center"
+        prop="loginTime"
+        sortable="custom"
+        :sort-orders="['descending', 'ascending']"
+        width="180"
+      >
         <template slot-scope="scope">
           <span>{{ parseTime(scope.row.loginTime) }}</span>
         </template>
@@ -120,7 +194,7 @@
     </el-table>
 
     <pagination
-      v-show="total>0"
+      v-show="total > 0"
       :total="total"
       :page.sync="queryParams.pageNum"
       :limit.sync="queryParams.pageSize"
@@ -130,13 +204,36 @@
 </template>
 
 <script>
-import { list, delLogininfor, cleanLogininfor, unlockLogininfor } from "@/api/monitor/logininfor";
+import {
+  list,
+  delLogininfor,
+  cleanLogininfor,
+  unlockLogininfor,
+} from "@/api/monitor/logininfor";
+import ExcelDownLoad from "@/components/ExcelDownLoad/index.vue";
 
 export default {
   name: "Logininfor",
-  dicts: ['sys_common_status'],
+  dicts: ["sys_common_status"],
+  components: {
+    ExcelDownLoad,
+  },
   data() {
     return {
+      // 前端导出数据
+      selection: [],
+      headerList: {
+        序号: "infoId",
+        用户账号: "userName",
+        登录状态: "status",
+        登录地址: "ipaddr",
+        登录地点: "loginLocation",
+        浏览器: "browser",
+        操作系统: "os",
+        提示消息: "msg",
+        访问时间: "loginTime",
+      },
+      excelTitle: "logininfor",
       // 遮罩层
       loading: true,
       // 选中数组
@@ -156,15 +253,15 @@ export default {
       // 日期范围
       dateRange: [],
       // 默认排序
-      defaultSort: {prop: 'loginTime', order: 'descending'},
+      defaultSort: { prop: "loginTime", order: "descending" },
       // 查询参数
       queryParams: {
         pageNum: 1,
         pageSize: 10,
         ipaddr: undefined,
         userName: undefined,
-        status: undefined
-      }
+        status: undefined,
+      },
     };
   },
   created() {
@@ -174,7 +271,8 @@ export default {
     /** 查询登录日志列表 */
     getList() {
       this.loading = true;
-      list(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
+      list(this.addDateRange(this.queryParams, this.dateRange)).then(
+        (response) => {
           this.list = response.rows;
           this.total = response.total;
           this.loading = false;
@@ -191,14 +289,15 @@ export default {
       this.dateRange = [];
       this.resetForm("queryForm");
       this.queryParams.pageNum = 1;
-      this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order)
+      this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order);
     },
     /** 多选框选中数据 */
     handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.infoId)
-      this.single = selection.length!=1
-      this.multiple = !selection.length
-      this.selectName = selection.map(item => item.userName);
+      this.selection = selection;
+      this.ids = selection.map((item) => item.infoId);
+      this.single = selection.length != 1;
+      this.multiple = !selection.length;
+      this.selectName = selection.map((item) => item.userName);
     },
     /** 排序触发事件 */
     handleSortChange(column, prop, order) {
@@ -209,38 +308,53 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const infoIds = row.infoId || this.ids;
-      this.$modal.confirm('是否确认删除访问编号为"' + infoIds + '"的数据项?').then(function() {
-        return delLogininfor(infoIds);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
+      this.$modal
+        .confirm('是否确认删除访问编号为"' + infoIds + '"的数据项?')
+        .then(function () {
+          return delLogininfor(infoIds);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        })
+        .catch(() => {});
     },
     /** 清空按钮操作 */
     handleClean() {
-      this.$modal.confirm('是否确认清空所有登录日志数据项?').then(function() {
-        return cleanLogininfor();
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("清空成功");
-      }).catch(() => {});
+      this.$modal
+        .confirm("是否确认清空所有登录日志数据项?")
+        .then(function () {
+          return cleanLogininfor();
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("清空成功");
+        })
+        .catch(() => {});
     },
     /** 解锁按钮操作 */
     handleUnlock() {
       const username = this.selectName;
-      this.$modal.confirm('是否确认解锁用户"' + username + '"数据项?').then(function() {
-        return unlockLogininfor(username);
-      }).then(() => {
-        this.$modal.msgSuccess("用户" + username + "解锁成功");
-      }).catch(() => {});
+      this.$modal
+        .confirm('是否确认解锁用户"' + username + '"数据项?')
+        .then(function () {
+          return unlockLogininfor(username);
+        })
+        .then(() => {
+          this.$modal.msgSuccess("用户" + username + "解锁成功");
+        })
+        .catch(() => {});
     },
     /** 导出按钮操作 */
     handleExport() {
-      this.download('monitor/logininfor/export', {
-        ...this.queryParams
-      }, `logininfor_${new Date().getTime()}.xlsx`)
-    }
-  }
+      this.download(
+        "monitor/logininfor/export",
+        {
+          ...this.queryParams,
+        },
+        `logininfor_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
 };
 </script>
-

+ 34 - 0
zkqy-ui/src/views/monitor/operlog/index.vue

@@ -108,6 +108,7 @@
       </el-col>
       <el-col :span="1.5">
         <el-button
+          v-if="selection.length == 0"
           type="warning"
           plain
           icon="el-icon-download"
@@ -116,6 +117,12 @@
           v-hasPermi="['monitor:operlog:export']"
           >导出</el-button
         >
+        <ExcelDownLoad
+          v-else
+          :headerList="headerList"
+          :fieldList="selection"
+          :excelTitle="excelTitle"
+        ></ExcelDownLoad>
       </el-col>
       <right-toolbar
         :showSearch.sync="showSearch"
@@ -304,12 +311,38 @@
 
 <script>
 import { list, delOperlog, cleanOperlog } from "@/api/monitor/operlog";
+import ExcelDownLoad from "@/components/ExcelDownLoad/index.vue";
 
 export default {
   name: "Operlog",
   dicts: ["sys_oper_type", "sys_common_status"],
+  components: {
+    ExcelDownLoad,
+  },
   data() {
     return {
+      // 前端导出数据
+      selection: [],
+      headerList: {
+        操作序号: "operId",
+        操作模块: "title",
+        业务类型: "businessType",
+        请求方法: "method",
+        请求方式: "requestMethod",
+        操作类别: "operatorType",
+        操作人员: "operName",
+        部门名称: "deptName",
+        请求地址: "operUrl",
+        操作地址: "operIp",
+        操作地点: "operLocation",
+        请求参数: "operParam",
+        返回参数: "jsonResult",
+        状态: "status",
+        错误消息: "errorMsg",
+        操作时间: "operTime",
+        消耗时间: "costTime",
+      },
+      excelTitle: "operlog",
       // 遮罩层
       loading: true,
       // 选中数组
@@ -377,6 +410,7 @@ export default {
     },
     /** 多选框选中数据 */
     handleSelectionChange(selection) {
+      this.selection = selection;
       this.ids = selection.map((item) => item.operId);
       this.multiple = !selection.length;
     },

+ 20 - 0
zkqy-ui/src/views/system/tenant/dict/index.vue

@@ -104,6 +104,7 @@
       </el-col>
       <el-col :span="1.5">
         <el-button
+          v-if="selection.length == 0"
           type="warning"
           plain
           icon="el-icon-download"
@@ -112,6 +113,12 @@
           v-hasPermi="['system:tenantDict:export']"
           >导出</el-button
         >
+        <ExcelDownLoad
+          v-else
+          :headerList="headerList"
+          :fieldList="selection"
+          :excelTitle="excelTitle"
+        ></ExcelDownLoad>
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -286,12 +293,25 @@ import {
   updateType,
   refreshCache,
 } from "@/api/system/tenant/type";
+import ExcelDownLoad from "@/components/ExcelDownLoad/index.vue";
 
 export default {
   name: "Dict",
   dicts: ["sys_normal_disable"],
+  components: {
+    ExcelDownLoad,
+  },
   data() {
     return {
+      // 前端导出数据
+      selection: [],
+      headerList: {
+        字典主键: "dictId",
+        字典名称: "dictName",
+        字典类型: "dictType",
+        状态: "status",
+      },
+      excelTitle: "type",
       // 遮罩层
       loading: true,
       // 选中数组