Просмотр исходного кода

Merge branch 'master' of http://git.dayaedu.com/molingzhide/dy-admin-manager

lex-xin 5 лет назад
Родитель
Сommit
6fdb12c215

+ 65 - 1
src/api/buildTeam.js

@@ -268,7 +268,7 @@ export function findSound (data) {
 
 export function findMusicGroupClassTeacher (data) {
   return request({
-    url: '/web-server/teacher/findMusicGoupTeachers',
+    url: '/web-server/teacher/findMusicGroupTeachers',
     method: 'get',
     params: data
   })
@@ -344,4 +344,68 @@ export function getTeamTeacherList (data) {
     method: 'get',
     params: data
   })
+}
+
+// 获取乐团报名信息
+export function getintoClass (data) {
+  return request({
+    url: `/web-server/subject/findSubApplyDetail`,
+    method: 'get',
+    params: data
+  })
+}
+
+// 根据乐团id获取老师上课记录
+export function getTeacheerRecord (data) {
+  return request({
+    url: `/web-server/teacher/queryTeacherAttendance`,
+    method: 'get',
+    params: data
+  })
+}
+
+// 根据乐团id获取学员列表
+export function getTeamStudentList (data) {
+  return request({
+    url: `/web-server/studentManage/queryMusicGroupStudent`,
+    method: 'get',
+    params: data
+  })
+}
+
+// 根据乐团id获取学生列表汇总数据
+export function getTeamStudentInfo (data) {
+  return request({
+    url: `/web-server/studentManage/musicGroupStudentsSum`,
+    method: 'get',
+    params: data
+  })
+}
+
+// 学生退团
+export function StudentQuit (data) {
+  return request({
+    url: `/web-server/musicGroupQuit/quitMusicGroup`,
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}
+
+
+// 班级详情列表
+export function getClassList (data) {
+  return request({
+    url: `/web-server/classGroup/queryMusicGroupClassGroup`,
+    method: 'get',
+    params: data
+  })
+}
+
+// 获取乐团课表详情
+export function getCourseList (data) {
+  return request({
+    url: `/web-server/classGroup/queryMusicGroupCourseSchedule`,
+    method: 'get',
+    params: data
+  })
 }

+ 98 - 60
src/api/studentManager.js

@@ -3,92 +3,130 @@ import request from '@/utils/request'
 import qs from 'qs'
 
 // 获取学生列表
-export function queryStudentList(data) {
-    return request({
-        url: '/web-server/studentManage/queryStudentList',
-        method: 'get',
-        params: data
-    })
+export function queryStudentList (data) {
+  return request({
+    url: '/web-server/studentManage/queryStudentList',
+    method: 'get',
+    params: data
+  })
 }
 
 // 根据学生ID获取学生基本报名信息
-export function findStudentBaseInfo(data) {
-    return request({
-        url: '/web-server/studentManage/findStudentBaseInfo',
-        method: 'get',
-        params: data
-    })
+export function findStudentBaseInfo (data) {
+  return request({
+    url: '/web-server/studentManage/findStudentBaseInfo',
+    method: 'get',
+    params: data
+  })
 }
 
 // 根据学生ID获取其所在的乐团
-export function findStudentMusicGroups(data) {
-    return request({
-        url: `/web-server/studentManage/findStudentMusicGroups`,
-        method: 'get',
-        params: data
-    })
+export function findStudentMusicGroups (data) {
+  return request({
+    url: `/web-server/studentManage/findStudentMusicGroups`,
+    method: 'get',
+    params: data
+  })
 }
 
 // 根据乐团获取排课列表
-export function findStudentCourses(data) {
-    return request({
-        url: `/web-server/studentManage/findStudentCourses`,
-        method: 'get',
-        params: data
-    })
+export function findStudentCourses (data) {
+  return request({
+    url: `/web-server/studentManage/findStudentCourses`,
+    method: 'get',
+    params: data
+  })
 }
 
 // 获取学生vip课
-export function findStudentVipGroups(data) {
-    return request({
-        url: `/web-server/studentManage/findStudentVipGroups`,
-        method: 'get',
-        params: data
-    })
+export function findStudentVipGroups (data) {
+  return request({
+    url: `/web-server/studentManage/findStudentVipGroups`,
+    method: 'get',
+    params: data
+  })
 }
 
 // 获取学生签到列表
-export function findStudentAttendances(data) {
-    return request({
-        url: `/web-server/studentManage/findStudentAttendances`,
-        method: 'get',
-        params: data
-    })
+export function findStudentAttendances (data) {
+  return request({
+    url: `/web-server/studentManage/findStudentAttendances`,
+    method: 'get',
+    params: data
+  })
 }
 
 // 提现分页查询
-export function studentWithdraw(data) {
-    return request({
-        url: `/web-server/studentWithdraw/queryPage`,
-        method: 'get',
-        params: data
-    })
+export function studentWithdraw (data) {
+  return request({
+    url: `/web-server/studentWithdraw/queryPage`,
+    method: 'get',
+    params: data
+  })
 }
 
 // 获取学员扣费记录列表
-export function queryStudentPayment(data) {
-    return request({
-        url: `/web-server/studentManage/queryStudentPayment`,
-        method: 'get',
-        params: data
-    })
+export function queryStudentPayment (data) {
+  return request({
+    url: `/web-server/studentManage/queryStudentPayment`,
+    method: 'get',
+    params: data
+  })
 }
 
 // 获取学员订单列表
-export function studentPaymentOrderList(data) {
-    return request({
-        url: `/web-server/studentPaymentOrder/queryOrderPage`,
-        method: 'get',
-        params: data
-    })
+export function studentPaymentOrderList (data) {
+  return request({
+    url: `/web-server/studentPaymentOrder/queryOrderPage`,
+    method: 'get',
+    params: data
+  })
 }
 
 // 获取用户默认账户基本信息
-export function getUserCashAccountBaseInfo(data) {
-    return request({
-        url: `/web-server/studentManage/getUserCashAccountBaseInfo`,
-        method: 'get',
-        params: data
-    })
+export function getUserCashAccountBaseInfo (data) {
+  return request({
+    url: `/web-server/studentManage/getUserCashAccountBaseInfo`,
+    method: 'get',
+    params: data
+  })
+}
+
+// 修改学生报名专业
+export function resetStudentSubject (data) {
+  return request({
+    url: `/web-server/studentRegistration/batchUpdateSubject`,
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}
+
+//学生报名缴费金额详情
+export function getStudentFeeDetail (data) {
+  return request({
+    url: `/web-server/studentRegistration/queryFeeDetail`,
+    method: 'get',
+    params: data
+  })
+}
+
+// 根据学生id获取
+
+// 获取学生点名总览
+export function getStudentRecord (data) {
+  return request({
+    url: `/web-server/studentManage/queryMusicGroupStudentsSign`,
+    method: 'get',
+    params: data
+  })
+}
+
+// 添加学员
+export function addStudent (data) {
+  return request({
+    url: `/web-server/studentRegistration/insertStudent`,
+    method: 'POST',
+    data: qs.stringify(data)
+  })
 }
 

+ 87 - 86
src/api/teacherManager.js

@@ -3,128 +3,129 @@ import request from '@/utils/request'
 import qs from 'qs'
 
 // 分页查询教师列表
-export function teacherQueryPage(data) {
-    return request({
-        url: '/teacher-server/teacher/queryPage',
-        method: 'get',
-        params: data
-    })
+export function teacherQueryPage (data) {
+  return request({
+    url: '/teacher-server/teacher/queryPage',
+    method: 'get',
+    params: data
+  })
 }
 
 // 根据教师编号查询教师基本信息
-export function teacherGet(data) {
-    return request({
-        url: '/teacher-server/teacher/get',
-        method: 'get',
-        params: data
-    })
+export function teacherGet (data) {
+  return request({
+    url: '/teacher-server/teacher/get',
+    method: 'get',
+    params: data
+  })
 }
 
 // 获取老师乐团课程信息列表
-export function getTeacherMusicClass(data) {
-    return request({
-        url: '/teacher-server/teacher/getTeacherMusicClass',
-        method: 'get',
-        params: data
-    })
+export function getTeacherMusicClass (data) {
+  return request({
+    url: '/teacher-server/teacher/getTeacherMusicClass',
+    method: 'get',
+    params: data
+  })
 }
 
 // 获取老师VIP课程信息列表
-export function getTeacherVipClass(data) {
-    return request({
-        url: '/teacher-server/teacher/getTeacherVipClass',
-        method: 'get',
-        params: data
-    })
+export function getTeacherVipClass (data) {
+  return request({
+    url: '/teacher-server/teacher/getTeacherVipClass',
+    method: 'get',
+    params: data
+  })
 }
 
 // 获取教师试听课安排列表
-export function findTeacherDemoGroups(data) {
-    return request({
-        url: '/teacher-server/demoGroup/findTeacherDemoGroups',
-        method: 'get',
-        params: data
-    })
+export function findTeacherDemoGroups (data) {
+  return request({
+    url: '/teacher-server/demoGroup/findTeacherDemoGroups',
+    method: 'get',
+    params: data
+  })
 }
 
 // 查询教师签到记录
-export function getTeacherPersonalAttendances(data) {
-    return request({
-        url: '/teacher-server/teacherAttendance/getTeacherPersonalAttendances',
-        method: 'get',
-        params: data
-    })
+export function getTeacherPersonalAttendances (data) {
+  return request({
+    url: '/teacher-server/teacherAttendance/getTeacherPersonalAttendances',
+    method: 'get',
+    params: data
+  })
 }
 
 // 获取教师上课结算列表
-export function teacherQueryCloses(data) {
-    return request({
-        url: '/teacher-server/teacher/queryCloses',
-        method: 'get',
-        params: data
-    })
+export function teacherQueryCloses (data) {
+  return request({
+    url: '/teacher-server/teacher/queryCloses',
+    method: 'get',
+    params: data
+  })
 }
 
 // 分页查询教师请假记录列表
-export function teacherLeaveRecordQuery(data) {
-    return request({
-        url: '/web-server/teacherLeaveRecord/queryPage',
-        method: 'get',
-        params: data
-    })
+export function teacherLeaveRecordQuery (data) {
+  return request({
+    url: '/web-server/teacherLeaveRecord/queryPage',
+    method: 'get',
+    params: data
+  })
 }
 
 // 获取教师上课课酬未结算总额
-export function sumTeacherNoPay(data) {
-    return request({
-        url: '/teacher-server/teacher/sumTeacherNoPay',
-        method: 'get',
-        params: data
-    })
+export function sumTeacherNoPay (data) {
+  return request({
+    url: '/teacher-server/teacher/sumTeacherNoPay',
+    method: 'get',
+    params: data
+  })
 }
 
 // 获取教师的vip课酬列表
-export function vipGroupSalaryList(data) {
-    return request({
-        url: '/web-server/teacherDefaultVipGroupSalary/queryPageByTeacherId',
-        method: 'get',
-        params: data
-    })
+export function vipGroupSalaryList (data) {
+  return request({
+    url: '/web-server/teacherDefaultVipGroupSalary/queryPageByTeacherId',
+    method: 'get',
+    params: data
+  })
 }
 
 // 修改教师vip课酬
-export function vipGroupSalarySet(data) {
-    return request({
-        url: '/web-server/teacherDefaultVipGroupSalary/upSet',
-        method: 'post',
-        data: data
-    })
+export function vipGroupSalarySet (data) {
+  return request({
+    url: '/web-server/teacherDefaultVipGroupSalary/upSet',
+    method: 'post',
+    data: data
+  })
 }
 
 // 分页查询教师薪酬
-export function teacherSalaryList(data) {
-    return request({
-        url: '/web-server/teacherDefaultMusicGroupSalary/queryPage',
-        method: 'get',
-        params: data
-    })
+export function teacherSalaryList (data) {
+  return request({
+    url: '/web-server/teacherDefaultMusicGroupSalary/queryPage',
+    method: 'get',
+    params: data
+  })
 }
 
 // 批量新增、修改、删除教师乐团课薪酬
-export function teacherSalaryBatchUpset(data) {
-    return request({
-        url: '/web-server/teacherDefaultMusicGroupSalary/batchUpset',
-        method: 'post',
-        data: data
-    })
+export function teacherSalaryBatchUpset (data) {
+  return request({
+    url: '/web-server/teacherDefaultMusicGroupSalary/batchUpset',
+    method: 'post',
+    data: data
+  })
 }
 
 // 课酬调整
-export function updateTeacherCoursesSalary(data) {
-    return request({
-        url: '/web-server/courseSchedule/updateTeacherCoursesSalary',
-        // url: '/api-student/course/updateTeacherCoursesSalary',
-        method: 'post',
-        data: qs.stringify(data)
-    })
-}
+export function updateTeacherCoursesSalary (data) {
+  return request({
+    url: '/web-server/courseSchedule/updateTeacherCoursesSalary',
+    // url: '/api-student/course/updateTeacherCoursesSalary',
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}
+

+ 15 - 3
src/router/index.js

@@ -38,8 +38,8 @@ export const constantRoutes = [
   },
   {
     path: '/',
-    redirect:  {
-        path: '/main/main'
+    redirect: {
+      path: '/main/main'
     }
   },
   {
@@ -106,6 +106,7 @@ export const asyncRoutes = {
   musicalManager: () => import('@/views/categroyManager/specialSetup/musicalManager'),
   // 系统管理
   specialSetup: () => import('@/views/categroyManager/specialSetup/index'),
+  // 类型管理
   typesManager: () => import('@/views/categroyManager/specialSetup/typesManager'),
   tryClass: () => import('@/views/categroyManager/specialSetup/tryClass'),
   activityManager: () => import('@/views/categroyManager/specialSetup/activityManager'),
@@ -134,7 +135,18 @@ export const asyncRoutes = {
   vipParameterManager: () => import('@/views/categroyManager/generalSettings/vipParameterManager'),
   globalConfig: () => import('@/views/categroyManager/globalConfig'),
   // 侧边栏管理
-  setSilder: () => import('@/views/setSilder/addSilder'), 
+  setSilder: () => import('@/views/setSilder/addSilder'),
+  // 乐团老师点名记录
+  teamTeacherRecord: () => import('@/views/teamDetail/components/teamTeacherRecord'),
+  // 乐团筹备中 报名中
+  signupList: () => import('@/views/teamBuild/signupList'),
+  // 乐团筹备设置 (班级 老师 小课)
+  teamSeting: () => import('@/views/teamBuild/teamSeting/'),
+  //乐团详情
+  teamDetails: () => import('@/views/teamDetail'),
+  // 学生点名总汇
+  studentSignin: () => import('@/views/teamDetail/components/studentSignin')
+
 
 }
 export default router

+ 78 - 1
src/utils/vueFilter.js

@@ -144,7 +144,8 @@ Vue.filter('jobNature', (value) => {
 Vue.filter('attendanceType', value => {
   let template = {
     0: "异常签到",
-    1: "正常签到"
+    1: "正常签到",
+    3: "未签到"
   }
   return template[value]
 })
@@ -198,3 +199,79 @@ Vue.filter('returnStatus', value => {
   }
   return template[value]
 })
+
+// 性别
+Vue.filter('sex', value => {
+  let template = ['女', '男']
+  return template[value]
+})
+
+// 服从调剂 isAllowAdjust
+Vue.filter('isAllowAdjust', value => {
+  let template = ['不允许调剂', '允许调剂']
+  return template[value]
+})
+// 学员缴费状态 paymentStatus
+Vue.filter('paymentStatus', value => {
+  let template = ['未缴费', '已缴费']
+  return template[value]
+})
+
+// 乐团状态
+Vue.filter('teamStatus', value => {
+  let template = {
+    APPLY: "报名中",
+    PAY: "缴费中",
+    PREPARE: "筹备中",
+    PROGRESS: "进行中",
+    CANCELED: '取消',
+    PAUSE: '暂停'
+  }
+  return template[value]
+})
+
+// 学生点名
+Vue.filter('studentRecord', value => {
+  let template = {
+    NORMAL: "正常",
+    TRUANT: "旷课",
+    LEAVE: "请假",
+    DROP_OUT: "退学"
+  }
+  return template[value]
+})
+// 是否
+Vue.filter('yesOrNo', value => {
+  let template = ['否', '是']
+  return template[value]
+})
+
+// 学员缴费状态
+Vue.filter('studentPay', value => {
+  let template = {
+    PAID_COMPLETED: "完成缴费",
+    NON_PAYMENT: "未缴费",
+    PROCESSING: "缴费中",
+  }
+  return template[value]
+})
+
+// 学员点名详情
+Vue.filter('studentSign', value => {
+  let template = {
+    NORMAL: "正常",
+    TRUANT: "旷课",
+    LEAVE: "请假",
+    DROP_OUT: '退学'
+  }
+  return template[value]
+})
+
+// 班级类型
+Vue.filter('classType', value => {
+  let template = {
+    NORMAL: "普通班级",
+    MIX: '合奏班'
+  }
+  return template[value]
+})

+ 4 - 4
src/views/buildVip/index.vue

@@ -656,8 +656,8 @@ export default {
           this.timeTable.push({
             'classDate': dataStr + ' 00:00:00',
             'actualTeacherId': this.leftForm.teacher,
-            'startClassTime': onlineList[i].date.startTime,
-            "endClassTime": onlineList[i].date.endTime,
+            'startClassTimeStr': onlineList[i].date.startTime,
+            "endClassTimeStr": onlineList[i].date.endTime,
             "teachMode": 'ONLINE'
           })
           online--;
@@ -677,8 +677,8 @@ export default {
           this.timeTable.push({
             'classDate': dataStr + ' 00:00:00',
             'actualTeacherId': this.leftForm.teacher,
-            'startClassTime': offlineList[i].date.startTime,
-            "endClassTime": offlineList[i].date.endTime,
+            'startClassTimeStr': offlineList[i].date.startTime,
+            "endClassTimeStr": offlineList[i].date.endTime,
             "teachMode": 'OFFNLINE'
           })
           offline--;

+ 12 - 1
src/views/teamBuild/components/teamBaseInfo.vue

@@ -123,6 +123,16 @@
 
           </el-select>
         </el-form-item>
+        <el-form-item label="课酬结算标准"
+                      :rules="[{ required: true, message: '请选择课酬结算标准'},]"
+                      prop="salary">
+          <el-select v-model="topFrom.salary">
+            <el-option label="课时默认结算"
+                       value="TEACHER_DEFAULT"></el-option>
+            <el-option label="课时梯度结算"
+                       value="GRADIENT_SALARY"></el-option>
+          </el-select>
+        </el-form-item>
       </el-form>
       <div class="checkList">
         <div class="head noMargin">课程组成形态:</div>
@@ -316,7 +326,8 @@ export default {
         boss: '', // 运营主管
         time: '', // 报名截止时间
         startClass: '', // 招生年级起始
-        address: '' // 教学地点
+        address: '', // 教学地点
+        salary: '' // 收费模式
       },
       checkList: {
         soundInfo: { // 声部

+ 1 - 0
src/views/teamBuild/components/teamSoundMoney.vue

@@ -417,6 +417,7 @@ export default {
       this.payfor.student.chiose == 'loop' ? obj.months = this.checkList : obj.months = [];
       console.log(JSON.stringify(this.checkfor));
       obj.musicGroup = {
+        settlementType: this.topfor.salary,
         applyExpireDate: this.topfor.time + ' 00:00:01',
         chargeTypeId: this.topfor.type,
         cooperationOrganId: this.topfor.school,

+ 265 - 12
src/views/teamBuild/signupList.vue

@@ -4,7 +4,7 @@
       <div>
         <h2>
           <div class="squrt"></div>
-          xxx乐团报名详情
+          {{ teamName }}报名详情
         </h2>
         <div class="btnList">
           <div class='newBand close'>停止乐团</div>
@@ -24,9 +24,33 @@
     <div class="searchList">
       <el-form :inline="true"
                :model="searchFrom">
-        <el-form-item label="乐团名称">
+        <el-form-item label="专业">
+          <el-select v-model="searchFrom.subject"
+                     clearable>
+            <el-option v-for="(item,index) in soundList"
+                       :key='index'
+                       :label="item.name"
+                       :value="item.id"></el-option>
+          </el-select>
+
+        </el-form-item>
+        <el-form-item label="是否允许调剂">
+          <el-select v-model="searchFrom.isAllowAdjust"
+                     clearable>
+            <el-option label="允许调剂"
+                       value="1"></el-option>
+            <el-option label="不允许调剂"
+                       value="0"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="用户名或手机号">
           <el-input v-model="searchFrom.name"></el-input>
         </el-form-item>
+        <!-- 专业actualSubjectId 调剂isAllowAdjust 手机号name -->
+        <el-form-item>
+          <div class='searchBtn'
+               @click='getList'>搜索</div>
+        </el-form-item>
       </el-form>
     </div>
     <div class="sigup-core">
@@ -34,7 +58,7 @@
         <el-table :data='leftList'
                   :header-cell-style="{background:'#EDEEF0',color:'#444'}">
           <el-table-column label="乐团声部"
-                           prop="subName"
+                           prop="subjectName"
                            align='center'>
           </el-table-column>
           <el-table-column label="计划招生"
@@ -51,67 +75,296 @@
         <el-table :data='rightList'
                   :header-cell-style="{background:'#EDEEF0',color:'#444'}">
           <el-table-column label="学员姓名"
+                           prop="studentName"
                            align='center'>
           </el-table-column>
           <el-table-column label="家长姓名"
+                           prop="parentsName"
                            align='center'>
           </el-table-column>
           <el-table-column label="年级班级"
                            align='center'>
+            <template slot-scope="scope">
+              <div>
+                {{scope.row.currentGrade+scope.row.currentClass}}
+              </div>
+            </template>
           </el-table-column>
           <el-table-column label="性别"
+                           prop="gender"
                            align='center'>
+            <template slot-scope="scope">
+              <div>
+                {{scope.row.gender  | sex}}
+              </div>
+            </template>
           </el-table-column>
           <el-table-column label="服从调剂"
+                           prop="isAllowAdjust"
                            align='center'>
+            <template slot-scope="scope">
+              <div>
+                {{ scope.row.isAllowAdjust | isAllowAdjust}}
+              </div>
+            </template>
           </el-table-column>
           <el-table-column label="报名专业"
+                           prop="subjectName"
                            align='center'>
           </el-table-column>
           <el-table-column label="调剂专业"
+                           prop="actualSubjectName"
                            align='center'>
           </el-table-column>
           <el-table-column label="联系电话"
+                           prop="parentsPhone"
+                           align='center'>
+          </el-table-column>
+          <el-table-column label="学员状态"
+                           prop="paymentStatus"
                            align='center'>
+            <template slot-scope="scope">
+              <div>
+                {{ scope.row.paymentStatus|paymentStatus }}
+              </div>
+            </template>
           </el-table-column>
+          <el-table-column label="备注"
+                           v-if='status == "APPLY"'
+                           prop="remark"
+                           align='center'>
+          </el-table-column>
+          <!-- remark -->
           <el-table-column label="操作"
                            align='center'>
+            <template slot-scope="scope">
+              <div>
+                <el-button type='text'
+                           @click='resetSubject(scope.row)'>修改专业</el-button>
+                <!-- PAY -->
+                <el-button type='text'
+                           v-if='status == "PAY"&&scope.row.paymentStatus==1'
+                           @click='lookdetail(scope.row)'>查看</el-button>
+              </div>
+            </template>
           </el-table-column>
         </el-table>
+        <pagination :total="rules.total"
+                    :page.sync="rules.page"
+                    :limit.sync="rules.limit"
+                    :page-sizes="rules.page_size"
+                    @pagination="getList" />
       </div>
     </div>
+    <el-dialog title="修改专业"
+               :visible.sync="subjectVisible"
+               width="400px">
+      <el-form :model="maskForm">
+        <el-form-item label="选择专业">
+          <el-select v-model="maskForm.subject"
+                     clearable>
+            <el-option v-for="(item,index) in soundList"
+                       :key='index'
+                       :label="item.name"
+                       :value="item.id"></el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <div slot="footer"
+           class="dialog-footer">
+        <el-button @click="subjectVisible = false">取 消</el-button>
+        <el-button type="primary"
+                   @click="okReset">确 定</el-button>
+      </div>
+    </el-dialog>
 
+    <el-dialog title="订单详情"
+               :visible.sync="orderVisible"
+               width="600px">
+      <el-form :model="orderForm"
+               :inline="true">
+        <!--     name: '',
+        totalAmount: '',
+        subject: '',
+        subjectFee: '',
+        axe: '',
+        axePrice: '',
+        others: '',
+        othersPrice: '' -->
+        <el-form-item label="学员姓名">
+          <el-input v-model="orderForm.name"
+                    disabled=""></el-input>
+        </el-form-item>
+        <el-form-item label="实缴金额">
+          <el-input v-model="orderForm.totalAmount"
+                    disabled=""></el-input>
+        </el-form-item>
+        <el-form-item label="实际专业">
+          <el-input v-model="orderForm.subject"
+                    disabled=""></el-input>
+        </el-form-item>
+        <el-form-item label="课程费用">
+          <el-input v-model="orderForm.subjectFee"
+                    disabled=""></el-input>
+        </el-form-item>
+        <el-form-item label="选择乐器">
+          <el-input v-model="orderForm.axe"
+                    disabled=""></el-input>
+        </el-form-item>
+        <el-form-item label="乐器价格">
+          <el-input v-model="orderForm.axePrice"
+                    disabled=""></el-input>
+        </el-form-item>
+        <el-form-item label="教辅组合">
+          <el-input v-model="orderForm.others"
+                    disabled=""></el-input>
+        </el-form-item>
+        <el-form-item label="组合价格">
+          <el-input v-model="orderForm.othersPrice"
+                    disabled=""></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer"
+           class="dialog-footer">
+        <!-- <el-button>取 消</el-button> -->
+        <el-button type="primary"
+                   @click="orderVisible = false">确 定</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 <script>
-import { getTeamRecruit, getintoClass, getStudentList } from '@/api/buildTeam'
+import pagination from '@/components/Pagination/index'
+import { getTeamRecruit, getintoClass, getStudentList, findSound } from '@/api/buildTeam'
+import { resetStudentSubject, getStudentFeeDetail } from '@/api/studentManager'
 export default {
+  components: {
+    pagination
+  },
   data () {
     return {
+      subjectVisible: false,
+      orderVisible: false,
       leftList: [],
       rightList: [],
       searchFrom: {
-        name: ''
+        name: '',
+        subject: '', // 专业
+        isAllowAdjust: '' // 是否允许调剂
       },
       status: '',
-      id: ''
+      id: '',
+      rules: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 30, 40] // 选择限制显示条数
+      },
+      teamName: '',
+      maskForm: {
+        subject: ''
+      },
+      activeId: '',
+      soundList: [],
+      orderForm: {
+        name: '',
+        totalAmount: '',
+        subject: '',
+        subjectFee: '',
+        axe: '',
+        axePrice: '',
+        others: '',
+        othersPrice: ''
+      }
     }
   },
-  mounted () {
+  created () {
     // 通过乐团状态判断显示隐藏的东西
     this.status = this.$route.query.status;
     // 通过乐团id 获取乐团招生状态
     this.id = this.$route.query.id;
-    getintoClass({ musicGroupId: 1 }).then(res => {
+    this.teamName = this.$route.query.name
+
+  },
+  mounted () {
+
+    // 根据乐团id获取学团情况
+    getintoClass({ musicGroupId: this.id }).then(res => {
       if (res.code == 200) {
         this.leftList = res.data;
       }
     })
-    // 通过乐团id获取乐团学生列表
-    getStudentList({ musicGroupId: this.id }).then(res => {
-      console.log(res);
+    // 根据乐团id获乐团声部
+    findSound({ musicGroupId: this.id }).then(res => {
+      if (res.code == 200) {
+        this.soundList = res.data;
+      }
     })
-  }
+    // 通过乐团id获取乐团学生列表
+    this.getList();
+  },
+  methods: {
+    getList () {
+      let obj = {
+        musicGroupId: this.id,
+        actualSubjectId: this.searchFrom.subject || null,
+        isAllowAdjust: this.searchFrom.isAllowAdjust || null,
+        name: this.searchFrom.name || null
+      }
+      getStudentList(obj).then(res => {
+        if (res.code == 200) {
+          this.rightList = res.data.rows
+          this.rules.total = res.data.total;
+        }
+      })
+    },
+    // 修改专业
+    resetSubject (row) {
+      this.activeId = row.studentId
+      this.subjectVisible = true;
+      //   resetStudentSubject().then(res=>{]})
+    },
+    // 确认修改
+    okReset () {
+      if (!this.maskForm.subject) {
+        this.$message.error('请选择调剂专业');
+        return
+      }
+      resetStudentSubject({ musicGroupId: this.id, userId: this.activeId, subId: this.maskForm.subject }).then(res => {
+        if (res.code == 200) {
+          this.$message.success('修改成功');
+          this.subjectVisible = false;
+          this.maskForm.subject = '';
+          this.getList();
+        }
+      })
+
+    },
+    lookdetail (row) {
+      console.log(row);
+      this.orderVisible = true;
+      this.activeId = row.studentId;
+      this.orderForm.name = row.studentName;
+      this.orderForm.subject = row.subjectName;
+      getStudentFeeDetail({ musicGroupId: this.id, studentId: row.studentId }).then(res => {
+        if (res.code == 200) {
+          this.orderForm.totalAmount = res.data.totalAmount;
+          this.orderForm.subjectFee = res.data.courseFee;
+          for (let i in res.data.goods) {
+            if (res.data.goods[i].goodsType == 'ACCESSORIES') {
+              this.orderForm.axe = res.data.goods[i].goodsName;
+              this.orderForm.axePrice = res.data.goods[i].musicalFee;
+            } else if (res.data.goods[i].goodsType == 'INSTRUMENT') {
+              this.orderForm.others = res.data.goods[i].goodsName;
+              this.orderForm.othersPrice = res.data.goods[i].musicalFee;
+            }
+          }
+        }
+      })
+
+    }
+  },
 }
 </script>
 <style lang="scss">

+ 1 - 1
src/views/teamBuild/teamSeting/index.vue

@@ -100,7 +100,7 @@ export default {
   },
   data () {
     return {
-      activeIndex: '3',
+      activeIndex: '0',
       stepImgs: {
         nol: require('@/assets/images/base/step-arrow-active.png'),
         active: require('@/assets/images/base/step-arrow.png')

+ 10 - 1
src/views/teamDetail/components/baseInfo.vue

@@ -53,6 +53,14 @@
                          value="1"></el-option>
             </el-select> -->
           </el-form-item>
+          <!-- <el-form-item label="课酬结算标准">
+            <el-select v-model="topForm.salary">
+              <el-option label="课时默认结算"
+                         value="TEACHER_DEFAULT"></el-option>
+              <el-option label="课时梯度结算"
+                         value="GRADIENT_SALARY"></el-option>
+            </el-select>
+          </el-form-item> -->
         </el-form>
       </div>
       <div class="right">
@@ -93,7 +101,8 @@ export default {
         boss: '',
         cooperate: '',
         add: '',
-        type: ''
+        type: '',
+        salary: ''
       },
       name: '',
       processList: []

+ 33 - 15
src/views/teamDetail/components/classList.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="c-container">
     <!-- 搜索标题 -->
-    <el-form :inline="true"
+    <!-- <el-form :inline="true"
              class="searchForm"
              v-model="searchForm">
       <el-form-item>
@@ -11,44 +11,46 @@
                      value="1"></el-option>
         </el-select>
       </el-form-item>
-    </el-form>
-    <!-- 查询列表 -->
-    <div class="searchWrap">
-      <p>查询条件:</p>
-      <div class="searchItem"
-           @click="closeSearch(item)"
-           v-for="(item,index) in searchLsit">
-        {{ item.key }}
-        <i class="el-icon-close"></i>
-      </div>
-    </div>
+    </el-form> -->
     <!-- 列表 -->
     <div class="tableWrap">
       <el-table :data='tableList'>
         <el-table-column align='center'
+                         prop="classGroupName"
                          label="班级名称">
         </el-table-column>
         <el-table-column align='center'
                          label="课程类型">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.classGroupType | classType}}
+            </div>
+          </template>
         </el-table-column>
         <el-table-column align='center'
+                         prop="masterTeacher"
                          label="主教老师">
         </el-table-column>
         <el-table-column align='center'
+                         prop='subTeacher'
                          label="助教老师">
         </el-table-column>
         <el-table-column align='center'
+                         prop="currentClassTimes"
                          label="当前课次">
         </el-table-column>
         <el-table-column align='center'
+                         prop="studyNum"
                          label="在读人数">
         </el-table-column>
         <el-table-column align='center'
+                         prop="quitNum"
                          label="退团人数">
+
         </el-table-column>
-        <el-table-column align='center'
+        <!-- <el-table-column align='center'
                          label="新增人数">
-        </el-table-column>
+        </el-table-column> -->
         <!-- <el-table-column align='center'
                          label="退团人数">
           <template slot-scope="scope">
@@ -69,7 +71,14 @@
 </template>
 <script>
 import pagination from '@/components/Pagination/index'
+import { getClassList } from '@/api/buildTeam'
 export default {
+  props: {
+    teamid: {
+      type: String,
+      required: true
+    },
+  },
   data () {
     return {
       searchLsit: [],
@@ -91,9 +100,18 @@ export default {
   components: {
     pagination
   },
+  mounted () {
+    this.getList();
+  },
   methods: {
     getList () {
-
+      // search: this.teamid
+      getClassList({ search: 1 }).then(res => {
+        if (res.code == 200) {
+          this.tableList = res.data.rows;
+          this.rules.total = res.data.total
+        }
+      })
     }
   }
 }

+ 146 - 37
src/views/teamDetail/components/courseList.vue

@@ -4,74 +4,122 @@
     <el-form :inline="true"
              class="searchForm"
              v-model="searchForm">
-      <el-form-item>
-        <el-select v-model="searchForm.classname"
-                   placeholder="班级名称">
-          <el-option label="哈哈哈"
-                     value="1"></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item>
+      <el-form-item label="课程类型">
         <el-select v-model="searchForm.courseStatus"
+                   clearable
                    placeholder="课程类型">
-          <el-option label="哈哈哈"
-                     value="1"></el-option>
+          <el-option label="合奏课"
+                     value="MIX"></el-option>
+          <el-option label="小班课"
+                     value="HIGH"></el-option>
+          <el-option label="VIP课"
+                     value="VIP"></el-option>
+          <el-option label="试听课"
+                     value="DEMO"></el-option>
+          <el-option label="综合课"
+                     value="COMPREHENSIVE"></el-option>
+          <el-option label="练习课"
+                     value="PRACTICE"></el-option>
+          <el-option label="启蒙课"
+                     value="ENLIGHTENMENT"></el-option>
+          <el-option label="集训课"
+                     value="TRAINING"></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item>
+      <el-form-item label="课程状态">
         <el-select v-model="searchForm.classStatus"
+                   clearable
                    placeholder="课程状态">
-          <el-option label="哈哈哈"
-                     value="1"></el-option>
+          <el-option label="未开始"
+                     value="NOT_START"></el-option>
+          <el-option label="进行中"
+                     value="UNDERWAY"></el-option>
+          <el-option label="已结束"
+                     value="OVER"></el-option>
         </el-select>
       </el-form-item>
+      <el-form-item label="选择日期">
+        <el-date-picker v-model="searchForm.timer"
+                        style="width:420px;"
+                        type="daterange"
+                        value-format="yyyy-MM-dd"
+                        range-separator="至"
+                        start-placeholder="开始日期"
+                        end-placeholder="结束日期">
+        </el-date-picker>
+      </el-form-item>
       <el-form-item>
-        <el-select v-model="searchForm.teacher"
-                   placeholder="老师">
-          <el-option label="哈哈哈"
-                     value="1"></el-option>
-        </el-select>
+        <div class='searchBtn'
+             @click="getList">搜索</div>
       </el-form-item>
     </el-form>
-    <!-- 查询列表 -->
-    <div class="searchWrap">
-      <p>查询条件:</p>
-      <div class="searchItem"
-           @click="closeSearch(item)"
-           v-for="(item,index) in searchLsit">
-        {{ item.key }}
-        <i class="el-icon-close"></i>
-      </div>
-    </div>
     <!-- 列表 -->
     <div class="tableWrap">
       <el-table :data='tableList'>
         <el-table-column align='center'
+                         prop="classDate"
                          label="时间">
         </el-table-column>
         <el-table-column align='center'
+                         prop="classGroupName"
                          label="班级名称">
         </el-table-column>
         <el-table-column align='center'
-                         label="课程类型">
+                         prop="mixClassGroupName"
+                         label="合奏班">
         </el-table-column>
         <el-table-column align='center'
-                         label="当前课次">
+                         prop="courseScheduleType"
+                         label="课程类型">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.courseScheduleType | coursesType}}
+            </div>
+          </template>
         </el-table-column>
+
         <el-table-column align='center'
+                         prop="courseScheduleStatus"
                          label="课程状态">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.courseScheduleStatus | coursesStatus }}
+            </div>
+          </template>
         </el-table-column>
         <el-table-column align='center'
-                         label="指导老师">
+                         label="老师签到">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.signInStatus | attendanceType}}
+            </div>
+          </template>
         </el-table-column>
         <el-table-column align='center'
-                         label="助教老师">
+                         label="老师签出">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.signOutStatus | attendanceType}}
+            </div>
+          </template>
         </el-table-column>
         <el-table-column align='center'
-                         label="联系电话">
+                         prop="masterTeacherName"
+                         label="指导老师">
         </el-table-column>
         <el-table-column align='center'
-                         label="所在班级">
+                         prop="subTeacherName"
+                         label="助教老师">
+        </el-table-column>
+        <el-table-column align='center'
+                         label="操作">
+          <template slot-scope="scope">
+            <div>
+              <el-button v-if="scope.row.courseScheduleStatus != 'OVER'"
+                         type="text"
+                         @click="resetClass(scope.row)">调整</el-button>
+            </div>
+          </template>
         </el-table-column>
       </el-table>
       <pagination :total="rules.total"
@@ -80,18 +128,50 @@
                   :page-sizes="rules.page_size"
                   @pagination="getList" />
     </div>
+    <el-dialog title="课程调整"
+               width="400px"
+               :visible.sync="courseVisible">
+      <el-form :model="maskForm"
+               :inline="true">
+        <el-form-item label="主教老师">
+          <el-input></el-input>
+        </el-form-item>
+        <el-form-item label="助教老师">
+          <el-input></el-input>
+        </el-form-item>
+        <el-form-item label="上课日期">
+          <el-input></el-input>
+        </el-form-item>
+        <el-form-item label="上课时间">
+          <el-input></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer"
+           class="dialog-footer">
+        <el-button @click="courseVisible = false">取 消</el-button>
+        <el-button type="primary"
+                   @click="courseVisible = false">确 定</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 <script>
 import pagination from '@/components/Pagination/index'
+import { getCourseList } from '@/api/buildTeam'
 export default {
+  props: {
+    teamid: {
+      type: String,
+      required: true
+    },
+  },
   data () {
     return {
+      courseVisible: false,
       searchForm: {
-        classname: '', // 班级名称
         courseStatus: '', // 课程类型
         classStatus: '', // 课程状态
-        teacher: '' // 老师
+        timer: [] // 时间
       },
       tableList: [],
       searchLsit: [],
@@ -102,14 +182,43 @@ export default {
         total: 0, // 总条数
         page_size: [10, 20, 40, 50] // 选择限制显示条数
       },
+      maskForm: {}
     }
   },
   components: {
     pagination
   },
+  mounted () {
+    this.getList()
+  },
   methods: {
+    /**
+     *  courseStatus: '', // 课程类型
+        classStatus: '', // 课程状态
+        timer:[] // 时间
+     * 
+     */
     getList () {
-
+      if (!this.searchForm.timer) {
+        this.searchForm.timer = []
+      }
+      let obj = {
+        classScheduleStatus: this.searchForm.classStatus || null,
+        classScheduleType: this.searchForm.courseStatus || null,
+        musicGroupId: this.teamid,
+        startTime: this.searchForm.timer[0],
+        endTime: this.searchForm.timer[1]
+      }
+      getCourseList(obj).then(res => {
+        if (res.code == 200) {
+          this.tableList = res.data.rows;
+          this.rules.total = res.data.total;
+        }
+      })
+    },
+    resetClass (row) {
+      console.log(row);
+      this.courseVisible = true;
     }
   }
 }

+ 329 - 60
src/views/teamDetail/components/studentList.vue

@@ -4,116 +4,167 @@
     <div class="headWrap">
       <div class="left">
         <div class="headItem">
-          <p>在读数(人):<span>12345</span></p>
+          <p>在读人数:<span>{{studentListInfo.studying}}</span></p>
         </div>
         <div class="headItem">
-          <p>在读数(人):<span>12345</span></p>
+          <p>退团人数:<span>{{studentListInfo.quit}}</span></p>
         </div>
         <div class="headItem">
-          <p>在读数(人):<span>12345</span></p>
-        </div>
-        <div class="headItem">
-          <p>在读数(人):<span>12345</span></p>
+          <p>新增人数:<span>{{studentListInfo.add}}</span></p>
         </div>
       </div>
       <div class="right">
-        <!-- 暂时借用一下跳转功能 -->
         <div class="newStudent"
-             @click='gotoSignin'>新增学员</div>
+             style="margin-bottom:10px;"
+             @click=" addStudentVisible = true">新增学员</div>
+        <div class="newStudent"
+             @click='gotoSignin'>点名总览</div>
       </div>
     </div>
+
     <!-- 搜索类型 -->
     <el-form :inline="true"
              class="searchForm"
              v-model="searchForm">
-      <el-form-item>
-        <el-select v-model="searchForm.team"
-                   placeholder="合奏团选择">
-          <el-option label="item.text"
-                     value="1"></el-option>
+      <el-form-item label="学员状态">
+        <el-select v-model="searchForm.studentStatus"
+                   clearable
+                   placeholder="学员状态">
+          <el-option label="在读"
+                     value="NORMAL"></el-option>
+          <el-option label="请假"
+                     value="LEAVE"></el-option>
+          <el-option label="退班"
+                     value="QUIT"></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item>
-        <el-select v-model="searchForm.teamClass"
-                   placeholder="乐团班级">
-          <el-option label="item.text"
-                     value="1"></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item>
+      <el-form-item label="所选专业">
         <el-select v-model="searchForm.major"
+                   clearable
                    placeholder="报名专业">
-          <el-option label="item.text"
-                     value="1"></el-option>
+          <el-option v-for='(item,index) in soundList'
+                     :key='index'
+                     :value="item.id"
+                     :label="item.name"></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item>
+      <el-form-item label="缴费状态">
         <el-select v-model="searchForm.isPay"
+                   clearable
                    placeholder="是否缴费">
-          <el-option label="item.text"
-                     value="1"></el-option>
+          <el-option label="完成缴费"
+                     value="PAID_COMPLETED"></el-option>
+          <el-option label="未缴费"
+                     value="NON_PAYMENT"></el-option>
+          <el-option label="缴费中"
+                     value="PROCESSING"></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item>
+      <!-- <el-form-item>
         <el-select v-model="searchForm.school"
                    placeholder="所在学校">
           <el-option label="item.text"
                      value="1"></el-option>
         </el-select>
+      </el-form-item> -->
+      <el-form-item>
+        <div class='searchBtn'
+             @click='getList'>筛选</div>
       </el-form-item>
     </el-form>
-    <!-- 查询列表 -->
-    <div class="searchWrap">
-      <p>查询条件:</p>
-      <div class="searchItem"
-           @click="closeSearch(item)"
-           v-for="(item,index) in searchLsit">
-        {{ item.key }}
-        <i class="el-icon-close"></i>
-      </div>
-    </div>
+
     <!-- 列表 -->
     <div class="tableWrap">
       <el-table :data='tableList'>
-        <el-table-column label="学员姓名">
+        <el-table-column label="学员姓名"
+                         width="120px;"
+                         prop="realName">
         </el-table-column>
         <el-table-column align='center'
-                         label="学员状态">
+                         prop="gender"
+                         width="50px;"
+                         label="性别">
+          <template slot-scope="scope">
+            <div>
+              {{scope.row.gender|sex }}
+            </div>
+          </template>
         </el-table-column>
         <el-table-column align='center'
-                         label="年级班级">
+                         prop="phone"
+                         label="联系电话">
         </el-table-column>
+        <!-- <el-table-column align='center'
+        prop=""
+                         label="所在学校">
+        </el-table-column> -->
         <el-table-column align='center'
-                         label="性别">
+                         label="年级班级">
+          <template slot-scope="scope">
+            <div>
+              {{scope.row.currentGrade+scope.row.currentClass}}
+            </div>
+          </template>
         </el-table-column>
         <el-table-column align='center'
-                         label="报名专业">
+                         label="报名专业"
+                         prop="subjectName">
         </el-table-column>
-        <el-table-column align='center'
-                         label="调剂专业">
+        <!-- <el-table-column align='center'
+                         label="乐团班级">
         </el-table-column>
         <el-table-column align='center'
-                         label="乐器来源">
-        </el-table-column>
+                         label="合奏班">
+        </el-table-column> -->
         <el-table-column align='center'
-                         label="联系电话">
+                         prop="studentStatus"
+                         label="学员状态">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.studentStatus | musicGroupStudentType}}
+            </div>
+          </template>
         </el-table-column>
         <el-table-column align='center'
-                         label="所在班级">
+                         label="新增学员">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.isNewStudent | yesOrNo}}
+            </div>
+          </template>
         </el-table-column>
         <el-table-column align='center'
-                         label="实缴总额">
+                         label="是否缴费">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.paymentStatus | studentPay}}
+            </div>
+          </template>
         </el-table-column>
         <el-table-column align='center'
                          label="操作">
           <template slot-scope="scope">
             <div>
+
+              <el-popover placement="top"
+                          v-model="scope.row.typeVisible">
+                <p style=" text-align: center;margin-top: 10px;">是否退团</p>
+                <el-button type="text"
+                           slot='reference'
+                           class='chiose'>
+                  退团
+                </el-button>
+                <div style="text-align: right; margin-top: 20px">
+                  <el-button size="mini"
+                             type="text"
+                             @click="scope.row.typeVisible  = false">取消</el-button>
+                  <el-button type="primary"
+                             size="mini"
+                             @click="chioseType(scope.row)">确定</el-button>
+                </div>
+              </el-popover>
               <el-button type="text"
-                         size="small">在读</el-button>
-              <el-button type="text"
-                         size="small">暂停</el-button>
-              <el-button type="text"
-                         size="small">退团</el-button>
+                         size="small">查看班级</el-button>
             </div>
           </template>
         </el-table-column>
@@ -124,13 +175,127 @@
                   :page-sizes="rules.page_size"
                   @pagination="getList" />
     </div>
+    <el-dialog title="学员基本信息"
+               width="640px"
+               :visible.sync="addStudentVisible">
+      <el-form :model="maskForm"
+               label-position="right"
+               label-width="100px"
+               ref='maskForm'
+               :rules="maskRules"
+               :inline="true">
+        <el-form-item label="学员姓名"
+                      prop="studentName">
+          <el-input v-model="maskForm.studentName"></el-input>
+        </el-form-item>
+        <el-form-item label="学员性别"
+                      prop="sex">
+          <el-select v-model="maskForm.sex"
+                     clearable>
+            <el-option label="男"
+                       :value="1"></el-option>
+            <el-option label="女"
+                       :value="0"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="家长姓名"
+                      prop="parentName">
+          <el-input v-model="maskForm.parentName"></el-input>
+        </el-form-item>
+        <el-form-item label="联系电话"
+                      prop="phone">
+          <el-input v-model="maskForm.phone"></el-input>
+        </el-form-item>
+        <el-form-item label="年级"
+                      prop="startClass">
+          <el-select placeholder="起始年级"
+                     clearable
+                     v-model="maskForm.startClass">
+            <el-option value="1"
+                       label="一年级"></el-option>
+            <el-option value="2"
+                       label="二年级"></el-option>
+            <el-option value="3"
+                       label="三年级"></el-option>
+            <el-option value="4"
+                       label="四年级"></el-option>
+            <el-option value="5"
+                       label="五年级"></el-option>
+            <el-option value="6"
+                       label="六年级"></el-option>
+            <el-option value="7"
+                       label="初一"></el-option>
+            <el-option value="8"
+                       label="初二"></el-option>
+            <el-option value="9"
+                       label="初三"></el-option>
+            <el-option value="10"
+                       label="高一"></el-option>
+            <el-option value="11"
+                       label="高二"></el-option>
+            <el-option value="12"
+                       label="高三"></el-option>
+
+          </el-select>
+        </el-form-item>
+        <el-form-item label="班级"
+                      prop="course">
+          <el-input v-model="maskForm.course"></el-input>
+        </el-form-item>
+        <el-form-item label="学员声部"
+                      prop="sound">
+          <el-select v-model="maskForm.sound">
+            <el-option v-for='(item,index) in soundList'
+                       :key='index'
+                       :value="item.id"
+                       :label="item.name"></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="单技课班级"
+                      prop="signClass">
+          <el-select v-model="maskForm.signClass">
+            <el-option v-for="(item,index) in signList"
+                       :key="index"
+                       :value="item.id"
+                       :label="item.name"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="首缴金额"
+                      prop="price">
+          <el-input v-model="maskForm.price"></el-input>
+        </el-form-item>
+        <el-form-item label="出生日期"
+                      prop="timer">
+          <el-date-picker v-model="maskForm.timer"
+                          type="date"
+                          placeholder="选择日期">
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+      <div slot="footer"
+           class="dialog-footer">
+        <!-- <el-button @click="addStudentVisible = false">取 消</el-button> -->
+        <el-button type="primary"
+                   @click="addStudent">确 定</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 <script>
+import { getTeamStudentList, getTeamStudentInfo, getSingleClass, findSound } from '@/api/buildTeam'
+import { addStudent } from '@/api/studentManager'
 import pagination from '@/components/Pagination/index'
 export default {
+  props: {
+    teamid: {
+      type: String,
+      required: true
+    },
+  },
   data () {
     return {
+      addStudentVisible: false, //新增学员弹窗
       topFrom: { // 顶部的禁选框集合
         expect: '2', // 预期招生
         studing: '5', // 在读人数
@@ -139,12 +304,10 @@ export default {
         signout: '10', // 退团总数
       },
       searchForm: {
-        team: '', // 合奏团选择
-        teamClass: '', // 乐团班级
+        studentStatus: '', // 学生状态
         major: '', // 报名专业
-        status: '', // 学员状态
         isPay: '', // 是否缴费
-        school: '', // 所在学校
+
       },
       searchLsit: [],
       tableList: [], //
@@ -155,17 +318,123 @@ export default {
         total: 0, // 总条数
         page_size: [10, 20, 40, 50] // 选择限制显示条数
       },
+      studentListInfo: {
+        add: '',
+        quit: '',
+        studying: ''
+      },
+      signList: [],
+      soundList: [],
+      maskForm: {
+        studentName: '',
+        sex: '',
+        parentName: '',
+        course: '',
+        phone: '',
+        sound: '',
+        timer: '',
+        signClass: '',
+        price: '',
+        startClass: ''
+      },
+
+      maskRules: {
+        studentName: [{ required: true, message: '请输入学生姓名' },],
+        sex: [{ required: true, message: '请选择学生姓名' },],
+        parentName: [{ required: true, message: '请输入家长姓名' },],
+        course: [{ required: true, message: '请输入班级' },],
+        phone: [{ required: true, message: '请输入手机号' }, { pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号' }],
+        sound: [{ required: true, message: '请选择声部' },],
+        timer: [{ required: true, message: '请选择出生日期' },],
+        signClass: [{ required: true, message: '请选择单技班' },],
+        price: [{ required: true, message: '请输入首缴金额' },],
+        startClass: [{ required: true, message: '请选择年级' }]
+      }
     }
   },
   components: {
     pagination
   },
+  created () {
+  },
+  mounted () {
+
+    // 获取汇总数据
+    getTeamStudentInfo({ musicGroupId: this.teamid }).then(res => {
+      if (res.code == 200) {
+        this.studentListInfo = res.data;
+      }
+    });
+    this.getList();
+    // 获取乐团内所有声部
+    findSound({ musicGroupId: this.teamid }).then(res => {
+      if (res.code == 200) {
+        this.soundList = res.data;
+      }
+    })
+    // 获取乐团所有单技课班
+    getSingleClass({ musicGroupId: this.teamid }).then(res => {
+      if (res.code == 200) {
+        this.signList = res.data;
+      }
+    })
+
+  },
   methods: {
     getList () {
-
+      let obj = {
+        musicGroupId: this.teamid,
+        page: this.rules.page,
+        rows: this.rules.limit,
+        studentStatus: this.searchForm.studentStatus || null,
+        paymentStatus: this.searchForm.isPay || null,
+        subjectId: this.searchForm.major || null
+      }
+      getTeamStudentList(obj).then(res => {
+        if (res.code == 200) {
+          this.tableList = res.data.rows;
+          this.rules.total = res.data.total
+        }
+      })
     },
     gotoSignin () {
-      // this.$
+      this.$router.push({ path: '/business/studentSignin', query: { id: this.teamid } })
+    },
+    chioseType (row) {
+      console.log(row);
+      // 发请求 退团
+      // StudentQuit({}).then(res=>{
+
+      // })
+      row.typeVisible = false;
+    },
+    //
+    addStudent () {
+
+      // 发请求添加学员
+      this.$refs['maskForm'].validate(res => {
+        if (res) {
+          // this.maskForm.parentName.timer  少个生日的字段
+          addStudent({
+            currentClass: this.maskForm.course,
+            currentGrade: this.maskForm.startClass,
+            gender: this.maskForm.sex,
+            musicGroupId: this.teamid,
+            name: this.maskForm.studentName,
+            parentsName: this.maskForm.parentName,
+            parentsPhone: this.maskForm.phone,
+            subjectId: this.maskForm.sound
+
+
+          }).then(res => {
+            if (res.code == 200) {
+              this.$message.success('添加学生成功');
+              this.getList()
+              this.addStudentVisible = false
+            }
+          })
+        }
+      })
     }
   }
 }

+ 51 - 11
src/views/teamDetail/components/studentSignin.vue

@@ -1,30 +1,53 @@
 <template>
   <div class="m-container">
     <h2>学生点名总览
-      <div class="term">第一学期</div>
-      <div class="term active">第二学期</div>
+      <!-- <div class="term">第一学期</div>
+      <div class="term active">第二学期</div> -->
     </h2>
     <div class='m-core'>
-      <div class="searchBtn">导出</div>
+      <!-- <div class="searchBtn">导出</div> -->
       <!-- table  -->
-      <div class="tableWrap">
+      <div class="tableList">
         <el-table :data='tableList'>
           <el-table-column align='center'
-                           label="学生姓名">
+                           prop="signTime"
+                           label="时间">
           </el-table-column>
-          <el-table-column v-for="(item,index) in tableHead"
-                           :key='index'
-                           align='center'
-                           :label="item">
+          <el-table-column align='center'
+                           prop="courseScheduleName"
+                           label="课程名称">
+          </el-table-column>
+          <el-table-column align='center'
+                           prop="name"
+                           label="学生名称">
+          </el-table-column>
+          <el-table-column align='center'
+                           prop="signStatus"
+                           label="签到">
+            <template slot-scope="scope">
+              <div>
+                {{ scope.row.signStatus|studentSign}}
+              </div>
+            </template>
           </el-table-column>
         </el-table>
+        <pagination :total="rules.total"
+                    :page.sync="rules.page"
+                    :limit.sync="rules.limit"
+                    :page-sizes="rules.page_size"
+                    @pagination="getList" />
       </div>
     </div>
   </div>
 </template>
 <script>
+import pagination from '@/components/Pagination/index'
+import { getStudentRecord } from '@/api/studentManager'
 export default {
   name: 'studentSignin',
+  components: {
+    pagination
+  },
   data () {
     return {
       tableList: [], // table列表
@@ -35,9 +58,26 @@ export default {
         total: 0, // 总条数
         page_size: [10, 20, 40, 50] // 选择限制显示条数
       },
-      tableHead: ['09-10', '09-10', '09-10', '09-10', '09-10', '09-10', '09-10', '09-10', '09-10', '09-10', '09-10',]
+      teamid: ''
+    }
+  },
+  created () {
+    this.teamid = this.$route.query.id;
+  },
+  mounted () {
+    this.getList()
+  },
+  methods: {
+    getList () {
+      // console.log(111);
+      getStudentRecord({ search: 1 }).then(res => {
+        if (res.code == 200) {
+          this.tableList = res.data.rows;
+          this.rules.total = res.data.total;
+        }
+      })
     }
-  }
+  },
 }
 </script>
 <style lang="scss" scope>

+ 6 - 5
src/views/teamDetail/components/teacherList.vue

@@ -2,11 +2,12 @@
   <div class='t-container'>
     <!-- 头部展示 -->
     <div class="headWrap">
-      <div class="left">
+      <!-- <div class="left">
         <div class="headItem">
           <p>教学主管: <span> 张三,李四</span></p>
         </div>
-      </div>
+      </div> -->
+      <div></div>
       <div class="right newBand"
            @click="gotoRecord">
         上课记录
@@ -129,9 +130,9 @@ export default {
     pagination
   },
   mounted () {
-    console.log(this.teamid)
+    // console.log(this.teamid)
     this.getList();
-    getAllClass({ musicGroupId: this.teamid }).then(res => {      ;
+    getAllClass({ musicGroupId: this.teamid }).then(res => {
       if (res.code == 200) {
         this.mixCourseList = res.data;
       }
@@ -156,7 +157,7 @@ export default {
       })
     },
     gotoRecord () {
-      // this.$router.push({ path:})
+      this.$router.push({ path: `/business/teamTeacherRecord`, query: { id: this.teamid } })
     }
   }
 }

+ 142 - 0
src/views/teamDetail/components/teamTeacherRecord.vue

@@ -0,0 +1,142 @@
+<template>
+  <div class="m-container">
+    <h2>
+      <div class='squrt'></div>
+      {{name}}
+    </h2>
+    <p style="margin-bottom:20px;">老师上课记录</p>
+    <!-- 搜索类型 -->
+    <el-form :inline="true"
+             class="searchForm"
+             v-model="searchForm">
+      <!-- <el-form-item>
+        <el-select v-model="searchForm.teacher">
+          <el-option v-for='(item,index) in teacherList'
+                     :key="index"
+                     :value="item.id"
+                     :label="item.name"></el-option>
+        </el-select>
+      </el-form-item> -->
+
+      <el-form-item>
+        <el-date-picker v-model="searchForm.timer"
+                        style="width:420px;"
+                        type="daterange"
+                        value-format="yyyy-MM-dd"
+                        range-separator="至"
+                        start-placeholder="开始日期"
+                        end-placeholder="结束日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-input v-model="searchForm.teacher"
+                  placeholder="请输入老师姓名"></el-input>
+      </el-form-item>
+      <el-form-item>
+        <div class="searchBtn"
+             @click="getList">搜索</div>
+      </el-form-item>
+    </el-form>
+    <div class="tableList">
+      <el-table :data='tableList'>
+        <el-table-column align='center'
+                         prop="classDate"
+                         label="时间">
+        </el-table-column>
+        <el-table-column align='center'
+                         prop="courseScheduleName"
+                         label="课程名称">
+        </el-table-column>
+        <el-table-column align='center'
+                         prop="realName"
+                         label="老师名称">
+        </el-table-column>
+        <el-table-column align='center'
+                         prop="signInStatus"
+                         label="签到">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.signInStatus|attendanceType}}
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align='center'
+                         prop="signOutStatus"
+                         label="签退">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.signOutStatus|attendanceType}}
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination :total="rules.total"
+                  :page.sync="rules.page"
+                  :limit.sync="rules.limit"
+                  :page-sizes="rules.page_size"
+                  @pagination="getList" />
+    </div>
+  </div>
+</template>
+<script>
+import { findMusicGroupClassTeacher, getTeacheerRecord } from '@/api/buildTeam'
+import pagination from '@/components/Pagination/index'
+export default {
+  components: {
+    pagination
+  },
+  data () {
+    return {
+      name: '',
+      searchForm: {
+        teacher: '',
+        timer: []
+      },
+      teamId: '',
+      teacherList: [],
+      tableList: [],
+      rules: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 30, 40] // 选择限制显示条数
+      },
+    }
+  },
+  created () {
+    this.teamId = this.$route.query.id;
+  },
+  mounted () {
+    this.name = localStorage.getItem('teamName');
+    findMusicGroupClassTeacher({ musicGroupId: this.teamId }).then(res => {
+      if (res.code == 200) {
+        this.teacherList = res.data;
+      }
+    })
+    this.getList()
+  },
+  methods: {
+    getList () {
+      //musicGroupId: this.teamId
+      this.searchForm.timer = this.searchForm.timer || [];
+      // console.log(this.searchForm.timer)
+      let obj = {
+        page: this.rules.page,
+        rows: this.rules.limit,
+        teacherName: this.searchForm.teacher || null,
+        startTime: this.searchForm.timer[0] || null,
+        endTime: this.searchForm.timer[1] || null,
+      }
+      getTeacheerRecord(obj).then(res => {
+        if (res.code == 200) {
+          this.tableList = res.data.rows;
+          this.rules.total = res.data.total
+        }
+      })
+    }
+  },
+}
+</script>
+<style lang="scss">
+</style>

+ 9 - 5
src/views/teamDetail/index.vue

@@ -29,20 +29,23 @@
         </el-tab-pane>
         <el-tab-pane label="学员列表"
                      name="3">
-          <studentList v-if="activeIndex == 3" />
+          <studentList v-if="activeIndex == 3"
+                       :teamid='teamid' />
         </el-tab-pane>
         <el-tab-pane label="班级详情"
                      name="4">
-          <classList v-if="activeIndex == 4" />
+          <classList v-if="activeIndex == 4"
+                     :teamid='teamid' />
         </el-tab-pane>
         <el-tab-pane label="课表详情"
                      name="5">
-          <courseList v-if="activeIndex == 5" />
+          <courseList v-if="activeIndex == 5"
+                      :teamid='teamid' />
         </el-tab-pane>
-        <el-tab-pane label="课程课酬"
+        <!-- <el-tab-pane label="课程课酬"
                      name="6">
           <salaryList v-if="activeIndex == 6" />
-        </el-tab-pane>
+        </el-tab-pane> -->
         <el-tab-pane label="课酬调整"
                      name="7">
         </el-tab-pane>
@@ -81,6 +84,7 @@ export default {
     getname (name) {
       // console.log(name);
       this.name = name;
+      localStorage.setItem('teamName', name);
     }
   },
   components: {

+ 12 - 5
src/views/teamDetail/teamList.vue

@@ -88,6 +88,11 @@
           <el-table-column prop="status"
                            align='center'
                            label="乐团状态">
+            <template slot-scope="scope">
+              <div>
+                {{ scope.row.status|teamStatus }}
+              </div>
+            </template>
           </el-table-column>
           <el-table-column align='center'
                            prop="chargeTypeName"
@@ -288,22 +293,24 @@ export default {
         case 'APPLY': {
           // 报名中
           console.log('报名中')
-          this.$router.push({ path: `/teamBuild/sigupList`, query: { status: row.status, id: row.id } })
+          this.$router.push({ path: `/business/signupList`, query: { status: row.status, id: row.id, name: row.name } })
           break;
         }
         case 'PAY': {
           // 缴费中
           console.log('缴费中')
-          this.$router.push({ path: `/teamBuild/sigupList`, query: { status: row.status, id: row.id } })
+          this.$router.push({ path: `/business/signupList`, query: { status: row.status, id: row.id, name: row.name } })
           break;
         }
         case 'PREPARE': {
-          // 筹备中
-          console.log('筹备中')
+          // 筹备中 跳转到乐团设置界面
+          this.$router.push({ path: `/business/teamSeting`, query: { status: row.status, id: row.id, name: row.name } })
           break;
         }
-        case 'UNDERWAY': {
+        case 'PROGRESS': {
           // 进行中
+          // 调到乐团详情 teamDetails
+          this.$router.push({ path: `/business/teamDetails`, query: { status: row.status, id: row.id, name: row.name } })
           console.log('进行中')
           break
         }