order.vue 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. <template>
  2. <div class="order">
  3. <header>支付列表</header>
  4. <h2>{{schoolName}}</h2>
  5. <van-tabs>
  6. <van-tab title="缴费信息">
  7. <div class="orderList">
  8. <div class="table">
  9. <div class="title">
  10. <span></span>
  11. <span>姓名</span>
  12. <span>声部</span>
  13. <span>支付金额</span>
  14. <span>到账时间</span>
  15. </div>
  16. <div class="content">
  17. <div v-for="(data, index) in dataList" :key="data.id">
  18. <!-- <div> -->
  19. <span> {{ ++index }} </span>
  20. <span> {{ data.userName }} </span>
  21. <span> {{ data.voicyPart }} </span>
  22. <span> {{ data.amount }} </span>
  23. <span> {{ data.payTime }} </span>
  24. </div>
  25. </div>
  26. </div>
  27. </div>
  28. </van-tab>
  29. <van-tab title="报名信息">
  30. <div class="table">
  31. <div class="title">
  32. <span></span>
  33. <span>姓名</span>
  34. <span>班级</span>
  35. <span>声部</span>
  36. <span>调剂</span>
  37. </div>
  38. <div class="content">
  39. <div v-for="(data, index) in studentList" :key="data.id">
  40. <!-- <div> -->
  41. <span> {{ ++index }} </span>
  42. <span> {{ data.name }} </span>
  43. <span> {{ data.gClass }} </span>
  44. <span> {{ data.subName ? data.subName.split('.').reverse()[0] : data.subName }} </span>
  45. <span> <van-button
  46. :disabled="data.pushStatus <= 1 && data.status == 0 ? false : true"
  47. round
  48. @click = "adjust(data)"
  49. type = "danger"
  50. size = "small">调剂</van-button>
  51. </span>
  52. </div>
  53. </div>
  54. </div>
  55. <van-action-sheet
  56. v-model="adjustStatus"
  57. :actions="couresList"
  58. cancel-text="取消"
  59. @cancel="adjustStatus = false"
  60. @select="adjustSelect" />
  61. </van-tab>
  62. </van-tabs>
  63. </div>
  64. </template>
  65. <script>
  66. import { Toast } from 'vant'
  67. import qs from 'qs'
  68. export default {
  69. name: 'order',
  70. components: { Toast },
  71. data() {
  72. return {
  73. classId: this.$route.query.classId,
  74. schoolName: this.$route.query.schoolName,
  75. dataList: {}, // 订单列表
  76. studentList: {}, // 学生列表
  77. couresList: [], // 课程列表
  78. adjustStatus: false, //
  79. changeStudent: null, // 修改的学生对象
  80. }
  81. },
  82. mounted() {
  83. // 获取订单信息
  84. axios.post('/order/checkOrderList', qs.stringify({
  85. classId: this.classId,
  86. type: 1
  87. })).then(r => {
  88. this.dataList = r.data.data
  89. })
  90. // 获取所有课程
  91. axios.post('/user/getCourses ', qs.stringify({
  92. clazzId: this.classId
  93. })).then(c => {
  94. let result = c.data.data
  95. result.forEach(r => {
  96. this.couresList.push({
  97. name: r.subName.split('.').reverse()[0],
  98. subId: r.subId
  99. })
  100. })
  101. })
  102. // 获取学生列表信息
  103. this.getStudents()
  104. },
  105. methods: {
  106. getStudents(item) {
  107. if(!item) {
  108. item = {}
  109. }
  110. axios.post('/user/getMusicTeamStu', qs.stringify({
  111. musicTeamId: this.classId, // 乐团Id
  112. name: '', // 学生姓名
  113. status: '', // 学生状态
  114. subId: '', // 声部编号
  115. page: item.page ? item.page : 1, //默认1第一页
  116. rows: item.rows ? item.rows : 100 // 默认20条数据
  117. })).then(r => {
  118. this.studentList = r.data.data.rows
  119. })
  120. },
  121. adjustSelect(item) {
  122. axios.post('/user/updateUserSub', qs.stringify({
  123. courseId: this.changeStudent.courseId,
  124. subId: item.subId,
  125. userId: this.changeStudent.id
  126. })).then(student => {
  127. if(student.data.code == 200) {
  128. Toast(student.data.msg)
  129. this.changeStudent.subName = item.name
  130. this.adjustStatus = false
  131. }
  132. })
  133. },
  134. adjust(item) {
  135. // 开始调剂
  136. if(item.pushStatus <= 1 && item.status == 0) {
  137. this.adjustStatus = true
  138. this.changeStudent = item
  139. }
  140. }
  141. }
  142. }
  143. </script>
  144. <style lang="less" scoped>
  145. .order {
  146. background: #fff;
  147. min-height: 100vh;
  148. }
  149. header {
  150. height: .40rem;
  151. line-height: .40rem;
  152. color: #000;
  153. font-size: .17rem;
  154. background: #fff;
  155. box-shadow: 0px 1px 8px 0px rgba(0,0,0,0.07);
  156. text-align: center;
  157. }
  158. h2 {
  159. font-size: .16rem;
  160. color: #fff;
  161. padding: .1rem 0;
  162. text-align: center;
  163. background: #14928a;
  164. }
  165. .table {
  166. .title {
  167. display: flex;
  168. align-items: center;
  169. text-align: center;
  170. border-bottom: 1px solid #eaeaea;
  171. }
  172. span {
  173. flex: 1;
  174. padding: .08rem 0;
  175. font-size: .14rem;
  176. &:first-child {
  177. width: .3rem;
  178. flex: inherit;
  179. }
  180. }
  181. .content > div{
  182. // border: 1px solid #ccc;
  183. // border-left: 0;
  184. // border-right: 0;
  185. width: 100%;
  186. display: flex;
  187. align-items: center;
  188. text-align: center;
  189. &:nth-child(2n+2) {
  190. background: #eaeaea;
  191. }
  192. }
  193. }
  194. </style>