金诚优选前端代码
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.

237 lines
6.8 KiB

  1. <template>
  2. <view id="order-detail">
  3. <view v-if="detail && detail.data">
  4. 当前服务状态{{showStatus[detail.data.status]}}
  5. </view>
  6. <view class="detail_content" v-if="detail && detail.data">
  7. <view class="store_title">
  8. <view class="img">
  9. <image :src="detail.data.order_item.item_meta.image" alt></image>
  10. </view>
  11. <view class="store_text ">
  12. <view class="name">{{detail.data.order_item.item_name}}</view>
  13. <view class="num">{{detail.data.order_item.quantity}}</view>
  14. </view>
  15. </view>
  16. <view class="store_content mx-1px-top">
  17. <view class="store_content_title">
  18. <view>售后编号</view>
  19. <view>{{detail.data.refund_no}}</view>
  20. </view>
  21. <view class="store_content_title">
  22. <view>申请时间</view>
  23. <view>{{detail.data.created_at}}</view>
  24. </view>
  25. <view class="store_content_title">
  26. <view>服务类型</view>
  27. <view>{{detail.data.service_type_text}}</view>
  28. </view>
  29. <view class="store_content_title">
  30. <view>服务状态</view>
  31. <view>{{statusList[detail.data.status]}}</view>
  32. </view>
  33. <view class="store_content_title">
  34. <view>退款金额</view>
  35. <view>{{detail.data.amount/100}}</view>
  36. </view>
  37. <view class="store_content_title">
  38. <view class="refund_reason">退款原因</view>
  39. <view>{{detail.data.content}}</view>
  40. </view>
  41. </view>
  42. </view>
  43. <view v-if="detail && detail.data">
  44. <view class="status_content" v-if="detail.data.status == 2 || detail.data.status == 3 || detail.data.status == 4 || detail.data.status == 5 || detail.data.status == 8">
  45. <view class="status_title">
  46. {{detail.data.tips_title}}
  47. </view>
  48. <view class="content">
  49. {{detail.data.tips}}
  50. </view>
  51. </view>
  52. </view>
  53. <view class="submit" v-if="detail && detail.data">
  54. <button class="cancel" @tap="close" v-if="detail.data.status == 0 || detail.data.status == 1 || detail.data.status == 5">取消申请</button>
  55. <button type="primary" class="return-button" :class=" detail.data.order.distribution_status == 1 ? 'bottom' : '' " :data-refund-no="detail.data.refund_no" @tap="viewExpress" v-if="(detail.data.status == 1 && detail.data.order.distribution_status == 1) || (detail.data.status == 5 && detail.data.order.distribution_status == 1)">立即退货</button>
  56. </view>
  57. <!--弹出框-->
  58. <view class="popup" v-if="showReason">
  59. <view class="popup_alert">
  60. <view class="title">是否取消</view>
  61. <view class="content">
  62. <input type="text" placeholder="备注(必填)" @input="changeReason"></input>
  63. </view>
  64. <view class="buttom">
  65. <view class="cancel" @tap="cancel">取消</view>
  66. <view class="confirm" @tap="confirm">确定</view>
  67. </view>
  68. </view>
  69. </view>
  70. </view>
  71. </template>
  72. <script>
  73. /**
  74. * Created by admin on 2017/8/31.
  75. */
  76. import {pageLogin, getUrl,config,is} from '@/common/js/utils.js';
  77. export default {
  78. data() {
  79. return {
  80. showReason: false,
  81. detail: "",
  82. cancelReason: "",
  83. statusList: ['待审核', '审核通过', '拒绝申请', '已完成', '已关闭', '等待买家退货', '买家已退货', '等待商城发货', "等待商城退款"],
  84. showStatus: ['申请审核中', '申请已通过', '拒绝申请', '已完成', '售后已关闭', '等待用户退货', '用户已退货', '等待商城发货', "等待商城退款"]
  85. };
  86. },
  87. onReady() {
  88. },
  89. onShow() {// let app =getApp();
  90. // app.isBirthday().then(()=>{
  91. // if(this.$cookieStorage.get("birthday_gift")){
  92. // var giftData=this.$cookieStorage.get("birthday_gift").data;
  93. // new app.ToastPannel().__page.showText(giftData);
  94. // }
  95. // });
  96. },
  97. onLoad(e) {
  98. var id = e.no;
  99. pageLogin(getUrl(), () => {
  100. this.queryAfterSalesDetail(id);
  101. });
  102. },
  103. components: {},
  104. props: {},
  105. methods: {
  106. viewExpress(e) {
  107. var refund_no = e.currentTarget.dataset.refundNo;
  108. wx.navigateTo({
  109. url: '/pages/afterSales/retreat/retreat?no=' + refund_no
  110. });
  111. },
  112. // 查询售后订单详情
  113. queryAfterSalesDetail(id) {
  114. this.$http.get({
  115. api: "api/refund/show/" + id,
  116. header: {
  117. Authorization: this.$cookieStorage.get('user_token')
  118. }
  119. }).then(res => {
  120. var tips = res.data.data.tips;
  121. tips = tips.replace(/\<br\>/g, "\n");
  122. res.data.data.tips = tips;
  123. if (res.data.status) {
  124. this.setData({
  125. detail: res.data
  126. });
  127. }
  128. });
  129. },
  130. close() {
  131. this.setData({
  132. showReason: true
  133. }); // wx.showModal({
  134. // title:"是否取消",
  135. // content:"<input type='text'/>",
  136. // });
  137. },
  138. cancel() {
  139. this.setData({
  140. showReason: false
  141. });
  142. },
  143. changeReason(e) {
  144. this.setData({
  145. cancelReason: e.detail.value
  146. });
  147. },
  148. confirm() {
  149. if (!this.cancelReason) {
  150. return;
  151. }
  152. var reason = this.cancelReason;
  153. var refund_no = this.detail.data.refund_no;
  154. this.setData({
  155. showReason: false,
  156. cancelReason: ""
  157. }); // 退款
  158. this.$http.post({
  159. api: "api/refund/user/close",
  160. header: {
  161. Authorization: this.$cookieStorage.get('user_token')
  162. },
  163. data: {
  164. refund_no: refund_no,
  165. remark: reason
  166. }
  167. }).then(res => {
  168. if (res.data.status) {
  169. wx.showToast({
  170. title: "取消成功",
  171. duration: 1500,
  172. success: () => {
  173. setTimeout(() => {
  174. wx.redirectTo({
  175. url: '/pages/afterSales/index/index'
  176. });
  177. }, 1500);
  178. }
  179. });
  180. } else {
  181. wx.showToast({
  182. title: "取消失败",
  183. duration: 1000
  184. });
  185. }
  186. });
  187. },
  188. setData: function (obj) {
  189. let that = this;
  190. let keys = [];
  191. let val, data;
  192. Object.keys(obj).forEach(function (key) {
  193. keys = key.split('.');
  194. val = obj[key];
  195. data = that.$data;
  196. keys.forEach(function (key2, index) {
  197. if (index + 1 == keys.length) {
  198. that.$set(data, key2, val);
  199. } else {
  200. if (!data[key2]) {
  201. that.$set(data, key2, {});
  202. }
  203. }
  204. data = data[key2];
  205. });
  206. });
  207. }
  208. },
  209. computed: {},
  210. watch: {}
  211. };
  212. </script>
  213. <style rel="stylesheet/less" lang="less">
  214. @import "detail";
  215. </style>