浏览代码

ip导出功能页面修改

maker 3 年之前
父节点
当前提交
65d9889665
共有 3 个文件被更改,包括 739 次插入729 次删除
  1. 43 0
      src/api/ipLog.js
  2. 675 728
      src/view/gameTarget/target.vue
  3. 21 1
      src/view/ipLogList/gameIpList.vue

+ 43 - 0
src/api/ipLog.js

@@ -33,4 +33,47 @@ export const getGameIp = (data) => {
         method: 'post',
         data
     })
+}
+
+
+const handleFileError = (res, fileName) => {
+    if (typeof (res.data) !== 'undefined') {
+        if (res.data.type === 'application/json') {
+            const reader = new FileReader()
+            reader.onload = function () {
+                const message = JSON.parse(reader.result).msg
+                ElMessage({
+                    showClose: true,
+                    message: message,
+                    type: 'error'
+                })
+            }
+            reader.readAsText(new Blob([res.data]))
+        }
+    } else {
+        var downloadUrl = window.URL.createObjectURL(new Blob([res]))
+        var a = document.createElement('a')
+        a.style.display = 'none'
+        a.href = downloadUrl
+        a.download = fileName
+        var event = new MouseEvent('click')
+        a.dispatchEvent(event)
+    }
+}
+
+
+
+//导出gameIp列表
+export const gameIpExport = (tableData, fileName) => {
+    service({
+        url: '/ipLog/gameIpExport',
+        method: 'post',
+        data: {
+            fileName: fileName,
+            infoList: tableData
+        },
+        responseType: 'blob'
+    }).then((res) => {
+        handleFileError(res, fileName)
+    })
 }

文件差异内容过多而无法显示
+ 675 - 728
src/view/gameTarget/target.vue


+ 21 - 1
src/view/ipLogList/gameIpList.vue

@@ -18,6 +18,8 @@
                 <el-form-item>
                     <el-button size="small" type="primary" icon="search" @click="onSubmit">查询</el-button>
                     <el-button size="small" icon="refresh" @click="onReset">重置</el-button>
+                    <el-button class="excel-btn" size="small" type="primary" icon="download"
+                        @click="handleExcelExport">导出</el-button>
                 </el-form-item>
             </el-form>
         </div>
@@ -68,7 +70,8 @@ export default {
 <script setup>
 import {
     gameIpList,
-    getGameIp
+    getGameIp,
+    gameIpExport
 } from '@/api/ipLog'
 import { toSQLLine } from '@/utils/stringFun'
 import { ref } from 'vue'
@@ -147,6 +150,23 @@ const selectIpFunc = async (row) => {
     IpTableData.value.total = res.data.total
     openDialog('getIp')
 }
+
+//导出列表
+const handleExcelExport = async () => {
+    var fileName = Date.parse(new Date()) + "-ip.xlsx"
+    if (searchInfo.value.create_date == null) {
+        let dt = new Date()
+        var y = dt.getFullYear()
+        var mt = (dt.getMonth() + 1).toString().padStart(2, '0')
+        var day = dt.getDate().toString().padStart(2, '0')
+        var timeStr = y + "-" + mt + "-" + day
+        fileName = timeStr + "-ip.xlsx"
+    } else {
+        fileName = searchInfo.value.create_date + "-ip.xlsx"
+    }
+    gameIpExport({ page: page.value, pageSize: pageSize.value, ...searchInfo.value }, fileName)
+}
+
 const closeDialog = () => {
     dialogFormVisible.value = false
 }