payTeamActive.vue 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. <template>
  2. <div class="teamCourseList">
  3. <p class="coreTitle">乐团小课 <el-button size="mini" icon="el-icon-plus" plain class="addBtn" @click="$listeners.create">新增活动</el-button></p>
  4. <el-table
  5. class="courseTable"
  6. :data="form.activeList"
  7. style="width: 100% !important; background: #f9f9f9"
  8. :header-cell-style="{ background: '#F9F9F9', color: '#444' }"
  9. >
  10. <el-table-column
  11. label="活动方案"
  12. prop="activityId"
  13. key="activityId"
  14. width="170px"
  15. >
  16. <template slot-scope="scope">
  17. <el-form-item
  18. :prop="'activeList.' + scope.$index + '.activityId'"
  19. :rules="{
  20. required: true,
  21. message: '请选择活动方案',
  22. trigger: 'change',
  23. }"
  24. >
  25. <el-select
  26. style="width: 90% !important"
  27. v-model="form.activeList[scope.$index].activityId"
  28. placeholder="活动方案"
  29. clearable
  30. @change="courseItemChange(scope.row, scope.$index,form.activeList[scope.$index].activityId)"
  31. :disabled="isDisabled"
  32. >
  33. <el-option
  34. v-for="(item, key) in activeList"
  35. :key="key"
  36. :disabled="isOptionDisabled(item.id)"
  37. :label="item.name"
  38. :value="item.id"
  39. ></el-option>
  40. </el-select>
  41. </el-form-item>
  42. </template>
  43. </el-table-column>
  44. <el-table-column
  45. label="是否必选"
  46. prop="optionalFlag"
  47. key="optionalFlag"
  48. width="170px"
  49. >
  50. <template slot-scope="scope">
  51. <el-form-item
  52. :prop="'activeList.' + scope.$index + '.optionalFlag'"
  53. :rules="{
  54. required: true,
  55. message: '请选择是必选',
  56. trigger: 'change',
  57. }"
  58. >
  59. <el-select
  60. style="width: 90% !important"
  61. v-model="form.activeList[scope.$index].optionalFlag"
  62. placeholder="是否必选"
  63. :disabled="isDisabled"
  64. clearable
  65. >
  66. <el-option
  67. v-for="(item, index) in boolOptionsOptions"
  68. :key="index"
  69. :label="item.label"
  70. :value="item.value"
  71. ></el-option>
  72. </el-select>
  73. </el-form-item>
  74. </template>
  75. </el-table-column>
  76. <el-table-column
  77. label="活动课程"
  78. width="170px"
  79. >
  80. <template slot-scope="scope">
  81. <el-input style="width: 90% !important" :disabled="true" v-model="form.activeList[scope.$index].vipGroupCategoryNames"></el-input>
  82. </template>
  83. </el-table-column>
  84. <el-table-column
  85. label="课时数"
  86. prop="courseTotalMinuties"
  87. key="courseTotalMinuties"
  88. width="170px"
  89. >
  90. <template slot-scope="scope">
  91. <el-input style="width: 90% !important" :disabled="true" v-model="form.activeList[scope.$index].num"></el-input>
  92. </template>
  93. </el-table-column>
  94. <el-table-column
  95. label="现价(元)"
  96. prop="actualAmount"
  97. key="actualAmount"
  98. width="170px"
  99. >
  100. <template slot="header">
  101. <p style="position: relative">
  102. 现价(元)
  103. <el-tooltip placement="top" popper-class="mTooltip">
  104. <div slot="content">学生实际缴费金额</div>
  105. <i
  106. class="el-icon-question"
  107. style="font-size: 18px; color: #f56c6c"
  108. ></i>
  109. </el-tooltip>
  110. </p>
  111. </template>
  112. <template slot-scope="scope">
  113. <el-form-item
  114. :prop="'activeList.' + scope.$index + '.actualAmount'"
  115. :rules="{
  116. required: true,
  117. message: '请输入现价',
  118. trigger: 'blur',
  119. }"
  120. >
  121. <!-- $listeners.moneyChange -->
  122. <el-input-number
  123. style="width: 90% !important"
  124. class="number-input"
  125. v-model="form.activeList[scope.$index].actualAmount"
  126. :controls="false"
  127. :precision="0"
  128. :min="0"
  129. @change="change"
  130. placeholder="请输入现价"
  131. />
  132. </el-form-item>
  133. </template>
  134. </el-table-column>
  135. <el-table-column
  136. prop="originalAmount"
  137. key="originalAmount"
  138. label="原价(元)"
  139. width="170px"
  140. >
  141. <template slot-scope="scope">
  142. <el-form-item
  143. :prop="'activeList.' + scope.$index + '.originalAmount'"
  144. :rules="{
  145. required: true,
  146. message: '请输入原价',
  147. trigger: 'blur',
  148. }"
  149. >
  150. <el-input-number
  151. style="width: 90% !important"
  152. class="number-input"
  153. v-model="form.activeList[scope.$index].originalAmount"
  154. :controls="false"
  155. :precision="0"
  156. :min="0"
  157. placeholder="请输入原价"
  158. :disabled="true"
  159. />
  160. </el-form-item>
  161. </template>
  162. </el-table-column>
  163. <el-table-column prop="close" key="close">
  164. <template slot-scope="scope">
  165. <div style="color: #fa6400; cursor: pointer" @click="$listeners.remove && $listeners.remove(scope.$index)" v-if="form.activeList.length > 1">
  166. <!-- v-if="form.length > 1" v-if="clearable" -->
  167. <i
  168. class="el-icon-error"
  169. ></i>
  170. 删除
  171. </div>
  172. </template>
  173. </el-table-column>
  174. </el-table>
  175. <!-- v-if="!isCommon && $listeners.create" @click="$listeners.create"-->
  176. </div>
  177. </template>
  178. <script>
  179. import { courseType, boolOptions } from "@/constant";
  180. import { objectToOptions } from "@/utils";
  181. export default {
  182. props: ["form",'activeList'],
  183. data() {
  184. return {
  185. charges: [],
  186. clearable: false,
  187. isDisabled: false,
  188. courseUnitPriceSettingsByType: [],
  189. boolOptionsOptions: objectToOptions(boolOptions),
  190. };
  191. },
  192. methods: {
  193. courseItemChange(row, index,id) {
  194. this.activeList.forEach(element => {
  195. if(id == element.id){
  196. if(element.courseType == 'PRACTICE'){
  197. this.$set(this.form.activeList[index],'vipGroupCategoryNames','网管课')
  198. }else{
  199. this.$set(this.form.activeList[index],'vipGroupCategoryNames',element.vipGroupCategoryNames)
  200. }
  201. // this.$set(this.form.activeList[index],'name',element.name)
  202. this.$set(this.form.activeList[index],'num',element.maxCourseNum)
  203. this.$set(this.form.activeList[index],'actualAmount',element.marketPrice)
  204. this.$set(this.form.activeList[index],'originalAmount',element.originalPrice)
  205. }
  206. });
  207. console.log(row,index)
  208. // 修改活动名称 活动价格
  209. // this.$listeners.priceChange(item, index);
  210. // this.$refs.form.validateField(`form.${index}.courseTotalMinuties`);
  211. },
  212. isOptionDisabled(key) {
  213. const selected = this.form.activeList.map((item) => item.activityId);
  214. return selected.includes(key);
  215. },
  216. change() {},
  217. },
  218. };
  219. </script>
  220. <style lang="scss" scoped>
  221. @import "~@/views/resetTeaming/modals/pay.scss";
  222. </style>