فهرست منبع

Merge branch '07/06musicArchives' into test

mo 3 سال پیش
والد
کامیت
a5a434690c
3فایلهای تغییر یافته به همراه281 افزوده شده و 296 حذف شده
  1. 33 6
      src/views/main/cloudDate/organDate.vue
  2. 238 281
      src/views/main/cloudDate/organRankDetail.vue
  3. 10 9
      src/views/main/cloudDate/organRanking.vue

+ 33 - 6
src/views/main/cloudDate/organDate.vue

@@ -2,19 +2,33 @@
   <div>
     <el-card>
       <headers title="分部数据" @changeOrgan="changeOrgan" :special="true" />
-      <el-button
+      <div class="btnList">
+             <el-button
         type="primary"
         v-permission="'export/organStudentOverView'"
         @click="organDateExport"
         size="mini"
         >导出</el-button
       >
+      <el-button
+        type="text"
+        v-permission="'/organRankDetail'"
+        @click="gotoAll"
+        class="lookOrgan"
+        >全部分部 ></el-button
+      >
+      </div>
+
       <div class="tableWrap">
         <el-table
           style="width: 100%"
           :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
           :data="tableList"
           @sort-change="sortChang"
+          :default-sort="{
+            prop: 'cloudStudyUseStudentDuty',
+            order: 'descending',
+          }"
           sortable="custom"
         >
           <el-table-column
@@ -235,14 +249,14 @@
             </template>
           </el-table-column>
         </el-table>
-        <pagination
+        <!-- <pagination
           :autoScroll="false"
           :total.sync="rules.total"
           :page.sync="rules.page"
           :limit.sync="rules.limit"
           :page-sizes="rules.page_size"
           @pagination="getList"
-        />
+        /> -->
       </div>
     </el-card>
   </div>
@@ -269,7 +283,9 @@ export default {
         total: 0, // 总条数
         page_size: [10, 20, 40, 50], // 选择限制显示条数
       },
-      searchList: {},
+      searchList: {
+        cloudStudyUseStudentDuty: "DESC",
+      },
     };
   },
   mounted() {
@@ -280,8 +296,8 @@ export default {
       try {
         // const arr = [36,39,41,42,43,44,45,46,47,48,49,50,52,54,55,56]
         const res = await organStudentOverView({
-          page: this.rules.page,
-          rows: this.rules.limit,
+          page: 1,
+          rows: 10,
           ...this.searchList,
           organIds: this.organId,
         });
@@ -329,6 +345,12 @@ export default {
         "您确定导出分部云教练数据列表?"
       );
     },
+
+    gotoAll(){
+      this.$router.push({
+        name: "organRankDetail",
+      });
+    }
   },
 };
 </script>
@@ -342,4 +364,9 @@ export default {
 .tableWrap {
   margin-top: 20px;
 }
+.btnList {
+  display: flex;
+  flex-direction: row;
+  justify-content: space-between;
+}
 </style>

+ 238 - 281
src/views/main/cloudDate/organRankDetail.vue

@@ -3,259 +3,62 @@
     <el-page-header
       @back="goback"
       style="padding-bottom: 30px"
-      content="分部云教练排行"
+      content="分部云教练数据"
     >
     </el-page-header>
-    <div class="chioseBox">
-      <el-date-picker
-        v-model="date"
-        type="date"
-        value-format="yyyy-MM-dd"
-        format="yyyy-MM-dd"
-        @change="changeValue"
-        :picker-options="bigin()"
-        :clearable="false"
+          <save-form
+        :inline="true"
+        :model="searchForm"
+        @submit="search"
+        ref="saveForm"
       >
-      </el-date-picker>
-    </div>
-    <div class="tableWrap">
-      <el-table
-        style="width: 100%"
-        :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
-        :data="tableList"
-        @sort-change="sortChang"
-        :default-sort="{
-          prop: 'cloudStudyUseStudentDuty',
-          order: 'descending',
-        }"
-      >
-        <el-table-column align="center" prop="index" label="排名">
-        </el-table-column>
-        <el-table-column
-          align="center"
-          prop="organName"
-          label="分部"
-        ></el-table-column>
-        <el-table-column
-          align="center"
-          prop="totalStudentNum"
-          label="学员总数"
-          width="100px"
-        >
-          <template slot="header" slot-scope="slot">
-            <div class="titleCell">
-              <span>学员总数</span>
-              <el-tooltip placement="top" popper-class="mTooltip">
-                <div slot="content">
-                  乐团在读学员+有剩余VIP课或网管课学员去重之和
-                </div>
-                <i
-                  class="el-icon-question micon el-tooltip"
-                  style="
-                    font-size: 18px;
-                    color: #f56c6c;
-                    top: 2px;
-                    position: relative;
-                  "
-                ></i>
-              </el-tooltip>
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column
-          align="center"
-          prop="cloudStudyLivelyStudentNum"
-          label="活跃人数"
-          width="100px"
-        >
-          <template slot="header" slot-scope="slot">
-            <div class="titleCell">
-              <span>活跃人数</span>
-              <el-tooltip placement="top" popper-class="mTooltip">
-                <div slot="content">近15天内使用达到5天及以上的用户总数</div>
-                <i
-                  class="el-icon-question micon el-tooltip"
-                  style="
-                    font-size: 18px;
-                    color: #f56c6c;
-                    top: 2px;
-                    position: relative;
-                  "
-                ></i>
-              </el-tooltip>
-            </div>
-          </template>
-        </el-table-column>
-
-        <!--  -->
-        <el-table-column
-          sortable="custom"
-          align="center"
-          prop="cloudStudyLivelyStudentDuty"
-          label="活跃人数占比"
-          width="150px"
-        >
-          <template slot="header" slot-scope="slot">
-            <div class="titleCell">
-              <span>活跃人数占比</span>
-              <el-tooltip placement="top" popper-class="mTooltip">
-                <div slot="content">活跃人数 / 学员总数</div>
-                <i
-                  class="el-icon-question micon el-tooltip"
-                  style="
-                    font-size: 18px;
-                    color: #f56c6c;
-                    top: 2px;
-                    position: relative;
-                  "
-                ></i>
-              </el-tooltip>
-            </div>
-          </template>
-          <template slot-scope="scope">
-            <div>{{ scope.row.cloudStudyLivelyStudentDuty }}%</div>
-          </template>
-        </el-table-column>
-        <el-table-column
-          align="center"
-          prop="cloudStudyUseStudentNum"
-          label="使用人数"
-        >
-          <template slot="header" slot-scope="slot">
-            <div class="titleCell">
-              <span>当日使用人数</span>
-              <el-tooltip placement="top" popper-class="mTooltip">
-                <div slot="content">当日使用的总人数</div>
-                <i
-                  class="el-icon-question micon el-tooltip"
-                  style="
-                    font-size: 18px;
-                    color: #f56c6c;
-                    top: 2px;
-                    position: relative;
-                  "
-                ></i>
-              </el-tooltip>
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column
-          align="center"
-          prop="newCloudStudyStudentNum"
-          label="新增使用人数"
-          width="100px"
-        >
-          <template slot="header" slot-scope="slot">
-            <div class="titleCell">
-              <span>当日新增使用人数</span>
-              <el-tooltip placement="top" popper-class="mTooltip">
-                <div slot="content">当日第一次使用云教练的人数</div>
-                <i
-                  class="el-icon-question micon el-tooltip"
-                  style="
-                    font-size: 18px;
-                    color: #f56c6c;
-                    top: 2px;
-                    position: relative;
-                  "
-                ></i>
-              </el-tooltip>
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column
-          sortable="custom"
-          width="150px"
-          align="center"
-          prop="cloudStudyUseStudentDuty"
-          label="当日使用人数比"
-        >
-          <template slot="header" slot-scope="slot">
-            <div class="titleCell">
-              <span>使用人数占比</span>
-              <el-tooltip placement="top" popper-class="mTooltip">
-                <div slot="content">云教练当日使用人数 / 学员总数</div>
-                <i
-                  class="el-icon-question micon el-tooltip"
-                  style="
-                    font-size: 18px;
-                    color: #f56c6c;
-                    top: 2px;
-                    position: relative;
-                  "
-                ></i>
-              </el-tooltip>
-            </div>
-          </template>
-          <template slot-scope="scope">
-            <div>{{ scope.row.cloudStudyUseStudentDuty }}%</div>
-          </template>
-        </el-table-column>
-
-        <el-table-column
-          sortable="custom"
-          width="140px"
-          align="center"
-          prop="vipStudentNum"
-          label="付费会员数"
-        >
-          <template slot="header" slot-scope="slot">
-            <div class="titleCell">
-              <span>付费会员数</span>
-              <el-tooltip placement="top" popper-class="mTooltip">
-                <div slot="content">会员生效中或待生效总人数</div>
-                <i
-                  class="el-icon-question micon el-tooltip"
-                  style="
-                    font-size: 18px;
-                    color: #f56c6c;
-                    top: 2px;
-                    position: relative;
-                  "
-                ></i>
-              </el-tooltip>
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column
+        <el-form-item prop="organId">
+          <el-select
+            class="multiple"
+            v-model.trim="searchForm.organId"
+            clearable
+            filterable
+            placeholder="请选择分部"
+            @change="search"
+          >
+            <el-option
+              v-for="(item, index) in specialList"
+              :key="index"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+      </save-form>
+      <div class="tableWrap">
+        <el-table
+          style="width: 100%"
+          :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+          :data="tableList"
+          @sort-change="sortChang"
+          :default-sort="{
+            prop: 'cloudStudyUseStudentDuty',
+            order: 'descending',
+          }"
           sortable="custom"
-          width="150px"
-          align="center"
-          prop="vipStudentDuty"
-          label="付费会员比"
         >
-          <template slot="header" slot-scope="slot">
-            <div class="titleCell">
-              <span>付费会员占比</span>
-              <el-tooltip placement="top" popper-class="mTooltip">
-                <div slot="content">付费会员数 / 学员总数</div>
-                <i
-                  class="el-icon-question micon el-tooltip"
-                  style="
-                    font-size: 18px;
-                    color: #f56c6c;
-                    top: 2px;
-                    position: relative;
-                  "
-                ></i>
-              </el-tooltip>
-            </div>
-          </template>
-          <template slot-scope="scope">
-            <div>{{ scope.row.vipStudentDuty }}%</div>
-          </template>
-        </el-table-column>
-        <!-- <el-table-column
-               sortable="custom"
+          <el-table-column
             align="center"
-            prop="eVipStudentNum"
-            label="试用会员"
+            prop="organName"
+            label="分部"
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="totalStudentNum"
+            label="学员总数"
           >
             <template slot="header" slot-scope="slot">
               <div class="titleCell">
-                <span>试用会员数</span>
+                <span>学员总数</span>
                 <el-tooltip placement="top" popper-class="mTooltip">
-                  <div slot="content">当日试用会员总数</div>
+                  <div slot="content">
+                    乐团在读学员+有剩余VIP课或网管课学员去重之和
+                  </div>
                   <i
                     class="el-icon-question micon el-tooltip"
                     style="
@@ -268,43 +71,168 @@
                 </el-tooltip>
               </div>
             </template>
-          </el-table-column> -->
-        <el-table-column
-          align="center"
-          prop="newMemberStudentNum"
-          label="新增付费会员"
-        >
-          <template slot="header" slot-scope="slot">
-            <div class="titleCell">
-              <span>新增付费会员</span>
-              <el-tooltip placement="top" popper-class="mTooltip">
-                <div slot="content">当日新增付费会员数量</div>
-                <i
-                  class="el-icon-question micon el-tooltip"
-                  style="
-                    font-size: 18px;
-                    color: #f56c6c;
-                    top: 2px;
-                    position: relative;
-                  "
-                ></i>
-              </el-tooltip>
-            </div>
-          </template>
-        </el-table-column>
-
-        <!-- <el-table-column
-              sortable="custom"
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="cloudStudyLivelyStudentNum"
+            label="活跃人数"
+          >
+            <template slot="header" slot-scope="slot">
+              <div class="titleCell">
+                <span>活跃人数</span>
+                <el-tooltip placement="top" popper-class="mTooltip">
+                  <div slot="content">近15天内使用达到5天及以上的用户数</div>
+                  <i
+                    class="el-icon-question micon el-tooltip"
+                    style="
+                      font-size: 18px;
+                      color: #f56c6c;
+                      top: 2px;
+                      position: relative;
+                    "
+                  ></i>
+                </el-tooltip>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="cloudStudyUseStudentNum"
+            label="使用人数"
+          >
+            <template slot="header" slot-scope="slot">
+              <div class="titleCell">
+                <span>使用人数</span>
+                <el-tooltip placement="top" popper-class="mTooltip">
+                  <div slot="content">截止目前使用云教练的总人数</div>
+                  <i
+                    class="el-icon-question micon el-tooltip"
+                    style="
+                      font-size: 18px;
+                      color: #f56c6c;
+                      top: 2px;
+                      position: relative;
+                    "
+                  ></i>
+                </el-tooltip>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="newCloudStudyStudentNum"
+            label="新增使用人数"
+            width="130px"
+          >
+            <template slot="header" slot-scope="slot">
+              <div class="titleCell">
+                <span>新增使用人数</span>
+                <el-tooltip placement="top" popper-class="mTooltip">
+                  <div slot="content">当日第一次使用云教练的人数</div>
+                  <i
+                    class="el-icon-question micon el-tooltip"
+                    style="
+                      font-size: 18px;
+                      color: #f56c6c;
+                      top: 2px;
+                      position: relative;
+                    "
+                  ></i>
+                </el-tooltip>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="cloudStudyUseStudentDuty"
+            label="使用比例"
+            sortable="custom"
+            width="140px"
+          >
+            <template slot="header" slot-scope="slot">
+              <div class="titleCell">
+                <span>使用比例</span>
+                <el-tooltip placement="top" popper-class="mTooltip">
+                  <div slot="content">使用人数 / 学员总数</div>
+                  <i
+                    class="el-icon-question micon el-tooltip"
+                    style="
+                      font-size: 18px;
+                      color: #f56c6c;
+                      top: 2px;
+                      position: relative;
+                    "
+                  ></i>
+                </el-tooltip>
+              </div>
+            </template>
+            <template slot-scope="scope">
+              <div>{{ scope.row.cloudStudyUseStudentDuty }}%</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="vipStudentNum"
+            label="付费会员数"
+          >
+            <template slot="header" slot-scope="slot">
+              <div class="titleCell">
+                <span>付费会员数</span>
+                <el-tooltip placement="top" popper-class="mTooltip">
+                  <div slot="content">该分部生效中、待生效付费会员总数</div>
+                  <i
+                    class="el-icon-question micon el-tooltip"
+                    style="
+                      font-size: 18px;
+                      color: #f56c6c;
+                      top: 2px;
+                      position: relative;
+                    "
+                  ></i>
+                </el-tooltip>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            sortable="custom"
+            align="center"
+            prop="vipStudentDuty"
+            label="付费会员占比"
+            width="150px"
+          >
+            <template slot="header" slot-scope="slot">
+              <div class="titleCell">
+                <span>付费会员占比</span>
+                <el-tooltip placement="top" popper-class="mTooltip">
+                  <div slot="content">付费会员数 / 学员总数</div>
+                  <i
+                    class="el-icon-question micon el-tooltip"
+                    style="
+                      font-size: 18px;
+                      color: #f56c6c;
+                      top: 2px;
+                      position: relative;
+                    "
+                  ></i>
+                </el-tooltip>
+              </div>
+            </template>
+            <template slot-scope="scope">
+              <div>{{ scope.row.vipStudentDuty }}%</div>
+            </template>
+          </el-table-column>
+          <!-- <el-table-column
+               sortable="custom"
             align="center"
-            prop="studentId"
-            label="活跃度"
+            prop="eVipStudentNum"
+            label="试用会员"
           >
             <template slot="header" slot-scope="slot">
               <div class="titleCell">
-                <span>活跃度</span>
+                <span>试用会员</span>
                 <el-tooltip placement="top" popper-class="mTooltip">
                   <div slot="content">
-                    当日使用过云教练的会员占比(生效中会员,含试用)
+                    有生效中或待生效的付费会员,不统计在内
                   </div>
                   <i
                     class="el-icon-question micon el-tooltip"
@@ -319,17 +247,28 @@
               </div>
             </template>
           </el-table-column> -->
-      </el-table>
-      <!-- <pagination
+
+          <el-table-column align="center" prop="studentId" label="操作">
+            <template slot-scope="scope">
+              <div>
+                <auth auths="/organDateDetail">
+                  <el-button type="text" @click="gotoDetail(scope.row)"
+                    >详情</el-button
+                  >
+                </auth>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+        <!-- <pagination
           :autoScroll="false"
-          sync
           :total.sync="rules.total"
           :page.sync="rules.page"
           :limit.sync="rules.limit"
           :page-sizes="rules.page_size"
           @pagination="getList"
         /> -->
-    </div>
+      </div>
   </div>
 </template>
 <script>
@@ -338,7 +277,7 @@ import pagination from "@/components/Pagination/index";
 import { Export } from "@/utils/downLoadFile";
 import dayjs from "dayjs";
 import qs from "qs";
-import { indexStudentOverView } from "../api";
+import { organStudentOverView } from "../api";
 export default {
   components: {
     headers,
@@ -350,6 +289,9 @@ export default {
       searchList: {
         cloudStudyUseStudentDuty: "DESC",
       },
+      searchForm:{
+
+      },
       rules: {
         // 分页规则
         limit: 10, // 限制显示条数
@@ -358,20 +300,32 @@ export default {
         page_size: [10, 20, 40, 50], // 选择限制显示条数
       },
       date: "",
+      specialList:[]
     };
   },
-  mounted() {
+ async mounted() {
     this.date = dayjs(new Date()).subtract(1, "day").format("YYYY-MM-DD");
+        await this.$store.dispatch("setBranchs");
+    const arr = [
+      36, 39, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 52, 54, 55, 56,
+    ];
+    this.specialList = this.selects.branchs.filter((item) => {
+      return arr.indexOf(item.id) == -1;
+    });
+    if (this.$route.params?.organId) {
+      this.searchForm.organId = this.$route.params.organId;
+    }
     this.getList();
   },
   methods: {
     async getList() {
       try {
-        const res = await indexStudentOverView({
+        const res = await organStudentOverView({
           ...this.searchList,
           date: this.date,
           rows: 999,
           page: 1,
+          organIds: this.searchForm.organId,
         });
         this.tableList = res.data.rows;
         this.rules.total = res.data.total;
@@ -379,6 +333,9 @@ export default {
         console.log(e);
       }
     },
+    search(){
+      this.getList()
+    },
     bigin() {
       let self = this;
       return {

+ 10 - 9
src/views/main/cloudDate/organRanking.vue

@@ -22,15 +22,19 @@
             :clearable="false"
           >
           </el-date-picker>
-          <el-button
+          <!-- <el-button
             type="text"
             v-permission="'/organRankDetail'"
             @click="gotoDetail"
             class="lookOrgan"
             >所有分部 ></el-button
-          >
+          > -->
         </div>
       </div>
+      <!--      :default-sort="{
+            prop: 'cloudStudyUseStudentDuty',
+            order: 'descending',
+          }" -->
       <div class="tableWrap">
         <el-table
           ref="table"
@@ -38,10 +42,7 @@
           :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
           :data="tableList"
           @sort-change="sortChang"
-          :default-sort="{
-            prop: 'cloudStudyUseStudentDuty',
-            order: 'descending',
-          }"
+
         >
           <el-table-column align="center" prop="index" label="排名">
           </el-table-column>
@@ -334,7 +335,7 @@
             </template>
           </el-table-column> -->
         </el-table>
-        <!-- <pagination
+        <pagination
           :autoScroll="false"
           sync
           :total.sync="rules.total"
@@ -342,7 +343,7 @@
           :limit.sync="rules.limit"
           :page-sizes="rules.page_size"
           @pagination="getList"
-        /> -->
+        />
       </div>
     </el-card>
   </div>
@@ -363,7 +364,7 @@ export default {
     return {
       tableList: [],
       searchList: {
-        'cloudStudyUseStudentDuty':'DESC'
+
       },
       rules: {
         // 分页规则