studentInstrument.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <template>
  2. <div class="goods">
  3. <m-header :backUrl="backUrl2" name="学员乐器列表" />
  4. <div>
  5. <van-list v-model="loading" class="studentContainer" v-if="dataShow" key="data" :immediate-check="false" :finished="finished" finished-text="" @load="getStudentList">
  6. <van-cell-group>
  7. <van-cell class="input-cell" :center="true" v-for="item in dataList" :key="item.id" @click="selectGood(item)">
  8. <template slot="icon">
  9. <van-image :src="item.goodsImg" class="logo">
  10. <template v-slot:loading>
  11. <van-loading type="spinner" size="20" />
  12. </template>
  13. </van-image>
  14. <!-- <img class="logo" v-else src="@/assets/images/icon_student.png" alt=""> -->
  15. </template>
  16. <template slot="title">
  17. <div style="display: flex; align-items: center; justify-content: space-between">
  18. {{ item.goodsName }} <span>{{ item.goodsBrand }}</span>
  19. </div>
  20. <p style="padding: 0.02rem 0; font-size: 0.14rem; color: #808080">型号:{{ item.specification }}</p>
  21. <van-tag plain v-if="item.open" color="#01C1B5" style="margin: 0; background: #f2fffc">乐器保养</van-tag>
  22. <van-tag plain v-else color="#C0C0C0" style="margin: 0">乐器保养</van-tag>
  23. </template>
  24. </van-cell>
  25. </van-cell-group>
  26. </van-list>
  27. <m-empty class="empty" msg="暂无乐器列表" v-else key="data" />
  28. </div>
  29. </div>
  30. </template>
  31. <script>
  32. import MHeader from "@/components/header";
  33. import { studentInstrumentGetList } from "../api";
  34. import MEmpty from "@/components/MEmpty";
  35. import dayjs from "dayjs";
  36. import isBetween from "dayjs/plugin/isBetween";
  37. dayjs.extend(isBetween);
  38. export default {
  39. name: "goods",
  40. components: { MEmpty, MHeader },
  41. props: {
  42. studentId: [String, Number],
  43. organId: [String, Number],
  44. },
  45. data() {
  46. return {
  47. backUrl2: {
  48. callBack: () => {
  49. this.$emit("input", false);
  50. },
  51. },
  52. dataShow: true,
  53. loading: false,
  54. finished: false,
  55. dataList: [],
  56. params: {
  57. search: null,
  58. page: 1,
  59. rows: 20,
  60. },
  61. };
  62. },
  63. mounted() {
  64. this.loading = true;
  65. this.getStudentList();
  66. },
  67. methods: {
  68. async getStudentList() {
  69. let params = this.params;
  70. params.studentId = this.studentId;
  71. params.organId = this.organId;
  72. await studentInstrumentGetList(params).then((res) => {
  73. let result = res.data;
  74. this.loading = false;
  75. if (result.code == 200) {
  76. let rows = result.data || [];
  77. params.page = rows.pageNo;
  78. rows.rows.forEach((item) => {
  79. if (dayjs().isBetween(item.startTime, item.endTime)) {
  80. item.open = 1;
  81. } else {
  82. item.open = 0;
  83. }
  84. });
  85. this.dataList = this.dataList.concat(rows.rows);
  86. if (params.page >= rows.totalPage) {
  87. this.finished = true;
  88. }
  89. this.params.page++;
  90. } else {
  91. this.finished = true;
  92. }
  93. // 判断是否有数据
  94. if (this.dataList.length <= 0) {
  95. this.dataShow = false;
  96. }
  97. });
  98. },
  99. selectGood(item) {
  100. this.$emit("getChoiceInstrument", item);
  101. this.$emit("input", false);
  102. },
  103. },
  104. };
  105. </script>
  106. <style lang="less" scoped>
  107. @import url("../../../assets/commonLess/variable.less");
  108. .studentContainer {
  109. /deep/.van-cell-group {
  110. margin-top: 0;
  111. }
  112. /deep/.van-cell__title {
  113. font-size: 0.16rem;
  114. color: @mFontColor;
  115. flex: 1 auto;
  116. }
  117. .logo {
  118. width: 0.82rem;
  119. height: 0.82rem;
  120. margin-right: 0.12rem;
  121. border-radius: 0.05rem;
  122. overflow: hidden;
  123. }
  124. .input-cell {
  125. padding: 0.12rem 0.16rem;
  126. .van-radio {
  127. justify-content: flex-end;
  128. }
  129. }
  130. /deep/.van-cell__value {
  131. height: 0.2rem;
  132. }
  133. .van-tag {
  134. margin-left: 0.08rem;
  135. }
  136. }
  137. .input-cell {
  138. .price-section {
  139. display: flex;
  140. justify-content: space-between;
  141. align-items: center;
  142. del {
  143. font-size: 0.12rem;
  144. color: #666666;
  145. padding-left: 0.1rem;
  146. }
  147. }
  148. .money {
  149. color: #ff3535;
  150. font-weight: 600;
  151. font-size: 0.16rem;
  152. i {
  153. font-style: normal;
  154. font-size: 0.14rem;
  155. }
  156. }
  157. }
  158. </style>