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

等级导出及七日数据添加

maker преди 2 години
родител
ревизия
1461bdfbe4
променени са 2 файла, в които са добавени 126 реда и са изтрити 5 реда
  1. 51 0
      src/api/imageRecord.js
  2. 75 5
      src/view/levelMonitor/imageRecordStatisticsList.vue

+ 51 - 0
src/api/imageRecord.js

@@ -8,10 +8,61 @@ export const getImageRecordList = (data) => {
     })
 }
 
+//获取等级统计列表
 export const getImageRecordStatisticsList = (data) => {
     return service({
         url: '/levelMonitor/getImageRecordStatisticsList',
         method: 'post',
         data
     })
+}
+
+//获取七日数据
+export const getWeekImageRecordStatistics = (data) => {
+    return service({
+        url: '/levelMonitor/getWeekImageRecordStatistics',
+        method: 'post',
+        data
+    })
+}
+
+
+//导出等级统计列表
+export const imageRecordStatisticsExport = (tableData, fileName) => {
+    service({
+        url: '/levelMonitor/imageRecordStatisticsExport',
+        method: 'post',
+        data: {
+            fileName: fileName,
+            infoList: tableData
+        },
+        responseType: 'blob'
+    }).then((res) => {
+        handleFileError(res, fileName)
+    })
+}
+
+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)
+    }
 }

+ 75 - 5
src/view/levelMonitor/imageRecordStatisticsList.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>
@@ -44,6 +46,11 @@
                 <el-table-column align="left" label="15留" min-width="100" prop="fifteen" />
                 <el-table-column align="left" label="25留" min-width="100" prop="twenty_five" />
                 <el-table-column align="left" label="30留" min-width="100" prop="thirty" />
+                <el-table-column align="left" fixed="right" label="操作" width="200">
+                    <template #default="scope">
+                        <el-button size="small" type="primary" plain @click="getWeekLevelData(scope.row)">7日</el-button>
+                    </template>
+                </el-table-column>
             </el-table>
             <div class="gva-pagination">
                 <el-pagination :current-page="page" :page-size="pageSize" :page-sizes="[10, 30, 50, 100]" :total="total"
@@ -51,6 +58,31 @@
                     @size-change="handleSizeChange" />
             </div>
         </div>
+
+        <el-dialog v-model="dialogFormVisible" :before-close="closeDialog" :title="dialogTitle" width="80%">
+            <el-table :data="LevelTableData" height="500" border>
+                <el-table-column align="left" label="游戏id" min-width="100" prop="task_id" />
+                <el-table-column align="left" label="任务名称" min-width="100" prop="task_name" />
+                <el-table-column align="left" label="负责人" min-width="100" prop="user" />
+                <el-table-column align="left" label="日期" min-width="150" prop="create_date" />
+                <el-table-column align="left" label="次留" min-width="100" prop="two" />
+                <el-table-column align="left" label="3留" min-width="100" prop="three" />
+                <el-table-column align="left" label="4留" min-width="100" prop="four" />
+                <el-table-column align="left" label="5留" min-width="100" prop="five" />
+                <el-table-column align="left" label="6留" min-width="100" prop="six" />
+                <el-table-column align="left" label="7留" min-width="100" prop="seven" />
+                <el-table-column align="left" label="8留" min-width="100" prop="eight" />
+                <el-table-column align="left" label="9留" min-width="100" prop="nine" />
+                <el-table-column align="left" label="10留" min-width="100" prop="ten" />
+                <el-table-column align="left" label="11留" min-width="100" prop="eleven" />
+                <el-table-column align="left" label="12留" min-width="100" prop="twelve" />
+                <el-table-column align="left" label="13留" min-width="100" prop="thirteen" />
+                <el-table-column align="left" label="14留" min-width="100" prop="fourteen" />
+                <el-table-column align="left" label="15留" min-width="100" prop="fifteen" />
+                <el-table-column align="left" label="25留" min-width="100" prop="twenty_five" />
+                <el-table-column align="left" label="30留" min-width="100" prop="thirty" />
+            </el-table>
+        </el-dialog>
     </div>
 </template>
   
@@ -62,7 +94,9 @@ export default {
   
 <script setup>
 import {
-    getImageRecordStatisticsList
+    getImageRecordStatisticsList,
+    getWeekImageRecordStatistics,
+    imageRecordStatisticsExport
 } from '@/api/imageRecord'
 import {
     selectResponsiblePerson,
@@ -78,6 +112,8 @@ const total = ref(0)
 const pageSize = ref(10)
 const tableData = ref([])
 const searchInfo = ref({})
+const LevelTableData = ref([])
+
 
 const ResponsiblePerson = ref([{
     id: 0,
@@ -98,6 +134,13 @@ const onReset = () => {
     getTableData()
 }
 
+// 查看7日等级
+const getWeekLevelData = async (row) => {
+    const res = await getWeekImageRecordStatistics({ task_id: row.task_id, create_date: row.create_date })
+    LevelTableData.value = res.data
+    openDialog('getData')
+}
+
 // 搜索
 const onSubmit = () => {
     page.value = 1
@@ -114,6 +157,22 @@ const onSubmit = () => {
     getTableData()
 }
 
+//导出列表
+const handleExcelExport = async () => {
+    var fileName = Date.parse(new Date()) + "-level.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 + "-level.xlsx"
+    } else {
+        fileName = searchInfo.value.create_date + "-level.xlsx"
+    }
+    imageRecordStatisticsExport({ page: page.value, pageSize: pageSize.value, ...searchInfo.value }, fileName)
+}
+
 // 分页
 const handleSizeChange = (val) => {
     pageSize.value = val
@@ -151,13 +210,24 @@ const getTableData = async () => {
 getTableData()
 
 
-// }
-// const closeDialog = () => {
-//     dialogFormVisible.value = false
-// }
+
+const closeDialog = () => {
+    dialogFormVisible.value = false
+}
 const dialogTitle = ref('')
 const type = ref('')
 const dialogFormVisible = ref(false)
+const openDialog = (key) => {
+    switch (key) {
+        case 'getWeekData':
+            dialogTitle.value = '7日数据'
+            break
+        default:
+            break
+    }
+    type.value = key
+    dialogFormVisible.value = true
+}
 
 // 批量操作
 const handleSelectionChange = (val) => {