index_mall.vue 53 KB

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