Quellcode durchsuchen

Merge branch 'Nov16thResetMusic' into online

lex-xin vor 4 Jahren
Ursprung
Commit
0f00f29c5d

+ 8 - 0
src/api/studentManager.js

@@ -259,3 +259,11 @@ export function userCoursesAccount (data) {
   })
 }
 
+// 查看学员协议
+export function getLatest (data) {
+  return request({
+    url: api + `/sysUserContracts/getLatest`,
+    method: 'get',
+    params: data
+  })
+}

+ 1 - 1
src/components/Tooltip/index.vue

@@ -1,6 +1,6 @@
 <template>
   <el-tooltip effect="dark" placement="top">
-    <div slot="content" style="max-width: 200px">{{ content }}</div>
+    <div slot="content" style="max-width: 200px; max-height: 250px; overflow-y: auto;">{{ content }}</div>
     <span class="content-tooltip">{{ content }}</span>
   </el-tooltip>
 </template>

+ 3 - 1
src/router/index.js

@@ -344,7 +344,9 @@ export const asyncRoutes = {
   // 订单审核
   orderAudit: () => import('@/views/businessManager/orderManager/orderAudit'),
   // 长三角比赛
-  matchManager: () => import('@/views/matchManager/index')
+  matchManager: () => import('@/views/matchManager/index'),
+  // 考勤列表
+  attendanceList: () => import('@/views/attendanceManager/attendanceList')
 }
 
 export default router

+ 5 - 3
src/views/app/suggestion.vue

@@ -21,12 +21,13 @@
                            label="内容"
                            prop="content">
             <template slot-scope="scope">
-              <el-popover placement="top-start"
+              <tooltip :content="scope.row.content" />
+              <!-- <el-popover placement="top-start"
                           width="300"
                           trigger="hover"
                           :content="scope.row.content">
                 <span slot="reference">{{ scope.row.content }}</span>
-              </el-popover>
+              </el-popover> -->
               <!-- <div :title="scope.row.content">{{ scope.row.content }}</div> -->
             </template>
           </el-table-column>
@@ -60,8 +61,9 @@
 <script>
 import pagination from '@/components/Pagination/index'
 import { sysSuggestionList } from '@/api/appTenant'
+import Tooltip from '@/components/Tooltip/index'
 export default {
-  components: { pagination },
+  components: { pagination, Tooltip },
   name: 'chargesList',
   data () {
     return {

+ 179 - 0
src/views/attendanceManager/attendanceList/index.vue

@@ -0,0 +1,179 @@
+<!--  -->
+<template>
+  <div class="m-container">
+    <h2>
+      <div class="squrt"></div>作业列表
+    </h2>
+    <div class="m-core">
+      <el-form :inline="true"
+               :model="searchForm">
+        <el-form-item>
+          <el-input v-model.trim="searchForm.search"
+                    @keyup.enter.native="search"
+                    placeholder='请输入课程编号、名称'></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-input v-model.trim="searchForm.search"
+                    @keyup.enter.native="search"
+                    placeholder='请输入乐团名称'></el-input>
+        </el-form-item>
+        <el-form-item prop="organId">
+          <el-select class="multiple"
+                     filterable
+                     v-model.trim="searchForm.organId"
+                     clearable
+                     placeholder="请选择分部">
+            <el-option v-for="(item,index) in organList"
+                       :key="index"
+                       :label="item.name"
+                       :value="item.id"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-date-picker v-model.trim="searchForm.courseTimer"
+                          style="width:420px;"
+                          type="daterange"
+                          value-format="yyyy-MM-dd"
+                          range-separator="至"
+                          start-placeholder="上课开始日期"
+                          end-placeholder="上课结束日期"
+                          :picker-options="{
+        firstDayOfWeek: 1
+    }"></el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <el-button @click="search"
+                     type="danger">搜索</el-button>
+          <el-button @click="onReSet"
+                     type="primary">重置</el-button>
+        </el-form-item>
+      </el-form>
+      <div class="tableWrap">
+        <el-table style="width: 100%"
+                  :header-cell-style="{background:'#EDEEF0',color:'#444'}"
+                  :data="tableList">
+          <el-table-column align="center"
+                           prop="studentId"
+                           label="课程编号"></el-table-column>
+          <el-table-column align="center"
+                           prop="studentId"
+                           label="课程名称"></el-table-column>
+          <el-table-column align="center"
+                           prop="studentId"
+                           label="分部"></el-table-column>
+          <el-table-column align="center"
+                           prop="studentId"
+                           label="乐团名称"></el-table-column>
+          <el-table-column align="center"
+                           prop="studentId"
+                           label="布置时间"></el-table-column>
+          <el-table-column align="center"
+                           prop="studentId"
+                           label="布置老师"></el-table-column>
+          <el-table-column align="center"
+                           prop="studentId"
+                           label="应交人数"></el-table-column>
+          <el-table-column align="center"
+                           prop="studentId"
+                           label="已交人数"></el-table-column>
+          <el-table-column align="center"
+                           prop="studentId"
+                           label="已回复数"></el-table-column>
+          <el-table-column align="center"
+                           prop="studentId"
+                           label="操作">
+            <template slot-scope="scope">
+              <div>
+                <el-button type="text"
+                           @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" />
+        <el-dialog title="作业详情"
+                   :visible.sync="classVisible"
+                   width="1000px">
+          <studentWork :courseScheduleId="activeRow.id"></studentWork>
+        </el-dialog>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import axios from "axios";
+import { getToken } from "@/utils/auth";
+import pagination from "@/components/Pagination/index";
+import load from "@/utils/loading";
+import { getTeacher, getEmployeeOrgan } from "@/api/buildTeam";
+import studentWork from "@/views/teamDetail/componentCourse/studentWork";
+export default {
+  components: { pagination, studentWork },
+  data () {
+    return {
+      searchForm: {
+        search: null,
+        organId: null,
+        courseTimer: null
+      },
+      teacherList: [],
+      tableList: [],
+      organList: [],
+      rules: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50] // 选择限制显示条数
+      },
+      activeRow: null,
+      classVisible: false
+    };
+  },
+  //生命周期 - 创建完成(可以访问当前this实例)
+  created () { },
+  //生命周期 - 挂载完成(可以访问DOM元素)
+  mounted () {
+    getTeacher().then(res => {
+      if (res.code == 200) {
+        this.teacherList = res.data;
+      }
+    });
+    getEmployeeOrgan().then(res => {
+      if (res.code == 200) {
+        this.organList = res.data;
+      }
+    });
+    // 获取分部
+
+    this.init();
+
+
+  },
+  // activated () {
+  //   this.init();
+  // },
+  methods: {
+    init () {
+    },
+    getList () { },
+    search () {
+      this.rules.page = 1
+      this.getList()
+    },
+    onReSet () {
+      this.search()
+    },
+    lookDetail (row) {
+
+    }
+  }
+};
+</script>
+<style lang='scss' scoped>
+</style>

+ 2 - 1
src/views/businessManager/shopManager/shopList.vue

@@ -503,7 +503,8 @@ export default {
         status: null,
         goodsCategoryId: null,
         startTime: null,
-        endTime: null
+        endTime: null,
+        status: null
       },
       headers: {
         Authorization: getToken()

+ 13 - 4
src/views/categroyManager/insideSetting/branchManager.vue

@@ -9,6 +9,10 @@
                class="searchForm"
                v-model.trim="searchForm">
         <el-form-item>
+          <el-input v-model="searchForm.search"
+                    placeholder="请输入合作单位名称"></el-input>
+        </el-form-item>
+        <el-form-item>
           <el-select v-model.trim="searchForm.organId"
                      placeholder="请选择分部"
                      filterable
@@ -174,10 +178,14 @@
           <el-input v-model.trim="form.mobileNo"
                     autocomplete="off"></el-input>
         </el-form-item>
-        <el-form-item label="是否全职资源" prop="fullJobResource" :label-width="formLabelWidth">
+        <el-form-item label="是否全职资源"
+                      prop="fullJobResource"
+                      :label-width="formLabelWidth">
           <el-select v-model.trim="form.fullJobResource">
-              <el-option label="是" :value="1"></el-option>
-              <el-option label="否" :value="0"></el-option>
+            <el-option label="是"
+                       :value="1"></el-option>
+            <el-option label="否"
+                       :value="0"></el-option>
           </el-select>
         </el-form-item>
       </el-form>
@@ -217,7 +225,8 @@ export default {
     return {
       searchForm: {
         organId: null,
-        isEnable: null
+        isEnable: null,
+        search: null
       },
       searchLsit: [],
       tableList: [],

+ 73 - 2
src/views/reportForm/index.vue

@@ -168,13 +168,64 @@
           </el-tooltip>
         </div>
       </div>
+      <el-divider></el-divider>
+      <div class="m-core">
+        <div class="m-wrap">
+          <div class="title">学生考勤:
+          </div>
+          <el-select v-model.trim="attendanceOrganId"
+                     class="organSelect"
+                     style="width:100%"
+                     filterable
+                     placeholder="请选择分部"
+                     clearable>
+            <el-option v-for="(item,index) in organList"
+                       :key="index"
+                       :label="item.name"
+                       :value="item.id"></el-option>
+          </el-select>
+          <el-select v-model.trim="attendanceCourseType"
+                     class="organSelect"
+                     style=" margin-left: 15px; width:100%"
+                     filterable
+                     placeholder="请选择课程类型">
+            <el-option v-for="(item,index) in courseListType"
+                       :key="index"
+                       :label="item.label"
+                       :value="item.value"></el-option>
+          </el-select>
+          <el-date-picker v-model.trim="timer"
+                          style="width:420px;margin-left: 15px;"
+                          type="daterange"
+                          value-format="yyyy-MM-dd"
+                          range-separator="至"
+                          start-placeholder="上课开始日期"
+                          end-placeholder="上课结束日期"
+                          :picker-options="{
+        firstDayOfWeek: 1
+    }"></el-date-picker>
+          <div class="newBand"
+               @click="exportAttendance"
+               v-permission="'export/exportStudentAttendances'">导出</div>
+          <!-- <el-tooltip placement="top"
+                      popper-class="mTooltip">
+            <div slot="content">
+              请选择分部和月份,导出回款统计
+            </div>
+            <i class="el-icon-question micon el-tooltip"
+               style="font-size: 18px; color: #F56C6C"
+               v-permission="'export/studentOrder'"></i>
+          </el-tooltip> -->
+        </div>
+      </div>
     </div>
   </div>
 </template>
 <script>
 import { exportTeacherSalary } from '@/api/generalSettings'
 import { getEmployeeOrgan } from "@/api/buildTeam";
-import { courseType } from '@/utils/searchArray'
+import { courseType, courseListType } from '@/utils/searchArray'
+import { Export } from '@/utils/downLoadFile'
 import cleanDeep from 'clean-deep'
 import axios from 'axios'
 import qs from 'qs'
@@ -191,10 +242,14 @@ export default {
       organIdList: [],
       teacherDefaultSalaryOrganId: '',
       courseArray: courseType,
+      courseListType,
       courseScheduleType: [],
       musicTeamNum: [],
       studentOrganId: '',
-      studentMonth: ''
+      studentMonth: '',
+      attendanceOrganId: '',
+      attendanceCourseType: 'MUSIC',
+      timer: []
       // imageIcon: require("@/assets/images/base/warning.png")
     };
   },
@@ -473,6 +528,22 @@ export default {
         })
       }).catch(() => { })
     },
+    exportAttendance () {
+      let classStartDate, classEndDate;
+      if (this.timer && this.timer.length > 0) {
+        classStartDate = this.timer[0]
+        classEndDate = this.timer[1]
+      } else {
+        classStartDate = null
+        classEndDate = null
+      }
+      Export(this, {
+        url: '/api-web/export/exportStudentAttendances',
+        fileName: '学生考勤.xlsx',
+        method: 'post',
+        params: qs.stringify({ organId: this.attendanceOrganId, groupType: this.attendanceCourseType, classStartDate, classEndDate })
+      }, '您确定导出学生考勤?')
+    },
   }
 
 };

+ 1 - 1
src/views/sporadicManager/sporadicList.vue

@@ -443,7 +443,7 @@ export default {
         { label: '声部更改', value: 2 },
         // { label: '乐器更换', value: 3 },
         // { label: '配件销售', value: 4 },
-        { label: '双十一活动', value: 12 },
+        // { label: '双十一活动', value: 12 },
         { label: '上门费', value: 7 },
         { label: '账户充值', value: 9 },
         { label: '乐保服务', value: 10 },

+ 129 - 92
src/views/studentManager/studentList.vue

@@ -53,7 +53,7 @@
                        value="false"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item prop="hasCourse">
+        <!-- <el-form-item prop="hasCourse">
           <el-select class="multiple"
                      v-model.trim="searchForm.hasCourse"
                      clearable
@@ -63,7 +63,7 @@
             <el-option label="无"
                        value="0"></el-option>
           </el-select>
-        </el-form-item>
+        </el-form-item> -->
         <!-- <el-form-item prop="isMake">
           <el-select
             class="multiple"
@@ -75,7 +75,7 @@
             <el-option label="否" value="false"></el-option>
           </el-select>
         </el-form-item> -->
-        <el-form-item prop="hasPracticeCourse">
+        <!-- <el-form-item prop="hasPracticeCourse">
           <el-select class="multiple"
                      v-model.trim="searchForm.hasPracticeCourse"
                      clearable
@@ -85,7 +85,7 @@
             <el-option label="否"
                        value="false"></el-option>
           </el-select>
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item prop="hasCourse">
           <el-select class="multiple"
                      v-model.trim="searchForm.operatingTag"
@@ -132,6 +132,9 @@
                            prop="organName"
                            label="所属分部"></el-table-column>
           <el-table-column align="center"
+                           prop="subjectName"
+                           label="声部"></el-table-column>
+          <el-table-column align="center"
                            prop="teacherName"
                            label="指导老师"></el-table-column>
           <el-table-column align="center"
@@ -183,7 +186,7 @@
                            width="180px"
                            label="操作">
             <template slot-scope="scope">
-              <router-link style="color:#409EFF"
+              <router-link style="color:#409EFF; padding-right: 10px;"
                            v-permission="'/studentDetail'"
                            :to="{path:`/business/studentDetail?userId=${scope.row.userId}`,query:{search:JSON.stringify(searchForm),rules:JSON.stringify(pageInfo),studentName:scope.row.username}}">查看</router-link>
               <el-button type="text"
@@ -193,6 +196,9 @@
               <el-button v-permission="'api-auth/user/updatePassword2'"
                          @click="resetPassWrod(scope.row)"
                          type="text">修改密码</el-button>
+              <el-button type="text"
+                         @click="lookContracts(scope.row)"
+                         v-permission="'sysUserContracts/getLatest'">下载协议</el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -205,15 +211,15 @@
     </div>
     <el-dialog :title="maskName"
                width="700px"
-               label-width="100px"
                label-position="right"
                class="studentInfo"
+               @close="onMaskClose('studentForm')"
                :close-on-click-modal='false'
                :visible.sync="studentVisible">
       <el-divider>基本信息</el-divider>
       <el-form :model="studentForm"
                :inline="true"
-               label-width="80px"
+               label-width="120px"
                label-position="right"
                ref="studentForm"
                :rules="studentRules">
@@ -248,10 +254,26 @@
                      v-model.trim="studentForm.sex"
                      clearable
                      placeholder="请选择性别">
-            <el-option :value="0"
-                       label="女"></el-option>
             <el-option :value="1"
                        label="男"></el-option>
+            <el-option :value="0"
+                       label="女"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="学生声部"
+                      prop="subjectIdList">
+          <el-select v-model.trim="studentForm.subjectIdList"
+                     filterable
+                     clearable
+                     placeholder="学员声部">
+            <el-option-group v-for="group in subjectList"
+                             :key="group.label"
+                             :label="group.label">
+              <el-option v-for="item in group.options"
+                         :key="item.value"
+                         :label="item.label"
+                         :value="item.value"></el-option>
+            </el-option-group>
           </el-select>
         </el-form-item>
 
@@ -289,12 +311,13 @@
                        :key="index"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="家长姓名">
+        <el-form-item label="家长姓名" prop="parseName">
           <el-input v-model.trim="studentForm.parseName"></el-input>
         </el-form-item>
 
-        <el-form-item label="出生日期">
+        <el-form-item label="出生日期" prop="date">
           <el-date-picker v-model.trim="studentForm.date"
+                          style="width: 185px;"
                           value-format="yyyy-MM-dd"
                           type="date"
                           :picker-options="{
@@ -336,19 +359,19 @@
                :inline="true">
         <el-form-item label="手机号"
                       prop="phone"
-                      label-width="80px"
+                      label-width="120px"
                       :rules="[{ required: true, message: '手机号不能为空',trigger: 'blur'},{pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号',trigger: 'blur' }]">
           <el-input v-model.trim="passwrodForm.phone"></el-input>
         </el-form-item>
         <el-form-item label="输入密码"
                       prop="password"
-                      label-width="80px"
+                      label-width="120px"
                       :rules="[{ required: true, message: '密码不能为空',trigger: 'blur'},{pattern:/^[\w]{6,20}$/,message:'密码为6-20位',trigger: 'blur'}]">
           <el-input v-model.trim="passwrodForm.password"></el-input>
         </el-form-item>
         <el-form-item label="再次输入"
                       prop="password2"
-                      label-width="80px"
+                      label-width="120px"
                       :rules="[{ required: true, message: '密码不能为空',trigger: 'blur'},{pattern:/^[\w]{6,20}$/,message:'密码为6-20位',trigger: 'blur'}]">
           <el-input v-model.trim="passwrodForm.password2"></el-input>
         </el-form-item>
@@ -369,11 +392,13 @@ import {
   getStudentInfoByPhone,
   registerStudent,
   updateStudent,
-  studentHasCourse
+  studentHasCourse,
+  getLatest
 } from "@/api/studentManager";
 import cleanDeep from 'clean-deep'
 import { vaildStudentUrl } from "@/utils/validate";
 import { getEmployeeOrgan, resetPassword2, getTeacher } from "@/api/buildTeam";
+import { subjectListTree } from '@/api/specialSetting'
 import QRCode from "qrcodejs2";
 import store from "@/store";
 import axios from "axios";
@@ -404,6 +429,7 @@ export default {
       organList: [],
       teacherList: [],
       maskTeacherList: [],
+      subjectList: [], // 声部列表
       pageInfo: {
         // 分页规则
         limit: 10, // 限制显示条数
@@ -418,17 +444,17 @@ export default {
         sex: "",
         parseName: "",
         date: "",
-        nation: "",
         serviceTag: null,
         operatingTag: null,
-        teacherId: null
+        teacherId: null,
+        subjectIdList: null
       },
       studentRules: {
         name: [{ required: true, message: "请输入学生姓名" }],
         sex: [{ required: true, message: "请选择学生性别" }],
         date: [{ required: true, message: "请选择出生日期" }],
         organId: [{ required: true, message: "请选择分部" }],
-        nation: [{ required: true, message: "请输入名族" }],
+        subjectIdList: [{ required: true, message: "请选择声部" }],
         serviceTag: [{ required: true, message: "请选择是否参与服务" }],
         operatingTag: [{ required: true, message: "请选择是否参与运营" }],
         teacherId: [{ required: true, message: "请选择指导老师" }]
@@ -467,7 +493,6 @@ export default {
     getTeacher().then(res => {
       if (res.code == 200) {
         this.teacherList = res.data;
-        console.log(this.teacherList.length)
       }
     });
     this.getList();
@@ -580,7 +605,7 @@ export default {
                     nowTime.getFullYear() +
                     (nowTime.getMonth() + 1) +
                     nowTime.getDate();
-                  let fname = `导出学员名单` + ymd; //下载文件的名字
+                  let fname = `导出学员名单` + ymd + '.xlsx'; //下载文件的名字
                   link.href = objectUrl;
                   link.setAttribute("download", fname);
                   document.body.appendChild(link);
@@ -608,7 +633,7 @@ export default {
                 name: res.data.name,
                 sex: res.data.gender,
                 parseName: res.data.parentsName,
-                // sound: parseInt(res.data.subjectId),
+                // sound: parseInt(res.data.subjectIdList),
                 phone: val,
                 date: res.data.birthdate
               };
@@ -618,20 +643,21 @@ export default {
       }
     },
     submitAddStudent () {
+      const studentForm = this.studentForm
       // 效验  然后组数据提交
       this.$refs["studentForm"].validate(item => {
         if (item) {
           let obj = {
-            phone: this.studentForm.phone,
-            username: this.studentForm.name,
-            gender: this.studentForm.sex,
-            realName: this.studentForm.parseName,
-            birthdate: this.studentForm.date,
-            organId: this.studentForm.organId,
-            nation: this.studentForm.nation,
-            serviceTag: this.studentForm.serviceTag,
-            operatingTag: this.studentForm.operatingTag,
-            teacherId: this.studentForm.teacherId
+            phone: studentForm.phone,
+            username: studentForm.name,
+            gender: studentForm.sex,
+            realName: studentForm.parseName,
+            birthdate: studentForm.date,
+            organId: studentForm.organId,
+            serviceTag: studentForm.serviceTag,
+            operatingTag: studentForm.operatingTag,
+            teacherId: studentForm.teacherId,
+            subjectIdList: studentForm.subjectIdList
           };
           registerStudent(obj).then(res => {
             if (res.code == 200) {
@@ -645,20 +671,21 @@ export default {
     },
     // 修改学生信息
     resetStudentSubmie () {
+      const studentForm = this.studentForm
       this.$refs["studentForm"].validate(item => {
         if (item) {
           let obj = {
-            phone: this.studentForm.phone,
-            username: this.studentForm.name,
-            gender: this.studentForm.sex,
-            realName: this.studentForm.parseName,
-            birthdate: this.studentForm.date,
-            organId: this.studentForm.organId,
+            phone: studentForm.phone,
+            username: studentForm.name,
+            gender: studentForm.sex,
+            realName: studentForm.parseName,
+            birthdate: studentForm.date,
+            organId: studentForm.organId,
             id: this.active.userId,
-            nation: this.studentForm.nation,
-            serviceTag: this.studentForm.serviceTag,
-            operatingTag: this.studentForm.operatingTag,
-            teacherId: this.studentForm.teacherId
+            serviceTag: studentForm.serviceTag,
+            operatingTag: studentForm.operatingTag,
+            teacherId: studentForm.teacherId,
+            subjectIdList: studentForm.subjectIdList
           };
           updateStudent(obj).then(res => {
             if (res.code == 200) {
@@ -670,42 +697,63 @@ export default {
         }
       });
     },
-    addStudent () {
-      getTeacher().then(res => {
+    async getSubjectList () {
+      await subjectListTree({
+        delFlag: 0,
+        rows: 9999
+      }).then(res => {
+        let result = res.data;
         if (res.code == 200) {
-          this.maskTeacherList = res.data;
-          this.isNew = true;
-          this.studentVisible = true;
-          this.maskName = "新增学员";
+          let tempArray = [];
+          result.rows.forEach((item, index) => {
+            let subject = [];
+            item.subjects.forEach(s => {
+              subject.push({
+                value: s.id,
+                label: s.name
+              });
+            });
+
+            tempArray[index] = {
+              label: item.name,
+              options: subject
+            };
+          });
+          this.subjectList = tempArray;
         }
       });
     },
-    resetStudent (row) {
+    async addStudent () {
+      await this.getSubjectList()
+      this.isNew = true;
+      this.studentVisible = true;
+      this.maskName = "新增学员";
+    },
+    async resetStudent (row) {
       let organId = row.organId;
-      getTeacher({ organId }).then(res => {
-        if (res.code == 200) {
-          this.maskTeacherList = res.data;
-          this.isNew = false;
-          this.active = row;
-          this.studentVisible = true;
-          this.maskName = "修改学员";
-          console.log(row)
-          this.studentForm = {
-            phone: row.parentsPhone || null,
-            name: row.username || null,
-            sex: row.gender,
-            parseName: row.realName || null,
-            date: row.birthdate || null,
-            organId: row.organId || null,
-            nation: row.nation || null,
-            serviceTag: row.serviceTag || null,
-            operatingTag: row.operatingTag || null,
-            teacherId: row.teacherId || null
-          }
-
-
+      await this.getSubjectList()
+      await this.changeStudentOrgan(row.organId)
+      this.isNew = false;
+      this.active = row;
+      this.studentVisible = true;
+      this.maskName = "修改学员";
+      this.$nextTick(() => {
+        this.studentForm = {
+          phone: row.parentsPhone || null,
+          name: row.username || null,
+          sex: row.gender,
+          parseName: row.realName || null,
+          date: row.birthdate || null,
+          organId: row.organId || null,
+          serviceTag: row.serviceTag,
+          operatingTag: row.operatingTag,
+          teacherId: row.teacherId || null,
+          subjectIdList: Number(row.subjectIdList) || null
         }
-      });
+      })
+    },
+    onMaskClose(formName) {
+      this.$refs[formName].resetFields()
     },
     resetPassWrod (row) {
       this.activatedRow = row;
@@ -744,31 +792,20 @@ export default {
         }
       });
     },
-    changeStudentOrgan (val) {
-      getTeacher({ organId: val }).then(res => {
+    async changeStudentOrgan (val) {
+      this.studentForm.teacherId = null
+      await getTeacher({ organId: val }).then(res => {
         if (res.code == 200) {
           this.maskTeacherList = res.data;
         }
       });
-    }
-  },
-  watch: {
-    studentVisible (val) {
-      if (!val) {
-        this.studentForm = {
-          phone: "",
-          organId: "",
-          name: "",
-          sex: "",
-          parseName: "",
-          date: "",
-          nation: "",
-          serviceTag: null,
-          operatingTag: null,
-          teacherId: null
-        };
-        this.$refs["studentForm"].resetFields();
-      }
+    },
+    lookContracts (row) {
+      getLatest({ userId: row.userId }).then(res => {
+        if (res.code == 200) {
+          window.open(res.data.url)
+        }
+      })
     }
   }
 };

+ 1 - 1
src/views/teacherManager/teacherList.vue

@@ -481,7 +481,7 @@ export default {
   }
 };
 </script>
-<style lang="scss">
+<style lang="scss" scoped>
 .el-button + .el-button {
   margin-left: 0;
 }

+ 6 - 4
src/views/teamBuild/signupList.vue

@@ -215,10 +215,10 @@
                 <el-button type='text'
                            v-permission="'musicGroupQuit/directQuitMusicGroup2'"
                            v-show='scope.row.paymentStatus==2'
-                           @click='quitTeam(scope.row)'>退团</el-button>
+                           @click='quitTeam(scope.row)'>退团退费</el-button>
                 <el-button type="text"
                            v-show="permission('musicGroupQuit/directQuitMusicGroup3')&&scope.row.paymentStatus==2"
-                           @click="quieTeams(scope.row)">退团不退费</el-button>
+                           @click="quieTeams(scope.row)">退团</el-button>
                 <el-button type="text"
                            v-show="permission('visit/add')"
                            @click="addVisit(scope.row)">新增回访</el-button>
@@ -457,7 +457,8 @@
           <el-radio v-model.trim="quitForm.isRefundTeachingAssistantsFee"
                     :label="false">否</el-radio>
         </el-form-item>
-        <el-form-item label="退团原因">
+        <el-form-item label="退团原因"
+                      prop="reason">
           <el-input type="textarea"
                     v-model.trim="quitForm.reason"></el-input>
         </el-form-item>
@@ -649,7 +650,8 @@ export default {
         ],
         isRefundTeachingAssistantsFee: [
           { required: true, message: "选择是否退还教辅费用" }
-        ]
+        ],
+        reason: [{ required: true, message: "请填写退团退费原因" }]
       },
       Fsearch: null,
       Frules: null,

+ 10 - 0
src/views/teamDetail/componentCourse/studentWork.vue

@@ -25,6 +25,9 @@
                          prop="username"
                          label="学生姓名"></el-table-column>
         <el-table-column align="center"
+                         prop="username"
+                         label="学生编号"></el-table-column>
+        <el-table-column align="center"
                          prop="phone"
                          label="手机号"></el-table-column>
         <el-table-column align="center"
@@ -40,6 +43,13 @@
         </el-table-column>
         <el-table-column align="center"
                          prop="isView"
+                         label="是否交付">
+          <template slot-scope="scope">
+            <div>{{ scope.row.isView ? '是' : '否' }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center"
+                         prop="isView"
                          label="是否查看">
           <template slot-scope="scope">
             <div>{{ scope.row.isView ? '是' : '否' }}</div>

+ 19 - 2
src/views/teamDetail/components/salaryList.vue

@@ -33,7 +33,7 @@
           </template>
         </el-table-column>
         <el-table-column align='center'
-                         prop="classGroupName"
+                         prop="courseScheduleName"
                          label="班级名称">
         </el-table-column>
         <el-table-column align='center'
@@ -47,7 +47,24 @@
         </el-table-column>
         <el-table-column align='center'
                          prop="teacherNum"
-                         label="老师人数">
+                         label="主教老师">
+          <template slot-scope="scope">
+            <div>
+              {{scope.row.masterTeacherName }}({{scope.row.masterTeacherId}})
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align='center'
+                         prop="teacherNum"
+                         label="助教老师">
+          <template slot-scope="scope">
+            <div>
+              <p v-for="(item,index) in scope.row.teachingTeachers"
+                 :key="index"
+                 v-if="item.teacherRole == 'TEACHING'"> {{item.userName }}({{item.userId}})</p>
+
+            </div>
+          </template>
         </el-table-column>
 
         <el-table-column align='center'

+ 6 - 4
src/views/teamDetail/components/studentList.vue

@@ -219,10 +219,10 @@
 
               <el-button type="text"
                          v-if="permission('musicGroupQuit/directQuitMusicGroup')&&scope.row.studentStatus != 'QUIT'"
-                         @click="quieTeamMask(scope.row)">退团</el-button>
+                         @click="quieTeamMask(scope.row)">退团退费</el-button>
               <el-button type="text"
                          v-if="permission('musicGroupQuit/directQuitMusicGroup1')&&scope.row.studentStatus != 'QUIT'"
-                         @click="quieTeam(scope.row)">退团不退费</el-button>
+                         @click="quieTeam(scope.row)">退团</el-button>
 
               <el-button type="text"
                          v-if="permission('visit/add')"
@@ -565,7 +565,8 @@
           <el-radio v-model.trim="quitForm.isRefundTeachingAssistantsFee"
                     :label="false">否</el-radio>
         </el-form-item>
-        <el-form-item label="退团原因">
+        <el-form-item label="退团原因"
+                      prop="reason">
           <el-input type="textarea"
                     v-model.trim="quitForm.reason"></el-input>
         </el-form-item>
@@ -849,7 +850,8 @@ export default {
         ],
         isRefundTeachingAssistantsFee: [
           { required: true, message: "选择是否退还教辅费用" }
-        ]
+        ],
+        reason: [{ required: true, message: "请填写退团退费原因" }]
       },
       maskRules: {
         studentName: [{ required: true, message: "请输入学生姓名" }],

+ 10 - 3
src/views/teamDetail/teamCourseList.vue

@@ -226,9 +226,16 @@
             <template slot-scope="scope">{{ scope.row.isCallNames ? '是' : '否' }}</template>
           </el-table-column>
           <el-table-column align="center"
+                           width="150px"
                            prop="teacherName"
                            label="指导老师"
-                           fixed="right"></el-table-column>
+                           fixed="right">
+            <template slot-scope="scope">
+              <div>
+                {{scope.row.teacherName}}({{scope.row.actualTeacherId}})
+              </div>
+            </template>
+          </el-table-column>
           <el-table-column align="center"
                            label="详情"
                            fixed="right"
@@ -316,8 +323,8 @@
           <div class="inputStyle">{{ maskForm.remark}}</div>
         </el-form-item>
       </el-form>
+      <!--  v-if="maskForm.status != 'NOT_START'" -->
       <el-tabs v-model.trim="activeName"
-               v-if="maskForm.status != 'NOT_START'"
                type="card"
                @tab-click="handleClick">
         <el-tab-pane label="点名"
@@ -335,7 +342,7 @@
           </div>
         </el-tab-pane>
         <el-tab-pane label="作业"
-                     v-if="maskForm.type != 'VIP'"
+                     v-if="maskForm.teachMode != 'OFFLINE'"
                      name="third">
           <div v-if="activeName == 'third'">
             <studentWork :courseScheduleId="maskForm.id"></studentWork>

+ 2 - 3
src/views/teamDetail/teamList.vue

@@ -319,9 +319,7 @@ export default {
       }
 
       sessionStorage.setItem('resetCode', '1')
-      this.$nextTick(res => {
-        this.getList();
-      })
+
       getEmployeeOrgan().then(res => {
         if (res.code == 200) {
           this.organList = res.data;
@@ -336,6 +334,7 @@ export default {
       // 获取乐团合作单位(学校)
       // getCooperation().then(res => {
       // })
+      this.getList();
     },
     permission (str) {
       return permission(str)

+ 3 - 1
src/views/vipClass/vipList.vue

@@ -542,9 +542,11 @@ export default {
       let userId = row.userId; // 课程组上指导老师
       let rules = JSON.stringify(this.rules);
       let searchForm = JSON.stringify(this.searchForm);
+      let name = row.name;
+      let endTimeStr = row.coursesExpireDate
       this.$router.push({
         path: "/business/vipReset",
-        query: { id, educationalTeacherId, organId, userId, rules, searchForm }
+        query: { id, educationalTeacherId, organId, userId, rules, searchForm, name, endTimeStr }
       });
     },
     // 删除VIP

+ 30 - 14
src/views/vipClass/vipReset.vue

@@ -2,12 +2,12 @@
   <div class="m-container">
     <h2>
       <el-page-header @back="goBack"
-                      content="VIP修改"></el-page-header>
+                      :content="name"></el-page-header>
     </h2>
     <div class="vipwrap">
-      <div class="newBand"
+      <!-- <div class="newBand"
            v-permission="'vipGroupManage/appendVipGroupCourseSchedules'"
-           @click="addCourse">VIP加课</div>
+           @click="addCourse">VIP加课</div> -->
       <div class="newBand"
            v-permission="'courseSchedule/vipCourseAdjust'"
            @click="adjustment">批量调整</div>
@@ -130,9 +130,7 @@
                       prop="date">
           <el-date-picker v-model.trim="maskForm.date"
                           type="date"
-                          :picker-options="{
-                              firstDayOfWeek:1
-                            }"
+                          :picker-options="coursesDate(this.endTime)"
                           value-format="yyyy-MM-dd"
                           placeholder="选择日期"></el-date-picker>
         </el-form-item>
@@ -307,7 +305,7 @@
         <el-form-item label="排课起始时间"
                       prop="courseTime">
           <el-date-picker v-model.trim="adjustmentForm.courseTime"
-                          :picker-options="pickerOptions"
+                          :picker-options="pickerOptions(this.endTime)"
                           style="width:200px!important;"
                           type="date"
                           value-format="yyyy-MM-dd"
@@ -467,12 +465,7 @@ export default {
   },
   data () {
     return {
-      pickerOptions: {
-        firstDayOfWeek: 1,
-        disabledDate (time) {
-          return time.getTime() + 86400000 <= new Date().getTime();
-        }
-      },
+
       addrVisible: false,
       adjustmentVisible: false,
       addCourseVisible: false,
@@ -553,6 +546,8 @@ export default {
       startTime: "",
       chioseVipList: [],
       organList: [],
+      name: '',
+      endTime: ''
     };
   },
   created () { },
@@ -569,6 +564,8 @@ export default {
       this.vipid = this.$route.query.id;
       let query = this.$route.query
       let addrForm = this.addrForm
+      this.name = this.$route.query.name;
+      this.endTime = this.$route.query.endTimeStr
       if (query.educationalTeacherId) {
         addrForm.educationalTeacherId = Number(query.educationalTeacherId);
       } else {
@@ -987,6 +984,25 @@ export default {
           this.$set(item, 'startClassTime', '')
         }
       })
+    },
+    coursesDate (dateStr) {
+      let self = this;
+      return {
+        firstDayOfWeek: 1,
+        disabledDate: time => {
+          let date = new Date(dateStr.replace(/-/, "/"));
+          return time.getTime() > date.getTime();
+        }
+      };
+    },
+    pickerOptions (dateStr) {
+      return {
+        firstDayOfWeek: 1,
+        disabledDate (time) {
+          let date = new Date(dateStr.replace(/-/, "/"));
+          return time.getTime() + 86400000 <= new Date().getTime() || time.getTime() > date.getTime();
+        }
+      }
     }
   },
   watch: {
@@ -1003,7 +1019,7 @@ export default {
         }
         this.weekList = [];
         this.$refs['tableList'].clearSelection();
-        this.$refs["adjustmentForm"].resetFields();
+        this.$refs.adjustmentForm.resetFields();
 
         this.addWeek();
       }