wolyshaw 4 anni fa
parent
commit
849798edb8

+ 16 - 0
src/constant/index.js

@@ -54,3 +54,19 @@ export const genderType = {
   1: '男',
   0: '女',
 }
+
+export const paymentPatternType = {
+  0: '按月',
+  1: '按季',
+  2: '一次性',
+}
+
+export const payUserType = {
+  STUDENT: '学员',
+  SCHOOL: '学校',
+}
+
+export const paymentType = {
+  0: '续费',
+  1: '报名',
+}

+ 13 - 1
src/utils/index.js

@@ -8,6 +8,7 @@
  * @param {string} cFormat
  * @returns {string}
  */
+import dayjs from 'dayjs'
 export function parseTime (time, cFormat) {
   if (arguments.length === 0) {
     return null
@@ -141,11 +142,22 @@ export const objectToOptions = data => {
   for (const key in data) {
     if (data.hasOwnProperty(key)) {
       const item = data[key]
+      const upkey = key.toLocaleUpperCase()
       options.push({
         label: item,
-        value: key
+        value: (upkey === 'TRUE' || upkey === 'FALSE' ? upkey === 'TRUE' : key)
       })
     }
   }
   return options
 }
+
+export const getTimes = (times, keys = []) => {
+  if (times && times.length) {
+    return {
+      [keys[0] || 'start']: dayjs(times[0]).format('YYYY-MM-DD'),
+      [keys[1] || 'start']: dayjs(times[1]).format('YYYY-MM-DD'),
+    }
+  }
+  return {}
+}

+ 12 - 5
src/views/categroyManager/specialSetup/discountManage.vue

@@ -189,10 +189,17 @@ export default {
         this.$message.error(res.msg)
       }
     },
-    onTypesDel (row) {
-      delChargeTypeSubjectMapper({id: row.id}).then(res => {
-        this.messageTips('删除', res)
-      })
+    async onTypesDel (row) {
+      try {
+        await this.$confirm('是否删除此条数据?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        })
+        delChargeTypeSubjectMapper({id: row.id}).then(res => {
+          this.messageTips('删除', res)
+        })
+      } catch (error) {}
     },
     getChargeTypeList() {
       chargeTypeList({
@@ -231,7 +238,7 @@ export default {
         //     row.subjectIds = subjectIds
         //   })
         //   this.tableList = result.rows
-        //   this.pageInfo.total = result.total
+          this.pageInfo.total = result.total
         // }
       })
     },

+ 14 - 10
src/views/categroyManager/specialSetup/typesManager.vue

@@ -17,13 +17,9 @@
             <template slot-scope="scope">
               <el-button @click="openTypes('update', scope.row)" v-permission="'chargeType/upSet'"
                          type="text">修改</el-button>
-              <el-popconfirm
-                title="是否确认删除此条数据?"
-                @onConfirm="onTypesDel(scope.row)"
-              >
-                <el-button slot="reference" v-permission="'chargeType/del'"
+              <el-button slot="reference" v-permission="'chargeType/del'"
+                  @click="onTypesDel(scope.row)"
                   type="text">删除</el-button>
-              </el-popconfirm>
             </template>
           </el-table-column>
         </el-table>
@@ -45,6 +41,7 @@
                       prop="name"
                       :label-width="formLabelWidth">
           <el-input v-model.trim="form.name"
+                    placeholder="请输入收费类型"
                     autocomplete="off"></el-input>
         </el-form-item>
       </el-form>
@@ -122,10 +119,17 @@ export default {
         this.$message.error(res.msg)
       }
     },
-    onTypesDel (row) {
-      chargeTypeDel(row.id).then(res => {
-        this.messageTips('删除', res)
-      })
+    async onTypesDel (row) {
+      try {
+        await this.$confirm('是否确认删除此条数据?', '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        })
+        chargeTypeDel(row.id).then(res => {
+          this.messageTips('删除', res)
+        })
+      } catch (error) {}
     },
     getList () {
       chargeTypeList({

+ 14 - 0
src/views/resetTeaming/api.js

@@ -0,0 +1,14 @@
+import request2 from '@/utils/request2'
+
+export const musicGroupPaymentCalenderQueryPage = data => request2({
+  url: '/api-web/musicGroupPaymentCalender/queryPage',
+  data: {},
+  params: data,
+  requestType: 'form'
+})
+
+export const musicGroupPaymentCalenderAdd = data => request2({
+  url: '/api-web/musicGroupPaymentCalender/add',
+  data,
+  method: 'post',
+})

+ 5 - 1
src/views/resetTeaming/components/resetPayList.vue

@@ -229,6 +229,8 @@
         @close="userVisible = false"
         @submited="getList"
         :type="payFormType"
+        :baseInfo="baseInfo"
+        :musicGroupId="$route.query.id"
       />
     </el-dialog>
 
@@ -269,10 +271,12 @@ import dayjs from 'dayjs'
 import QRCode from 'qrcodejs2'
 import { vaildStudentUrl } from '@/utils/validate'
 import { addMusicGroupPaymentCalender, getMusicGroupPaymentCalender, resetMusicGroupPaymentCalender, delMusicGroupPaymentCalender } from "@/api/buildTeam";
+import { musicGroupPaymentCalenderQueryPage } from '../api'
 import setStudentFee from './studentPayBase'
 import userPayForm from '../modals/user-pay-form'
 import schoolPayForm from '../modals/school-pay-form'
 export default {
+  props: ['baseInfo'],
   components: {
     pagination,
     setStudentFee,
@@ -354,7 +358,7 @@ export default {
       this.userVisible = true
     },
     getList () {
-      getMusicGroupPaymentCalender({ page: this.rules.page, rows: this.rules.limit, musicGroupId: this.$route.query.id }).then(res => {
+      musicGroupPaymentCalenderQueryPage({ page: this.rules.page, rows: this.rules.limit, musicGroupId: this.$route.query.id }).then(res => {
         if (res.code == 200) {
           this.rules.total = res.data.total
           this.tableList = res.data.rows;

+ 7 - 1
src/views/resetTeaming/index.vue

@@ -14,6 +14,8 @@
                      v-if="permission('/resetTeaming/teamBaseInfo')"
                      name="1">
           <teamBaseInfo v-if="activeIndex == 1"
+                        @getBaseInfo="getBaseInfo"
+                        :baseInfo="baseInfo"
                         @getName='getName' />
         </el-tab-pane>
         <el-tab-pane label="声部设置"
@@ -29,7 +31,7 @@
         <el-tab-pane label="缴费设置"
                      v-if="permission('/resetTeaming/resetPayList')"
                      name="3">
-          <resetPayList v-if="activeIndex == 3" />
+          <resetPayList :baseInfo="baseInfo" v-if="activeIndex == 3" />
         </el-tab-pane>
 
         <el-tab-pane label="班级调整"
@@ -69,6 +71,7 @@ export default {
     return {
       activeIndex: '1',
       teamid: '',
+      baseInfo: null,
       // permissionStatus: {
       //   teamBaseInfo: true,
       //   resetSound: true,
@@ -114,6 +117,9 @@ export default {
     onCancel () {
       this.$router.push({ path: '/business/teamDetail', query: { search: this.Fsearch, rules: this.Frules } })
     },
+    getBaseInfo(baseInfo) {
+      this.baseInfo = baseInfo
+    },
     handleClick (val) {
       this.activeIndex = val.name
     },

+ 47 - 20
src/views/resetTeaming/modals/extra-class.vue

@@ -8,73 +8,86 @@
       style="width: 100%;text-alogn: center;"
     >
       <el-table-column
-        label="课类型"
+        label="课类型"
         width="150">
         <template slot-scope="scope">
           <el-form-item
-            :prop="'form.' + scope.$index + '.ke1'"
-            :rules="{ required: true, message: '请选择课类型', trigger: 'change' }"
+            :prop="'form.' + scope.$index + '.courseType'"
+            :rules="{ required: true, message: '请选择课类型', trigger: 'change' }"
           >
             <el-select
               style="width: 90%!important;"
               size="small"
-              v-model="scope.row.ke1"
-              placeholder="课类型"
+              v-model="list.form[scope.$index].courseType"
+              placeholder="课类型"
               clearable
             >
-              <el-option label="1" value="1"></el-option>
+              <el-option
+                v-for="(item, index) in courseTypeOptions"
+                :key="index"
+                :label="item.label"
+                :value="item.value"
+              ></el-option>
             </el-select>
           </el-form-item>
         </template>
       </el-table-column>
       <el-table-column
-        label="是否免费"
+        label="是否可选"
         width="150">
         <template slot-scope="scope">
           <el-form-item
-            :prop="'form.' + scope.$index + '.ke2'"
-            :rules="{ required: true, message: '请选择是否免费', trigger: 'change' }"
+            :prop="'form.' + scope.$index + '.isStudentOptional'"
+            :rules="{ required: true, message: '请选择是否可选', trigger: 'change' }"
           >
             <el-select
               style="width: 90%!important;"
               size="small"
-              v-model="scope.row.ke2"
-              placeholder="是否免费"
+              v-model="list.form[scope.$index].isStudentOptional"
+              placeholder="是否可选"
               clearable
             >
-              <el-option label="1" value="1"></el-option>
+              <el-option
+                v-for="(item, index) in boolOptionsOptions"
+                :key="index"
+                :label="item.label"
+                :value="item.value"
+              ></el-option>
             </el-select>
           </el-form-item>
         </template>
       </el-table-column>
       <el-table-column
-        label="课时长(分钟)"
+        label="课时长(分钟)"
         width="150">
         <template slot-scope="scope">
           <el-form-item
-            :prop="'form.' + scope.$index + '.num'"
-            :rules="{ required: true, message: '请输入课时长', trigger: 'blur' }"
+            :prop="'form.' + scope.$index + '.courseTotalMinuties'"
+            :rules="{ required: true, message: '请输入课时长', trigger: 'blur' }"
           >
             <el-input-number
               size="small"
               style="width: 90%!important;"
               class="number-input"
-              v-model="scope.row.num"
+              v-model="list.form[scope.$index].courseTotalMinuties"
               :controls="false"
               :precision="0"
               :min="1"
-              placeholder="课时长"
+              placeholder="课时长"
             />
           </el-form-item>
         </template>
       </el-table-column>
       <el-table-column
-        label="每分钟费用(元)"
+        label="现价(元)"
         width="120">
       </el-table-column>
       <el-table-column
-        label="课程费用(元)"
+        label="原价(元)"
         width="100">
+        <template slot-scope="scope">
+          {{ getOldMoney(scope.$index) }}
+        </template>
       </el-table-column>
       <el-table-column
         width="60">
@@ -94,15 +107,29 @@
   </el-form>
 </template>
 <script>
+import { courseType, boolOptions } from '@/constant'
+import { objectToOptions } from '@/utils'
+import numeral from 'numeral'
 export default {
   props: ['form'],
   data() {
     return {
-      list: {
+      courseTypeOptions: objectToOptions(courseType),
+      boolOptionsOptions: objectToOptions(boolOptions),
+    }
+  },
+  computed: {
+    list() {
+      return {
         form: this.form
       }
     }
   },
+  methods: {
+    getOldMoney(index) {
+      return numeral(this.list.form[index].courseTotalMinuties * this.list.form[index].unitPrice).format('0,0.00')
+    }
+  },
 }
 </script>
 <style lang="less" scoped>

+ 21 - 5
src/views/resetTeaming/modals/payment-cycle.vue

@@ -21,12 +21,26 @@
       />
     </el-form-item>
     <el-form-item
+      label="缴费方式"
+      prop="paymentPattern"
+      :rules="[{required: true, message: '请选择缴费方式', trigger: 'change'}]"
+    >
+      <el-select style="width: 100%!important;" v-model="form.paymentPattern" placeholder="请选择缴费方式">
+        <el-option
+          v-for="item in paymentPatternTypeOptions"
+          :key="item.value"
+          :label="item.label"
+          :value="item.value">
+        </el-option>
+      </el-select>
+    </el-form-item>
+    <el-form-item
       label="缴费时间"
-      prop="value1"
+      prop="paymentDate"
       :rules="[{required: true, message: '请选择缴费时间', trigger: 'blur'}]"
     >
       <el-date-picker
-        v-model="form.value1"
+        v-model="form.paymentDate"
         type="daterange"
         style="width: 100%;"
         range-separator="至"
@@ -36,11 +50,11 @@
     </el-form-item>
     <el-form-item
       label="缴费有效期"
-      prop="value2"
+      prop="paymentValid"
       :rules="[{required: true, message: '请选择缴费有效期', trigger: 'blur'}]"
     >
       <el-date-picker
-        v-model="form.value2"
+        v-model="form.paymentValid"
         type="daterange"
         style="width: 100%;"
         range-separator="至"
@@ -51,11 +65,13 @@
   </el-form>
 </template>
 <script>
+import { paymentPatternType } from '@/constant'
+import { objectToOptions } from '@/utils'
 export default {
   props: ['form', 'className'],
   data() {
     return {
-
+      paymentPatternTypeOptions: objectToOptions(paymentPatternType),
     }
   },
 }

+ 29 - 38
src/views/resetTeaming/modals/user-baseinfo.vue

@@ -11,8 +11,8 @@
       :rules="[{required: true, message: '请选择缴费类型', trigger: 'change'}]"
     >
       <el-radio-group style="width: 100%" v-model="form.leixing">
-        <el-radio label="0">乐团课程</el-radio>
-        <el-radio label="1">临时加课</el-radio>
+        <el-radio label="1">乐团课程</el-radio>
+        <el-radio label="2">临时加课</el-radio>
       </el-radio-group>
     </el-form-item>
     <el-form-item
@@ -21,62 +21,53 @@
       v-if="isCommon"
       :rules="[{required: true, message: '请选择乐团模式', trigger: 'change'}]"
     >
-      <el-select style="width: 100%!important;" v-model="form.moshi" placeholder="请选择乐团模式">
+      <el-select
+        style="width: 100%!important;"
+        v-model="form.moshi"
+        placeholder="请选择乐团模式"
+        @change="$listeners.getCharges"
+      >
         <el-option
-          v-for="item in options"
-          :key="item.value"
-          :label="item.label"
-          :value="item.value">
+          v-for="item in typeList"
+          :key="item.id"
+          :label="item.name"
+          :value="item.id">
         </el-option>
       </el-select>
     </el-form-item>
     <el-form-item
       label="收费标准"
-      prop="shoufei"
+      prop="musicGroupOrganizationCourseSettingId"
       v-if="isCommon"
       :rules="[{required: true, message: '请选择收费标准', trigger: 'change'}]"
     >
-      <el-select style="width: 100%!important;" v-model="form.shoufei" placeholder="请选择收费标准">
+      <el-select style="width: 100%!important;" v-model="form.musicGroupOrganizationCourseSettingId" placeholder="请选择收费标准">
         <el-option
-          v-for="item in options"
-          :key="item.value"
-          :label="item.label"
-          :value="item.value">
-        </el-option>
-      </el-select>
-    </el-form-item>
-    <el-form-item
-      label="缴费方式"
-      prop="jiaofei"
-      :rules="[{required: true, message: '请选择缴费方式', trigger: 'change'}]"
-    >
-      <el-select style="width: 100%!important;" v-model="form.jiaofei" placeholder="请选择缴费方式">
-        <el-option
-          v-for="item in options"
-          :key="item.value"
-          :label="item.label"
-          :value="item.value">
+          v-for="item in charges"
+          :key="item.id"
+          :label="item.name"
+          :value="item.id">
         </el-option>
       </el-select>
     </el-form-item>
     <el-form-item
       label="是否赠送乐团网管课"
-      prop="zengsong"
+      prop="isGiveMusicNetwork"
       :rules="[{required: true, message: '请选择是否赠送乐团网管课', trigger: 'change'}]"
     >
-      <el-radio-group style="width: 100%" v-model="form.zengsong">
-        <el-radio label="3">是</el-radio>
-        <el-radio label="6">否</el-radio>
+      <el-radio-group style="width: 100%" v-model="form.isGiveMusicNetwork">
+        <el-radio :label="true">是</el-radio>
+        <el-radio :label="false">否</el-radio>
       </el-radio-group>
     </el-form-item>
     <el-form-item
       label="备注"
-      prop="desc"
+      prop="memo"
       :rules="[{required: true, message: '请输入备注', trigger: 'blur'}]"
     >
-      <el-input type="textarea" v-model="form.desc"></el-input>
+      <el-input type="textarea" v-model="form.memo"></el-input>
     </el-form-item>
-    <el-form-item
+    <!-- <el-form-item
       label="缴费金额(元)"
       prop="money"
       :rules="[{required: true, message: '请输入缴费金额', trigger: 'blur'}]"
@@ -89,8 +80,8 @@
         :min="1"
         placeholder="请输入缴费金额"
       />
-    </el-form-item>
-    <el-form-item
+    </el-form-item> -->
+    <!-- <el-form-item
       label="缴费有效期"
       prop="value2"
       v-if="!isUserType"
@@ -104,12 +95,12 @@
         start-placeholder="开始日期"
         end-placeholder="结束日期">
       </el-date-picker>
-    </el-form-item>
+    </el-form-item> -->
   </el-form>
 </template>
 <script>
 export default {
-  props: ['form', 'isCommon', 'isUserType'],
+  props: ['form', 'isCommon', 'isUserType', 'typeList', 'charges'],
   data() {
     return {
       options: [

+ 71 - 38
src/views/resetTeaming/modals/user-pay-form.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <el-alert
-      title="基础信息设置"
+      title="课程信息设置"
       :closable="false"
       class="alert"
       type="info">
@@ -10,6 +10,9 @@
       :form.sync="form"
       :isCommon="isCommon"
       :isUserType="isUserType"
+      @getCharges="getCharges"
+      :typeList="typeList"
+      :charges="charges"
       ref="base"
     />
     <template v-if="!isCommon">
@@ -26,47 +29,31 @@
         @remove="removeExtraClass"
       />
     </template>
+    <extraClass
+      v-else
+      :form="eclass"
+      ref="eclass"
+      @create="addExtraClass"
+      @remove="removeExtraClass"
+    />
     <template v-if="isUserType">
       <el-alert
-        title="缴费周期设置"
+        title="缴费设置"
         :closable="false"
         class="alert"
         type="info">
       </el-alert>
-      <template v-if="isCommon">
-        <el-collapse :value="collapse" @change="collapseChange" >
-          <el-collapse-item
-            v-for="(item, index) in cycles"
-            :key="index"
-            :name="index"
-          >
-            <template slot="title">
-              <div class="collapse-title">
-                <span>缴费周期 {{index + 1}}</span>
-                <i v-if="cycles.length > 1" class="el-icon-circle-close" @click.stop="removeCycle(index)"></i>
-              </div>
-            </template>
-            <paymentCycle
-              ref="cycles"
-              :form="item"
-            />
-          </el-collapse-item>
-        </el-collapse>
-        <el-button
-          icon="el-icon-circle-plus-outline"
-          plain
-          type="info"
-          size="small"
-          style="width: 100%;margin: 20px 0;"
-          @click="addCycle"
-        >新增缴费周期</el-button>
-      </template>
       <paymentCycle
         ref="cycle"
         :form.sync="cycle"
-        v-else
       />
     </template>
+    <el-alert
+      title="其它"
+      :closable="false"
+      class="alert"
+      type="info">
+    </el-alert>
     <div slot="footer" class="dialog-footer">
       <el-button @click="$listeners.close">取 消</el-button>
       <el-button
@@ -87,13 +74,16 @@
   </div>
 </template>
 <script>
+import { chargeTypeList, musicGroupOrganizationCourseSettingsQueryPage } from '@/api/specialSetting'
+import { musicGroupPaymentCalenderAdd } from '../api'
+import { getTimes } from '@/utils'
 import userBaseinfo from './user-baseinfo'
 import paymentCycle from './payment-cycle'
 import extraClass from './extra-class'
 import classrooms from './classrooms'
 
 export default {
-  props: ['type'],
+  props: ['type', 'musicGroupId', 'baseInfo'],
   components: {
     userBaseinfo,
     paymentCycle,
@@ -104,6 +94,7 @@ export default {
     return {
       options: [],
       form: {
+        payUserType: this.type === 'user' ? 'STUDENT' : 'SCHOOL',
         leixing: '0',
       },
       cycles: [{}],
@@ -111,12 +102,13 @@ export default {
       eclass: [{}],
       collapse: [],
       nextVisible: false,
+      typeList: [],
+      charges: [],
     }
   },
   computed: {
     isCommon() {
-      console.log(this.form.leixing)
-      return this.form.leixing === '0'
+      return this.form.leixing === '1'
     },
     isUserType() {
       return this.type === 'user'
@@ -124,21 +116,52 @@ export default {
     nextTitle() {
       return this.isCommon ? '乐团课程-班级选择' : '临时加课-班级选择'
     },
+    chargesById() {
+      const data = {}
+      for (const item of this.charges) {
+        data[item.id] = item
+      }
+      return data
+    },
   },
   watch: {
     eclass() {
       console.log([...this.eclass])
     },
+    baseInfo() {
+      const chargeTypeId = this.baseInfo?.musicGroup?.chargeTypeId
+      this.getCharges(chargeTypeId)
+    },
     'form.leixing'() {
       this.cycles = [{}]
       this.collapse = [0]
       this.cycle = {}
     },
+    'form.musicGroupOrganizationCourseSettingId'() {
+      this.eclass = this.chargesById[this.form.musicGroupOrganizationCourseSettingId]?.details || []
+    }
   },
   mounted() {
-    console.log(this.refs)
+    this.getChargeTypeList()
   },
   methods: {
+    async getChargeTypeList() {
+      try {
+        const res = await chargeTypeList({
+          row: 9999
+        })
+        this.typeList = res.data.rows
+      } catch (error) {}
+    },
+    async getCharges(chargeTypeId) {
+      try {
+        const res = await musicGroupOrganizationCourseSettingsQueryPage({
+          row: 9999,
+          chargeTypeId
+        })
+        this.charges = res.data.rows
+      } catch (error) {}
+    },
     addExtraClass() {
       this.eclass.push({})
     },
@@ -163,7 +186,7 @@ export default {
     },
     getForms() {
       const { $refs: refs } = this
-      return [...refs.cycles, refs.base, refs.eclass, refs.cycle]
+      return [refs.base, refs.eclass, refs.cycle]
         .filter(item => !!item)
         .map(item => item.$refs.form)
     },
@@ -179,8 +202,18 @@ export default {
         })
       }
       if (valided.length === forms.length) {
-        console.log({...this.form}, this.cycle, this.cycles, this.eclass)
-        this.nextVisible = true
+        const { paymentDate, paymentValid, leixing, ...rest } = {...this.form, ...this.cycle, musicGroupPaymentCalenderCourseSettingsList: this.eclass}
+        const data = {
+          ...rest,
+          paymentType: leixing,
+          musicGroupId: this.musicGroupId,
+          ...getTimes(paymentDate, ['startPaymentDate', 'deadlinePaymentDate']),
+          ...getTimes(paymentValid, ['paymentValidStartDate', 'paymentValidEndDate']),
+        }
+        try {
+          await musicGroupPaymentCalenderAdd(data)
+        } catch (error) {}
+        // this.nextVisible = true
       }
     }
   },

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

@@ -648,7 +648,7 @@ export default {
   },
   beforeDestroy () { },
   methods: {
-    //|| this.teamStatus === 'teamAudit' 
+    //|| this.teamStatus === 'teamAudit'
     isNotEditing: function () {
       return !(this.teamStatus === 'teamDraft' || this.teamStatus === 'newTeam' || this.teamStatus === 'teamList')
     },
@@ -761,6 +761,7 @@ export default {
         this.teamid = this.$route.query.id;
         getTeamBaseInfo({ musicGroupId: this.teamid }).then((res) => {
           if (res.code == 200) {
+            this.$listeners.getBaseInfo(res.data)
             // 头部
             this.topFrom.name = res.data.musicGroup.name;
             this.$emit("getName", this.topFrom.name);

+ 110 - 0
src/views/teamDetail/components/modals/classroom-setting-item.vue

@@ -0,0 +1,110 @@
+<template>
+  <div>
+    <el-form-item
+      label="排课次数"
+    >
+      <el-input placeholder="请输入排课次数"/>
+    </el-form-item>
+    <el-form-item
+      label="排课起始时间"
+    >
+      <el-input placeholder="请输入排课起始时间"/>
+    </el-form-item>
+    <el-form-item
+      label="跳过节假日"
+    >
+      <el-radio-group>
+        <el-radio :label="3">是</el-radio>
+        <el-radio :label="6">否</el-radio>
+      </el-radio-group>
+    </el-form-item>
+    <el-table
+      :data="form.cycle"
+    >
+      <el-table-column
+        prop="date"
+        label="循环周期"
+        width="180">
+        <template>
+          <el-form-item inline-message>
+            <el-input placeholder="请输入循环周期"/>
+          </el-form-item>
+        </template>
+      </el-table-column>
+      <el-table-column
+        prop="date"
+        label="课程时长(分)"
+        width="180">
+        <template>
+          <el-form-item inline-message>
+            <el-input placeholder="请输入课程时长"/>
+          </el-form-item>
+        </template>
+      </el-table-column>
+      <el-table-column
+        prop="date"
+        label="开始时间"
+        width="180">
+        <template>
+          <el-form-item inline-message>
+            <el-input placeholder="请输入课程时长"/>
+          </el-form-item>
+        </template>
+      </el-table-column>
+      <el-table-column
+        prop="date"
+        label="结束时间"
+        width="180">
+        <template>
+          <el-form-item inline-message>
+            <el-input  placeholder="请输入课程时长"/>
+          </el-form-item>
+        </template>
+      </el-table-column>
+      <el-table-column
+        prop="date"
+        label=""
+        width="180">
+        <template slot-scope="scope">
+          <i @click="remove(scope.$index)" v-if="form.cycle.length > 1" class="close-icon el-icon-circle-close"></i>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-button
+      icon="el-icon-circle-plus-outline"
+      type="info"
+      size="small"
+      plain
+      @click="create"
+      style="margin-top: 10px;width: 100%;"
+    >添加循环</el-button>
+  </div>
+</template>
+<script>
+export default {
+  props: ['form'],
+  created() {
+    if (!this.form) {
+      this.form = {
+        cycle: [{}]
+      }
+    }
+  },
+  methods: {
+    create() {
+      this.form.cycle.push({})
+    },
+    remove(index) {
+      const list = [...this.form.cycle]
+      list[index] = null
+      this.form.cycle = list.map(item => !!item)
+    }
+  },
+}
+</script>
+<style lang="less" scoped>
+  /deep/ .close-icon{
+    cursor: pointer;
+    font-size: 16px;
+  }
+</style>

+ 92 - 0
src/views/teamDetail/components/modals/classroom-setting.vue

@@ -0,0 +1,92 @@
+<template>
+  <div>
+    <el-form
+      :model="form"
+      inline
+      label-suffix=": "
+      label-width="100px"
+    >
+      <el-form-item label="主教老师">
+        <el-select
+          v-model.trim="form.coreTeacher"
+          placeholder="请选择主教老师"
+          clearable
+          filterable
+        >
+          <el-option
+            v-for="(item, index) in teacherList"
+            :key="index"
+            :label="item.realName"
+            :value="item.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item
+        label="助教老师"
+        prop="assistant"
+      >
+        <el-select
+          v-model.trim="form.assistant"
+          placeholder="请选择助教老师"
+          filterable
+          clearable
+          multiple
+        >
+          <el-option
+            v-for="(item, index) in cooperationList"
+            :key="index"
+            :label="item.realName"
+            :value="item.id"
+          ></el-option>
+        </el-select>
+      </el-form-item>
+      <el-collapse v-model="collapses" @change="collapseChange">
+        <el-collapse-item
+          v-for="(item, index) in courseTypeList"
+          :title="item.label"
+          :name="index"
+          :key="index"
+        >
+          <courseItem
+            :key="index"
+            :form="form.classs[item.value]"
+          />
+        </el-collapse-item>
+      </el-collapse>
+    </el-form>
+    <div slot="footer" class="dialog-footer">
+      <el-button @click="$listeners.close">取 消</el-button>
+      <el-button type="primary" @click="submit">确 定</el-button>
+    </div>
+  </div>
+</template>
+<script>
+import courseItem from "./classroom-setting-item";
+export default {
+  props: ["teacherList", "activeType", "courseTypeList", 'cooperationList'],
+  components: {
+    courseItem,
+  },
+  data() {
+    return {
+      form: {
+        coreTeacher: "",
+        assistant: '',
+        classs: {}
+      },
+      collapses: [0],
+    };
+  },
+  mounted() {
+    console.log(this.courseTypeList);
+  },
+  methods: {
+    submit() {
+
+    },
+    collapseChange(val) {
+      this.collapses = val
+    }
+  },
+};
+</script>

+ 29 - 13
src/views/teamDetail/components/resetClass.vue

@@ -293,7 +293,21 @@
       </div>
     </el-dialog> -->
     <!-- 老师以及课程设置 -->
-    <el-dialog title="班级设置"
+    <el-dialog
+      title="班级设置"
+      width="950px"
+      :visible.sync="infoVisible"
+      :modal-append-to-body="false"
+    >
+      <classroomSetting
+        :teacherList="teacherList"
+        :activeType="activeType"
+        :courseTypeList="courseTypeList"
+        :cooperationList="cooperationList"
+        @close="infoVisible = false"
+      />
+    </el-dialog>
+    <!-- <el-dialog title="班级设置"
                width="780px"
                :visible.sync="infoVisible"
                :modal-append-to-body="false">
@@ -315,7 +329,7 @@
                ref="teacherForm"
                :rules="teacherRules"
                label-position="right"
-               label-width="100px;">
+               label-width="100px;"> -->
         <!-- <el-form-item label="调整方式"
                       v-if="!isNewClass"
                       prop="isAdd">
@@ -338,7 +352,7 @@
         </el-form-item> -->
 
         <!-- <br /> -->
-        <el-form-item label="主教老师"
+        <!-- <el-form-item label="主教老师"
                       prop="coreTeacher">
           <el-select v-model.trim="teacherForm.coreTeacher"
                      placeholder="请选择主教老师"
@@ -380,9 +394,9 @@
                        :value="item.value"
                        :label="item.label"></el-option>
           </el-select>
-        </el-form-item>
+        </el-form-item> -->
         <!--  v-if="!isNewClass" -->
-        <el-form-item label="声部"
+        <!-- <el-form-item label="声部"
                       v-if="activeType=='HIGH_ONLINE'&&isNewClass"
                       prop="sound">
           <el-select v-model.trim="teacherForm.sound"
@@ -486,21 +500,21 @@
         </div>
       </div>
       <div slot="footer"
-           class="dialog-footer">
+           class="dialog-footer"> -->
         <!-- 1为临时班级 -->
-        <el-button type="primary"
+        <!-- <el-button type="primary"
                    v-if="isTemporary&&isNewClass"
-                   @click="submitTemporary(1)">确 定</el-button>
+                   @click="submitTemporary(1)">确 定</el-button> -->
         <!-- 2为新增班级 -->
-        <el-button type="primary"
+        <!-- <el-button type="primary"
                    v-if="!isTemporary&&isNewClass"
-                   @click="submitTemporary(2)">确 定</el-button>
+                   @click="submitTemporary(2)">确 定</el-button> -->
         <!-- 修改班级信息 -->
-        <el-button type="primary"
+        <!-- <el-button type="primary"
                    v-if="!isNewClass"
                    @click="submitTemporary(3)">确 定</el-button>
       </div>
-    </el-dialog>
+    </el-dialog> -->
     <!-- 新增合奏班 -->
     <el-dialog title="新增合奏班"
                width="700px"
@@ -735,12 +749,14 @@ import axios from "axios";
 import { classTimeList } from "@/utils/searchArray";
 import viewStudentList from './modals/view-student-list'
 import selectStudent from './modals/select-student'
+import classroomSetting from './modals/classroom-setting'
 import qs from "qs";
 export default {
   name: "tresetClass",
   components: {
     viewStudentList,
-    selectStudent
+    selectStudent,
+    classroomSetting
   },
   data () {
     return {