Browse Source

Merge branch 'master' of http://10.8.230.114:3000/wangbin/log-server-web

# Conflicts:
#	src/api/responsiblePerson.js
倚楼听风雨 3 years ago
parent
commit
a2abb5871a

+ 8 - 0
src/api/log.js

@@ -68,6 +68,14 @@ export const updateComputerUseRemarks = (data) => {
   })
 }
 
+export const getLogScanningList = (data) => {
+  return service({
+    url: '/loging/getLogScanningList',
+    method: 'post',
+    data
+  })
+}
+
 
 const handleFileError = (res, fileName) => {
   if (typeof (res.data) !== 'undefined') {

+ 15 - 0
src/api/responsiblePerson.js

@@ -140,3 +140,18 @@ export const getDirectorList = (data) => {
     data,
   });
 };
+
+// @Tags SysApi
+// @Summary 获取列表筛选
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Success 200 {string} string "{"success":true,"data":{},"msg":"获取成功成功"}"
+// @Router /responsiblePerson/selectResponsiblePerson [post]
+export const selectResponsiblePerson = (data) => {
+  return service({
+    url: "/responsiblePerson/selectResponsiblePerson",
+    method: "post",
+    data,
+  });
+};

+ 40 - 0
src/api/task.js

@@ -70,4 +70,44 @@ export const createGameTask = (data) => {
       method: 'post',
       data
     })
+  }
+
+  export const everyDayStatistics = (data) => {
+    return service({
+      url: '/gameTask/everyDayStatistics',
+      method: 'post',
+      data
+    })
+  }
+
+  export const monthStatistics = (data) => {
+    return service({
+      url: '/gameTask/monthStatistics',
+      method: 'post',
+      data
+    })
+  }
+  
+  export const gameStatistics = (data) => {
+    return service({
+      url: '/gameTask/gameStatistics',
+      method: 'post',
+      data
+    })
+  }
+
+  export const gameList = (data) => {
+    return service({
+      url: '/gameTask/gameList',
+      method: 'post',
+      data
+    })
+  }
+
+  export const getGameTxTaskList = (data) => {
+    return service({
+      url: '/gameTask/getGameTxTaskList',
+      method: 'post',
+      data
+    })
   }

+ 2 - 2
src/view/about/index.vue

@@ -49,7 +49,7 @@
             </el-row>
           </div>
         </el-card>
-        <el-card style="margin-top: 20px">
+        <!-- <el-card style="margin-top: 20px">
           <template #header>
             <div>flipped-aurora团队</div>
           </template>
@@ -74,7 +74,7 @@
               </el-col>
             </el-row>
           </div>
-        </el-card>
+        </el-card> -->
       </el-col>
       <el-col :span="12">
         <el-card>

+ 78 - 24
src/view/gameTarget/target.vue

@@ -5,9 +5,27 @@
           <el-form-item label="任务Id">
             <el-input v-model="searchInfo.task_id" placeholder="任务ID" />
           </el-form-item>
-          <el-form-item label="使用者">
-            <el-input v-model="searchInfo.user" placeholder="使用者" />
+          <el-form-item label="负责人">
+            <el-select v-model="searchInfo.user" placeholder="负责人" >
+            <el-option
+                v-for="item in ResponsiblePerson"
+                :key="item.id"
+                :label="item.name"
+                :value="item.name"
+              />
+            </el-select>
           </el-form-item>
+          <el-form-item label="状态">
+          <el-select v-model="searchInfo.is_complete" placeholder="是否完成" >
+              <el-option
+                v-for="item in searchStatusOptions"
+                :key="item.value"
+                :label="item.label"
+                :value="item.value"
+                :disabled="item.disabled"
+              />
+            </el-select>
+        </el-form-item>
           <el-form-item label="日期" prop="create_date">
           <el-date-picker
             v-model="searchInfo.create_date"
@@ -26,34 +44,45 @@
         </el-form>
       </div>
       <div class="gva-table-box">
-        <el-table :data="tableData" border @sort-change="sortChange" @selection-change="handleSelectionChange">
-          <el-table-column
-            type="selection"
-            width="55"
-          />
-          <el-table-column label="任务ID" min-width="60" prop="task_id" sortable="custom" />
-          <el-table-column label="任务日期" min-width="70" prop="create_date" />
-          <el-table-column label="任务名称" min-width="80" prop="task_name" sortable="custom" />
-          <el-table-column label="负责人" min-width="60" prop="user" sortable="custom" />
-          <el-table-column label="登录方式" min-width="60" prop="login_method" />
-          <el-table-column label="新增目标" min-width="45" prop="new_target" />
-          <el-table-column  label="新增完成" min-width="45" prop="new_complete" />
-          <el-table-column  label="留存目标" min-width="45" prop="retained_target" />
-          <el-table-column label="留存完成" min-width="45" prop="retained_complete" />
-          <el-table-column  label="付费目标" min-width="45" prop="pay_target" />
-          <el-table-column  label="付费完成" min-width="45" prop="pay_complete" />
-          <el-table-column  label="付费流水" min-width="45" prop="amount"/>
-          <el-table-column  label="手动新增" min-width="45" prop="hand_new_complete"/>
-          <el-table-column  label="手动留存" min-width="45" prop="hand_retained_complete"/>
-          <el-table-column  label="手动付费" min-width="45" prop="hand_pay_complete"/>
-          <el-table-column align="left" label="是否完成" min-width="45" prop="is_complete" >
+        <el-table :data="tableData" border @sort-change="sortChange" @selection-change="handleSelectionChange" style="width: 100%">
+          <el-table-column label="任务ID" width="70" prop="task_id" sortable="custom" />
+          <el-table-column label="任务日期" min-width="100" prop="create_date" />
+          <el-table-column label="任务名称" width="130" prop="task_name" sortable="custom" />
+          <el-table-column label="负责人" width="75" prop="user" sortable="custom" />
+          <el-table-column label="登录方式" width="75" prop="login_method" />
+          <el-table-column label="新增目标" width="75" prop="new_target" />
+          <el-table-column  label="新增完成" width="75" prop="new_complete" />
+          <el-table-column fixed="right" align="right" label="剩余新增" width="75" prop="new_target1">
+            <template #default="scope">
+              {{ scope.row.new_target <= scope.row.new_complete+scope.row.hand_new_complete  ? 0 : scope.row.new_complete+scope.row.hand_new_complete-scope.row.new_target}}
+            </template>
+          </el-table-column>
+          <el-table-column fixed="right" align="right" label="留存目标" width="75" prop="retained_target" />
+          <el-table-column fixed="right" align="right" label="留存完成" width="75" prop="retained_complete" />
+          <el-table-column fixed="right" align="right" label="剩余留存" width="75" prop="retained_target1">
+            <template #default="scope">
+              {{ scope.row.retained_target <= scope.row.retained_complete+scope.row.hand_retained_complete  ? 0 : scope.row.retained_complete+scope.row.hand_retained_complete-scope.row.retained_target}}
+            </template>
+          </el-table-column>
+          <el-table-column fixed="right" align="right"  label="付费目标" width="75" prop="pay_target" />
+          <el-table-column fixed="right" align="right" label="付费完成" width="75" prop="pay_complete" />
+          <el-table-column fixed="right" align="right" label="剩余付费" width="75" prop="pay_target1">
+            <template #default="scope">
+              {{ scope.row.pay_target <= scope.row.pay_complete+scope.row.hand_pay_complete  ? 0 : scope.row.pay_complete+scope.row.hand_pay_complete-scope.row.pay_target}}
+            </template>
+          </el-table-column>
+          <el-table-column fixed="right" align="right" label="付费流水" width="75" prop="amount"/>
+          <el-table-column fixed="right" align="right" label="手动新增" width="75" prop="hand_new_complete"/>
+          <el-table-column fixed="right" align="right" label="手动留存" width="75" prop="hand_retained_complete"/>
+          <el-table-column fixed="right" align="right" label="手动付费" width="75" prop="hand_pay_complete"/>
+          <el-table-column fixed="right" align="right" label="是否完成" width="75" prop="is_complete" >
           <template #default="scope">
             <div>
               <el-tag :type="scope.row.is_complete === -1 ? 'warning' : 'success'">{{ statusFiletr(scope.row.is_complete) }}</el-tag>
             </div>
           </template>
         </el-table-column>
-          <el-table-column align="left" fixed="right" label="操作" width="200">
+          <el-table-column fixed="right" align="right"  label="操作" width="140">
             <template #default="scope">
               <el-button
                 icon="edit"
@@ -218,6 +247,9 @@
     updateGameTaskTarget,
     getGameTaskTargetList,
   } from '@/api/task'
+  import {
+    selectResponsiblePerson,
+} from '@/api/responsiblePerson'
   import { toSQLLine } from '@/utils/stringFun'
   import warningBar from '@/components/warningBar/warningBar.vue'
   import { ref } from 'vue'
@@ -241,6 +273,7 @@
   },
 ])
 
+const ResponsiblePerson = ref([])
   
   const apis = ref([])
   const rules = ref({
@@ -332,6 +365,19 @@
     },
   ])
 
+  const searchStatusOptions = ref([
+ {
+    value: -1,
+    label: '未完成',
+    type: 'wain'
+  },
+  {
+    value: 1,
+    label: '已完成',
+    type: 'success'
+  },
+])
+
   const accountTypeOptions = ref([
     {
       id: 1,
@@ -485,7 +531,15 @@ const deleteBtn = async(btns, index) => {
   }
   
   getTableData()
+
   
+  const getResponsiblePerson = async() => {
+    const table = await selectResponsiblePerson()
+    if (table.code === 0) {
+      ResponsiblePerson.value = table.data
+    }
+  }
+  getResponsiblePerson()
   // 批量操作
   const handleSelectionChange = (val) => {
     apis.value = val

+ 39 - 18
src/view/gameTask/list.vue

@@ -31,8 +31,16 @@
           <el-table-column align="left" label="登录方式" min-width="60" prop="login_method" />
           <el-table-column align="left" label="开始时间" min-width="80" prop="date" />
           <el-table-column align="left" label="停止时间" min-width="110" prop="stop_time" />
-          <el-table-column align="left" label="新增目标" min-width="45" prop="new_target" />
-          <el-table-column align="left" label="留存目标" min-width="45" prop="retained_target" />
+          <el-table-column align="left" label="新增目标" min-width="80" prop="new_target">
+            <template #default="scope">
+              {{ scope.row.new_target_h === 0 ? 0 : scope.row.new_target+"~"+scope.row.new_target_h}}
+            </template>
+          </el-table-column>
+          <el-table-column align="left" label="留存目标" min-width="80" prop="retained_target">
+            <template #default="scope">
+              {{ scope.row.retained_target_h === scope.row.retained_target ? scope.row.retained_target_h : scope.row.retained_target+"~"+scope.row.retained_target_h}}
+            </template>
+          </el-table-column>
           <el-table-column align="left" label="付费目标" min-width="45" prop="pay_target" />
           <el-table-column align="left" label="付费单价" min-width="45" prop="pay_price"  />
           <!-- <el-table-column align="left" label="状态" min-width="60" prop="status" >
@@ -55,7 +63,7 @@
         </el-table-column>
           <el-table-column align="left" label="创建时间" min-width="120" prop="create_time" sortable="custom" />
           <el-table-column align="left" label="更新时间" min-width="120" prop="update_time" sortable="custom" />
-          <el-table-column align="left" fixed="right" label="操作" width="200">
+          <el-table-column align="left" fixed="right" label="操作" width="140">
             <template #default="scope">
               <el-button
                 icon="edit"
@@ -189,19 +197,27 @@
             </el-form>
           </el-tab-pane>
           <el-tab-pane label="数优目标">
-              <el-form ref="apiForm" :model="form" :rules="rules" label-width="80px" :inline="true">
-                <el-form-item  label="新增目标" prop="new_target">
-                <el-input v-model="form.new_target" autocomplete="off" />
-              </el-form-item>
-              <el-form-item label="付费目标" prop="pay_target">
-                <el-input v-model="form.pay_target" autocomplete="off"/>
-              </el-form-item>
-              <el-form-item label="留存目标" prop="retained_target" >
-                <el-input v-model="form.retained_target" autocomplete="off"/>
-              </el-form-item>
-              <el-form-item label="付费单价" prop="pay_price" >
-                <el-input v-model="form.pay_price" autocomplete="off"/>
-              </el-form-item>
+              <el-form ref="apiForm" :model="form" :rules="rules" label-width="120px" :inline="true">
+                <el-form-item  label="新增目标下限" prop="new_target">
+                  <el-input v-model="form.new_target" autocomplete="off" />
+                </el-form-item>
+                <el-form-item  label="新增目标上限" prop="new_target_h">
+                  <el-input v-model="form.new_target_h" autocomplete="off" />
+                </el-form-item>
+                <el-form-item label="付费目标" prop="pay_target">
+                  <el-input v-model="form.pay_target" autocomplete="off"/>
+                </el-form-item>
+            </el-form>
+            <el-form ref="apiForm" :model="form" :rules="rules" label-width="120px" :inline="true">
+                <el-form-item label="留存目标下限" prop="retained_target" >
+                  <el-input v-model="form.retained_target" autocomplete="off"/>
+                </el-form-item>
+                <el-form-item label="留存目标上限" prop="retained_target_h" >
+                  <el-input v-model="form.retained_target_h" autocomplete="off"/>
+                </el-form-item>
+                <el-form-item label="付费单价" prop="pay_price" >
+                  <el-input v-model="form.pay_price" autocomplete="off"/>
+                </el-form-item>
             </el-form>
           </el-tab-pane>
         </el-tabs>
@@ -323,14 +339,17 @@
     new_target: [
       { required: true, message: '请输入新增目标', trigger: 'blur' }
     ],
+    new_target_h: [
+      { required: true, message: '请输入新增上限', trigger: 'blur' }
+    ],
     pay_target: [
       { required: true, message: '请输入付费目标', trigger: 'blur' }
     ],
     retained_target: [
       { required: true, message: '请输入留存目标', trigger: 'blur' }
     ],
-    retained_target: [
-      { required: true, message: '请输入付费单价', trigger: 'blur' }
+    retained_target_h: [
+      { required: true, message: '请输入留存上限', trigger: 'blur' }
     ]
   })
   const form = ref({
@@ -630,6 +649,8 @@
       form.value.pay_price = Number(form.value.pay_price)
       form.value.pay_target = Number(form.value.pay_target)
       form.value.retained_target = Number(form.value.retained_target)
+      form.value.new_target_h = Number(form.value.new_target_h)
+      form.value.retained_target_h = Number(form.value.retained_target_h)
       if (valid) {
         switch (type.value) {
           case 'addCard':

+ 1 - 11
src/view/layout/bottomInfo/bottomInfo.vue

@@ -1,16 +1,6 @@
 <template>
   <div class="bottom-info">
-    <div>
-      <span>Powered by</span>
-      <span>
-        <a href="https://github.com/flipped-aurora/gin-vue-admin">{{ $GIN_VUE_ADMIN.appName }}</a>
-      </span>
-      <el-divider direction="vertical" />
-      <span>Copyright</span>
-      <span>
-        <a href="https://github.com/flipped-aurora">flipped-aurora团队</a>
-      </span>
-    </div>
+    
   </div>
 </template>
 

+ 41 - 5
src/view/logStatistics/codeList.vue

@@ -23,12 +23,9 @@
         </el-form>
       </div>
       <div class="gva-table-box">
-        <el-table :data="tableData" @sort-change="sortChange" @selection-change="handleSelectionChange" height="500" style="width: 100%">
-          <el-table-column
-            type="selection"
-            width="55"
-          />
+        <el-table :data="tableData" :span-method="objectSpanMethod" @sort-change="sortChange" @selection-change="handleSelectionChange" height="500" style="width: 100%">
           <el-table-column fixed="left" align="left" label="游戏id" min-width="90" prop="game_id" sortable="custom" />
+          <el-table-column fixed="left" align="left" label="任务名称" min-width="90" prop="game_name" sortable="custom" />
           <el-table-column fixed="left" align="left" label="日期" min-width="90" prop="create_date" />
           <el-table-column fixed="left" align="left" label="脚本负责人" min-width="90" prop="operator" />
           <el-table-column fixed="left" align="left" label="类型" min-width="60" prop="type" sortable="custom">
@@ -65,6 +62,12 @@
         <el-table-column prop="login_ok" label="成功" width="60" />
         <el-table-column prop="login_fail" label="失败" width="60" />
       </el-table-column>
+      <el-table-column label="微信授权">
+        <el-table-column prop="enter_scanning_code" label="进入" width="60" />
+        <el-table-column prop="scanning_code_success" label="成功" width="60" />
+        <el-table-column prop="transcoding_fail" label="转码失败" width="60" />
+        <el-table-column prop="third_party_fail" label="三方失败" width="60" />
+      </el-table-column>
       <el-table-column label="实名认证">
         <el-table-column prop="enter_authentication" label="进入" width="60" />
         <el-table-column prop="authentication_ok" label="成功" width="60" />
@@ -238,6 +241,7 @@
       total.value = table.data.total
       page.value = table.data.page
       pageSize.value = table.data.pageSize
+      getSpanArr(table.data.list)
     }
   }
   
@@ -334,6 +338,38 @@
       }
     })
   }
+
+  let spanArr = []
+  const getSpanArr = (data) => {
+    spanArr = []
+    var pos = 0
+    for (var i = 0; i < data.length; i++) {
+          if (i === 0) {
+            spanArr.push(1);
+            pos = 0
+          } else {
+            if (data[i].game_id === data[i - 1].game_id) {
+              spanArr[pos] += 1;
+              spanArr.push(0);
+            } else {
+              spanArr.push(1);
+              pos = i;
+            }
+          }
+        }
+        console.log(spanArr)  
+  }
+
+  const objectSpanMethod = (row) => {
+    if (row.columnIndex === 0 || row.columnIndex === 3 ||  row.columnIndex === 2 ||  row.columnIndex === 1) {
+          const rowspan = spanArr[row.rowIndex];
+          const colspan = rowspan > 0 ? 1 : 0;
+          return {
+            rowspan: rowspan,
+            colspan: colspan
+          }
+        }
+  }
   
   
   </script>

+ 5 - 6
src/view/logStatistics/list.vue

@@ -28,7 +28,6 @@
         :span-method="objectSpanMethod"
         @sort-change="sortChange" 
         @selection-change="handleSelectionChange" 
-        height="500" 
         header-align="center"
         >
           <el-table-column
@@ -109,12 +108,12 @@
         </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="pull_account_fail,pull_account_fail" label="扫码总数" align="center" min-width="100">
+        <el-table-column label="扫码成功" align="center">
+          <el-table-column prop="scanning_code_success,enter_scanning_code" label="扫码总数" align="center" min-width="100">
             <template #default="scope">
-							{{ scope.row.target_num }}
+							{{ scope.row.scanning_code_success }}
 							<el-divider style="margin:0 5px" direction="vertical" />
-              {{ scope.row.new_scanning_code}}
+              {{ scope.row.enter_scanning_code}}
 							<el-divider style="margin:0" />
 							{{ scope.row.scanning_success_rate + '%'}}
 						</template>
@@ -311,7 +310,7 @@ const renderheader = ({ column, $index  }) => {
   }
 
   const objectSpanMethod = (row) => {
-    if (row.columnIndex === 1 || row.columnIndex === 3 || row.columnIndex === 7 || row.columnIndex === 0 || row.columnIndex === 2 || row.columnIndex === 12|| row.columnIndex === 14|| row.columnIndex === 15|| row.columnIndex === 16|| row.columnIndex === 17) {
+    if (row.columnIndex === 1 || row.columnIndex === 3 || row.columnIndex === 7 || row.columnIndex === 0 || row.columnIndex === 2 || row.columnIndex === 14|| row.columnIndex === 15|| row.columnIndex === 16|| row.columnIndex === 17) {
           const rowspan = spanArr[row.rowIndex];
           const colspan = rowspan > 0 ? 1 : 0;
           return {