chioseMusic.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <template>
  2. <div>
  3. <div v-for="(music, index) in item.chioseMusic" :key="index">
  4. <div class="chioseMusic">
  5. <div class="flexRow">
  6. <p class="title">可选乐器{{ index + 1 }}:</p>
  7. <el-select
  8. style="width: 180px"
  9. :disabled="basdisabled"
  10. v-model="music.musical"
  11. @change="
  12. (val) => {
  13. chioseMusic(val, music);
  14. }
  15. "
  16. >
  17. <el-option
  18. v-for="(item, index) in item.goodsList"
  19. :key="index"
  20. :label="item.name"
  21. :value="item.id"
  22. :disabled='checkDisabled(item)'
  23. ></el-option>
  24. </el-select>
  25. </div>
  26. <div class="flexRow">
  27. <p class="title">乐器选择方式:</p>
  28. <el-checkbox-group v-model="music.type" class="marginLeft10">
  29. <el-checkbox :disabled="basdisabled" label="GROUP"
  30. >团购</el-checkbox
  31. >
  32. <el-checkbox :disabled="basdisabled" label="LEASE"
  33. >租赁</el-checkbox
  34. >
  35. <el-checkbox :disabled="basdisabled" label="FREE">免费</el-checkbox>
  36. </el-checkbox-group>
  37. </div>
  38. <div class="flexRow">
  39. <p
  40. class="title"
  41. v-show="
  42. music.type && music.type.length > 0
  43. ? music.type.includes('GROUP')
  44. : false
  45. "
  46. >
  47. 团购价:
  48. </p>
  49. <div
  50. v-show="
  51. music.type && music.type.length > 0
  52. ? music.type.includes('GROUP')
  53. : false
  54. "
  55. style="width: 180px"
  56. >
  57. <el-input type="number" v-model="music.groupPrice" disabled>
  58. <template slot="append">元</template></el-input
  59. >
  60. </div>
  61. <!-- <div v-else
  62. style="width:180px">
  63. <el-input value="--"
  64. disabled> <template slot="append">元</template></el-input>
  65. </div> -->
  66. <p
  67. class="title"
  68. v-show="
  69. music.type && music.type.length > 0
  70. ? music.type.includes('LEASE')
  71. : false
  72. "
  73. >
  74. 租赁押金:
  75. </p>
  76. <div
  77. v-show="
  78. music.type && music.type.length > 0
  79. ? music.type.includes('LEASE')
  80. : false
  81. "
  82. style="width: 180px"
  83. >
  84. <el-input
  85. type="number"
  86. v-model="music.borrowPrice"
  87. :disabled="basdisabled"
  88. >
  89. <template slot="append">元</template></el-input
  90. >
  91. </div>
  92. <!-- <div v-else
  93. style="width:180px">
  94. <el-input value="--"
  95. disabled> <template slot="append">元</template></el-input>
  96. </div> -->
  97. <i
  98. class="el-icon-close marginLeft10"
  99. v-if="
  100. item.chioseMusic.length > 1 &&
  101. !basdisabled &&
  102. (music.type.includes('LEASE') || music.type.includes('GROUP'))
  103. "
  104. @click="deleteMusic(music)"
  105. style="font-size: 20px; cursor: pointer"
  106. ></i>
  107. </div>
  108. <div style="margin-left:140px;margin-top:5px;" v-show="
  109. music.type && music.type.length > 0
  110. ? music.type.includes('GROUP')
  111. : false
  112. ">
  113. <el-checkbox :disabled="basdisabled" v-model="music.groupRemissionCourseFee" @change="(val)=>{changeFee(val,music)}">团购减免课程费用</el-checkbox>
  114. {{music}}
  115. </div>
  116. </div>
  117. <el-divider></el-divider>
  118. </div>
  119. <div class="coreItemRow" v-if="!basdisabled">
  120. <p class="title"></p>
  121. <el-button
  122. type="info"
  123. plain
  124. style="width: 558px"
  125. size="mini"
  126. icon="el-icon-plus"
  127. @click="addMusic"
  128. >新增可选乐器</el-button
  129. >
  130. </div>
  131. </div>
  132. </template>
  133. <script>
  134. export default {
  135. props: ["item", "basdisabled",'activeSoundList'],
  136. data() {
  137. return {
  138. radio: "",
  139. goods: "",
  140. };
  141. },
  142. created() {},
  143. mounted() {},
  144. methods: {
  145. chioseMusic(val, music) {
  146. this.item.goodsList.map((some, index) => {
  147. if (some.id == val) {
  148. music.groupPrice = some.groupPurchasePrice;
  149. }
  150. });
  151. },
  152. addMusic() {
  153. this.item.chioseMusic.push({
  154. musical: "",
  155. type: ["GROUP"],
  156. groupPrice: null,
  157. borrowPrice: 1500,
  158. groupRemissionCourseFee:0
  159. });
  160. this.$emit("lookMusic");
  161. },
  162. deleteMusic(music) {
  163. this.item.chioseMusic.forEach((element, index) => {
  164. if (element.musical == music.musical) {
  165. this.item.chioseMusic.splice(index, 1);
  166. }
  167. });
  168. },
  169. checkDisabled(item){
  170. let flag = false
  171. this.activeSoundList.forEach(musics=>{
  172. musics.chioseMusic.forEach(music=>{
  173. if(item.id==music.musical){
  174. flag= true
  175. }
  176. })
  177. })
  178. return flag
  179. },
  180. changeFee(val,music){
  181. console.log(val,music.groupRemissionCourseFee)
  182. this.$set(music,'groupRemissionCourseFee',val)
  183. }
  184. },
  185. };
  186. </script>
  187. <style lang="scss" scoped>
  188. .chioseMusic {
  189. width: 100%;
  190. margin: 30px 0 0;
  191. }
  192. .coreItemRow {
  193. padding-left: 20px;
  194. height: 50px;
  195. line-height: 50px;
  196. display: flex;
  197. flex-direction: row;
  198. align-items: center;
  199. width: 100%;
  200. }
  201. p {
  202. margin-right: 10px;
  203. }
  204. .title {
  205. width: 100px !important;
  206. text-align: right;
  207. margin-right: 10px;
  208. }
  209. .marginLeft10 {
  210. margin-left: 10px;
  211. }
  212. .flexRow {
  213. display: flex;
  214. flex-direction: row;
  215. align-items: center;
  216. padding-left: 20px;
  217. margin-top: 10px;
  218. width: 100%;
  219. }
  220. </style>