index.vue 46 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714
  1. <template>
  2. <view :style="viewColor">
  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. :style="{ 'background-image': `url(${imgUrl}/static/diy/presell_bg${keyColor}.jpg)`}"
  9. :class="'header'+keyColor">
  10. <view class="presell_payment">
  11. <text class="iconfont icon-shijian1"></text>
  12. {{ orderInfo.status == 11 ? '交易已关闭' : '待付尾款' }}
  13. </view>
  14. <view class='data' style="margin-left: 0;">
  15. <view class='state'>
  16. 请在{{orderInfo.orderProduct[0].cart_info.productPresell.final_end_time}}前完成支付,超时订单将自动取消
  17. </view>
  18. </view>
  19. </view>
  20. </view>
  21. <view v-else>
  22. <view class='header acea-row row-middle' :class='isGoodsReturn ? "on":""'>
  23. <view class='pictrue' v-if="isGoodsReturn==false">
  24. <image v-if="orderInfo.status != 9" :src="imgUrl+'/static/order_'+(orderInfo.status+2)+'.gif'">
  25. </image>
  26. <image v-else :src="imgUrl+'/static/order_2.gif'"></image>
  27. </view>
  28. <view class='data' :class='isGoodsReturn ? "on":""'>
  29. <view class='state'>
  30. <block v-if="orderInfo.status == 0 && orderInfo.order_type != 1">待发货</block>
  31. <block v-if="orderInfo.status == 4 && orderInfo.order_type != 1">待付尾款</block>
  32. <block v-if="orderInfo.status == 9">等待其他人参加拼团</block>
  33. <block v-if="orderInfo.status == 0 && orderInfo.order_type == 1">待核销</block>
  34. <block v-if="orderInfo.status == 1">{{orderInfo.is_virtual == 1 ? '服务商品已虚拟发货' : '待收货'}}
  35. </block>
  36. <block v-if="orderInfo.status == 2">待评价</block>
  37. <block v-if="orderInfo.status == 3">已完成</block>
  38. <block v-if="orderInfo.status == -1">已为您退款,感谢您的支持</block>
  39. </view>
  40. <block v-if="orderInfo.status == 4 && orderInfo.order_type != 1">
  41. 请在{{orderInfo.expire_time}}前完成支付</block>
  42. <view v-else>{{orderInfo.pay_time}}</view>
  43. </view>
  44. </view>
  45. <block v-if="isGoodsReturn==false">
  46. <view class='nav'>
  47. <view class='navCon acea-row row-between-wrapper'>
  48. <view>待付款</view>
  49. <view :class="(orderInfo.status == 0 || orderInfo.status == 9) ? 'on':''"
  50. v-if="orderInfo.order_type != 1">待发货</view>
  51. <view :class="(orderInfo.status == 0 || orderInfo.status == 9) ? 'on':''"
  52. v-if="orderInfo.order_type == 1">待核销</view>
  53. <view :class="orderInfo.status == 1 ? 'on':''" v-if="orderInfo.order_type != 1">待收货</view>
  54. <view :class="orderInfo.status == 2 ? 'on':''">待评价</view>
  55. <view :class="orderInfo.status == 3 ? 'on':''">已完成</view>
  56. </view>
  57. <view class='progress acea-row row-between-wrapper'>
  58. <view class='iconfont icon-yuandianxiao t-color'></view>
  59. <view class='line b-color'></view>
  60. <view class='iconfont'
  61. :class='((orderInfo.status == 0 || orderInfo.status == 9) ? "icon-webicon318":"icon-yuandianxiao") + " " + (orderInfo.status >= 0&&orderInfo.status != 4 ? "t-color":"")'>
  62. </view>
  63. <view class='line' :class='orderInfo.status > 0 && orderInfo.status != 9 ? "b-color":""'>
  64. </view>
  65. <view class='iconfont'
  66. :class='(orderInfo.status == 1 ? "icon-webicon318":"icon-yuandianxiao") + " " +(orderInfo.status >= 1 && orderInfo.status != 9&&orderInfo.status != 4 ? "t-color":"")'
  67. v-if="orderInfo.order_type == 0"></view>
  68. <view class='line' :class='orderInfo.status > 1 && orderInfo.status != 9 ? "b-color":""'
  69. v-if="orderInfo.order_type == 0"></view>
  70. <view class='iconfont'
  71. :class='(orderInfo.status == 2 && orderInfo.status != 9 ? "icon-webicon318":"icon-yuandianxiao") + " " + (orderInfo.status >= 2 && orderInfo.status != 9&&orderInfo.status != 4 ? "t-color":"")'>
  72. </view>
  73. <view class='line' :class='orderInfo.status > 2 && orderInfo.status != 9 ? "b-color":""'>
  74. </view>
  75. <view class='iconfont'
  76. :class='(orderInfo.status == 3 ? "icon-webicon318":"icon-yuandianxiao") + " " + (orderInfo.status >= 3 && orderInfo.status != 9&&orderInfo.status != 4 ? "t-color":"")'>
  77. </view>
  78. </view>
  79. </view>
  80. <view class='line'>
  81. <image src='/static/images/line.jpg'></image>
  82. </view>
  83. </block>
  84. </view>
  85. <view>
  86. <!-- 配送地址 -->
  87. <view class='address' v-if="orderInfo.order_type == 0 && orderInfo.is_virtual != 1">
  88. <view class='name'>{{orderInfo.real_name}}
  89. <view class='phone'>{{orderInfo.user_phone}}</view>
  90. </view>
  91. <view>{{orderInfo.user_address}}</view>
  92. </view>
  93. <!-- 地图 -->
  94. <view class="map acea-row row-between-wrapper" v-if="orderInfo.order_type == 1">
  95. <view>自提地址信息</view>
  96. <view class="place t-color acea-row row-center-wrapper" @tap="showMaoLocation">
  97. <text class="iconfont icon-weizhi"></text>查看位置
  98. </view>
  99. </view>
  100. <view class='address' v-if="orderInfo.order_type == 1" style="margin-top: 0;">
  101. <view class='name'>
  102. {{orderInfo.take.mer_take_name}}
  103. <text class='phone' @click="makePhone">{{orderInfo.take.mer_take_phone}}</text>
  104. <text class="iconfont icon-tonghua t-color" @click="makePhone"></text>
  105. </view>
  106. <view class="line2">{{orderInfo.take.mer_take_address}}</view>
  107. </view>
  108. <view v-if="orderInfo.take" class="take-info">
  109. <view class="take-msg">
  110. <view class="left">
  111. <view class="title">
  112. 营业时间
  113. </view>
  114. <view class="text">
  115. <text
  116. v-if="orderInfo.take.mer_take_day && orderInfo.take.mer_take_day.length == 7">周一至周日:</text>
  117. <block v-else>
  118. <text v-for="item in orderInfo.take.mer_take_day">{{'周'+ toChinese(item)}},</text>
  119. </block>
  120. <text class="time"
  121. v-if="orderInfo.take.mer_take_time">{{orderInfo.take.mer_take_time[0]}}-{{orderInfo.take.mer_take_time[1]}}</text>
  122. </view>
  123. </view>
  124. <view class="code" @click="showCode">
  125. <text class="iconfont icon-hexiaoma"></text>
  126. <view class="text">
  127. 自提码
  128. </view>
  129. </view>
  130. </view>
  131. </view>
  132. <view class="merchant" v-if="orderInfo.merchant && orderInfo.order_type != 1"
  133. @click="goStore(orderInfo.mer_id)">
  134. {{orderInfo.merchant.mer_name}}
  135. <text class="iconfont icon-xiangyou"></text>
  136. </view>
  137. <block v-if="cartInfo.length>0">
  138. <orderGoods :orderData='orderInfo' :evaluate='orderInfo.status'
  139. :activityType='orderInfo.activity_type' :orderId="order_id" :cartInfo="cartInfo" :jump="true">
  140. </orderGoods>
  141. <block
  142. v-if="orderInfo.order_type == 1 && orderInfo.takeOrderList && orderInfo.takeOrderList.length > 0"
  143. v-for="(item,index) in orderInfo.takeOrderList" :key="index">
  144. <orderGoods :orderData='item' :evaluate='item.status' :activityType='item.activity_type'
  145. :orderId="item.order_id" :cartInfo="item.orderProduct" :jump="true"></orderGoods>
  146. </block>
  147. </block>
  148. <div v-if="orderInfo.merchant && orderInfo.merchant.services_type == 1" class="goodCall" @click="call">
  149. <text class="iconfont icon-kefu"></text><text style="font-size: 28rpx;">联系客服</text>
  150. </div>
  151. <div v-else class="goodCall" @click="goGoodCall">
  152. <text class="iconfont icon-kefu"></text><text style="font-size: 28rpx;">联系客服</text>
  153. </div>
  154. <!-- 送货 -->
  155. <view class="wrapper" v-if="orderInfo.delivery_type == 2">
  156. <view class='item acea-row row-between'>
  157. <view>配送方式:</view>
  158. <view class='conter'>送货</view>
  159. </view>
  160. <view class='item acea-row row-between'>
  161. <view>配送员:</view>
  162. <view class='conter'>{{orderInfo.delivery_name}}</view>
  163. </view>
  164. <view class='item acea-row row-between'>
  165. <view>联系电话:</view>
  166. <view class='conter'>{{orderInfo.delivery_id}}</view>
  167. </view>
  168. </view>
  169. <!-- 同城配送 -->
  170. <view v-if="orderInfo.delivery_type == 5" class="wrapper">
  171. <view class='item virtual_item'>
  172. <view class="acea-row virtual_row">
  173. <view>
  174. <image src="../../static/images/delivery_man.png"></image>
  175. </view>
  176. <view v-if="orderInfo.delivery_id" class="virtual_delivery">
  177. <view>{{orderInfo.delivery_name}}</view>
  178. <view>{{orderInfo.delivery_id}}</view>
  179. </view>
  180. <view v-else class="virtual_delivery_not">配送员未接单</view>
  181. </view>
  182. <navigator class="virtual_detail" hover-class="none"
  183. :url="'/pages/order_details/delivery?orderId=' + orderInfo.order_id">查看详情</navigator>
  184. </view>
  185. </view>
  186. <view v-if="orderInfo.remark" class="wrapper">
  187. <view class="item acea-row row-between">
  188. <view class="">发货备注:</view>
  189. <view class="conter remark">{{ orderInfo.remark }}</view>
  190. </view>
  191. </view>
  192. <view class='wrapper'>
  193. <view class='item acea-row row-between'>
  194. <view>订单编号:</view>
  195. <view class='conter acea-row row-middle row-right'>{{orderInfo.order_sn}}
  196. <!-- #ifndef H5 -->
  197. <text class='copy' @tap='copy'>复制</text>
  198. <!-- #endif -->
  199. <!-- #ifdef H5 -->
  200. <text class='copy copy-data' :data-clipboard-text="orderInfo.order_sn">复制</text>
  201. <!-- #endif -->
  202. </view>
  203. </view>
  204. <view class='item acea-row row-between'>
  205. <view>下单时间:</view>
  206. <view class='conter'>{{orderInfo.create_time}}</view>
  207. </view>
  208. <view class='item acea-row row-between'>
  209. <view>支付状态:</view>
  210. <view class='conter'>已支付</view>
  211. </view>
  212. <view class='item acea-row row-between' v-if="orderInfo.pay_time">
  213. <view>支付时间:</view>
  214. <view class='conter'>{{orderInfo.pay_time}}</view>
  215. </view>
  216. <view class='item acea-row row-between'>
  217. <view>商品总额:</view>
  218. <view class='conter'>¥{{orderInfo.total_price}}</view>
  219. </view>
  220. <view class='item acea-row row-between'>
  221. <view>支付方式:</view>
  222. <view class='conter' v-if="orderInfo.pay_type==0">余额支付</view>
  223. <view class='conter' v-if="orderInfo.pay_type==4 || orderInfo.pay_type==5">支付宝支付</view>
  224. <view class='conter'
  225. v-if="orderInfo.pay_type==1 || orderInfo.pay_type==2 || orderInfo.pay_type==3">微信支付</view>
  226. </view>
  227. <view class='item acea-row row-between' v-if="orderInfo.mark">
  228. <view>买家留言:</view>
  229. <view class='conter'>{{orderInfo.mark}}</view>
  230. </view>
  231. </view>
  232. </view>
  233. <view v-if="orderInfo.is_virtual == 1 && orderInfo.order_extend.length > 0" class='wrapper'>
  234. <view v-for="(item,index) in orderInfo.order_extend" v-if="item" :key="index"
  235. class='item acea-row row-between'>
  236. <view>{{index}}:</view>
  237. <view v-if="!Array.isArray(item)" class='conter'>{{item}}</view>
  238. <view v-else class='conter virtual_image'>
  239. <image v-for="(pic,i) in item" :key="i" class="picture" :src="pic"
  240. @click="getPhotoClickIdx(item,i)"></image>
  241. </view>
  242. </view>
  243. </view>
  244. <view class='wrapper'>
  245. <view class='item acea-row row-between' v-if="orderInfo.pay_postage > 0 && orderInfo.order_type != 1">
  246. <view>运费:</view>
  247. <view class='conter'>+¥{{orderInfo.pay_postage}}</view>
  248. </view>
  249. <view class='item acea-row row-between' v-if='orderInfo.coupon_price > 0'>
  250. <view>优惠券抵扣:</view>
  251. <view class='conter'>-¥{{orderInfo.coupon_price}}</view>
  252. </view>
  253. <view class='item acea-row row-between' v-if='orderInfo.integral'>
  254. <view>积分抵扣:</view>
  255. <view class='conter'>-¥{{orderInfo.integral_price}}</view>
  256. </view>
  257. <view class='item acea-row row-between' v-if="orderInfo.activity_type == 2">
  258. <view>实付款:</view>
  259. <view class='conter'>¥{{orderInfo.presell_price}}</view>
  260. </view>
  261. <view class='item acea-row row-between' v-else>
  262. <view>实付款:</view>
  263. <view class='conter'>¥{{orderInfo.pay_price}}</view>
  264. </view>
  265. </view>
  266. <view class="percentagePay" v-if="orderInfo.is_percentage==1">
  267. <view class="percentage_title">
  268. 按{{100-orderInfo.start_percentage}}%付款
  269. <view class="percentage_left">
  270. <view class="textBox">
  271. <text class="text1">百分比</text>
  272. <view class="text2">
  273. <text class="pay">付款</text>
  274. </view>
  275. </view>
  276. </view>
  277. </view>
  278. <view class="percentage_content">
  279. <view class="percentage_item">
  280. <view>应付订单金额</view>
  281. <!-- <text>¥{{orderInfo.status==0?orderInfo.pay_price:orderInfo.total_price*(100-orderInfo.start_percentage-orderInfo.discounts_percentage)/100+orderInfo.pay_postage*1}}</text> -->
  282. <text>¥{{orderInfo.total_price*(100-orderInfo.start_percentage)/100+orderInfo.pay_postage*1}}</text>
  283. <!-- <text>{{orderInfo.total_price}}</text>
  284. <text>{{(100-orderInfo.start_percentage-orderInfo.discounts_percentage)/100}}</text>
  285. <text>{{orderInfo.pay_postage*1}}</text>
  286. <text>{{orderInfo.pay_price}}</text> -->
  287. </view>
  288. <view class="percentage_item">
  289. <view>优惠券抵扣</view>
  290. <text>¥ {{orderInfo.coupon_price}}</text>
  291. </view>
  292. <view class="percentage_item">
  293. <view>积分抵扣</view>
  294. <text>¥ {{orderInfo.integral_price}}</text>
  295. </view>
  296. <view class="percentage_item">
  297. <view>已优惠百分比</view>
  298. <text>{{orderInfo.discounts_percentage}}%</text>
  299. </view>
  300. <view class="percentage_item">
  301. <view>实际付款</view>
  302. <!-- <text>¥ {{orderInfo.status==0?orderInfo.total_price*(100-orderInfo.start_percentage-orderInfo.discounts_percentage)/100:orderInfo.pay_price}}</text> -->
  303. <text>¥{{(orderInfo.total_price*1)*(100-orderInfo.start_percentage-orderInfo.discounts_percentage)/100+orderInfo.pay_postage*1-orderInfo.integral_price-orderInfo.coupon_price}}</text>
  304. </view>
  305. </view>
  306. <view class="percentage_title" style="margin-top: 40rpx;">
  307. <text>{{orderInfo.status==0?'已支付尾款':'剩余应支付尾款'}}</text>{{orderInfo.start_percentage}}%
  308. <view class="percentage_left">
  309. <view class="textBox">
  310. <text class="text1">百分比</text>
  311. <view class="text2">
  312. <text class="pay">付款</text>
  313. </view>
  314. </view>
  315. </view>
  316. </view>
  317. <view class="percentage_content">
  318. <view class="percentage_item">
  319. <view>分销已抵扣</view>
  320. <text>{{orderInfo.start_percentage - orderInfo.residue_percentage }}%</text>
  321. </view>
  322. <view class="percentage_item"
  323. v-if="orderInfo.start_percentage - orderInfo.residue_percentage-orderInfo.start_percentage>0">
  324. <view>溢出比例</view>
  325. <text>{{orderInfo.start_percentage - orderInfo.residue_percentage-orderInfo.start_percentage }}%</text>
  326. </view>
  327. <view class="percentage_item">
  328. <view>应支付尾款</view>
  329. <text>{{orderInfo.start_percentage}}%</text>
  330. </view>
  331. <view class="percentage_item">
  332. <view>实际应付款</view>
  333. <text
  334. v-if="orderInfo.status==4">¥{{((orderInfo.total_price*1+orderInfo.pay_postage*1) * orderInfo.residue_percentage) / 100>0?((orderInfo.total_price * orderInfo.residue_percentage) / 100).toFixed(2):0}}</text>
  335. <!-- <text v-if="orderInfo.status==4">¥ {{((orderInfo.total_price*1+orderInfo.pay_postage*1) * orderInfo.residue_percentage) / 100>0?((orderInfo.pay_price*100/(100-orderInfo.start_percentage-orderInfo.discounts_percentage) * orderInfo.residue_percentage) / 100).toFixed(2):0}}</text> -->
  336. <text
  337. v-else>¥{{((orderInfo.total_price * orderInfo.residue_percentage) / 100).toFixed(2)}}</text>
  338. </view>
  339. </view>
  340. </view>
  341. <view class="content-clip"></view>
  342. <view class='footer acea-row row-right row-middle' v-if="isGoodsReturn==false">
  343. <!-- <view class='bnt cancel' @click="cancelSales">取消售后</view> -->
  344. <view v-if="!orderInfo.receipt && !isGoodsReturn&&orderInfo.status != 4&&orderInfo.status != 5"
  345. class='bnt cancel' @click="applyInvoice">申请开票</view>
  346. <view v-if="orderInfo.status == 4||orderInfo.status == 5" class='bnt b-color' @tap='pay_open1'>惠拓购付款
  347. </view>
  348. <view v-if="orderInfo.activity_type == 2 && (orderInfo.status == 10 || orderInfo.status == 11)"
  349. class=" acea-row row-right row-middle">
  350. <view v-if="orderInfo.presellOrder.activeStatus == 0" class='bnt b-color btn_auto'>
  351. {{ orderInfo.presellOrder.final_start_time | filterDay }} 付尾款
  352. </view>
  353. <view v-if="orderInfo.presellOrder.activeStatus == 1" class='bnt b-color' @tap='pay_open'>立即付款
  354. </view>
  355. <view v-if="orderInfo.presellOrder.activeStatus == 2" class='bnt cancel' @click="cancelOrder">取消订单
  356. </view>
  357. </view>
  358. <block v-if="orderInfo.status == 0">
  359. <view class="bnt cancel" @click="allRefund"
  360. v-if="refundNum.length != cartInfo.length && orderInfo.refund_status">批量退款</view>
  361. </block>
  362. <block v-if="orderInfo.status == 9">
  363. <view class="bnt cancel" @click="getCombinationRemove">取消拼团</view>
  364. </block>
  365. <view class='bnt b-color' v-if="orderInfo.activity_type==4 && orderInfo.status==9" @tap='goJoinPink'>
  366. 查看拼团</view>
  367. <block v-if="orderInfo.status == 1">
  368. <view class="bnt cancel" @click="allRefund"
  369. v-if="refundNum.length != cartInfo.length && orderInfo.refund_status">批量退款</view>
  370. <navigator v-if="orderInfo.delivery_type == 1 || orderInfo.delivery_type == 4" class='bnt cancel'
  371. hover-class='none' :url="'/pages/users/goods_logistics/index?orderId='+ orderInfo.order_id">查看物流
  372. </navigator>
  373. <view class='bnt b-color' @tap='confirmOrder'>确认收货</view>
  374. </block>
  375. <block v-if="orderInfo.status == 2">
  376. <view class="bnt cancel" @click="allRefund"
  377. v-if="refundNum.length != cartInfo.length && orderInfo.refund_status">批量退款</view>
  378. <navigator v-if="orderInfo.delivery_type == 1 || orderInfo.delivery_type == 4" class='bnt cancel'
  379. hover-class='none' :url="'/pages/users/goods_logistics/index?orderId='+ orderInfo.order_id">查看物流
  380. </navigator>
  381. <view class='bnt b-color' @click="goOrderConfirm"
  382. v-if="orderInfo.activity_type!=1 && orderInfo.activity_type!=2 && orderInfo.activity_type!=3 &&orderInfo.activity_type!=4 && orderInfo.activity_type!=10">
  383. 再次购买</view>
  384. </block>
  385. <block v-if="orderInfo.status == 3">
  386. <view class='bnt cancel' @click="delOrder">删除订单</view>
  387. <view class="bnt cancel" @click="allRefund"
  388. v-if="refundNum.length != cartInfo.length && orderInfo.refund_status">批量退款</view>
  389. <view class='bnt b-color' @click="goOrderConfirm"
  390. v-if="orderInfo.activity_type!=1 && orderInfo.activity_type!=2 && orderInfo.activity_type!=3 && orderInfo.activity_type!=4 && orderInfo.activity_type!=10">
  391. 再次购买</view>
  392. </block>
  393. </view>
  394. </view>
  395. <authorize @onLoadFun="onLoadFun" :isAuto="isAuto" :isShowAuth="isShowAuth" @authColse="authColse"></authorize>
  396. <payment @finalPay='finalPay' :isFinal="isFinal" :payMode='payMode' :pay_close="pay_close"
  397. @onChangeFun='onChangeFun' :order_id="pay_order_id" :totalPrice='totalPrice' :order_type='1'></payment>
  398. <addInvoicing ref="addInvoicing" @changeInvoiceClose="changeInvoiceClose" :invoice='invoice'></addInvoicing>
  399. <!--核销码弹窗-->
  400. <uni-popup ref="cancellPoupon" type="bottom">
  401. <view class="code-content">
  402. <text class="iconfont icon-guanbi5" @click="close"></text>
  403. <view class="title">核销码</view>
  404. <view class="trip">
  405. 请将二维码展示给店员 或 提供数字核销码
  406. </view>
  407. <view class="grayBg">
  408. <view class="pictrue">
  409. <image :src="codeUrl"></image>
  410. </view>
  411. </view>
  412. <view class="num">{{orderInfo.verify_code}}</view>
  413. </view>
  414. </uni-popup>
  415. </view>
  416. </template>
  417. <script>
  418. // +----------------------------------------------------------------------
  419. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  420. // +----------------------------------------------------------------------
  421. // | Copyright (c) 2016~2021 https://www.crmeb.com All rights reserved.
  422. // +----------------------------------------------------------------------
  423. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  424. // +----------------------------------------------------------------------
  425. // | Author: CRMEB Team <admin@crmeb.com>
  426. // +----------------------------------------------------------------------
  427. let app = getApp();
  428. import {
  429. HTTP_REQUEST_URL
  430. } from '@/config/app';
  431. import {
  432. getOrderDetail,
  433. orderAgain,
  434. orderTake,
  435. orderDel,
  436. unOrderCancel,
  437. verifyCode,
  438. applyInvoiceApi
  439. } from '@/api/order.js';
  440. import {
  441. postCombinationRemove
  442. } from '@/api/activity';
  443. import {
  444. openOrderRefundSubscribe
  445. } from '@/utils/SubscribeMessage.js';
  446. import {
  447. getUserInfo
  448. } from '@/api/user.js';
  449. import payment from '@/components/payment';
  450. import orderGoods from "@/components/orderGoods";
  451. import ClipboardJS from "@/plugin/clipboard/clipboard.js";
  452. import {
  453. mapGetters
  454. } from "vuex";
  455. import {
  456. configMap
  457. } from "@/utils";
  458. import authorize from '@/components/Authorize';
  459. import addInvoicing from '@/components/addInvoicing';
  460. import zbCode from '@/components/zb-code/zb-code.vue';
  461. export default {
  462. components: {
  463. payment,
  464. orderGoods,
  465. authorize,
  466. addInvoicing,
  467. zbCode
  468. },
  469. data() {
  470. return {
  471. isFinal: false,
  472. order_id: '',
  473. evaluate: 0,
  474. activityType: 0,
  475. cartInfo: [], //购物车产品
  476. orderInfo: {
  477. system_store: {},
  478. _status: {},
  479. take: {}
  480. }, //订单详情
  481. system_store: {},
  482. isGoodsReturn: false, //是否为退款订单
  483. status: {}, //订单底部按钮状态
  484. isClose: false,
  485. payMode: [{
  486. name: "微信支付",
  487. icon: "icon-weixinzhifu",
  488. value: 'wechat',
  489. title: '微信快捷支付',
  490. payStatus: 1
  491. },
  492. {
  493. name: "支付宝支付",
  494. icon: "icon-zhifubao",
  495. value: 'alipay',
  496. title: '支付宝支付',
  497. payStatus: this.alipay_open
  498. },
  499. {
  500. name: "余额支付",
  501. icon: "icon-yuezhifu",
  502. value: 'balance',
  503. title: '可用余额:',
  504. number: 0,
  505. // payStatus: this.yue_pay_status
  506. payStatus: 1
  507. }
  508. ],
  509. pay_close: false,
  510. pay_order_id: '',
  511. totalPrice: '0',
  512. isAuto: false, //没有授权的不会自动授权
  513. isShowAuth: false, //是否隐藏授权
  514. refundNum: [], //退款个数临时数据
  515. imgUrl: HTTP_REQUEST_URL,
  516. codeUrl: '',
  517. isTimePay: false,
  518. codeShow: false,
  519. cid: '1',
  520. val: "", // 要生成的二维码值
  521. size: 200, // 二维码大小
  522. unit: 'upx', // 单位
  523. background: '#FFF', // 背景色
  524. foreground: '#000', // 前景色
  525. pdground: '#32dbc6', // 角标色
  526. icon: '', // 二维码图标
  527. iconsize: 40, // 二维码图标大小
  528. lv: 3, // 二维码容错级别 , 一般不用设置,默认就行
  529. onval: true, // val值变化时自动重新生成二维码
  530. loadMake: true, // 组件加载完成后自动生成二维码
  531. src: '', // 二维码生成后的图片地址或base64
  532. codeSrc: "",
  533. wd: 225,
  534. hg: 500,
  535. invoice: {
  536. invoice: false,
  537. add: false,
  538. }
  539. };
  540. },
  541. computed: {
  542. ...configMap({
  543. hide_mer_status: 0,
  544. yue_pay_status: 0,
  545. alipay_open: 0
  546. },
  547. mapGetters(['isLogin', 'uid', 'viewColor', 'keyColor'])),
  548. },
  549. filters: {
  550. filterDay(val) {
  551. if (val) {
  552. var reg = /(\d{4})\-(\d{2})\-(\d{2})/;
  553. var date = val.replace(reg, "$2月$3日");
  554. return date
  555. }
  556. }
  557. },
  558. onLoad: function(options) {
  559. if (options.order_id) {
  560. this.$set(this, 'order_id', options.order_id);
  561. }
  562. },
  563. onShow() {
  564. if (this.isLogin) {
  565. this.getOrderInfo();
  566. this.getUserInfo();
  567. this.isPayBalance();
  568. } else {
  569. this.isAuto = true;
  570. this.isShowAuth = true
  571. }
  572. },
  573. onHide: function() {
  574. this.isClose = true;
  575. },
  576. onReady: function() {
  577. // #ifdef H5
  578. this.$nextTick(function() {
  579. const clipboard = new ClipboardJS(".copy-data");
  580. clipboard.on("success", () => {
  581. this.$util.Tips({
  582. title: '复制成功'
  583. });
  584. });
  585. });
  586. // #endif
  587. },
  588. mounted: function() {},
  589. methods: {
  590. finalPay() {
  591. this.getOrderInfo();
  592. },
  593. // 图片预览
  594. getPhotoClickIdx(list, idx) {
  595. uni.previewImage({
  596. current: list[idx], // 传 Number H5端出现不兼容
  597. urls: list
  598. });
  599. },
  600. // 判断是否到支付尾款时间
  601. isPayBalance() {
  602. let that = this;
  603. if (that.orderInfo.status === 10) {
  604. if (new Date() < new Date(that.orderInfo.presellOrder.final_start_time)) {
  605. that.isTimePay = false; //未开始
  606. } else if ((new Date() >= new Date(that.orderInfo.presellOrder.final_start_time)) && (new Date() <=
  607. new Date(that.orderInfo.presellOrder.final_start_time))) {
  608. that.isTimePay = true; //立即支付
  609. }
  610. }
  611. },
  612. // 数字转汉字
  613. toChinese(num) {
  614. let changeNum = ['零', '一', '二', '三', '四', '五', '六', '日', '八', '九'];
  615. let unit = ["", "十", "百", "千", "万"];
  616. num = parseInt(num);
  617. let getWan = (temp) => {
  618. let strArr = temp.toString().split("").reverse();
  619. let newNum = "";
  620. for (var i = 0; i < strArr.length; i++) {
  621. newNum = (i == 0 && strArr[i] == 0 ? "" : (i > 0 && strArr[i] == 0 && strArr[i - 1] == 0 ? "" :
  622. changeNum[strArr[i]] + (strArr[i] == 0 ? unit[0] : unit[i]))) + newNum;
  623. }
  624. return newNum;
  625. }
  626. let overWan = Math.floor(num / 10000);
  627. let noWan = num % 10000;
  628. if (noWan.toString().length < 4) {
  629. noWan = "0" + noWan;
  630. }
  631. return overWan ? getWan(overWan) + "万" + getWan(noWan) : getWan(num);
  632. },
  633. // 返回店铺首页
  634. goStore(mer_id) {
  635. if (this.hide_mer_status != 1) {
  636. uni.navigateTo({
  637. url: '/pages/store/home/index?id=' + mer_id
  638. })
  639. }
  640. },
  641. // 批量退款
  642. allRefund() {
  643. // #ifdef MP
  644. openOrderRefundSubscribe().then(() => {
  645. uni.hideLoading();
  646. if (this.orderInfo.is_percentage == 1) {
  647. uni.showToast({
  648. title: '请联系客服',
  649. icon: 'error'
  650. })
  651. } else {
  652. if (this.orderInfo.status == 0 || this.orderInfo.is_virtual == 1) {
  653. uni.navigateTo({
  654. url: '/pages/users/refund/index?order_id=' + this.order_id +
  655. '&refund_type=1&type=2&order_type=' + this.orderInfo.order_type
  656. })
  657. } else {
  658. uni.navigateTo({
  659. url: '/pages/users/refund/select?order_id=' + this.order_id +
  660. '&type=2&order_type=' + this.orderInfo.order_type
  661. })
  662. }
  663. }
  664. }).catch(() => {
  665. uni.hideLoading();
  666. })
  667. // #endif
  668. // #ifdef H5 || APP-PLUS
  669. if (this.orderInfo.is_percentage == 1) {
  670. uni.showToast({
  671. title: '请联系客服',
  672. icon: 'error'
  673. })
  674. } else {
  675. if (this.orderInfo.status == 0 || this.orderInfo.is_virtual == 1) {
  676. uni.navigateTo({
  677. url: '/pages/users/refund/index?order_id=' + this.order_id +
  678. '&refund_type=1&type=2&order_type=' + this.orderInfo.order_type
  679. })
  680. } else {
  681. uni.navigateTo({
  682. url: '/pages/users/refund/select?order_id=' + this.order_id +
  683. '&type=2&order_type=' + this.orderInfo.order_type
  684. })
  685. }
  686. }
  687. // #endif
  688. },
  689. //拼团取消
  690. getCombinationRemove: function() {
  691. var that = this;
  692. postCombinationRemove({
  693. group_buying_id: that.orderInfo.orderProduct[0].activity_id
  694. })
  695. .then(res => {
  696. that.$util.Tips({
  697. title: res.message
  698. }, {
  699. tab: 3
  700. });
  701. })
  702. .catch(res => {
  703. that.$util.Tips({
  704. title: res.message
  705. });
  706. });
  707. },
  708. // 取消售后
  709. cancelSales() {
  710. let that = this;
  711. uni.showModal({
  712. content: '确定要取消售后?',
  713. success: function(res) {
  714. if (res.confirm) {
  715. deletePlantApi(that.id).then(res => {
  716. if (res.status === 200) {
  717. that.$util.Tips({
  718. title: res.message
  719. });
  720. setTimeout(function() {
  721. // uni.redirectTo({
  722. // url: '/pages/plantGrass/plant_user/index'
  723. // })
  724. }, 1000);
  725. }
  726. })
  727. } else if (res.cancel) {
  728. console.log('用户点击取消');
  729. }
  730. }
  731. });
  732. },
  733. // 联系客服
  734. goGoodCall() {
  735. let self = this
  736. uni.navigateTo({
  737. url: `/pages/chat/customer_list/chat?mer_id=${self.orderInfo.mer_id}&uid=${this.uid}&order_id=${this.order_id}`
  738. })
  739. },
  740. openSubcribe: function(e) {
  741. let page = e;
  742. uni.showLoading({
  743. title: '正在加载',
  744. })
  745. openOrderRefundSubscribe().then(res => {
  746. uni.hideLoading();
  747. uni.navigateTo({
  748. url: page,
  749. });
  750. }).catch(() => {
  751. uni.hideLoading();
  752. });
  753. },
  754. /**
  755. * 事件回调
  756. *
  757. */
  758. onChangeFun: function(e) {
  759. let opt = e;
  760. let action = opt.action || null;
  761. let value = opt.value != undefined ? opt.value : null;
  762. (action && this[action]) && this[action](value);
  763. },
  764. /**
  765. * 拨打电话
  766. */
  767. makePhone: function() {
  768. uni.makePhoneCall({
  769. phoneNumber: this.orderInfo.take.mer_take_phone
  770. })
  771. },
  772. /**
  773. * 拨打电话
  774. */
  775. call: function() {
  776. uni.makePhoneCall({
  777. phoneNumber: this.orderInfo.merchant.service_phone
  778. })
  779. },
  780. /**
  781. * 打开地图
  782. *
  783. */
  784. showMaoLocation: function() {
  785. if (!this.orderInfo.take.mer_take_location[0] || !this.orderInfo.take.mer_take_location[1])
  786. return this.$util.Tips({
  787. title: '请设置允许商城访问您的位置!'
  788. });
  789. let that = this,
  790. lat = parseFloat(that.orderInfo.take.mer_take_location[0]),
  791. long = parseFloat(that.orderInfo.take.mer_take_location[1])
  792. //#ifdef H5
  793. if (that.$wechat.isWeixin() === true) {
  794. that.$wechat.seeLocation({
  795. latitude: Number(lat),
  796. longitude: Number(long),
  797. address: that.orderInfo.take ? that.orderInfo.take.mer_take_name : ''
  798. }).then(res => {
  799. console.log('success');
  800. })
  801. } else {
  802. //#endif
  803. uni.openLocation({
  804. latitude: lat,
  805. longitude: long,
  806. address: that.orderInfo.take ? that.orderInfo.take.mer_take_name : '',
  807. scale: 8,
  808. success: function() {},
  809. });
  810. // #ifdef H5
  811. }
  812. //#endif
  813. },
  814. /**
  815. * 关闭支付组件
  816. *
  817. */
  818. payClose: function() {
  819. this.pay_close = false;
  820. },
  821. /**
  822. * 打开支付组件
  823. *
  824. */
  825. pay_open: function() {
  826. this.isFinal = false,
  827. this.pay_close = true;
  828. this.pay_order_id = this.orderInfo.order_id.toString();
  829. this.totalPrice = this.orderInfo.pay_price;
  830. },
  831. pay_open1: function() {
  832. this.isFinal = true,
  833. this.pay_close = true;
  834. this.pay_order_id = this.orderInfo.order_id.toString();
  835. this.totalPrice = this.orderInfo.pay_price;
  836. },
  837. /**
  838. * 支付成功回调
  839. *
  840. */
  841. pay_complete: function() {
  842. this.pay_close = false;
  843. this.pay_order_id = '';
  844. this.getOrderInfo();
  845. },
  846. /**
  847. * 支付失败回调
  848. *
  849. */
  850. pay_fail: function() {
  851. this.pay_close = false;
  852. this.pay_order_id = '';
  853. },
  854. /**
  855. * 登录授权回调
  856. *
  857. */
  858. onLoadFun: function() {
  859. this.isShowAuth = false;
  860. this.getOrderInfo();
  861. this.getUserInfo();
  862. },
  863. // 授权关闭
  864. authColse: function(e) {
  865. this.isShowAuth = e;
  866. },
  867. /**
  868. * 获取用户信息
  869. *
  870. */
  871. getUserInfo: function() {
  872. let that = this;
  873. getUserInfo().then(res => {
  874. that.payMode[2].number = res.data.now_money;
  875. })
  876. },
  877. getOrderCode() {
  878. verifyCode(this.order_id).then(res => {
  879. this.codeUrl = res.data.qrcode
  880. this.val = res.data.qrcode
  881. })
  882. },
  883. /**
  884. * 获取订单详细信息
  885. *
  886. */
  887. getOrderInfo: function() {
  888. let that = this;
  889. uni.showLoading({
  890. title: "正在加载中"
  891. });
  892. getOrderDetail(that.order_id).then(res => {
  893. uni.hideLoading();
  894. that.$set(that, 'orderInfo', res.data);
  895. that.orderInfo.take = res.data.take;
  896. that.$set(that, 'cartInfo', res.data.orderProduct);
  897. if (that.orderInfo.status == '-1') {
  898. that.isGoodsReturn = true;
  899. }
  900. res.data.orderProduct.map(el => {
  901. if (el.refund_num == 0) {
  902. that.refundNum.push(el)
  903. }
  904. })
  905. if (res.data.order_type == 1) {
  906. that.getOrderCode()
  907. }
  908. }).catch(err => {
  909. uni.hideLoading();
  910. that.$util.Tips({
  911. title: err
  912. }, '/pages/users/order_list/index');
  913. });
  914. },
  915. qrR(res) {
  916. this.codeSrc = res
  917. },
  918. showCode() {
  919. this.$refs.cancellPoupon.open();
  920. },
  921. close() {
  922. this.$refs.cancellPoupon.close();
  923. },
  924. /**
  925. *
  926. * 剪切订单号
  927. */
  928. // #ifndef H5
  929. copy: function() {
  930. let that = this;
  931. console.log(that.orderInfo.order_sn)
  932. uni.setClipboardData({
  933. data: that.orderInfo.order_sn,
  934. success: function(res) {}
  935. });
  936. },
  937. // #endif
  938. /**
  939. * 打电话
  940. */
  941. goTel: function() {
  942. uni.makePhoneCall({
  943. phoneNumber: this.orderInfo.delivery_id
  944. })
  945. },
  946. /**
  947. * 去拼团详情
  948. *
  949. */
  950. goJoinPink: function() {
  951. uni.navigateTo({
  952. url: '/pages/activity/combination_status/index?id=' + this.orderInfo.orderProduct[0]
  953. .activity_id,
  954. });
  955. },
  956. /**
  957. * 再此购买
  958. *
  959. */
  960. goOrderConfirm: function() {
  961. let that = this;
  962. let data = []
  963. this.cartInfo.map((item, index) => {
  964. let obj = {}
  965. obj.product_id = item.product_id
  966. obj.product_attr_unique = item.product_sku
  967. obj.cart_num = item.product_num
  968. data.push(obj)
  969. })
  970. orderAgain({
  971. data: data
  972. }).then(res => {
  973. let cart_id = res.data.cart_id.join(',')
  974. console.log(cart_id)
  975. return uni.navigateTo({
  976. url: '/pages/users/order_confirm/index?cartId=' + cart_id
  977. });
  978. });
  979. },
  980. confirmOrder: function() {
  981. let that = this;
  982. uni.showModal({
  983. title: '确认收货',
  984. content: '为保障权益,请收到货确认无误后,再确认收货',
  985. success: function(res) {
  986. if (res.confirm) {
  987. orderTake(that.order_id).then(res => {
  988. return that.$util.Tips({
  989. title: '操作成功',
  990. icon: 'success'
  991. }, function() {
  992. that.getOrderInfo();
  993. });
  994. }).catch(err => {
  995. return that.$util.Tips({
  996. title: err
  997. });
  998. })
  999. }
  1000. }
  1001. })
  1002. },
  1003. /**
  1004. *
  1005. * 删除订单
  1006. */
  1007. delOrder: function() {
  1008. let that = this;
  1009. orderDel(this.order_id).then(res => {
  1010. return that.$util.Tips({
  1011. title: '删除成功',
  1012. icon: 'success'
  1013. }, {
  1014. tab: 3,
  1015. url: 1
  1016. });
  1017. }).catch(err => {
  1018. return that.$util.Tips({
  1019. title: err
  1020. });
  1021. });
  1022. },
  1023. cancelOrder() {
  1024. let self = this
  1025. uni.showModal({
  1026. title: '提示',
  1027. content: '确认取消该订单?',
  1028. success: function(res) {
  1029. if (res.confirm) {
  1030. orderDel(self.orderInfo.order_id)
  1031. .then((data) => {
  1032. console.log(data)
  1033. self.$util.Tips({
  1034. title: data.msg
  1035. }, {
  1036. tab: 3
  1037. })
  1038. })
  1039. .catch((err) => {
  1040. return self.$util.Tips({
  1041. title: err
  1042. });
  1043. });
  1044. } else if (res.cancel) {
  1045. console.log('用户点击取消');
  1046. }
  1047. }
  1048. });
  1049. },
  1050. /*申请开票*/
  1051. applyInvoice() {
  1052. let that = this;
  1053. that.invoice.invoice = true;
  1054. that.$refs.addInvoicing.getInvoiceDefault();
  1055. that.$refs.addInvoicing.getInvoiceList();
  1056. },
  1057. // 关闭发票弹窗
  1058. changeInvoiceClose: function(data) {
  1059. if (data) this.getInvoiceData(data);
  1060. this.$set(this.invoice, 'invoice', false);
  1061. },
  1062. // 开票回调
  1063. getInvoiceData(data) {
  1064. let that = this
  1065. applyInvoiceApi(that.order_id, data).then(res => {
  1066. return that.$util.Tips({
  1067. title: res.message,
  1068. });
  1069. }).catch(err => {
  1070. return that.$util.Tips({
  1071. title: err
  1072. });
  1073. })
  1074. }
  1075. }
  1076. }
  1077. </script>
  1078. <style scoped lang="scss">
  1079. .percentagePay {
  1080. margin-top: 16rpx;
  1081. padding: 20rpx 28rpx;
  1082. background-color: #fff;
  1083. .percentage_content {
  1084. line-height: 60rpx;
  1085. padding: 0 16rpx;
  1086. margin: 20rpx auto 0;
  1087. width: 694rpx;
  1088. background: #F5F5F5;
  1089. border-radius: 16rpx;
  1090. .percentage_item {
  1091. display: flex;
  1092. justify-content: space-between;
  1093. font-size: 24rpx;
  1094. color: #2A2A2A;
  1095. text {
  1096. color: #7E7E7E;
  1097. }
  1098. }
  1099. }
  1100. .percentage_title {
  1101. display: flex;
  1102. .percentage_left {
  1103. margin-left: 16rpx;
  1104. .textBox {
  1105. display: flex;
  1106. transform: skewX(-15deg);
  1107. width: 118rpx;
  1108. white-space: nowrap;
  1109. // height: 28rpx;
  1110. // line-height: 28rpx;
  1111. border: 4rpx solid #EB3B2B;
  1112. border-radius: 3rpx;
  1113. font-size: 16rpx;
  1114. // background-color: #EB3B2B;
  1115. .text1 {
  1116. color: #EB3B2B;
  1117. transform: skewX(15deg);
  1118. display: inline-block;
  1119. // background-color: #fff;
  1120. }
  1121. .text2 {
  1122. color: #fff;
  1123. background-color: #EB3B2B;
  1124. // transform: skewX(15deg);
  1125. display: inline-block;
  1126. .pay {
  1127. transform: skewX(15deg);
  1128. display: inline-block;
  1129. }
  1130. }
  1131. }
  1132. .percentageTltle {
  1133. margin-top: 4rpx;
  1134. font-size: 28rpx;
  1135. color: #EB3B2B;
  1136. font-weight: bold;
  1137. }
  1138. }
  1139. }
  1140. }
  1141. .remark {
  1142. flex: 1;
  1143. }
  1144. .merchant {
  1145. width: 100%;
  1146. height: 86rpx;
  1147. padding: 0 30rpx;
  1148. margin-top: 15rpx;
  1149. border-bottom: 2rpx solid #f0f0f0;
  1150. font-size: 30rpx;
  1151. color: #282828;
  1152. line-height: 86rpx;
  1153. box-sizing: border-box;
  1154. background-color: #fff;
  1155. .iconfont {
  1156. margin-top: 6rpx;
  1157. font-size: 22rpx;
  1158. }
  1159. }
  1160. .presell_bg_header {
  1161. background: linear-gradient(to right, var(--view-bntColor21) 0%, var(--view-bntColor22) 100%);
  1162. }
  1163. .b-color {
  1164. background-color: var(--view-theme);
  1165. }
  1166. .t-color {
  1167. color: var(--view-theme) !important;
  1168. }
  1169. .goodCall {
  1170. text-align: center;
  1171. width: 100%;
  1172. height: 86rpx;
  1173. padding: 0 30rpx;
  1174. border-bottom: 1px solid #eee;
  1175. font-size: 30rpx;
  1176. line-height: 86rpx;
  1177. background: #fff;
  1178. color: #282828;
  1179. .icon-kefu {
  1180. font-size: 28rpx;
  1181. margin-right: 15rpx;
  1182. }
  1183. /* #ifdef MP */
  1184. button {
  1185. display: flex;
  1186. align-items: center;
  1187. justify-content: center;
  1188. height: 86rpx;
  1189. font-size: 30rpx;
  1190. color: #e93323;
  1191. }
  1192. /* #endif */
  1193. }
  1194. .order-details .header {
  1195. padding: 0 30rpx;
  1196. height: 150rpx;
  1197. background-image: linear-gradient(90deg, var(--view-bntColor21) 0%, var(--view-bntColor22) 100%);
  1198. &.presell_header {
  1199. background-repeat: no-repeat;
  1200. background-size: cover;
  1201. padding: 35rpx 50rpx;
  1202. .data {
  1203. margin: 8rpx 0 0 13rpx;
  1204. .state {
  1205. font-weight: normal;
  1206. font-size: 24rpx;
  1207. }
  1208. }
  1209. }
  1210. }
  1211. .take-info {
  1212. padding: 0 30rpx 30rpx;
  1213. background-color: #ffffff;
  1214. margin-bottom: 14rpx;
  1215. }
  1216. .take-msg {
  1217. display: flex;
  1218. justify-content: space-between;
  1219. background-color: #FAFAFA;
  1220. padding: 24rpx;
  1221. border-radius: 4rpx;
  1222. .left {
  1223. font-size: 24rpx;
  1224. display: flex;
  1225. flex-direction: column;
  1226. justify-content: space-between;
  1227. .title {
  1228. font-size: 28rpx;
  1229. font-weight: bold;
  1230. color: #282828;
  1231. }
  1232. .text {
  1233. color: #666666;
  1234. }
  1235. }
  1236. .code {
  1237. display: flex;
  1238. flex-direction: column;
  1239. align-items: center;
  1240. justify-content: center;
  1241. .iconfont {
  1242. font-size: 50rpx;
  1243. color: #666666;
  1244. }
  1245. .text {
  1246. font-size: 20rpx;
  1247. color: #666666;
  1248. margin-top: 12rpx;
  1249. }
  1250. }
  1251. }
  1252. .order-details .header.on {
  1253. background-color: #666 !important;
  1254. }
  1255. .order-details .header .pictrue {
  1256. width: 110rpx;
  1257. height: 110rpx;
  1258. }
  1259. .order-details .header .pictrue image {
  1260. width: 100%;
  1261. height: 100%;
  1262. }
  1263. .order-details .header .data {
  1264. color: rgba(255, 255, 255, 0.8);
  1265. font-size: 24rpx;
  1266. margin-left: 27rpx;
  1267. }
  1268. .order-details .header .data.on {
  1269. margin-left: 0;
  1270. }
  1271. .order-details .header .data .state {
  1272. font-size: 30rpx;
  1273. font-weight: bold;
  1274. color: #fff;
  1275. margin-bottom: 7rpx;
  1276. }
  1277. .presell_header .presell_payment {
  1278. color: #fff;
  1279. font-size: 30rpx;
  1280. font-weight: bold;
  1281. .iconfont {
  1282. font-weight: normal;
  1283. margin-right: 8rpx;
  1284. }
  1285. }
  1286. .order-details .header .data .time {
  1287. margin-left: 20rpx;
  1288. }
  1289. .order-details .nav {
  1290. background-color: #fff;
  1291. font-size: 26rpx;
  1292. color: #282828;
  1293. padding: 25rpx 0;
  1294. }
  1295. .order-details .nav .navCon {
  1296. padding: 0 40rpx;
  1297. }
  1298. .order-details .nav .on {
  1299. color: var(--view-theme);
  1300. }
  1301. .order-details .nav .progress {
  1302. padding: 0 65rpx;
  1303. margin-top: 10rpx;
  1304. }
  1305. .order-details .nav .progress .line {
  1306. width: 100rpx;
  1307. height: 2rpx;
  1308. background-color: #939390;
  1309. }
  1310. .order-details .nav .progress .iconfont {
  1311. font-size: 25rpx;
  1312. color: #939390;
  1313. margin-top: -2rpx;
  1314. }
  1315. .order-details .address {
  1316. font-size: 26rpx;
  1317. color: #868686;
  1318. background-color: #fff;
  1319. margin-top: 13rpx;
  1320. padding: 35rpx 30rpx;
  1321. }
  1322. .order-details .address .name {
  1323. font-size: 30rpx;
  1324. color: #282828;
  1325. margin-bottom: 15rpx;
  1326. }
  1327. .order-details .line {
  1328. width: 100%;
  1329. height: 3rpx;
  1330. }
  1331. .order-details .line image {
  1332. width: 100%;
  1333. height: 100%;
  1334. display: block;
  1335. }
  1336. .order-details .wrapper {
  1337. background-color: #fff;
  1338. margin-top: 12rpx;
  1339. padding: 30rpx;
  1340. }
  1341. .order-details .wrapper .item {
  1342. font-size: 28rpx;
  1343. color: #282828;
  1344. }
  1345. .order-details .wrapper .virtual_item {
  1346. display: flex;
  1347. justify-content: space-between;
  1348. align-items: center;
  1349. }
  1350. .order-details .virtual_item .virtual_row {
  1351. width: 300rpx;
  1352. align-items: center;
  1353. justify-content: space-between;
  1354. image,
  1355. uni-image {
  1356. width: 80rpx;
  1357. height: 80rpx;
  1358. border-radius: 100%;
  1359. }
  1360. }
  1361. .order-details .virtual_item .virtual_detail {
  1362. color: var(--view-theme);
  1363. }
  1364. .order-details .virtual_item .virtual_delivery {
  1365. line-height: 40rpx;
  1366. }
  1367. .order-details .virtual_item .virtual_delivery_not {
  1368. font-weight: bold;
  1369. }
  1370. .order-details .wrapper .item~.item {
  1371. margin-top: 20rpx;
  1372. }
  1373. .order-details .wrapper .item .conter {
  1374. color: #868686;
  1375. text-align: right;
  1376. }
  1377. .order-details .wrapper .item .virtual_image {
  1378. text-align: left;
  1379. margin-left: 50rpx;
  1380. }
  1381. .order-details .wrapper .item .virtual_image .picture {
  1382. width: 106rpx;
  1383. height: 106rpx;
  1384. border-radius: 8rpx;
  1385. margin-right: 10rpx;
  1386. &:last-child {
  1387. margin-right: 0;
  1388. }
  1389. }
  1390. .order-details .wrapper .item .conter .copy {
  1391. font-size: 20rpx;
  1392. color: #333;
  1393. border-radius: 17rpx;
  1394. border: 1px solid #666;
  1395. padding: 3rpx 15rpx;
  1396. margin-left: 24rpx;
  1397. }
  1398. .order-details .wrapper .actualPay {
  1399. border-top: 1px solid #eee;
  1400. margin-top: 30rpx;
  1401. padding-top: 30rpx;
  1402. }
  1403. .order-details .wrapper .actualPay .money {
  1404. font-weight: bold;
  1405. font-size: 30rpx;
  1406. }
  1407. .order-details .footer {
  1408. width: 100%;
  1409. position: fixed;
  1410. bottom: 0;
  1411. left: 0;
  1412. background-color: #fff;
  1413. padding: 0 30rpx;
  1414. height: 100rpx;
  1415. height: calc(100rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
  1416. height: calc(100rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
  1417. box-sizing: border-box;
  1418. }
  1419. .content-clip {
  1420. height: 120rpx;
  1421. height: calc(120rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
  1422. height: calc(120rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
  1423. }
  1424. .order-details .footer .bnt {
  1425. width: 156rpx;
  1426. text-align: center;
  1427. height: 60rpx;
  1428. border-radius: 50rpx;
  1429. color: #fff;
  1430. font-size: 27rpx;
  1431. display: flex;
  1432. align-items: center;
  1433. justify-content: center;
  1434. &.btn_auto {
  1435. width: auto;
  1436. padding: 0 40rpx;
  1437. }
  1438. }
  1439. .order-details .footer .bnt.cancel {
  1440. color: #aaa;
  1441. border: 1px solid #ddd;
  1442. }
  1443. .order-details .footer .bnt~.bnt {
  1444. margin-left: 18rpx;
  1445. }
  1446. .order-details .writeOff {
  1447. background-color: #fff;
  1448. margin-top: 13rpx;
  1449. padding-bottom: 30rpx;
  1450. }
  1451. .order-details .writeOff .title {
  1452. font-size: 30rpx;
  1453. color: #282828;
  1454. height: 87rpx;
  1455. border-bottom: 1px solid #f0f0f0;
  1456. padding: 0 30rpx;
  1457. line-height: 87rpx;
  1458. }
  1459. .grayBg .pictrue {
  1460. width: 290rpx;
  1461. height: 290rpx;
  1462. margin: 0 auto;
  1463. }
  1464. .grayBg .pictrue image {
  1465. width: 100%;
  1466. height: 100%;
  1467. display: block;
  1468. }
  1469. .gear {
  1470. width: 590rpx;
  1471. height: 30rpx;
  1472. margin: 0 auto;
  1473. }
  1474. .gear image {
  1475. width: 100%;
  1476. height: 100%;
  1477. display: block;
  1478. }
  1479. .num {
  1480. color: #282828;
  1481. font-size: 34rpx;
  1482. font-weight: bold;
  1483. margin: 0 auto;
  1484. text-align: center;
  1485. margin-top: 30rpx;
  1486. }
  1487. .order-details .writeOff .rules {
  1488. margin: 46rpx 30rpx 0 30rpx;
  1489. border-top: 1px solid #f0f0f0;
  1490. padding-top: 10rpx;
  1491. }
  1492. .order-details .writeOff .rules .item {
  1493. margin-top: 20rpx;
  1494. }
  1495. .order-details .writeOff .rules .item .rulesTitle {
  1496. font-size: 28rpx;
  1497. color: #282828;
  1498. }
  1499. .order-details .writeOff .rules .item .rulesTitle .iconfont {
  1500. font-size: 30rpx;
  1501. color: #333;
  1502. margin-right: 8rpx;
  1503. margin-top: 5rpx;
  1504. }
  1505. .order-details .writeOff .rules .item .info {
  1506. font-size: 28rpx;
  1507. color: #999;
  1508. margin-top: 7rpx;
  1509. }
  1510. .order-details .writeOff .rules .item .info .time {
  1511. margin-left: 20rpx;
  1512. }
  1513. .order-details .map {
  1514. height: 86rpx;
  1515. font-size: 30rpx;
  1516. color: #282828;
  1517. line-height: 86rpx;
  1518. border-bottom: 1px solid #f0f0f0;
  1519. margin-top: 13rpx;
  1520. background-color: #fff;
  1521. padding: 0 30rpx;
  1522. }
  1523. .order-details .map .place {
  1524. font-size: 26rpx;
  1525. width: 176rpx;
  1526. border-radius: 25rpx;
  1527. line-height: 50rpx;
  1528. text-align: center;
  1529. border: 1px solid var(--view-theme);
  1530. }
  1531. .order-details .map .place .iconfont {
  1532. font-size: 27rpx;
  1533. height: 27rpx;
  1534. line-height: 27rpx;
  1535. margin: 2rpx 3rpx 0 0;
  1536. }
  1537. .order-details .address .name .iconfont {
  1538. font-size: 34rpx;
  1539. margin-left: 10rpx;
  1540. }
  1541. .refund {
  1542. padding: 0 30rpx 30rpx;
  1543. margin-top: 24rpx;
  1544. background-color: #fff;
  1545. .title {
  1546. display: flex;
  1547. align-items: center;
  1548. font-size: 30rpx;
  1549. color: #333;
  1550. height: 86rpx;
  1551. border-bottom: 1px solid #f5f5f5;
  1552. image {
  1553. width: 32rpx;
  1554. height: 32rpx;
  1555. margin-right: 10rpx;
  1556. }
  1557. }
  1558. .con {
  1559. padding-top: 25rpx;
  1560. font-size: 28rpx;
  1561. color: #868686;
  1562. }
  1563. }
  1564. .qs-btn {
  1565. width: auto;
  1566. height: 60rpx;
  1567. text-align: center;
  1568. line-height: 60rpx;
  1569. border-radius: 50rpx;
  1570. color: #fff;
  1571. font-size: 27rpx;
  1572. padding: 0 3%;
  1573. color: #aaa;
  1574. border: 1px solid #ddd;
  1575. margin-right: 20rpx;
  1576. }
  1577. .code-content {
  1578. display: flex;
  1579. flex-direction: column;
  1580. align-items: center;
  1581. justify-content: center;
  1582. padding: 32rpx 0 60rpx 0;
  1583. background: #ffffff;
  1584. border-radius: 16rpx 16rpx 0 0;
  1585. position: relative;
  1586. .iconfont {
  1587. font-size: 24rpx;
  1588. color: #939393;
  1589. position: absolute;
  1590. top: 20rpx;
  1591. right: 30rpx;
  1592. }
  1593. .title {
  1594. color: #282828;
  1595. font-size: 32rpx;
  1596. font-weight: bold;
  1597. }
  1598. .trip {
  1599. font-size: 28rpx;
  1600. font-weight: 400;
  1601. color: #666666;
  1602. margin: 40rpx 0;
  1603. }
  1604. }
  1605. </style>