wangbin лет назад: 3
Родитель
Сommit
4e30b2affc
4 измененных файлов с 130 добавлено и 1352 удалено
  1. 9 1
      src/api/log.js
  2. 0 1268
      src/view/fileManager/qiniuTransfer.vue
  3. 62 49
      src/view/logComputer/list.vue
  4. 59 34
      src/view/logStatistics/list.vue

+ 9 - 1
src/api/log.js

@@ -77,6 +77,14 @@ export const getLogScanningList = (data) => {
 }
 
 
+export const computerSevenRate = (data) => {
+  return service({
+    url: '/loging/computerSevenRate',
+    method: 'post',
+    data
+  })
+}
+
 const handleFileError = (res, fileName) => {
   if (typeof (res.data) !== 'undefined') {
     if (res.data.type === 'application/json') {
@@ -137,4 +145,4 @@ export const computerRateExport = (tableData, fileName) => {
   }).then((res) => {
     handleFileError(res, fileName)
   })
-}
+}

Разница между файлами не показана из-за своего большого размера
+ 0 - 1268
src/view/fileManager/qiniuTransfer.vue


+ 62 - 49
src/view/logComputer/list.vue

@@ -56,7 +56,7 @@
           <el-table-column align="left" label="半小时内付费" min-width="120" prop="computer_fee_rate" />
           <el-table-column align="left" label="任务完成效率(/h)" min-width="120" prop="computer_hour_average_rate" />
           <el-table-column align="left" label="空闲时间" min-width="120" prop="computer_free_time" />
-          <!-- <el-table-column
+          <el-table-column
           fixed="right"
           label="操作"
           align="center"
@@ -67,11 +67,11 @@
             <el-button
               type="primary"
               plain
-              @click="showSevenTab(scope.row)"
+              @click="computerSevenRateTableData(scope.row)"
               >7天</el-button
             >
           </template>
-        </el-table-column> -->
+        </el-table-column>
         </el-table>
         <div class="gva-pagination">
           <el-pagination
@@ -84,52 +84,67 @@
             @size-change="handleSizeChange"
           />
         </div>
-  
+
       </div>
-  
-      <el-dialog v-model="dialogFormVisible" :before-close="closeDialog" :title="dialogTitle">
-        <el-form ref="apiForm" :model="form" :rules="rules" label-width="80px">
-          <el-form-item label="游戏名称" prop="game_name">
-            <el-input v-model="form.game_name" autocomplete="off" />
-          </el-form-item>
-          <el-form-item label="游戏包名" prop="game_package_name">
-            <el-input v-model="form.game_package_name" autocomplete="off" />
-          </el-form-item>
-        </el-form>
+
+      <el-dialog v-model="dialogFormVisible" :before-close="closeDialog" :title="dialogTitle" width="100%">
+        <el-table :data="RateTableData" border >
+          <el-table-column align="left" label="电脑编号" min-width="100" prop="pc_code" sortable="custom"/>
+          <el-table-column align="left" label="脚本负责人" min-width="150" prop="operator" sortable="custom"/>
+          <el-table-column align="left" label="日期" min-width="150" prop="create_date" />
+          <el-table-column align="left" label="游戏id" min-width="150" prop="game_id" sortable="custom" />
+          <el-table-column align="left" label="总任务" min-width="120" prop="target_num" />
+          <el-table-column align="left" label="拉取账号" min-width="120" prop="pull_account_num" />
+          <el-table-column align="left" label="进入主线" min-width="120" prop="enter_main" />
+          <el-table-column align="left" label="主线成功" min-width="120" prop="task_success_num" />
+          <el-table-column align="left" label="半小时内付费" min-width="120" prop="computer_fee_rate" />
+          <el-table-column align="left" label="任务完成效率(/h)" min-width="120" prop="computer_hour_average_rate" />
+          <el-table-column align="left" label="空闲时间" min-width="120" prop="computer_free_time" />
+        </el-table>
         <template #footer>
           <div class="dialog-footer">
             <el-button size="small" @click="closeDialog">取 消</el-button>
-            <el-button size="small" type="primary" @click="enterDialog">确 定</el-button>
           </div>
         </template>
       </el-dialog>
     </div>
   </template>
-  
+
   <script>
   export default {
     name: 'GameList',
   }
   </script>
-  
+
   <script setup>
   import {
     logComputerList,
     logComputerNum,
     computerRateExport,
+    computerSevenRate,
   } from '@/api/log'
   import { toSQLLine } from '@/utils/stringFun'
   import { ref } from 'vue'
   import { ElMessage, ElMessageBox } from 'element-plus'
   import warningBar from '@/components/warningBar/warningBar.vue'
-  
+
   const apis = ref([])
   const form = ref({
       game_name: '',
       game_package_name: ''
   })
-  
-  
+
+  const RateTableData = ref([])
+
+  const computerSevenRateTableData = async(row) => {
+    const table = await computerSevenRate({ pc_code:row.pc_code, ...searchInfo.value })
+    if (table.code === 0) {
+      RateTableData.value = table.data.list
+      dialogTitle.value = "电脑编号: " + row.pc_code
+      dialogFormVisible.value = true
+    }
+  }
+
   const type = ref('')
   const rules = ref({
     game_name: [{ required: true, message: '请输入游戏名称', trigger: 'blur' }],
@@ -137,12 +152,12 @@
       { required: true, message: '请输入游戏包名', trigger: 'blur' }
     ]
   })
-  
+
   const typeFiletr = (value) => {
     const target = typeOptions.value.filter(item => item.value === value)[0]
     return target && `${target.label}`
   }
-    
+
     const typeOptions = ref([
     {
       value: 0,
@@ -155,24 +170,24 @@
       type: ''
     }
   ])
-  
+
   const page = ref(1)
   const total = ref(0)
   const pageSize = ref(10)
   const tableData = ref([])
   let spanArr = []
   const searchInfo = ref({})
-  
+
   const onReset = () => {
     searchInfo.value = {}
   }
-  
+
   const spanArrReset = () => {
     for (var i = 0; i < spanArr.length; i++) {
         spanArr.pop()
-    } 
+    }
   }
-  
+
   const handleExcelExport = async() => {
     var fileName = Date.parse(new Date()) + "-cpc.xlsx"
     if(searchInfo.value.create_date == null){
@@ -199,7 +214,7 @@
       label: '失败',
     },
   ]
-  
+
   const options = [
     {
       value: 45010,
@@ -235,7 +250,7 @@
     },
   ]
   // 搜索
-  
+
   const onSubmit = () => {
     page.value = 1
     pageSize.value = 10
@@ -261,7 +276,7 @@
             }
           }
         }
-        console.log(spanArr)  
+        console.log(spanArr)
   }
 
   const objectSpanMethod = (row) => {
@@ -274,20 +289,20 @@
           }
         }
   }
- 
 
-  
+
+
   // 分页
   const handleSizeChange = (val) => {
     pageSize.value = val
     getTableData()
   }
-  
+
   const handleCurrentChange = (val) => {
     page.value = val
     getTableData()
   }
-  
+
   // 排序
   const sortChange = ({ prop, order }) => {
     if (prop) {
@@ -299,7 +314,7 @@
     }
     getTableData()
   }
-  
+
   // 查询
   const getTableData = async() => {
     const table = await logComputerList({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
@@ -323,15 +338,15 @@
     }
   }
   getTableData()
-  
+
   // 批量操作
   const handleSelectionChange = (val) => {
     apis.value = val
   }
-  
+
   const deleteVisible = ref(false)
-  
-  
+
+
   // 弹窗相关
   const apiForm = ref(null)
   const initForm = () => {
@@ -341,8 +356,8 @@
       game_package_name: ''
     }
   }
-  
-  const dialogTitle = ref('新增game')
+
+  const dialogTitle = ref('pc_code')
   const dialogFormVisible = ref(false)
   const openDialog = (key) => {
     switch (key) {
@@ -359,16 +374,15 @@
     dialogFormVisible.value = true
   }
   const closeDialog = () => {
-    initForm()
     dialogFormVisible.value = false
   }
-  
+
   const editCardFunc = async(row) => {
     const res = await getGameById({ id: row.id })
     form.value = res.data
     openDialog('edit')
   }
-  
+
   const enterDialog = async() => {
     apiForm.value.validate(async valid => {
       if (valid) {
@@ -386,7 +400,7 @@
               getTableData()
               closeDialog()
             }
-  
+
             break
           case 'edit':
             {
@@ -416,10 +430,10 @@
       }
     })
   }
-  
-  
+
+
   </script>
-  
+
   <style scoped lang="scss">
   .button-box {
     padding: 10px 20px;
@@ -431,4 +445,3 @@
     color: #dc143c;
   }
   </style>
-  

+ 59 - 34
src/view/logStatistics/list.vue

@@ -23,11 +23,11 @@
         </el-form>
       </div>
       <div class="gva-table-box">
-        <el-table border 
-        :data="tableData" 
+        <el-table border
+        :data="tableData"
         :span-method="objectSpanMethod"
-        @sort-change="sortChange" 
-        @selection-change="handleSelectionChange" 
+        @sort-change="sortChange"
+        @selection-change="handleSelectionChange"
         header-align="center"
         >
           <el-table-column
@@ -107,6 +107,32 @@
           </el-table-column>
         </el-table-column>
       </el-table-column>
+      <el-table-column label="扫码完成率" align="center"  min-width="100" prop="local_order_success_rate" sortable="custom">
+        <el-table-column label="扫码成功" align="center">
+          <el-table-column prop="target_num,scanning_code_success" label="任务总数" align="center" min-width="100">
+            <template #default="scope">
+							{{ scope.row.scanning_code_success }}
+							<el-divider style="margin:0 5px" direction="vertical" />
+              {{ scope.row.target_num}}
+							<el-divider style="margin:0" />
+							{{ scope.row.scanning_code_success == 0  ? 0 + '%' : Math.round(scope.row.scanning_code_success/scope.row.target_num * 10000) / 100 + '%'}}
+						</template>
+          </el-table-column>
+        </el-table-column>
+      </el-table-column>
+      <el-table-column label="完成扫码率" align="center"  min-width="100" prop="local_order_success_rate" sortable="custom">
+        <el-table-column label="扫码成功" align="center">
+          <el-table-column prop="new_complete,scanning_code_success" label="完成总数" align="center" min-width="100">
+            <template #default="scope">
+							{{ scope.row.scanning_code_success }}
+							<el-divider style="margin:0 5px" direction="vertical" />
+              {{ scope.row.new_complete}}
+							<el-divider style="margin:0" />
+							{{ scope.row.scanning_code_success == 0  ? 0 + '%' : Math.round(scope.row.scanning_code_success/scope.row.new_complete * 10000) / 100 + '%'}}
+						</template>
+          </el-table-column>
+        </el-table-column>
+      </el-table-column>
       <el-table-column label="微信扫码率" align="center"  min-width="100" prop="scanning_success_rate" sortable="custom">
         <el-table-column label="扫码成功" align="center">
           <el-table-column prop="scanning_code_success,enter_scanning_code" label="扫码总数" align="center" min-width="100">
@@ -138,8 +164,8 @@
       <el-table-column align="center" label="下发付费" min-width="70" prop="order_create"/>
       <el-table-column align="center" label="订单数" min-width="70" prop="order_success"/>
       <el-table-column align="center" label="付费成功" min-width="70" prop="fee_ok"/>
-      
-        
+
+
       <el-table-column label="封号" min-width="60" prop="ban_off" />
       <el-table-column label="冻结" min-width="60" prop="freeze" />
       <el-table-column prop="has_role" label="新增有角色" width="60" />
@@ -156,9 +182,9 @@
             @size-change="handleSizeChange"
           />
         </div>
-  
+
       </div>
-  
+
       <el-dialog v-model="dialogFormVisible" :before-close="closeDialog" :title="dialogTitle">
         <el-table :data="tableData" @sort-change="sortChange" @selection-change="handleSelectionChange" height="500" style="width: 100%">
           <el-table-column
@@ -172,13 +198,13 @@
       </el-dialog>
     </div>
   </template>
-  
+
   <script>
   export default {
     name: 'LogStatisticsList',
   }
   </script>
-  
+
   <script setup>
   import {
     logStatistics,
@@ -187,14 +213,14 @@
   import { createElementBlock, ref } from 'vue'
   import { ElMessage, ElMessageBox } from 'element-plus'
   import warningBar from '@/components/warningBar/warningBar.vue'
-  
+
   const apis = ref([])
   const form = ref({
       game_name: '',
       game_package_name: ''
   })
-  
-  
+
+
   const type = ref('')
   const rules = ref({
     game_name: [{ required: true, message: '请输入游戏名称', trigger: 'blur' }],
@@ -202,7 +228,7 @@
       { required: true, message: '请输入游戏包名', trigger: 'blur' }
     ]
   })
-  
+
   const page = ref(1)
   const total = ref(0)
   const pageSize = ref(10)
@@ -214,7 +240,7 @@
     searchInfo.value = {}
   }
   // 搜索
-  
+
   const onSubmit = () => {
     page.value = 1
     pageSize.value = 10
@@ -241,7 +267,7 @@
   const target = typeOptions.value.filter(item => item.value === value)[0]
   return target && `${target.label}`
 }
-  
+
 const renderheader = ({ column, $index  }) => {
   console.log(column)
   console.log($index)
@@ -265,12 +291,12 @@ const renderheader = ({ column, $index  }) => {
     pageSize.value = val
     getTableData()
   }
-  
+
   const handleCurrentChange = (val) => {
     page.value = val
     getTableData()
   }
-  
+
   const headerStyle = () => {
     return {
       fontSize:"12px"
@@ -288,7 +314,7 @@ const renderheader = ({ column, $index  }) => {
     getTableData()
   }
 
-  
+
   const getSpanArr = (data) => {
     spanArr = []
     var pos = 0
@@ -306,7 +332,7 @@ const renderheader = ({ column, $index  }) => {
             }
           }
         }
-        console.log(spanArr)  
+        console.log(spanArr)
   }
 
   const objectSpanMethod = (row) => {
@@ -319,7 +345,7 @@ const renderheader = ({ column, $index  }) => {
           }
         }
   }
-  
+
   // 查询
   const getTableData = async() => {
     const table = await logStatistics({ page: page.value, pageSize: pageSize.value, ...searchInfo.value })
@@ -331,17 +357,17 @@ const renderheader = ({ column, $index  }) => {
       getSpanArr(table.data.list)
     }
   }
-  
+
   getTableData()
-  
+
   // 批量操作
   const handleSelectionChange = (val) => {
     apis.value = val
   }
-  
+
   const deleteVisible = ref(false)
-  
-  
+
+
   // 弹窗相关
   const apiForm = ref(null)
   const initForm = () => {
@@ -351,7 +377,7 @@ const renderheader = ({ column, $index  }) => {
       game_package_name: ''
     }
   }
-  
+
   const dialogTitle = ref('新增game')
   const dialogFormVisible = ref(false)
   const openDialog = (key) => {
@@ -371,13 +397,13 @@ const renderheader = ({ column, $index  }) => {
   const closeDialog = () => {
     dialogFormVisible.value = false
   }
-  
+
   const editCardFunc = async(row) => {
     const res = await getGameById({ id: row.id })
     form.value = res.data
     openDialog('edit')
   }
-  
+
   const enterDialog = async() => {
     apiForm.value.validate(async valid => {
       if (valid) {
@@ -395,7 +421,7 @@ const renderheader = ({ column, $index  }) => {
               getTableData()
               closeDialog()
             }
-  
+
             break
           case 'edit':
             {
@@ -425,10 +451,10 @@ const renderheader = ({ column, $index  }) => {
       }
     })
   }
-  
-  
+
+
   </script>
-  
+
   <style scoped lang="scss">
   .el-table .cell {
   white-space: pre-wrap;   /*这是重点。文本换行*/
@@ -443,4 +469,3 @@ const renderheader = ({ column, $index  }) => {
     color: #dc143c;
   }
   </style>
-