瀏覽代碼

Merge branch '03/03GRADE' into test

mo 4 年之前
父節點
當前提交
f8baa77945

+ 4 - 0
src/App.vue

@@ -120,6 +120,10 @@ input[type="number"] {
 .el-select {
   width: 180px !important;
 }
+
+.el-input__count{
+  background-color: transparent!important;
+}
 .multiple.el-select {
   width: 180px !important;
 }

+ 2 - 2
src/views/main/baseinfo/business.vue

@@ -20,7 +20,7 @@
         @click="active = key"
       >
         <span>
-          {{ item.title }}
+          {{ item.title+'(%)'}}
           <el-tooltip
             v-if="item.desc"
             :content="item.desc"
@@ -33,7 +33,7 @@
             />
           </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" -->

+ 2 - 2
src/views/main/baseinfo/curriculum.vue

@@ -18,7 +18,7 @@
         @click="active = key"
       >
         <span>
-          {{ item.title }}
+          {{ item.title+"(节 )" }}
           <el-tooltip
             v-if="item.desc"
             :content="item.desc"
@@ -31,7 +31,7 @@
             />
           </el-tooltip>
         </span>
-        <span> <count-to :endVal="item.percent" /></span>
+        <span> <count-to :endVal="item.percent" /></span>
       </statistic-item>
     </statistic>
     <div class="wrap">

+ 2 - 2
src/views/main/baseinfo/hr.vue

@@ -14,13 +14,13 @@
 
       <statistic-item v-for="(item, key) in items" :key="key" :class="{active: active === key}" @click="active = key">
         <span>
-          {{item.title}}
+          {{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"/>
           </el-tooltip>
         </span>
         <span>
-          <count-to :endVal="item.percent"/>
+          <count-to :endVal="item.percent"/>
         </span>
       </statistic-item>
     </statistic>

+ 25 - 15
src/views/main/baseinfo/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="container">
+  <div class="container main">
     <save-form
       inline
       :model="search"
@@ -43,13 +43,13 @@
     <!-- 这里显示选项卡 -->
     <empty desc="暂无统计数据" v-if="isEmpty" />
     <el-row v-else class="rows" :gutter="20">
-      <el-col :xs="24" :sm="24" :md="24" :lg="9" :xl="9">
+      <el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="8">
         <studentbaseinfo :data="dataInfo" />
       </el-col>
-      <el-col :xs="24" :sm="24" :md="24" :lg="6" :xl="6">
+      <el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="8">
         <operate :data="dataInfo" />
       </el-col>
-      <el-col :xs="24" :sm="24" :md="24" :lg="9" :xl="9">
+      <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="8">
         <hrdata :data="dataInfo" />
       </el-col>
       <!-- <el-col :xs="24" :sm="24" :md="24" :lg="12" :xl="12">
@@ -221,20 +221,18 @@ export default {
       }
     },
     resetDate(data) {
-      let arr = null
-      for(let item in data){
+      let arr = null;
+      for (let item in data) {
         // console.log(item)
-        if(item =='VIP_GROUP_COURSE'){
-          console.log(data[item])
-          arr = data[item].indexMonthData
+        if (item == "VIP_GROUP_COURSE") {
+          console.log(data[item]);
+          arr = data[item].indexMonthData;
         }
-        this.dataInfo[item] = data[item]
-
+        this.dataInfo[item] = data[item];
       }
 
-
       // console.log(this.dataInfo)
-      this.dataInfo = {...this.dataInfo};
+      this.dataInfo = { ...this.dataInfo };
     },
   },
 };
@@ -257,6 +255,18 @@ export default {
 }
 </style>
 <style lang="scss">
+.main {
+  .statistic {
+    .statistic-content > span {
+      font-size: 22px !important;
+     &:first-child{
+         font-size: 14px !important;
+     }
+    }
+
+  }
+}
+
 .box {
   display: flex;
   flex-direction: row;
@@ -275,7 +285,7 @@ export default {
   flex-direction: row;
   align-items: center;
   justify-content: center;
-      color: #888;
-    font-size: 14px;
+  color: #888;
+  font-size: 14px;
 }
 </style>

+ 3 - 2
src/views/main/baseinfo/management.vue

@@ -22,7 +22,7 @@
         @click="active = key"
       >
         <span>
-          {{ item.title }}
+          {{ item.title+"(元)" }}
           <el-tooltip
             v-if="item.desc"
             :content="item.desc"
@@ -35,7 +35,8 @@
             />
           </el-tooltip>
         </span>
-        <span> <count-to :endVal="item.percent" :decimals="2" />元 </span>
+        <!--  12345678901.23 -->
+        <span> <count-to :endVal="item.percent" :decimals="2" /></span>
       </statistic-item>
     </statistic>
     <!-- 按月/按天 -->

+ 2 - 2
src/views/main/baseinfo/operate.vue

@@ -13,13 +13,13 @@
     <statistic class="statistic" :cols="0">
       <statistic-item v-for="(item, key) in items" :key="key" :class="{active: active === key}" @click="active = key">
         <span>
-          {{item.title}}
+          {{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"/>
           </el-tooltip>
         </span>
         <span>
-          <count-to :endVal="item.percent"/>
+          <count-to :endVal="item.percent"/>
         </span>
       </statistic-item>
     </statistic>

+ 2 - 2
src/views/main/baseinfo/student.vue

@@ -19,7 +19,7 @@ v-loading="loading"
         @click="active = key"
       >
         <span>
-          {{ item.title }}
+          {{ item.title+"(人)" }}
           <el-tooltip
             v-if="item.desc"
             :content="item.desc"
@@ -32,7 +32,7 @@ v-loading="loading"
             />
           </el-tooltip>
         </span>
-        <span> <count-to :endVal="item.percent" /> </span>
+        <span> <count-to :endVal="item.percent" /> </span>
       </statistic-item>
     </statistic>
     <div class="wrap">

+ 6 - 6
src/views/main/baseinfo/studentBaseinfo.vue

@@ -22,7 +22,7 @@
           @click="active = key"
         >
           <span>
-            {{ item.title }}
+            {{ item.title+"(人)" }}
             <el-tooltip
               v-if="item.desc"
               :content="item.desc"
@@ -35,12 +35,12 @@
               />
             </el-tooltip>
           </span>
-          <span> <count-to :endVal="item.percent" /> </span>
+          <span> <count-to :endVal="item.percent" /> </span>
         </statistic-item>
 
         <statistic-item v-if="data['CHARGE_STUDENT_CHANGE_RATE']">
           <span>
-            {{ data["CHARGE_STUDENT_CHANGE_RATE"].title }}
+            {{ data["CHARGE_STUDENT_CHANGE_RATE"].title+"(%)" }}
             <el-tooltip
               v-if="data['CHARGE_STUDENT_CHANGE_RATE'].desc"
               :content="data['CHARGE_STUDENT_CHANGE_RATE'].desc"
@@ -54,12 +54,12 @@
             </el-tooltip>
           </span>
           <span>
-            <count-to :endVal="data['CHARGE_STUDENT_CHANGE_RATE'].percent" />%
+            <count-to :endVal="data['CHARGE_STUDENT_CHANGE_RATE'].percent" />
           </span>
         </statistic-item>
         <statistic-item v-if="data['ACTIVATION_RATE']">
           <span>
-            {{ data["ACTIVATION_RATE"].title }}
+            {{ data["ACTIVATION_RATE"].title+"(%)" }}
             <el-tooltip
               v-if="data['ACTIVATION_RATE'].desc"
               :content="data['ACTIVATION_RATE'].desc"
@@ -72,7 +72,7 @@
               />
             </el-tooltip>
           </span>
-          <span> <count-to :endVal="data['ACTIVATION_RATE'].percent" />% </span>
+          <span> <count-to :endVal="data['ACTIVATION_RATE'].percent" /></span>
         </statistic-item>
       </statistic>
     </el-card>

+ 2 - 2
src/views/main/baseinfo/surplusCourse.vue

@@ -16,7 +16,7 @@
           @click="active = key"
         >
           <span>
-            {{ item.title }}
+            {{ item.title+"(节)" }}
             <el-tooltip
               v-if="item.desc"
               :content="item.desc"
@@ -30,7 +30,7 @@
             </el-tooltip>
           </span>
           <span>
-            <count-to :endVal="item.percent" />
+            <count-to :endVal="item.percent" />
           </span>
         </statistic-item>
       </statistic>

+ 2 - 2
src/views/main/baseinfo/useCourse.vue

@@ -16,7 +16,7 @@
           @click="active = key"
         >
           <span>
-            {{ item.title }}
+            {{ item.title+"(节)" }}
             <el-tooltip
               v-if="item.desc"
               :content="item.desc"
@@ -30,7 +30,7 @@
             </el-tooltip>
           </span>
           <span>
-            <count-to :endVal="item.percent" />
+            <count-to :endVal="item.percent" />
           </span>
         </statistic-item>
       </statistic>

+ 659 - 423
src/views/reportForm/index.vue

@@ -1,15 +1,18 @@
 <template>
   <div class="m-container">
     <h2>
-      <div class="squrt"></div>报表中心
+      <div class="squrt"></div>
+      报表中心
     </h2>
     <div class="m-core">
       <div class="m-wrap">
         <div class="title">课酬导出:</div>
-        <el-date-picker v-model="mouth"
-                        type="month"
-                        placeholder="选择月"
-                        value-format="yyyy-MM-dd"></el-date-picker>
+        <el-date-picker
+          v-model="mouth"
+          type="month"
+          placeholder="选择月"
+          value-format="yyyy-MM-dd"
+        ></el-date-picker>
         <!-- <el-select v-model.trim="courseScheduleType"
                    style="marginLeft:10px"
                    filterable
@@ -21,210 +24,338 @@
                      :label="item.label"
                      :value="item.value"></el-option>
         </el-select> -->
-        <el-button style="margin-left: 10px;" type="primary" @click="exportSalar"  v-permission="'export/teacherSalary'">导出</el-button>
-        <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"
-             v-permission="'export/teacherSalary'"></i>
+        <el-button
+          style="margin-left: 10px"
+          type="primary"
+          @click="exportSalar"
+          v-permission="'export/teacherSalary'"
+          >导出</el-button
+        >
+        <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"
+            v-permission="'export/teacherSalary'"
+          ></i>
         </el-tooltip>
       </div>
       <el-divider></el-divider>
       <div class="m-core">
         <div class="m-wrap">
-          <div class="title">乐团招生汇总:
-          </div>
-          <select-all v-model.trim="organIdList"
-                     class="organSelect"
-                     style="width:100%"
-                     filterable
-                     placeholder="请选择分部"
-                     multiple
-                     clearable>
-            <el-option v-for="(item,index) in selects.branchs"
-                       :key="index"
-                       :label="item.name"
-                       :value="item.id"></el-option>
+          <div class="title">乐团招生汇总:</div>
+          <select-all
+            v-model.trim="organIdList"
+            class="organSelect"
+            style="width: 100%"
+            filterable
+            placeholder="请选择分部"
+            multiple
+            clearable
+          >
+            <el-option
+              v-for="(item, index) in selects.branchs"
+              :key="index"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
           </select-all>
-          <el-button style="margin-left: 10px;" type="primary"  @click="exportMusicGroup"
-               v-permission="'export/musicGroupRegister'">导出</el-button>
-          <el-tooltip placement="top"
-                      popper-class="mTooltip">
+          <el-button
+            style="margin-left: 10px"
+            type="primary"
+            @click="exportMusicGroup"
+            v-permission="'export/musicGroupRegister'"
+            >导出</el-button
+          >
+          <el-tooltip placement="top" popper-class="mTooltip">
             <div slot="content">
               请选择分部后,导出招生情况汇总表,分部可多选
             </div>
-            <i class="el-icon-question micon el-tooltip"
-               v-permission="'export/musicGroupRegister'"
-               style="font-size: 18px; color: #F56C6C"></i>
+            <i
+              class="el-icon-question micon el-tooltip"
+              v-permission="'export/musicGroupRegister'"
+              style="font-size: 18px; color: #f56c6c"
+            ></i>
           </el-tooltip>
         </div>
       </div>
       <el-divider></el-divider>
       <div class="m-core">
         <div class="m-wrap">
-          <div class="title">老师默认课酬:
-          </div>
-          <select-all v-model.trim="teacherDefaultSalaryOrganId"
-                     class="organSelect"
-                     style="width:100%"
-                     filterable
-                     placeholder="请选择分部"
-                     multiple
-                     clearable>
-            <el-option v-for="(item,index) in selects.branchs"
-                       :key="index"
-                       :label="item.name"
-                       :value="item.id"></el-option>
+          <div class="title">老师默认课酬:</div>
+          <select-all
+            v-model.trim="teacherDefaultSalaryOrganId"
+            class="organSelect"
+            style="width: 100%"
+            filterable
+            placeholder="请选择分部"
+            multiple
+            clearable
+          >
+            <el-option
+              v-for="(item, index) in selects.branchs"
+              :key="index"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
           </select-all>
 
-          <el-button style="margin-left: 10px;" type="primary"  @click="exportDefaultSalary"
-               v-permission="'export/teacherDefaultSalary'">导出</el-button>
-          <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"
-               v-permission="'export/teacherDefaultSalary'"></i>
+          <el-button
+            style="margin-left: 10px"
+            type="primary"
+            @click="exportDefaultSalary"
+            v-permission="'export/teacherDefaultSalary'"
+            >导出</el-button
+          >
+          <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"
+              v-permission="'export/teacherDefaultSalary'"
+            ></i>
           </el-tooltip>
         </div>
       </div>
       <el-divider></el-divider>
       <div class="m-core">
         <div class="m-wrap">
-          <div class="title">乐团在读人数:
-          </div>
-          <select-all v-model.trim="musicTeamNum"
-                     class="organSelect"
-                     style="width:100%"
-                     filterable
-                     multiple
-                     placeholder="请选择分部"
-                     clearable>
-            <el-option v-for="(item,index) in selects.branchs"
-                       :key="index"
-                       :label="item.name"
-                       :value="item.id"></el-option>
+          <div class="title">乐团在读人数:</div>
+          <select-all
+            v-model.trim="musicTeamNum"
+            class="organSelect"
+            style="width: 100%"
+            filterable
+            multiple
+            placeholder="请选择分部"
+            clearable
+          >
+            <el-option
+              v-for="(item, index) in selects.branchs"
+              :key="index"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
           </select-all>
-          <el-button style="margin-left: 10px;" type="primary"  @click="exportMusicTeamNum"
-               v-permission="'export/musicGroupNormalStudentNum'">导出</el-button>
-          <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"
-               v-permission="'export/teacherDefaultSalary'"></i>
+          <el-button
+            style="margin-left: 10px"
+            type="primary"
+            @click="exportMusicTeamNum"
+            v-permission="'export/musicGroupNormalStudentNum'"
+            >导出</el-button
+          >
+          <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"
+              v-permission="'export/teacherDefaultSalary'"
+            ></i>
           </el-tooltip>
         </div>
       </div>
       <el-divider></el-divider>
       <div class="m-core">
         <div class="m-wrap">
-          <div class="title">回款统计:
-          </div>
-          <select-all v-model.trim="studentOrganId"
-                     class="organSelect"
-                     style="width:100%"
-                     filterable
-                     placeholder="请选择分部"
-                     multiple
-                     clearable>
-            <el-option v-for="(item,index) in selects.branchs"
-                       :key="index"
-                       :label="item.name"
-                       :value="item.id"></el-option>
+          <div class="title">回款统计:</div>
+          <select-all
+            v-model.trim="studentOrganId"
+            class="organSelect"
+            style="width: 100%"
+            filterable
+            placeholder="请选择分部"
+            multiple
+            clearable
+          >
+            <el-option
+              v-for="(item, index) in selects.branchs"
+              :key="index"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
           </select-all>
-          <el-date-picker style="margin-left: 15px;"
-                          v-model="studentMonth"
-                          type="month"
-                          placeholder="选择月"
-                          value-format="yyyy-MM-dd"></el-date-picker>
-          <el-button style="margin-left: 10px;" type="primary" @click="exportStudent"
-               v-permission="'export/studentOrder'">导出</el-button>
-          <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"
-               v-permission="'export/studentOrder'"></i>
+          <el-date-picker
+            style="margin-left: 15px"
+            v-model="studentMonth"
+            type="month"
+            placeholder="选择月"
+            value-format="yyyy-MM-dd"
+          ></el-date-picker>
+          <el-button
+            style="margin-left: 10px"
+            type="primary"
+            @click="exportStudent"
+            v-permission="'export/studentOrder'"
+            >导出</el-button
+          >
+          <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"
+              v-permission="'export/studentOrder'"
+            ></i>
           </el-tooltip>
         </div>
       </div>
       <el-divider></el-divider>
       <div class="m-core">
         <div class="m-wrap">
-          <div class="title">学生考勤:
-          </div>
-          <select-all v-model.trim="attendanceOrganId"
-                     class="organSelect"
-                     style="width:100%"
-                     filterable
-                     multiple
-                     placeholder="请选择分部"
-                     clearable>
-            <el-option v-for="(item,index) in selects.branchs"
-                       :key="index"
-                       :label="item.name"
-                       :value="item.id"></el-option>
+          <div class="title">学生考勤:</div>
+          <select-all
+            v-model.trim="attendanceOrganId"
+            class="organSelect"
+            style="width: 100%"
+            filterable
+            multiple
+            placeholder="请选择分部"
+            clearable
+          >
+            <el-option
+              v-for="(item, index) in selects.branchs"
+              :key="index"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
           </select-all>
-          <el-select v-model.trim="attendanceCourseType"
-                     class="organSelect"
-                     style=" margin-left: 15px; width:100%"
-                     filterable
-                     placeholder="请选择课程类型">
-            <el-option v-for="(item,index) in courseListType"
-                       :key="index"
-                       :label="item.label"
-                       :value="item.value"></el-option>
+          <el-select
+            v-model.trim="attendanceCourseType"
+            class="organSelect"
+            style="margin-left: 15px; width: 100%"
+            filterable
+            placeholder="请选择课程类型"
+          >
+            <el-option
+              v-for="(item, index) in courseListType"
+              :key="index"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
           </el-select>
-          <el-date-picker v-model.trim="timer"
-                          style="width:420px;margin-left: 15px;"
-                          type="daterange"
-                          value-format="yyyy-MM-dd"
-                          range-separator="至"
-                          start-placeholder="上课开始日期"
-                          end-placeholder="上课结束日期"
-                          :picker-options="{
-                            firstDayOfWeek: 1
-                          }"
+          <el-date-picker
+            v-model.trim="timer"
+            style="width: 420px; margin-left: 15px"
+            type="daterange"
+            value-format="yyyy-MM-dd"
+            range-separator="至"
+            start-placeholder="上课开始日期"
+            end-placeholder="上课结束日期"
+            :picker-options="{
+              firstDayOfWeek: 1,
+            }"
           ></el-date-picker>
-          <el-button style="margin-left: 10px;" type="primary" @click="exportAttendance"
-               v-permission="'export/exportStudentAttendances'">导出</el-button>
-          <!-- <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"
-               v-permission="'export/studentOrder'"></i>
-          </el-tooltip> -->
+          <el-button
+            style="margin-left: 10px"
+            type="primary"
+            @click="exportAttendance"
+            v-permission="'export/exportStudentAttendances'"
+            >导出</el-button
+          >
         </div>
       </div>
       <el-divider></el-divider>
       <div class="m-core">
         <div class="m-wrap">
-          <div class="title">乐保订单导出:
-          </div>
+          <div class="title">课程余额明细:</div>
+          <select-all
+            v-model.trim="AccountOrganId"
+            class="organSelect"
+            style="width: 100%"
+            filterable
+            multiple
+            placeholder="请选择分部"
+            clearable
+          >
+            <el-option
+              v-for="(item, index) in selects.branchs"
+              :key="index"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
+          </select-all>
+          <el-date-picker
+            v-model.trim="AccountTimer"
+            style="width: 420px; margin-left: 15px"
+            type="daterange"
+            value-format="yyyy-MM-dd"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            :picker-options="{
+              firstDayOfWeek: 1,
+            }"
+          ></el-date-picker>
+          <el-button
+            style="margin-left: 10px"
+            type="primary"
+            @click="exportAccount"
+            v-permission="'export/userCoursesAccount/4388'"
+            >导出</el-button
+          >
+        </div>
+      </div>
+      <el-divider></el-divider>
+      <div class="m-core">
+        <div class="m-wrap">
+          <div class="title">账户余额明细:</div>
+          <select-all
+            v-model.trim="AccountDetailOrganId"
+            class="organSelect"
+            style="width: 100%"
+            filterable
+            multiple
+            placeholder="请选择分部"
+            clearable
+          >
+            <el-option
+              v-for="(item, index) in selects.branchs"
+              :key="index"
+              :label="item.name"
+              :value="item.id"
+            ></el-option>
+          </select-all>
+          <el-date-picker
+            v-model.trim="AccountDetailTimer"
+            style="width: 420px; margin-left: 15px"
+            type="daterange"
+            value-format="yyyy-MM-dd"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            :picker-options="{
+              firstDayOfWeek: 1,
+            }"
+          ></el-date-picker>
+          <el-button
+            style="margin-left: 10px"
+            type="primary"
+            @click="exportDetailAccount"
+            v-permission="'export/userCoursesAccount/4389'"
+            >导出</el-button
+          >
+        </div>
+      </div>
+      <el-divider></el-divider>
+      <div class="m-core">
+        <div class="m-wrap">
+          <div class="title">乐保订单导出:</div>
           <el-date-picker
             v-model="leBaoTimer"
-            style="width:420px;margin-left: 15px;"
+            style="width: 420px; margin-left: 15px"
             type="monthrange"
             value-format="yyyy-MM-dd"
             range-separator="至"
             start-placeholder="开始月份"
-            end-placeholder="结束月份">
+            end-placeholder="结束月份"
+          >
           </el-date-picker>
-          <el-button style="margin-left: 10px;" type="primary" @click="exportLeBao"
-               v-permission="'studentInstrument/export'">导出</el-button>
+          <el-button
+            style="margin-left: 10px"
+            type="primary"
+            @click="exportLeBao"
+            v-permission="'studentInstrument/export'"
+            >导出</el-button
+          >
           <!-- <el-tooltip placement="top"
                       popper-class="mTooltip">
             <div slot="content">
@@ -240,344 +371,449 @@
   </div>
 </template>
 <script>
-import { exportTeacherSalary } from '@/api/generalSettings'
-import { courseType, courseListType } from '@/utils/searchArray'
-import { Export } from '@/utils/downLoadFile'
-import cleanDeep from 'clean-deep'
-import dayjs from 'dayjs'
-import axios from 'axios'
-import qs from 'qs'
-import {
-  getToken
-} from '@/utils/auth'
-import load from '@/utils/loading'
+import { exportTeacherSalary } from "@/api/generalSettings";
+import { courseType, courseListType } from "@/utils/searchArray";
+import { Export } from "@/utils/downLoadFile";
+import cleanDeep from "clean-deep";
+import dayjs from "dayjs";
+import axios from "axios";
+import qs from "qs";
+import { getToken } from "@/utils/auth";
+import load from "@/utils/loading";
 export default {
   name: "reportForm",
-  data () {
+  data() {
     return {
       mouth: "",
       organIdList: [],
-      teacherDefaultSalaryOrganId: '',
+      teacherDefaultSalaryOrganId: "",
       courseArray: courseType,
       courseListType,
       courseScheduleType: [],
       musicTeamNum: [],
-      studentOrganId: '',
-      studentMonth: '',
+      studentOrganId: "",
+      studentMonth: "",
       attendanceOrganId: [],
-      attendanceCourseType: 'MUSIC',
+      attendanceCourseType: "MUSIC",
       timer: [],
-      leBaoTimer: []
+      leBaoTimer: [],
+      AccountOrganId: [],
+      AccountTimer: [],
+      AccountDetailOrganId: [],
+      AccountDetailTimer: [],
     };
   },
-  mounted () {
-    this.$store.dispatch('setBranchs')
+  mounted() {
+    this.$store.dispatch("setBranchs");
   },
   methods: {
-    exportSalar () {
+    exportSalar() {
       if (!this.mouth) {
-        this.$message.error('请选择导出月份')
-        return
+        this.$message.error("请选择导出月份");
+        return;
       }
       // let courseTypeList = this.courseScheduleType.join(',')
-      let url = '/api-web/export/teacherSalary'
-      let data = { date: this.mouth }
+      let url = "/api-web/export/teacherSalary";
+      let data = { date: this.mouth };
       const options = {
-        method: 'POST',
+        method: "POST",
         headers: {
-          'Authorization': getToken()
+          Authorization: getToken(),
         },
         data: qs.stringify(cleanDeep(data)),
         url,
-        responseType: 'blob'
-      }
-      this.$confirm('您确定导出课酬', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        load.startLoading()
-        axios(options).then(res => {
-          let blob = new Blob([res.data], {
-            // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
-            type: 'application/vnd.ms-excel;charset=utf-8'
-            //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
-          })
+        responseType: "blob",
+      };
+      this.$confirm("您确定导出课酬", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          load.startLoading();
+          axios(options)
+            .then((res) => {
+              let blob = new Blob([res.data], {
+                // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
+                type: "application/vnd.ms-excel;charset=utf-8",
+                //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
+              });
 
-          let text = (new Response(blob)).text()
-          text.then(res => {
-            // 判断是否报错
-            if (res.indexOf('code') != -1) {
-              let json = JSON.parse(res)
-              this.$message.error(json.msg)
-            } else {
-              let objectUrl = URL.createObjectURL(blob)
-              let link = document.createElement("a")
-              let nowTime = new Date()
-              let ymd = nowTime.getFullYear() + '' + (nowTime.getMonth() + 1) + '' + nowTime.getDate()
-              let fname = ymd + '课酬.xls' //下载文件的名字
-              link.href = objectUrl
-              link.setAttribute("download", fname)
-              document.body.appendChild(link)
-              link.click()
-            }
-          })
-          load.endLoading();
-        }).catch(error => {
-          this.$message.error('导出数据失败,请联系管理员');
-          load.endLoading();
+              let text = new Response(blob).text();
+              text.then((res) => {
+                // 判断是否报错
+                if (res.indexOf("code") != -1) {
+                  let json = JSON.parse(res);
+                  this.$message.error(json.msg);
+                } else {
+                  let objectUrl = URL.createObjectURL(blob);
+                  let link = document.createElement("a");
+                  let nowTime = new Date();
+                  let ymd =
+                    nowTime.getFullYear() +
+                    "" +
+                    (nowTime.getMonth() + 1) +
+                    "" +
+                    nowTime.getDate();
+                  let fname = ymd + "课酬.xls"; //下载文件的名字
+                  link.href = objectUrl;
+                  link.setAttribute("download", fname);
+                  document.body.appendChild(link);
+                  link.click();
+                }
+              });
+              load.endLoading();
+            })
+            .catch((error) => {
+              this.$message.error("导出数据失败,请联系管理员");
+              load.endLoading();
+            });
         })
-      }).catch(() => { })
+        .catch(() => {});
     },
-    exportMusicGroup () {
+    exportMusicGroup() {
       if (this.organIdList.length < 1) {
-        this.$message.error('请至少选择一个分部')
-        return
+        this.$message.error("请至少选择一个分部");
+        return;
       }
-      let url = '/api-web/export/musicGroupRegister'
-      let data = { organIds: this.organIdList.join(',') }
+      let url = "/api-web/export/musicGroupRegister";
+      let data = { organIds: this.organIdList.join(",") };
       const options = {
-        method: 'POST',
+        method: "POST",
         headers: {
-          'Authorization': getToken()
+          Authorization: getToken(),
         },
         data: qs.stringify(cleanDeep(data)),
         url,
-        responseType: 'blob'
-      }
-      this.$confirm('您确定导出招生情况汇总表', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        load.startLoading()
-        axios(options).then(res => {
-          let blob = new Blob([res.data], {
-            // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
-            type: 'application/vnd.ms-excel;charset=utf-8'
-            //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
-          })
+        responseType: "blob",
+      };
+      this.$confirm("您确定导出招生情况汇总表", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          load.startLoading();
+          axios(options)
+            .then((res) => {
+              let blob = new Blob([res.data], {
+                // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
+                type: "application/vnd.ms-excel;charset=utf-8",
+                //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
+              });
 
-          let text = (new Response(blob)).text()
-          text.then(res => {
-            // 判断是否报错
-            if (res.indexOf('code') != -1) {
-              let json = JSON.parse(res)
-              this.$message.error(json.msg)
-            } else {
-              let objectUrl = URL.createObjectURL(blob)
-              let link = document.createElement("a")
-              let nowTime = new Date()
-              let ymd = nowTime.getFullYear() + '' + (nowTime.getMonth() + 1) + '' + nowTime.getDate()
-              let fname = ymd + '招生情况汇总表.xls' //下载文件的名字
-              link.href = objectUrl
-              link.setAttribute("download", fname)
-              document.body.appendChild(link)
-              link.click()
-            }
-          })
-          load.endLoading();
-        }).catch(error => {
-          this.$message.error('导出数据失败,请联系管理员');
-          load.endLoading();
+              let text = new Response(blob).text();
+              text.then((res) => {
+                // 判断是否报错
+                if (res.indexOf("code") != -1) {
+                  let json = JSON.parse(res);
+                  this.$message.error(json.msg);
+                } else {
+                  let objectUrl = URL.createObjectURL(blob);
+                  let link = document.createElement("a");
+                  let nowTime = new Date();
+                  let ymd =
+                    nowTime.getFullYear() +
+                    "" +
+                    (nowTime.getMonth() + 1) +
+                    "" +
+                    nowTime.getDate();
+                  let fname = ymd + "招生情况汇总表.xls"; //下载文件的名字
+                  link.href = objectUrl;
+                  link.setAttribute("download", fname);
+                  document.body.appendChild(link);
+                  link.click();
+                }
+              });
+              load.endLoading();
+            })
+            .catch((error) => {
+              this.$message.error("导出数据失败,请联系管理员");
+              load.endLoading();
+            });
         })
-      }).catch(() => { })
+        .catch(() => {});
     },
-    exportDefaultSalary () {
-
-      let organIdList = this.teacherDefaultSalaryOrganId.join(',')
-      let url = '/api-web/export/teacherDefaultSalary'
-      let data = { organIdList }
+    exportDefaultSalary() {
+      let organIdList = this.teacherDefaultSalaryOrganId.join(",");
+      let url = "/api-web/export/teacherDefaultSalary";
+      let data = { organIdList };
       const options = {
-        method: 'POST',
+        method: "POST",
         headers: {
-          'Authorization': getToken()
+          Authorization: getToken(),
         },
         data: qs.stringify(cleanDeep(data)),
         url,
-        responseType: 'blob'
-      }
-      this.$confirm('您确定导出老师默认课酬表', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        load.startLoading()
-        axios(options).then(res => {
-          let blob = new Blob([res.data], {
-            // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
-            type: 'application/vnd.ms-excel;charset=utf-8'
-            //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
-          })
+        responseType: "blob",
+      };
+      this.$confirm("您确定导出老师默认课酬表", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          load.startLoading();
+          axios(options)
+            .then((res) => {
+              let blob = new Blob([res.data], {
+                // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
+                type: "application/vnd.ms-excel;charset=utf-8",
+                //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
+              });
 
-          let text = (new Response(blob)).text()
-          text.then(res => {
-            // 判断是否报错
-            if (res.indexOf('code') != -1) {
-              let json = JSON.parse(res)
-              this.$message.error(json.msg)
-            } else {
-              let objectUrl = URL.createObjectURL(blob)
-              let link = document.createElement("a")
-              let nowTime = new Date()
-              let ymd = nowTime.getFullYear() + '' + (nowTime.getMonth() + 1) + '' + nowTime.getDate()
-              let fname = ymd + '老师默认课酬表.xls' //下载文件的名字
-              link.href = objectUrl
-              link.setAttribute("download", fname)
-              document.body.appendChild(link)
-              link.click()
-            }
-          })
-          load.endLoading();
-        }).catch(error => {
-          this.$message.error('导出数据失败,请联系管理员');
-          load.endLoading();
+              let text = new Response(blob).text();
+              text.then((res) => {
+                // 判断是否报错
+                if (res.indexOf("code") != -1) {
+                  let json = JSON.parse(res);
+                  this.$message.error(json.msg);
+                } else {
+                  let objectUrl = URL.createObjectURL(blob);
+                  let link = document.createElement("a");
+                  let nowTime = new Date();
+                  let ymd =
+                    nowTime.getFullYear() +
+                    "" +
+                    (nowTime.getMonth() + 1) +
+                    "" +
+                    nowTime.getDate();
+                  let fname = ymd + "老师默认课酬表.xls"; //下载文件的名字
+                  link.href = objectUrl;
+                  link.setAttribute("download", fname);
+                  document.body.appendChild(link);
+                  link.click();
+                }
+              });
+              load.endLoading();
+            })
+            .catch((error) => {
+              this.$message.error("导出数据失败,请联系管理员");
+              load.endLoading();
+            });
         })
-      }).catch(() => { })
+        .catch(() => {});
     },
-    exportMusicTeamNum () {
-      let organIds = this.musicTeamNum.join(',')
-      let url = '/api-web/export/musicGroupNormalStudentNum'
-      let data = { organIds }
+    exportMusicTeamNum() {
+      let organIds = this.musicTeamNum.join(",");
+      let url = "/api-web/export/musicGroupNormalStudentNum";
+      let data = { organIds };
       const options = {
-        method: 'POST',
+        method: "POST",
         headers: {
-          'Authorization': getToken()
+          Authorization: getToken(),
         },
         data: qs.stringify(cleanDeep(data)),
         url,
-        responseType: 'blob'
-      }
-      this.$confirm('您确定导出乐团在读人数', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        load.startLoading()
-        axios(options).then(res => {
-          let blob = new Blob([res.data], {
-            // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
-            type: 'application/vnd.ms-excel;charset=utf-8'
-            //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
-          })
+        responseType: "blob",
+      };
+      this.$confirm("您确定导出乐团在读人数", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          load.startLoading();
+          axios(options)
+            .then((res) => {
+              let blob = new Blob([res.data], {
+                // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
+                type: "application/vnd.ms-excel;charset=utf-8",
+                //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
+              });
 
-          let text = (new Response(blob)).text()
-          text.then(res => {
-            // 判断是否报错
-            if (res.indexOf('code') != -1) {
-              let json = JSON.parse(res)
-              this.$message.error(json.msg)
-            } else {
-              let objectUrl = URL.createObjectURL(blob)
-              let link = document.createElement("a")
-              let nowTime = new Date()
-              let ymd = nowTime.getFullYear() + '' + (nowTime.getMonth() + 1) + '' + nowTime.getDate()
-              let fname = ymd + '乐团在读人数.xls' //下载文件的名字
-              link.href = objectUrl
-              link.setAttribute("download", fname)
-              document.body.appendChild(link)
-              link.click()
-            }
-          })
-          load.endLoading();
-        }).catch(error => {
-          this.$message.error('导出数据失败,请联系管理员');
-          load.endLoading();
+              let text = new Response(blob).text();
+              text.then((res) => {
+                // 判断是否报错
+                if (res.indexOf("code") != -1) {
+                  let json = JSON.parse(res);
+                  this.$message.error(json.msg);
+                } else {
+                  let objectUrl = URL.createObjectURL(blob);
+                  let link = document.createElement("a");
+                  let nowTime = new Date();
+                  let ymd =
+                    nowTime.getFullYear() +
+                    "" +
+                    (nowTime.getMonth() + 1) +
+                    "" +
+                    nowTime.getDate();
+                  let fname = ymd + "乐团在读人数.xls"; //下载文件的名字
+                  link.href = objectUrl;
+                  link.setAttribute("download", fname);
+                  document.body.appendChild(link);
+                  link.click();
+                }
+              });
+              load.endLoading();
+            })
+            .catch((error) => {
+              this.$message.error("导出数据失败,请联系管理员");
+              load.endLoading();
+            });
         })
-      }).catch(() => { })
+        .catch(() => {});
     },
-    exportStudent () {
+    exportStudent() {
       if (!this.studentMonth) {
-        this.$message.error('请选择导出月份')
-        return
+        this.$message.error("请选择导出月份");
+        return;
       }
-      let studentOrganId = this.studentOrganId.join(',')
-      let url = '/api-web/export/studentOrder'
-      let data = { organIds: studentOrganId, date: this.studentMonth }
+      let studentOrganId = this.studentOrganId.join(",");
+      let url = "/api-web/export/studentOrder";
+      let data = { organIds: studentOrganId, date: this.studentMonth };
       const options = {
-        method: 'POST',
+        method: "POST",
         headers: {
-          'Authorization': getToken()
+          Authorization: getToken(),
         },
         data: qs.stringify(cleanDeep(data)),
         url,
-        responseType: 'blob'
-      }
-      this.$confirm('您确定导出回款统计', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning'
-      }).then(() => {
-        load.startLoading()
-        axios(options).then(res => {
-          let blob = new Blob([res.data], {
-            // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
-            type: 'application/vnd.ms-excel;charset=utf-8'
-            //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
-          })
+        responseType: "blob",
+      };
+      this.$confirm("您确定导出回款统计", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      })
+        .then(() => {
+          load.startLoading();
+          axios(options)
+            .then((res) => {
+              let blob = new Blob([res.data], {
+                // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8'
+                type: "application/vnd.ms-excel;charset=utf-8",
+                //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
+              });
 
-          let text = (new Response(blob)).text()
-          text.then(res => {
-            // 判断是否报错
-            if (res.indexOf('code') != -1) {
-              let json = JSON.parse(res)
-              this.$message.error(json.msg)
-            } else {
-              let objectUrl = URL.createObjectURL(blob)
-              let link = document.createElement("a")
-              let nowTime = new Date()
-              let ymd = nowTime.getFullYear() + '' + (nowTime.getMonth() + 1) + '' + nowTime.getDate()
-              let fname = ymd + '回款统计.xls' //下载文件的名字
-              link.href = objectUrl
-              link.setAttribute("download", fname)
-              document.body.appendChild(link)
-              link.click()
-            }
-          })
-          load.endLoading();
-        }).catch(error => {
-          this.$message.error('导出数据失败,请联系管理员');
-          load.endLoading();
+              let text = new Response(blob).text();
+              text.then((res) => {
+                // 判断是否报错
+                if (res.indexOf("code") != -1) {
+                  let json = JSON.parse(res);
+                  this.$message.error(json.msg);
+                } else {
+                  let objectUrl = URL.createObjectURL(blob);
+                  let link = document.createElement("a");
+                  let nowTime = new Date();
+                  let ymd =
+                    nowTime.getFullYear() +
+                    "" +
+                    (nowTime.getMonth() + 1) +
+                    "" +
+                    nowTime.getDate();
+                  let fname = ymd + "回款统计.xls"; //下载文件的名字
+                  link.href = objectUrl;
+                  link.setAttribute("download", fname);
+                  document.body.appendChild(link);
+                  link.click();
+                }
+              });
+              load.endLoading();
+            })
+            .catch((error) => {
+              this.$message.error("导出数据失败,请联系管理员");
+              load.endLoading();
+            });
         })
-      }).catch(() => { })
+        .catch(() => {});
     },
-    exportAttendance () {
+    exportAttendance() {
       let classStartDate, classEndDate;
       if (this.timer && this.timer.length > 0) {
-        classStartDate = this.timer[0]
-        classEndDate = this.timer[1]
+        classStartDate = this.timer[0];
+        classEndDate = this.timer[1];
       } else {
-        classStartDate = null
-        classEndDate = null
+        classStartDate = null;
+        classEndDate = null;
       }
-      Export(this, {
-        url: '/api-web/export/exportStudentAttendances',
-        fileName: '学生考勤.xls',
-        method: 'post',
-        params: qs.stringify({ organId: this.attendanceOrganId.join(','), groupType: this.attendanceCourseType, classStartDate, classEndDate })
-      }, '您确定导出学生考勤?')
+      Export(
+        this,
+        {
+          url: "/api-web/export/exportStudentAttendances",
+          fileName: "学生考勤.xls",
+          method: "post",
+          params: qs.stringify({
+            organId: this.attendanceOrganId.join(","),
+            groupType: this.attendanceCourseType,
+            classStartDate,
+            classEndDate,
+          }),
+        },
+        "您确定导出学生考勤?"
+      );
     },
-    exportLeBao () {
+    exportLeBao() {
       let endTime, startTime;
       if (this.leBaoTimer && this.leBaoTimer.length > 1) {
-        startTime = this.leBaoTimer[0]
-        let end = this.leBaoTimer[1]
-        end = new Date(end)
-        end = new Date(end.getFullYear(), end.getMonth() + 1, 0)
-        endTime = dayjs(end).format('YYYY-MM-DD')
+        startTime = this.leBaoTimer[0];
+        let end = this.leBaoTimer[1];
+        end = new Date(end);
+        end = new Date(end.getFullYear(), end.getMonth() + 1, 0);
+        endTime = dayjs(end).format("YYYY-MM-DD");
       } else {
-        this.$message.error('请选择导出月份')
-        return
+        this.$message.error("请选择导出月份");
+        return;
       }
-      Export(this, {
-        url: '/api-web/studentInstrument/export',
-        fileName: '乐保订单.xls',
-        method: 'get',
-        params: { startTime: startTime, endTime: endTime }
-      }, '您确定导出乐保订单?')
+      Export(
+        this,
+        {
+          url: "/api-web/studentInstrument/export",
+          fileName: "乐保订单.xls",
+          method: "get",
+          params: { startTime: startTime, endTime: endTime },
+        },
+        "您确定导出乐保订单?"
+      );
     },
-  }
-
+    exportAccount(){
+      let endTime, startTime;
+      if (this.AccountTimer && this.AccountTimer.length > 1) {
+        startTime = this.AccountTimer[0];
+        let end = this.AccountTimer[1];
+        end = new Date(end);
+        end = new Date(end.getFullYear(), end.getMonth() + 1, 0);
+        endTime = dayjs(end).format("YYYY-MM-DD");
+      }else{
+        startTime=null;
+        endTime=null;
+      }
+      Export(
+        this,
+        {
+          url: "/api-web/export/userCoursesAccount",
+          fileName: "课程余额明细.xls",
+          method: "post",
+          params: { startTime: startTime, endTime: endTime,organId: this.AccountOrganId.join(",") },
+        },
+        "您确定导出课程余额明细?"
+      );
+    },
+    exportDetailAccount(){
+      let endTime, startTime;
+      if (this.AccountDetailTimer && this.AccountDetailTimer.length > 1) {
+        startTime = this.AccountDetailTimer[0];
+        let end = this.AccountDetailTimer[1];
+        end = new Date(end);
+        end = new Date(end.getFullYear(), end.getMonth() + 1, 0);
+        endTime = dayjs(end).format("YYYY-MM-DD");
+      }else{
+        startTime=null;
+        endTime=null;
+      }
+      Export(
+        this,
+        {
+          url: "/api-web/export/userCoursesAccount",
+          fileName: "账户余额明细.xls",
+          method: "post",
+          params: { startTime: startTime, endTime: endTime,organId: this.AccountDetailOrganId.join(",") },
+        },
+        "您确定导出账户余额明细明细?"
+      );
+    }
+  },
+  // AccountDetailTimer
 };
 </script>
 <style lang="scss" scoped>

+ 21 - 1
src/views/resetTeaming/modals/user-pay-form.vue

@@ -81,7 +81,12 @@
     <template>
       <el-alert title="缴费设置" :closable="false" class="alert" type="info">
       </el-alert>
+
       <el-form ref="payment" :model="payment">
+        <el-form-item label-width="160px"
+          label="系统缴费金额" v-if="!paymentType&&type=='user'&&(courseViewType==2||courseViewType==3)">
+          <el-input :disabled="true"></el-input>
+          </el-form-item>
         <el-form-item
           label-width="160px"
           label="缴费方式"
@@ -200,7 +205,7 @@ import otherform from "./other";
 import baseInfoVue from "../../teamDetail/components/baseInfo.vue";
 import merge from "webpack-merge";
 import numeral from "numeral";
-
+import { organizationCloudTeacherFeeQueryPage } from '@/api/specialSetting'
 const paymentTypeFormat = {
   0: "MUSIC_APPLY",
   1: "MUSIC_RENEW",
@@ -251,6 +256,8 @@ export default {
       viewDetail: null,
       organizationCourseUnitPriceSettingsByType: {},
       paymentPatternTypeOptions: objectToOptions(paymentPatternType),
+      cloudFee:'',
+      courseViewType:''
     };
   },
   computed: {
@@ -372,6 +379,19 @@ export default {
   },
   methods: {
     async init() {
+      let organId = this.baseInfo?.musicGroup?.organId
+       this.courseViewType = this.baseInfo?.musicGroup?.courseViewType
+      // 如果为学员缴费且是乐团缴费则显示云教练的价格
+      if(!this.paymentType&&this.type=='user'&&organId&&(courseViewType==2||courseViewType==3)){
+        try{
+          const res = await organizationCloudTeacherFeeQueryPage({organId})
+          this.courseViewType==2?this.cloudFee = res.data.rows[0].price:this.cloudFee = res.data.rows[0].plusPrice
+        }catch(e){
+          console.log(e)
+        }
+        // 获取乐团云教练费用
+        // this.cloudFee
+      }
       this.getCharges();
       if (this.rowDetail) {
         for (const key in paymentTypeFormat) {

+ 210 - 203
src/views/teamBuild/components/forecast-list.vue

@@ -1,216 +1,223 @@
 <template>
-    <div class="forecastName">
-
-        <div class="m-core">
-            <save-form
-                :inline="true"
-                @reset="onReSet"
-                @submit="search"
-                :model="searchForm"
-                ref="searchForm"
-            >
-                <el-form-item>
-                    <el-input
-                        v-model.trim="searchForm.name"
-                        clearable
-                        @keyup.enter.native="search"
-                        placeholder="学生编号/姓名/手机号"
-                    ></el-input>
-                </el-form-item>
-                <el-form-item prop="isAllowAdjust">
-                    <el-select
-                        v-model.trim="searchForm.isAllowAdjust"
-                        clearable
-                        placeholder="是否允许调剂"
-                    >
-                        <el-option label="是" :value="1"></el-option>
-                        <el-option label="否" :value="0"></el-option>
-                    </el-select>
-                </el-form-item>
-                <el-form-item>
-                    <el-select clearable v-model="searchForm.subjectId" placeholder="所选专业">
-                        <el-option v-for="item in selects.subjects" :value="item.id" :label="item.name" :key="item.id"></el-option>
-                    </el-select>
-                </el-form-item>
-                <el-form-item prop="cloudTeacherMethod">
-                    <el-select
-                        v-model.trim="searchForm.cloudTeacherMethod"
-                        clearable
-                        placeholder="系统意向"
-                    >
-                        <el-option label="团购" value="GROUP"></el-option>
-                        <el-option label="自备" value="OWNED"></el-option>
-                    </el-select>
-                </el-form-item>
-                <el-form-item>
-                    <el-button type="danger" native-type="seach">搜索</el-button>
-                    <el-button native-type="reset" type="primary">重置</el-button>
-                </el-form-item>
-            </save-form>
-            <div class="tableWrap">
-                <el-table
-                style="width: 100%"
-                :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
-                :data="tableList"
-                >
-                    <el-table-column
-                        align="center"
-                        prop="userId"
-                        label="学员编号"
-                    >
-                        <template slot-scope="scope">
-                            <copy-text>{{ scope.row.userId }}</copy-text>
-                        </template>
-                    </el-table-column>
-                    <el-table-column
-                        align="center"
-                        prop="userName"
-                        label="学员姓名"
-                    ></el-table-column>
-                    <el-table-column
-                        align="center"
-                        prop="gender"
-                        label="性别"
-                    >
-                        <template slot-scope="scope">
-                            {{ scope.row.gender ? '男' : '女' }}
-                        </template>
-                    </el-table-column>
-                    <el-table-column
-                        align="center"
-                        prop="phone"
-                        label="联系电话"
-                    >
-                        <template slot-scope="scope">
-                            <copy-text>{{ scope.row.phone }}</copy-text>
-                        </template>
-                    </el-table-column>
-                    <el-table-column
-                        align="center"
-                        label="年级班级"
-                    >
-                        <template slot-scope="scope">
-                            {{ scope.row.currentGrade }}{{ scope.row.currentClass }}
-                        </template>
-                    </el-table-column>
-                    <el-table-column
-                        align="center"
-                        prop="subjectFirstName"
-                        label="选报声部"
-                    >
-                        <template slot-scope="scope">
-                            {{ scope.row.subjectFirstName ? scope.row.subjectFirstName : null }}
-                            {{ !scope.row.subjectFirstName && scope.row.subjectFirst == 999 ? '听从老师安排' : null }},
-                            {{ scope.row.subjectSecondName ? scope.row.subjectSecondName : null }}
-                            {{ !scope.row.subjectSecondName && scope.row.subjectSecond == 999 ? '听从老师安排' : null }}
-                            <!-- {{ scope.row.subjectFirstName }},{{ scope.row.subjectSecondName }} -->
-                        </template>
-                    </el-table-column>
-                    <el-table-column
-                        align="center"
-                        prop="isAllowAdjust"
-                        label="是否服从调剂"
-                    >
-                        <template slot-scope="scope">
-                            {{ scope.row.isAllowAdjust ? '是' : '否' }}
-                        </template>
-                    </el-table-column>
-                    <el-table-column
-                        align="center"
-                        prop="realName"
-                        label="乐器准备方式"
-                    >
-                        <template slot-scope="scope">
-                            {{ scope.row.kitPurchaseMethod | instrumentType }}
-                        </template>
-                    </el-table-column>
-                    <el-table-column
-                        align="center"
-                        label="系统意向"
-                    >
-                        <template slot-scope="scope">
-                            {{ scope.row.cloudTeacherMethod | instrumentType }}
-                        </template>
-                    </el-table-column>
-                    <el-table-column
-                        align="center"
-                        prop="isRegistered"
-                        label="是否已报名"
-                    >
-                        <template slot-scope="scope">
-                            {{ scope.row.isRegistered ? '是' : '否' }}
-                        </template>
-                    </el-table-column>
-                </el-table>
-                <pagination
-                    sync
-                    :total.sync="pageInfo.total"
-                    :page.sync="pageInfo.page"
-                    :limit.sync="pageInfo.limit"
-                    :page-sizes="pageInfo.page_size"
-                    @pagination="getList"
-                    />
-            </div>
-        </div>
-
+  <div class="forecastName">
+    <div class="m-core">
+      <save-form
+        :inline="true"
+        @reset="onReSet"
+        @submit="search"
+        :model="searchForm"
+        ref="searchForm"
+      >
+        <el-form-item>
+          <el-input
+            v-model.trim="searchForm.name"
+            clearable
+            @keyup.enter.native="search"
+            placeholder="学生编号/姓名/手机号"
+          ></el-input>
+        </el-form-item>
+        <el-form-item prop="isAllowAdjust">
+          <el-select
+            v-model.trim="searchForm.isAllowAdjust"
+            clearable
+            placeholder="是否允许调剂"
+          >
+            <el-option label="是" :value="1"></el-option>
+            <el-option label="否" :value="0"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-select
+            clearable
+            v-model="searchForm.subjectId"
+            placeholder="所选专业"
+          >
+            <el-option
+              v-for="item in selects.subjects"
+              :value="item.id"
+              :label="item.name"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="kitPurchaseMethod">
+          <el-select
+            v-model.trim="searchForm.kitPurchaseMethod"
+            clearable
+            placeholder="乐器准备方式"
+          >
+            <el-option label="团购" value="GROUP"></el-option>
+            <el-option label="自备" value="OWNED"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="cloudTeacherMethod">
+          <el-select
+            v-model.trim="searchForm.cloudTeacherMethod"
+            clearable
+            placeholder="系统意向"
+          >
+            <el-option label="团购" value="GROUP"></el-option>
+            <el-option label="自备" value="OWNED"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="danger" native-type="seach">搜索</el-button>
+          <el-button native-type="reset" type="primary">重置</el-button>
+        </el-form-item>
+      </save-form>
+      <div class="tableWrap">
+        <el-table
+          style="width: 100%"
+          :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+          :data="tableList"
+        >
+          <el-table-column align="center" prop="userId" label="学员编号">
+            <template slot-scope="scope">
+              <copy-text>{{ scope.row.userId }}</copy-text>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="userName"
+            label="学员姓名"
+          ></el-table-column>
+          <el-table-column align="center" prop="gender" label="性别">
+            <template slot-scope="scope">
+              {{ scope.row.gender ? "男" : "女" }}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="phone" label="联系电话">
+            <template slot-scope="scope">
+              <copy-text>{{ scope.row.phone }}</copy-text>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="年级班级">
+            <template slot-scope="scope">
+              {{ scope.row.currentGrade }}{{ scope.row.currentClass }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="subjectFirstName"
+            label="选报声部"
+          >
+            <template slot-scope="scope">
+              {{
+                scope.row.subjectFirstName ? scope.row.subjectFirstName : null
+              }}
+              {{
+                !scope.row.subjectFirstName && scope.row.subjectFirst == 999
+                  ? "听从老师安排"
+                  : null
+              }},
+              {{
+                scope.row.subjectSecondName ? scope.row.subjectSecondName : null
+              }}
+              {{
+                !scope.row.subjectSecondName && scope.row.subjectSecond == 999
+                  ? "听从老师安排"
+                  : null
+              }}
+              <!-- {{ scope.row.subjectFirstName }},{{ scope.row.subjectSecondName }} -->
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="isAllowAdjust"
+            label="是否服从调剂"
+          >
+            <template slot-scope="scope">
+              {{ scope.row.isAllowAdjust ? "是" : "否" }}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="realName" label="乐器准备方式">
+            <template slot-scope="scope">
+              {{ scope.row.kitPurchaseMethod | instrumentType }}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="系统意向">
+            <template slot-scope="scope">
+              {{ scope.row.cloudTeacherMethod | instrumentType }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="isRegistered"
+            label="是否已报名"
+          >
+            <template slot-scope="scope">
+              {{ scope.row.isRegistered ? "是" : "否" }}
+            </template>
+          </el-table-column>
+        </el-table>
+        <pagination
+          sync
+          :total.sync="pageInfo.total"
+          :page.sync="pageInfo.page"
+          :limit.sync="pageInfo.limit"
+          :page-sizes="pageInfo.page_size"
+          @pagination="getList"
+        />
+      </div>
     </div>
+  </div>
 </template>
 
 <script>
 import pagination from "@/components/Pagination/index";
-import { queryPreApplyList } from '../api'
+import { queryPreApplyList } from "../api";
 export default {
-    name: 'forecastName',
-    components: { pagination },
-    data() {
-        const query = this.$route.query
-        return {
-            musicGroupId: query.id,
-            searchForm: {
-                name: null,
-                subjectId: null,
-                isAllowAdjust: null,
-                cloudTeacherMethod: null
-            },
-            tableList: [],
-            pageInfo: {
-                // 分页规则
-                limit: 10, // 限制显示条数
-                page: 1, // 当前页
-                total: 0, // 总条数
-                page_size: [10, 20, 40, 50], // 选择限制显示条数
-            },
-        }
+  name: "forecastName",
+  components: { pagination },
+  data() {
+    const query = this.$route.query;
+    return {
+      musicGroupId: query.id,
+      searchForm: {
+        name: null,
+        subjectId: null,
+        isAllowAdjust: null,
+        cloudTeacherMethod: null,
+        kitPurchaseMethod:null
+      },
+      tableList: [],
+      pageInfo: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50], // 选择限制显示条数
+      },
+    };
+  },
+  mounted() {
+    this.$store.dispatch("setSubjects");
+    this.getList();
+  },
+  methods: {
+    onReSet() {
+      this.$refs["searchForm"].resetFields();
+      this.search();
     },
-    mounted() {
-        this.$store.dispatch('setSubjects')
-        this.getList()
+    search() {
+      this.pageInfo.page = 1;
+      this.getList();
     },
-    methods: {
-        onReSet() {
-            this.$refs['searchForm'].resetFields()
-            this.search()
-        },
-        search() {
-            this.pageInfo.page = 1
-            this.getList()
-        },
-        async getList() {
-            try {
-                const result = await queryPreApplyList({
-                    ...this.searchForm,
-                    musicGroupId: this.musicGroupId,
-                    page: this.pageInfo.page,
-                    rows: this.pageInfo.limit
-                })
-                this.tableList = result.data.rows
-                this.pageInfo.total = result.data.total
-            } catch (error) {}
-        }
-    }
-}
+    async getList() {
+      try {
+        const result = await queryPreApplyList({
+          ...this.searchForm,
+          musicGroupId: this.musicGroupId,
+          page: this.pageInfo.page,
+          rows: this.pageInfo.limit,
+        });
+        this.tableList = result.data.rows;
+        this.pageInfo.total = result.data.total;
+      } catch (error) {}
+    },
+  },
+};
 </script>
 
 <style lang="less" scoped>
-
 </style>

+ 441 - 398
src/views/teamBuild/forecastName.vue

@@ -1,426 +1,469 @@
 <template>
-    <div class="forecastName">
-        <!-- <h2> m-container
+  <div class="forecastName">
+    <!-- <h2> m-container
           <el-page-header @back="onCancel" :content="teamName"></el-page-header>
         </h2> -->
 
-        <!-- <p style="margin-bottom: 15px; font-size: 18px; font-weight: 400">
+    <!-- <p style="margin-bottom: 15px; font-size: 18px; font-weight: 400">
           缴费截止时间:{{ '2020-12-12' | formatTimer }}
         </p> -->
 
-        <div class="btnList" >
-            <auth :auths="['forecastName/forecastLink']" v-if="isedit">
-              <el-button type="primary" @click="codeStatus = true">预报名链接</el-button>
-            </auth>
-            <!-- <auth>
+    <div class="btnList">
+      <auth :auths="['forecastName/forecastLink']" v-if="isedit">
+        <el-button type="primary" @click="codeStatus = true"
+          >预报名链接</el-button
+        >
+      </auth>
+      <!-- <auth>
               <el-button type="primary" @click="extendPaymentStatus = true">预报名时间延长</el-button>
             </auth> -->
-            <auth :auths="['musicGroup/sendParentMeetingNotice']" v-if="isedit">
-              <el-button type="primary" @click="extendPaymentStatus = true">家长会通知</el-button>
-            </auth>
-            <auth :auths="['musicGroup/finishPreApply']">
-              <el-button type="primary" @click="onPaymentGroup" v-if="isedit">乐团缴费</el-button>
-            </auth>
-            <auth :auths="['musicGroup/finishPreApply/item']" v-if="isedit">
-              <el-button type="primary" @click="onPaymentGroup(1)">特色乐团缴费</el-button>
-            </auth>
-            <auth :auths="['studentRegistration/preRegisterExport']">
-              <el-button type="primary" @click="downloadFile">导出</el-button>
-            </auth>
-            <auth :auths="['studentRegistration/queryPreApplySubjectList']">
-              <el-button type="primary" @click="subjectVisible = true">意向统计</el-button>
-            </auth>
-        </div>
-
-        <div class="m-core">
-            <save-form
-                :inline="true"
-                @reset="onReSet"
-                @submit="search"
-                :model="searchForm"
-                ref="searchForm"
-            >
-                <el-form-item prop="name">
-                    <el-input
-                        v-model.trim="searchForm.name"
-                        clearable
-                        @keyup.enter.native="search"
-                        placeholder="学生编号/姓名/手机号"
-                    ></el-input>
-                </el-form-item>
-                <el-form-item prop="isAllowAdjust">
-                    <el-select
-                        v-model.trim="searchForm.isAllowAdjust"
-                        clearable
-                        placeholder="是否允许调剂"
-                    >
-                        <el-option label="是" :value="1"></el-option>
-                        <el-option label="否" :value="0"></el-option>
-                    </el-select>
-                </el-form-item>
-                <el-form-item prop="subjectId">
-                    <el-select clearable v-model="searchForm.subjectId" placeholder="所选专业" >
-                        <el-option v-for="item in selects.subjects" :value="item.id" :label="item.name" :key="item.id"></el-option>
-                    </el-select>
-                </el-form-item>
-                <el-form-item prop="cloudTeacherMethod">
-                    <el-select
-                        v-model.trim="searchForm.cloudTeacherMethod"
-                        clearable
-                        placeholder="系统意向"
-                    >
-                        <el-option label="团购" value="GROUP"></el-option>
-                        <el-option label="自备" value="OWNED"></el-option>
-                    </el-select>
-                </el-form-item>
-                <el-form-item>
-                    <el-button type="danger" native-type="seach">搜索</el-button>
-                    <el-button native-type="reset" type="primary">重置</el-button>
-                </el-form-item>
-            </save-form>
-            <div class="tableWrap">
-                <el-table
-                style="width: 100%"
-                :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
-                :data="tableList"
-                >
-                    <el-table-column
-                        align="center"
-                        prop="userId"
-                        label="学员编号"
-                    >
-                        <template slot-scope="scope">
-                            <copy-text>{{ scope.row.userId }}</copy-text>
-                        </template>
-                    </el-table-column>
-                    <el-table-column
-                        align="center"
-                        prop="userName"
-                        label="学员姓名"
-                    ></el-table-column>
-                    <el-table-column
-                        align="center"
-                        prop="gender"
-                        label="性别"
-                    >
-                        <template slot-scope="scope">
-                            {{ scope.row.gender ? '男' : '女' }}
-                        </template>
-                    </el-table-column>
-                    <el-table-column
-                        align="center"
-                        prop="phone"
-                        label="联系电话"
-                    >
-                        <template slot-scope="scope">
-                            <copy-text>{{ scope.row.phone }}</copy-text>
-                        </template>
-                    </el-table-column>
-                    <el-table-column
-                        align="center"
-                        label="年级班级"
-                    >
-                        <template slot-scope="scope">
-                            {{ scope.row.currentGrade }}{{ scope.row.currentClass }}
-                        </template>
-                    </el-table-column>
-                    <el-table-column
-                        align="center"
-                        prop="subjectFirstName"
-                        label="选报声部1"
-                    >
-                        <template slot-scope="scope">
-                            {{ scope.row.subjectFirstName ? scope.row.subjectFirstName : null }}
-                            {{ !scope.row.subjectFirstName && scope.row.subjectFirst == 999 ? '听从老师安排' : null }}
-                        </template>
-                    </el-table-column>
-                    <el-table-column
-                        align="center"
-                        prop="subjectSecondName"
-                        label="选报声部2"
-                    >
-                        <template slot-scope="scope">
-                            {{ scope.row.subjectSecondName ? scope.row.subjectSecondName : null }}
-                            {{ !scope.row.subjectSecondName && scope.row.subjectSecond == 999 ? '听从老师安排' : null }}
-                        </template>
-                    </el-table-column>
-                    <el-table-column
-                        align="center"
-                        prop="isAllowAdjust"
-                        label="是否服从调剂"
-                    >
-                        <template slot-scope="scope">
-                            {{ scope.row.isAllowAdjust ? '是' : '否' }}
-                        </template>
-                    </el-table-column>
-                    <el-table-column
-                        align="center"
-                        label="乐器准备方式"
-                    >
-                        <template slot-scope="scope">
-                            {{ scope.row.kitPurchaseMethod |instrumentType }}
-                        </template>
-                    </el-table-column>
-                    <el-table-column
-                        align="center"
-                        label="系统意向"
-                    >
-                        <template slot-scope="scope">
-                            {{ scope.row.cloudTeacherMethod | instrumentType }}
-                        </template>
-                    </el-table-column>
-                    <el-table-column
-                        align="center"
-                        prop="courseScheduleId"
-                        width="150"
-                        label="操作"
-                         v-if="isedit"
-                    >
-                    <!-- :router="['/business/forecastName']" -->
-                        <template slot-scope="scope">
-                            <auth :auths="['visit/add/teamForecastName']" >
-                                <el-button
-
-                                type="text"
-                                @click="addVisited(scope.row)"
-                                >新增回访</el-button>
-                            </auth>
-                        </template>
-                    </el-table-column>
-                </el-table>
-                <pagination
-                    sync
-                    :total.sync="pageInfo.total"
-                    :page.sync="pageInfo.page"
-                    :limit.sync="pageInfo.limit"
-                    :page-sizes="pageInfo.page_size"
-                    @pagination="getList"
-                    />
-            </div>
-        </div>
-
-        <!-- 预报名链接 -->
-        <qr-code v-model="codeStatus" title="预报名二维码" :codeUrl="codeUrl" />
-        <!-- 发送家长会通知 -->
-        <el-dialog
-            title="发送家长会通知"
-            :visible.sync="extendPaymentStatus"
-            @close="onClose('extendForm')"
-            width="400px"
+      <auth :auths="['musicGroup/sendParentMeetingNotice']" v-if="isedit">
+        <el-button type="primary" @click="extendPaymentStatus = true"
+          >家长会通知</el-button
+        >
+      </auth>
+      <auth :auths="['musicGroup/finishPreApply']">
+        <el-button type="primary" @click="onPaymentGroup" v-if="isedit"
+          >乐团缴费</el-button
         >
-            <el-form label-width="110px" :model="extendForm" ref="extendForm" :rules="extendRule">
-                <el-form-item label="家长会时间" prop="meetingDate">
-                    <el-date-picker
-                        style="width: 100% !important;"
-                        value-format="yyyy-MM-dd HH:mm:ss"
-                        v-model.trim="extendForm.meetingDate"
-                        type="datetime"
-                        :picker-options="applyDates"
-                        placeholder="请选择家长会时间"
-                    >
-                    </el-date-picker>
-                </el-form-item>
-                <el-form-item label="家长会地址" prop="address">
-                    <el-input v-model="extendForm.address" placeholder="请输入家长会地址"></el-input>
-                </el-form-item>
-            </el-form>
-            <div slot="footer" class="dialog-footer">
-                <el-button @click="extendPaymentStatus = false">取 消</el-button>
-                <el-button
-                    type="primary"
-                    @click="onExtendPayment('extendForm')"
-                >确 定</el-button>
-            </div>
-        </el-dialog>
-        <!-- 回访记录 -->
-        <el-dialog
-            title="新增回访"
-            width="600px"
-            destroy-on-close
-            :close-on-click-modal="false"
-            :visible.sync="visitVisible"
+      </auth>
+      <auth :auths="['musicGroup/finishPreApply/item']" v-if="isedit">
+        <el-button type="primary" @click="onPaymentGroup(1)"
+          >特色乐团缴费</el-button
         >
-            <visit-model v-if="visitVisible" @close="visitVisible = false" :detail="visitDetail" @submited="getList"/>
-        </el-dialog>
+      </auth>
+      <auth :auths="['studentRegistration/preRegisterExport']">
+        <el-button type="primary" @click="downloadFile">导出</el-button>
+      </auth>
+      <auth :auths="['studentRegistration/queryPreApplySubjectList']">
+        <el-button type="primary" @click="subjectVisible = true"
+          >意向统计</el-button
+        >
+      </auth>
+    </div>
 
-        <!-- 回访记录 -->
-        <el-dialog
-            title="意向列表"
-            width="600px"
-            destroy-on-close
-            :close-on-click-modal="false"
-            :visible.sync="subjectVisible"
+    <div class="m-core">
+      <save-form
+        :inline="true"
+        @reset="onReSet"
+        @submit="search"
+        :model="searchForm"
+        ref="searchForm"
+      >
+        <el-form-item prop="name">
+          <el-input
+            v-model.trim="searchForm.name"
+            clearable
+            @keyup.enter.native="search"
+            placeholder="学生编号/姓名/手机号"
+          ></el-input>
+        </el-form-item>
+        <el-form-item prop="isAllowAdjust">
+          <el-select
+            v-model.trim="searchForm.isAllowAdjust"
+            clearable
+            placeholder="是否允许调剂"
+          >
+            <el-option label="是" :value="1"></el-option>
+            <el-option label="否" :value="0"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="subjectId">
+          <el-select
+            clearable
+            v-model="searchForm.subjectId"
+            placeholder="所选专业"
+          >
+            <el-option
+              v-for="item in selects.subjects"
+              :value="item.id"
+              :label="item.name"
+              :key="item.id"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <!-- kitPurchaseMethod -->
+        <el-form-item prop="kitPurchaseMethod">
+          <el-select
+            v-model.trim="searchForm.kitPurchaseMethod"
+            clearable
+            placeholder="乐器准备方式"
+          >
+            <el-option label="团购" value="GROUP"></el-option>
+            <el-option label="自备" value="OWNED"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="cloudTeacherMethod">
+          <el-select
+            v-model.trim="searchForm.cloudTeacherMethod"
+            clearable
+            placeholder="系统意向"
+          >
+            <el-option label="团购" value="GROUP"></el-option>
+            <el-option label="自备" value="OWNED"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="danger" native-type="seach">搜索</el-button>
+          <el-button native-type="reset" type="primary">重置</el-button>
+        </el-form-item>
+      </save-form>
+      <div class="tableWrap">
+        <el-table
+          style="width: 100%"
+          :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+          :data="tableList"
         >
-            <intention-model v-if="subjectVisible" @close="subjectVisible = false" />
-        </el-dialog>
+          <el-table-column align="center" prop="userId" label="学员编号">
+            <template slot-scope="scope">
+              <copy-text>{{ scope.row.userId }}</copy-text>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="userName"
+            label="学员姓名"
+          ></el-table-column>
+          <el-table-column align="center" prop="gender" label="性别">
+            <template slot-scope="scope">
+              {{ scope.row.gender ? "男" : "女" }}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="phone" label="联系电话">
+            <template slot-scope="scope">
+              <copy-text>{{ scope.row.phone }}</copy-text>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="年级班级">
+            <template slot-scope="scope">
+              {{ scope.row.currentGrade }}{{ scope.row.currentClass }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="subjectFirstName"
+            label="选报声部1"
+          >
+            <template slot-scope="scope">
+              {{
+                scope.row.subjectFirstName ? scope.row.subjectFirstName : null
+              }}
+              {{
+                !scope.row.subjectFirstName && scope.row.subjectFirst == 999
+                  ? "听从老师安排"
+                  : null
+              }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="subjectSecondName"
+            label="选报声部2"
+          >
+            <template slot-scope="scope">
+              {{
+                scope.row.subjectSecondName ? scope.row.subjectSecondName : null
+              }}
+              {{
+                !scope.row.subjectSecondName && scope.row.subjectSecond == 999
+                  ? "听从老师安排"
+                  : null
+              }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="isAllowAdjust"
+            label="是否服从调剂"
+          >
+            <template slot-scope="scope">
+              {{ scope.row.isAllowAdjust ? "是" : "否" }}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="乐器准备方式">
+            <template slot-scope="scope">
+              {{ scope.row.kitPurchaseMethod | instrumentType }}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="系统意向">
+            <template slot-scope="scope">
+              {{ scope.row.cloudTeacherMethod | instrumentType }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="courseScheduleId"
+            width="150"
+            label="操作"
+            v-if="isedit"
+          >
+            <!-- :router="['/business/forecastName']" -->
+            <template slot-scope="scope">
+              <auth :auths="['visit/add/teamForecastName']">
+                <el-button type="text" @click="addVisited(scope.row)"
+                  >新增回访</el-button
+                >
+              </auth>
+            </template>
+          </el-table-column>
+        </el-table>
+        <pagination
+          sync
+          :total.sync="pageInfo.total"
+          :page.sync="pageInfo.page"
+          :limit.sync="pageInfo.limit"
+          :page-sizes="pageInfo.page_size"
+          @pagination="getList"
+        />
+      </div>
     </div>
+
+    <!-- 预报名链接 -->
+    <qr-code v-model="codeStatus" title="预报名二维码" :codeUrl="codeUrl" />
+    <!-- 发送家长会通知 -->
+    <el-dialog
+      title="发送家长会通知"
+      :visible.sync="extendPaymentStatus"
+      @close="onClose('extendForm')"
+      width="400px"
+    >
+      <el-form
+        label-width="110px"
+        :model="extendForm"
+        ref="extendForm"
+        :rules="extendRule"
+      >
+        <el-form-item label="家长会时间" prop="meetingDate">
+          <el-date-picker
+            style="width: 100% !important"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            v-model.trim="extendForm.meetingDate"
+            type="datetime"
+            :picker-options="applyDates"
+            placeholder="请选择家长会时间"
+          >
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="家长会地址" prop="address">
+          <el-input
+            v-model="extendForm.address"
+            placeholder="请输入家长会地址"
+          ></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="extendPaymentStatus = false">取 消</el-button>
+        <el-button type="primary" @click="onExtendPayment('extendForm')"
+          >确 定</el-button
+        >
+      </div>
+    </el-dialog>
+    <!-- 回访记录 -->
+    <el-dialog
+      title="新增回访"
+      width="600px"
+      destroy-on-close
+      :close-on-click-modal="false"
+      :visible.sync="visitVisible"
+    >
+      <visit-model
+        v-if="visitVisible"
+        @close="visitVisible = false"
+        :detail="visitDetail"
+        @submited="getList"
+      />
+    </el-dialog>
+
+    <!-- 回访记录 -->
+    <el-dialog
+      title="意向列表"
+      width="600px"
+      destroy-on-close
+      :close-on-click-modal="false"
+      :visible.sync="subjectVisible"
+    >
+      <intention-model v-if="subjectVisible" @close="subjectVisible = false" />
+    </el-dialog>
+  </div>
 </template>
 
 <script>
 import pagination from "@/components/Pagination/index";
-import qrCode from '@/components/QrCode/index';
+import qrCode from "@/components/QrCode/index";
 import { permission } from "@/utils/directivePage";
-import { vaildStudentUrl } from '@/utils/validate'
-import { Export } from '@/utils/downLoadFile'
-import visitModel from '@/views/withdrawal-application/modals/visit'
-import intentionModel from './modals/intention'
-import { queryPreApplyList, finishPreApply, sendParentMeetingNotice } from './api'
+import { vaildStudentUrl } from "@/utils/validate";
+import { Export } from "@/utils/downLoadFile";
+import visitModel from "@/views/withdrawal-application/modals/visit";
+import intentionModel from "./modals/intention";
+import {
+  queryPreApplyList,
+  finishPreApply,
+  sendParentMeetingNotice,
+} from "./api";
 export default {
-    name: 'forecastName',
-    components: { pagination, qrCode, visitModel, intentionModel },
-      props:['isedit'],
-    data() {
-        const query = this.$route.query
-        return {
-            teamName: query.name || null,
-            codeStatus: false,
-            musicGroupId: query.id,
-            codeUrl: vaildStudentUrl() + '/project/forecastName/index.html?musicGroupId=' + query.id,
-            searchForm: {
-                name: null,
-                subjectId: null,
-                isAllowAdjust: null,
-                cloudTeacherMethod: null,
-            },
-            tableList: [],
-            pageInfo: {
-                // 分页规则
-                limit: 10, // 限制显示条数
-                page: 1, // 当前页
-                total: 0, // 总条数
-                page_size: [10, 20, 40, 50], // 选择限制显示条数
-            },
-            visitVisible: false,
-            subjectVisible: false,
-            visitDetail: null,
-            extendPaymentStatus: false,
-            extendForm: {
-                meetingDate: null,
-                address: null,
-            },
-            extendRule: {
-                meetingDate: [
-                    { required: true, message: "请选择家长会时间", trigger: "change" },
-                ],
-                address: [{ required: true, message: "请输入家长会地址", trigger: 'blur' }]
-            },
-        }
+  name: "forecastName",
+  components: { pagination, qrCode, visitModel, intentionModel },
+  props: ["isedit"],
+  data() {
+    const query = this.$route.query;
+    return {
+      teamName: query.name || null,
+      codeStatus: false,
+      musicGroupId: query.id,
+      codeUrl:
+        vaildStudentUrl() +
+        "/project/forecastName/index.html?musicGroupId=" +
+        query.id,
+      searchForm: {
+        name: null,
+        subjectId: null,
+        isAllowAdjust: null,
+        cloudTeacherMethod: null,
+        kitPurchaseMethod:null,
+      },
+      tableList: [],
+      pageInfo: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50], // 选择限制显示条数
+      },
+      visitVisible: false,
+      subjectVisible: false,
+      visitDetail: null,
+      extendPaymentStatus: false,
+      extendForm: {
+        meetingDate: null,
+        address: null,
+      },
+      extendRule: {
+        meetingDate: [
+          { required: true, message: "请选择家长会时间", trigger: "change" },
+        ],
+        address: [
+          { required: true, message: "请输入家长会地址", trigger: "blur" },
+        ],
+      },
+    };
+  },
+  mounted() {
+    this.$store.dispatch("setSubjects");
+    this.getList();
+  },
+  methods: {
+    permission,
+    onReSet() {
+      this.$refs["searchForm"].resetFields();
+      this.search();
     },
-    mounted() {
-        this.$store.dispatch('setSubjects')
-        this.getList()
+    search() {
+      this.pageInfo.page = 1;
+      this.getList();
     },
-    methods: {
-        permission,
-        onReSet() {
-            this.$refs['searchForm'].resetFields()
-            this.search()
-        },
-        search() {
-            this.pageInfo.page = 1
-            this.getList()
-        },
-        onCancel() {
-             this.$store.dispatch('delVisitedViews', this.$route)
-            this.$router.push({ path: "/teamList" });
-        },
-        downloadFile() {
-            let params = this.searchForm;
-            Export(
-                this,
-                {
-                    url: "/api-web/studentRegistration/preRegisterExport",
-                    params: {
-                        ...params,
-                        musicGroupId: this.musicGroupId
-                    },
-                    fileName: '预报名列表.xls'
-                },
-                "是否确认导出报表?"
-            );
-        },
-        async getList() {
-            try {
-                const result = await queryPreApplyList({
-                    ...this.searchForm,
-                    musicGroupId: this.musicGroupId,
-                    page: this.pageInfo.page,
-                    rows: this.pageInfo.limit
-                })
-                this.tableList = result.data.rows
-                this.pageInfo.total = result.data.total
-            } catch (error) {}
-        },
-        async onPaymentGroup(type) {
-            try {
-                this.$confirm('您是否确定开启乐团缴费?', '提示', {
-                    confirmButtonText: '确定',
-                    cancelButtonText: '取消',
-                    type: 'warning'
-                }).then(async () => {
-                    const result = await finishPreApply({
-                        isCheckStudentNum: type == 1  ? false : true,
-                        musicGroupId: this.musicGroupId
-                    })
-                    this.$store.dispatch('delVisitedViews', this.$route)
-                    this.$router.push({
-                        path: '/teamList'
-                    })
-                })
-            } catch(error) {}
-        },
-        addVisited(rows) {
-            // 新增回访
-            this.visitVisible = true
-            this.visitDetail =  {
-                musicGroupId: rows.musicGroupId,
-                overview: "",
-                purpose: "",
-                userId: rows.userId,
-                type: "",
-                visitTime: "",
-                visitType: "",
-                feedback: "",
-                realName: rows.userName,
-            }
-            // this.visitDetail = rows
-        },
-        onClose(formName) {
-            this.$refs[formName].resetFields()
-        },
-        onExtendPayment(formName) {
-            this.$refs[formName].validate(async (valid) => {
-                if(valid) {
-                    try {
-                        await this.$confirm('您是否确定发送家长会通知?', '提示', {
-                            confirmButtonText: '确定',
-                            cancelButtonText: '取消',
-                            type: 'warning'
-                        })
-                        await sendParentMeetingNotice({ ...this.extendForm, musicGroupId: this.musicGroupId })
-                        this.$message.success('家长会通知已发送')
-                        this.extendPaymentStatus = false
-                    } catch(error) {}
-                }
-            })
+    onCancel() {
+      this.$store.dispatch("delVisitedViews", this.$route);
+      this.$router.push({ path: "/teamList" });
+    },
+    downloadFile() {
+      let params = this.searchForm;
+      Export(
+        this,
+        {
+          url: "/api-web/studentRegistration/preRegisterExport",
+          params: {
+            ...params,
+            musicGroupId: this.musicGroupId,
+          },
+          fileName: "预报名列表.xls",
         },
-        applyDates() {
-            return {
-                firstDayOfWeek: 1,
-                disabledDate(time) {
-                if (end) {
-                    return new Date(end).getTime() - 86400000 >= time.getTime();
-                } else {
-                    return time.getTime() + 86400000 < Date.now();
-                    //开始时间不选时,结束时间最大值小于等于当天
-                }
-                },
-            };
+        "是否确认导出报表?"
+      );
+    },
+    async getList() {
+      try {
+        const result = await queryPreApplyList({
+          ...this.searchForm,
+          musicGroupId: this.musicGroupId,
+          page: this.pageInfo.page,
+          rows: this.pageInfo.limit,
+        });
+        this.tableList = result.data.rows;
+        this.pageInfo.total = result.data.total;
+      } catch (error) {}
+    },
+    async onPaymentGroup(type) {
+      try {
+        this.$confirm("您是否确定开启乐团缴费?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        }).then(async () => {
+          const result = await finishPreApply({
+            isCheckStudentNum: type == 1 ? false : true,
+            musicGroupId: this.musicGroupId,
+          });
+          this.$store.dispatch("delVisitedViews", this.$route);
+          this.$router.push({
+            path: "/teamList",
+          });
+        });
+      } catch (error) {}
+    },
+    addVisited(rows) {
+      // 新增回访
+      this.visitVisible = true;
+      this.visitDetail = {
+        musicGroupId: rows.musicGroupId,
+        overview: "",
+        purpose: "",
+        userId: rows.userId,
+        type: "",
+        visitTime: "",
+        visitType: "",
+        feedback: "",
+        realName: rows.userName,
+      };
+      // this.visitDetail = rows
+    },
+    onClose(formName) {
+      this.$refs[formName].resetFields();
+    },
+    onExtendPayment(formName) {
+      this.$refs[formName].validate(async (valid) => {
+        if (valid) {
+          try {
+            await this.$confirm("您是否确定发送家长会通知?", "提示", {
+              confirmButtonText: "确定",
+              cancelButtonText: "取消",
+              type: "warning",
+            });
+            await sendParentMeetingNotice({
+              ...this.extendForm,
+              musicGroupId: this.musicGroupId,
+            });
+            this.$message.success("家长会通知已发送");
+            this.extendPaymentStatus = false;
+          } catch (error) {}
+        }
+      });
+    },
+    applyDates() {
+      return {
+        firstDayOfWeek: 1,
+        disabledDate(time) {
+          if (end) {
+            return new Date(end).getTime() - 86400000 >= time.getTime();
+          } else {
+            return time.getTime() + 86400000 < Date.now();
+            //开始时间不选时,结束时间最大值小于等于当天
+          }
         },
-    }
-}
+      };
+    },
+  },
+};
 </script>
 
 <style lang="less" scoped>
-
 </style>