index.vue 52 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062
  1. <template>
  2. <view :style="colorStyle">
  3. <view class='order-details'>
  4. <!-- 给header上与data上加on为退款订单-->
  5. <view class='header bg-color acea-row row-middle' :class='isGoodsReturn ? "on":""'>
  6. <view class='pictrue' v-if="isGoodsReturn==false">
  7. <image :src="orderInfo.status_pic"></image>
  8. </view>
  9. <view class='data' :class='isGoodsReturn ? "on":""'>
  10. <view class='state'>{{orderInfo._status._msg}}</view>
  11. <view>{{orderInfo.add_time_y}}<text class='time'>{{orderInfo.add_time_h}}</text></view>
  12. </view>
  13. </view>
  14. <view class="refund-msg" v-if="[4,5].includes(orderInfo.refund_type)">
  15. <view class="refund-msg-user">
  16. <text class="name">{{orderInfo._status.refund_name}}</text>
  17. <text>{{orderInfo._status.refund_phone}}</text>
  18. <!-- #ifndef H5 -->
  19. <text class="copy-refund-msg" @click="copyAddress()">复制</text>
  20. <!-- #endif -->
  21. <!-- #ifdef H5 -->
  22. <text class="copy-refund-msg"
  23. :data-clipboard-text="orderInfo._status.refund_name + orderInfo._status.refund_phone + orderInfo._status.refund_address">复制</text>
  24. <!-- #endif -->
  25. </view>
  26. <view class="refund-address">
  27. {{orderInfo._status.refund_address}}
  28. </view>
  29. <view class="refund-tip"><text class="iconfont icon-zhuyi-copy"></text>请按以上退货信息将商品退回</view>
  30. </view>
  31. <view class='line' v-if="[4,5].includes(orderInfo.refund_type)">
  32. <image src='@/static/images/line.jpg'></image>
  33. </view>
  34. <!-- 拒绝退款 -->
  35. <view class="refund" v-if="isGoodsReturn && orderInfo.refund_type==3">
  36. <view class="title">
  37. <image src="../static/shuoming.png" mode=""></image>
  38. 商家拒绝退款
  39. </view>
  40. <view class="con">拒绝原因:{{orderInfo.refuse_reason}}</view>
  41. </view>
  42. <view v-if="isGoodsReturn==false">
  43. <view class='nav'>
  44. <view class='navCon acea-row row-between-wrapper'>
  45. <view :class="status.type == 0 || status.type == -9 ? 'on':''">待付款</view>
  46. <view :class="status.type == 1 || status.type == 5 ? 'on':''" v-if="orderInfo.shipping_type!=4">
  47. {{(orderInfo.shipping_type==1 || orderInfo.shipping_type==3) ? '待发货':'待核销'}}
  48. </view>
  49. <view :class="status.type == 2 ? 'on':''"
  50. v-if="orderInfo.shipping_type == 1 || orderInfo.shipping_type == 3">待收货</view>
  51. <view :class="status.type == 3 ? 'on':''">待评价</view>
  52. <view :class="status.type == 4 ? 'on':''">已完成</view>
  53. </view>
  54. <view class='progress acea-row row-between-wrapper'>
  55. <view class='iconfont'
  56. :class='(status.type == 0 || status.type == -9 ? "icon-webicon318":"icon-yuandianxiao") + " " + (status.type >= 0 ? "font-num":"")'>
  57. </view>
  58. <view class='line' :class='status.type > 0 ? "bg-color":""' v-if="orderInfo.shipping_type!=4">
  59. </view>
  60. <view class='iconfont'
  61. :class='(status.type == 1 || status.type == 5 ? "icon-webicon318":"icon-yuandianxiao") + " " + (status.type >= 1 ? "font-num":"")'
  62. v-if="orderInfo.shipping_type!=4">
  63. </view>
  64. <view class='line' :class='status.type > 1 && status.type != 5 ? "bg-color":""'
  65. v-if="orderInfo.shipping_type == 1 || orderInfo.shipping_type == 3">
  66. </view>
  67. <view class='iconfont'
  68. :class='(status.type == 2 ? "icon-webicon318":"icon-yuandianxiao") + " " +(status.type >= 2 ? "font-num":"")'
  69. v-if="orderInfo.shipping_type == 1 || orderInfo.shipping_type == 3"></view>
  70. <view class='line' :class='status.type > 2 && status.type != 5 ? "bg-color":""'></view>
  71. <view class='iconfont'
  72. :class='(status.type == 3 ? "icon-webicon318":"icon-yuandianxiao") + " " + (status.type >= 3 && status.type != 5 ? "font-num":"")'>
  73. </view>
  74. <view class='line' :class='status.type > 3 && status.type != 5 ? "bg-color":""'></view>
  75. <view class='iconfont'
  76. :class='(status.type == 4 ? "icon-webicon318":"icon-yuandianxiao") + " " + (status.type >= 4 && status.type != 5 ? "font-num":"")'>
  77. </view>
  78. </view>
  79. </view>
  80. <!-- <view class="writeOff" v-if="orderInfo.shipping_type == 2 && orderInfo.paid"> -->
  81. <view class="writeOff" v-if="orderInfo.verify_code && orderInfo.paid == 1">
  82. <view class="title">核销信息</view>
  83. <view class="grayBg">
  84. <view class="written" v-if="orderInfo.status == 2">
  85. <image src="../static/written.png"></image>
  86. </view>
  87. <view class="pictrue">
  88. <w-qrcode :options="config.qrc"></w-qrcode>
  89. </view>
  90. </view>
  91. <view class="gear">
  92. <image src="../static/writeOff.jpg"></image>
  93. </view>
  94. <view class="num">{{orderInfo._verify_code}}</view>
  95. <view class="rules">
  96. <view class="item" v-if="orderInfo.shipping_type == 2">
  97. <view class="rulesTitle acea-row row-middle">
  98. <text class="iconfont icon-shijian"></text>营业时间
  99. </view>
  100. <view class="info">
  101. 每日:<text class="time">{{orderInfo.system_store.day_time}}</text>
  102. </view>
  103. </view>
  104. <view class="item">
  105. <view class="rulesTitle acea-row row-middle">
  106. <text class="iconfont icon-shuoming1"></text>使用说明
  107. </view>
  108. <view class="info">{{orderInfo.shipping_type == 2?'可将二维码出示给店员扫描或提供数字核销码':'可将二维码出示给配送员进行核销'}}
  109. </view>
  110. </view>
  111. </view>
  112. </view>
  113. <view class="map acea-row row-between-wrapper" v-if="orderInfo.shipping_type == 2">
  114. <view>自提地址信息</view>
  115. <view class="place cart-color acea-row row-center-wrapper" @tap="showMaoLocation">
  116. <text class="iconfont icon-weizhi"></text>查看位置
  117. </view>
  118. </view>
  119. <view class='address' v-if="(orderInfo.shipping_type === 1 || orderInfo.shipping_type === 3) && orderInfo.product_type==0">
  120. <view class='name'>{{orderInfo.real_name}}<text class='phone'>{{orderInfo.user_phone}}</text></view>
  121. <view>{{orderInfo.user_address}}</view>
  122. </view>
  123. <view class='address' v-if="(orderInfo.shipping_type === 2 || orderInfo.shipping_type === 4) && orderInfo.product_type==0">
  124. <view class='name' @tap="makePhone">{{orderInfo.system_store.name}}<text
  125. class='phone'>{{orderInfo.system_store.phone}}</text><text
  126. class="iconfont icon-tonghua font-num"></text></view>
  127. <view>{{orderInfo.system_store.detailed_address}}</view>
  128. </view>
  129. <view class='line' v-if="orderInfo.shipping_type === 1">
  130. <image src='@/static/images/line.jpg'></image>
  131. </view>
  132. </view>
  133. <view class="delivery acea-row row-between-wrapper" v-if="orderInfo.delivery_type == 'city_delivery' || orderInfo.delivery_type == 'send'">
  134. <view class="text acea-row row-middle">
  135. <view class="pictrue">
  136. <image src="../static/delivery.png"></image>
  137. </view>
  138. <view class="info" v-if="orderInfo.delivery_id">
  139. <view class="name">{{orderInfo.delivery_name}}</view>
  140. <view class="phone">{{orderInfo.delivery_id}}</view>
  141. </view>
  142. <view class="name" v-else>系统派单中...</view>
  143. </view>
  144. <navigator :url="'/pages/goods/delivery_detail/index?orderId='+orderInfo.id" hover-class='none' class="details" >查看详情</navigator>
  145. </view>
  146. <orderGoods v-for="(item,index) in split" :key="item.id" :evaluate='item._status._type == 3 ? 3 : 0'
  147. :orderId="item.order_id" :cartInfo="item.cartInfo" :jump="false" :jumpDetail='true' :pid="item.pid"
  148. :split="true" :status_type="item._status._type" :index="index" :refund_status="item.refund_status"
  149. :delivery_type="item.delivery_type" @confirmOrder="confirmOrder" @openSubcribe="openSubcribe">
  150. </orderGoods>
  151. <orderGoods :evaluate='evaluate' :giveData="giveData" :deliveryType="orderInfo.shipping_type" :statusType="status.type"
  152. :sendType="orderInfo.delivery_type" :orderId="order_id" :oid="Number(orderInfo.id)" :cartInfo="cartInfo" :pid="pid" :jump="true" :refund_status="orderInfo.refund_status" :paid="Number(orderInfo.paid)" :productType="orderInfo.product_type" :giveCartInfo="giveCartInfo">
  153. </orderGoods>
  154. <!-- #ifdef H5 || APP-PLUS -->
  155. <div class="goodCall" @click="goGoodCall">
  156. <span class="iconfont icon-kefu"></span><span>联系客服</span>
  157. </div>
  158. <!-- #endif -->
  159. <!-- #ifdef MP -->
  160. <div class="goodCall" @click="goGoodCall" v-if='routineContact == 0'>
  161. <button hover-class='none'>
  162. <span class="iconfont icon-kefu"></span><span>联系客服</span>
  163. </button>
  164. </div>
  165. <div class="goodCall" v-else>
  166. <button hover-class='none' open-type='contact'>
  167. <span class="iconfont icon-kefu"></span><span>联系客服</span>
  168. </button>
  169. </div>
  170. <!-- #endif -->
  171. <view v-if="orderInfo.status!=0">
  172. <view class='wrapper' v-if='orderInfo.delivery_type=="fictitious" && orderInfo.product_type!=1'>
  173. <view class='item acea-row row-between'>
  174. <view>虚拟发货:</view>
  175. <view class='conter'>已发货,请注意查收</view>
  176. </view>
  177. <view class='item acea-row row-between' v-if="orderInfo.fictitious_content">
  178. <view>虚拟备注:</view>
  179. <view class='conter'>{{orderInfo.fictitious_content}}</view>
  180. </view>
  181. </view>
  182. <view class='wrapper' v-if="orderInfo.virtual_info && orderInfo.product_type==1">
  183. <view class='item acea-row row-between'>
  184. <view>卡密发货:</view>
  185. <view class='conter'>{{orderInfo.virtual_info}}</view>
  186. </view>
  187. <view class="item acea-row row-right">
  188. <view class="conter">
  189. <!-- #ifndef H5 -->
  190. <text class='copy' @tap='copyKm'>复制</text>
  191. <!-- #endif -->
  192. <!-- #ifdef H5 -->
  193. <text class='copy copy-data' :data-clipboard-text="orderInfo.virtual_info">复制</text>
  194. <!-- #endif -->
  195. </view>
  196. </view>
  197. </view>
  198. </view>
  199. <customForm :customForm="orderInfo.custom_form"></customForm>
  200. <view class='wrapper'>
  201. <view class='item acea-row row-between'>
  202. <view>订单编号:</view>
  203. <view class='conter on acea-row row-middle row-right'>
  204. <text>{{orderInfo.order_id}}</text>
  205. <!-- #ifndef H5 -->
  206. <text class='copy' @tap='copy'>复制</text>
  207. <!-- #endif -->
  208. <!-- #ifdef H5 -->
  209. <text class='copy copy-data' :data-clipboard-text="orderInfo.order_id">复制</text>
  210. <!-- #endif -->
  211. </view>
  212. </view>
  213. <view class='item acea-row row-between' v-if="orderInfo.refunded_price">
  214. <view>退款金额:</view>
  215. <view class='conter'>{{orderInfo.refunded_price}}</view>
  216. </view>
  217. <view class='item acea-row row-between'>
  218. <view>下单时间:</view>
  219. <view class='conter'>{{(orderInfo.add_time_y || '') +' '+(orderInfo.add_time_h || 0)}}</view>
  220. </view>
  221. <view class='item acea-row row-between'>
  222. <view>支付状态:</view>
  223. <view class='conter' v-if="orderInfo.paid">已支付</view>
  224. <view class='conter' v-else>未支付</view>
  225. </view>
  226. <view class='item acea-row row-between'>
  227. <view>支付方式:</view>
  228. <view class='conter'>{{orderInfo._status._payType}}</view>
  229. </view>
  230. <view class='item acea-row row-between' v-if="orderInfo.mark">
  231. <view v-if="!isGoodsReturn">买家备注:</view>
  232. <view v-else>退款留言:</view>
  233. <view class='conter'>{{orderInfo.mark}}</view>
  234. </view>
  235. <view class="item acea-row row-between" v-if="orderInfo.refund_goods_explain">
  236. <view>退货留言:</view>
  237. <view class='conter'>{{orderInfo.refund_goods_explain}}</view>
  238. </view>
  239. </view>
  240. <!-- 退款订单详情 -->
  241. <view class='wrapper' v-if="isGoodsReturn && orderInfo.product_type==0">
  242. <view class='item acea-row row-between'>
  243. <view>收货人:</view>
  244. <view class='conter'>{{orderInfo.real_name}}</view>
  245. </view>
  246. <view class='item acea-row row-between'>
  247. <view>联系电话:</view>
  248. <view class='conter'>{{orderInfo.user_phone}}</view>
  249. </view>
  250. <view v-if="this.orderInfo.shipping_type !== 2 && this.orderInfo.shipping_type !== 4" class='item acea-row row-between'>
  251. <view>收货地址:</view>
  252. <view class='conter'>{{orderInfo.user_address}}</view>
  253. </view>
  254. <view class="item acea-row row-between" v-if="orderInfo.refund_img && orderInfo.refund_img.length">
  255. <view>退款凭证:</view>
  256. <view class="conter">
  257. <view class="pictrue" v-for="(item,index) in orderInfo.refund_img">
  258. <image :src="item" mode="aspectFill" @click='getpreviewImage(index,1)'></image>
  259. </view>
  260. </view>
  261. </view>
  262. <view class="item acea-row row-between" v-if="orderInfo.refund_goods_img && orderInfo.refund_goods_img.length">
  263. <view>退货凭证:</view>
  264. <view class="conter">
  265. <view class="pictrue" v-for="(item,index) in orderInfo.refund_goods_img">
  266. <image :src="item" mode="aspectFill" @click='getpreviewImage(index,0)'></image>
  267. </view>
  268. </view>
  269. </view>
  270. </view>
  271. <view v-if="orderInfo.status!=0">
  272. <view class='wrapper' v-if='orderInfo.delivery_type=="express"'>
  273. <view class='item acea-row row-between'>
  274. <view>配送方式:</view>
  275. <view class='conter'>发货</view>
  276. </view>
  277. <view class='item acea-row row-between'>
  278. <view>快递公司:</view>
  279. <view class='conter'>{{orderInfo.delivery_name || ''}}</view>
  280. </view>
  281. <view class='item acea-row row-between'>
  282. <view>快递号:</view>
  283. <view class='conter'>{{orderInfo.delivery_id || ''}}</view>
  284. </view>
  285. </view>
  286. <view class='wrapper' v-else-if='orderInfo.delivery_type=="send"'>
  287. <view class='item acea-row row-between'>
  288. <view>配送方式:</view>
  289. <view class='conter'>送货</view>
  290. </view>
  291. <view class='item acea-row row-between'>
  292. <view>配送人姓名:</view>
  293. <view class='conter'>{{orderInfo.delivery_name || ''}}</view>
  294. </view>
  295. <view class='item acea-row row-between'>
  296. <view>联系电话:</view>
  297. <view class='conter acea-row row-middle row-right'>{{orderInfo.delivery_id || ''}}<text
  298. class='copy' @tap='goTel'>拨打</text></view>
  299. </view>
  300. </view>
  301. </view>
  302. <view class='wrapper'>
  303. <view class='item acea-row row-between'>
  304. <view>商品总价:</view>
  305. <view class='conter'>
  306. ¥{{(parseFloat(orderInfo.total_price)+parseFloat(orderInfo.vip_true_price)).toFixed(2)}}</view>
  307. </view>
  308. <view class='item acea-row row-between' v-if="orderInfo.pay_postage > 0">
  309. <view>配送运费:</view>
  310. <view class='conter'>¥{{parseFloat(orderInfo.pay_postage).toFixed(2)}}</view>
  311. </view>
  312. <view v-if="orderInfo.vip_true_price > 0" class='item acea-row row-between'>
  313. <view>会员商品优惠:</view>
  314. <view class='conter'>-¥{{parseFloat(orderInfo.vip_true_price).toFixed(2)}}</view>
  315. </view>
  316. <!-- <view v-if="orderInfo.vip_true_price" class='item acea-row row-between'>
  317. <view>会员运费优惠:</view>
  318. <view class='conter'>-¥{{parseFloat(orderInfo.vip_true_price).toFixed(2)}}</view>
  319. </view> -->
  320. <view class='item acea-row row-between' v-if='orderInfo.coupon_id'>
  321. <view>优惠券抵扣:</view>
  322. <view class='conter'>-¥{{parseFloat(orderInfo.coupon_price).toFixed(2)}}</view>
  323. </view>
  324. <view class='item acea-row row-between' v-if="orderInfo.use_integral > 0">
  325. <view>积分抵扣:</view>
  326. <view class='conter'>-¥{{parseFloat(orderInfo.deduction_price).toFixed(2)}}</view>
  327. </view>
  328. <view class='item acea-row row-between' v-for="(item,index) in orderInfo.promotions_detail" :key="index" v-if="parseFloat(item.promotions_price)">
  329. <view>{{item.title}}:</view>
  330. <view class='conter'>-¥{{parseFloat(item.promotions_price).toFixed(2)}}</view>
  331. </view>
  332. <view class='actualPay acea-row row-right'>实付款:<text
  333. class='money font-color'>¥{{parseFloat(orderInfo.pay_price).toFixed(2)}}</text></view>
  334. </view>
  335. <view style='height:120rpx;'></view>
  336. <view class='footer acea-row row-right row-middle'
  337. v-if="isGoodsReturn==false || status.type == 9 || orderInfo.refund_type || orderInfo.is_apply_refund">
  338. <view class="more" v-if="(invoice_func || invoiceData) && orderInfo.paid && !orderInfo.refund_status"
  339. @click="more">更多<span class='iconfont icon-xiangshang'></span></view>
  340. <view class="more-box" v-if="moreBtn">
  341. <view class="more-btn" v-if="invoice_func && !invoiceData" @click="invoiceApply">申请开票</view>
  342. <view class="more-btn" v-if="invoiceData" @click="aleartStatusChange">查看发票</view>
  343. </view>
  344. <view class="qs-btn" v-if="status.type == 0 || status.type == -9" @click.stop="cancelOrder">取消订单</view>
  345. <view class='bnt bg-color' v-if="status.type==0" @tap='pay_open(orderInfo.order_id)'>立即付款</view>
  346. <view
  347. @click="openSubcribe(`/pages/goods/${cartInfo.length > 1 ? 'goods_return_list' : 'goods_return'}/index?orderId=`+orderInfo.order_id+ '&id=' + orderInfo.id)"
  348. class='bnt cancel' v-else-if="orderInfo.is_apply_refund && orderInfo.refund_status == 0 && cartInfo.length>1">
  349. 批量退款</view>
  350. <!-- #ifdef MP -->
  351. <!-- <view
  352. @tap="openSubcribe(`/pages/users/${orderInfo.total_num > 1 ? 'goods_return_list' : 'goods_return'}/index?orderId=`+orderInfo.order_id+ '&id=' + orderInfo.id)"
  353. class='bnt cancel' v-else-if="orderInfo.is_apply_refund && orderInfo.refund_status == 0">
  354. 申请退款</view> -->
  355. <!-- #endif -->
  356. <!-- #ifndef MP -->
  357. <!-- <navigator hover-class="none"
  358. :url="`/pages/users/${orderInfo.total_num > 1 ? 'goods_return_list' : 'goods_return'}/index?orderId=`+ orderInfo.order_id + '&id=' + orderInfo.id"
  359. class='bnt cancel' v-else-if="orderInfo.is_apply_refund && orderInfo.refund_status == 0">
  360. 申请退款
  361. </navigator> -->
  362. <!-- #endif -->
  363. <!-- <navigator hover-class="none" :url="'/pages/goods/goods_return/index?orderId='+orderInfo.order_id"
  364. class='bnt cancel' v-if="orderInfo.refund_type== 3">重新申请
  365. </navigator> -->
  366. <navigator class='bnt cancel'
  367. v-if="orderInfo.delivery_type == 'express' && status.class_status==3 && status.type==2 && !split.length"
  368. hover-class='none' :url="'/pages/goods/goods_logistics/index?orderId='+ orderInfo.order_id">查看物流
  369. </navigator>
  370. <view class='bnt bg-color' v-if="orderInfo.type==3 && orderInfo.paid && orderInfo.refund_status==0" @tap='goJoinPink'>查看拼团</view>
  371. <view class='bnt bg-color' v-if="status.class_status==3 && !split.length" @click='confirmOrder()'>确认收货
  372. </view>
  373. <view class='bnt cancel' v-if="status.type==4 && !split.length ||status.type==-2" @tap='delOrder'>删除订单
  374. </view>
  375. <view class='bnt bg-color' v-if="status.class_status==5" @tap='goOrderConfirm'>再次购买
  376. </view>
  377. <view class='bnt bg-color refundBnt'
  378. v-if="[1,2,4].includes(orderInfo.refund_type) && !orderInfo.is_cancel" @tap='cancelRefundOrder'>取消申请
  379. </view>
  380. <view class='bnt bg-color refundBnt' v-if="orderInfo.refund_type== 4" @tap='refundInput'>填写退货信息</view>
  381. <navigator class='bnt cancel refundBnt' v-if="orderInfo.refund_type == 5" hover-class='none'
  382. :url="'/pages/goods/goods_logistics/index?orderId='+ orderInfo.order_id + '&type=refund'">查看退货物流
  383. </navigator>
  384. </view>
  385. </view>
  386. <home v-show="!aleartStatus && !invShow && navigation"></home>
  387. <view class="mask" v-if="refund_close" @click="refund_close = false"></view>
  388. <payment :payMode='payMode' :pay_close="pay_close" @onChangeFun='onChangeFun' :order_id="pay_order_id"
  389. :totalPrice='totalPrice'></payment>
  390. <invoiceModal :aleartStatus="aleartStatus" :invoiceData="invoiceData" @close="aleartStatus=false">
  391. </invoiceModal>
  392. <view class="mask invoice-mask" v-if="aleartStatus" @click="aleartStatus = false"></view>
  393. <view class="mask more-mask" v-if="moreBtn" @click="moreBtn = false"></view>
  394. <invoice-picker :inv-show="invShow" :is-special="special_invoice" :inv-checked="invChecked" :order-id='order_id'
  395. :inv-list="invList" :is-order="1" @inv-close="invClose" @inv-change="invSub" @inv-cancel="invCancel">
  396. </invoice-picker>
  397. <!-- #ifdef MP -->
  398. <authorize v-if="isShowAuth" @authColse="authColse" @onLoadFun="onLoadFun"></authorize>
  399. <!-- #endif -->
  400. </view>
  401. </template>
  402. <style scoped lang="scss">
  403. .delivery{
  404. width: 100%;
  405. height: 140rpx;
  406. background-color: #fff;
  407. padding: 0 30rpx;
  408. margin-top: 12rpx;
  409. .text{
  410. .info{
  411. margin-left: 30rpx;
  412. .name{
  413. font-weight: 400;
  414. margin-left: 0;
  415. }
  416. .phone{
  417. font-size: 26rpx;
  418. font-weight: 400;
  419. color: #333333;
  420. margin-top: 8rpx;
  421. }
  422. }
  423. .name{
  424. width: 420rpx;
  425. margin-left: 30rpx;
  426. font-size: 28rpx;
  427. font-weight: 500;
  428. color: #333333;
  429. }
  430. .pictrue{
  431. width: 80rpx;
  432. height: 80rpx;
  433. image{
  434. width: 100%;
  435. height: 100%;
  436. }
  437. }
  438. }
  439. .details{
  440. font-size: 24rpx;
  441. font-weight: 400;
  442. color: var(--view-theme);
  443. }
  444. }
  445. .refund-tip {
  446. font-size: 24rpx;
  447. margin-top: 10rpx;
  448. color: var(--view-theme);
  449. .iconfont {
  450. font-size: 24rpx;
  451. margin-right: 6rpx;
  452. }
  453. }
  454. .qs-btn {
  455. width: auto;
  456. height: 60rpx;
  457. text-align: center;
  458. line-height: 60rpx;
  459. border-radius: 50rpx;
  460. font-size: 27rpx;
  461. padding: 0 3%;
  462. color: #666;
  463. border: 1px solid #ccc;
  464. margin-right: 20rpx;
  465. }
  466. .refund-input {
  467. position: fixed;
  468. bottom: 0;
  469. left: 0;
  470. width: 100%;
  471. border-radius: 16rpx 16rpx 0 0;
  472. background-color: #fff;
  473. z-index: 99;
  474. padding: 40rpx 0 70rpx 0;
  475. transition: all 0.3s cubic-bezier(0.25, 0.5, 0.5, 0.9);
  476. transform: translate3d(0, 100%, 0);
  477. .refund-input-title {
  478. font-size: 32rpx;
  479. margin-bottom: 60rpx;
  480. color: #282828;
  481. }
  482. .refund-input-sty {
  483. border: 1px solid #ddd;
  484. padding: 20rpx 20rpx;
  485. border-radius: 40rpx;
  486. width: 100%;
  487. margin: 20rpx 65rpx;
  488. }
  489. .input-msg {
  490. display: flex;
  491. flex-direction: column;
  492. justify-content: center;
  493. align-items: center;
  494. position: relative;
  495. margin: 0 65rpx;
  496. .iconfont {
  497. position: absolute;
  498. font-size: 32rpx;
  499. color: #282828;
  500. top: 8rpx;
  501. right: -30rpx;
  502. }
  503. }
  504. .refund-bth {
  505. display: flex;
  506. margin: 0 65rpx;
  507. margin-top: 20rpx;
  508. justify-content: space-around;
  509. width: 100%;
  510. .close-refund {
  511. padding: 24rpx 80rpx;
  512. border-radius: 80rpx;
  513. color: #fff;
  514. background-color: #ccc;
  515. }
  516. .submit-refund {
  517. width: 100%;
  518. padding: 24rpx 0rpx;
  519. text-align: center;
  520. border-radius: 80rpx;
  521. color: #fff;
  522. background-color: var(--view-theme);
  523. }
  524. }
  525. }
  526. .refund-input.on {
  527. transform: translate3d(0, 0, 0);
  528. }
  529. .goodCall {
  530. color: var(--view-theme);
  531. text-align: center;
  532. width: 100%;
  533. height: 86rpx;
  534. padding: 0 30rpx;
  535. border-bottom: 1rpx solid #eee;
  536. font-size: 30rpx;
  537. line-height: 86rpx;
  538. background: #fff;
  539. .icon-kefu {
  540. font-size: 36rpx;
  541. margin-right: 15rpx;
  542. }
  543. /* #ifdef MP */
  544. button {
  545. display: flex;
  546. align-items: center;
  547. justify-content: center;
  548. height: 86rpx;
  549. font-size: 30rpx;
  550. color: var(--view-theme);
  551. }
  552. /* #endif */
  553. }
  554. .order-details .header {
  555. padding: 0 30rpx;
  556. height: 150rpx;
  557. display: flex;
  558. align-items: center;
  559. flex-wrap: nowrap;
  560. }
  561. .order-details .header.on {
  562. background-color: #666 !important;
  563. }
  564. .order-details .header .pictrue {
  565. width: 110rpx;
  566. height: 110rpx;
  567. }
  568. .order-details .header .pictrue image {
  569. width: 100%;
  570. height: 100%;
  571. }
  572. .order-details .header .data {
  573. color: rgba(255, 255, 255, 0.8);
  574. font-size: 24rpx;
  575. margin-left: 27rpx;
  576. }
  577. .order-details .header .data.on {
  578. margin-left: 0;
  579. }
  580. .order-details .header .data .state {
  581. font-size: 30rpx;
  582. font-weight: bold;
  583. color: #fff;
  584. margin-bottom: 7rpx;
  585. }
  586. .order-details .header .data .time {
  587. margin-left: 20rpx;
  588. }
  589. .order-details .nav {
  590. background-color: #fff;
  591. font-size: 26rpx;
  592. color: #282828;
  593. padding: 25rpx 0;
  594. }
  595. .order-details .nav .navCon {
  596. padding: 0 40rpx;
  597. }
  598. .order-details .nav .on {
  599. color: var(--view-theme);
  600. }
  601. .order-details .nav .progress {
  602. padding: 0 65rpx;
  603. margin-top: 10rpx;
  604. }
  605. .order-details .nav .progress .line {
  606. width: 100rpx;
  607. height: 2rpx;
  608. background-color: #939390;
  609. }
  610. .order-details .nav .progress .iconfont {
  611. font-size: 25rpx;
  612. color: #939390;
  613. margin-top: -2rpx;
  614. }
  615. .order-details .address {
  616. font-size: 26rpx;
  617. color: #868686;
  618. background-color: #fff;
  619. margin-top: 13rpx;
  620. padding: 35rpx 30rpx;
  621. }
  622. .order-details .address .name {
  623. font-size: 30rpx;
  624. color: #282828;
  625. margin-bottom: 15rpx;
  626. }
  627. .order-details .address .name .phone {
  628. margin-left: 40rpx;
  629. }
  630. .order-details .line {
  631. width: 100%;
  632. height: 3rpx;
  633. }
  634. .order-details .line image {
  635. width: 100%;
  636. height: 100%;
  637. display: block;
  638. }
  639. .order-details .wrapper {
  640. background-color: #fff;
  641. margin-top: 12rpx;
  642. padding: 30rpx;
  643. }
  644. .order-details .wrapper .item {
  645. font-size: 28rpx;
  646. color: #282828;
  647. }
  648. .order-details .wrapper .item~.item {
  649. margin-top: 20rpx;
  650. white-space: normal;
  651. word-break: break-all;
  652. word-wrap: break-word;
  653. }
  654. .order-details .wrapper .item .conter {
  655. color: #868686;
  656. width: 460rpx;
  657. display: flex;
  658. flex-wrap: nowrap;
  659. justify-content: flex-end;
  660. text-align: right;
  661. &.on{
  662. width: 500rpx;
  663. }
  664. .pictrue{
  665. width: 80rpx;
  666. height: 80rpx;
  667. margin-left: 6rpx;
  668. image{
  669. width: 100%;
  670. height: 100%;
  671. border-radius: 6rpx;
  672. }
  673. }
  674. }
  675. .order-details .wrapper .item .conter .copy {
  676. font-size: 20rpx;
  677. color: #333;
  678. border-radius: 3rpx;
  679. border: 1rpx solid #666;
  680. padding: 3rpx 15rpx;
  681. margin-left: 24rpx;
  682. white-space: nowrap;
  683. }
  684. .order-details .wrapper .actualPay {
  685. border-top: 1rpx solid #eee;
  686. margin-top: 30rpx;
  687. padding-top: 30rpx;
  688. }
  689. .order-details .wrapper .actualPay .money {
  690. font-weight: bold;
  691. font-size: 30rpx;
  692. }
  693. .order-details .footer {
  694. width: 100%;
  695. height: 100rpx;
  696. position: fixed;
  697. bottom: 0;
  698. left: 0;
  699. background-color: #fff;
  700. padding: 0 30rpx;
  701. box-sizing: border-box;
  702. border-top: 1px solid #eee;
  703. .more {
  704. position: absolute;
  705. left: 30rpx;
  706. font-size: 26rpx;
  707. color: #333;
  708. .icon-xiangshang {
  709. margin-left: 6rpx;
  710. font-size: 22rpx;
  711. }
  712. }
  713. .more-box {
  714. color: #333;
  715. position: absolute;
  716. left: 30rpx;
  717. bottom: 110rpx;
  718. background-color: #fff;
  719. padding: 18rpx 24rpx;
  720. border-radius: 4rpx;
  721. font-size: 28rpx;
  722. -webkit-box-shadow: 0px 0px 3px 0px rgba(200, 200, 200, 0.75);
  723. -moz-box-shadow: 0px 0px 3px 0px rgba(200, 200, 200, 0.75);
  724. box-shadow: 0px 0px 3px 0px rgba(200, 200, 200, 0.75);
  725. .more-btn {
  726. color: #333;
  727. padding: 4rpx;
  728. z-index: 9999;
  729. }
  730. }
  731. .more-box:before {
  732. content: "";
  733. width: 0rpx;
  734. height: 0rpx;
  735. border-top: 10rpx solid #fff;
  736. border-bottom: 10rpx solid transparent;
  737. border-left: 10rpx solid #fff;
  738. position: absolute;
  739. bottom: -10rpx;
  740. left: 0px;
  741. }
  742. }
  743. .order-details .footer .bnt {
  744. width: 176rpx;
  745. height: 60rpx;
  746. text-align: center;
  747. line-height: 60rpx;
  748. border-radius: 50rpx;
  749. color: #fff;
  750. font-size: 27rpx;
  751. }
  752. .order-details .footer .bnt.refundBnt {
  753. width: 210rpx;
  754. }
  755. .order-details .footer .bnt.cancel {
  756. color: #666;
  757. border: 1rpx solid #ccc;
  758. }
  759. .order-details .footer .bnt~.bnt {
  760. margin-left: 18rpx;
  761. }
  762. .order-details .writeOff {
  763. background-color: #fff;
  764. margin-top: 13rpx;
  765. padding-bottom: 30rpx;
  766. }
  767. .order-details .writeOff .title {
  768. font-size: 30rpx;
  769. color: #282828;
  770. height: 87rpx;
  771. border-bottom: 1px solid #f0f0f0;
  772. padding: 0 30rpx;
  773. line-height: 87rpx;
  774. }
  775. .order-details .writeOff .grayBg {
  776. background-color: #f2f5f7;
  777. width: 590rpx;
  778. height: 384rpx;
  779. border-radius: 20rpx 20rpx 0 0;
  780. margin: 50rpx auto 0 auto;
  781. padding-top: 55rpx;
  782. position: relative;
  783. }
  784. .order-details .writeOff .grayBg .written {
  785. position: absolute;
  786. top: 0;
  787. right: 0;
  788. width: 60rpx;
  789. height: 60rpx;
  790. }
  791. .order-details .writeOff .grayBg .written image {
  792. width: 100%;
  793. height: 100%;
  794. }
  795. .order-details .writeOff .grayBg .pictrue {
  796. width: 290rpx;
  797. height: 290rpx;
  798. margin: 0 auto;
  799. }
  800. .order-details .writeOff .grayBg .pictrue image {
  801. width: 100%;
  802. height: 100%;
  803. display: block;
  804. }
  805. .order-details .writeOff .gear {
  806. width: 590rpx;
  807. height: 30rpx;
  808. margin: 0 auto;
  809. }
  810. .order-details .writeOff .gear image {
  811. width: 100%;
  812. height: 100%;
  813. display: block;
  814. }
  815. .order-details .writeOff .num {
  816. background-color: #f0c34c;
  817. width: 590rpx;
  818. height: 84rpx;
  819. color: #282828;
  820. font-size: 48rpx;
  821. margin: 0 auto;
  822. border-radius: 0 0 20rpx 20rpx;
  823. text-align: center;
  824. padding-top: 4rpx;
  825. }
  826. .order-details .writeOff .rules {
  827. margin: 46rpx 30rpx 0 30rpx;
  828. border-top: 1px solid #f0f0f0;
  829. padding-top: 10rpx;
  830. }
  831. .order-details .writeOff .rules .item {
  832. margin-top: 20rpx;
  833. }
  834. .order-details .writeOff .rules .item .rulesTitle {
  835. font-size: 28rpx;
  836. color: #282828;
  837. }
  838. .order-details .writeOff .rules .item .rulesTitle .iconfont {
  839. font-size: 30rpx;
  840. color: #333;
  841. margin-right: 8rpx;
  842. margin-top: 5rpx;
  843. }
  844. .order-details .writeOff .rules .item .info {
  845. font-size: 28rpx;
  846. color: #999;
  847. margin-top: 7rpx;
  848. }
  849. .order-details .writeOff .rules .item .info .time {
  850. margin-left: 20rpx;
  851. }
  852. .order-details .map {
  853. height: 86rpx;
  854. font-size: 30rpx;
  855. color: #282828;
  856. line-height: 86rpx;
  857. border-bottom: 1px solid #f0f0f0;
  858. margin-top: 13rpx;
  859. background-color: #fff;
  860. padding: 0 30rpx;
  861. }
  862. .order-details .map .place {
  863. font-size: 26rpx;
  864. width: 176rpx;
  865. height: 50rpx;
  866. border-radius: 25rpx;
  867. line-height: 50rpx;
  868. text-align: center;
  869. }
  870. .order-details .map .place .iconfont {
  871. font-size: 27rpx;
  872. height: 27rpx;
  873. line-height: 27rpx;
  874. margin: 2rpx 3rpx 0 0;
  875. }
  876. .order-details .address .name .iconfont {
  877. font-size: 34rpx;
  878. margin-left: 10rpx;
  879. }
  880. .refund {
  881. padding: 0 30rpx 30rpx;
  882. margin-top: 12rpx;
  883. background-color: #fff;
  884. .title {
  885. display: flex;
  886. align-items: center;
  887. font-size: 30rpx;
  888. color: #333;
  889. height: 86rpx;
  890. border-bottom: 1px solid #f5f5f5;
  891. image {
  892. width: 32rpx;
  893. height: 32rpx;
  894. margin-right: 10rpx;
  895. }
  896. }
  897. .con {
  898. padding-top: 25rpx;
  899. font-size: 28rpx;
  900. color: #868686;
  901. }
  902. }
  903. </style>
  904. <script>
  905. import {
  906. getOrderDetail,
  907. getRefundOrderDetail,
  908. orderAgain,
  909. orderTake,
  910. orderDel,
  911. refundOrderDel,
  912. orderCancel,
  913. refundExpress,
  914. cancelRefundOrder
  915. } from '@/api/order.js';
  916. import {
  917. openOrderRefundSubscribe
  918. } from '@/utils/SubscribeMessage.js';
  919. import {
  920. getUserInfo,
  921. invoiceList,
  922. makeUpinvoice
  923. } from '@/api/user.js';
  924. import home from '@/components/home';
  925. import payment from '@/components/payment';
  926. import orderGoods from "@/components/orderGoods";
  927. import customForm from "@/components/customForm";
  928. import ClipboardJS from "@/plugin/clipboard/clipboard.js";
  929. import {
  930. toLogin
  931. } from '@/libs/login.js';
  932. import {
  933. mapGetters
  934. } from "vuex";
  935. import colors from "@/mixins/color";
  936. import invoicePicker from '../components/invoicePicker';
  937. import invoiceModal from '../components/invoiceModal/index.vue'
  938. export default {
  939. components: {
  940. payment,
  941. home,
  942. invoicePicker,
  943. invoiceModal,
  944. orderGoods,
  945. customForm
  946. },
  947. mixins: [colors],
  948. data() {
  949. return {
  950. giveData:{
  951. give_integral:0,
  952. give_coupon:[]
  953. },
  954. giveCartInfo:[],
  955. config: {
  956. qrc: {
  957. code: "",
  958. size: 300, // 二维码大小
  959. level: 4, //等级 0~4
  960. bgColor: '#FFFFFF', //二维码背景色 默认白色
  961. border: {
  962. color: ['#eee', '#eee'], //边框颜色支持渐变色
  963. lineWidth: 3, //边框宽度
  964. },
  965. color: ['#333', '#333'], //边框颜色支持渐变色
  966. }
  967. },
  968. order_id: '',
  969. evaluate: 0,
  970. cartInfo: [], //购物车产品
  971. pid: 0, //上级订单ID
  972. split: [], //分单商品
  973. orderInfo: {
  974. system_store: {},
  975. _status: {}
  976. }, //订单详情
  977. system_store: {},
  978. isGoodsReturn: false, //是否为退款订单
  979. status: {}, //订单底部按钮状态
  980. refund_close: false,
  981. isClose: false,
  982. payMode: [{
  983. name: "微信支付",
  984. icon: "icon-weixinzhifu",
  985. value: 'weixin',
  986. title: '使用微信快捷支付',
  987. payStatus: true,
  988. },
  989. // #ifdef H5 || APP-PLUS
  990. {
  991. name: '支付宝支付',
  992. icon: 'icon-zhifubao',
  993. value: 'alipay',
  994. title: '使用线上支付宝支付',
  995. payStatus: true
  996. },
  997. // #endif
  998. {
  999. name: "余额支付",
  1000. icon: "icon-yuezhifu",
  1001. value: 'yue',
  1002. title: '当前可用余额:',
  1003. number: 0,
  1004. payStatus: true
  1005. },
  1006. ],
  1007. pay_close: false,
  1008. pay_order_id: '',
  1009. totalPrice: '0',
  1010. isAuto: false, //没有授权的不会自动授权
  1011. isShowAuth: false, //是否隐藏授权
  1012. routineContact: 0,
  1013. express_num: '',
  1014. invoice_func: false,
  1015. invoiceData: {},
  1016. invoice_id: 0,
  1017. invChecked: '',
  1018. moreBtn: false,
  1019. invShow: false,
  1020. aleartStatus: false, //发票弹窗
  1021. special_invoice: false,
  1022. invList: [],
  1023. userInfo: {},
  1024. isReturen: ''
  1025. };
  1026. },
  1027. computed: mapGetters(['isLogin']),
  1028. onLoad: function(options) {
  1029. if (options.order_id) {
  1030. this.$set(this, 'order_id', options.order_id);
  1031. this.isReturen = options.isReturen;
  1032. }
  1033. if (options.invoice_id) {
  1034. this.invoice_id = options.invoice_id
  1035. }
  1036. },
  1037. onShow() {
  1038. uni.removeStorageSync('form_type_cart');
  1039. if (this.isLogin) {
  1040. this.getOrderInfo();
  1041. this.getUserInfo();
  1042. } else {
  1043. //#ifndef MP
  1044. toLogin();
  1045. //#endif
  1046. //#ifdef MP
  1047. this.isShowAuth = true;
  1048. //#endif
  1049. }
  1050. },
  1051. onHide: function() {
  1052. this.isClose = true;
  1053. },
  1054. onReady: function() {
  1055. // #ifdef H5
  1056. this.$nextTick(function() {
  1057. const clipboard = new ClipboardJS(".copy-data");
  1058. clipboard.on("success", () => {
  1059. this.$util.Tips({
  1060. title: '复制成功'
  1061. });
  1062. });
  1063. const address = new ClipboardJS(".copy-refund-msg");
  1064. address.on("success", () => {
  1065. this.$util.Tips({
  1066. title: '复制成功'
  1067. });
  1068. });
  1069. });
  1070. // #endif
  1071. },
  1072. methods: {
  1073. onLoadFun(){
  1074. this.getOrderInfo();
  1075. this.getUserInfo();
  1076. this.isShowAuth = false
  1077. },
  1078. // 授权关闭
  1079. authColse: function(e) {
  1080. this.isShowAuth = e
  1081. },
  1082. getpreviewImage: function(index,num) {
  1083. uni.previewImage({
  1084. urls: num?this.orderInfo.refund_img:this.orderInfo.refund_goods_img,
  1085. current: num?this.orderInfo.refund_img[index]:this.orderInfo.refund_goods_img[index]
  1086. });
  1087. },
  1088. cancelRefundOrder(orderId) {
  1089. let that = this;
  1090. uni.showModal({
  1091. title: '取消申请',
  1092. content: '您确认放弃此次申请吗?',
  1093. success: (res) => {
  1094. if (res.confirm) {
  1095. cancelRefundOrder(that.order_id).then(res => {
  1096. return that.$util.Tips({
  1097. title: '操作成功',
  1098. icon: 'success'
  1099. }, {
  1100. tab: 4,
  1101. url: '/pages/users/user_return_list/index'
  1102. });
  1103. }).catch(err => {
  1104. return that.$util.Tips({
  1105. title: err
  1106. });
  1107. })
  1108. }
  1109. }
  1110. })
  1111. },
  1112. refundInput() {
  1113. uni.navigateTo({
  1114. url: `/pages/goods/order_refund_goods/index?orderId=` + this.order_id
  1115. })
  1116. },
  1117. goGoodCall() {
  1118. let url = `/pages/extension/customer_list/chat?orderId=${this.order_id}&isReturen=${this.isReturen}`
  1119. this.$util.getCustomer(this.userInfo,url)
  1120. },
  1121. openSubcribe: function(e) {
  1122. let page = e;
  1123. // #ifdef MP
  1124. uni.showLoading({
  1125. title: '正在加载',
  1126. })
  1127. openOrderRefundSubscribe().then(res => {
  1128. uni.hideLoading();
  1129. uni.navigateTo({
  1130. url: page,
  1131. });
  1132. }).catch(() => {
  1133. uni.hideLoading();
  1134. });
  1135. // #endif
  1136. // #ifndef MP
  1137. uni.navigateTo({
  1138. url: page
  1139. })
  1140. // #endif
  1141. },
  1142. /**
  1143. * 事件回调
  1144. *
  1145. */
  1146. onChangeFun: function(e) {
  1147. let opt = e;
  1148. let action = opt.action || null;
  1149. let value = opt.value != undefined ? opt.value : null;
  1150. (action && this[action]) && this[action](value);
  1151. },
  1152. /**
  1153. * 拨打电话
  1154. */
  1155. makePhone: function() {
  1156. uni.makePhoneCall({
  1157. phoneNumber: this.system_store.phone
  1158. })
  1159. },
  1160. /**
  1161. * 打开地图
  1162. *
  1163. */
  1164. showMaoLocation: function() {
  1165. if (!this.system_store.latitude || !this.system_store.longitude) return this.$util.Tips({
  1166. title: '缺少经纬度信息无法查看地图!'
  1167. });
  1168. uni.openLocation({
  1169. latitude: parseFloat(this.system_store.latitude),
  1170. longitude: parseFloat(this.system_store.longitude),
  1171. scale: 8,
  1172. name: this.system_store.name,
  1173. address: this.system_store.address + this.system_store.detailed_address,
  1174. success: function() {
  1175. },
  1176. });
  1177. },
  1178. /**
  1179. * 关闭支付组件
  1180. *
  1181. */
  1182. payClose: function() {
  1183. this.pay_close = false;
  1184. },
  1185. /**
  1186. * 打开支付组件
  1187. *
  1188. */
  1189. pay_open: function() {
  1190. this.pay_close = true;
  1191. this.pay_order_id = this.orderInfo.order_id;
  1192. this.totalPrice = this.orderInfo.pay_price;
  1193. },
  1194. /**
  1195. * 支付成功回调
  1196. *
  1197. */
  1198. pay_complete: function() {
  1199. this.pay_close = false;
  1200. this.pay_order_id = '';
  1201. uni.navigateTo({
  1202. url: '/pages/goods/order_pay_status/index?order_id=' + this.orderInfo.order_id + '&msg=' +
  1203. '支付成功' +
  1204. '&type=3' + '&totalPrice=' + this.totalPrice
  1205. })
  1206. this.getOrderInfo();
  1207. },
  1208. /**
  1209. * 支付失败回调
  1210. *
  1211. */
  1212. pay_fail: function() {
  1213. this.pay_close = false;
  1214. this.pay_order_id = '';
  1215. },
  1216. /**
  1217. * 获取用户信息
  1218. *
  1219. */
  1220. getUserInfo: function() {
  1221. let that = this;
  1222. getUserInfo().then(res => {
  1223. that.userInfo = res.data
  1224. // #ifdef H5 || APP-PLUS
  1225. that.payMode[2].number = res.data.now_money;
  1226. // #endif
  1227. // #ifdef MP
  1228. that.payMode[1].number = res.data.now_money;
  1229. // #endif
  1230. that.$set(that, 'payMode', that.payMode);
  1231. })
  1232. },
  1233. /**
  1234. * 获取订单详细信息
  1235. *
  1236. */
  1237. getOrderInfo: function() {
  1238. let that = this;
  1239. uni.showLoading({
  1240. title: "正在加载中"
  1241. });
  1242. let obj = '';
  1243. if (that.isReturen) {
  1244. obj = getRefundOrderDetail(this.order_id);
  1245. } else {
  1246. obj = getOrderDetail(this.order_id);
  1247. }
  1248. obj.then(res => {
  1249. let _type = res.data._status._type;
  1250. uni.hideLoading();
  1251. that.giveData.give_coupon = res.data.give_coupon;
  1252. that.giveData.give_integral = res.data.give_integral;
  1253. that.$set(that, 'orderInfo', res.data);
  1254. that.$set(that, 'pid', res.data.pid);
  1255. that.$set(that, 'split', res.data.split);
  1256. that.$set(that, 'evaluate', _type == 3 ? 3 : 0);
  1257. that.$set(that, 'system_store', res.data.system_store);
  1258. that.$set(that, 'invoiceData', res.data.invoice);
  1259. if (that.invoiceData) {
  1260. that.invoiceData.pay_price = res.data.pay_price;
  1261. }
  1262. that.$set(that, 'invoice_func', res.data.invoice_func);
  1263. that.$set(that, 'special_invoice', res.data.special_invoice);
  1264. that.$set(that, 'routineContact', Number(res.data.routine_contact_type));
  1265. let cartInfo = res.data.cartInfo;
  1266. let cartObj = [],giftObj = [];
  1267. cartInfo.forEach(item=>{
  1268. if(item.is_gift == 1){
  1269. giftObj.push(item)
  1270. }else{
  1271. cartObj.push(item)
  1272. }
  1273. })
  1274. that.$set(that, 'cartInfo', cartObj);
  1275. that.$set(that, 'giveCartInfo', giftObj);
  1276. this.$nextTick(function() {
  1277. that.config.qrc.code = that.orderInfo.verify_code
  1278. })
  1279. if (this.orderInfo.refund_status != 0) {
  1280. this.isGoodsReturn = true;
  1281. }else{
  1282. this.isReturen = 0
  1283. }
  1284. if (that.invoice_id && !that.invoiceData) {
  1285. that.invChecked = that.invoice_id || '';
  1286. this.invoiceApply()
  1287. }
  1288. that.payMode.map(item => {
  1289. if (item.value == 'weixin') {
  1290. item.payStatus = res.data.pay_weixin_open ? true : false;
  1291. }
  1292. if (item.value == 'alipay') {
  1293. item.payStatus = res.data.ali_pay_status ? true : false;
  1294. }
  1295. if (item.value == 'yue') {
  1296. item.payStatus = res.data.yue_pay_status == 1 ? true : false;
  1297. }
  1298. });
  1299. that.getOrderStatus();
  1300. }).catch(err => {
  1301. uni.hideLoading();
  1302. if(err.status == 403){
  1303. uni.navigateTo({
  1304. url: '/pages/goods/order_list/index'
  1305. })
  1306. }else{
  1307. that.$util.Tips({
  1308. title: err
  1309. }, '/pages/goods/order_list/index');
  1310. }
  1311. });
  1312. },
  1313. // 不开发票
  1314. invCancel() {
  1315. this.invChecked = '';
  1316. this.invTitle = '不开发票';
  1317. this.invShow = false;
  1318. },
  1319. // 选择发票
  1320. invSub(id) {
  1321. this.invChecked = id;
  1322. let data = {
  1323. order_id: this.order_id,
  1324. invoice_id: this.invChecked
  1325. }
  1326. makeUpinvoice(data).then(res => {
  1327. uni.showToast({
  1328. title: '申请成功',
  1329. icon: 'success'
  1330. });
  1331. this.invShow = false;
  1332. this.aleartStatus = true;
  1333. this.getOrderInfo()
  1334. }).catch(err => {
  1335. uni.showToast({
  1336. title: err,
  1337. icon: 'none'
  1338. });
  1339. });
  1340. },
  1341. // 关闭发票
  1342. invClose() {
  1343. this.invShow = false;
  1344. this.getInvoiceList()
  1345. },
  1346. //申请开票
  1347. invoiceApply() {
  1348. this.getInvoiceList()
  1349. this.moreBtn = false;
  1350. this.invShow = true;
  1351. },
  1352. aleartStatusChange() {
  1353. this.moreBtn = false;
  1354. this.aleartStatus = true
  1355. },
  1356. getInvoiceList() {
  1357. uni.showLoading({
  1358. title: '正在加载…'
  1359. })
  1360. invoiceList().then(res => {
  1361. uni.hideLoading();
  1362. this.invList = res.data.map(item => {
  1363. item.id = item.id.toString();
  1364. return item;
  1365. });
  1366. const result = this.invList.find(item => item.id == this.invChecked);
  1367. if (result) {
  1368. let name = '';
  1369. name += result.header_type === 1 ? '个人' : '企业';
  1370. name += result.type === 1 ? '普通' : '专用';
  1371. name += '发票';
  1372. this.invTitle = name;
  1373. }
  1374. }).catch(err => {
  1375. uni.showToast({
  1376. title: err,
  1377. icon: 'none'
  1378. });
  1379. });
  1380. },
  1381. more() {
  1382. this.moreBtn = !this.moreBtn
  1383. },
  1384. /**
  1385. *
  1386. * 剪切订单号
  1387. */
  1388. // #ifndef H5
  1389. copy: function() {
  1390. let that = this;
  1391. uni.setClipboardData({
  1392. data: this.orderInfo.order_id
  1393. });
  1394. },
  1395. copyKm: function() {
  1396. let that = this;
  1397. uni.setClipboardData({
  1398. data: this.orderInfo.virtual_info
  1399. });
  1400. },
  1401. // #endif
  1402. // #ifndef H5
  1403. copyAddress() {
  1404. uni.setClipboardData({
  1405. data: this.orderInfo._status.refund_name + this.orderInfo._status.refund_phone + this.orderInfo
  1406. ._status
  1407. .refund_address,
  1408. success() {
  1409. uni.Tips({
  1410. title: '复制成功',
  1411. icon: 'success'
  1412. })
  1413. }
  1414. });
  1415. },
  1416. // #endif
  1417. // #ifdef H5
  1418. copyAddress() {
  1419. // console.log('1111111111111')
  1420. // let msg =
  1421. // console.log(msg)
  1422. // return msg
  1423. },
  1424. // #endif
  1425. /**
  1426. * 打电话
  1427. */
  1428. goTel: function() {
  1429. uni.makePhoneCall({
  1430. phoneNumber: this.orderInfo.delivery_id
  1431. })
  1432. },
  1433. /**
  1434. * 设置底部按钮
  1435. *
  1436. */
  1437. getOrderStatus: function() {
  1438. let orderInfo = this.orderInfo || {},
  1439. _status = orderInfo._status || {
  1440. _type: 0
  1441. },
  1442. status = {};
  1443. let type = parseInt(_status._type),
  1444. delivery_type = orderInfo.delivery_type,
  1445. seckill_id = orderInfo.seckill_id ? parseInt(orderInfo.seckill_id) : 0,
  1446. bargain_id = orderInfo.bargain_id ? parseInt(orderInfo.bargain_id) : 0,
  1447. discount_id = orderInfo.discount_id ? parseInt(orderInfo.discount_id) : 0,
  1448. combination_id = orderInfo.combination_id ? parseInt(orderInfo.combination_id) : 0;
  1449. status = {
  1450. type: type == 9 ? -9 : type,
  1451. class_status: 0
  1452. };
  1453. if (type == 1 && combination_id > 0) status.class_status = 1; //查看拼团
  1454. if (type == 2 && delivery_type == 'express') status.class_status = 2; //查看物流
  1455. if (type == 2) status.class_status = 3; //确认收货
  1456. if (type == 4 || type == 0) status.class_status = 4; //删除订单
  1457. if (!seckill_id && !bargain_id && !combination_id && !discount_id && !orderInfo.type && (type == 3 ||
  1458. type == 4)) status
  1459. .class_status =
  1460. 5; //再次购买
  1461. this.$set(this, 'status', status);
  1462. },
  1463. /**
  1464. * 去拼团详情
  1465. *
  1466. */
  1467. goJoinPink: function() {
  1468. uni.navigateTo({
  1469. url: '/pages/activity/goods_combination_status/index?id=' + this.orderInfo.pink_id,
  1470. });
  1471. },
  1472. /**
  1473. * 再此购买
  1474. *
  1475. */
  1476. goOrderConfirm: function() {
  1477. let that = this;
  1478. orderAgain(that.orderInfo.order_id).then(res => {
  1479. let deliveryType = 1,shippingType = this.orderInfo.shipping_type,storeId = this.orderInfo.store_id,storeName = this.orderInfo.system_store.name
  1480. if(shippingType == 1 && storeId == 0){
  1481. deliveryType = 1
  1482. }else if((shippingType == 2 || shippingType == 4) && storeId>0){
  1483. deliveryType = 2
  1484. }else if(shippingType == 1 && storeId > 0){
  1485. deliveryType = 3
  1486. }
  1487. return uni.navigateTo({
  1488. url: '/pages/goods/order_confirm/index?new=1&cartId=' + res.data.cateId + '&delivery_type=' + deliveryType + '&store_id='+storeId+'&store_name='+storeName
  1489. });
  1490. });
  1491. },
  1492. confirmOrder(orderId) {
  1493. let that = this;
  1494. uni.showModal({
  1495. title: '确认收货',
  1496. content: '为保障权益,请收到货确认无误后,再确认收货',
  1497. success: function(res) {
  1498. if (res.confirm) {
  1499. orderTake(orderId ? orderId : that.order_id).then(res => {
  1500. return that.$util.Tips({
  1501. title: '操作成功',
  1502. icon: 'success'
  1503. }, function() {
  1504. that.getOrderInfo();
  1505. });
  1506. }).catch(err => {
  1507. return that.$util.Tips({
  1508. title: err
  1509. });
  1510. })
  1511. }
  1512. }
  1513. })
  1514. },
  1515. /**
  1516. *
  1517. * 删除订单
  1518. */
  1519. delOrder: function() {
  1520. let that = this;
  1521. uni.showModal({
  1522. title: '删除订单',
  1523. content: '确定删除该订单',
  1524. success: function(res) {
  1525. if (res.confirm) {
  1526. (that.isReturen ? refundOrderDel : orderDel)(that.order_id).then(res => {
  1527. if (that.status.type == -2) {
  1528. return that.$util.Tips({
  1529. title: '删除成功',
  1530. icon: 'success'
  1531. }, {
  1532. tab: 5,
  1533. url: '/pages/users/user_return_list/index'
  1534. });
  1535. } else {
  1536. return that.$util.Tips({
  1537. title: '删除成功',
  1538. icon: 'success'
  1539. }, {
  1540. tab: 5,
  1541. url: '/pages/goods/order_list/index'
  1542. });
  1543. }
  1544. }).catch(err => {
  1545. return that.$util.Tips({
  1546. title: err
  1547. });
  1548. });
  1549. } else if (res.cancel) {
  1550. return that.$util.Tips({
  1551. title: '已取消'
  1552. });
  1553. }
  1554. }
  1555. });
  1556. },
  1557. cancelOrder() {
  1558. let self = this
  1559. uni.showModal({
  1560. title: '提示',
  1561. content: '确认取消该订单?',
  1562. success: function(res) {
  1563. if (res.confirm) {
  1564. orderCancel(self.orderInfo.order_id)
  1565. .then((data) => {
  1566. let pages = getCurrentPages(); // 获取当前打开过的页面路由数组
  1567. let prevPage = pages[pages.length - 3].$page.fullPath;//上一页面
  1568. uni.reLaunch({
  1569. url: prevPage
  1570. })
  1571. })
  1572. .catch(() => {
  1573. self.getDetail();
  1574. });
  1575. } else if (res.cancel) {
  1576. console.log('用户点击取消');
  1577. }
  1578. }
  1579. });
  1580. }
  1581. }
  1582. }
  1583. </script>
  1584. <style scoped lang="scss">
  1585. .invoice-mask {
  1586. background-color: #999999;
  1587. opacity: 1;
  1588. }
  1589. .more-mask {
  1590. background-color: #fff;
  1591. opacity: 0;
  1592. left: 160rpx;
  1593. }
  1594. .goodCall {
  1595. color: var(--view-theme);
  1596. text-align: center;
  1597. width: 100%;
  1598. height: 86rpx;
  1599. padding: 0 30rpx;
  1600. border-bottom: 1rpx solid #eee;
  1601. font-size: 30rpx;
  1602. line-height: 86rpx;
  1603. background: #fff;
  1604. .icon-kefu {
  1605. font-size: 36rpx;
  1606. margin-right: 15rpx;
  1607. }
  1608. /* #ifdef MP */
  1609. button {
  1610. display: flex;
  1611. align-items: center;
  1612. justify-content: center;
  1613. height: 86rpx;
  1614. font-size: 30rpx;
  1615. color: var(--view-theme);
  1616. }
  1617. /* #endif */
  1618. }
  1619. .order-details .header {
  1620. padding: 0 30rpx;
  1621. height: 150rpx;
  1622. }
  1623. .order-details .header.on {
  1624. background-color: #666 !important;
  1625. }
  1626. .order-details .header .pictrue {
  1627. width: 110rpx;
  1628. height: 110rpx;
  1629. }
  1630. .order-details .header .pictrue image {
  1631. width: 100%;
  1632. height: 100%;
  1633. }
  1634. .order-details .header .data {
  1635. color: rgba(255, 255, 255, 0.8);
  1636. font-size: 24rpx;
  1637. margin-left: 27rpx;
  1638. }
  1639. .order-details .header .data.on {
  1640. margin-left: 0;
  1641. }
  1642. .order-details .header .data .state {
  1643. font-size: 30rpx;
  1644. font-weight: bold;
  1645. color: #fff;
  1646. margin-bottom: 7rpx;
  1647. }
  1648. .order-details .header .data .time {
  1649. margin-left: 20rpx;
  1650. }
  1651. .order-details .nav {
  1652. background-color: #fff;
  1653. font-size: 26rpx;
  1654. color: #282828;
  1655. padding: 25rpx 0;
  1656. }
  1657. .order-details .nav .navCon {
  1658. padding: 0 40rpx;
  1659. }
  1660. .order-details .nav .on {
  1661. color: var(--view-theme);
  1662. }
  1663. .order-details .nav .progress {
  1664. padding: 0 65rpx;
  1665. margin-top: 10rpx;
  1666. }
  1667. .order-details .nav .progress .line {
  1668. width: 100rpx;
  1669. height: 2rpx;
  1670. background-color: #939390;
  1671. }
  1672. .order-details .nav .progress .iconfont {
  1673. font-size: 25rpx;
  1674. color: #939390;
  1675. margin-top: -2rpx;
  1676. }
  1677. .order-details .address {
  1678. font-size: 26rpx;
  1679. color: #868686;
  1680. background-color: #fff;
  1681. margin-top: 13rpx;
  1682. padding: 35rpx 30rpx;
  1683. }
  1684. .order-details .address .name {
  1685. font-size: 30rpx;
  1686. color: #282828;
  1687. margin-bottom: 15rpx;
  1688. }
  1689. .order-details .address .name .phone {
  1690. margin-left: 40rpx;
  1691. }
  1692. .order-details .line {
  1693. width: 100%;
  1694. height: 3rpx;
  1695. }
  1696. .order-details .line image {
  1697. width: 100%;
  1698. height: 100%;
  1699. display: block;
  1700. }
  1701. .order-details .wrapper {
  1702. background-color: #fff;
  1703. margin-top: 12rpx;
  1704. padding: 30rpx;
  1705. }
  1706. .order-details .wrapper .item {
  1707. font-size: 28rpx;
  1708. color: #282828;
  1709. }
  1710. .order-details .wrapper .item~.item {
  1711. margin-top: 20rpx;
  1712. }
  1713. .order-details .wrapper .item .conter .copy {
  1714. font-size: 20rpx;
  1715. color: #333;
  1716. border-radius: 3rpx;
  1717. border: 1rpx solid #666;
  1718. padding: 3rpx 15rpx;
  1719. margin-left: 24rpx;
  1720. transform: scale(.9);
  1721. }
  1722. .order-details .wrapper .actualPay {
  1723. border-top: 1rpx solid #eee;
  1724. margin-top: 30rpx;
  1725. padding-top: 30rpx;
  1726. }
  1727. .order-details .wrapper .actualPay .money {
  1728. font-weight: bold;
  1729. font-size: 30rpx;
  1730. }
  1731. .order-details .footer {
  1732. width: 100%;
  1733. height: 100rpx;
  1734. position: fixed;
  1735. bottom: 0;
  1736. left: 0;
  1737. background-color: #fff;
  1738. padding: 0 30rpx;
  1739. box-sizing: border-box;
  1740. }
  1741. .order-details .footer .bnt {
  1742. width: 150rpx;
  1743. height: 60rpx;
  1744. text-align: center;
  1745. line-height: 60rpx;
  1746. border-radius: 50rpx;
  1747. color: #fff;
  1748. font-size: 27rpx;
  1749. }
  1750. .order-details .footer .bnt~.bnt {
  1751. margin-left: 18rpx;
  1752. }
  1753. .order-details .writeOff {
  1754. background-color: #fff;
  1755. margin-top: 13rpx;
  1756. padding-bottom: 30rpx;
  1757. }
  1758. .order-details .writeOff .title {
  1759. font-size: 30rpx;
  1760. color: #282828;
  1761. height: 87rpx;
  1762. border-bottom: 1px solid #f0f0f0;
  1763. padding: 0 30rpx;
  1764. line-height: 87rpx;
  1765. }
  1766. .order-details .writeOff .grayBg {
  1767. background-color: #f2f5f7;
  1768. width: 590rpx;
  1769. height: 384rpx;
  1770. border-radius: 20rpx 20rpx 0 0;
  1771. margin: 50rpx auto 0 auto;
  1772. padding-top: 55rpx;
  1773. position: relative;
  1774. }
  1775. .order-details .writeOff .grayBg .written {
  1776. position: absolute;
  1777. top: 0;
  1778. right: 0;
  1779. width: 60rpx;
  1780. height: 60rpx;
  1781. }
  1782. .order-details .writeOff .grayBg .written image {
  1783. width: 100%;
  1784. height: 100%;
  1785. }
  1786. .order-details .writeOff .grayBg .pictrue {
  1787. width: 290rpx;
  1788. height: 290rpx;
  1789. margin: 0 auto;
  1790. }
  1791. .order-details .writeOff .grayBg .pictrue image {
  1792. width: 100%;
  1793. height: 100%;
  1794. display: block;
  1795. }
  1796. .order-details .writeOff .gear {
  1797. width: 590rpx;
  1798. height: 30rpx;
  1799. margin: 0 auto;
  1800. }
  1801. .order-details .writeOff .gear image {
  1802. width: 100%;
  1803. height: 100%;
  1804. display: block;
  1805. }
  1806. .order-details .writeOff .num {
  1807. background-color: #f0c34c;
  1808. width: 590rpx;
  1809. height: 84rpx;
  1810. color: #282828;
  1811. font-size: 48rpx;
  1812. margin: 0 auto;
  1813. border-radius: 0 0 20rpx 20rpx;
  1814. text-align: center;
  1815. padding-top: 4rpx;
  1816. }
  1817. .order-details .writeOff .rules {
  1818. margin: 46rpx 30rpx 0 30rpx;
  1819. border-top: 1px solid #f0f0f0;
  1820. padding-top: 10rpx;
  1821. }
  1822. .order-details .writeOff .rules .item {
  1823. margin-top: 20rpx;
  1824. }
  1825. .order-details .writeOff .rules .item .rulesTitle {
  1826. font-size: 28rpx;
  1827. color: #282828;
  1828. }
  1829. .order-details .writeOff .rules .item .rulesTitle .iconfont {
  1830. font-size: 30rpx;
  1831. color: #333;
  1832. margin-right: 8rpx;
  1833. margin-top: 5rpx;
  1834. }
  1835. .order-details .writeOff .rules .item .info {
  1836. font-size: 28rpx;
  1837. color: #999;
  1838. margin-top: 7rpx;
  1839. }
  1840. .order-details .writeOff .rules .item .info .time {
  1841. margin-left: 20rpx;
  1842. }
  1843. .order-details .map {
  1844. height: 86rpx;
  1845. font-size: 30rpx;
  1846. color: #282828;
  1847. line-height: 86rpx;
  1848. border-bottom: 1px solid #f0f0f0;
  1849. margin-top: 13rpx;
  1850. background-color: #fff;
  1851. padding: 0 30rpx;
  1852. }
  1853. .order-details .map .place {
  1854. font-size: 26rpx;
  1855. width: 176rpx;
  1856. height: 50rpx;
  1857. border-radius: 25rpx;
  1858. line-height: 50rpx;
  1859. text-align: center;
  1860. }
  1861. .order-details .map .place .iconfont {
  1862. font-size: 27rpx;
  1863. height: 27rpx;
  1864. line-height: 27rpx;
  1865. margin: 2rpx 3rpx 0 0;
  1866. }
  1867. .order-details .address .name .iconfont {
  1868. font-size: 34rpx;
  1869. margin-left: 10rpx;
  1870. }
  1871. .refund {
  1872. .title {
  1873. display: flex;
  1874. align-items: center;
  1875. font-size: 30rpx;
  1876. color: #333;
  1877. height: 86rpx;
  1878. border-bottom: 1px solid #f5f5f5;
  1879. image {
  1880. width: 32rpx;
  1881. height: 32rpx;
  1882. margin-right: 10rpx;
  1883. }
  1884. }
  1885. .con {
  1886. padding-top: 25rpx;
  1887. font-size: 28rpx;
  1888. color: #868686;
  1889. }
  1890. }
  1891. .refund-msg {
  1892. background-color: #fff;
  1893. padding: 20rpx 40rpx;
  1894. font-size: 28rpx;
  1895. .refund-msg-user {
  1896. font-weight: bold;
  1897. margin-bottom: 10rpx;
  1898. .copy-refund-msg {
  1899. font-size: 10px;
  1900. border-radius: 1px;
  1901. border: 0.5px solid #666;
  1902. padding: 1px 7px;
  1903. margin-left: 12px;
  1904. }
  1905. .name {
  1906. margin-right: 20rpx;
  1907. }
  1908. }
  1909. .refund-address {
  1910. color: #868686;
  1911. }
  1912. }
  1913. </style>