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.

apply-return-goods.vue 5.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. <!-- 申请退货 -->
  2. <template>
  3. <view class="box">
  4. <form-builder :config="config" :formData="state.formData" @submit="submit" @radioChange="radioChange" />
  5. </view>
  6. </template>
  7. <script setup lang="ts">
  8. import { reactive } from "vue";
  9. import { onLoad } from "@dcloudio/uni-app";
  10. import { confirm, getOrderStatusName } from "@/utils/utils";
  11. import {requestNew } from "@/utils/network/request";
  12. import { commQueryCourier, orderReturn, outletList } from "@/utils/network/api";
  13. import { getItem, StorageKeys } from "@/utils/storage";
  14. const config = {
  15. submitName: "申请退货",
  16. titleWidth: 160,
  17. divider: true,
  18. address:""
  19. };
  20. const state = reactive({
  21. //订单信息
  22. orderInfo: {} as any,
  23. //退货类型: OFFLINE-线下 ON_LINE-线上
  24. returnMode: "ON_LINE",
  25. //网点列表
  26. outlets: [],
  27. //表单数据
  28. formData: [
  29. {
  30. title: "订单编号:",
  31. inputType: "number",
  32. type: 2,
  33. value: "id",
  34. hint: "订单编号",
  35. disabled: true,
  36. divider: true,
  37. },
  38. {
  39. title: "订单车牌号:",
  40. type: 2,
  41. value: "vehiclePlate",
  42. hint: "订单车牌号",
  43. disabled: true,
  44. divider: true,
  45. },
  46. {
  47. title: "订单状态:",
  48. type: 2,
  49. value: "orderStep",
  50. hint: "订单状态",
  51. disabled: true,
  52. divider: true,
  53. },
  54. {
  55. title: "退货方式:",
  56. type: 7,
  57. value: "returnMode",
  58. returnMode: "ON_LINE",
  59. star: true,
  60. required: true,
  61. divider: true,
  62. emptyHint: "请选择退货方式",
  63. itemData: [
  64. {
  65. checked: true,
  66. value: "ON_LINE",
  67. name: "线上",
  68. },
  69. // {
  70. // checked: false,
  71. // value: "OFFLINE",
  72. // name: "线下",
  73. // },
  74. ],
  75. },
  76. {
  77. title: "物流公司:",
  78. type: 4,
  79. value: "returnLogisticsCompany",
  80. required: true,
  81. star: true,
  82. hint: "请输入",
  83. divider: true,
  84. itemData: [],
  85. hide: false,
  86. emptyHint: "请选择物流公司",
  87. mode: "search",
  88. searchPickerVisible: false,
  89. },
  90. {
  91. title: "物流单号:",
  92. type: 2,
  93. value: "returnLogisticsNumber",
  94. required: true,
  95. maxlength: 20,
  96. hint: "请输入",
  97. emptyHint: "请输入物流单号",
  98. star: true,
  99. divider: true,
  100. hide: false,
  101. },
  102. {
  103. title: "退货网点编号:",
  104. type: 4,
  105. value: "returnNetworkName",
  106. required: true,
  107. star: true,
  108. hint: "请输入",
  109. emptyHint: "请选择退货网点",
  110. divider: true,
  111. itemData: [],
  112. hide: true,
  113. mode: "search",
  114. searchPickerVisible: false,
  115. },
  116. {
  117. title: "退货原因:",
  118. required: true,
  119. type: 5,
  120. vertical: 2,
  121. value: "returnReason",
  122. maxlength: 50,
  123. bg: true,
  124. star: true,
  125. hint: "请输入退货原因,限制50字以内",
  126. emptyHint: "请输入退货原因",
  127. },
  128. ],
  129. });
  130. /* 获取所有的快递公司 */
  131. const getLogisticsList = () => {
  132. const options = {
  133. type: 2,
  134. data: {},
  135. method: "POST",
  136. showLoading: true,
  137. };
  138. requestNew(commQueryCourier, options).then((res) => {
  139. const data = res;
  140. state.formData[4].itemData = data;
  141. });
  142. };
  143. /* 获取退货网点 */
  144. const getOutletList = () => {
  145. const options = {
  146. type: 2,
  147. data: {
  148. },
  149. method: "POST",
  150. showLoading: true,
  151. };
  152. requestNew(outletList, options).then((res) => {
  153. state.outlets = res;
  154. let nameList = [];
  155. state.outlets.map((item) => {
  156. nameList.push(item.name);
  157. });
  158. state.formData[6].itemData = nameList;
  159. });
  160. };
  161. //radio改变
  162. const radioChange = (e : any, item : any) => {
  163. if (item.value === "returnMode") {
  164. //退货方式
  165. state.returnMode = item.returnMode;
  166. state.formData[4].hide = state.returnMode === "ON_LINE" ? false : true;
  167. state.formData[5].hide = state.returnMode === "ON_LINE" ? false : true;
  168. state.formData[6].hide = state.returnMode === "ON_LINE" ? true : false;
  169. }
  170. };
  171. //提交退货申请
  172. const submit = (e : any) => {
  173. confirm(
  174. "是否确认退货?",
  175. () => {
  176. const curOutlet = state.outlets.find(
  177. (out) => out.name === e.returnNetworkName
  178. );
  179. const options = {
  180. type: 2,
  181. data: {
  182. id: state.orderInfo.id,
  183. returnMode: e.returnMode,
  184. // returnNetworkId: curOutlet == null ? "" : curOutlet.servicehallId,
  185. returnNetworkId: e.returnNetworkName,
  186. returnNetworkName: e.returnNetworkName,
  187. returnLogisticsCompany: e.returnLogisticsCompany,
  188. returnLogisticsNumber: e.returnLogisticsNumber,
  189. returnReason: e.returnReason,
  190. opId: getItem(StorageKeys.OpenId),
  191. address:config.address
  192. },
  193. method: "POST",
  194. showLoading: true,
  195. };
  196. requestNew(orderReturn, options).then((res) => {
  197. confirm(
  198. "您申办的ETC订单已申请退货,待审核,请到【查询服务】的【业务审核查询】查看进度",
  199. () => {
  200. uni.$emit("refreshOrder");
  201. uni.navigateBack({
  202. delta: 1
  203. })
  204. },
  205. "申请成功",
  206. false
  207. );
  208. });
  209. },
  210. "退货确认",
  211. true
  212. );
  213. };
  214. onLoad((option) => {
  215. state.orderInfo = JSON.parse(option.data);
  216. state.formData[0].hint = state.orderInfo.orderId;
  217. state.formData[1].hint = state.orderInfo.vehiclePlate;
  218. state.formData[2].hint = getOrderStatusName(state.orderInfo.orderStep);
  219. //获取物流公司
  220. getLogisticsList();
  221. //获取退货网点
  222. getOutletList();
  223. });
  224. </script>
  225. <style>
  226. page {
  227. background-color: #f3f3f3;
  228. padding-bottom: 30rpx;
  229. }
  230. </style>
  231. <style lang="scss" scoped>
  232. .box {
  233. margin: 20rpx 0rpx;
  234. background-color: white;
  235. padding: 0 20rpx 20rpx;
  236. }
  237. </style>