Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

apply-return-goods.vue 5.7KB

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