payTeamCourse.vue 7.5 KB

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