wolyshaw 4 年之前
父节点
当前提交
f054ff6007

+ 12 - 1
src/api/buildTeam.js

@@ -1,4 +1,5 @@
 import request from '@/utils/request'
+import request2 from '@/utils/request2'
 import qs from 'qs'
 let api = '/api-web'
 // 获取分部
@@ -805,6 +806,16 @@ export function getHoliday (data) {
   })
 }
 
+// 获取指定学员在指定乐团下本次课排课时长
+export function getMusicCourseSettingsWithStudents (data) {
+  return request2({
+    url: api + `/musicGroupPaymentCalender/getMusicCourseSettingsWithStudents`,
+    method: 'GET',
+    params: data,
+    data: {},
+  })
+}
+
 // 获取乐团(声部)的(没有某种班级类型)学生
 export function getMusicGroupStuNoClassType (data) {
   return request({
@@ -1348,4 +1359,4 @@ export function getSubjectGoods (data) {
     method: 'get',
     params: data
   })
-}
+}

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

@@ -146,6 +146,7 @@ export default {
         this.eclass = []
       } else if (this.form.leixing === '2') {
         this.eclass = [{}]
+        this.$set(this.form, 'musicGroupOrganizationCourseSettingId', '')
       }
     },
     'form.musicGroupOrganizationCourseSettingId'() {
@@ -225,8 +226,8 @@ export default {
         console.log(data)
         try {
           await musicGroupPaymentCalenderAdd(data)
+          // this.nextVisible = true
         } catch (error) {}
-        // this.nextVisible = true
       }
     }
   },

+ 2 - 2
src/views/teamBuild/components/soundSetComponents/soundSetCore.vue

@@ -408,7 +408,7 @@ export default {
         schoolId: this.topfor.address,
         expectStartGroupDate: this.topfor.startTime,
         isClassroomLessons: this.topfor.isClass,
-        status,
+        status: 'DRAFT',
         ownershipType: this.topfor.ownershipType,
         repairUserId: this.topfor.repairUserId,
         feeType: this.topfor.feeType
@@ -454,4 +454,4 @@ export default {
 /deep/.el-collapse-item__header {
   border-bottom: 1px solid #fff;
 }
-</style>
+</style>

+ 69 - 22
src/views/teamDetail/components/modals/classroom-setting-item.vue

@@ -2,62 +2,97 @@
   <div>
     <el-form-item
       label="排课次数"
+      prop="courseNum"
     >
-      <el-input placeholder="请输入排课次数"/>
+      <el-input v-model="form.courseNum" placeholder="请输入排课次数"/>
     </el-form-item>
     <el-form-item
       label="排课起始时间"
+      prop="courseTime"
     >
-      <el-input placeholder="请输入排课起始时间"/>
+      <el-date-picker v-model.trim="form.courseTime"
+        :picker-options="pickerOptions"
+        style="width:100%!important;"
+        type="date"
+        value-format="yyyy-MM-dd"
+        placeholder="选择日期">
+      </el-date-picker>
     </el-form-item>
     <el-form-item
       label="跳过节假日"
     >
-      <el-radio-group>
+      <el-radio-group v-model="form.checked">
         <el-radio :label="3">是</el-radio>
         <el-radio :label="6">否</el-radio>
       </el-radio-group>
     </el-form-item>
     <el-table
+      v-if="form && form.cycle"
       :data="form.cycle"
     >
       <el-table-column
         prop="date"
         label="循环周期"
         width="180">
-        <template>
-          <el-form-item inline-message>
-            <el-input placeholder="请输入循环周期"/>
+        <template slot-scope="scope">
+          <el-form-item inline-message prop="dayOfWeek">
+            <el-select v-model.trim="scope.row.dayOfWeek"
+              style="width:100%!important"
+              placeholder="请选择循环周期"
+              clearable
+              filterable>
+              <el-option v-for="(item,index) in weekDateList"
+                :key="index"
+                :label="item.label"
+                :value="item.value">
+              </el-option>
+            </el-select>
           </el-form-item>
         </template>
       </el-table-column>
       <el-table-column
-        prop="date"
+        prop="time"
         label="课程时长(分)"
         width="180">
-        <template>
+        <template slot-scope="scope">
           <el-form-item inline-message>
-            <el-input placeholder="请输入课程时长"/>
+            <el-input v-model="scope.row.time" placeholder="请输入课程时长"/>
           </el-form-item>
         </template>
       </el-table-column>
       <el-table-column
-        prop="date"
+        prop="startClassTime"
         label="开始时间"
         width="180">
-        <template>
+        <template slot-scope="scope">
           <el-form-item inline-message>
-            <el-input placeholder="请输入课程时长"/>
+            <el-time-picker style="width: 100%!important;"
+              v-model.trim="scope.row.startClassTime"
+              format='HH:mm'
+              value-format='HH:mm'
+              placeholder="请选择时间"
+              :picker-options="{
+                selectableRange: ['04:30:00 - 23:59:59']
+              }">
+            </el-time-picker>
           </el-form-item>
         </template>
       </el-table-column>
       <el-table-column
-        prop="date"
+        prop="endClassTime"
         label="结束时间"
         width="180">
-        <template>
+        <template slot-scope="scope">
           <el-form-item inline-message>
-            <el-input  placeholder="请输入课程时长"/>
+            <el-time-picker style="width: 100%!important;"
+              v-model.trim="scope.row.endClassTime"
+              format='HH:mm'
+              value-format='HH:mm'
+              placeholder="请选择时间"
+              :picker-options="{
+                selectableRange: [scope.row.startClassTime + ':00 - 23:59:59']
+              }">
+            </el-time-picker>
           </el-form-item>
         </template>
       </el-table-column>
@@ -83,11 +118,25 @@
 <script>
 export default {
   props: ['form'],
-  created() {
-    if (!this.form) {
-      this.form = {
-        cycle: [{}]
+  computed: {
+    pickerOptions() {
+      return {
+        firstDayOfWeek: 1,
+        disabledDate (time) {
+          return time.getTime() + 86400000 <= new Date().getTime();
+        }
       }
+    },
+    weekDateList() {
+      return [
+        { value: "1", label: "星期一" },
+        { value: "2", label: "星期二" },
+        { value: "3", label: "星期三" },
+        { value: "4", label: "星期四" },
+        { value: "5", label: "星期五" },
+        { value: "6", label: "星期六" },
+        { value: "7", label: "星期日" }
+      ]
     }
   },
   methods: {
@@ -95,9 +144,7 @@ export default {
       this.form.cycle.push({})
     },
     remove(index) {
-      const list = [...this.form.cycle]
-      list[index] = null
-      this.form.cycle = list.map(item => !!item)
+      this.form.cycle.splice(index, 1)
     }
   },
 }

+ 45 - 5
src/views/teamDetail/components/modals/classroom-setting.vue

@@ -3,10 +3,14 @@
     <el-form
       :model="form"
       inline
+      ref="form"
       label-suffix=": "
       label-width="100px"
     >
-      <el-form-item label="主教老师">
+      <el-form-item
+        label="主教老师"
+        :rules="[{ required: true, message: '请选择主教老师' }]"
+      >
         <el-select
           v-model.trim="form.coreTeacher"
           placeholder="请选择主教老师"
@@ -61,28 +65,64 @@
   </div>
 </template>
 <script>
+import { getMusicCourseSettingsWithStudents } from '@/api/buildTeam'
 import courseItem from "./classroom-setting-item";
 export default {
-  props: ["teacherList", "activeType", "courseTypeList", 'cooperationList'],
+  props: ["teacherList", "activeType", "courseTypeList", 'cooperationList', 'musicGroupId', 'detail'],
   components: {
     courseItem,
   },
   data() {
     return {
       form: {
-        coreTeacher: "",
+        coreTeacher: '',
         assistant: '',
         classs: {}
       },
       collapses: [0],
     };
   },
-  mounted() {
-    console.log(this.courseTypeList);
+  created() {
+    const classs = {}
+    for (const item of this.courseTypeList) {
+      classs[item.value] = {
+        cycle: [{}]
+      }
+    }
+    this.form.classs = classs
+  },
+  async mounted() {
+    try {
+      await getMusicCourseSettingsWithStudents({
+        musicGroupId: this.musicGroupId,
+        studentIds: this.detail.subjectIdList
+      })
+    } catch (error) {}
   },
   methods: {
     submit() {
+      this.$refs.form.validate(valid => {
+        if (valid) {
+          console.log({...this.form})
+          const list = []
 
+          for (const key in this.form.classs) {
+            if (this.form.classs.hasOwnProperty(key)) {
+              const item = this.form.classs[key];
+              list.push({
+                type: key,
+                startDate: item.courseTime,
+                courseTimeDtoList: item.cycle.map(_ => ({
+                  courseType: key,
+                  dayOfWeek: _.dayOfWeek,
+                  endClassTime: _.endClassTime,
+                  startClassTime: _.startClassTime
+                }))
+              })
+            }
+          }
+        }
+      })
     },
     collapseChange(val) {
       this.collapses = val

+ 4 - 0
src/views/teamDetail/components/resetClass.vue

@@ -301,9 +301,11 @@
     >
       <classroomSetting
         :teacherList="teacherList"
+        :musicGroupId="teamid"
         :activeType="activeType"
         :courseTypeList="courseTypeList"
         :cooperationList="cooperationList"
+        :detail="infoDetail"
         @close="infoVisible = false"
       />
     </el-dialog>
@@ -771,6 +773,7 @@ export default {
       topForm: {
         classType: ""
       },
+      infoDetail: null,
       classTimeList,
       tableList: [],
       maxClassList: [],
@@ -1172,6 +1175,7 @@ export default {
     },
     // 班级调整
     classAdjustment (row) {
+      this.infoDetail = row
       this.activeType = row.type;
       this.activeClass = row.id;
       // this.activeListStudent = row.subjectIdList.split(',')