소스 검색

完播、频道、每日统计

xdd 1 주 전
부모
커밋
c0da92dc1f
4개의 변경된 파일105개의 추가작업 그리고 59개의 파일을 삭제
  1. 16 0
      src/api/system/employeeStats.js
  2. 43 27
      src/views/statistics/section/channel.vue
  3. 6 6
      src/views/statistics/section/index.vue
  4. 40 26
      src/views/statistics/section/today.vue

+ 16 - 0
src/api/system/employeeStats.js

@@ -9,6 +9,22 @@ export function listEmployeeStats(query) {
   })
 }
 
+export function listPeriodList(query) {
+  return request({
+    url: '/stats/period/pageList',
+    method: 'post',
+    data: query
+  })
+}
+
+export function listTodayList(query) {
+  return request({
+    url: '/stats/everyDay/pageList',
+    method: 'post',
+    data: query
+  })
+}
+
 // 查询员工完成统计详细
 export function getEmployeeStats(id) {
   return request({

+ 43 - 27
src/views/statistics/section/channel.vue

@@ -12,7 +12,13 @@
         </el-select>
       </el-form-item>
       <el-form-item label="销售" prop="nickName" v-if="queryParams.companyId">
-        <el-select v-model="queryParams.companyUserId" remote placeholder="请选择" filterable clearable  style="width: 100%;" @keyup.enter.native="handleQuery">
+        <el-select v-model="queryParams.companyUserId" remote
+                   placeholder="请选择"
+                   filterable clearable
+                   style="width: 100%;"
+                   @keyup.enter.native="handleQuery"
+                   @change="handleCompanyUserId"
+        >
           <el-option
             v-for="dict in companyUserList"
             :key="`${dict.nickName} - ${dict.userName}`"
@@ -42,7 +48,7 @@
           :max-display-tags="3"
           :check-strictly="false"
           :return-leaf-only="false"
-        @change="handleMultiChange"
+          @change="handleMultiChange"
         ></select-tree>
       </el-form-item>
       <el-form-item>
@@ -74,26 +80,26 @@
       class="mb8">
     </el-alert>
 
-    <el-table v-loading="loading" :data="statsList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-
+    <el-table border v-loading="loading" :data="statsList" @selection-change="handleSelectionChange" show-summary>
       <!-- 未上线部分 -->
-
-        <el-table-column prop="departmentName" label="所属部门" width="180" />
-        <el-table-column prop="employeeName" label="员工"  />
-        <el-table-column prop="totalTasks" label="营期人数"  align="center" />
-        <el-table-column prop="incompleteTasks" label="未报名"  align="center" />
-        <el-table-column prop="inProgressTasks" label="已报名"  align="center" />
-        <el-table-column prop="incompleteRate" label="报名率"  align="center">
-          <template slot-scope="scope">
-            <span>{{ scope.row.incompleteRate }}%</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="completionRate" label="完课率"  align="center">
-          <template slot-scope="scope">
-            <span>{{ scope.row.completionRate }}%</span>
-          </template>
-        </el-table-column>
+      <el-table-column prop="periodName" label="sop营期" width="180" align="center"/>
+<!--      <el-table-column prop="deptName" label="所属部门" width="180" align="center"/>-->
+<!--      <el-table-column prop="companyUserName" label="员工"  />-->
+      <el-table-column prop="trainCampNum" label="营期人数"  align="center" />
+      <el-table-column prop="notRegisteredNum" label="待看课"  align="center" />
+      <el-table-column prop="registeredNum" label="看课中断"  align="center" />
+      <el-table-column prop="registeredNum" label="已完课"  align="center" />
+      <el-table-column prop="regRate" label="报名率"  align="center">
+        <template slot-scope="scope">
+          <span>{{ scope.row.regRate }}%</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="finishedRate" label="完课率"  align="center">
+        <template slot-scope="scope">
+          <span>{{ scope.row.finishedRate }}%</span>
+        </template>
+      </el-table-column>
+      <!--        汇总-->
     </el-table>
 
     <pagination
@@ -107,7 +113,7 @@
 </template>
 
 <script>
-import { listEmployeeStats, getEmployeeList, getChannelList, exportEmployeeStats,getSOPTaskData} from "@/api/system/employeeStats";
+import { listEmployeeStats, getEmployeeList, getChannelList, exportEmployeeStats,getSOPTaskData,listPeriodList} from "@/api/system/employeeStats";
 import {getCompanyList} from "@/api/company/company";
 import {getUserList} from "@/api/company/companyUser";
 import SelectTree from "@/components/TreeSelect/index.vue";
@@ -172,6 +178,12 @@ export default {
 
   },
   methods: {
+    handleCompanyUserId(val){
+      if(val == null || val === '') {
+        this.queryParams.companyUserId = null;
+        this.queryParams.userIds = [];
+      }
+    },
     handleMultiChange(e){
 
     },
@@ -182,6 +194,8 @@ export default {
             this.companyUserList = res.data
           }
         })
+      } else {
+        this.queryParams.companyUserId = null;
       }
     },
     /** 查询员工统计列表 */
@@ -195,16 +209,15 @@ export default {
         this.queryParams.endDate = null;
       }
 
-      listEmployeeStats(this.queryParams).then(response => {
-        this.statsList = response.rows;
-        this.total = response.total;
-        this.totalStats = response.totalStats || this.totalStats;
+      listPeriodList(this.queryParams).then(response => {
+        console.log(response)
+        this.statsList = response.data;
         this.loading = false;
       });
     },
     /** 获取员工列表 */
     getEmployeeList() {
-      getEmployeeList().then(response => {
+      listPeriodList().then(response => {
         this.employeeList = response.data || [];
       });
     },
@@ -212,6 +225,9 @@ export default {
     handleQuery() {
       this.queryParams.pageNum = 1;
       this.queryParams.periodList = this.selectedMultipleTasks;
+      if(this.queryParams.companyUserId) {
+        this.queryParams.userIds = [this.queryParams.companyUserId];
+      }
       this.getList();
     },
     /** 重置按钮操作 */

+ 6 - 6
src/views/statistics/section/index.vue

@@ -80,15 +80,14 @@
       class="mb8">
     </el-alert>
 
-    <el-table v-loading="loading" :data="statsList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-
+    <el-table border v-loading="loading" :data="statsList" @selection-change="handleSelectionChange" show-summary>
       <!-- 未上线部分 -->
-        <el-table-column prop="deptName" label="所属部门" width="180" />
+        <el-table-column prop="deptName" label="所属部门" width="180" align="center"/>
         <el-table-column prop="companyUserName" label="员工"  />
         <el-table-column prop="trainCampNum" label="营期人数"  align="center" />
-        <el-table-column prop="notRegisteredNum" label="未报名"  align="center" />
-        <el-table-column prop="registeredNum" label="已报名"  align="center" />
+        <el-table-column prop="notRegisteredNum" label="待看课"  align="center" />
+        <el-table-column prop="registeredNum" label="看课中断"  align="center" />
+        <el-table-column prop="registeredNum" label="已完课"  align="center" />
         <el-table-column prop="regRate" label="报名率"  align="center">
           <template slot-scope="scope">
             <span>{{ scope.row.regRate }}%</span>
@@ -99,6 +98,7 @@
             <span>{{ scope.row.finishedRate }}%</span>
           </template>
         </el-table-column>
+<!--        汇总-->
     </el-table>
 
     <pagination

+ 40 - 26
src/views/statistics/section/today.vue

@@ -12,7 +12,13 @@
         </el-select>
       </el-form-item>
       <el-form-item label="销售" prop="nickName" v-if="queryParams.companyId">
-        <el-select v-model="queryParams.companyUserId" remote placeholder="请选择" filterable clearable  style="width: 100%;" @keyup.enter.native="handleQuery">
+        <el-select v-model="queryParams.companyUserId" remote
+                   placeholder="请选择"
+                   filterable clearable
+                   style="width: 100%;"
+                   @keyup.enter.native="handleQuery"
+                   @change="handleCompanyUserId"
+        >
           <el-option
             v-for="dict in companyUserList"
             :key="`${dict.nickName} - ${dict.userName}`"
@@ -42,7 +48,7 @@
           :max-display-tags="3"
           :check-strictly="false"
           :return-leaf-only="false"
-        @change="handleMultiChange"
+          @change="handleMultiChange"
         ></select-tree>
       </el-form-item>
       <el-form-item>
@@ -74,26 +80,24 @@
       class="mb8">
     </el-alert>
 
-    <el-table v-loading="loading" :data="statsList" @selection-change="handleSelectionChange">
-      <el-table-column type="selection" width="55" align="center" />
-
+    <el-table border v-loading="loading" :data="statsList" @selection-change="handleSelectionChange" show-summary>
       <!-- 未上线部分 -->
-
-        <el-table-column prop="departmentName" label="所属部门" width="180" />
-        <el-table-column prop="employeeName" label="员工"  />
-        <el-table-column prop="totalTasks" label="营期人数"  align="center" />
-        <el-table-column prop="incompleteTasks" label="未报名"  align="center" />
-        <el-table-column prop="inProgressTasks" label="已报名"  align="center" />
-        <el-table-column prop="incompleteRate" label="报名率"  align="center">
-          <template slot-scope="scope">
-            <span>{{ scope.row.incompleteRate }}%</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="completionRate" label="完课率"  align="center">
-          <template slot-scope="scope">
-            <span>{{ scope.row.completionRate }}%</span>
-          </template>
-        </el-table-column>
+      <el-table-column prop="dataDate" label="日期" width="180" align="center"/>
+      <el-table-column prop="trainCampNum" label="营期人数"  align="center" />
+      <el-table-column prop="notRegisteredNum" label="待看课"  align="center" />
+      <el-table-column prop="registeredNum" label="看课中断"  align="center" />
+      <el-table-column prop="registeredNum" label="已完课"  align="center" />
+      <el-table-column prop="regRate" label="报名率"  align="center">
+        <template slot-scope="scope">
+          <span>{{ scope.row.regRate }}%</span>
+        </template>
+      </el-table-column>
+      <el-table-column prop="finishedRate" label="完课率"  align="center">
+        <template slot-scope="scope">
+          <span>{{ scope.row.finishedRate }}%</span>
+        </template>
+      </el-table-column>
+      <!--        汇总-->
     </el-table>
 
     <pagination
@@ -107,7 +111,7 @@
 </template>
 
 <script>
-import { listEmployeeStats, getEmployeeList, getChannelList, exportEmployeeStats,getSOPTaskData} from "@/api/system/employeeStats";
+import { listTodayList, getEmployeeList, getChannelList, exportEmployeeStats,getSOPTaskData} from "@/api/system/employeeStats";
 import {getCompanyList} from "@/api/company/company";
 import {getUserList} from "@/api/company/companyUser";
 import SelectTree from "@/components/TreeSelect/index.vue";
@@ -172,6 +176,12 @@ export default {
 
   },
   methods: {
+    handleCompanyUserId(val){
+      if(val == null || val === '') {
+        this.queryParams.companyUserId = null;
+        this.queryParams.userIds = [];
+      }
+    },
     handleMultiChange(e){
 
     },
@@ -182,6 +192,8 @@ export default {
             this.companyUserList = res.data
           }
         })
+      } else {
+        this.queryParams.companyUserId = null;
       }
     },
     /** 查询员工统计列表 */
@@ -195,10 +207,9 @@ export default {
         this.queryParams.endDate = null;
       }
 
-      listEmployeeStats(this.queryParams).then(response => {
-        this.statsList = response.rows;
-        this.total = response.total;
-        this.totalStats = response.totalStats || this.totalStats;
+      listTodayList(this.queryParams).then(response => {
+        console.log(response)
+        this.statsList = response.data;
         this.loading = false;
       });
     },
@@ -212,6 +223,9 @@ export default {
     handleQuery() {
       this.queryParams.pageNum = 1;
       this.queryParams.periodList = this.selectedMultipleTasks;
+      if(this.queryParams.companyUserId) {
+        this.queryParams.userIds = [this.queryParams.companyUserId];
+      }
       this.getList();
     },
     /** 重置按钮操作 */