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.

order-details-new.vue 32KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850
  1. <!-- 新办订单-订单详情 -->
  2. <template>
  3. <view class="wrapper">
  4. <!-- 只有审核中、审核不通过和待发货订单有地址信息显示 -->
  5. <template v-if="state.orderInfo.orderStatus != OrderStatus.已取消">
  6. <view class="address-box as-gravity-center-start as-layout-horizontal"
  7. v-if="state.orderInfo.orderStep == OrderStatus.待审核 || state.orderInfo.orderStep == OrderStatus.审核不通过 || state.orderInfo.orderStep == OrderStatus.待发货">
  8. <view class="avatar as-gravity-center">
  9. {{state.orderInfo.orderInfoExt.consignee != null ? state.orderInfo.orderInfoExt.consignee.charAt(0) : ''}}
  10. </view>
  11. <view class="center" style="flex:1">
  12. <view class="as-layout-horizontal">
  13. <view class="name">
  14. {{state.orderInfo.orderInfoExt.consignee ?state.orderInfo.orderInfoExt.consignee: ''}}
  15. </view>
  16. <view class="phone">
  17. {{state.orderInfo.orderInfoExt.consigneeTel ?state.orderInfo.orderInfoExt.consigneeTel: ''}}
  18. </view>
  19. </view>
  20. <view class="addr">{{state.orderInfo.orderInfoExt.region ?state.orderInfo.orderInfoExt.region: ''}}
  21. {{state.orderInfo.orderInfoExt.address ?state.orderInfo.orderInfoExt.address: ''}}
  22. </view>
  23. </view>
  24. <image :src="`${$imgUrl}applyCard/edit.png`" mode="" class="edit"
  25. @click="gotoEditAddress(state.orderInfo)"></image>
  26. </view>
  27. </template>
  28. <view class="detail-box">
  29. <view class="detail-header">
  30. <image class="d-img" :src="`${$imgUrl}order/icon-star-green.png`"></image>
  31. <text class="detail-name">{{state.orderInfo.productName ?state.orderInfo.productName: ''}}</text>
  32. </view>
  33. <view class="detail-content">
  34. <view class="base-info-box">
  35. <!-- 基础信息 -->
  36. <view class="base-info">
  37. <view class="d-row">
  38. <text class="d-label">新办单号:</text>
  39. <text class="d-value">{{state.orderInfo.orderId}}</text>
  40. </view>
  41. <view class="d-row">
  42. <text class="d-label">业务类型:</text>
  43. <text class="d-value">{{getOrderTypeName(state.orderInfo.orderType)}}</text>
  44. </view>
  45. <view class="d-row">
  46. <text class="d-label">订单车牌:</text>
  47. <text class="d-value">{{state.orderInfo.vehiclePlate}}</text>
  48. </view>
  49. <view class="d-row">
  50. <text class="d-label">所属类型:</text>
  51. <!-- PERSONAL USER:个人 UNIT_USER:单位 -->
  52. <text class="d-value">{{state.orderInfo.userType === 'UNIT_USER' ? '单位' : '个人'}}</text>
  53. </view>
  54. <view class="d-row">
  55. <text class="d-label">车辆类型:</text>
  56. <text class="d-value">{{getCarTypeName(state.orderInfo.type)}}</text>
  57. </view>
  58. <view class="d-row" v-if="getCarTypeName(state.orderInfo.type)=='货车'">
  59. <text class="d-label">牵引车:</text>
  60. <text class="d-value">{{state.orderInfo.tractorSign=='1'?'是':'否'}}</text>
  61. </view>
  62. <view class="d-row">
  63. <text class="d-label">订单金额:</text>
  64. <text class="d-value text-orange">¥
  65. {{state.orderInfo.amount / 100 ?state.orderInfo.amount / 100: '0.00'}}</text>
  66. </view>
  67. <view class="d-row">
  68. <text class="d-label">订单状态:</text>
  69. <text v-if="state.orderInfo.orderStep == 12 && state.reshipment=='1'" class="d-value text-green">补货中</text>
  70. <text v-else-if="state.orderInfo.orderStep == 35" class="d-value text-green">下单</text>
  71. <text v-else
  72. class="d-value text-green">{{state.orderInfo.orderStatus == OrderStatus.已取消 ? '已取消' : $util.getOrderStatusName(state.orderInfo.orderStep)}}</text>
  73. </view>
  74. <view class="d-row">
  75. <text class="d-label">创建时间:</text>
  76. <text class="d-value">{{getOrderTime(state.orderInfo.insertTime)}}</text>
  77. </view>
  78. </view>
  79. <!-- 已取消订单信息 -->
  80. <view v-if="state.orderInfo.orderStatus == OrderStatus.已取消">
  81. <view class="d-row" v-if="state.orderInfo.orderStep > OrderStatus.已支付">
  82. <text class="d-label">付款时间:</text>
  83. <text
  84. class="d-value">{{getOrderTime(state.orderInfo.orderInfoExt?state.orderInfo.orderInfoExt.payTime:"")}}</text>
  85. </view>
  86. <view class="d-row">
  87. <text class="d-label">取消时间:</text>
  88. <text class="d-value">{{getOrderTime(state.orderInfo.orderInfoExt.cancelTime)}}</text>
  89. </view>
  90. <view class="d-row" v-if="state.orderInfo.staffName">
  91. <text class="d-label">业 务 员:</text>
  92. <text class="d-value">{{state.orderInfo.staffName}}</text>
  93. </view>
  94. <view class="d-row">
  95. <text class="d-label">取消原因:</text>
  96. <text
  97. class="d-value">{{state.orderInfo.orderInfoExt.cancelReason ?state.orderInfo.orderInfoExt.cancelReason: ''}}</text>
  98. </view>
  99. </view>
  100. <view v-else>
  101. <!-- 审核中/审核不通过订单信息 -->
  102. <view
  103. v-if="state.orderInfo.orderStep == OrderStatus.审核不通过 || state.orderInfo.orderStep == OrderStatus.待审核">
  104. <view class="d-row" v-if="state.orderInfo.orderInfoExt.payTime">
  105. <text class="d-label">付款时间:</text>
  106. <text
  107. class="d-value">{{getOrderTime(state.orderInfo.orderInfoExt?state.orderInfo.orderInfoExt.payTime:"")}}</text>
  108. </view>
  109. <view class="d-row" v-if="state.orderInfo.orderStep == OrderStatus.审核不通过">
  110. <text class="d-label">不通过原因:</text>
  111. <text
  112. class="d-value">{{state.orderInfo.orderInfoExt.auditReason ?state.orderInfo.orderInfoExt.auditReason: ''}}</text>
  113. </view>
  114. </view>
  115. <!-- 待发货 -->
  116. <view v-if="state.orderInfo.orderStep == OrderStatus.待发货">
  117. <view class="d-row" v-if="state.orderInfo.orderInfoExt.payTime">
  118. <text class="d-label">付款时间:</text>
  119. <text
  120. class="d-value">{{getOrderTime(state.orderInfo.orderInfoExt?state.orderInfo.orderInfoExt.payTime:"")}}</text>
  121. </view>
  122. <view class="d-row" v-if="state.orderInfo.staffName">
  123. <text class="d-label">业 务 员:</text>
  124. <text class="d-value">{{state.orderInfo.staffName}}</text>
  125. </view>
  126. </view>
  127. <!-- 待收货/待激活/已结束/换货/退货-->
  128. <view v-if="state.orderInfo.orderStep == OrderStatus.待收货 || state.orderInfo.orderStep == OrderStatus.待激活
  129. || state.orderInfo.orderStep == OrderStatus.已结束
  130. || state.orderInfo.orderStep == OrderStatus['已申请-换货']
  131. || state.orderInfo.orderStep == OrderStatus['已申请-退货']">
  132. <view class="d-row" v-if="state.orderInfo.orderInfoExt.payTime">
  133. <text class="d-label">付款时间:</text>
  134. <text
  135. class="d-value">{{getOrderTime(state.orderInfo.orderInfoExt?state.orderInfo.orderInfoExt.payTime:'')}}</text>
  136. </view>
  137. <view class="d-row">
  138. <text class="d-label">发货时间:</text>
  139. <text
  140. class="d-value">{{getOrderTime(state.orderInfo.orderInfoExt?state.orderInfo.orderInfoExt.deliveryTime:"")}}</text>
  141. </view>
  142. <view class="d-row" v-if="state.orderInfo.orderStep != OrderStatus.待收货">
  143. <text class="d-label">收货时间:</text>
  144. <text
  145. class="d-value">{{getOrderTime(state.orderInfo.orderInfoExt?state.orderInfo.orderInfoExt.receivingTime:"")}}</text>
  146. </view>
  147. <view class="d-row">
  148. <text class="d-label">卡 号:</text>
  149. <text class="d-value">{{state.orderInfo.cardId ?state.orderInfo.cardId: ''}}</text>
  150. </view>
  151. <view class="d-row" v-if="state.orderInfo.cardStatus">
  152. <text class="d-label">卡 状 态:</text>
  153. <text class="d-value">{{getETCStatusName(state.orderInfo.cardStatus)}}</text>
  154. </view>
  155. <view class="d-row">
  156. <text class="d-label">OBU 号:</text>
  157. <text class="d-value">{{state.orderInfo.obuId ?state.orderInfo.obuId: ''}}</text>
  158. </view>
  159. <view class="d-row" v-if="state.orderInfo.obuStatus">
  160. <text class="d-label">OBU状态:</text>
  161. <text class="d-value">{{getOBUStatusName(state.orderInfo.obuStatus)}}</text>
  162. </view>
  163. <view class="d-row" v-if="state.orderInfo.staffName">
  164. <text class="d-label">业 务 员:</text>
  165. <text class="d-value">{{state.orderInfo.staffName}}</text>
  166. </view>
  167. <view class="d-row">
  168. <text class="d-label">快递单号:</text>
  169. <text
  170. class="d-value">{{state.orderInfo.trackingNumber ?state.orderInfo.trackingNumber: ''}}</text>
  171. </view>
  172. <view class="d-row">
  173. <text class="d-label">物流公司:</text>
  174. <text
  175. class="d-value">{{state.orderInfo.courierCompany ?state.orderInfo.courierCompany: ''}}</text>
  176. </view>
  177. </view>
  178. <!-- 订单已完成 -->
  179. <view v-if="state.orderInfo.orderStep == OrderStatus.已完成">
  180. <view class="d-row" v-if="state.orderInfo.orderInfoExt.payTime">
  181. <text class="d-label">付款时间:</text>
  182. <text
  183. class="d-value">{{getOrderTime(state.orderInfo.orderInfoExt?state.orderInfo.orderInfoExt.payTime:"")}}</text>
  184. </view>
  185. <view class="d-row">
  186. <text class="d-label">发货时间:</text>
  187. <text
  188. class="d-value">{{getOrderTime(state.orderInfo.orderInfoExt?state.orderInfo.orderInfoExt.deliveryTime:"")}}</text>
  189. </view>
  190. <view class="d-row">
  191. <text class="d-label">收货时间:</text>
  192. <text
  193. class="d-value">{{getOrderTime(state.orderInfo.orderInfoExt?state.orderInfo.orderInfoExt.receivingTime:"")}}</text>
  194. </view>
  195. <view class="d-row">
  196. <text class="d-label">激活时间:</text>
  197. <text class="d-value">{{getOrderTime(state.orderInfo.cardEnableTime)}}</text>
  198. </view>
  199. <view class="d-row">
  200. <text class="d-label">卡 号:</text>
  201. <text class="d-value">{{state.orderInfo.cardId ?state.orderInfo.cardId: ''}}</text>
  202. </view>
  203. <view class="d-row" v-if="state.orderInfo.cardStatus">
  204. <text class="d-label">卡 状 态:</text>
  205. <text class="d-value">{{getETCStatusName(state.orderInfo.cardStatus)}}</text>
  206. </view>
  207. <view class="d-row">
  208. <text class="d-label">OBU 号:</text>
  209. <text class="d-value">{{state.orderInfo.obuId ?state.orderInfo.obuId: ''}}</text>
  210. </view>
  211. <view class="d-row" v-if="state.orderInfo.obuStatus">
  212. <text class="d-label">OBU状态:</text>
  213. <text class="d-value">{{getOBUStatusName(state.orderInfo.obuStatus)}}</text>
  214. </view>
  215. <view class="d-row" v-if="state.orderInfo.staffName">
  216. <text class="d-label">业 务 员:</text>
  217. <text class="d-value">{{state.orderInfo.staffName}}</text>
  218. </view>
  219. <view class="d-row">
  220. <text class="d-label">快递单号:</text>
  221. <text
  222. class="d-value">{{state.orderInfo.trackingNumber ?state.orderInfo.trackingNumber: ''}}</text>
  223. </view>
  224. <view class="d-row">
  225. <text class="d-label">物流公司:</text>
  226. <text
  227. class="d-value">{{state.orderInfo.courierCompany ?state.orderInfo.courierCompany: ''}}</text>
  228. </view>
  229. </view>
  230. </view>
  231. <!-- 售后 -->
  232. <view class="post-sale" v-if="state.orderInfo.orderStep == OrderStatus['已申请-换货']
  233. || state.orderInfo.orderStep == OrderStatus['已申请-退货'] || isHaveAfterSaleInfo()">
  234. <!-- 售后退货-->
  235. <view
  236. v-if="state.orderInfo.orderStep == OrderStatus['已申请-退货'] || !isBlank(state.orderInfo.orderInfoExt && state.orderInfo.orderInfoExt.returnMode)">
  237. <view class="d-row" v-if="state.orderInfo.XXX">
  238. <text class="d-label">售后单号:</text>
  239. <text class="d-value">{{state.orderInfo.XXX ?state.orderInfo.XXX: ''}}</text>
  240. </view>
  241. <view class="d-row">
  242. <text class="d-label">业务类型:</text>
  243. <text class="d-value">退货</text>
  244. </view>
  245. <view class="d-row" v-if="state.orderInfo.cancelTime">
  246. <text class="d-label">创建时间:</text>
  247. <text class="d-value">{{getOrderTime(state.orderInfo.cancelTime)}}</text>
  248. </view>
  249. <view class="d-row">
  250. <text class="d-label">退货方式:</text>
  251. <text
  252. class="d-value">{{state.orderInfo.orderInfoExt.returnMode === 'ON_LINE' ? '线上' : '线下'}}</text>
  253. </view>
  254. <template v-if="state.orderInfo.orderInfoExt.returnMode === 'ON_LINE'">
  255. <view class="d-row">
  256. <text class="d-label">物流公司:</text>
  257. <text
  258. class="d-value">{{state.orderInfo.orderInfoExt.returnLogisticsCompany ?state.orderInfo.orderInfoExt.returnLogisticsCompany: ''}}</text>
  259. </view>
  260. <view class="d-row">
  261. <text class="d-label">快递单号:</text>
  262. <text
  263. class="d-value">{{state.orderInfo.orderInfoExt.returnLogisticsNumber ?state.orderInfo.orderInfoExt.returnLogisticsNumber: ''}}</text>
  264. </view>
  265. </template>
  266. <template v-if="state.orderInfo.orderInfoExt.returnMode === 'OFFLINE'">
  267. <view class="d-row">
  268. <text class="d-label">退货网点:</text>
  269. <text
  270. class="d-value">{{state.orderInfo.orderInfoExt.returnNetworkName ?state.orderInfo.orderInfoExt.returnNetworkName: ''}}</text>
  271. </view>
  272. </template>
  273. <view class="d-row">
  274. <text class="d-label">退货原因:</text>
  275. <text
  276. class="d-value">{{state.orderInfo.orderInfoExt.returnReason ?state.orderInfo.orderInfoExt.returnReason: ''}}</text>
  277. </view>
  278. <view class="d-row" v-if="state.orderInfo.staffName">
  279. <text class="d-label">业 务 员:</text>
  280. <text class="d-value">{{state.orderInfo.staffName}}</text>
  281. </view>
  282. </view>
  283. <!-- 售后换货 -->
  284. <view
  285. v-if="state.orderInfo.orderStep == OrderStatus['已申请-换货'] || !isBlank(state.orderInfo.orderInfoExt.exchangeMode)">
  286. <view class="d-row" v-if="state.orderInfo.XXX">
  287. <text class="d-label">售后单号:</text>
  288. <text class="d-value">{{state.orderInfo.XXX ?state.orderInfo.XXX: ''}}</text>
  289. </view>
  290. <view class="d-row">
  291. <text class="d-label">业务类型:</text>
  292. <text class="d-value">换货</text>
  293. </view>
  294. <view class="d-row" v-if="state.orderInfo.XXX">
  295. <text class="d-label">创建时间:</text>
  296. <text class="d-value">{{getOrderTime(state.orderInfo.XXXX)}}</text>
  297. </view>
  298. <view class="d-row">
  299. <text class="d-label">退货方式:</text>
  300. <text
  301. class="d-value">{{state.orderInfo.orderInfoExt.exchangeMode === 'ON_LINE' ? '线上' : '线下'}}</text>
  302. </view>
  303. <!-- 线上 -->
  304. <template v-if="state.orderInfo.orderInfoExt.exchangeMode === 'ON_LINE'">
  305. <view class="d-row">
  306. <text class="d-label">物流公司:</text>
  307. <text
  308. class="d-value">{{state.orderInfo.orderInfoExt.exchangeLogisticsCompany ?state.orderInfo.orderInfoExt.exchangeLogisticsCompany: ''}}</text>
  309. </view>
  310. <view class="d-row">
  311. <text class="d-label">快递单号:</text>
  312. <text
  313. class="d-value">{{state.orderInfo.orderInfoExt.exchangeLogisticsNumber ?state.orderInfo.orderInfoExt.exchangeLogisticsNumber: ''}}</text>
  314. </view>
  315. <view class="d-row">
  316. <text class="d-label">收货方式:</text>
  317. <text
  318. class="d-value">{{state.orderInfo.orderInfoExt.exchangeRgMode === 'SELF' ? '营业点自提' : '邮寄'}}</text>
  319. </view>
  320. <template v-if="state.orderInfo.orderInfoExt.exchangeRgMode === 'SELF'">
  321. <view class="d-row">
  322. <text class="d-label">自提网点:</text>
  323. <text
  324. class="d-value">{{state.orderInfo.orderInfoExt.exchangeRgNetworkName ?state.orderInfo.orderInfoExt.exchangeRgNetworkName: ''}}</text>
  325. </view>
  326. </template>
  327. <template v-if="state.orderInfo.orderInfoExt.exchangeRgMode === 'MAIL'">
  328. <view class="d-row">
  329. <text class="d-label">收件人姓名:</text>
  330. <text
  331. class="d-value">{{state.orderInfo.orderInfoExt.consignee ?state.orderInfo.orderInfoExt.consignee: ''}}</text>
  332. </view>
  333. <view class="d-row">
  334. <text class="d-label">收件人电话:</text>
  335. <text
  336. class="d-value">{{state.orderInfo.orderInfoExt.consigneeTel ?state.orderInfo.orderInfoExt.consigneeTel: ''}}</text>
  337. </view>
  338. <view class="d-row">
  339. <text class="d-label">收件人地址:</text>
  340. <text class="d-value">{{state.orderInfo.orderInfoExt.address}}</text>
  341. </view>
  342. <view class="d-row" v-if="state.orderInfo.orderInfoExt.postalCode">
  343. <text class="d-label">邮政编码:</text>
  344. <text
  345. class="d-value">{{state.orderInfo.orderInfoExt.postalCode ?state.orderInfo.orderInfoExt.postalCode: ''}}</text>
  346. </view>
  347. </template>
  348. </template>
  349. <!-- 线下 -->
  350. <template v-if="state.orderInfo.orderInfoExt.exchangeMode === 'OFFLINE'">
  351. <view class="d-row">
  352. <text class="d-label">退货网点:</text>
  353. <text
  354. class="d-value">{{state.orderInfo.orderInfoExt.exchangeNetworkName ?state.orderInfo.orderInfoExt.exchangeNetworkName: ''}}</text>
  355. </view>
  356. </template>
  357. <view class="d-row">
  358. <text class="d-label">换货原因:</text>
  359. <text class="d-value">{{state.orderInfo.orderInfoExt.exchangeReason}}</text>
  360. </view>
  361. <view class="d-row" v-if="state.orderInfo.staffName">
  362. <text class="d-label">业 务 员:</text>
  363. <text class="d-value">{{state.orderInfo.staffName}}</text>
  364. </view>
  365. </view>
  366. <!-- 已完成订单的售后怎么判断 -->
  367. <!-- TODO 已完成订单存在售后信息的要显示售后信息,但是不知道用什么字段来来判断已完成订单有没有售后信息及哪一种售后信息,需走完订单所有流程在进行测试修改 -->
  368. </view>
  369. </view>
  370. <!-- orderSource类型 SERVICE_HALL app只展示待激活按钮-->
  371. <!-- WECHAT("WECHAT", "九州ETC小程序"),
  372. SERVICE_HALL("SERVICE_HALL", "线上营业厅"),
  373. WEB("WEB", "后台PC端",),
  374. H5("H5", "H5页面", ),
  375. ALI("ALI", "支付宝小程序", ) -->
  376. <!-- 按钮区 -->
  377. <view>
  378. <view class="btn-view"
  379. v-if="state.orderInfo.orderStatus != OrderStatus.已取消 && state.orderInfo['orderSource'] !='SERVICE_HALL'">
  380. <!-- 信息填写未完成 -->
  381. <view class="btn-status"
  382. v-if="state.orderInfo.orderStep == OrderStatus['完成个人/单位信息上传'] || state.orderInfo.orderStep == OrderStatus.完成填写基本信息 || state.orderInfo.orderStep == OrderStatus.待支付3">
  383. <view class="btn space" @click="gotoCancelOrder(state.orderInfo)">取消订单</view>
  384. <view class="btn-green" @click="gotoEditUserOrUnitInfo(state.orderInfo)">继续申请</view>
  385. </view>
  386. <!-- 审核中/审核不通过 -->
  387. <view
  388. v-if="state.orderInfo.orderStep == OrderStatus.审核不通过 || state.orderInfo.orderStep == OrderStatus.待审核"
  389. class="btn-status">
  390. <view class="btn space" @click="gotoCancelOrder(state.orderInfo)">取消订单</view>
  391. <view class="btn space" v-if="state.orderInfo.orderStep == OrderStatus.审核不通过"
  392. @click="gotoEditUserOrUnitInfo(state.orderInfo)">修改资料</view>
  393. <view class="btn-green" @click="gotoEditAddress(state.orderInfo)">修改地址</view>
  394. </view>
  395. <!-- 待支付 -->
  396. <view
  397. v-if="state.orderInfo.orderStep == OrderStatus['完成车辆信息上传/待支付'] || state.orderInfo.orderStep == OrderStatus.待支付2 "
  398. class="btn-status">
  399. <view class="btn space" @click="gotoCancelOrder(state.orderInfo)">取消订单</view>
  400. <view class="btn-green width-num-1" @click="gotoOrderDetailsPay(state.orderInfo)">支付</view>
  401. </view>
  402. <!-- 待签约-->
  403. <view v-if="state.orderInfo.orderStep == OrderStatus['已支付/待签约']" class="btn-status">
  404. <view class="btn space" @click="gotoCancelOrder(state.orderInfo)">取消订单</view>
  405. <view class="btn-green" @click="gotoOrderSign(state.orderInfo)">去签约</view>
  406. </view>
  407. <!-- 待发货 -->
  408. <view v-if="state.orderInfo.orderStep == OrderStatus.待发货" class="btn-status">
  409. <view class="btn space" @click="gotoCancelOrder(state.orderInfo)">取消订单</view>
  410. <view class="btn-green" @click="gotoEditAddress(state.orderInfo)">修改地址</view>
  411. </view>
  412. <!-- 待收货 -->
  413. <view v-if="state.orderInfo.orderStep == OrderStatus.待收货" class="btn-status">
  414. <view class="btn space" @click="gotoCheckLogistics(state.orderInfo)">查看物流</view>
  415. <view class="btn space" @click="gotoReturnOrder(state.orderInfo)">申请退货</view>
  416. <view class="btn-green space" @click="gotoConfirmReceipt(state.orderInfo)">确认收货</view>
  417. <view class="btn-green" @click.stop="closeOrder(state.orderInfo)"
  418. v-if="state.orderInfo.finishOrder">结束订单</view>
  419. </view>
  420. <!-- 待激活 -->
  421. <view v-if="state.orderInfo.orderStep == OrderStatus.待激活" class="btn-status">
  422. <view class="btn space" @click="gotoReturnOrder(state.orderInfo)"
  423. v-if="state.orderInfo.applyReturn">申请退货</view>
  424. <view class="btn space" @click="gotoExchangeOrder(state.orderInfo)">申请换货</view>
  425. <view class="btn space" @click.stop="gotoReplenishmentOrder(state.orderInfo)" v-if="state.orderInfo.deviceType == deviceType">申请补货</view>
  426. <view class="btn-green space" @click="gotoActiveOrder(state.orderInfo)">去激活</view>
  427. <view class="btn-green" @click.stop="closeOrder(state.orderInfo)"
  428. v-if="state.orderInfo.finishOrder">结束订单</view>
  429. </view>
  430. <!-- 订单已结束 -->
  431. <view v-if="state.orderInfo.orderStep == OrderStatus.已结束 && state.orderInfo.isUseAgain"
  432. class="btn-status">
  433. <view class="btn-green" @click.stop="gotoAgainUseOrder(state.orderInfo)">再次使用订单</view>
  434. </view>
  435. <!-- 异地-邮寄地址填写 -->
  436. <view v-if="state.orderInfo.orderStep == OrderStatus.邮寄地址填写 && state.orderInfo.deviceType==deviceType"
  437. class="btn-status">
  438. <view class="btn-green" @click.stop="gotoAddressOrder(state.orderInfo)">邮寄地址填写</view>
  439. </view>
  440. <!-- 异地开始 -->
  441. <view v-if="state.orderInfo.orderStep == 31" class="btn-status">
  442. <view class="btn btn-green" @click="gotoReturnOrder(state.orderInfo)">退货</view>
  443. </view>
  444. <view v-if="state.orderInfo.orderStep == 33" class="btn-status">
  445. <view class="btn btn-green" @click="gotoExchangeOrder(state.orderInfo)" v-if="state.orderInfo.orderType!='REPLENISHMENT'">换货</view>
  446. </view>
  447. <view v-if="state.orderInfo.orderStep == 35" class="btn-status">
  448. <view class="btn btn-green" @click="placeAnOrder(state.orderInfo)">下单</view>
  449. </view>
  450. <!-- 异地结束-->
  451. <!-- 订单完成 -->
  452. <view v-if="state.isWeiXin==1">
  453. <view
  454. v-if="state.orderInfo.orderStep == OrderStatus.已完成 && (state.orderInfo.orderType =='ISSUE' || state.orderInfo.orderType =='VALUE_TO_ACCOUNT')"
  455. class="btn-status">
  456. <view class="btn space"
  457. v-if="( state.orderInfo.isProduct==1 && state.orderInfo.isService==1) ">
  458. 已评价</view>
  459. <view class="btn-green" v-else @click.stop="gotoEvaluateProduct(state.orderInfo)">去评价产品
  460. </view>
  461. </view>
  462. </view>
  463. <view v-if="state.isWeiXin==2">
  464. <view class="btn-status" v-if="state.orderInfo.orderStep == OrderStatus.已完成">
  465. <view class="btn space"
  466. v-if="state.orderInfo.isStaff==1 && state.orderInfo.isProduct==1">
  467. 已评价
  468. </view>
  469. <view class='evaluation' v-else>
  470. <view class="btn-green" @click.stop="gotoEvaluateSalesman(state.orderInfo)">去评价
  471. </view>
  472. </view>
  473. </view>
  474. </view>
  475. </view>
  476. <view v-else>
  477. <!-- 待激活 -->
  478. <view class="btn-status" style="display: flex;justify-content: flex-end;"
  479. v-if="state.orderInfo.orderStep == OrderStatus.待激活 && state.orderInfo.cardId && state.orderInfo.obuId">
  480. <view class="btn btn-green" @click.stop="gotoActiveOrder(state.orderInfo)"
  481. style="border: 1px solid #00B38B;">去激活</view>
  482. </view>
  483. </view>
  484. </view>
  485. </view>
  486. </view>
  487. </view>
  488. <!-- 弹窗 -->
  489. <u-popup v-model="state.showActiveOrder" mode="center">
  490. <popup-active-order content="确认是否重新激活订单" @cancel="state.showActiveOrder = false"
  491. @confirm="toActiveOrder"></popup-active-order>
  492. </u-popup>
  493. </template>
  494. <script setup lang="ts">
  495. import popupActiveOrder from "@/pages/order/components/popup-active-order.vue";
  496. import { reactive } from "vue";
  497. import { onLoad, onUnload, onShow } from "@dcloudio/uni-app";
  498. import { request } from "@/utils/network/request";
  499. import { editOrderAddr, orderDetail } from "@/utils/network/api";
  500. import { stringToJson } from "@/utils/network/encryption";
  501. import useOrderSkip from "@/composables/order/useOrderSkip";
  502. import { getETCStatusName, getOBUStatusName, msg, getOrderTypeName, getCarTypeName, getOrderTime, isBlank, timesDiff } from "@/utils/utils";
  503. import { OrderStatus } from "@/datas/enum";
  504. import {deviceType} from "@/utils/network/difference";
  505. const state = reactive({
  506. orderInfo: {
  507. orderInfoExt: {}
  508. } as any, //订单信息
  509. showActiveOrder: false, //激活弹窗
  510. isWeiXin: 1, //1 微信 2 app
  511. appraise: "",
  512. id: "",
  513. reshipment:"",//异地补货
  514. });
  515. //按钮跳转业务逻辑
  516. const { gotoEditAddress, gotoCancelOrder, gotoEditUserOrUnitInfo,
  517. gotoConfirmReceipt, gotoCheckLogistics, gotoEvaluateProduct,
  518. gotoActiveOrder, gotoReturnOrder, gotoExchangeOrder, gotoPay, gotoOrderSign, gotoOrderDetailsPay, gotoEvaluateSalesman, closeOrder, gotoAgainUseOrder,gotoAddressOrder,placeAnOrder } = useOrderSkip();
  519. //获取订单详情
  520. const getOrderDetails = (id, appraise) => {
  521. const options = {
  522. type: 2,
  523. data: { "id": id },
  524. method: 'POST',
  525. showLoading: true,
  526. }
  527. request(orderDetail, options).then((res) => {
  528. state.orderInfo = stringToJson(res.bizContent);
  529. // 订单发货后未激活 30天 以后 结束订单功能 insertTime >30 算出来距离今天是负数 updateTime<30(结束订单)
  530. for (var i in state.orderInfo) {
  531. if (state.orderInfo['insertTime']) {
  532. if (timesDiff(state.orderInfo['insertTime'].replace("T", " ")).days > 30) {
  533. state.orderInfo['finishOrder'] = true //可以结束
  534. } else {
  535. state.orderInfo['finishOrder'] = false //不可以结束
  536. }
  537. }
  538. if (state.orderInfo['updateTime']) {
  539. if (timesDiff(state.orderInfo['updateTime'].replace("T", " ")).days <= 30) {
  540. state.orderInfo['isUseAgain'] = true //可以结束
  541. } else {
  542. state.orderInfo['isUseAgain'] = false //不可以结束
  543. }
  544. }
  545. // 收货日期超过7个自然日不允许申请退货
  546. if (state.orderInfo.orderInfoExt['receivingTime']) {
  547. if (timesDiff(state.orderInfo.orderInfoExt['receivingTime'].replace("T", " ")).days > 7) {
  548. state.orderInfo['applyReturn'] = false //不展示申请退货
  549. } else {
  550. state.orderInfo['applyReturn'] = true //展示申请退货
  551. }
  552. }
  553. }
  554. console.log("获取订单详情", state.orderInfo, state.orderInfo['applyReturn'])
  555. })
  556. }
  557. //修改订单收货地址
  558. const requestEditOrderAddr = (addr) => {
  559. const options = {
  560. type: 2, data: {
  561. "id": state.orderInfo.id,
  562. 'consignee': addr.consignee,
  563. 'consigneeTel': addr.consigneeTel,
  564. 'region': addr.region,
  565. 'address': addr.address,
  566. 'postalCode': addr.postalCode
  567. },
  568. method: 'POST',
  569. showLoading: true,
  570. }
  571. request(editOrderAddr, options).then((res) => {
  572. state.orderInfo.orderInfoExt.id = addr.id,
  573. state.orderInfo.orderInfoExt.consignee = addr.consignee;
  574. state.orderInfo.orderInfoExt.consigneeTel = addr.consigneeTel;
  575. state.orderInfo.orderInfoExt.region = addr.region;
  576. state.orderInfo.orderInfoExt.address = addr.address;
  577. state.orderInfo.orderInfoExt.postalCode = addr.postalCode;
  578. setTimeout(() => {
  579. msg('收货地址修改成功');
  580. }, 1000)
  581. })
  582. }
  583. //激活订单
  584. const toActiveOrder = () => {
  585. gotoActiveOrder(state.orderInfo);
  586. state.showActiveOrder = false;
  587. }
  588. //是否有售后信息
  589. const isHaveAfterSaleInfo = () => {
  590. if (isBlank(state.orderInfo.orderInfoExt ? state.orderInfo.orderInfoExt.returnMode : null) && isBlank(state.orderInfo.orderInfoExt ? state.orderInfo.orderInfoExt.exchangeMode : null)) {
  591. return false;
  592. }
  593. return true;
  594. }
  595. onLoad((options) => {
  596. state.isWeiXin = options.isWeiXin
  597. state.reshipment = options.reshipment
  598. console.log("options.reshipment",options.reshipment)
  599. //刷新订单信息
  600. uni.$on('refreshOrder', (data) => {
  601. getOrderDetails(options.id, state.orderInfo.appraise);
  602. });
  603. //修改收货地址
  604. uni.$on('selectAddressSuccess', (addr) => {
  605. requestEditOrderAddr(addr);
  606. });
  607. console.log("optionssdsfd", options)
  608. state.id = options.id
  609. state.appraise = options.appraise
  610. })
  611. onShow(() => {
  612. getOrderDetails(state.id, state.appraise);
  613. })
  614. onUnload(() => {
  615. uni.$off('refreshOrder');
  616. uni.$off('selectAddressSuccess');
  617. console.log("已评价")
  618. })
  619. </script>
  620. <style>
  621. page {
  622. background: #EEF7F7;
  623. padding-bottom: 30rpx;
  624. }
  625. :deep(.u-mode-center-box) {
  626. border-radius: 20rpx;
  627. }
  628. </style>
  629. <style lang="scss" scoped>
  630. .address-box {
  631. background: #FFFFFF;
  632. box-shadow: 0rpx 2rpx 6rpx 0rpx rgba(223, 223, 223, 0.8);
  633. border-radius: 20rpx;
  634. margin: 30rpx 30rpx 0rpx;
  635. padding: 30rpx;
  636. .avatar {
  637. background: rgba(0, 179, 139, 0.2);
  638. border-radius: 50%;
  639. color: #00B38B;
  640. font-size: 26rpx;
  641. width: 80rpx;
  642. height: 80rpx;
  643. }
  644. .center {
  645. margin-left: 20rpx;
  646. margin-right: 20rpx;
  647. display: flex;
  648. flex-direction: column;
  649. justify-content: center;
  650. .name {
  651. font-size: 30rpx;
  652. font-family: Microsoft YaHei;
  653. font-weight: 400;
  654. color: #333333;
  655. }
  656. .phone {
  657. font-size: 24rpx;
  658. font-family: Microsoft YaHei;
  659. font-weight: 400;
  660. color: #999999;
  661. margin-left: 20rpx;
  662. }
  663. .addr {
  664. margin-top: 18rpx;
  665. font-size: 26rpx;
  666. font-family: Microsoft YaHei;
  667. font-weight: 400;
  668. color: #333333;
  669. line-height: 36rpx;
  670. }
  671. }
  672. .edit {
  673. width: 60rpx;
  674. height: 55rpx;
  675. }
  676. }
  677. .detail-box {
  678. background: #FFFFFF;
  679. box-shadow: 0rpx 2rpx 6rpx 0rpx rgba(223, 223, 223, 0.8);
  680. border-radius: 20rpx;
  681. margin: 30rpx;
  682. .detail-header {
  683. display: flex;
  684. border-bottom: 1rpx solid #DCDCDC;
  685. padding: 30rpx;
  686. align-items: center;
  687. .d-img {
  688. width: 48rpx;
  689. height: 48rpx;
  690. }
  691. .detail-name {
  692. font-size: 30rpx;
  693. font-weight: 400;
  694. color: #333333;
  695. margin-left: 12rpx;
  696. }
  697. }
  698. .detail-content {
  699. padding: 28rpx 29rpx 10rpx 29rpx;
  700. .post-sale {
  701. border-top: 1rpx solid #DCDCDC;
  702. padding-top: 38rpx
  703. }
  704. .d-row {
  705. display: flex;
  706. margin-bottom: 32rpx;
  707. .d-label {
  708. font-size: 26rpx;
  709. //width: 135rpx;
  710. color: #999999;
  711. text-align: right;
  712. }
  713. .d-value {
  714. font-size: 26rpx;
  715. color: #333333;
  716. flex: 1;
  717. overflow: hidden;
  718. }
  719. }
  720. .btn-view {
  721. .btn-status {
  722. display: flex;
  723. justify-content: flex-end;
  724. padding: 20rpx 0;
  725. border-top: 1rpx solid #DCDCDC;
  726. }
  727. .space {
  728. margin-right: 19rpx
  729. }
  730. .btn {
  731. border: 1px solid #DCDCDC;
  732. border-radius: 30rpx;
  733. color: #333333;
  734. font-size: 24rpx;
  735. height: 52rpx;
  736. width: 130rpx;
  737. display: flex;
  738. justify-content: center;
  739. align-items: center;
  740. }
  741. .btn-green {
  742. border: 1px solid #00B38B;
  743. border-radius: 30rpx;
  744. color: #00B38B;
  745. height: 52rpx;
  746. padding: 0 10rpx;
  747. display: flex;
  748. justify-content: center;
  749. align-items: center;
  750. font-size: 24rpx;
  751. }
  752. .width-num-1 {
  753. width: 115rpx;
  754. }
  755. .width-num-2 {
  756. width: 221rpx;
  757. }
  758. .width-num-3 {
  759. width: 201rpx;
  760. }
  761. }
  762. }
  763. }
  764. .text-orange {
  765. color: #FF8000 !important;
  766. }
  767. .text-green {
  768. color: #00B38B !important;
  769. }
  770. .btn-primary {
  771. border: 1px solid #00b38b;
  772. color: #00b38b;
  773. }
  774. .btn {
  775. border: 1px solid #DCDCDC;
  776. border-radius: 30rpx;
  777. color: #333333;
  778. font-size: 24rpx;
  779. height: 52rpx;
  780. width: 130rpx;
  781. display: flex;
  782. justify-content: center;
  783. align-items: center;
  784. }
  785. </style>