学员端小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

252 lines
6.8 KiB

1 year ago
10 months ago
1 year ago
10 months ago
1 year ago
10 months ago
1 year ago
1 year ago
1 year ago
10 months ago
1 year ago
1 year ago
1 year ago
10 months ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
1 year ago
9 months ago
1 year ago
1 year ago
9 months ago
9 months ago
1 year ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
10 months ago
9 months ago
10 months ago
1 year ago
9 months ago
1 year ago
1 year ago
1 year ago
1 year ago
  1. <template>
  2. <view class="pageBgImg">
  3. <topNavbar title="订单详情"></topNavbar>
  4. <view class="pad">
  5. <view class="card">
  6. <view class="consultItem">
  7. <view class="top_row">
  8. <view class="flex">
  9. <view class="tag" :class="{yellow: (info.orderType==1||info.feeType==1)}">
  10. {{orderTypeTxt[info.orderType||info.feeType]}}</view>
  11. <view class="schoolName">{{ $u.utils.truncateText(info.schoolName, 12) }}</view>
  12. </view>
  13. <view class="status">
  14. <view class="text">{{orderStatusTxt[info.orderStatus]}}</view>
  15. <!-- <view class="icon">
  16. <u-icon name="arrow-right" size="14" color="#686B73" style="margin-left: 12rpx;" ></u-icon>
  17. </view> -->
  18. </view>
  19. </view>
  20. <view class="target">
  21. <view class="row">
  22. <view class="leftLab">
  23. <view class="icon">
  24. <image src="@/static/images/car/ic_chexing.png" mode=""></image>
  25. </view>
  26. <view class="lab">学驾车型</view>
  27. </view>
  28. <view class="name">{{info.trainType}}</view>
  29. </view>
  30. <view class="row">
  31. <view class="leftLab">
  32. <view class="icon">
  33. <image src="@/static/images/car/ic_banxing.png" mode=""></image>
  34. </view>
  35. <view class="lab">所选班型</view>
  36. </view>
  37. <view class="name">{{info.className}}</view>
  38. </view>
  39. <view class="row">
  40. <view class="leftLab">
  41. <view class="icon">
  42. <image src="@/static/images/car/ic_jiaxiao.png" mode=""></image>
  43. </view>
  44. <view class="lab">驾校类型</view>
  45. </view>
  46. <view class="name">{{ info.appSchoolType }}</view>
  47. </view>
  48. <view class="row">
  49. <view class="leftLab">
  50. <view class="icon">
  51. <image src="@/static/images/car/ic_xingshi.png" mode=""></image>
  52. </view>
  53. <view class="lab">支付形式</view>
  54. </view>
  55. <view class="name">{{info.appPayForm}}</view>
  56. </view>
  57. <view class="row">
  58. <view class="leftLab">
  59. <view class="icon">
  60. <image src="@/static/images/car/ic_fangshi.png" mode=""></image>
  61. </view>
  62. <view class="lab">支付方式</view>
  63. </view>
  64. <view class="name">{{info.appPayType}}</view>
  65. </view>
  66. <view class="row">
  67. <view class="leftLab">
  68. <view class="icon">
  69. <image src="@/static/images/car/ic_shijian.png" mode=""></image>
  70. </view>
  71. <view class="lab">支付时间</view>
  72. </view>
  73. <view class="name">{{ $u.timeFormat(info.payTime, 'yyyy-mm-dd hh:MM:ss')}}</view>
  74. </view>
  75. </view>
  76. <view class="border_bottom">
  77. <view class="rows">
  78. <view class="label">培训费总价</view>
  79. <view class="value">{{$u.utils.priceTo(info.totalAmount)}}</view>
  80. </view>
  81. <!-- <view class="rows">
  82. <view class="label hui">学驾培训费</view>
  83. <view class="value hui">{{$u.utils.priceTo(info.totalAmount)}}</view>
  84. </view> -->
  85. </view>
  86. <view class="border_bottom">
  87. <view class="rows">
  88. <view class="label hui">实际支付</view>
  89. <view class="value hui">{{$u.utils.priceTo(info.payActual)}}</view>
  90. </view>
  91. <view class="rows" v-if="info.payMent">
  92. <view class="label hui">已支付定金</view>
  93. <view class="value blue">{{$u.utils.priceTo(info.payMent)}}</view>
  94. </view>
  95. <view class="rows" v-if="info.payTail">
  96. <view class="label hui">待支付尾款</view>
  97. <view class="value blue">{{$u.utils.priceTo(info.payTail)}}</view>
  98. </view>
  99. <view class="btn_row">
  100. <view class="" style="min-width: 120rpx;">
  101. <view class="refundBtn" @click="goFund" v-if="!info.refundId">申请退款</view>
  102. </view>
  103. <view class="rightBtn">
  104. <view class="btnBorder" @click="downloadImage">下载发票</view>
  105. <view class="btnBorder" @click="goVoucher">培训缴费电子凭证</view>
  106. </view>
  107. </view>
  108. </view>
  109. </view>
  110. </view>
  111. <refundInfo :info="refundData" v-if="refundData.id" />
  112. </view>
  113. </view>
  114. </template>
  115. <script>
  116. import refundInfo from './comp/refundInfo.vue'
  117. import { downloadImg } from '../comp/download.js'
  118. import {
  119. applyOrderGet,
  120. selectRefundDetail,
  121. getStudentVoucher
  122. } from '@/config/api.js'
  123. export default {
  124. components: {
  125. refundInfo
  126. },
  127. data() {
  128. return {
  129. value: '',
  130. orderId: '',
  131. info: {},
  132. refundData: {},
  133. orderTypeTxt: ['', '学费', '理科费', '考场模拟', '额外学时购买'], //1:驾校培训费用,2:理科培训费用,3:考场适应性费用,4:额外学时购买
  134. orderStatusTxt: ['待支付', '已支付', '已取消', '支付失败'], //0:待支付,1:已支付,-1:已取消,2:支付失败
  135. }
  136. },
  137. onLoad(options) {
  138. // setTimeout(obj.say, 500)
  139. if (options.orderId) {
  140. this.orderId = options.orderId
  141. this.applyOrderGetFn()
  142. }
  143. },
  144. onPullDownRefresh() {
  145. this.applyOrderGetFn()
  146. },
  147. methods: {
  148. goVoucher() {
  149. this.$goPage('/pages/mineEntry/myOrder/voucher/voucher?orderId='+ this.orderId)
  150. },
  151. debounce(func, wait) {
  152. this.timeout;
  153. let context = this; // this
  154. // let args = arguments; // event
  155. if(this.timeout) clearTimeout(this.timeout)
  156. console.log(111)
  157. this.timeout = setTimeout(function() {
  158. func()
  159. }, wait);
  160. },
  161. inputFn(val) {
  162. console.log('1111111111')
  163. },
  164. async applyOrderGetFn() {
  165. const {
  166. data: res
  167. } = await applyOrderGet({
  168. orderId: this.orderId
  169. })
  170. this.info = res
  171. uni.stopPullDownRefresh()
  172. if (res.refundId) {
  173. this.selectRefundDetailFn()
  174. }
  175. },
  176. async selectRefundDetailFn() {
  177. const {
  178. data: res
  179. } = await selectRefundDetail({
  180. id: this.info.refundId
  181. })
  182. // console.log(res)
  183. this.refundData = res
  184. uni.stopPullDownRefresh()
  185. },
  186. goFund() {
  187. this.$goPage('/pages/mineEntry/refund/refund?orderId=' + this.orderId)
  188. },
  189. async downloadImage() {
  190. let obj = {
  191. studentId: this.studentId,
  192. type: 1
  193. }
  194. const {data: imageUrl} = await getStudentVoucher(obj)
  195. // 图片链接
  196. downloadImg(imageUrl)
  197. }
  198. }
  199. }
  200. </script>
  201. <style lang="scss" scoped>
  202. @import '../comp/comp.scss';
  203. .btn_row {
  204. display: flex;
  205. justify-content: space-between;
  206. align-items: center;
  207. margin: 24rpx 0 0 0;
  208. .rightBtn {
  209. display: flex;
  210. justify-content: flex-end;
  211. .btnBorder {
  212. margin-left: 14rpx;
  213. padding: 0 16rpx;
  214. font-size: 24rpx;
  215. }
  216. }
  217. }
  218. .feeIcon {
  219. width: 28rpx;
  220. height: 28rpx;
  221. margin-left: 12rpx;
  222. }
  223. .card {
  224. padding: 20rpx;
  225. }
  226. .pad {
  227. padding-bottom: 60rpx;
  228. }
  229. .refundBtn {
  230. width: 200rpx;
  231. height: 72rpx;
  232. background: #FFFFFF;
  233. border-radius: 8rpx;
  234. border: 2rpx solid #E8E9EC;
  235. line-height: 72rpx;
  236. font-size: 28rpx;
  237. color: #ADADAD;
  238. text-align: center;
  239. }
  240. </style>