index.vue 57 KB

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