addMusic.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <template>
  2. <div>
  3. <el-form :model="musicForm" label-width="100px" ref="form">
  4. <el-form-item
  5. label="乐器分类"
  6. prop="goodsCategoryId"
  7. :rules="[
  8. { required: true, message: '请选择乐器分类', trigger: 'blur' },
  9. ]"
  10. >
  11. <el-form-item>
  12. <el-select
  13. style="width: 400px !important"
  14. v-model.trim="musicForm.goodsCategoryId"
  15. filterable
  16. clearable
  17. @change="changeCategory"
  18. placeholder="乐器分类"
  19. >
  20. <el-option
  21. v-for="(item, index) in typeList"
  22. :key="index"
  23. :label="item.label"
  24. :value="item.value"
  25. ></el-option>
  26. </el-select>
  27. </el-form-item>
  28. </el-form-item>
  29. <el-form-item
  30. label="乐器名称"
  31. prop="goodsId"
  32. :rules="[
  33. { required: true, message: '请选择乐器名称', trigger: 'blur' },
  34. ]"
  35. >
  36. <el-select
  37. style="width: 400px !important"
  38. :disabled="!musicForm.goodsCategoryId"
  39. v-model.trim="musicForm.goodsId"
  40. filterable
  41. clearable
  42. placeholder="乐器名称"
  43. >
  44. <el-option
  45. v-for="(item, index) in musicList"
  46. :key="index"
  47. :label="item.name"
  48. :value="item.id"
  49. ></el-option>
  50. </el-select>
  51. </el-form-item>
  52. <el-form-item
  53. label="是否乐保"
  54. prop="status"
  55. :rules="[
  56. { required: true, message: '请选择是否乐保', trigger: 'blur' },
  57. ]"
  58. >
  59. <el-select
  60. style="width: 400px !important"
  61. v-model.trim="musicForm.status"
  62. clearable
  63. placeholder="是否乐保"
  64. >
  65. <el-option value="0" label="否"></el-option>
  66. <el-option value="1" label="是"></el-option>
  67. </el-select>
  68. </el-form-item>
  69. <el-form-item
  70. label="乐保有效期"
  71. :rules="[
  72. { required: true, message: '请选择乐保有效期', trigger: 'blur' },
  73. ]"
  74. v-if="musicForm.status == 1"
  75. prop="date"
  76. >
  77. <el-date-picker
  78. style="width: 400px"
  79. v-model="musicForm.date"
  80. :clearable="false"
  81. type="datetimerange"
  82. value-format="yyyy-MM-dd HH:mm:ss"
  83. range-separator="至"
  84. :picker-options="{ firstDayOfWeek: 1 }"
  85. start-placeholder="开始日期"
  86. end-placeholder="结束日期"
  87. >
  88. </el-date-picker>
  89. </el-form-item>
  90. </el-form>
  91. </div>
  92. </template>
  93. <script>
  94. import { goodsQuery } from "@/api/businessManager";
  95. import { addStudentInstrument, updateStudentInstrument } from "@/api/buildTeam";
  96. import { getTimes } from "@/utils";
  97. import dayjs from 'dayjs'
  98. export default {
  99. props: ["categoryList", "operationData", "operationStatus"],
  100. data() {
  101. return {
  102. musicForm: {
  103. studentId: this.$route.query.userId,
  104. goodsId: "",
  105. goodsCategoryId: "",
  106. status: "",
  107. date: [],
  108. },
  109. typeList: this.categoryList,
  110. musicList: [],
  111. };
  112. },
  113. async mounted() {
  114. console.log(this.operationData)
  115. let operationData = this.operationData
  116. if(operationData) {
  117. let musicForm = this.musicForm
  118. musicForm.goodsCategoryId = operationData.goodsCategoryId
  119. if(operationData.goodsCategoryId) {
  120. await this.changeCategory(operationData.goodsCategoryId)
  121. }
  122. musicForm.goodsId = operationData.goodsId
  123. musicForm.goodsName = operationData.goodsName
  124. musicForm.status = operationData.status + ''
  125. if(operationData.startTime && operationData.endTime) {
  126. musicForm.date = [(operationData.startTime), (operationData.endTime)]
  127. } else {
  128. musicForm.date = []
  129. }
  130. musicForm.id = operationData.id
  131. }
  132. },
  133. methods: {
  134. changeCategory(val) {
  135. this.musicForm.goodsName = "";
  136. this.musicForm.goodsId = null;
  137. if (val) {
  138. goodsQuery({ goodsCategoryId: val, rows: 99999, type: 'INSTRUMENT' }).then((res) => {
  139. if (res.code == 200 && res.data) {
  140. this.musicList = res.data.rows;
  141. }
  142. });
  143. }
  144. },
  145. addMusicSubmit() {
  146. this.$refs.form.validate(async (res) => {
  147. if (res) {
  148. try {
  149. const { date, ...rest } = this.musicForm;
  150. let obj = {
  151. ...rest,
  152. ...getTimes(date, ["startTime", "endTime"], 'YYYY-MM-DD HH:mm:ss'),
  153. };
  154. if(this.operationStatus == 'create') {
  155. const res = await addStudentInstrument(obj);
  156. this.$message.success('添加成功')
  157. } else if(this.operationStatus == 'update') {
  158. const res = await updateStudentInstrument(obj);
  159. this.$message.success('修改成功')
  160. }
  161. this.$emit('close')
  162. this.$emit('getList')
  163. } catch (e) {
  164. console.log(e);
  165. }
  166. }
  167. });
  168. },
  169. },
  170. };
  171. </script>
  172. <style lang="scss" scoped>
  173. </style>