Procházet zdrojové kódy

Merge branch '0601Action' into test

mo před 3 roky
rodič
revize
2576be4620

+ 10 - 0
src/components/QrCode/index.vue

@@ -10,6 +10,7 @@
                 <vue-qr :text="codeUrl" style="width: 100%" :margin="0"></vue-qr>
                 <p class="code-url" v-if="codeUrl"><copy-text>{{ codeUrl }}</copy-text></p>
             </div>
+            <el-button v-if="ispreLook" type="primary" style="width:100%" @click="preLook">预 览</el-button>
         </el-dialog>
     </div>
 </template>
@@ -43,6 +44,12 @@ export default {
         },
         codeUrl: {
             type: String
+        },
+        ispreLook:{
+           type: Boolean,
+            default() {
+                return false
+            }
         }
     },
     mounted() {
@@ -57,6 +64,9 @@ export default {
             copy(url)
             this.$message.success('复制成功')
         },
+        preLook(){
+          this.$emit('preLook')
+        }
     },
     watch: {
         value(newValue) {

+ 1 - 1
src/router/index.js

@@ -154,7 +154,7 @@ export const asyncRoutes = {
   teamAudit: () => import('@/views/teamBuild/teamDraft'), // 审核
   feeAudit: () => import('@/views/teamBuild/teamDraft'), // 费用审核
   auditFailed: () => import('@/views/teamBuild/teamDraft'), // 审核失败
-  forecastName: () => import('@/views/teamBuild/forecastName'), // 预报名页面
+  forecastName: () => import('@/views/teamBuild/forecastNameList'), // 预报名页面forecastName
   createPayment: () => import('@/views/teamBuild/createPayment'), // 创建缴费页面
   // VIP管理
   vipList: () => import('@/views/vipClass/vipList'),

+ 8 - 4
src/views/resetTeaming/index.vue

@@ -84,7 +84,7 @@
           label="预报名信息"
           name="9"
           :disabled="!teamid"
-          v-if="permission('/teamForecastName')"
+          v-if="permission('/teamForecastNameIndex')"
         >
           <!--         v-if="
             team_status == 'PRE_APPLY' ||
@@ -92,7 +92,7 @@
             team_status == 'FEE_AUDIT' ||
             team_status == 'APPLY'
           " -->
-          <forecastName
+          <forecastNameList
             v-if="activeIndex == '9'"
             :isedit="team_status == 'PRE_APPLY'"
           />
@@ -221,7 +221,9 @@ import musicArchives from "@/views/resetTeaming/components/musicArchices";
 import studentList from "@/views/teamDetail/components/studentList";
 import teacherList from "@/views/teamDetail/components/teacherList";
 import courseList from "@/views/teamDetail/components/courseList";
-import forecastName from "@/views/teamBuild/forecastName";
+
+import forecastNameList from "@/views/teamBuild/forecastNameList";
+// import forecastName from "@/views/teamBuild/forecastName";
 import musicOrder from "@/views/teamDetail/teamDetailedList";
 import teamJournal from "@/views/teamBuild/components/teamJournal";
 import teamRemainTime from "@/views/teamBuild/components/teamRemainTime";
@@ -230,6 +232,7 @@ import merge from "webpack-merge";
 import { permission } from "@/utils/directivePage";
 import { getTeamBaseInfo } from "@/api/buildTeam";
 import { musicGroupType } from "@/constant";
+//    forecastName,
 export default {
   components: {
     teamBaseInfo,
@@ -241,12 +244,13 @@ export default {
     studentList,
     teacherList,
     courseList,
-    forecastName,
+
     musicOrder,
     teamJournal,
     teamRemainTime,
     teamSignupList,
     musicArchives,
+    forecastNameList
   },
   name: "resetTeaming",
   data() {

+ 30 - 1
src/views/teamBuild/api.js

@@ -94,4 +94,33 @@ export const sendParentMeetingNotice = data => request2({
   requestType: 'form'
 })
 
-// 审核拒绝
+// 启蒙课问卷列表
+export const getMusicEnlighList = data => request2({
+  url: '/api-web/musicEnlightenmentQuestionnaire/queryPage',
+  params: data,
+  method: 'get',
+  requestType: 'form'
+})
+
+export const getMusicEnlighListDetail = data => request2({
+  url: '/api-web/musicEnlightenmentQuestionnaire/musicEnlightenmentQuestionnaireStat',
+  params: data,
+  method: 'get',
+  requestType: 'form'
+})
+
+// 获取短信推送模板
+export const getSysMessageConfig = data => request2({
+  url: '/api-web/sysMessageConfig/getWithType',
+  params: data,
+  method: 'get',
+  requestType: 'form'
+})
+
+// 发送启蒙短信
+export const sendEnlighParentMeetingNotice = data => request2({
+  url: '/api-web/musicEnlightenmentQuestionnaire/sendParentMeetingNotice',
+  params: data,
+  method: 'post',
+  requestType: 'form'
+})

+ 94 - 14
src/views/teamBuild/forecastName.vue

@@ -176,14 +176,22 @@
           >
             <template slot-scope="scope">
               {{
-                scope.row.teacherRecommandSubjectId ? scope.row.teacherRecommandSubjectName : null
+                scope.row.teacherRecommandSubjectId
+                  ? scope.row.teacherRecommandSubjectName
+                  : null
               }}
               {{
-                !scope.row.teacherRecommandSubjectName && scope.row.teacherRecommandSubjectId == 999
+                !scope.row.teacherRecommandSubjectName &&
+                scope.row.teacherRecommandSubjectId == 999
                   ? "听从老师安排"
                   : null
               }}
-              {{ !scope.row.teacherRecommandSubjectId && !scope.row.teacherRecommandSubjectName ? '无' : null }}
+              {{
+                !scope.row.teacherRecommandSubjectId &&
+                !scope.row.teacherRecommandSubjectName
+                  ? "无"
+                  : null
+              }}
             </template>
           </el-table-column>
           <el-table-column
@@ -193,14 +201,21 @@
           >
             <template slot-scope="scope">
               {{
-                scope.row.selectionSubjectId ? scope.row.selectionSubjectName : null
+                scope.row.selectionSubjectId
+                  ? scope.row.selectionSubjectName
+                  : null
               }}
               {{
-                !scope.row.selectionSubjectName && scope.row.selectionSubjectId == 999
+                !scope.row.selectionSubjectName &&
+                scope.row.selectionSubjectId == 999
                   ? "听从老师安排"
                   : null
               }}
-              {{ !scope.row.selectionSubjectId && !scope.row.selectionSubjectName ? '无' : null }}
+              {{
+                !scope.row.selectionSubjectId && !scope.row.selectionSubjectName
+                  ? "无"
+                  : null
+              }}
             </template>
           </el-table-column>
           <el-table-column
@@ -217,7 +232,11 @@
                   ? "听从老师安排"
                   : null
               }}
-              {{ !scope.row.subjectFirstName && !scope.row.subjectFirst ? '无' : null }}
+              {{
+                !scope.row.subjectFirstName && !scope.row.subjectFirst
+                  ? "无"
+                  : null
+              }}
             </template>
           </el-table-column>
           <el-table-column
@@ -234,7 +253,11 @@
                   ? "听从老师安排"
                   : null
               }}
-              {{ !scope.row.subjectSecondName && !scope.row.subjectSecond ? '无' : null }}
+              {{
+                !scope.row.subjectSecondName && !scope.row.subjectSecond
+                  ? "无"
+                  : null
+              }}
             </template>
           </el-table-column>
           <el-table-column
@@ -285,9 +308,19 @@
     </div>
 
     <!-- 预报名链接 -->
-    <qr-code v-model="codeStatus" title="预报名链接" :codeUrl="codeUrl" />
+    <qr-code
+      v-model="codeStatus"
+      title="预报名链接"
+      :codeUrl="codeUrl"
+      @preLook="preLook"
+      :ispreLook="true"
+    />
     <!-- 预报名详情 -->
-     <qr-code v-model="codedetailStatus" title="预报名详情" :codeUrl="detailUrl" />
+    <qr-code
+      v-model="codedetailStatus"
+      title="预报名详情"
+      :codeUrl="detailUrl"
+    />
     <!-- 发送家长会通知 -->
     <el-dialog
       title="发送家长会通知"
@@ -318,6 +351,10 @@
             placeholder="请输入家长会地址"
           ></el-input>
         </el-form-item>
+        <el-form-item label="短信内容">
+          <p class="msgP" v-html="sysMsgStr"></p>
+        </el-form-item>
+        <p style="color: red">确认后该短信将发送给预报名的学员</p>
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button @click="extendPaymentStatus = false">取 消</el-button>
@@ -352,6 +389,21 @@
     >
       <intention-model v-if="subjectVisible" @close="subjectVisible = false" />
     </el-dialog>
+
+    <el-dialog
+      title="预览"
+      width="500px"
+      :close-on-click-modal="false"
+      append-to-body
+      :visible.sync="preLookVisible"
+    >
+      <iframe
+        width="100%"
+        height="600px"
+        :src="codeUrl + '&look=true'"
+        frameborder="0"
+      ></iframe>
+    </el-dialog>
   </div>
 </template>
 
@@ -359,7 +411,7 @@
 import pagination from "@/components/Pagination/index";
 import qrCode from "@/components/QrCode/index";
 import { permission } from "@/utils/directivePage";
-import { vaildStudentUrl,vaildTeachingUrl } from "@/utils/validate";
+import { vaildStudentUrl, vaildTeachingUrl } from "@/utils/validate";
 import { Export } from "@/utils/downLoadFile";
 import visitModel from "@/views/withdrawal-application/modals/visit";
 import intentionModel from "./modals/intention";
@@ -367,6 +419,7 @@ import {
   queryPreApplyList,
   finishPreApply,
   sendParentMeetingNotice,
+  getSysMessageConfig
 } from "./api";
 export default {
   name: "forecastName",
@@ -375,7 +428,7 @@ export default {
   data() {
     const query = this.$route.query;
     return {
-      codedetailStatus:false,
+      codedetailStatus: false,
       teamName: query.name || null,
       codeStatus: false,
       musicGroupId: query.id,
@@ -383,7 +436,8 @@ export default {
         vaildStudentUrl() +
         "/project/forecastName/index.html?musicGroupId=" +
         query.id,
-      detailUrl:vaildTeachingUrl()+'/#/preApplySubject?musicGroupId='+query.id,
+      detailUrl:
+        vaildTeachingUrl() + "/#/preApplySubject?musicGroupId=" + query.id,
       searchForm: {
         name: null,
         subjectId: null,
@@ -417,11 +471,19 @@ export default {
           { required: true, message: "请输入家长会地址", trigger: "blur" },
         ],
       },
+      preLookVisible: false,
+      sysMsg:'',
     };
   },
-  mounted() {
+async mounted() {
     this.$store.dispatch("setSubjects");
+         // 获取短信推送模板
+      const rus = await getSysMessageConfig({
+        type: "STUDENT_SMS_IM_MUSIC_GROUP_PARENT_MEETING_NOTICE",
+      });
+      this.sysMsg = rus.data.content;
     this.getList();
+
   },
   methods: {
     permission,
@@ -533,6 +595,24 @@ export default {
         },
       };
     },
+    preLook(val) {
+      this.preLookVisible = true;
+    },
+  },
+  computed: {
+    sysMsgStr() {
+      let strArr = this.sysMsg.split("{}");
+      if (strArr.length == 3) {
+        return `${strArr[0]}<span style="color:red">"${
+          this.extendForm.meetingDate ? this.extendForm.meetingDate : "--"
+        }"</span>${strArr[1]}<span style="color:red">"${
+          this.extendForm.address ? this.extendForm.address : "--"
+        }"</span>
+        ${strArr[2]}`;
+      } else {
+        return ``;
+      }
+    },
   },
 };
 </script>

+ 30 - 0
src/views/teamBuild/forecastNameList.vue

@@ -0,0 +1,30 @@
+<template>
+  <div>
+    <el-tabs v-model="activeName" >
+      <el-tab-pane  label="启蒙课问卷" name="first"  v-if="permission('/initiationList')"><initiationList v-if="activeName=='first'" :isedit="team_status == 'PRE_APPLY'"/></el-tab-pane>
+      <el-tab-pane label="预报名信息" name="second"  v-if="permission('/teamForecastName')"><forecastName v-if="activeName=='second'" :isedit="team_status == 'PRE_APPLY'"/></el-tab-pane>
+    </el-tabs>
+  </div>
+</template>
+<script>
+import forecastName from './forecastName'
+import initiationList from './initiationList'
+import { permission } from "@/utils/directivePage";
+export default {
+  components:{forecastName,initiationList},
+  data() {
+    return {
+      activeName:'first',
+      team_status :this.$route.query.team_status
+    };
+  },
+  mounted() {},
+  methods: {
+        permission(str) {
+      return permission(str);
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+</style>

+ 517 - 0
src/views/teamBuild/initiationList.vue

@@ -0,0 +1,517 @@
+<template>
+  <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">
+          缴费截止时间:{{ '2020-12-12' | formatTimer }}
+        </p> -->
+
+    <div class="btnList">
+      <!-- <el-button type="primary" @click="codedetailStatus = true" v-if="isedit"
+        >预报名详情</el-button
+      > -->
+
+      <auth :auths="['musicEnlightenmentQuestionnaire/sendParentMeetingNotice']" v-if="isedit">
+        <el-button type="primary" @click="extendPaymentStatus = true"
+          >启蒙课家长会通知</el-button
+        >
+      </auth>
+      <auth :auths="['initiationList/forecastLink']" v-if="isedit">
+        <el-button type="primary" @click="codeStatus = true"
+          >启蒙课问卷</el-button
+        >
+      </auth>
+      <auth :auths="['export/musicEnlightenmentQuestionnaires']">
+        <el-button type="primary" @click="downloadFile"
+          >启蒙课问卷导出</el-button
+        >
+      </auth>
+      <auth :auths="['musicEnlightenmentQuestionnaire/musicEnlightenmentQuestionnaireStat']">
+        <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="search">
+          <el-input
+            v-model.trim="searchForm.search"
+            clearable
+            @keyup.enter.native="search"
+            placeholder="学生编号/姓名/手机号"
+          ></el-input>
+        </el-form-item>
+        <el-form-item prop="currentGradeNum">
+          <!-- <el-input
+          v-model.trim="searchForm.currentGrade"
+          clearable
+          placeholder="学员年级"
+        ></el-input> -->
+          <el-select
+            v-model.trim="searchForm.currentGradeNum"
+            filterable
+            clearable
+            placeholder="请选择年级"
+          >
+            <el-option
+              v-for="(item, index) in gradeList"
+              :key="index"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="teacherRecommandSubjectId">
+          <el-select
+            clearable
+            v-model="searchForm.teacherRecommandSubjectId"
+            filterable
+            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="musicalInstrumentsLearning">
+          <el-select
+            clearable
+            v-model="searchForm.musicalInstrumentsLearning"
+            placeholder="是否正在学习某乐器"
+          >
+            <el-option value="true" label="是"></el-option>
+            <el-option value="false" label="否"></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="teacherRecommandSubjectId"
+            label="老师推荐声部"
+          >
+            <template slot-scope="scope">
+              <div>
+                {{
+                  scope.row.teacherRecommandSubjectId
+                    ? scope.row.subjectName
+                    : "--"
+                }}
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="musicalInstrumentsLearning"
+            label="是否在学习某件乐器"
+          >
+            <template slot-scope="scope">
+              <div>
+                {{ scope.row.musicalInstrumentsLearning ? "是" : "否" }}
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column align="center" prop="userName" label="目前所学乐器">
+            <template slot-scope="scope">
+              <div>
+                {{
+                  scope.row.musicalInstrumentsLearning
+                    ? scope.row.musicalInstrumentsName
+                    : "否"
+                }}
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="userName"
+            label="报名参加管乐团家长会了解相关情况"
+          >
+            <template slot-scope="scope">
+              <div>
+                {{ scope.row.joinParentMeeting ? "是" : "否" }}
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
+            prop="remark"
+            label="备注"
+            width="200px"
+          >
+            <template slot-scope="scope">
+              <overflow-text width="200px" :text="scope.row.remark" />
+            </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"
+      @preLook="preLook"
+      :ispreLook="true"
+    />
+    <!-- 预报名详情 -->
+    <qr-code
+      v-model="codedetailStatus"
+      title="预报名详情"
+      :codeUrl="detailUrl"
+    />
+    <!-- 发送家长会通知 -->
+    <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-item label="短信内容" >
+          <p class="msgP" v-html="sysMsgStr"></p> </el-form-item>
+        <p style="color:red">确认后该短信将发送给已填写启蒙课问卷学员</p>
+      </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="subjectVisible"
+    >
+      <intention-model v-if="subjectVisible" @close="subjectVisible = false" />
+    </el-dialog>
+    <el-dialog
+      title="预览"
+      width="500px"
+      :close-on-click-modal="false"
+      append-to-body
+      :visible.sync="preLookVisible"
+    >
+      <iframe
+        width="100%"
+        height="600px"
+        :src="codeUrl + '&look=true'"
+        frameborder="0"
+      ></iframe>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import pagination from "@/components/Pagination/index";
+import qrCode from "@/components/QrCode/index";
+import { permission } from "@/utils/directivePage";
+import { vaildStudentUrl, vaildTeachingUrl } from "@/utils/validate";
+import { Export } from "@/utils/downLoadFile";
+import visitModel from "@/views/withdrawal-application/modals/visit";
+import intentionModel from "./modals/initiationStatistics";
+import { getMusicGroupGradeList } from "@/api/buildTeam";
+import {
+  getSysMessageConfig,
+  finishPreApply,
+  sendEnlighParentMeetingNotice,
+  getMusicEnlighList,
+} from "./api";
+export default {
+  name: "forecastName",
+  components: { pagination, qrCode, visitModel, intentionModel },
+  props: ["isedit"],
+  data() {
+    const query = this.$route.query;
+    return {
+      codedetailStatus: false,
+      teamName: query.name || null,
+      codeStatus: false,
+      musicGroupId: query.id,
+      codeUrl:
+        vaildStudentUrl() +
+        "/project/forecastName/initiation.html?musicGroupId=" +
+        query.id,
+      detailUrl:
+        vaildTeachingUrl() + "/#/preApplySubject?musicGroupId=" + query.id,
+      searchForm: {
+        search: null,
+        currentGradeNum: null,
+        subjectId: null,
+        teacherRecommandSubjectId: null,
+        selectionSubjectId: null,
+        musicalInstrumentsLearning: 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" },
+        ],
+      },
+      gradeList: [],
+      preLookVisible: false,
+      sysMsg: "",
+    };
+  },
+  mounted() {
+    this.$store.dispatch("setSubjects");
+    this.init();
+  },
+  methods: {
+    async init() {
+      this.teamid = this.$route.query.id;
+      getMusicGroupGradeList({ musicGroupId: this.teamid }).then((res) => {
+        let result = res.data;
+        this.gradeListObj = res.data;
+        if (res.code == 200 && result) {
+          this.gradeList = [];
+          for (let i in result) {
+            this.gradeList.push({
+              value: i,
+              label: result[i],
+            });
+          }
+        }
+      });
+      // 获取短信推送模板
+      const rus = await getSysMessageConfig({
+        type: "STUDENT_SMS_IM_MUSIC_GROUP_PARENT_MEETING_NOTICE",
+      });
+      this.sysMsg = rus.data.content;
+      this.getList();
+    },
+    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/export/musicEnlightenmentQuestionnaires",
+          params: {
+            ...params,
+            musicGroupId: this.musicGroupId,
+          },
+          fileName: "启蒙课问卷.xls",
+        },
+        "是否确认导出报表?"
+      );
+    },
+    async getList() {
+      try {
+        const result = await getMusicEnlighList({
+          ...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 sendEnlighParentMeetingNotice({
+              ...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();
+            //开始时间不选时,结束时间最大值小于等于当天
+          }
+        },
+      };
+    },
+    preLook(val) {
+      this.preLookVisible = true;
+    },
+  },
+  computed: {
+    sysMsgStr() {
+      let strArr = this.sysMsg.split("{}");
+      if (strArr.length == 3) {
+        return `${strArr[0]}<span style="color:red">"${
+          this.extendForm.meetingDate ? this.extendForm.meetingDate : "--"
+        }"</span>${strArr[1]}<span style="color:red">"${this.extendForm.address ? this.extendForm.address:"--"}"</span>
+        ${strArr[2]}`;
+      } else {
+        return ``;
+      }
+    },
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.msgP {
+  line-height: 24px;
+  margin-top: 10px;
+}
+</style>

+ 55 - 0
src/views/teamBuild/modals/initiationStatistics.vue

@@ -0,0 +1,55 @@
+<template>
+  <div>
+      <!-- <el-alert title="其它=听从老师安排" type="info" effect="dark" :closable="false"></el-alert> -->
+      <el-table
+        style="width: 100%"
+        max-height="300px"
+        :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+        :data="list"
+      >
+        <el-table-column prop="subjectName" align="center" label="老师推荐声部">
+        </el-table-column>
+
+        <el-table-column prop="userNum" align="center" label="人数">
+            <template slot-scope="scope">
+                {{ scope.row.userNum }}人
+            </template>
+        </el-table-column>
+           <el-table-column prop="learningUserNum" align="center" label="在学乐器人数">
+          <template slot-scope="scope">
+            {{ scope.row.learningUserNum }}人
+          </template>
+        </el-table-column>
+      </el-table>
+  </div>
+</template>
+<script>
+import { getMusicEnlighListDetail } from '../api'
+export default {
+    data() {
+        let query = this.$route.query
+        return {
+            list: [],
+            musicGroupId: query.id
+        }
+    },
+    mounted() {
+        this.FetchList()
+    },
+    methods: {
+        async FetchList() {
+            const res = await getMusicEnlighListDetail({
+                musicGroupId: this.musicGroupId,
+            })
+            this.list = res.data
+        },
+    }
+}
+</script>
+<style lang="less" scoped>
+  .dialog-footer{
+    margin-top: 20px;
+    display: block;
+    text-align: right;
+  }
+</style>