index.vue 52 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037
  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 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. </view>
  398. </template>
  399. <style scoped lang="scss">
  400. .delivery{
  401. width: 100%;
  402. height: 140rpx;
  403. background-color: #fff;
  404. padding: 0 30rpx;
  405. margin-top: 12rpx;
  406. .text{
  407. .info{
  408. margin-left: 30rpx;
  409. .name{
  410. font-weight: 400;
  411. margin-left: 0;
  412. }
  413. .phone{
  414. font-size: 26rpx;
  415. font-weight: 400;
  416. color: #333333;
  417. margin-top: 8rpx;
  418. }
  419. }
  420. .name{
  421. width: 420rpx;
  422. margin-left: 30rpx;
  423. font-size: 28rpx;
  424. font-weight: 500;
  425. color: #333333;
  426. }
  427. .pictrue{
  428. width: 80rpx;
  429. height: 80rpx;
  430. image{
  431. width: 100%;
  432. height: 100%;
  433. }
  434. }
  435. }
  436. .details{
  437. font-size: 24rpx;
  438. font-weight: 400;
  439. color: var(--view-theme);
  440. }
  441. }
  442. .refund-tip {
  443. font-size: 24rpx;
  444. margin-top: 10rpx;
  445. color: var(--view-theme);
  446. .iconfont {
  447. font-size: 24rpx;
  448. margin-right: 6rpx;
  449. }
  450. }
  451. .qs-btn {
  452. width: auto;
  453. height: 60rpx;
  454. text-align: center;
  455. line-height: 60rpx;
  456. border-radius: 50rpx;
  457. font-size: 27rpx;
  458. padding: 0 3%;
  459. color: #666;
  460. border: 1px solid #ccc;
  461. margin-right: 20rpx;
  462. }
  463. .refund-input {
  464. position: fixed;
  465. bottom: 0;
  466. left: 0;
  467. width: 100%;
  468. border-radius: 16rpx 16rpx 0 0;
  469. background-color: #fff;
  470. z-index: 99;
  471. padding: 40rpx 0 70rpx 0;
  472. transition: all 0.3s cubic-bezier(0.25, 0.5, 0.5, 0.9);
  473. transform: translate3d(0, 100%, 0);
  474. .refund-input-title {
  475. font-size: 32rpx;
  476. margin-bottom: 60rpx;
  477. color: #282828;
  478. }
  479. .refund-input-sty {
  480. border: 1px solid #ddd;
  481. padding: 20rpx 20rpx;
  482. border-radius: 40rpx;
  483. width: 100%;
  484. margin: 20rpx 65rpx;
  485. }
  486. .input-msg {
  487. display: flex;
  488. flex-direction: column;
  489. justify-content: center;
  490. align-items: center;
  491. position: relative;
  492. margin: 0 65rpx;
  493. .iconfont {
  494. position: absolute;
  495. font-size: 32rpx;
  496. color: #282828;
  497. top: 8rpx;
  498. right: -30rpx;
  499. }
  500. }
  501. .refund-bth {
  502. display: flex;
  503. margin: 0 65rpx;
  504. margin-top: 20rpx;
  505. justify-content: space-around;
  506. width: 100%;
  507. .close-refund {
  508. padding: 24rpx 80rpx;
  509. border-radius: 80rpx;
  510. color: #fff;
  511. background-color: #ccc;
  512. }
  513. .submit-refund {
  514. width: 100%;
  515. padding: 24rpx 0rpx;
  516. text-align: center;
  517. border-radius: 80rpx;
  518. color: #fff;
  519. background-color: var(--view-theme);
  520. }
  521. }
  522. }
  523. .refund-input.on {
  524. transform: translate3d(0, 0, 0);
  525. }
  526. .goodCall {
  527. color: var(--view-theme);
  528. text-align: center;
  529. width: 100%;
  530. height: 86rpx;
  531. padding: 0 30rpx;
  532. border-bottom: 1rpx solid #eee;
  533. font-size: 30rpx;
  534. line-height: 86rpx;
  535. background: #fff;
  536. .icon-kefu {
  537. font-size: 36rpx;
  538. margin-right: 15rpx;
  539. }
  540. /* #ifdef MP */
  541. button {
  542. display: flex;
  543. align-items: center;
  544. justify-content: center;
  545. height: 86rpx;
  546. font-size: 30rpx;
  547. color: var(--view-theme);
  548. }
  549. /* #endif */
  550. }
  551. .order-details .header {
  552. padding: 0 30rpx;
  553. height: 150rpx;
  554. display: flex;
  555. align-items: center;
  556. flex-wrap: nowrap;
  557. }
  558. .order-details .header.on {
  559. background-color: #666 !important;
  560. }
  561. .order-details .header .pictrue {
  562. width: 110rpx;
  563. height: 110rpx;
  564. }
  565. .order-details .header .pictrue image {
  566. width: 100%;
  567. height: 100%;
  568. }
  569. .order-details .header .data {
  570. color: rgba(255, 255, 255, 0.8);
  571. font-size: 24rpx;
  572. margin-left: 27rpx;
  573. }
  574. .order-details .header .data.on {
  575. margin-left: 0;
  576. }
  577. .order-details .header .data .state {
  578. font-size: 30rpx;
  579. font-weight: bold;
  580. color: #fff;
  581. margin-bottom: 7rpx;
  582. }
  583. .order-details .header .data .time {
  584. margin-left: 20rpx;
  585. }
  586. .order-details .nav {
  587. background-color: #fff;
  588. font-size: 26rpx;
  589. color: #282828;
  590. padding: 25rpx 0;
  591. }
  592. .order-details .nav .navCon {
  593. padding: 0 40rpx;
  594. }
  595. .order-details .nav .on {
  596. color: var(--view-theme);
  597. }
  598. .order-details .nav .progress {
  599. padding: 0 65rpx;
  600. margin-top: 10rpx;
  601. }
  602. .order-details .nav .progress .line {
  603. width: 100rpx;
  604. height: 2rpx;
  605. background-color: #939390;
  606. }
  607. .order-details .nav .progress .iconfont {
  608. font-size: 25rpx;
  609. color: #939390;
  610. margin-top: -2rpx;
  611. }
  612. .order-details .address {
  613. font-size: 26rpx;
  614. color: #868686;
  615. background-color: #fff;
  616. margin-top: 13rpx;
  617. padding: 35rpx 30rpx;
  618. }
  619. .order-details .address .name {
  620. font-size: 30rpx;
  621. color: #282828;
  622. margin-bottom: 15rpx;
  623. }
  624. .order-details .address .name .phone {
  625. margin-left: 40rpx;
  626. }
  627. .order-details .line {
  628. width: 100%;
  629. height: 3rpx;
  630. }
  631. .order-details .line image {
  632. width: 100%;
  633. height: 100%;
  634. display: block;
  635. }
  636. .order-details .wrapper {
  637. background-color: #fff;
  638. margin-top: 12rpx;
  639. padding: 30rpx;
  640. }
  641. .order-details .wrapper .item {
  642. font-size: 28rpx;
  643. color: #282828;
  644. }
  645. .order-details .wrapper .item~.item {
  646. margin-top: 20rpx;
  647. white-space: normal;
  648. word-break: break-all;
  649. word-wrap: break-word;
  650. }
  651. .order-details .wrapper .item .conter {
  652. color: #868686;
  653. width: 460rpx;
  654. display: flex;
  655. flex-wrap: nowrap;
  656. justify-content: flex-end;
  657. text-align: right;
  658. &.on{
  659. width: 500rpx;
  660. }
  661. .pictrue{
  662. width: 80rpx;
  663. height: 80rpx;
  664. margin-left: 6rpx;
  665. image{
  666. width: 100%;
  667. height: 100%;
  668. border-radius: 6rpx;
  669. }
  670. }
  671. }
  672. .order-details .wrapper .item .conter .copy {
  673. font-size: 20rpx;
  674. color: #333;
  675. border-radius: 3rpx;
  676. border: 1rpx solid #666;
  677. padding: 3rpx 15rpx;
  678. margin-left: 24rpx;
  679. white-space: nowrap;
  680. }
  681. .order-details .wrapper .actualPay {
  682. border-top: 1rpx solid #eee;
  683. margin-top: 30rpx;
  684. padding-top: 30rpx;
  685. }
  686. .order-details .wrapper .actualPay .money {
  687. font-weight: bold;
  688. font-size: 30rpx;
  689. }
  690. .order-details .footer {
  691. width: 100%;
  692. height: 100rpx;
  693. position: fixed;
  694. bottom: 0;
  695. left: 0;
  696. background-color: #fff;
  697. padding: 0 30rpx;
  698. box-sizing: border-box;
  699. border-top: 1px solid #eee;
  700. .more {
  701. position: absolute;
  702. left: 30rpx;
  703. font-size: 26rpx;
  704. color: #333;
  705. .icon-xiangshang {
  706. margin-left: 6rpx;
  707. font-size: 22rpx;
  708. }
  709. }
  710. .more-box {
  711. color: #333;
  712. position: absolute;
  713. left: 30rpx;
  714. bottom: 110rpx;
  715. background-color: #fff;
  716. padding: 18rpx 24rpx;
  717. border-radius: 4rpx;
  718. font-size: 28rpx;
  719. -webkit-box-shadow: 0px 0px 3px 0px rgba(200, 200, 200, 0.75);
  720. -moz-box-shadow: 0px 0px 3px 0px rgba(200, 200, 200, 0.75);
  721. box-shadow: 0px 0px 3px 0px rgba(200, 200, 200, 0.75);
  722. .more-btn {
  723. color: #333;
  724. padding: 4rpx;
  725. z-index: 9999;
  726. }
  727. }
  728. .more-box:before {
  729. content: "";
  730. width: 0rpx;
  731. height: 0rpx;
  732. border-top: 10rpx solid #fff;
  733. border-bottom: 10rpx solid transparent;
  734. border-left: 10rpx solid #fff;
  735. position: absolute;
  736. bottom: -10rpx;
  737. left: 0px;
  738. }
  739. }
  740. .order-details .footer .bnt {
  741. width: 176rpx;
  742. height: 60rpx;
  743. text-align: center;
  744. line-height: 60rpx;
  745. border-radius: 50rpx;
  746. color: #fff;
  747. font-size: 27rpx;
  748. }
  749. .order-details .footer .bnt.refundBnt {
  750. width: 210rpx;
  751. }
  752. .order-details .footer .bnt.cancel {
  753. color: #666;
  754. border: 1rpx solid #ccc;
  755. }
  756. .order-details .footer .bnt~.bnt {
  757. margin-left: 18rpx;
  758. }
  759. .order-details .writeOff {
  760. background-color: #fff;
  761. margin-top: 13rpx;
  762. padding-bottom: 30rpx;
  763. }
  764. .order-details .writeOff .title {
  765. font-size: 30rpx;
  766. color: #282828;
  767. height: 87rpx;
  768. border-bottom: 1px solid #f0f0f0;
  769. padding: 0 30rpx;
  770. line-height: 87rpx;
  771. }
  772. .order-details .writeOff .grayBg {
  773. background-color: #f2f5f7;
  774. width: 590rpx;
  775. height: 384rpx;
  776. border-radius: 20rpx 20rpx 0 0;
  777. margin: 50rpx auto 0 auto;
  778. padding-top: 55rpx;
  779. position: relative;
  780. }
  781. .order-details .writeOff .grayBg .written {
  782. position: absolute;
  783. top: 0;
  784. right: 0;
  785. width: 60rpx;
  786. height: 60rpx;
  787. }
  788. .order-details .writeOff .grayBg .written image {
  789. width: 100%;
  790. height: 100%;
  791. }
  792. .order-details .writeOff .grayBg .pictrue {
  793. width: 290rpx;
  794. height: 290rpx;
  795. margin: 0 auto;
  796. }
  797. .order-details .writeOff .grayBg .pictrue image {
  798. width: 100%;
  799. height: 100%;
  800. display: block;
  801. }
  802. .order-details .writeOff .gear {
  803. width: 590rpx;
  804. height: 30rpx;
  805. margin: 0 auto;
  806. }
  807. .order-details .writeOff .gear image {
  808. width: 100%;
  809. height: 100%;
  810. display: block;
  811. }
  812. .order-details .writeOff .num {
  813. background-color: #f0c34c;
  814. width: 590rpx;
  815. height: 84rpx;
  816. color: #282828;
  817. font-size: 48rpx;
  818. margin: 0 auto;
  819. border-radius: 0 0 20rpx 20rpx;
  820. text-align: center;
  821. padding-top: 4rpx;
  822. }
  823. .order-details .writeOff .rules {
  824. margin: 46rpx 30rpx 0 30rpx;
  825. border-top: 1px solid #f0f0f0;
  826. padding-top: 10rpx;
  827. }
  828. .order-details .writeOff .rules .item {
  829. margin-top: 20rpx;
  830. }
  831. .order-details .writeOff .rules .item .rulesTitle {
  832. font-size: 28rpx;
  833. color: #282828;
  834. }
  835. .order-details .writeOff .rules .item .rulesTitle .iconfont {
  836. font-size: 30rpx;
  837. color: #333;
  838. margin-right: 8rpx;
  839. margin-top: 5rpx;
  840. }
  841. .order-details .writeOff .rules .item .info {
  842. font-size: 28rpx;
  843. color: #999;
  844. margin-top: 7rpx;
  845. }
  846. .order-details .writeOff .rules .item .info .time {
  847. margin-left: 20rpx;
  848. }
  849. .order-details .map {
  850. height: 86rpx;
  851. font-size: 30rpx;
  852. color: #282828;
  853. line-height: 86rpx;
  854. border-bottom: 1px solid #f0f0f0;
  855. margin-top: 13rpx;
  856. background-color: #fff;
  857. padding: 0 30rpx;
  858. }
  859. .order-details .map .place {
  860. font-size: 26rpx;
  861. width: 176rpx;
  862. height: 50rpx;
  863. border-radius: 25rpx;
  864. line-height: 50rpx;
  865. text-align: center;
  866. }
  867. .order-details .map .place .iconfont {
  868. font-size: 27rpx;
  869. height: 27rpx;
  870. line-height: 27rpx;
  871. margin: 2rpx 3rpx 0 0;
  872. }
  873. .order-details .address .name .iconfont {
  874. font-size: 34rpx;
  875. margin-left: 10rpx;
  876. }
  877. .refund {
  878. padding: 0 30rpx 30rpx;
  879. margin-top: 12rpx;
  880. background-color: #fff;
  881. .title {
  882. display: flex;
  883. align-items: center;
  884. font-size: 30rpx;
  885. color: #333;
  886. height: 86rpx;
  887. border-bottom: 1px solid #f5f5f5;
  888. image {
  889. width: 32rpx;
  890. height: 32rpx;
  891. margin-right: 10rpx;
  892. }
  893. }
  894. .con {
  895. padding-top: 25rpx;
  896. font-size: 28rpx;
  897. color: #868686;
  898. }
  899. }
  900. </style>
  901. <script>
  902. import {
  903. getOrderDetail,
  904. getRefundOrderDetail,
  905. orderAgain,
  906. orderTake,
  907. orderDel,
  908. refundOrderDel,
  909. orderCancel,
  910. refundExpress,
  911. cancelRefundOrder
  912. } from '@/api/order.js';
  913. import {
  914. openOrderRefundSubscribe
  915. } from '@/utils/SubscribeMessage.js';
  916. import {
  917. getUserInfo,
  918. invoiceList,
  919. makeUpinvoice
  920. } from '@/api/user.js';
  921. import home from '@/components/home';
  922. import payment from '@/components/payment';
  923. import orderGoods from "@/components/orderGoods";
  924. import customForm from "@/components/customForm";
  925. import ClipboardJS from "@/plugin/clipboard/clipboard.js";
  926. import {
  927. toLogin
  928. } from '@/libs/login.js';
  929. import {
  930. mapGetters
  931. } from "vuex";
  932. import colors from "@/mixins/color";
  933. import invoicePicker from '../components/invoicePicker';
  934. import invoiceModal from '../components/invoiceModal/index.vue'
  935. export default {
  936. components: {
  937. payment,
  938. home,
  939. invoicePicker,
  940. invoiceModal,
  941. orderGoods,
  942. customForm
  943. },
  944. mixins: [colors],
  945. data() {
  946. return {
  947. giveData:{
  948. give_integral:0,
  949. give_coupon:[]
  950. },
  951. giveCartInfo:[],
  952. config: {
  953. qrc: {
  954. code: "",
  955. size: 300, // 二维码大小
  956. level: 4, //等级 0~4
  957. bgColor: '#FFFFFF', //二维码背景色 默认白色
  958. border: {
  959. color: ['#eee', '#eee'], //边框颜色支持渐变色
  960. lineWidth: 3, //边框宽度
  961. },
  962. color: ['#333', '#333'], //边框颜色支持渐变色
  963. }
  964. },
  965. order_id: '',
  966. evaluate: 0,
  967. cartInfo: [], //购物车产品
  968. pid: 0, //上级订单ID
  969. split: [], //分单商品
  970. orderInfo: {
  971. system_store: {},
  972. _status: {}
  973. }, //订单详情
  974. system_store: {},
  975. isGoodsReturn: false, //是否为退款订单
  976. status: {}, //订单底部按钮状态
  977. refund_close: false,
  978. isClose: false,
  979. payMode: [{
  980. name: "微信支付",
  981. icon: "icon-weixinzhifu",
  982. value: 'weixin',
  983. title: '使用微信快捷支付',
  984. payStatus: true,
  985. },
  986. // #ifdef H5 || APP-PLUS
  987. {
  988. name: '支付宝支付',
  989. icon: 'icon-zhifubao',
  990. value: 'alipay',
  991. title: '使用线上支付宝支付',
  992. payStatus: true
  993. },
  994. // #endif
  995. {
  996. name: "余额支付",
  997. icon: "icon-yuezhifu",
  998. value: 'yue',
  999. title: '当前可用余额:',
  1000. number: 0,
  1001. payStatus: true
  1002. },
  1003. ],
  1004. pay_close: false,
  1005. pay_order_id: '',
  1006. totalPrice: '0',
  1007. isAuto: false, //没有授权的不会自动授权
  1008. isShowAuth: false, //是否隐藏授权
  1009. routineContact: 0,
  1010. express_num: '',
  1011. invoice_func: false,
  1012. invoiceData: {},
  1013. invoice_id: 0,
  1014. invChecked: '',
  1015. moreBtn: false,
  1016. invShow: false,
  1017. aleartStatus: false, //发票弹窗
  1018. special_invoice: false,
  1019. invList: [],
  1020. userInfo: {},
  1021. isReturen: ''
  1022. };
  1023. },
  1024. computed: mapGetters(['isLogin']),
  1025. onLoad: function(options) {
  1026. if (options.order_id) {
  1027. this.$set(this, 'order_id', options.order_id);
  1028. this.isReturen = options.isReturen;
  1029. }
  1030. if (options.invoice_id) {
  1031. this.invoice_id = options.invoice_id
  1032. }
  1033. },
  1034. onShow() {
  1035. uni.removeStorageSync('form_type_cart');
  1036. if (this.isLogin) {
  1037. this.getOrderInfo();
  1038. this.getUserInfo();
  1039. } else {
  1040. toLogin();
  1041. }
  1042. },
  1043. onHide: function() {
  1044. this.isClose = true;
  1045. },
  1046. onReady: function() {
  1047. // #ifdef H5
  1048. this.$nextTick(function() {
  1049. const clipboard = new ClipboardJS(".copy-data");
  1050. clipboard.on("success", () => {
  1051. this.$util.Tips({
  1052. title: '复制成功'
  1053. });
  1054. });
  1055. const address = new ClipboardJS(".copy-refund-msg");
  1056. address.on("success", () => {
  1057. this.$util.Tips({
  1058. title: '复制成功'
  1059. });
  1060. });
  1061. });
  1062. // #endif
  1063. },
  1064. methods: {
  1065. getpreviewImage: function(index,num) {
  1066. uni.previewImage({
  1067. urls: num?this.orderInfo.refund_img:this.orderInfo.refund_goods_img,
  1068. current: num?this.orderInfo.refund_img[index]:this.orderInfo.refund_goods_img[index]
  1069. });
  1070. },
  1071. cancelRefundOrder(orderId) {
  1072. let that = this;
  1073. uni.showModal({
  1074. title: '取消申请',
  1075. content: '您确认放弃此次申请吗?',
  1076. success: (res) => {
  1077. if (res.confirm) {
  1078. cancelRefundOrder(that.order_id).then(res => {
  1079. return that.$util.Tips({
  1080. title: '操作成功',
  1081. icon: 'success'
  1082. }, {
  1083. tab: 4,
  1084. url: '/pages/users/user_return_list/index'
  1085. });
  1086. }).catch(err => {
  1087. return that.$util.Tips({
  1088. title: err
  1089. });
  1090. })
  1091. }
  1092. }
  1093. })
  1094. },
  1095. refundInput() {
  1096. uni.navigateTo({
  1097. url: `/pages/goods/order_refund_goods/index?orderId=` + this.order_id
  1098. })
  1099. },
  1100. goGoodCall() {
  1101. let url = `/pages/extension/customer_list/chat?orderId=${this.order_id}&isReturen=${this.isReturen}`
  1102. this.$util.getCustomer(this.userInfo,url)
  1103. },
  1104. openSubcribe: function(e) {
  1105. let page = e;
  1106. // #ifdef MP
  1107. uni.showLoading({
  1108. title: '正在加载',
  1109. })
  1110. openOrderRefundSubscribe().then(res => {
  1111. uni.hideLoading();
  1112. uni.navigateTo({
  1113. url: page,
  1114. });
  1115. }).catch(() => {
  1116. uni.hideLoading();
  1117. });
  1118. // #endif
  1119. // #ifndef MP
  1120. uni.navigateTo({
  1121. url: page
  1122. })
  1123. // #endif
  1124. },
  1125. /**
  1126. * 事件回调
  1127. *
  1128. */
  1129. onChangeFun: function(e) {
  1130. let opt = e;
  1131. let action = opt.action || null;
  1132. let value = opt.value != undefined ? opt.value : null;
  1133. (action && this[action]) && this[action](value);
  1134. },
  1135. /**
  1136. * 拨打电话
  1137. */
  1138. makePhone: function() {
  1139. uni.makePhoneCall({
  1140. phoneNumber: this.system_store.phone
  1141. })
  1142. },
  1143. /**
  1144. * 打开地图
  1145. *
  1146. */
  1147. showMaoLocation: function() {
  1148. if (!this.system_store.latitude || !this.system_store.longitude) return this.$util.Tips({
  1149. title: '缺少经纬度信息无法查看地图!'
  1150. });
  1151. uni.openLocation({
  1152. latitude: parseFloat(this.system_store.latitude),
  1153. longitude: parseFloat(this.system_store.longitude),
  1154. scale: 8,
  1155. name: this.system_store.name,
  1156. address: this.system_store.address + this.system_store.detailed_address,
  1157. success: function() {
  1158. },
  1159. });
  1160. },
  1161. /**
  1162. * 关闭支付组件
  1163. *
  1164. */
  1165. payClose: function() {
  1166. this.pay_close = false;
  1167. },
  1168. /**
  1169. * 打开支付组件
  1170. *
  1171. */
  1172. pay_open: function() {
  1173. this.pay_close = true;
  1174. this.pay_order_id = this.orderInfo.order_id;
  1175. this.totalPrice = this.orderInfo.pay_price;
  1176. },
  1177. /**
  1178. * 支付成功回调
  1179. *
  1180. */
  1181. pay_complete: function() {
  1182. this.pay_close = false;
  1183. this.pay_order_id = '';
  1184. uni.navigateTo({
  1185. url: '/pages/goods/order_pay_status/index?order_id=' + this.orderInfo.order_id + '&msg=' +
  1186. '支付成功' +
  1187. '&type=3' + '&totalPrice=' + this.totalPrice
  1188. })
  1189. this.getOrderInfo();
  1190. },
  1191. /**
  1192. * 支付失败回调
  1193. *
  1194. */
  1195. pay_fail: function() {
  1196. this.pay_close = false;
  1197. this.pay_order_id = '';
  1198. },
  1199. /**
  1200. * 获取用户信息
  1201. *
  1202. */
  1203. getUserInfo: function() {
  1204. let that = this;
  1205. getUserInfo().then(res => {
  1206. that.userInfo = res.data
  1207. // #ifdef H5 || APP-PLUS
  1208. that.payMode[2].number = res.data.now_money;
  1209. // #endif
  1210. // #ifdef MP
  1211. that.payMode[1].number = res.data.now_money;
  1212. // #endif
  1213. that.$set(that, 'payMode', that.payMode);
  1214. })
  1215. },
  1216. /**
  1217. * 获取订单详细信息
  1218. *
  1219. */
  1220. getOrderInfo: function() {
  1221. let that = this;
  1222. uni.showLoading({
  1223. title: "正在加载中"
  1224. });
  1225. let obj = '';
  1226. if (that.isReturen) {
  1227. obj = getRefundOrderDetail(this.order_id);
  1228. } else {
  1229. obj = getOrderDetail(this.order_id);
  1230. }
  1231. obj.then(res => {
  1232. let _type = res.data._status._type;
  1233. uni.hideLoading();
  1234. that.giveData.give_coupon = res.data.give_coupon;
  1235. that.giveData.give_integral = res.data.give_integral;
  1236. that.$set(that, 'orderInfo', res.data);
  1237. that.$set(that, 'pid', res.data.pid);
  1238. that.$set(that, 'split', res.data.split);
  1239. that.$set(that, 'evaluate', _type == 3 ? 3 : 0);
  1240. that.$set(that, 'system_store', res.data.system_store);
  1241. that.$set(that, 'invoiceData', res.data.invoice);
  1242. if (that.invoiceData) {
  1243. that.invoiceData.pay_price = res.data.pay_price;
  1244. }
  1245. that.$set(that, 'invoice_func', res.data.invoice_func);
  1246. that.$set(that, 'special_invoice', res.data.special_invoice);
  1247. that.$set(that, 'routineContact', Number(res.data.routine_contact_type));
  1248. let cartInfo = res.data.cartInfo;
  1249. let cartObj = [],giftObj = [];
  1250. cartInfo.forEach(item=>{
  1251. if(item.is_gift == 1){
  1252. giftObj.push(item)
  1253. }else{
  1254. cartObj.push(item)
  1255. }
  1256. })
  1257. that.$set(that, 'cartInfo', cartObj);
  1258. that.$set(that, 'giveCartInfo', giftObj);
  1259. this.$nextTick(function() {
  1260. that.config.qrc.code = that.orderInfo.verify_code
  1261. })
  1262. if (this.orderInfo.refund_status != 0) {
  1263. this.isGoodsReturn = true;
  1264. }else{
  1265. this.isReturen = 0
  1266. }
  1267. if (that.invoice_id && !that.invoiceData) {
  1268. that.invChecked = that.invoice_id || '';
  1269. this.invoiceApply()
  1270. }
  1271. that.payMode.map(item => {
  1272. if (item.value == 'weixin') {
  1273. item.payStatus = res.data.pay_weixin_open ? true : false;
  1274. }
  1275. if (item.value == 'alipay') {
  1276. item.payStatus = res.data.ali_pay_status ? true : false;
  1277. }
  1278. if (item.value == 'yue') {
  1279. item.payStatus = res.data.yue_pay_status == 1 ? true : false;
  1280. }
  1281. });
  1282. that.getOrderStatus();
  1283. }).catch(err => {
  1284. uni.hideLoading();
  1285. if(err.status == 403){
  1286. uni.navigateTo({
  1287. url: '/pages/goods/order_list/index'
  1288. })
  1289. }else{
  1290. that.$util.Tips({
  1291. title: err
  1292. }, '/pages/goods/order_list/index');
  1293. }
  1294. });
  1295. },
  1296. // 不开发票
  1297. invCancel() {
  1298. this.invChecked = '';
  1299. this.invTitle = '不开发票';
  1300. this.invShow = false;
  1301. },
  1302. // 选择发票
  1303. invSub(id) {
  1304. this.invChecked = id;
  1305. let data = {
  1306. order_id: this.order_id,
  1307. invoice_id: this.invChecked
  1308. }
  1309. makeUpinvoice(data).then(res => {
  1310. uni.showToast({
  1311. title: '申请成功',
  1312. icon: 'success'
  1313. });
  1314. this.invShow = false;
  1315. this.aleartStatus = true;
  1316. this.getOrderInfo()
  1317. }).catch(err => {
  1318. uni.showToast({
  1319. title: err,
  1320. icon: 'none'
  1321. });
  1322. });
  1323. },
  1324. // 关闭发票
  1325. invClose() {
  1326. this.invShow = false;
  1327. this.getInvoiceList()
  1328. },
  1329. //申请开票
  1330. invoiceApply() {
  1331. this.getInvoiceList()
  1332. this.moreBtn = false;
  1333. this.invShow = true;
  1334. },
  1335. aleartStatusChange() {
  1336. this.moreBtn = false;
  1337. this.aleartStatus = true
  1338. },
  1339. getInvoiceList() {
  1340. uni.showLoading({
  1341. title: '正在加载…'
  1342. })
  1343. invoiceList().then(res => {
  1344. uni.hideLoading();
  1345. this.invList = res.data.map(item => {
  1346. item.id = item.id.toString();
  1347. return item;
  1348. });
  1349. const result = this.invList.find(item => item.id == this.invChecked);
  1350. if (result) {
  1351. let name = '';
  1352. name += result.header_type === 1 ? '个人' : '企业';
  1353. name += result.type === 1 ? '普通' : '专用';
  1354. name += '发票';
  1355. this.invTitle = name;
  1356. }
  1357. }).catch(err => {
  1358. uni.showToast({
  1359. title: err,
  1360. icon: 'none'
  1361. });
  1362. });
  1363. },
  1364. more() {
  1365. this.moreBtn = !this.moreBtn
  1366. },
  1367. /**
  1368. *
  1369. * 剪切订单号
  1370. */
  1371. // #ifndef H5
  1372. copy: function() {
  1373. let that = this;
  1374. uni.setClipboardData({
  1375. data: this.orderInfo.order_id
  1376. });
  1377. },
  1378. copyKm: function() {
  1379. let that = this;
  1380. uni.setClipboardData({
  1381. data: this.orderInfo.virtual_info
  1382. });
  1383. },
  1384. // #endif
  1385. // #ifndef H5
  1386. copyAddress() {
  1387. uni.setClipboardData({
  1388. data: this.orderInfo._status.refund_name + this.orderInfo._status.refund_phone + this.orderInfo
  1389. ._status
  1390. .refund_address,
  1391. success() {
  1392. uni.Tips({
  1393. title: '复制成功',
  1394. icon: 'success'
  1395. })
  1396. }
  1397. });
  1398. },
  1399. // #endif
  1400. // #ifdef H5
  1401. copyAddress() {
  1402. // console.log('1111111111111')
  1403. // let msg =
  1404. // console.log(msg)
  1405. // return msg
  1406. },
  1407. // #endif
  1408. /**
  1409. * 打电话
  1410. */
  1411. goTel: function() {
  1412. uni.makePhoneCall({
  1413. phoneNumber: this.orderInfo.delivery_id
  1414. })
  1415. },
  1416. /**
  1417. * 设置底部按钮
  1418. *
  1419. */
  1420. getOrderStatus: function() {
  1421. let orderInfo = this.orderInfo || {},
  1422. _status = orderInfo._status || {
  1423. _type: 0
  1424. },
  1425. status = {};
  1426. let type = parseInt(_status._type),
  1427. delivery_type = orderInfo.delivery_type,
  1428. seckill_id = orderInfo.seckill_id ? parseInt(orderInfo.seckill_id) : 0,
  1429. bargain_id = orderInfo.bargain_id ? parseInt(orderInfo.bargain_id) : 0,
  1430. discount_id = orderInfo.discount_id ? parseInt(orderInfo.discount_id) : 0,
  1431. combination_id = orderInfo.combination_id ? parseInt(orderInfo.combination_id) : 0;
  1432. status = {
  1433. type: type == 9 ? -9 : type,
  1434. class_status: 0
  1435. };
  1436. if (type == 1 && combination_id > 0) status.class_status = 1; //查看拼团
  1437. if (type == 2 && delivery_type == 'express') status.class_status = 2; //查看物流
  1438. if (type == 2) status.class_status = 3; //确认收货
  1439. if (type == 4 || type == 0) status.class_status = 4; //删除订单
  1440. if (!seckill_id && !bargain_id && !combination_id && !discount_id && !orderInfo.type && (type == 3 ||
  1441. type == 4)) status
  1442. .class_status =
  1443. 5; //再次购买
  1444. this.$set(this, 'status', status);
  1445. },
  1446. /**
  1447. * 去拼团详情
  1448. *
  1449. */
  1450. goJoinPink: function() {
  1451. uni.navigateTo({
  1452. url: '/pages/activity/goods_combination_status/index?id=' + this.orderInfo.pink_id,
  1453. });
  1454. },
  1455. /**
  1456. * 再此购买
  1457. *
  1458. */
  1459. goOrderConfirm: function() {
  1460. let that = this;
  1461. orderAgain(that.orderInfo.order_id).then(res => {
  1462. return uni.navigateTo({
  1463. url: '/pages/goods/order_confirm/index?new=1&cartId=' + res.data.cateId
  1464. });
  1465. });
  1466. },
  1467. confirmOrder(orderId) {
  1468. let that = this;
  1469. uni.showModal({
  1470. title: '确认收货',
  1471. content: '为保障权益,请收到货确认无误后,再确认收货',
  1472. success: function(res) {
  1473. if (res.confirm) {
  1474. orderTake(orderId ? orderId : that.order_id).then(res => {
  1475. return that.$util.Tips({
  1476. title: '操作成功',
  1477. icon: 'success'
  1478. }, function() {
  1479. that.getOrderInfo();
  1480. });
  1481. }).catch(err => {
  1482. return that.$util.Tips({
  1483. title: err
  1484. });
  1485. })
  1486. }
  1487. }
  1488. })
  1489. },
  1490. /**
  1491. *
  1492. * 删除订单
  1493. */
  1494. delOrder: function() {
  1495. let that = this;
  1496. uni.showModal({
  1497. title: '删除订单',
  1498. content: '确定删除该订单',
  1499. success: function(res) {
  1500. if (res.confirm) {
  1501. (that.isReturen ? refundOrderDel : orderDel)(that.order_id).then(res => {
  1502. if (that.status.type == -2) {
  1503. return that.$util.Tips({
  1504. title: '删除成功',
  1505. icon: 'success'
  1506. }, {
  1507. tab: 5,
  1508. url: '/pages/users/user_return_list/index'
  1509. });
  1510. } else {
  1511. return that.$util.Tips({
  1512. title: '删除成功',
  1513. icon: 'success'
  1514. }, {
  1515. tab: 5,
  1516. url: '/pages/goods/order_list/index'
  1517. });
  1518. }
  1519. }).catch(err => {
  1520. return that.$util.Tips({
  1521. title: err
  1522. });
  1523. });
  1524. } else if (res.cancel) {
  1525. return that.$util.Tips({
  1526. title: '已取消'
  1527. });
  1528. }
  1529. }
  1530. });
  1531. },
  1532. cancelOrder() {
  1533. let self = this
  1534. uni.showModal({
  1535. title: '提示',
  1536. content: '确认取消该订单?',
  1537. success: function(res) {
  1538. if (res.confirm) {
  1539. orderCancel(self.orderInfo.order_id)
  1540. .then((data) => {
  1541. let pages = getCurrentPages(); // 获取当前打开过的页面路由数组
  1542. let prevPage = pages[pages.length - 3].$page.fullPath;//上一页面
  1543. uni.reLaunch({
  1544. url: prevPage
  1545. })
  1546. })
  1547. .catch(() => {
  1548. self.getDetail();
  1549. });
  1550. } else if (res.cancel) {
  1551. console.log('用户点击取消');
  1552. }
  1553. }
  1554. });
  1555. }
  1556. }
  1557. }
  1558. </script>
  1559. <style scoped lang="scss">
  1560. .invoice-mask {
  1561. background-color: #999999;
  1562. opacity: 1;
  1563. }
  1564. .more-mask {
  1565. background-color: #fff;
  1566. opacity: 0;
  1567. left: 160rpx;
  1568. }
  1569. .goodCall {
  1570. color: var(--view-theme);
  1571. text-align: center;
  1572. width: 100%;
  1573. height: 86rpx;
  1574. padding: 0 30rpx;
  1575. border-bottom: 1rpx solid #eee;
  1576. font-size: 30rpx;
  1577. line-height: 86rpx;
  1578. background: #fff;
  1579. .icon-kefu {
  1580. font-size: 36rpx;
  1581. margin-right: 15rpx;
  1582. }
  1583. /* #ifdef MP */
  1584. button {
  1585. display: flex;
  1586. align-items: center;
  1587. justify-content: center;
  1588. height: 86rpx;
  1589. font-size: 30rpx;
  1590. color: var(--view-theme);
  1591. }
  1592. /* #endif */
  1593. }
  1594. .order-details .header {
  1595. padding: 0 30rpx;
  1596. height: 150rpx;
  1597. }
  1598. .order-details .header.on {
  1599. background-color: #666 !important;
  1600. }
  1601. .order-details .header .pictrue {
  1602. width: 110rpx;
  1603. height: 110rpx;
  1604. }
  1605. .order-details .header .pictrue image {
  1606. width: 100%;
  1607. height: 100%;
  1608. }
  1609. .order-details .header .data {
  1610. color: rgba(255, 255, 255, 0.8);
  1611. font-size: 24rpx;
  1612. margin-left: 27rpx;
  1613. }
  1614. .order-details .header .data.on {
  1615. margin-left: 0;
  1616. }
  1617. .order-details .header .data .state {
  1618. font-size: 30rpx;
  1619. font-weight: bold;
  1620. color: #fff;
  1621. margin-bottom: 7rpx;
  1622. }
  1623. .order-details .header .data .time {
  1624. margin-left: 20rpx;
  1625. }
  1626. .order-details .nav {
  1627. background-color: #fff;
  1628. font-size: 26rpx;
  1629. color: #282828;
  1630. padding: 25rpx 0;
  1631. }
  1632. .order-details .nav .navCon {
  1633. padding: 0 40rpx;
  1634. }
  1635. .order-details .nav .on {
  1636. color: var(--view-theme);
  1637. }
  1638. .order-details .nav .progress {
  1639. padding: 0 65rpx;
  1640. margin-top: 10rpx;
  1641. }
  1642. .order-details .nav .progress .line {
  1643. width: 100rpx;
  1644. height: 2rpx;
  1645. background-color: #939390;
  1646. }
  1647. .order-details .nav .progress .iconfont {
  1648. font-size: 25rpx;
  1649. color: #939390;
  1650. margin-top: -2rpx;
  1651. }
  1652. .order-details .address {
  1653. font-size: 26rpx;
  1654. color: #868686;
  1655. background-color: #fff;
  1656. margin-top: 13rpx;
  1657. padding: 35rpx 30rpx;
  1658. }
  1659. .order-details .address .name {
  1660. font-size: 30rpx;
  1661. color: #282828;
  1662. margin-bottom: 15rpx;
  1663. }
  1664. .order-details .address .name .phone {
  1665. margin-left: 40rpx;
  1666. }
  1667. .order-details .line {
  1668. width: 100%;
  1669. height: 3rpx;
  1670. }
  1671. .order-details .line image {
  1672. width: 100%;
  1673. height: 100%;
  1674. display: block;
  1675. }
  1676. .order-details .wrapper {
  1677. background-color: #fff;
  1678. margin-top: 12rpx;
  1679. padding: 30rpx;
  1680. }
  1681. .order-details .wrapper .item {
  1682. font-size: 28rpx;
  1683. color: #282828;
  1684. }
  1685. .order-details .wrapper .item~.item {
  1686. margin-top: 20rpx;
  1687. }
  1688. .order-details .wrapper .item .conter .copy {
  1689. font-size: 20rpx;
  1690. color: #333;
  1691. border-radius: 3rpx;
  1692. border: 1rpx solid #666;
  1693. padding: 3rpx 15rpx;
  1694. margin-left: 24rpx;
  1695. transform: scale(.9);
  1696. }
  1697. .order-details .wrapper .actualPay {
  1698. border-top: 1rpx solid #eee;
  1699. margin-top: 30rpx;
  1700. padding-top: 30rpx;
  1701. }
  1702. .order-details .wrapper .actualPay .money {
  1703. font-weight: bold;
  1704. font-size: 30rpx;
  1705. }
  1706. .order-details .footer {
  1707. width: 100%;
  1708. height: 100rpx;
  1709. position: fixed;
  1710. bottom: 0;
  1711. left: 0;
  1712. background-color: #fff;
  1713. padding: 0 30rpx;
  1714. box-sizing: border-box;
  1715. }
  1716. .order-details .footer .bnt {
  1717. width: 150rpx;
  1718. height: 60rpx;
  1719. text-align: center;
  1720. line-height: 60rpx;
  1721. border-radius: 50rpx;
  1722. color: #fff;
  1723. font-size: 27rpx;
  1724. }
  1725. .order-details .footer .bnt~.bnt {
  1726. margin-left: 18rpx;
  1727. }
  1728. .order-details .writeOff {
  1729. background-color: #fff;
  1730. margin-top: 13rpx;
  1731. padding-bottom: 30rpx;
  1732. }
  1733. .order-details .writeOff .title {
  1734. font-size: 30rpx;
  1735. color: #282828;
  1736. height: 87rpx;
  1737. border-bottom: 1px solid #f0f0f0;
  1738. padding: 0 30rpx;
  1739. line-height: 87rpx;
  1740. }
  1741. .order-details .writeOff .grayBg {
  1742. background-color: #f2f5f7;
  1743. width: 590rpx;
  1744. height: 384rpx;
  1745. border-radius: 20rpx 20rpx 0 0;
  1746. margin: 50rpx auto 0 auto;
  1747. padding-top: 55rpx;
  1748. position: relative;
  1749. }
  1750. .order-details .writeOff .grayBg .written {
  1751. position: absolute;
  1752. top: 0;
  1753. right: 0;
  1754. width: 60rpx;
  1755. height: 60rpx;
  1756. }
  1757. .order-details .writeOff .grayBg .written image {
  1758. width: 100%;
  1759. height: 100%;
  1760. }
  1761. .order-details .writeOff .grayBg .pictrue {
  1762. width: 290rpx;
  1763. height: 290rpx;
  1764. margin: 0 auto;
  1765. }
  1766. .order-details .writeOff .grayBg .pictrue image {
  1767. width: 100%;
  1768. height: 100%;
  1769. display: block;
  1770. }
  1771. .order-details .writeOff .gear {
  1772. width: 590rpx;
  1773. height: 30rpx;
  1774. margin: 0 auto;
  1775. }
  1776. .order-details .writeOff .gear image {
  1777. width: 100%;
  1778. height: 100%;
  1779. display: block;
  1780. }
  1781. .order-details .writeOff .num {
  1782. background-color: #f0c34c;
  1783. width: 590rpx;
  1784. height: 84rpx;
  1785. color: #282828;
  1786. font-size: 48rpx;
  1787. margin: 0 auto;
  1788. border-radius: 0 0 20rpx 20rpx;
  1789. text-align: center;
  1790. padding-top: 4rpx;
  1791. }
  1792. .order-details .writeOff .rules {
  1793. margin: 46rpx 30rpx 0 30rpx;
  1794. border-top: 1px solid #f0f0f0;
  1795. padding-top: 10rpx;
  1796. }
  1797. .order-details .writeOff .rules .item {
  1798. margin-top: 20rpx;
  1799. }
  1800. .order-details .writeOff .rules .item .rulesTitle {
  1801. font-size: 28rpx;
  1802. color: #282828;
  1803. }
  1804. .order-details .writeOff .rules .item .rulesTitle .iconfont {
  1805. font-size: 30rpx;
  1806. color: #333;
  1807. margin-right: 8rpx;
  1808. margin-top: 5rpx;
  1809. }
  1810. .order-details .writeOff .rules .item .info {
  1811. font-size: 28rpx;
  1812. color: #999;
  1813. margin-top: 7rpx;
  1814. }
  1815. .order-details .writeOff .rules .item .info .time {
  1816. margin-left: 20rpx;
  1817. }
  1818. .order-details .map {
  1819. height: 86rpx;
  1820. font-size: 30rpx;
  1821. color: #282828;
  1822. line-height: 86rpx;
  1823. border-bottom: 1px solid #f0f0f0;
  1824. margin-top: 13rpx;
  1825. background-color: #fff;
  1826. padding: 0 30rpx;
  1827. }
  1828. .order-details .map .place {
  1829. font-size: 26rpx;
  1830. width: 176rpx;
  1831. height: 50rpx;
  1832. border-radius: 25rpx;
  1833. line-height: 50rpx;
  1834. text-align: center;
  1835. }
  1836. .order-details .map .place .iconfont {
  1837. font-size: 27rpx;
  1838. height: 27rpx;
  1839. line-height: 27rpx;
  1840. margin: 2rpx 3rpx 0 0;
  1841. }
  1842. .order-details .address .name .iconfont {
  1843. font-size: 34rpx;
  1844. margin-left: 10rpx;
  1845. }
  1846. .refund {
  1847. .title {
  1848. display: flex;
  1849. align-items: center;
  1850. font-size: 30rpx;
  1851. color: #333;
  1852. height: 86rpx;
  1853. border-bottom: 1px solid #f5f5f5;
  1854. image {
  1855. width: 32rpx;
  1856. height: 32rpx;
  1857. margin-right: 10rpx;
  1858. }
  1859. }
  1860. .con {
  1861. padding-top: 25rpx;
  1862. font-size: 28rpx;
  1863. color: #868686;
  1864. }
  1865. }
  1866. .refund-msg {
  1867. background-color: #fff;
  1868. padding: 20rpx 40rpx;
  1869. font-size: 28rpx;
  1870. .refund-msg-user {
  1871. font-weight: bold;
  1872. margin-bottom: 10rpx;
  1873. .copy-refund-msg {
  1874. font-size: 10px;
  1875. border-radius: 1px;
  1876. border: 0.5px solid #666;
  1877. padding: 1px 7px;
  1878. margin-left: 12px;
  1879. }
  1880. .name {
  1881. margin-right: 20rpx;
  1882. }
  1883. }
  1884. .refund-address {
  1885. color: #868686;
  1886. }
  1887. }
  1888. </style>