Browse Source

Merge branch '03/08IndexAtten' into online

mo 4 years ago
parent
commit
16c76f1d4d

+ 1 - 1
src/views/main/abnormal/index.vue

@@ -40,7 +40,7 @@
     >
       <title-item
         :type="item[0].isError ? 'error' : 'warning'"
-        :data="item.map(title => ({name: title.desc, num: title.num}))"
+        :data="item.map(title => ({name: title.desc, num: title.num,errorType:title.errorType}))"
       >
         <span
           style="color: #14928A;"

+ 21 - 0
src/views/main/abnormal/title.vue

@@ -3,13 +3,27 @@
     <div>
       <span v-for="(item, index) in data" :key="index">
         <span>{{item.name}}</span>
+              <el-tooltip
+            v-if="descs[item.errorType]"
+            :content="descs[item.errorType]"
+            :open-delay="0.3"
+            placement="top"
+          >
+          <!-- color: #f56c6c -->
+            <i
+               class="el-icon-warning-outline"
+                style="font-size: 14px; "
+            />
+          </el-tooltip>
         <b>{{item.num}}</b>
       </span>
+
     </div>
     <slot/>
   </div>
 </template>
 <script>
+import { descs } from '../constant'
 export default {
   props: {
     type: {
@@ -20,6 +34,13 @@ export default {
       type: Array,
       default: []
     }
+  },
+  data(){
+    return{
+     descs
+    }
+  },
+  mounted(){
   }
 }
 </script>

+ 116 - 86
src/views/main/baseinfo/business.vue

@@ -1,145 +1,175 @@
 <template
 >
   <el-card header="">
-      <div slot="header" class="clearfix">
-    <searchHeader
-    v-if="mdate.length>0"
+    <div slot="header" class="clearfix">
+      <searchHeader
+        v-if="mdate.length > 0"
         :dates="mdate"
         :title="'业务数据'"
-        :isShowQuert='false'
+        :isShowQuert="false"
         @changeValue="changeValue"
       />
     </div>
 
     <statistic class="statistic" :cols="0">
-      <statistic-item v-for="(item, key) in items" :key="key" :class="{active: active === key}" @click="active = key">
+      <statistic-item
+        v-for="(item, key) in items"
+        :key="key"
+        :class="{ active: active === key }"
+        @click="active = key"
+      >
         <span>
-          {{item.title}}
-          <el-tooltip v-if="item.desc" :content="item.desc" :open-delay=".3" placement="top">
-            <i style="margin-left: 5px;cursor: pointer;" class="el-icon-warning-outline"/>
+          {{ item.title }}
+          <el-tooltip
+            v-if="item.desc"
+            :content="item.desc"
+            :open-delay="0.3"
+            placement="top"
+          >
+            <i
+              style="margin-left: 5px; cursor: pointer"
+              class="el-icon-warning-outline"
+            />
           </el-tooltip>
         </span>
-        <span>
-          <count-to :endVal="item.percent" :decimals="2"/>%
-        </span>
+        <span> <count-to :endVal="item.percent" :decimals="2" />% </span>
       </statistic-item>
     </statistic>
     <!--   :data-zoom="dataZoom" -->
     <ve-line
-      style="width: 100%;"
+      style="width: 100%"
       height="350px"
       :data="chartData"
       :data-empty="dataEmpty"
-
       :extend="chartExtend"
-      :legend='legend'
+      :legend="legend"
     ></ve-line>
   </el-card>
 </template>
 <script>
-import 'v-charts/lib/style.css'
-import 'echarts/lib/component/dataZoom'
-import countTo from 'vue-count-to'
+import "v-charts/lib/style.css";
+import "echarts/lib/component/dataZoom";
+import countTo from "vue-count-to";
 import veLine from "v-charts/lib/line.common";
 import searchHeader from "./modals/searchHeader";
 import { getTimes } from "@/utils";
 import { getIndex } from "../api";
-import { descs,chioseNum } from "../constant";
-import {
-  getNowDateAndSunday,
-  getNowDateAndMonday,
-} from "@/utils/date";
+import { descs, chioseNum } from "../constant";
+import { getNowDateAndSunday, getNowDateAndMonday } from "@/utils/date";
 export default {
-  props: ['data',"search"],
+  props: ["data", "search"],
   components: {
-
-    'count-to': countTo,
-     "ve-line": veLine,
-    searchHeader
+    "count-to": countTo,
+    "ve-line": veLine,
+    searchHeader,
   },
   computed: {
-     legend() {
+    legend() {
       return {
         left: "10px",
       };
     },
     items() {
       return {
-        HOMEWORK_CREATE_RATE: this.data['HOMEWORK_CREATE_RATE'] || {},
-        HOMEWORK_SUBMIT_RATE: this.data['HOMEWORK_SUBMIT_RATE'] || {},
-        HOMEWORK_COMMENT_RATE: this.data['HOMEWORK_COMMENT_RATE'] || {},
-      }
+        HOMEWORK_CREATE_RATE: this.data["HOMEWORK_CREATE_RATE"] || {},
+        HOMEWORK_SUBMIT_RATE: this.data["HOMEWORK_SUBMIT_RATE"] || {},
+        HOMEWORK_COMMENT_RATE: this.data["HOMEWORK_COMMENT_RATE"] || {},
+      };
     },
     chartExtend() {
       return {
+        series: {
+          smooth: false,
+        },
+        yAxis: {
+          //纵轴标尺固定
+          type: "value",
+          scale: true,
+          min: 0,
+          max:100,
+          axisLabel:{
+            formatter:'{value}%'
+          }
+        },
         tooltip: {
           axisPointer: {
-            type: 'shadow',
+            type: "shadow",
             shadowStyle: {
-              color: 'rgba(150,150,150,0.2)'
+              color: "rgba(150,150,150,0.2)",
             },
           },
-          formatter: item => {
-            return [item[0].axisValueLabel, ...item.map(d => `<br/>${d.marker}${d.seriesName}: ${d.value} %`)].join('')
-          }
-        }
-      }
+
+          formatter: (item) => {
+            return [
+              item[0].axisValueLabel,
+              ...item.map(
+                (d) => `<br/>${d.marker}${d.seriesName}: ${d.value} %`
+              ),
+            ].join("");
+          },
+        },
+      };
     },
     dataZoom() {
       return [
         {
-         grid:{
-           left:'0%'
-         },
-          type: 'slider',
+          grid: {
+            left: "0%",
+          },
+          type: "slider",
           start: 40,
-          end: 100
-        }
-      ]
+          end: 100,
+        },
+      ];
     },
     chartData() {
-      const values = Object.values(this.items)
-      const months = {}
+      const values = Object.values(this.items);
+      const months = {};
       for (const item of values) {
-        for (const row of (item.indexMonthData || [])) {
-          const key = this.$helpers.dayjs(row.month).format('YYYY-MM-DD')
+        for (const row of item.indexMonthData || []) {
+          const key = this.$helpers.dayjs(row.month).format("YYYY-MM-DD");
           if (!months[key]) {
             months[key] = {
-              '日期': key+'/'+getNowDateAndSunday(key),
-            }
+              日期: key + "/" + getNowDateAndSunday(key),
+            };
           }
-          months[key][item.title] = row.percent
+          months[key][item.title] = row.percent;
         }
       }
 
       return {
-        columns: ['日期', ...values.map(item => {
-          return item.title
-        })],
-        rows: Object.values(months)
-      }
+        columns: [
+          "日期",
+          ...values.map((item) => {
+            return item.title;
+          }),
+        ],
+        rows: Object.values(months),
+      };
     },
     dataEmpty() {
-      return !this.chartData.rows.length
+      return !this.chartData.rows.length;
     },
   },
-  data () {
+  data() {
     return {
-      active: 'ACTIVATION_RATE',
-       mdate: [],
-       loading:false
-    }
+      active: "ACTIVATION_RATE",
+      mdate: [],
+      loading: false,
+    };
   },
-  mounted(){
-    let nowTiem = this.$helpers.dayjs(new Date()).format('YYYY-MM-DD')
-    let startTime =  this.$helpers.dayjs(getNowDateAndMonday(nowTiem)).subtract(56,'day').format('YYYY-MM-DD')
-    let endTime = getNowDateAndSunday(nowTiem)
-    this.mdate = [startTime,endTime];
+  mounted() {
+    let nowTiem = this.$helpers.dayjs(new Date()).format("YYYY-MM-DD");
+    let startTime = this.$helpers
+      .dayjs(getNowDateAndMonday(nowTiem))
+      .subtract(56, "day")
+      .format("YYYY-MM-DD");
+    let endTime = getNowDateAndSunday(nowTiem);
+    this.mdate = [startTime, endTime];
     this.FetchDetail();
-
   },
-  methods:{
-   changeValue(date) {
+  methods: {
+    changeValue(date) {
       // 请求更改数据
       this.mdate = date;
       //  this.isDayOrMoth(date)
@@ -153,11 +183,12 @@ export default {
         const res = await getIndex({
           ...rest,
           ...getTimes(this.mdate, ["startDate", "endDate"]),
+          dataTypes:
+            "HOMEWORK_CREATE_RATE,HOMEWORK_SUBMIT_RATE,HOMEWORK_COMMENT_RATE",
         });
         for (const item of res.data) {
           // 再循环一遍
           for (const key in this.items) {
-
             if (item.dataType == key) {
               data[item.dataType] = {
                 ...item,
@@ -166,27 +197,26 @@ export default {
             }
           }
         }
-
       } catch (error) {
         console.log(error);
       }
-      this.loading = false
+      this.loading = false;
       this.dataInfo = data;
       this.$emit("resetDate", data);
     },
-  }
-}
+  },
+};
 </script>
 <style lang="less" scoped>
-  // .statistic{
-  //   /deep/ .statistic-content{
-  //     cursor: pointer;
-  //     &.active > span{
-  //       color: #14928a !important;
-  //     }
-  //   }
-  // }
-  .chioseBox {
+// .statistic{
+//   /deep/ .statistic-content{
+//     cursor: pointer;
+//     &.active > span{
+//       color: #14928a !important;
+//     }
+//   }
+// }
+.chioseBox {
   position: absolute;
   right: 20px;
   z-index: 1000;

+ 68 - 38
src/views/main/baseinfo/curriculum.vue

@@ -31,13 +31,11 @@
             />
           </el-tooltip>
         </span>
-        <span>
-          <count-to :endVal="item.percent" />节
-        </span>
+        <span> <count-to :endVal="item.percent" />节 </span>
       </statistic-item>
     </statistic>
     <div class="wrap">
-        <div class="chioseBox">
+      <div class="chioseBox">
         <el-radio-group v-model="timer" size="mini">
           <el-radio-button label="day">按天</el-radio-button>
           <el-radio-button label="month">按月</el-radio-button>
@@ -45,13 +43,10 @@
       </div>
       <!-- :data-zoom="dataZoom" -->
       <ve-line
-        :settings="{
-          area: true,
-        }"
-       :data="timer == 'day'?chartData:chartDataForMoth"
+        :data="timer == 'day' ? chartData : chartDataForMoth"
         height="350px"
         :data-empty="dataEmpty"
-
+        :extend="chartExtend"
         :legend="legend"
       />
     </div>
@@ -66,7 +61,7 @@ import { getIndex } from "../api";
 import { getTimes } from "@/utils";
 import { descs, chioseNum } from "../constant";
 export default {
-  props: ["data","search"],
+  props: ["data", "search"],
   components: {
     "ve-line": veLine,
     "count-to": countTo,
@@ -113,10 +108,8 @@ export default {
         rows: Object.values(months),
       };
     },
-    chartDataForMoth(){
-
+    chartDataForMoth() {
       const values = Object.values(this.items);
-      console.log(values)
       const months = {};
       for (const item of values) {
         for (const row of item.indexMonthData || []) {
@@ -124,18 +117,16 @@ export default {
 
           if (!months[key]) {
             months[key] = {
-              '月份': key,
+              月份: key,
             };
+            months[key][item.title] = row.percent;
+          } else {
+            if (months[key][item.title]) {
+              months[key][item.title] += parseFloat(row.percent);
+            } else {
               months[key][item.title] = row.percent;
-          }else{
-            if( months[key][item.title]){
-               months[key][item.title] +=parseFloat(row.percent);
-            }else{
-               months[key][item.title]=row.percent
             }
-
           }
-
         }
       }
 
@@ -147,30 +138,65 @@ export default {
     dataEmpty() {
       return !this.chartData.rows.length;
     },
+    chartExtend() {
+      return {
+        series: {
+          smooth: false,
+        },
+        yAxis: {
+          //纵轴标尺固定
+          type: "value",
+          scale: true,
+          min: 0,
+            axisLabel:{
+            formatter:'{value}节'
+          }
+        },
+        tooltip: {
+          axisPointer: {
+            type: "shadow",
+            shadowStyle: {
+              color: "rgba(150,150,150,0.2)",
+            },
+          },
+
+          formatter: (item) => {
+            return [
+              item[0].axisValueLabel,
+              ...item.map(
+                (d) => `<br/>${d.marker}${d.seriesName}: ${d.value} %`
+              ),
+            ].join("");
+          },
+        },
+      };
+    },
   },
   data() {
     return {
       active: "MUSIC_GROUP_COURSE",
       timer: "day",
-        mdate: this.search?.dates,
-        loading:false
+      mdate: this.search?.dates,
+      loading: false,
     };
   },
-  methods:{
-        changeValue(date) {
+  methods: {
+    changeValue(date) {
       // 请求更改数据
       this.mdate = date;
-       this.isDayOrMoth(date)
+      this.isDayOrMoth(date);
       this.FetchDetail();
     },
     async FetchDetail() {
-      this.loading = true
+      this.loading = true;
       const data = this.data;
       try {
         const { dates, ...rest } = this.search;
         const res = await getIndex({
           ...rest,
           ...getTimes(this.mdate, ["startDate", "endDate"]),
+          dataTypes:
+            "MUSIC_GROUP_COURSE,VIP_GROUP_COURSE,PRACTICE_GROUP_COURSE",
         });
         for (const item of res.data) {
           // 再循环一遍
@@ -187,21 +213,25 @@ export default {
       } catch (error) {
         console.log(error);
       }
-      console.log(data)
-      this.loading = false
+      console.log(data);
+      this.loading = false;
       this.dataInfo = data;
       this.$emit("resetDate", data);
     },
-     isDayOrMoth(arr){
-      console.log(arr)
-      if(!arr || arr.length<1){
-        this.timer = 'day'
-      }else {
-        const count = this.$helpers.dayjs(arr[0]).diff(this.$helpers.dayjs(arr[1]),'day')
-        Math.abs(count)>chioseNum?this.timer = 'month':this.timer = 'day'
+    isDayOrMoth(arr) {
+      console.log(arr);
+      if (!arr || arr.length < 1) {
+        this.timer = "day";
+      } else {
+        const count = this.$helpers
+          .dayjs(arr[0])
+          .diff(this.$helpers.dayjs(arr[1]), "day");
+        Math.abs(count) > chioseNum
+          ? (this.timer = "month")
+          : (this.timer = "day");
       }
-    }
-  }
+    },
+  },
 };
 </script>
 <style lang="less" scoped>

+ 49 - 39
src/views/main/baseinfo/management.vue

@@ -1,11 +1,11 @@
 <template >
-  <el-card >
+  <el-card>
     <div slot="header" class="clearfix">
       <searchHeader
         :dates="mdate"
         :title="'经营数据'"
         @changeValue="changeValue"
-        :isShowQuert='true'
+        :isShowQuert="true"
       />
     </div>
     <statistic :col="5" class="statistic" :cols="0">
@@ -45,17 +45,13 @@
       </div>
       <!--   v-if="timer == 'day'"    DD-->
       <ve-line
-
-        :settings="{
-            area: true,
-        }"
-        :data="timer == 'day'?chartData:chartDataForMoth"
+        :data="timer == 'day' ? chartData : chartDataForMoth"
         height="350px"
         :data-empty="dataEmpty"
         :extend="chartExtend"
         :legend="legend"
       />
-          <!-- <ve-line
+      <!-- <ve-line
       v-else
         :data-zoom="dataZoom"
         :settings="{
@@ -78,7 +74,7 @@ import veLine from "v-charts/lib/line.common";
 import searchHeader from "./modals/searchHeader";
 import { getIndex } from "../api";
 import { getTimes } from "@/utils";
-import { descs,chioseNum } from "../constant";
+import { descs, chioseNum } from "../constant";
 
 export default {
   props: ["data", "search"],
@@ -102,6 +98,18 @@ export default {
     },
     chartExtend() {
       return {
+        series: {
+          smooth: false,
+        },
+        yAxis: {
+          //纵轴标尺固定
+          type: "value",
+          scale: true,
+          min: 0,
+          axisLabel: {
+            formatter: "{value}元",
+          },
+        },
         tooltip: {
           formatter: (item) => {
             return [
@@ -122,7 +130,7 @@ export default {
           type: "slider",
           start: 50,
           end: 100,
-          filterMode: 'empty'
+          filterMode: "empty",
         },
       ];
     },
@@ -143,13 +151,12 @@ export default {
       return {
         columns: ["日期", ...values.map((item) => item.title)],
         rows: Object.values(months),
-           loading: true
+        loading: true,
       };
     },
-    chartDataForMoth(){
-
+    chartDataForMoth() {
       const values = Object.values(this.items);
-      console.log(values)
+      console.log(values);
       const months = {};
       for (const item of values) {
         for (const row of item.indexMonthData || []) {
@@ -157,25 +164,23 @@ export default {
 
           if (!months[key]) {
             months[key] = {
-              '月份': key,
+              月份: key,
             };
+            months[key][item.title] = row.percent;
+          } else {
+            if (months[key][item.title]) {
+              months[key][item.title] += parseFloat(row.percent);
+            } else {
               months[key][item.title] = row.percent;
-          }else{
-            if( months[key][item.title]){
-               months[key][item.title] +=parseFloat(row.percent);
-            }else{
-               months[key][item.title]=row.percent
             }
-
           }
-
         }
       }
 
       return {
         columns: ["月份", ...values.map((item) => item.title)],
         rows: Object.values(months),
-         loading: true
+        loading: true,
       };
     },
 
@@ -188,27 +193,28 @@ export default {
       active: "SHOULD_INCOME_MONEY",
       timer: "day",
       mdate: this.search?.dates,
-      loading:false
+      loading: false,
     };
   },
-  created(){
-    console.log(this.search?.dates)
+  created() {
+    console.log(this.search?.dates);
   },
   methods: {
     changeValue(date) {
       // 请求更改数据
       this.mdate = date;
-       this.isDayOrMoth(date)
+      this.isDayOrMoth(date);
       this.FetchDetail();
     },
     async FetchDetail() {
-      this.loading = true
+      this.loading = true;
       const data = this.data;
       try {
         const { dates, ...rest } = this.search;
         const res = await getIndex({
           ...rest,
           ...getTimes(this.mdate, ["startDate", "endDate"]),
+          dataTypes: "FINANCE_AMOUNT,FINANCE_BALANCE_AMOUNT,FINANCE_PAY",
         });
         for (const item of res.data) {
           // 再循环一遍
@@ -225,22 +231,26 @@ export default {
       } catch (error) {
         console.log(error);
       }
-      console.log(data)
+      console.log(data);
       this.dataInfo = data;
-      this.loading = false
+      this.loading = false;
       this.$emit("resetDate", data);
     },
 
-    isDayOrMoth(arr){
-      console.log(arr)
-      if(!arr || arr.length<1){
-        this.timer = 'day'
-      }else {
-        const count = this.$helpers.dayjs(arr[0]).diff(this.$helpers.dayjs(arr[1]),'day')
-        Math.abs(count)>chioseNum?this.timer = 'month':this.timer = 'day'
+    isDayOrMoth(arr) {
+      console.log(arr);
+      if (!arr || arr.length < 1) {
+        this.timer = "day";
+      } else {
+        const count = this.$helpers
+          .dayjs(arr[0])
+          .diff(this.$helpers.dayjs(arr[1]), "day");
+        Math.abs(count) > chioseNum
+          ? (this.timer = "month")
+          : (this.timer = "day");
       }
-    }
-  }
+    },
+  },
 };
 </script>
 <style lang="less" scoped>

+ 3 - 2
src/views/main/baseinfo/modals/searchHeader.vue

@@ -77,7 +77,8 @@ export default {
           .dayjs(new Date())
           .set("date", 1)
           .format("YYYY-MM-DD");
-        endDate = this.$helpers.dayjs(new Date()).format("YYYY-MM-DD");
+        endDate = this.$helpers.dayjs(new Date()).subtract(1, 'day').format("YYYY-MM-DD");
+        console.log(endDate)
         this.date = [startDate, endDate];
         this.submitDate( this.date)
       } else if (val == "year") {
@@ -86,7 +87,7 @@ export default {
           .set("month", 0)
           .set("date", 1)
           .format("YYYY-MM-DD");
-        endDate = this.$helpers.dayjs(new Date()).format("YYYY-MM-DD");
+        endDate = this.$helpers.dayjs(new Date()).subtract(1, 'day').format("YYYY-MM-DD");
         this.date = [startDate, endDate];
         this.submitDate( this.date)
       } else if (val == "lastYear") {

+ 13 - 1
src/views/main/baseinfo/student.vue

@@ -48,7 +48,6 @@ v-loading="loading"
         height="350px"
         :data="timer == 'day' ? chartData : chartDataForMoth"
         :data-empty="dataEmpty"
-
         :extend="chartExtend"
         :legend="legend"
       ></ve-line>
@@ -93,6 +92,18 @@ export default {
     },
     chartExtend() {
       return {
+          yAxis: {
+          //纵轴标尺固定
+          type: "value",
+          scale: true,
+          min: 0,
+            axisLabel:{
+            formatter:'{value}人'
+          }
+        },
+          series: {
+          smooth: false,
+        },
         tooltip: {
           axisPointer: {
             type: "shadow",
@@ -197,6 +208,7 @@ export default {
         const res = await getIndex({
           ...rest,
           ...getTimes(this.mdate, ["startDate", "endDate"]),
+           dataTypes:'ADD_STUDENT_REGISTRATION_NUM,MUSIC_GROUP_STUDENT,NEWLY_STUDENT_NUM,QUIT_MUSIC_GROUP_STUDENT_NUM,VIP_PRACTICE_STUDENT_NUM,VIP_PRACTICE_ADD_STUDENT_NUM'
         });
         for (const item of res.data) {
           // 再循环一遍

+ 18 - 6
src/views/main/constant.js

@@ -2,17 +2,17 @@ import dayjs from 'dayjs'
 
 export const descs = {
   STUDENT_REGISTRATION_NUM: '截止到昨日,系统注册学员总数',
-  CHARGE_STUDENT_CHANGE_RATE: '截止到昨日,在册学员付费率(有订单交易成功的都算,导入的也算)',
-  ACTIVATION_RATE: '截止到昨日,筹备中&进行中乐团在读学员和有VIP或网管课学员激活率',
+  CHARGE_STUDENT_CHANGE_RATE: '截止到昨日,在册学员现金付费率(有订单交易成功的都算,导入的也算)',
+  ACTIVATION_RATE: '截止到昨日,筹备中进行中乐团在读学员和有VIP或网管课学员激活率',
   SCHOOL: '截止到昨日,存在【进行中】乐团的【合作单位】总数',
   PROGRESS_MUSIC_GROUP_NUM: '截止到昨日,【进行中】乐团总数',
   TEACHER_NUM: '截止到昨日,非冻结,且离职时间在昨日之后的老师总数',
   FULL_TIME_NUM: '截止到昨日,非冻结、离职时间在昨日之后,且工作类型为【全职】的老师总数',
   PART_TIME_NUM: '截止到昨日,非冻结、离职时间在昨日之后,且工作类型为【兼职】的老师总数',
   SURPLUS_COURSE_NUM: '截止到昨日,系统中【未开始】课程总数(乐团+VIP+网管)',
-  SURPLUS_MUSIC_COURSE_NUM: '截止到昨日,系统中【未开始】乐团课程总数',
-  SURPLUS_VIP_COURSE_NUM: '截止到昨日,系统中【未开始】VIP课程总数',
-  SURPLUS_PRACTICE_COURSE_NUM: '截止到昨日,系统中【未开始】网管课程总数',
+  SURPLUS_MUSIC_COURSE_NUM: '筛选时间段内,乐团课程总数(未开始+已结束)',
+  SURPLUS_VIP_COURSE_NUM: '筛选时间段内,VIP课程总数(未开始+已结束)',
+  SURPLUS_PRACTICE_COURSE_NUM: '筛选时间段内,网管课程总数(未开始+已结束)',
   OVER_COURSE_NUM: '已消耗课时总数:截止到昨日,系统中【已结束】&【已结算】课程总数(乐团+VIP+网管)',
   OVER_MUSIC_COURSE_NUM: '已消耗乐团课时:截止到昨日,系统中【已结束】&【已结算】乐团课程总数',
   OVER_VIP_COURSE_NUM: '已消耗VIP课时:截止到昨日,系统中【已结束】&【已结算】VIP课程总数',
@@ -31,7 +31,19 @@ export const descs = {
   NEWLY_STUDENT_NUM: '筛选时间段内,新增的【进行中】乐团【在读】学员总数(学员当前无在读乐团则记为新增)',
   QUIT_MUSIC_GROUP_STUDENT_NUM: '筛选时间段内,乐团退团学员总数(学员无在读乐团,则记为退团)',
   VIP_PRACTICE_STUDENT_NUM: '筛选时间段中最后一日,学员有剩余VIP或网管未上课时的总人数(分部下去重)',
-  VIP_PRACTICE_ADD_STUDENT_NUM: '筛选时间段内,新增的VIP/网管课付费学员总数'
+  VIP_PRACTICE_ADD_STUDENT_NUM: '筛选时间段内,新增的VIP/网管课付费学员总数',
+  MUSIC_PATROL_ITEM:'乐团主管提交的巡查表中有未勾选事项',
+  HIGH_CLASS_STUDENT_LESS_THAN_THREE:'基础技能班学员数量<3',
+  STUDENT_NOT_PAYMENT:'当前时间以前的缴费项目中学员未缴费',
+  STUDENT_APPLY_FOR_QUIT_MUSIC_GROUP:'学员提交退团申请',
+  TEACHER_EXPECT_SALARY_BE_LOW:'老师预计课酬未达到系统设置的分部基本课酬标准',
+  INSPECTION_ITEM:'乐团主管未完成巡查计划安排',
+  INSPECTION_ITEM_PLAN:'乐团主管已安排的巡查任务未提交',
+  STUDENT_VISIT:'乐团主管未完成会回访任务',
+  TEACHER_EXCEPTION_ATTENDANCE:'课程上有老师或学员考勤异常',
+  TEACHER_NOT_A_CLASS:'课程无老师考勤',
+  TEACHER_SERVE_ERROR:'服务指标生成的作业未布置',
+  WAIT_CREATE_PAYMENT_CALENDER:'缴费项目有效期结束前7天'
 }
 
 const dates = {

+ 1 - 1
src/views/main/reminders/index.vue

@@ -27,7 +27,7 @@
     >
       <title-item
         type="warning"
-        :data="[{name: item.desc, num: item.num}]"
+        :data="[{name: item.desc, num: item.num,errorType:item.errorType}]"
       >
         <span style="color: #14928A;">立即处理<i class="el-icon-d-arrow-right"/></span>
       </title-item>