index.vue 36 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175
  1. <template>
  2. <view>
  3. <view class='order-details'>
  4. <!-- 给header上与data上加on为退款订单-->
  5. <!--预售-->
  6. <view v-if="orderInfo.activity_type == 2 && (orderInfo.status == 10 || orderInfo.status == 11)">
  7. <view class='header presell_header'>
  8. <view class="presell_payment"><text class="iconfont icon-shijian1"></text>{{ orderInfo.status == 11 ? '交易已关闭' : '待付尾款' }}</view>
  9. <view class='data' style="margin-left: 0;">
  10. <view class='state'>请在{{orderInfo.orderProduct[0].cart_info.productPresell.final_end_time}}前完成支付,超时订单将自动取消</view>
  11. </view>
  12. </view>
  13. </view>
  14. <view v-else>
  15. <view class='header bg-color acea-row row-middle' :class='isGoodsReturn ? "on":""'>
  16. <view class='pictrue' v-if="isGoodsReturn==false">
  17. <image v-if="orderInfo.status != 9" :src="imgUrl+'/static/order_'+(orderInfo.status+2)+'.gif'"></image>
  18. <image v-else :src="imgUrl+'/static/order_2.gif'"></image>
  19. </view>
  20. <view class='data' :class='isGoodsReturn ? "on":""'>
  21. <view class='state'>
  22. <block v-if="orderInfo.status == 0 && orderInfo.order_type == 0">待发货</block>
  23. <block v-if="orderInfo.status == 9">等待其他人参加拼团</block>
  24. <block v-if="orderInfo.status == 0 && orderInfo.order_type == 1">待核销</block>
  25. <block v-if="orderInfo.status == 1">待收货</block>
  26. <block v-if="orderInfo.status == 2">待评价</block>
  27. <block v-if="orderInfo.status == 3">已完成</block>
  28. <block v-if="orderInfo.status == -1">已为您退款,感谢您的支持</block>
  29. </view>
  30. <view>{{orderInfo.pay_time}}</view>
  31. </view>
  32. </view>
  33. <block v-if="isGoodsReturn==false">
  34. <view class='nav'>
  35. <view class='navCon acea-row row-between-wrapper'>
  36. <view>待付款</view>
  37. <view :class="(orderInfo.status == 0 || orderInfo.status == 9) ? 'on':''" v-if="orderInfo.order_type == 0">待发货</view>
  38. <view :class="(orderInfo.status == 0 || orderInfo.status == 9) ? 'on':''" v-if="orderInfo.order_type == 1">待核销</view>
  39. <view :class="orderInfo.status == 1 ? 'on':''" v-if="orderInfo.order_type == 0">待收货</view>
  40. <view :class="orderInfo.status == 2 ? 'on':''">待评价</view>
  41. <view :class="orderInfo.status == 3 ? 'on':''">已完成</view>
  42. </view>
  43. <view class='progress acea-row row-between-wrapper'>
  44. <view class='iconfont icon-yuandianxiao font-color'></view>
  45. <view class='line bg-color'></view>
  46. <view class='iconfont' :class='((orderInfo.status == 0 || orderInfo.status == 9) ? "icon-webicon318":"icon-yuandianxiao") + " " + (orderInfo.status >= 0 ? "font-color":"")'></view>
  47. <view class='line' :class='orderInfo.status > 0 && orderInfo.status != 9 ? "bg-color":""'></view>
  48. <view class='iconfont' :class='(orderInfo.status == 1 ? "icon-webicon318":"icon-yuandianxiao") + " " +(orderInfo.status >= 1 && orderInfo.status != 9 ? "font-color":"")' v-if="orderInfo.order_type == 0"></view>
  49. <view class='line' :class='orderInfo.status > 1 && orderInfo.status != 9 ? "bg-color":""' v-if="orderInfo.order_type == 0"></view>
  50. <view class='iconfont' :class='(orderInfo.status == 2 && orderInfo.status != 9 ? "icon-webicon318":"icon-yuandianxiao") + " " + (orderInfo.status >= 2 && orderInfo.status != 9 ? "font-color":"")'></view>
  51. <view class='line' :class='orderInfo.status > 2 && orderInfo.status != 9 ? "bg-color":""'></view>
  52. <view class='iconfont' :class='(orderInfo.status == 3 ? "icon-webicon318":"icon-yuandianxiao") + " " + (orderInfo.status >= 3 && orderInfo.status != 9 ? "font-color":"")'></view>
  53. </view>
  54. </view>
  55. <view class='line'>
  56. <image src='/static/images/line.jpg'></image>
  57. </view>
  58. </block>
  59. </view>
  60. <view>
  61. <!-- 配送地址 -->
  62. <view class='address' v-if="orderInfo.order_type == 0">
  63. <view class='name'>{{orderInfo.real_name}}<text class='phone'>{{orderInfo.user_phone}}</text></view>
  64. <view>{{orderInfo.user_address}}</view>
  65. </view>
  66. <!-- 核销订单 -->
  67. <view class="writeOff" v-if="orderInfo.order_type == 1 && isGoodsReturn==false && orderInfo.take && orderInfo.status !=10 && orderInfo.status !=11">
  68. <view class="title">核销信息</view>
  69. <view class="grayBg">
  70. <!-- <view class="written" v-if="orderInfo.status == 2">
  71. <image src="/static/images/written.png"></image>
  72. </view> -->
  73. <view class="pictrue">
  74. <image :src="codeUrl"></image>
  75. </view>
  76. </view>
  77. <view class="gear">
  78. <image src="/static/images/writeOff.jpg"></image>
  79. </view>
  80. <view class="num">{{orderInfo.verify_code}}</view>
  81. <view class="rules">
  82. <view class="item">
  83. <view class="rulesTitle acea-row row-middle">
  84. <text class="iconfont icon-shijian"></text>核销时间
  85. </view>
  86. <view v-if="orderInfo.take" class="info">
  87. <text v-if="orderInfo.take.mer_take_day !== undefind && orderInfo.take.mer_take_day.length == 7">每日:</text>
  88. <block v-else>
  89. <text v-for="item in orderInfo.take.mer_take_day">{{'周'+ toChinese(item)}},</text>
  90. </block>
  91. <text class="time">{{orderInfo.take.mer_take_time[0]}}-{{orderInfo.take.mer_take_time[1]}}</text>
  92. </view>
  93. </view>
  94. <view class="item">
  95. <view class="rulesTitle acea-row row-middle">
  96. <text class="iconfont icon-shuoming1"></text>使用说明
  97. </view>
  98. <view class="info">可将二维码出示给店员扫描或提供数字核销码</view>
  99. </view>
  100. </view>
  101. </view>
  102. <!-- 地图 -->
  103. <view class="map acea-row row-between-wrapper" v-if="orderInfo.order_type == 1">
  104. <view>自提地址信息</view>
  105. <view class="place cart-color acea-row row-center-wrapper" @tap="showMaoLocation">
  106. <text class="iconfont icon-weizhi"></text>查看位置
  107. </view>
  108. </view>
  109. <view class='address' v-if="orderInfo.order_type == 1" style="margin-top: 0;">
  110. <view class='name'>
  111. {{orderInfo.take.mer_take_name}}
  112. <text class='phone' @click="makePhone">{{orderInfo.take.mer_take_phone}}</text>
  113. <text class="iconfont icon-tonghua font-color" @click="makePhone"></text>
  114. </view>
  115. <view>{{orderInfo.take.mer_take_address}}</view>
  116. </view>
  117. <view class="merchant" v-if="orderInfo.merchant" @click="goStore(orderInfo.mer_id)">
  118. {{orderInfo.merchant.mer_name}}
  119. <text class="iconfont icon-xiangyou"></text>
  120. </view>
  121. <block v-if="cartInfo.length>0">
  122. <orderGoods :orderData='orderInfo' :evaluate='orderInfo.status' :activityType='orderInfo.activity_type' :orderId="order_id" :cartInfo="cartInfo" :jump="true"></orderGoods>
  123. </block>
  124. <div class="goodCall" @click="goGoodCall">
  125. <span class="iconfont icon-kefu"></span><span style="font-size: 28rpx;">联系客服</span>
  126. </div>
  127. <!-- 送货 -->
  128. <view class="wrapper" v-if="orderInfo.delivery_type == 2">
  129. <view class='item acea-row row-between'>
  130. <view>配送方式:</view>
  131. <view class='conter'>送货</view>
  132. </view>
  133. <view class='item acea-row row-between'>
  134. <view>配送员:</view>
  135. <view class='conter'>{{orderInfo.delivery_name}}</view>
  136. </view>
  137. <view class='item acea-row row-between'>
  138. <view>联系电话:</view>
  139. <view class='conter'>{{orderInfo.delivery_id}}</view>
  140. </view>
  141. </view>
  142. <view class='wrapper'>
  143. <view class='item acea-row row-between'>
  144. <view>订单编号:</view>
  145. <view class='conter acea-row row-middle row-right'>{{orderInfo.order_sn}}
  146. <!-- #ifndef H5 -->
  147. <text class='copy' @tap='copy'>复制</text>
  148. <!-- #endif -->
  149. <!-- #ifdef H5 -->
  150. <text class='copy copy-data' :data-clipboard-text="orderInfo.order_sn">复制</text>
  151. <!-- #endif -->
  152. </view>
  153. </view>
  154. <view class='item acea-row row-between'>
  155. <view>下单时间:</view>
  156. <view class='conter'>{{orderInfo.create_time}}</view>
  157. </view>
  158. <view class='item acea-row row-between'>
  159. <view>支付状态:</view>
  160. <view class='conter'>已支付</view>
  161. </view>
  162. <view class='item acea-row row-between' v-if="orderInfo.pay_time">
  163. <view>支付时间:</view>
  164. <view class='conter'>{{orderInfo.pay_time}}</view>
  165. </view>
  166. <view class='item acea-row row-between'>
  167. <view>商品总额:</view>
  168. <view class='conter'>¥{{orderInfo.total_price}}</view>
  169. </view>
  170. <view class='item acea-row row-between'>
  171. <view>支付方式:</view>
  172. <view class='conter' v-if="orderInfo.pay_type==0">余额支付</view>
  173. <view class='conter' v-if="orderInfo.pay_type==4 || orderInfo.pay_type==5">支付宝支付</view>
  174. <view class='conter' v-if="orderInfo.pay_type==1 || orderInfo.pay_type==2 || orderInfo.pay_type==3">微信支付</view>
  175. </view>
  176. <view class='item acea-row row-between' v-if="orderInfo.mark">
  177. <view>买家留言:</view>
  178. <view class='conter'>{{orderInfo.mark}}</view>
  179. </view>
  180. </view>
  181. </view>
  182. <view class='wrapper'>
  183. <view class='item acea-row row-between' v-if="orderInfo.pay_postage > 0 && orderInfo.order_type != 1">
  184. <view>运费:</view>
  185. <view class='conter'>+¥{{orderInfo.pay_postage}}</view>
  186. </view>
  187. <view class='item acea-row row-between' v-if='orderInfo.coupon_id'>
  188. <view>优惠券抵扣:</view>
  189. <view class='conter'>-¥{{orderInfo.coupon_price}}</view>
  190. </view>
  191. <view class='item acea-row row-between' v-if="orderInfo.activity_type == 2">
  192. <view>实付款:</view>
  193. <view class='conter'>¥{{orderInfo.presell_price}}</view>
  194. </view>
  195. <view class='item acea-row row-between' v-else>
  196. <view>实付款:</view>
  197. <view class='conter'>¥{{orderInfo.pay_price}}</view>
  198. </view>
  199. </view>
  200. <view style='height:120rpx;'></view>
  201. <view class='footer acea-row row-right row-middle' v-if="isGoodsReturn==false">
  202. <view v-if="orderInfo.activity_type == 2 && (orderInfo.status == 10 || orderInfo.status == 11)" class=" acea-row row-right row-middle">
  203. <!-- <view v-if="orderInfo.presellOrder.activeStatus == 2" class="bnt cancel" @click.stop="cancelOrder">取消订单</view> -->
  204. <view v-if="orderInfo.presellOrder.activeStatus == 0" class='bnt bg-color btn_auto'>{{ orderInfo.presellOrder.final_start_time | filterDay }} 付尾款</view>
  205. <view v-if="orderInfo.presellOrder.activeStatus == 1" class='bnt bg-color' @tap='pay_open'>立即付款</view>
  206. <view v-if="orderInfo.presellOrder.activeStatus == 2" class='bnt cancel' @click="cancelOrder">取消订单</view>
  207. </view>
  208. <block v-if="orderInfo.status == 0">
  209. <view class="bnt cancel" @click="allRefund" v-if="refundNum.length != cartInfo.length">批量退款</view>
  210. </block>
  211. <block v-if="orderInfo.status == 9">
  212. <view class="bnt cancel" @click="getCombinationRemove">取消拼团</view>
  213. </block>
  214. <view class='bnt bg-color' v-if="orderInfo.activity_type==4 && orderInfo.status==9" @tap='goJoinPink'>查看拼团</view>
  215. <block v-if="orderInfo.status == 1">
  216. <view class="bnt cancel" @click="allRefund" v-if="refundNum.length != cartInfo.length">批量退款</view>
  217. <navigator v-if="orderInfo.delivery_type == 1" class='bnt cancel' hover-class='none' :url="'/pages/users/goods_logistics/index?orderId='+ orderInfo.order_id">查看物流</navigator>
  218. <view class='bnt bg-color' @tap='confirmOrder'>确认收货</view>
  219. </block>
  220. <block v-if="orderInfo.status == 2">
  221. <view class="bnt cancel" @click="allRefund" v-if="refundNum.length != cartInfo.length">批量退款</view>
  222. <navigator v-if="orderInfo.delivery_type == 1" class='bnt cancel' hover-class='none' :url="'/pages/users/goods_logistics/index?orderId='+ orderInfo.order_id">查看物流</navigator>
  223. <view class='bnt bg-color' @click="goOrderConfirm" v-if="orderInfo.activity_type!=2 && orderInfo.activity_type!=3">再次购买</view>
  224. </block>
  225. <block v-if="orderInfo.status == 3">
  226. <view class='bnt cancel' @click="delOrder">删除订单</view>
  227. <view class="bnt cancel" @click="allRefund" v-if="refundNum.length != cartInfo.length">批量退款</view>
  228. <view class='bnt bg-color' @click="goOrderConfirm" v-if="orderInfo.activity_type!=2 && orderInfo.activity_type!=3">再次购买</view>
  229. </block>
  230. </view>
  231. </view>
  232. <!-- #ifdef MP -->
  233. <authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse"></authorize>
  234. <!-- #endif -->
  235. <payment :payMode='payMode' :pay_close="pay_close" @onChangeFun='onChangeFun' :order_id="pay_order_id" :totalPrice='totalPrice' :order_type='1'></payment>
  236. </view>
  237. </template>
  238. <style scoped lang="scss">
  239. .merchant {
  240. width: 100%;
  241. height: 86rpx;
  242. padding: 0 30rpx;
  243. margin-top: 15rpx;
  244. border-bottom: 2rpx solid #f0f0f0;
  245. font-size: 30rpx;
  246. color: #282828;
  247. line-height: 86rpx;
  248. box-sizing: border-box;
  249. background-color: #fff;
  250. .iconfont {
  251. margin-top: 6rpx;
  252. font-size: 22rpx;
  253. }
  254. }
  255. .goodCall {
  256. text-align: center;
  257. width: 100%;
  258. height: 86rpx;
  259. padding: 0 30rpx;
  260. border-bottom: 1rpx solid #eee;
  261. font-size: 30rpx;
  262. line-height: 86rpx;
  263. background: #fff;
  264. color: #282828;
  265. .icon-kefu {
  266. font-size: 28rpx;
  267. margin-right: 15rpx;
  268. }
  269. /* #ifdef MP */
  270. button {
  271. display: flex;
  272. align-items: center;
  273. justify-content: center;
  274. height: 86rpx;
  275. font-size: 30rpx;
  276. color: #e93323;
  277. }
  278. /* #endif */
  279. }
  280. .order-details .header {
  281. padding: 0 30rpx;
  282. height: 150rpx;
  283. &.presell_header{
  284. background-image: url('data:image/jpg;base64,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');
  285. background-repeat: no-repeat;
  286. background-size: cover;
  287. padding: 35rpx 50rpx;
  288. .data{
  289. margin: 8rpx 0 0 13rpx;
  290. .state{
  291. font-weight: normal;
  292. font-size: 24rpx;
  293. }
  294. }
  295. }
  296. }
  297. .order-details .header.on {
  298. background-color: #666 !important;
  299. }
  300. .order-details .header .pictrue {
  301. width: 110rpx;
  302. height: 110rpx;
  303. }
  304. .order-details .header .pictrue image {
  305. width: 100%;
  306. height: 100%;
  307. }
  308. .order-details .header .data {
  309. color: rgba(255, 255, 255, 0.8);
  310. font-size: 24rpx;
  311. margin-left: 27rpx;
  312. }
  313. .order-details .header .data.on {
  314. margin-left: 0;
  315. }
  316. .order-details .header .data .state {
  317. font-size: 30rpx;
  318. font-weight: bold;
  319. color: #fff;
  320. margin-bottom: 7rpx;
  321. }
  322. .presell_header .presell_payment{
  323. color: #fff;
  324. font-size: 30rpx;
  325. font-weight: bold;
  326. .iconfont{
  327. font-weight: normal;
  328. margin-right: 8rpx;
  329. }
  330. }
  331. .order-details .header .data .time {
  332. margin-left: 20rpx;
  333. }
  334. .order-details .nav {
  335. background-color: #fff;
  336. font-size: 26rpx;
  337. color: #282828;
  338. padding: 25rpx 0;
  339. }
  340. .order-details .nav .navCon {
  341. padding: 0 40rpx;
  342. }
  343. .order-details .nav .on {
  344. color: #e93323;
  345. }
  346. .order-details .nav .progress {
  347. padding: 0 65rpx;
  348. margin-top: 10rpx;
  349. }
  350. .order-details .nav .progress .line {
  351. width: 100rpx;
  352. height: 2rpx;
  353. background-color: #939390;
  354. }
  355. .order-details .nav .progress .iconfont {
  356. font-size: 25rpx;
  357. color: #939390;
  358. margin-top: -2rpx;
  359. }
  360. .order-details .address {
  361. font-size: 26rpx;
  362. color: #868686;
  363. background-color: #fff;
  364. margin-top: 13rpx;
  365. padding: 35rpx 30rpx;
  366. }
  367. .order-details .address .name {
  368. font-size: 30rpx;
  369. color: #282828;
  370. margin-bottom: 15rpx;
  371. }
  372. .order-details .address .name .phone {
  373. margin-left: 40rpx;
  374. }
  375. .order-details .line {
  376. width: 100%;
  377. height: 3rpx;
  378. }
  379. .order-details .line image {
  380. width: 100%;
  381. height: 100%;
  382. display: block;
  383. }
  384. .order-details .wrapper {
  385. background-color: #fff;
  386. margin-top: 12rpx;
  387. padding: 30rpx;
  388. }
  389. .order-details .wrapper .item {
  390. font-size: 28rpx;
  391. color: #282828;
  392. }
  393. .order-details .wrapper .item~.item {
  394. margin-top: 20rpx;
  395. }
  396. .order-details .wrapper .item .conter {
  397. color: #868686;
  398. width: 460rpx;
  399. text-align: right;
  400. }
  401. .order-details .wrapper .item .conter .copy {
  402. font-size: 20rpx;
  403. color: #333;
  404. border-radius: 17rpx;
  405. border: 1rpx solid #666;
  406. padding: 3rpx 15rpx;
  407. margin-left: 24rpx;
  408. }
  409. .order-details .wrapper .actualPay {
  410. border-top: 1rpx solid #eee;
  411. margin-top: 30rpx;
  412. padding-top: 30rpx;
  413. }
  414. .order-details .wrapper .actualPay .money {
  415. font-weight: bold;
  416. font-size: 30rpx;
  417. }
  418. .order-details .footer {
  419. width: 100%;
  420. height: 100rpx;
  421. position: fixed;
  422. bottom: 0;
  423. left: 0;
  424. background-color: #fff;
  425. padding: 0 30rpx;
  426. box-sizing: border-box;
  427. }
  428. .order-details .footer .bnt {
  429. width: 176rpx;
  430. height: 60rpx;
  431. text-align: center;
  432. line-height: 60rpx;
  433. border-radius: 50rpx;
  434. color: #fff;
  435. font-size: 27rpx;
  436. margin-left: 20rpx;
  437. &.btn_auto{
  438. width: auto;
  439. padding: 0 40rpx;
  440. }
  441. }
  442. .order-details .footer .bnt.cancel {
  443. color: #aaa;
  444. border: 1rpx solid #ddd;
  445. }
  446. .order-details .footer .bnt~.bnt {
  447. margin-left: 18rpx;
  448. }
  449. .order-details .writeOff {
  450. background-color: #fff;
  451. margin-top: 13rpx;
  452. padding-bottom: 30rpx;
  453. }
  454. .order-details .writeOff .title {
  455. font-size: 30rpx;
  456. color: #282828;
  457. height: 87rpx;
  458. border-bottom: 1px solid #f0f0f0;
  459. padding: 0 30rpx;
  460. line-height: 87rpx;
  461. }
  462. .order-details .writeOff .grayBg {
  463. background-color: #f2f5f7;
  464. width: 590rpx;
  465. height: 384rpx;
  466. border-radius: 20rpx 20rpx 0 0;
  467. margin: 50rpx auto 0 auto;
  468. padding-top: 55rpx;
  469. }
  470. .order-details .writeOff .grayBg .pictrue {
  471. width: 290rpx;
  472. height: 290rpx;
  473. margin: 0 auto;
  474. }
  475. .order-details .writeOff .grayBg .pictrue image {
  476. width: 100%;
  477. height: 100%;
  478. display: block;
  479. }
  480. .order-details .writeOff .gear {
  481. width: 590rpx;
  482. height: 30rpx;
  483. margin: 0 auto;
  484. }
  485. .order-details .writeOff .gear image {
  486. width: 100%;
  487. height: 100%;
  488. display: block;
  489. }
  490. .order-details .writeOff .num {
  491. background-color: #f0c34c;
  492. width: 590rpx;
  493. height: 84rpx;
  494. color: #282828;
  495. font-size: 48rpx;
  496. margin: 0 auto;
  497. border-radius: 0 0 20rpx 20rpx;
  498. text-align: center;
  499. padding-top: 4rpx;
  500. }
  501. .order-details .writeOff .rules {
  502. margin: 46rpx 30rpx 0 30rpx;
  503. border-top: 1px solid #f0f0f0;
  504. padding-top: 10rpx;
  505. }
  506. .order-details .writeOff .rules .item {
  507. margin-top: 20rpx;
  508. }
  509. .order-details .writeOff .rules .item .rulesTitle {
  510. font-size: 28rpx;
  511. color: #282828;
  512. }
  513. .order-details .writeOff .rules .item .rulesTitle .iconfont {
  514. font-size: 30rpx;
  515. color: #333;
  516. margin-right: 8rpx;
  517. margin-top: 5rpx;
  518. }
  519. .order-details .writeOff .rules .item .info {
  520. font-size: 28rpx;
  521. color: #999;
  522. margin-top: 7rpx;
  523. }
  524. .order-details .writeOff .rules .item .info .time {
  525. margin-left: 20rpx;
  526. }
  527. .order-details .map {
  528. height: 86rpx;
  529. font-size: 30rpx;
  530. color: #282828;
  531. line-height: 86rpx;
  532. border-bottom: 1px solid #f0f0f0;
  533. margin-top: 13rpx;
  534. background-color: #fff;
  535. padding: 0 30rpx;
  536. }
  537. .order-details .map .place {
  538. font-size: 26rpx;
  539. width: 176rpx;
  540. height: 50rpx;
  541. border-radius: 25rpx;
  542. line-height: 50rpx;
  543. text-align: center;
  544. }
  545. .order-details .map .place .iconfont {
  546. font-size: 27rpx;
  547. height: 27rpx;
  548. line-height: 27rpx;
  549. margin: 2rpx 3rpx 0 0;
  550. }
  551. .order-details .address .name .iconfont {
  552. font-size: 34rpx;
  553. margin-left: 10rpx;
  554. }
  555. .refund {
  556. padding: 0 30rpx 30rpx;
  557. margin-top: 24rpx;
  558. background-color: #fff;
  559. .title {
  560. display: flex;
  561. align-items: center;
  562. font-size: 30rpx;
  563. color: #333;
  564. height: 86rpx;
  565. border-bottom: 1px solid #f5f5f5;
  566. image {
  567. width: 32rpx;
  568. height: 32rpx;
  569. margin-right: 10rpx;
  570. }
  571. }
  572. .con {
  573. padding-top: 25rpx;
  574. font-size: 28rpx;
  575. color: #868686;
  576. }
  577. }
  578. </style>
  579. <script>
  580. let app = getApp();
  581. import { HTTP_REQUEST_URL } from '@/config/app';
  582. import {
  583. getOrderDetail,
  584. orderAgain,
  585. orderTake,
  586. orderDel,
  587. unOrderCancel,
  588. verifyCode
  589. } from '@/api/order.js';
  590. import {
  591. postCombinationRemove
  592. } from '@/api/activity';
  593. import {
  594. openOrderRefundSubscribe
  595. } from '@/utils/SubscribeMessage.js';
  596. import {
  597. getUserInfo
  598. } from '@/api/user.js';
  599. import payment from '@/components/payment';
  600. import orderGoods from "@/components/orderGoods";
  601. import ClipboardJS from "@/plugin/clipboard/clipboard.js";
  602. import {
  603. toLogin
  604. } from '@/libs/login.js';
  605. import {
  606. mapGetters
  607. } from "vuex";
  608. // #ifdef MP
  609. import authorize from '@/components/Authorize';
  610. // #endif
  611. export default {
  612. components: {
  613. payment,
  614. orderGoods,
  615. // #ifdef MP
  616. authorize
  617. // #endif
  618. },
  619. data() {
  620. return {
  621. order_id: '',
  622. evaluate: 0,
  623. activityType: 0,
  624. cartInfo: [], //购物车产品
  625. orderInfo: {
  626. system_store: {},
  627. _status: {},
  628. take: {}
  629. }, //订单详情
  630. system_store: {},
  631. isGoodsReturn: false, //是否为退款订单
  632. status: {}, //订单底部按钮状态
  633. isClose: false,
  634. payMode: [{
  635. name: "微信支付",
  636. icon: "icon-weixinzhifu",
  637. value: 'wechat',
  638. title: '微信快捷支付',
  639. payStatus: 1
  640. },
  641. {
  642. name: "支付宝支付",
  643. icon: "icon-zhifubao",
  644. value: 'alipay',
  645. title: '支付宝支付',
  646. payStatus: app.globalData.alipay_open
  647. },
  648. {
  649. name: "余额支付",
  650. icon: "icon-yuezhifu",
  651. value: 'balance',
  652. title: '可用余额:',
  653. number: 0,
  654. payStatus: app.globalData.yue_pay_status
  655. }
  656. ],
  657. pay_close: false,
  658. pay_order_id: '',
  659. totalPrice: '0',
  660. isAuto: false, //没有授权的不会自动授权
  661. isShowAuth: false, //是否隐藏授权
  662. refundNum: [], //退款个数临时数据
  663. imgUrl:HTTP_REQUEST_URL,
  664. codeUrl:'',
  665. isTimePay: false,
  666. hide_mer_status: app.globalData.hide_mer_status
  667. };
  668. },
  669. computed:{
  670. ...mapGetters(['isLogin', 'uid']),
  671. },
  672. filters:{
  673. filterDay(val){
  674. if(val){
  675. var reg =/(\d{4})\-(\d{2})\-(\d{2})/;
  676. var date = val.replace(reg,"$2月$3日");
  677. return date
  678. }
  679. }
  680. },
  681. onLoad: function(options) {
  682. if (options.order_id) {
  683. this.$set(this, 'order_id', options.order_id);
  684. }
  685. },
  686. onShow() {
  687. if (this.isLogin) {
  688. this.getOrderInfo();
  689. this.getUserInfo();
  690. this.isPayBalance();
  691. } else {
  692. // #ifdef H5 || APP-PLUS
  693. toLogin();
  694. // #endif
  695. // #ifdef MP
  696. this.isAuto = true;
  697. this.$set(this, 'isShowAuth', true);
  698. // #endif
  699. }
  700. },
  701. onHide: function() {
  702. this.isClose = true;
  703. },
  704. onReady: function() {
  705. // #ifdef H5
  706. this.$nextTick(function() {
  707. const clipboard = new ClipboardJS(".copy-data");
  708. clipboard.on("success", () => {
  709. this.$util.Tips({
  710. title: '复制成功'
  711. });
  712. });
  713. });
  714. // #endif
  715. uni.$on('update',(data)=>{
  716. this.hide_mer_status = data.hide_mer_status
  717. })
  718. },
  719. mounted: function() {
  720. const app = getApp();
  721. this.$nextTick(() => {
  722. this.hide_mer_status = app.globalData.hide_mer_status
  723. });
  724. },
  725. methods: {
  726. // 判断是否到支付尾款时间
  727. isPayBalance(){
  728. let that = this;
  729. if(that.orderInfo.status === 10){
  730. if(new Date() < new Date(that.orderInfo.presellOrder.final_start_time)){
  731. that.isTimePay = false; //未开始
  732. }else if((new Date() >= new Date(that.orderInfo.presellOrder.final_start_time)) && (new Date() <= new Date(that.orderInfo.presellOrder.final_start_time)) ){
  733. that.isTimePay = true; //立即支付
  734. }
  735. }
  736. },
  737. // 数字转汉字
  738. toChinese(num){
  739. let changeNum = ['零', '一', '二', '三', '四', '五', '六', '日', '八', '九'];
  740. let unit = ["", "十", "百", "千", "万"];
  741. num = parseInt(num);
  742. let getWan = (temp) => {
  743.   let strArr = temp.toString().split("").reverse();
  744.   let newNum = "";
  745.   for (var i = 0; i < strArr.length; i++) {
  746.   newNum = (i == 0 && strArr[i] == 0 ? "" : (i > 0 && strArr[i] == 0 && strArr[i - 1] == 0 ? "" : changeNum[strArr[i]] + (strArr[i] == 0 ? unit[0] : unit[i]))) + newNum;
  747.   }
  748.   return newNum;
  749. }
  750. let overWan = Math.floor(num / 10000);
  751. let noWan = num % 10000;
  752. if (noWan.toString().length < 4) {      noWan = "0" + noWan;    }
  753. return overWan ? getWan(overWan) + "万" + getWan(noWan) : getWan(num);
  754. },
  755. // 返回店铺首页
  756. goStore(mer_id){
  757. if(this.hide_mer_status != 1){
  758. uni.navigateTo({
  759. url: '/pages/store/home/index?id=' + mer_id
  760. })
  761. }
  762. },
  763. // 批量退款
  764. allRefund() {
  765. // #ifdef MP
  766. openOrderRefundSubscribe().then(() => {
  767. uni.hideLoading();
  768. if (this.orderInfo.status == 0) {
  769. uni.navigateTo({
  770. url: '/pages/users/refund/index?order_id=' + this.order_id + '&refund_type=1&type=2'
  771. })
  772. } else {
  773. uni.navigateTo({
  774. url: '/pages/users/refund/select?order_id=' + this.order_id + '&type=2'
  775. })
  776. }
  777. }).catch(() => {
  778. uni.hideLoading();
  779. })
  780. // #endif
  781. // #ifdef H5
  782. if (this.orderInfo.status == 0) {
  783. uni.navigateTo({
  784. url: '/pages/users/refund/index?order_id=' + this.order_id + '&refund_type=1&type=2'
  785. })
  786. } else {
  787. uni.navigateTo({
  788. url: '/pages/users/refund/select?order_id=' + this.order_id + '&type=2'
  789. })
  790. }
  791. // #endif
  792. },
  793. //拼团取消
  794. getCombinationRemove: function() {
  795. var that = this;
  796. postCombinationRemove({
  797. group_buying_id: that.orderInfo.orderProduct[0].activity_id
  798. })
  799. .then(res => {
  800. that.$util.Tips({
  801. title: res.message
  802. }, {
  803. tab: 3
  804. });
  805. })
  806. .catch(res => {
  807. that.$util.Tips({
  808. title: res.message
  809. });
  810. });
  811. },
  812. // 联系客服
  813. goGoodCall() {
  814. let self = this
  815. uni.navigateTo({
  816. url: `/pages/chat/customer_list/chat?mer_id=${self.orderInfo.mer_id}&uid=${this.uid}&order_id=${this.order_id}`
  817. })
  818. },
  819. openSubcribe: function(e) {
  820. let page = e;
  821. uni.showLoading({
  822. title: '正在加载',
  823. })
  824. openOrderRefundSubscribe().then(res => {
  825. uni.hideLoading();
  826. uni.navigateTo({
  827. url: page,
  828. });
  829. }).catch(() => {
  830. uni.hideLoading();
  831. });
  832. },
  833. /**
  834. * 事件回调
  835. *
  836. */
  837. onChangeFun: function(e) {
  838. let opt = e;
  839. let action = opt.action || null;
  840. let value = opt.value != undefined ? opt.value : null;
  841. (action && this[action]) && this[action](value);
  842. },
  843. /**
  844. * 拨打电话
  845. */
  846. makePhone: function() {
  847. uni.makePhoneCall({
  848. phoneNumber: this.orderInfo.take.mer_take_phone
  849. })
  850. },
  851. /**
  852. * 打开地图
  853. *
  854. */
  855. showMaoLocation: function() {
  856. if (!this.orderInfo.take.mer_take_location[0] || !this.orderInfo.take.mer_take_location[1]) return this.$util.Tips({
  857. title: '缺少经纬度信息无法查看地图!'
  858. });
  859. uni.openLocation({
  860. latitude: parseFloat(this.orderInfo.take.mer_take_location[0]),
  861. longitude: parseFloat(this.orderInfo.take.mer_take_location[1]),
  862. scale: 8,
  863. // name: this.system_store.name,
  864. // address: this.system_store.address + this.system_store.detailed_address,
  865. success: function() {
  866. },
  867. });
  868. },
  869. /**
  870. * 关闭支付组件
  871. *
  872. */
  873. payClose: function() {
  874. this.pay_close = false;
  875. },
  876. /**
  877. * 打开支付组件
  878. *
  879. */
  880. pay_open: function() {
  881. this.pay_close = true;
  882. this.pay_order_id = this.orderInfo.order_id.toString();
  883. this.totalPrice = this.orderInfo.pay_price;
  884. },
  885. /**
  886. * 支付成功回调
  887. *
  888. */
  889. pay_complete: function() {
  890. this.pay_close = false;
  891. this.pay_order_id = '';
  892. this.getOrderInfo();
  893. },
  894. /**
  895. * 支付失败回调
  896. *
  897. */
  898. pay_fail: function() {
  899. this.pay_close = false;
  900. this.pay_order_id = '';
  901. },
  902. /**
  903. * 登录授权回调
  904. *
  905. */
  906. onLoadFun: function() {
  907. this.isShowAuth = false;
  908. this.getOrderInfo();
  909. this.getUserInfo();
  910. },
  911. /**
  912. * 获取用户信息
  913. *
  914. */
  915. getUserInfo: function() {
  916. let that = this;
  917. getUserInfo().then(res => {
  918. that.payMode[2].number = res.data.now_money;
  919. })
  920. },
  921. getOrderCode(){
  922. verifyCode(this.order_id).then(res=>{
  923. this.codeUrl = res.data.qrcode
  924. })
  925. },
  926. /**
  927. * 获取订单详细信息
  928. *
  929. */
  930. getOrderInfo: function() {
  931. let that = this;
  932. uni.showLoading({
  933. title: "正在加载中"
  934. });
  935. getOrderDetail(this.order_id).then(res => {
  936. // let _type = res.data._status._type;
  937. uni.hideLoading();
  938. that.$set(that, 'orderInfo', res.data);
  939. that.orderInfo.take = res.data.take ? res.data.take: {}
  940. that.$set(that, 'cartInfo', res.data.orderProduct);
  941. if (this.orderInfo.status == '-1') {
  942. this.isGoodsReturn = true;
  943. }
  944. res.data.orderProduct.map(el => {
  945. if (el.refund_num == 0) {
  946. this.refundNum.push(el)
  947. }
  948. })
  949. if(res.data.order_type == 1){
  950. // verifyCode
  951. this.getOrderCode()
  952. }
  953. // that.getOrderStatus();
  954. }).catch(err => {
  955. uni.hideLoading();
  956. that.$util.Tips({
  957. title: err
  958. }, '/pages/users/order_list/index');
  959. });
  960. },
  961. /**
  962. *
  963. * 剪切订单号
  964. */
  965. // #ifndef H5
  966. copy: function() {
  967. let that = this;
  968. console.log(that.orderInfo.order_sn)
  969. uni.setClipboardData({
  970. data: that.orderInfo.order_sn,
  971. success: function(res){
  972. }
  973. });
  974. },
  975. // #endif
  976. /**
  977. * 打电话
  978. */
  979. goTel: function() {
  980. uni.makePhoneCall({
  981. phoneNumber: this.orderInfo.delivery_id
  982. })
  983. },
  984. /**
  985. * 去拼团详情
  986. *
  987. */
  988. goJoinPink: function() {
  989. uni.navigateTo({
  990. url: '/pages/activity/combination_status/index?id=' + this.orderInfo.orderProduct[0].activity_id,
  991. });
  992. },
  993. /**
  994. * 再此购买
  995. *
  996. */
  997. goOrderConfirm: function() {
  998. let that = this;
  999. let data = []
  1000. this.cartInfo.map((item, index) => {
  1001. let obj = {}
  1002. obj.product_id = item.product_id
  1003. obj.product_attr_unique = item.product_sku
  1004. obj.cart_num = item.product_num
  1005. data.push(obj)
  1006. })
  1007. orderAgain({
  1008. data: data
  1009. }).then(res => {
  1010. let cart_id = res.data.cart_id.join(',')
  1011. console.log(cart_id)
  1012. return uni.navigateTo({
  1013. url: '/pages/users/order_confirm/index?cartId=' + cart_id
  1014. });
  1015. });
  1016. },
  1017. confirmOrder: function() {
  1018. let that = this;
  1019. uni.showModal({
  1020. title: '确认收货',
  1021. content: '为保障权益,请收到货确认无误后,再确认收货',
  1022. success: function(res) {
  1023. if (res.confirm) {
  1024. orderTake(that.order_id).then(res => {
  1025. return that.$util.Tips({
  1026. title: '操作成功',
  1027. icon: 'success'
  1028. }, function() {
  1029. that.getOrderInfo();
  1030. });
  1031. }).catch(err => {
  1032. return that.$util.Tips({
  1033. title: err
  1034. });
  1035. })
  1036. }
  1037. }
  1038. })
  1039. },
  1040. /**
  1041. *
  1042. * 删除订单
  1043. */
  1044. delOrder: function() {
  1045. let that = this;
  1046. orderDel(this.order_id).then(res => {
  1047. return that.$util.Tips({
  1048. title: '删除成功',
  1049. icon: 'success'
  1050. }, {
  1051. tab: 3,
  1052. url: 1
  1053. });
  1054. }).catch(err => {
  1055. return that.$util.Tips({
  1056. title: err
  1057. });
  1058. });
  1059. },
  1060. cancelOrder() {
  1061. let self = this
  1062. uni.showModal({
  1063. title: '提示',
  1064. content: '确认取消该订单?',
  1065. success: function(res) {
  1066. if (res.confirm) {
  1067. orderDel(self.orderInfo.order_id)
  1068. .then((data) => {
  1069. console.log(data)
  1070. self.$util.Tips({
  1071. title: data.msg
  1072. }, {
  1073. tab: 3
  1074. })
  1075. })
  1076. .catch((err) => {
  1077. return self.$util.Tips({
  1078. title: err
  1079. });
  1080. });
  1081. } else if (res.cancel) {
  1082. console.log('用户点击取消');
  1083. }
  1084. }
  1085. });
  1086. },
  1087. }
  1088. }
  1089. </script>
  1090. <style>
  1091. .qs-btn {
  1092. width: auto;
  1093. height: 60rpx;
  1094. text-align: center;
  1095. line-height: 60rpx;
  1096. border-radius: 50rpx;
  1097. color: #fff;
  1098. font-size: 27rpx;
  1099. padding: 0 3%;
  1100. color: #aaa;
  1101. border: 1px solid #ddd;
  1102. margin-right: 20rpx;
  1103. }
  1104. </style>