| 
					
				 | 
			
			
				@@ -73,13 +73,42 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     <el-alert title="缴费设置" :closable="false" class="alert" type="info"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     </el-alert> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    <paymentCycle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <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" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          :isUserType="true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          :isCommon="false" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          :isDisabled="true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      </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> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <!-- <paymentCycle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       ref="cycle" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       :isUserType="true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       :form.sync="cycle" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       :isCommon="false" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       :isDisabled="true" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    /> --> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     <div slot="footer" class="dialog-footer"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <el-button @click="$listeners.close">取 消</el-button> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <el-button type="primary" @click="submit">确认</el-button> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -111,6 +140,8 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       cycle: {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       eclass: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      collapse: [0], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cycles: [{}], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       organizationCourseUnitPriceSettingsByType: {}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -153,10 +184,15 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       for (const item of this.eclass) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         money += item.courseCurrentPrice; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if (!money) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.$set(this.cycle, "paymentAmount", undefined); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        this.$set(this.cycle, "paymentAmount", money); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if (this.cycles.length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const floorMoney = Math.floor(money / this.cycles.length) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const remainder = money % this.cycles.length 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        this.cycles = this.cycles.map((item, index) => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ...item, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            paymentAmount: (index === 0 ? floorMoney + remainder : floorMoney) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       return money; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -205,10 +241,24 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     getForms() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       const { $refs: refs } = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return [refs.eclass, refs.cycle] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return [refs.eclass, refs.cycle, ...refs.cycles] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         .filter((item) => !!item) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         .map((item) => item.$refs.form); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    addCycle () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.cycles.push({}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.collapse.push(this.collapse.length); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.syncAllMoney() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    removeCycle (index) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.cycles[index] = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.cycles = this.cycles.filter((item) => !!item); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.collapse.pop(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.syncAllMoney() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    collapseChange (val) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      this.collapse = val; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     async submit() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       const forms = this.getForms(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       const valided = []; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -220,19 +270,23 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       if (forms.length === valided.length) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        const { paymentDate, paymentValid, ...rest} = this.cycle 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         const data = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           attribute1: this.ids, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          ...rest, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          cycles: [...this.cycles.map(item => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            const { paymentDate, paymentValid, ...other } = item 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ...other, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ...getTimes(paymentDate, ["startPaymentDate", "deadlinePaymentDate"]), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ...getTimes(paymentValid, [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                "paymentValidStartDate", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                "paymentValidEndDate", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ]), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          })], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           musicGroupId: this.musicGroupId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           paymentType: 'ADD_STUDENT', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           studentIds: this.createdUserId, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           musicGroupPaymentCalenderCourseSettingsList: this.eclass, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          ...getTimes(paymentDate, ["startPaymentDate", "deadlinePaymentDate"]), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          ...getTimes(paymentValid, [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            "paymentValidStartDate", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            "paymentValidEndDate", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          ]), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           await musicGroupPaymentCalenderAdd(data) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -256,4 +310,17 @@ export default { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 .alert { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   margin-bottom: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+.collapse-title { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  display: flex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  justify-content: space-between; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  align-items: center; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  width: 100%; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  .el-icon-circle-close { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    font-size: 16px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    margin-right: 10px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/deep/ .el-collapse-item__wrap { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  padding-top: 20px; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 </style> 
			 |