index.vue 56 KB

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