orderDetail.vue 72 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274
  1. <template>
  2. <view>
  3. <!-- <sjs src="../../../utils/formatFuc.sjs" module="utils" /> -->
  4. <view class="container">
  5. <!-- 未支付 -->
  6. <view class="not-pay-module" v-if="payOverTime > 0">
  7. <view class="pay-amount">
  8. <image mode="aspectFit" src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-order-wallet.png">
  9. </image>
  10. <view>
  11. 待支付,剩余
  12. <text>{{ formatOverTime(payOverTime) }}</text>
  13. </view>
  14. </view>
  15. <view class="over-time">超过30分钟未支付,订单将自动取消</view>
  16. <view class="pay-now" @tap.stop.prevent="payOrder" :data-id="orderInfo.id" :data-sn="orderInfo.orderSn"
  17. v-if="orderInfo.handleOption.pay">继续支付</view>
  18. </view>
  19. <!-- 卡片 -->
  20. <view class="top-card" :tt-if="orderInfo.orderStatusVal != '未支付' && orderInfo.orderStatusVal != '已取消'">
  21. <view class="top-name">{{ orderInfo.goodsName }}</view>
  22. <view class="top-times">
  23. <view class="top-sku-name">{{ orderInfo.skuName }}</view>
  24. <view>
  25. 剩余
  26. <text>{{ remainTimes }}</text>
  27. </view>
  28. <view class="serviced-times">
  29. 已服务
  30. <text>{{ orderInfo.servedTimes }}</text>
  31. </view>
  32. </view>
  33. <view class="top-tips">预约后,将为您上门服务,详情请咨询客服。</view>
  34. <view class="appoint-tag" @tap="goAppoint" v-if="orderInfo.handleOption.book">预约服务</view>
  35. </view>
  36. <!--
  37. <view class="top-new" v-if="orderInfo.orderStatusVal != '未支付'">
  38. <image mode="aspectFit" class="top-bg-img"
  39. src="https://jzmall.lifejingzhi.com/file/jzmall-dy/detail-bg-01.png"></image>
  40. <image mode="aspectFit" class="top-bg-img2"
  41. src="https://jzmall.lifejingzhi.com/file/jzmall-dy/detail-bg-02.png"></image>
  42. <view class="status-val">{{orderInfo.bookDetailServiceTip.masterTipContent}}</view>
  43. <view class="status-tips">{{orderInfo.bookDetailServiceTip.secondTipContent}}</view>
  44. <view class="book-detail-tip" v-if="orderInfo.bookDetailServiceTip.tip">
  45. {{orderInfo.bookDetailServiceTip.tip}}
  46. </view>
  47. </view> -->
  48. <!-- 未付款 如有任何问题,请及时联系我们!
  49. 用户取消 期望下次为您提供更优质的服务!
  50. 系统取消 期望下次为您提供更优质的服务!
  51. 已取消(管理员) 期望下次为您提供更优质的服务!
  52. 已付款 如有任何问题,请及时联系我们!
  53. 申请退款 如有任何问题,请及时联系我们!
  54. 已退款 如有任何问题,请及时联系我们 !
  55. 服务中 服务预约成功,等待上门…
  56. 服务已完成 期望下次为您提供更优质的服务!
  57. 服务已完成(系统) 期望下次为您提供更优质的服务! -->
  58. <!-- 预约引导 -->
  59. <!-- <view v-if="showQuickBookBtn" class="fast-appoint-block">
  60. <view class="fast-appoint-title">
  61. 便捷预约:您还有 <text class="order-num">{{queryBookCount}}</text> 个订单<text class="not-appoint">未预约</text>
  62. </view>
  63. <view class="fast-appoint-btn" @tap="goAppointOther">
  64. 相同时间,再约一单
  65. </view>
  66. </view> -->
  67. <!-- 未预约服务 -->
  68. <!-- <view class="not-appoint-block" v-if="orderInfo.bookDetailServiceTip.canBookCount>=1">
  69. <view class="not-appoint-title">
  70. <view>未预约服务</view>
  71. <view class="not-appoint-times">剩余服务 {{orderInfo.bookDetailServiceTip.canBookCount}} 次</view>
  72. </view>
  73. <view class="not-appoint-btn" @tap="goAppoint">
  74. 立即预约
  75. </view>
  76. </view> -->
  77. <!-- 退款工单 -->
  78. <view class="refund-order-module" v-if="afterSale">
  79. <view class="refund-title">
  80. <view class="title-text">退款工单</view>
  81. <view class="title-order">编号:{{ afterSale.afterSn }}</view>
  82. <view class="title-status">{{ afterSale.statusVal }}</view>
  83. </view>
  84. <view class="refund-main">
  85. <view class="row">
  86. <text>申请时间:</text>
  87. {{ afterSale.createTime }}
  88. </view>
  89. <view class="row">
  90. <text>退款时间:</text>
  91. {{ afterSale.refundTime }}
  92. </view>
  93. <view class="row">
  94. <text>退款原因:</text>
  95. {{ afterSale.typeVal }}
  96. </view>
  97. <view class="row">
  98. <text>详细原因:</text>
  99. {{ afterSale.reason }}
  100. </view>
  101. </view>
  102. <view class="refuse-remark-wrapper" v-if="afterSale.statusVal == '已拒绝'">
  103. <view class="refuse-remark">
  104. <text>已拒绝:</text>
  105. {{ afterSale.refusalRemark }}
  106. </view>
  107. </view>
  108. <view v-if="afterSale.statu == '1'" class="refund-operate">
  109. <view @tap="cancelRefund">取消退款</view>
  110. </view>
  111. </view>
  112. <view class="service-list" v-if="dyDetails.length > 0">
  113. <view class="service-item" v-for="(item, index) in dyDetails" :key="index" @click="toExpand(item)">
  114. <view class="collapse-title">
  115. <view class="collapse-left">
  116. <view class="status">
  117. {{ item.statusVal }}
  118. </view>
  119. <view class="book-time" v-if="item.isFold">
  120. 上门时段:{{ item.bookTime }}
  121. </view>
  122. </view>
  123. <view class="collapse-right">
  124. <view class="service-times ">
  125. {{ item.serviceTimes }}
  126. </view>
  127. <view class="icon" v-if="item.isFold">
  128. <image src="https://jzmall.lifejingzhi.com/file/jzmall-dy/jt.png"
  129. style="width: 100%;height: 100%;"></image>
  130. </view>
  131. </view>
  132. </view>
  133. <view v-if="!item.isFold">
  134. <view class="service-num">
  135. <view class="service-id">工单编号:{{ item.id }}</view>
  136. </view>
  137. <view class="service-main">
  138. <view class="customer-info">
  139. <image mode="aspectFit"
  140. src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-order-map.png">
  141. </image>
  142. <view class="customer-main">
  143. <view class="main-line">
  144. <view style="font-size: 29rpx;">{{ item.customerName }}</view>
  145. <view class="phone">{{ item.customerPhone }}</view>
  146. </view>
  147. <view class="customer-address" v-if="item.addressName"
  148. style="color: #999;font-size: 25rpx;">
  149. {{ item.addressName }}{{ item.serviceAddress }}
  150. </view>
  151. </view>
  152. </view>
  153. <view class="row" v-else-if="">
  154. <text>预约时间:</text>
  155. {{ item.bookTime }}
  156. </view>
  157. <view class="several-people" v-if="item.isMultiWorker">
  158. <view class="title-tips">
  159. <view class="image">
  160. <image src="https://jzmall.lifejingzhi.com/file/jzmall-dy/dr.png"
  161. mode="aspectFill"></image>
  162. </view>
  163. <view class="tips-content">
  164. 本单为多人上门服务,上门时段可能不同,请您留意
  165. </view>
  166. </view>
  167. <view class="product-one" v-for="(iitem,iindex) in item.serviceInfoList">
  168. <view class="service-name">
  169. {{iitem.skillName}}
  170. </view>
  171. <view class="service-peoplenum">
  172. ({{iitem.workerNum}}人)
  173. </view>
  174. <view class="service-time">
  175. {{iitem.bookTime}}
  176. </view>
  177. </view>
  178. </view>
  179. <view class="row" v-if="isShowPL">
  180. <text>服务内容:</text>
  181. {{ orderInfo.skuName }}
  182. </view>
  183. <view class="row">
  184. <text>预约备注:</text>
  185. {{ item.customerRemark }}
  186. </view>
  187. <view class="service-remark-wrapper">
  188. <view class="service-store">
  189. <view class="store-left">
  190. <image mode="aspectFit"
  191. src="https://jzmall.lifejingzhi.com/file/jzmall-dy/xfz.png">
  192. </image>
  193. <view>服务门店</view>
  194. </view>
  195. <view class="store-right">
  196. <view>服务咨询</view>
  197. <image mode="aspectFit" @tap="makeStorePhone" :data-phone="item.shopPhone"
  198. src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-phone-new.png">
  199. </image>
  200. </view>
  201. </view>
  202. </view>
  203. <view v-if="item.ticketVo" class="ticket">
  204. <view class="title">
  205. <view style="font-weight: 600">售后进度</view>
  206. <view class="comment" @tap="showTicketTips" :data-id="item.ticketVo.ticketId"
  207. v-if="item.ticketVo.isSatisfaction">评价售后</view>
  208. </view>
  209. <view class="timeline">
  210. <block v-for="(action, index1) in item.ticketVo.actions" :key="index1">
  211. <view class="timeline-event">
  212. <view
  213. :style="index == 0 ? 'background-color: #09afff' : 'background-color: rgb(193 194 195)'"
  214. class="timeline-marker"></view>
  215. <view class="timeline-event-copy">
  216. <view class="timeline-event-thumbnail">
  217. <text
  218. :class="index == 0 ? '' : 'timeline-text'">状态:{{ action.status }}</text>
  219. <text class="timeline-text">{{ action.createTime }}</text>
  220. </view>
  221. <view class="timeline-event-content">
  222. <text class="timeline-text">{{ action.content }}</text>
  223. </view>
  224. </view>
  225. </view>
  226. </block>
  227. </view>
  228. </view>
  229. <view class="service-operate">
  230. <view v-if="item.isCancel" class="btn-del" @tap="goCancelBook" :data-id="item.id"
  231. :data-phone="item.shopPhone">取消预约</view>
  232. <view v-if="item.canModify" :data-id="item.id" @tap="showMsg" class="btn-msg">追加备注
  233. </view>
  234. <view v-if="item.canModify" @tap="goEditAppoint" :data-id="item.id"
  235. :data-status="item.status" :data-time="item.bookTime">
  236. 修改预约
  237. </view>
  238. <view v-if="item.acceptanceAble" @tap="goReVisit" :data-id="item.id">服务验收</view>
  239. </view>
  240. </view>
  241. </view>
  242. </view>
  243. </view>
  244. <!-- 商品和订单信息 -->
  245. <view class="product-block">
  246. <view class="product-detail">
  247. <view class="profuct-info">
  248. <image mode="aspectFit" class="product-img" :src="orderInfo.picUrl + '?w=200'"></image>
  249. <view class="info-right">
  250. <view class="info-main">
  251. <view class="product-name">{{ orderInfo.goodsName }}</view>
  252. <view class="price">
  253. ¥
  254. <text style="font-size: 24rpx">{{ orderInfo.actualPrice }}</text>
  255. </view>
  256. </view>
  257. <view class="sku-name" v-if="orderInfo.increaseSumPrice">
  258. <view>加购: {{ orderInfo.unitDescribe }}*{{ orderInfo.unitIncreaseNumber }}</view>
  259. <view>¥{{ orderInfo.increaseSumPrice }}</view>
  260. </view>
  261. <view class="sku-name">规格:{{ orderInfo.skuName }}</view>
  262. <view class="other-info">服务{{ orderInfo.serviceTimes }}次</view>
  263. </view>
  264. </view>
  265. </view>
  266. <!-- 过期退,随时退 -->
  267. <view v-if="payOverTime > 0" class="refund-tips-bar">
  268. <image mode="aspectFit" src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-checkred.png">
  269. </image>
  270. <view>过期退</view>
  271. <image mode="aspectFit" src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-checkred.png">
  272. </image>
  273. <view>随时退</view>
  274. <image mode="aspectFit" src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-checkred.png">
  275. </image>
  276. <view>0费用</view>
  277. <image mode="aspectFit" src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-checkred.png">
  278. </image>
  279. <view>全国百城连锁</view>
  280. </view>
  281. </view>
  282. <view class="order-info">
  283. <view class="order-title">
  284. 订单信息
  285. </view>
  286. <view class="order-top">
  287. <view class="topic">订单编号:</view>
  288. <view class="ordersn-wrapper">
  289. <view>
  290. {{ orderInfo.orderSn }}
  291. </view>
  292. <view class="copy-text" @tap="copyOrder" :data-id="orderInfo.orderSn">复制</view>
  293. </view>
  294. </view>
  295. <view class="order-top">
  296. <view class="topic">下单时间:</view>
  297. <view>
  298. {{ orderInfo.createTime }}
  299. </view>
  300. </view>
  301. <view class="order-top">
  302. <view class="topic">支付方式:</view>
  303. <view>
  304. {{ orderInfo.payChannel }}
  305. </view>
  306. </view>
  307. <view class="order-top">
  308. <view class="topic">订单金额:</view>
  309. <view>
  310. {{ orderInfo.orderPrice }}
  311. </view>
  312. </view>
  313. <view class="order-top">
  314. <view class="topic">优惠金额:</view>
  315. <view>
  316. {{ orderInfo.discountPrice }}
  317. </view>
  318. </view>
  319. <view class="order-top">
  320. <view class="topic">实际付款:</view>
  321. <view>
  322. {{ orderInfo.actualPrice }}
  323. </view>
  324. </view>
  325. </view>
  326. <!-- 客户服务 -->
  327. <view class="customer-service">
  328. <view class="title">客户服务</view>
  329. <view class="contact-store" v-if="payOverTime > 0">
  330. <view class="topic">联系门店</view>
  331. <view class="remark">预约、服务信息咨询</view>
  332. <image mode="aspectFit" src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-order-phone.png"
  333. @tap="makeStorePhone" data-phone="4009218987"></image>
  334. </view>
  335. <view class="contact-company" @tap="goIM">
  336. <view class="topic">总部客服</view>
  337. <view class="remark">订单咨询、投诉建议</view>
  338. <image mode="aspectFit" src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-order-kf.png">
  339. </image>
  340. <!-- <button class="contact-btn" open-type="contact">客服</button> -->
  341. </view>
  342. </view>
  343. <!-- 底部按钮 -->
  344. <view class="fixed-bottom">
  345. <view class="order-operate-wrapper">
  346. <view @tap.stop.prevent="cancelOrder" v-if="orderInfo.handleOption.cancel" :data-id="orderInfo.id"
  347. class="del">取消订单</view>
  348. <view v-if="orderInfo.handleOption.book" class="appoint" @tap.stop.prevent="goAppoint">立即预约
  349. </view>
  350. <view @tap.stop.prevent="payOrder" :data-id="orderInfo.id" :data-sn="orderInfo.orderSn"
  351. v-if="orderInfo.handleOption.pay">立即支付</view>
  352. </view>
  353. <!-- 投诉建议弹框 -->
  354. <view class="goods-info-overlay" v-if="complainTips">
  355. <view class="goods-info-popup">
  356. <view class="popup-title">投诉建议</view>
  357. <view class="tips-title">电话:{{ shopPhone }}</view>
  358. <view style="padding: 0 20rpx 100rpx 32rpx; margin-top: -20rpx">对服务不满意或其他建议,请拨打投诉电话。</view>
  359. <view class="popup-bottom">
  360. <view class="btn-cancel" @tap="cancelComplain">取消</view>
  361. <view class="btn-conf" @tap="confComplain">拨打电话</view>
  362. </view>
  363. </view>
  364. </view>
  365. <!-- 客户追加备注弹框 -->
  366. <view class="appoint-overlay-wrapper" v-if="msgShow" @tap="onMsgClose"></view>
  367. <view class="remark-popup" v-if="msgShow">
  368. <view class="title" style="display: flex; justify-content: space-between">
  369. <view>订单备注</view>
  370. <view style="font-size: 18rpx; color: #09afff; margin-top: 18px">{{ message.length }}/50
  371. </view>
  372. </view>
  373. <textarea @input="bindMsgInput" placeholder="请输入订单备注信息,此信息会提醒到服务人员" :value="message"
  374. placeholder-style="font-size:26rpx;color:#666;" maxlength="50"
  375. class="remark-textarea"></textarea>
  376. <view class="btn" @tap="confirmMsg">确定</view>
  377. </view>
  378. <!-- 售后投诉满意回收 -->
  379. <view class="goods-info-overlay" v-if="ticketTips">
  380. <view class="goods-info-popup">
  381. <view class="popup-title">售后评价</view>
  382. <view class="ticket-tips-content">你的售后问题是否已被解决?您对售后服务是否满意?请打分。</view>
  383. <view style="display: flex; justify-content: center">
  384. <image class="ticket-img" data-id="1" @tap="selectTicketValue"
  385. :src="'/static/images/new/' + (satisfaction == 0 ? 'star' : satisfaction == 2 || satisfaction == 1 ? 'star_red' : 'star_yellow') + '.png'">
  386. </image>
  387. <image class="ticket-img" data-id="2" @tap="selectTicketValue"
  388. :src="'/static/images/new/' + (satisfaction <= 1 ? 'star' : satisfaction == 2 ? 'star_red' : 'star_yellow') + '.png'">
  389. </image>
  390. <image class="ticket-img" data-id="3" @tap="selectTicketValue"
  391. :src="'/static/images/new/' + (satisfaction >= 3 ? 'star_yellow' : 'star') + '.png'">
  392. </image>
  393. <image class="ticket-img" data-id="4" @tap="selectTicketValue"
  394. :src="'/static/images/new/' + (satisfaction >= 4 ? 'star_yellow' : 'star') + '.png'">
  395. </image>
  396. <image class="ticket-img" data-id="5" @tap="selectTicketValue"
  397. :src="'/static/images/new/' + (satisfaction == 5 ? 'star_yellow' : 'star') + '.png'">
  398. </image>
  399. </view>
  400. <view class="ticket-tips">{{ satisfactionTips.tips }}</view>
  401. <view class="popup-bottom">
  402. <view class="btn-cancel" @tap="cancelTicketTips">取消</view>
  403. <view class="btn-conf" @tap="confTicketTips">立即提交</view>
  404. </view>
  405. </view>
  406. </view>
  407. <!-- 选择取消原因 -->
  408. <view class="appoint-overlay-wrapper remark-overlay" v-if="cancelShow" @tap="onCancelPopupClose">
  409. <view class="remark-select" @tap.stop.prevent="onCancelClick">
  410. <view class="title">选择取消原因</view>
  411. <view class="remark-list">
  412. <view class="remark-item" :data-id="item.id" @tap.stop.prevent="cancelItemSelect"
  413. v-for="(item, index) in cancelList" :key="index">
  414. <view class="remark-value">{{ item.value }}</view>
  415. <image mode="aspectFit"
  416. src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-select-popup.png"
  417. class="radio-img" v-if="cancelReason == item.id"></image>
  418. <image mode="aspectFit"
  419. src="https://jzmall.lifejingzhi.com/file/jzmall-dy/icon-unselect-popup.png"
  420. class="radio-img" v-else></image>
  421. </view>
  422. </view>
  423. <view class="remark-conf-btn" @tap.stop.prevent="cancelItemConfirm">取消预约</view>
  424. </view>
  425. </view>
  426. <contact-mov :pageX="30" :pageY="420"></contact-mov>
  427. <view class="refund-order-overlay" v-if="refundTipShow">
  428. <view class="refund-order-dialog">
  429. <view class="refund-dia-tips">您遇到任何问题都可联系在线客服,我们将竭诚为您解决问题!</view>
  430. <view class="dia-btn-wrapper">
  431. <view class="dia-cancel-btn" @tap="refundOrder">继续退款</view>
  432. <view class="dia-conf-btn" @tap="goIM">联系在线客服</view>
  433. </view>
  434. </view>
  435. </view>
  436. </view>
  437. </view>
  438. </view>
  439. </template>
  440. <script>
  441. var util = require('../../../utils/util.js');
  442. var api = require('../../../config/api.js');
  443. var app = getApp();
  444. import contactMov from '@/components/contact-mov';
  445. export default {
  446. components: {
  447. contactMov,
  448. },
  449. data() {
  450. return {
  451. isExpanded: false,
  452. excludeAxb: '',
  453. //订单不包含安心包,才可以退款
  454. orderId: 0,
  455. payOverTime: 0,
  456. timer: '',
  457. remainTimes: '',
  458. orderInfo: {
  459. bookDetailServiceTip: {
  460. canBookCount: 0,
  461. },
  462. handleOption: {
  463. book: false,
  464. pay: '',
  465. cancel: '',
  466. refund: ''
  467. },
  468. detailId: '',
  469. id: '',
  470. orderSn: '',
  471. orderStatusVal: '',
  472. goodsName: '',
  473. skuName: '',
  474. servedTimes: '',
  475. picUrl: '',
  476. actualPrice: '',
  477. increaseSumPrice: '',
  478. unitDescribe: '',
  479. unitIncreaseNumber: '',
  480. serviceTimes: '',
  481. createTime: '',
  482. payChannel: '',
  483. orderPrice: '',
  484. discountPrice: '',
  485. goodsId: ''
  486. },
  487. dyDetails: [],
  488. afterSale: null,
  489. orderGoods: [],
  490. expressInfo: {},
  491. flag: false,
  492. handleOption: {},
  493. orderType: 0,
  494. //如果是1表示从引荐人的订单列表过来的,需要隐藏操作按钮
  495. shopPhone: '',
  496. complainTips: false,
  497. ticketTips: false,
  498. //投诉工单 处理结果回收
  499. ticketId: '',
  500. //投诉id
  501. satisfaction: 0,
  502. //投诉处理满意度
  503. satisfactionTips: {
  504. tips: ''
  505. },
  506. satisfactionLow: {
  507. tips: '非常抱歉,我们会立即安排专属客服跟进了解具体问题!',
  508. notice: '您的评价是对我们最大的鼓励和鞭策,感谢您的评价。'
  509. },
  510. satisfactionMid: {
  511. tips: '我们会持续了解问题,为您提供更好的服务',
  512. notice: '感谢您的评价,我们会持续收集顾客的建议,优化服务!'
  513. },
  514. satisfactionHigh: {
  515. tips: '感谢您的认可,我们将为您持续提供优质服务',
  516. notice: '感谢您的认可,我们将持续为您提供更加优质的服务!'
  517. },
  518. star: '/static/images/new/star.png',
  519. starYellow: '/static/images/new/star_yellow.png',
  520. starRed: '/static/images/new/star_red.png',
  521. msgShow: false,
  522. //客户追加备注
  523. message: '',
  524. //备注信息
  525. msgDetailId: '',
  526. //备注工单号
  527. cancelList: [{
  528. id: 19,
  529. value: '【个人原因】临时有事暂时不预约'
  530. },
  531. {
  532. id: 20,
  533. value: '【个人原因】先囤着以后再约'
  534. },
  535. {
  536. id: 22,
  537. value: '【个人原因】计划有变不需要了'
  538. },
  539. {
  540. id: 21,
  541. value: '【商家原因】保洁师无法上门服务'
  542. },
  543. {
  544. id: 23,
  545. value: ' 其他'
  546. }
  547. ],
  548. //取消页面
  549. cancelShow: false,
  550. cancelDetailId: '',
  551. cancelReason: '',
  552. //选中的取消原因项
  553. //是否台数的商品 直接显示上门时间和服务内容
  554. isShowPL: false,
  555. action: {
  556. status: '',
  557. createTime: '',
  558. content: ''
  559. },
  560. refundTipShow: false,
  561. refundId: '',
  562. showQuickBookBtn: false,
  563. queryBookCount: '',
  564. quickBookInfo: {},
  565. itemStyle: {
  566. marginTop: '20px'
  567. }
  568. };
  569. },
  570. onLoad: function(options) {
  571. // 页面初始化 options为页面跳转所带来的参数
  572. this.setData({
  573. orderId: options.id,
  574. orderType: options.orderType
  575. });
  576. // this.getOrderDetail();
  577. },
  578. onShow: function() {
  579. // 页面显示
  580. this.getOrderDetail();
  581. util.addLog(1, 7, 16, {
  582. orderId: this.orderId
  583. });
  584. },
  585. onPullDownRefresh() {
  586. uni.showNavigationBarLoading(); //在标题栏中显示加载
  587. this.getOrderDetail();
  588. uni.hideNavigationBarLoading(); //完成停止加载
  589. uni.stopPullDownRefresh(); //停止下拉刷新
  590. },
  591. onReady: function() {
  592. // 页面渲染完成
  593. },
  594. onHide: function() {
  595. console.log('onHide');
  596. util.addLog(2, 7, 16, {
  597. orderId: this.orderId
  598. });
  599. // clearInterval(this.data.timer);
  600. },
  601. onUnload: function() {
  602. console.log('onunload');
  603. clearInterval(this.timer);
  604. },
  605. methods: {
  606. toExpand(item) {
  607. // this.isExpanded = !this.isExpanded;
  608. item.isFold = !item.isFold
  609. },
  610. onChange(event) {
  611. console.log("event.detail", event.detail);
  612. this.setData({
  613. activeNames: event.detail,
  614. });
  615. },
  616. formatOverTime(time) {
  617. var minute = '00';
  618. var second = '00';
  619. if (time > 0) {
  620. minute = (Math.floor(time / 60) < 10 ? ('0' + Math.floor(time / 60)) : Math.floor(time / 60));
  621. second = (Number(time % 60).toFixed(0) < 10 ? ('0' + Number(time % 60).toFixed(0)) : Number(time % 60)
  622. .toFixed(0));
  623. }
  624. var result = "00:" + minute + ":" + second;
  625. return result;
  626. },
  627. servciceName(index) {
  628. var modelText = '';
  629. switch (index) {
  630. case 0:
  631. modelText = '一';
  632. break;
  633. case 1:
  634. modelText = '二';
  635. break;
  636. case 2:
  637. modelText = '三';
  638. break;
  639. case 3:
  640. modelText = '四';
  641. break;
  642. case 4:
  643. modelText = '五';
  644. break;
  645. case 5:
  646. modelText = '六';
  647. break;
  648. case 6:
  649. modelText = '七';
  650. break;
  651. case 7:
  652. modelText = '八';
  653. break;
  654. default:
  655. modelText = '';
  656. }
  657. return modelText;
  658. },
  659. cancelItemConfirm() {
  660. let that = this;
  661. if (that.cancelReason == '') {
  662. util.showErrorToast('请选择取消原因');
  663. return;
  664. }
  665. uni.showLoading({
  666. title: '提交中'
  667. });
  668. util.request(
  669. api.OrderBookCancel, {
  670. detailId: that.cancelDetailId,
  671. cancelReason: that.cancelReason
  672. },
  673. 'POST'
  674. ).then((res) => {
  675. uni.hideLoading();
  676. if (res.errno === 0) {
  677. uni.showToast({
  678. title: '提交成功'
  679. });
  680. let items = that.dyDetails;
  681. items.forEach((item, index) => {
  682. item.isFold = true;
  683. // if(index==0){
  684. // item.isFold = false;
  685. // }
  686. if (item.id == that.cancelDetailId) {
  687. item.isCancel = false;
  688. item.statusVal = '已取消';
  689. item.status = 6;
  690. }
  691. });
  692. // console.log("items",items);
  693. this.setData({
  694. cancelShow: false,
  695. dyDetails: items,
  696. 'orderInfo.handleOption.book': true,
  697. 'orderInfo.detailId': res.data
  698. });
  699. } else {
  700. uni.showToast({
  701. title: res.errmsg,
  702. icon: 'none',
  703. duration: 2000
  704. });
  705. }
  706. });
  707. },
  708. toggleService(e) {
  709. let index = e.currentTarget.dataset.index;
  710. let list = this.dyDetails;
  711. list[index].isFold = !list[index].isFold;
  712. this.setData({
  713. dyDetails: list
  714. })
  715. },
  716. goCancelBook(e) {
  717. //取消工单预约
  718. this.setData({
  719. cancelDetailId: e.currentTarget.dataset.id,
  720. cancelShow: true
  721. });
  722. },
  723. cancelItemSelect(e) {
  724. this.setData({
  725. cancelReason: e.currentTarget.dataset.id
  726. });
  727. },
  728. onCancelPopupClose() {
  729. this.setData({
  730. cancelShow: false
  731. });
  732. },
  733. onCancelClick() {
  734. //无实际意义 防止冒泡
  735. },
  736. cancelTicketTips() {
  737. this.setData({
  738. ticketTips: false
  739. });
  740. },
  741. showMsg(e) {
  742. let detailId = e.currentTarget.dataset.id;
  743. let bookMsg = null;
  744. this.dyDetails.forEach((item) => {
  745. if (item.id == detailId) {
  746. bookMsg = item.customerRemark;
  747. }
  748. });
  749. this.setData({
  750. msgShow: true,
  751. msgDetailId: e.currentTarget.dataset.id,
  752. message: bookMsg ? bookMsg : this.message
  753. });
  754. },
  755. onMsgClose() {
  756. this.setData({
  757. msgShow: false
  758. });
  759. },
  760. confirmMsg() {
  761. if (this.message == '') {
  762. util.showErrorToast('请输入备注');
  763. return;
  764. }
  765. let that = this;
  766. uni.showLoading({
  767. title: '提交中'
  768. });
  769. util.request(
  770. api.ServiceOrderBookMsg, {
  771. detailId: that.msgDetailId,
  772. message: that.message
  773. },
  774. 'POST'
  775. ).then(function(res) {
  776. uni.hideLoading();
  777. if (res.errno === 0) {
  778. uni.showToast({
  779. title: '提交成功'
  780. });
  781. //赋值给所有工单
  782. let dyDetails = that.dyDetails;
  783. dyDetails.forEach((item) => {
  784. item.isFold = true;
  785. if (item.id == that.msgDetailId) {
  786. item.customerRemark = that.message;
  787. }
  788. });
  789. that.setData({
  790. msgShow: false,
  791. dyDetails: dyDetails
  792. });
  793. }
  794. });
  795. },
  796. bindMsgInput(e) {
  797. this.setData({
  798. message: e.detail.value
  799. });
  800. },
  801. showTicketTips(e) {
  802. let ticketId = parseInt(e.currentTarget.dataset.id);
  803. this.setData({
  804. ticketTips: true,
  805. ticketId: ticketId
  806. });
  807. },
  808. selectTicketValue(e) {
  809. //点击星号
  810. let id = parseInt(e.currentTarget.dataset.id);
  811. this.setData({
  812. satisfaction: id
  813. });
  814. let tips = this.satisfactionLow;
  815. if (id >= 3 && id < 5) tips = this.satisfactionMid;
  816. else if (id == 5) {
  817. tips = this.satisfactionHigh;
  818. }
  819. this.setData({
  820. satisfactionTips: tips
  821. });
  822. },
  823. confTicketTips() {
  824. if (this.satisfaction == 0) {
  825. util.showErrorToast('请选择满意度');
  826. return;
  827. }
  828. let that = this;
  829. uni.showLoading({
  830. title: '提交中'
  831. });
  832. util.request(
  833. api.TicketSatisfaction, {
  834. id: that.ticketId,
  835. satisfaction: that.satisfaction
  836. },
  837. 'POST'
  838. ).then(function(res) {
  839. if (res.errno === 0) {
  840. uni.hideLoading();
  841. //隐藏弹框并设置工单为已评论过
  842. let dyDetails = that.dyDetails;
  843. dyDetails.forEach((detail) => {
  844. detail.isFold = true;
  845. if (detail.ticketVo && detail.ticketVo.ticketId == that.ticketId) {
  846. detail.ticketVo.isSatisfaction = false;
  847. console.info('进入');
  848. console.info(detail);
  849. }
  850. });
  851. that.setData({
  852. ticketTips: false,
  853. dyDetails: dyDetails
  854. });
  855. uni.showToast({
  856. title: that.satisfactionTips.notice,
  857. icon: 'none',
  858. duration: 2000
  859. });
  860. }
  861. });
  862. },
  863. expandDetail: function() {
  864. let that = this;
  865. this.setData({
  866. flag: !that.flag
  867. });
  868. },
  869. getOrderDetail: function() {
  870. uni.showLoading({
  871. title: '加载中'
  872. });
  873. setTimeout(function() {
  874. uni.hideLoading();
  875. }, 2000);
  876. let that = this;
  877. util.request(api.OrderDetail, {
  878. orderId: that.orderId
  879. }).then(function(res) {
  880. if (res.errno === 0) {
  881. uni.hideLoading();
  882. //获取预约开始时间
  883. res.data.dyDetails.forEach((item, index, list) => {
  884. if (index == 0) {
  885. item.isFold = false;
  886. } else {
  887. item.isFold = true;
  888. }
  889. if (item.bookTime) {
  890. item.bookStartTime = item.bookTime.substring(0, 16);
  891. }
  892. });
  893. console.log("res.data.dyDetails", res.data.dyDetails);
  894. that.setData({
  895. orderInfo: res.data,
  896. dyDetails: res.data.dyDetails,
  897. afterSale: res.data.afterSale,
  898. payOverTime: res.data.payOverTime,
  899. remainTimes: res.data.serviceTimes - res.data.servedTimes,
  900. message: res.data.message,
  901. showQuickBookBtn: res.data.showQuickBookBtn,
  902. queryBookCount: res.data.queryBookCount,
  903. quickBookInfo: res.data.quickBookInfo,
  904. // orderGoods: res.data.orderGoods,
  905. // handleOption: res.data.orderInfo.handleOption,
  906. // expressInfo: res.data.expressInfo
  907. });
  908. //是否为按台服务的商品--按台服务商品 展示服务内容 通过关键字:空调、油烟机、洗衣机、冰箱
  909. if (
  910. res.data.goodsName.indexOf('空调') >= 0 ||
  911. res.data.goodsName.indexOf('油烟机') >= 0 ||
  912. res.data.goodsName.indexOf('洗衣机') >= 0 ||
  913. res.data.goodsName.indexOf('冰箱') >= 0
  914. ) {
  915. that.setData({
  916. isShowPL: true
  917. });
  918. }
  919. if (that.payOverTime > 0) {
  920. let timer = setInterval(() => {
  921. let newTime = that.payOverTime - 1;
  922. if (newTime >= 0) {
  923. that.setData({
  924. payOverTime: newTime
  925. });
  926. } else {
  927. clearInterval(that.timer);
  928. }
  929. }, 1000);
  930. that.setData({
  931. timer: timer
  932. });
  933. }
  934. }
  935. // let excludeAxb = res.data.orderGoods.every(item => {
  936. // return item.goodsSn != '1036016';
  937. // });
  938. // that.setData({
  939. // excludeAxb: excludeAxb
  940. // });
  941. });
  942. },
  943. // “去付款”按钮点击效果
  944. payOrder: function() {
  945. let that = this;
  946. util.request(
  947. api.OrderPayCheck, {
  948. orderId: that.orderInfo.id
  949. },
  950. 'POST'
  951. ).then(function(res) {
  952. if (res.errno === 0) {
  953. const outOrderNo = res.data;
  954. console.log(res);
  955. uni.continueToPay({
  956. // orderId: this.data.orderId, // 内部订单号
  957. outOrderNo: outOrderNo,
  958. // 外部订单号 2个订单号必填一个
  959. success: (res) => {
  960. console.log(res);
  961. const {
  962. orderId,
  963. outOrderNo
  964. } = res;
  965. console.log('success res', res);
  966. console.log('orderId', orderId, 'outOrderNo', outOrderNo);
  967. uni.redirectTo({
  968. url: '/pages/ucenter/order/order'
  969. });
  970. },
  971. fail: (res) => {
  972. console.log(res);
  973. const {
  974. orderId,
  975. outOrderNo,
  976. errNo,
  977. errMsg,
  978. errLogId
  979. } = res;
  980. if (errLogId) {
  981. console.log('查询订单信息失败', errNo, errMsg, errLogId);
  982. }
  983. if (orderId || outOrderNo) {
  984. console.log('支付失败', errNo, errMsg, orderId, outOrderNo);
  985. }
  986. util.showErrorToast('支付失败');
  987. }
  988. });
  989. }
  990. });
  991. },
  992. // “取消订单”点击效果
  993. cancelOrder: function() {
  994. let that = this;
  995. let orderInfo = that.orderInfo;
  996. uni.showModal({
  997. title: '',
  998. content: '确定要取消此订单?',
  999. success: function(res) {
  1000. if (res.confirm) {
  1001. util.request(
  1002. api.OrderCancel, {
  1003. orderId: orderInfo.id
  1004. },
  1005. 'POST'
  1006. ).then(function(res) {
  1007. if (res.errno === 0) {
  1008. uni.showToast({
  1009. title: '取消订单成功'
  1010. });
  1011. util.redirect('/pages/ucenter/order/order');
  1012. } else {
  1013. util.showErrorToast(res.errmsg);
  1014. }
  1015. });
  1016. }
  1017. }
  1018. });
  1019. },
  1020. // “取消订单并退款”点击效果
  1021. refundOrder: function() {
  1022. let that = this;
  1023. let orderInfo = that.orderInfo;
  1024. uni.showModal({
  1025. title: '',
  1026. content: '确定要取消此订单?',
  1027. success: function(res) {
  1028. if (res.confirm) {
  1029. util.request(
  1030. api.OrderRefund, {
  1031. orderId: orderInfo.id
  1032. },
  1033. 'POST'
  1034. ).then(function(res) {
  1035. if (res.errno === 0) {
  1036. uni.showToast({
  1037. title: '取消订单成功'
  1038. });
  1039. util.redirect('/pages/ucenter/order/order');
  1040. } else {
  1041. util.showErrorToast(res.errmsg);
  1042. }
  1043. });
  1044. }
  1045. }
  1046. });
  1047. },
  1048. // “删除”点击效果
  1049. deleteOrder: function() {
  1050. let that = this;
  1051. let orderInfo = that.orderInfo;
  1052. uni.showModal({
  1053. title: '',
  1054. content: '确定要删除此订单?',
  1055. success: function(res) {
  1056. if (res.confirm) {
  1057. util.request(
  1058. api.OrderDelete, {
  1059. orderId: orderInfo.id
  1060. },
  1061. 'POST'
  1062. ).then(function(res) {
  1063. if (res.errno === 0) {
  1064. uni.showToast({
  1065. title: '删除订单成功'
  1066. });
  1067. util.redirect('/pages/ucenter/order/order');
  1068. } else {
  1069. util.showErrorToast(res.errmsg);
  1070. }
  1071. });
  1072. }
  1073. }
  1074. });
  1075. },
  1076. // “待上门”点击效果
  1077. confirmOrder: function() {
  1078. let that = this;
  1079. let orderInfo = that.orderInfo;
  1080. uni.showModal({
  1081. title: '',
  1082. content: '确认上门服务?',
  1083. success: function(res) {
  1084. if (res.confirm) {
  1085. util.request(
  1086. api.OrderConfirm, {
  1087. orderId: orderInfo.id
  1088. },
  1089. 'POST'
  1090. ).then(function(res) {
  1091. if (res.errno === 0) {
  1092. uni.showToast({
  1093. title: '确认上门成功!'
  1094. });
  1095. util.redirect('/pages/ucenter/order/order');
  1096. } else {
  1097. util.showErrorToast(res.errmsg);
  1098. }
  1099. });
  1100. }
  1101. }
  1102. });
  1103. },
  1104. // “申请售后”点击效果
  1105. aftersaleOrder: function() {
  1106. this.setData({
  1107. refundTipShow: true,
  1108. });
  1109. // 0没申请 1申请没审核 2 客服审核通过 3 退款成功 4审核拒绝 5 用户取消 6退款中
  1110. // util.redirect('/pages/ucenter/aftersale/aftersale?id=' + this.data.orderId);
  1111. // if (this.data.orderInfo.afterSaleStatus === 0||this.data.orderInfo.afterSaleStatus === 4) {
  1112. // wx.navigateTo({
  1113. // url:'/pages/ucenter/applyRefund/applyRefund?id=' + this.data.orderId ,
  1114. // });
  1115. // } else {
  1116. // util.redirect('/pages/ucenter/aftersaleDetail/aftersaleDetail?id=' + this.data.orderId);
  1117. // }
  1118. },
  1119. goIM() {
  1120. this.setData({
  1121. refundTipShow: false
  1122. });
  1123. console.info('goIm');
  1124. uni.navigateTo({
  1125. url: '/pages/chat/im/im'
  1126. });
  1127. },
  1128. viewService() {
  1129. uni.navigateTo({
  1130. url: '../serviceDetail/serviceDetail?orderId=' + this.orderId
  1131. });
  1132. },
  1133. buyAgain(e) {
  1134. let id = e.currentTarget.dataset.id;
  1135. uni.navigateTo({
  1136. url: '/pages/goods/goods?id=' + id
  1137. });
  1138. },
  1139. copyOrder(e) {
  1140. let id = e.currentTarget.dataset.id + '';
  1141. console.log(id);
  1142. uni.setClipboardData({
  1143. data: id,
  1144. success: function(res) {
  1145. uni.getClipboardData({
  1146. success: function(res) {
  1147. uni.showToast({
  1148. title: '订单编号复制成功',
  1149. icon: 'success',
  1150. duration: 2000
  1151. });
  1152. }
  1153. });
  1154. }
  1155. });
  1156. },
  1157. cancelRefund() {
  1158. let that = this;
  1159. let afterSale = that.afterSale;
  1160. uni.showModal({
  1161. title: '',
  1162. content: '确认取消退款?',
  1163. success: function(res) {
  1164. if (res.confirm) {
  1165. util.request(
  1166. api.AftersaleCancel, {
  1167. orderId: afterSale.orderId,
  1168. id: afterSale.id
  1169. },
  1170. 'POST'
  1171. ).then(function(res) {
  1172. if (res.errno === 0) {
  1173. uni.showToast({
  1174. title: '操作成功!'
  1175. });
  1176. that.getOrderDetail();
  1177. } else {
  1178. util.showErrorToast(res.errmsg);
  1179. }
  1180. });
  1181. }
  1182. }
  1183. });
  1184. },
  1185. goReVisit(e) {
  1186. let id = e.currentTarget.dataset.id;
  1187. uni.navigateTo({
  1188. url: '/pages/extra/newRevisit/newRevisit?id=' + id,
  1189. success: (res) => {},
  1190. fail: (res) => {}
  1191. });
  1192. },
  1193. goComplain(e) {
  1194. let phone = e.currentTarget.dataset.phone;
  1195. this.setData({
  1196. shopPhone: phone,
  1197. complainTips: true
  1198. });
  1199. },
  1200. cancelComplain() {
  1201. this.setData({
  1202. complainTips: false
  1203. });
  1204. },
  1205. confComplain() {
  1206. uni.makePhoneCall({
  1207. phoneNumber: this.shopPhone
  1208. });
  1209. },
  1210. goEditAppoint(e) {
  1211. let id = e.currentTarget.dataset.id;
  1212. let status = e.currentTarget.dataset.status;
  1213. // if (status == 1) {
  1214. // let time = e.currentTarget.dataset.time;
  1215. // let str = time.substr(0, 16).replace(/-/g, '/');
  1216. // let isNear = new Date(str).getTime() - new Date().getTime() - 2 * 60 * 60 * 1000;
  1217. // console.log(isNear);
  1218. // if (isNear < 0) {
  1219. // wx.showToast({
  1220. // title: '服务时间小于2小时,不能修改预约',
  1221. // icon: 'none',
  1222. // duration: 2000
  1223. // });
  1224. // return false;
  1225. // }
  1226. // }
  1227. uni.navigateTo({
  1228. url: '/pages/ucenter/appointOrder/appointOrder?serviceId=' + id + '&orderId=' + this.orderInfo
  1229. .id,
  1230. success: (res) => {},
  1231. fail: (res) => {}
  1232. });
  1233. },
  1234. goAppoint() {
  1235. uni.navigateTo({
  1236. url: '/pages/ucenter/appointOrder/appointOrder?orderId=' + this.orderInfo.id + '&serviceId=' +
  1237. this.orderInfo.detailId + '&voucherId=' + this.orderInfo.voucherId
  1238. });
  1239. },
  1240. goAppointOther() {
  1241. app.globalData.quickBookInfo = this.quickBookInfo;
  1242. uni.navigateTo({
  1243. url: '/pages/ucenter/appointOrder/appointOrder?quickBookOrderId=' + this.quickBookInfo
  1244. .quickBookOrderId
  1245. });
  1246. },
  1247. makeStorePhone(e) {
  1248. uni.makePhoneCall({
  1249. phoneNumber: e.currentTarget.dataset.phone
  1250. });
  1251. },
  1252. goIM() {
  1253. console.info('goIm');
  1254. uni.navigateTo({
  1255. url: '/pages/chat/im/im'
  1256. });
  1257. }
  1258. }
  1259. };
  1260. </script>
  1261. <style>
  1262. .several-people {
  1263. border-radius: 18rpx;
  1264. background-color: #EFFAFF;
  1265. width: 650rpx;
  1266. height: 150rpx;
  1267. margin: auto;
  1268. padding: 16rpx;
  1269. }
  1270. .order-info {
  1271. padding-top: 25rpx;
  1272. background: #fff;
  1273. height: auto;
  1274. overflow: hidden;
  1275. width: 700rpx;
  1276. margin: auto;
  1277. border-radius: 24rpx;
  1278. }
  1279. .item {
  1280. padding-left: 30rpx;
  1281. /* height: 42.5rpx; */
  1282. line-height: 52rpx;
  1283. font-size: 30rpx;
  1284. color: #333;
  1285. }
  1286. .item-c {
  1287. margin-left: 31.25rpx;
  1288. border-top: 1px solid #f4f4f4;
  1289. height: 103rpx;
  1290. line-height: 103rpx;
  1291. }
  1292. .item-c .l {
  1293. float: left;
  1294. }
  1295. .item-c .r {
  1296. height: 103rpx;
  1297. float: right;
  1298. display: flex;
  1299. align-items: center;
  1300. padding-right: 16rpx;
  1301. }
  1302. .item-c .r .btn {
  1303. float: right;
  1304. }
  1305. .item-c .cost {
  1306. color: #b4282d;
  1307. }
  1308. .item-c .btn {
  1309. line-height: 66rpx;
  1310. border-radius: 5rpx;
  1311. text-align: center;
  1312. margin: 0 15rpx;
  1313. padding: 0 20rpx;
  1314. height: 66rpx;
  1315. }
  1316. .item-c .btn.active {
  1317. background: #b4282d;
  1318. color: #fff;
  1319. }
  1320. .order-goods {
  1321. margin-top: 20rpx;
  1322. background: #fff;
  1323. }
  1324. .order-goods .h {
  1325. height: 93.75rpx;
  1326. line-height: 93.75rpx;
  1327. margin-left: 31.25rpx;
  1328. border-bottom: 1px solid #f4f4f4;
  1329. padding-right: 31.25rpx;
  1330. }
  1331. .order-goods .h .label {
  1332. float: left;
  1333. font-size: 30rpx;
  1334. color: #333;
  1335. }
  1336. .order-goods .h .status {
  1337. float: right;
  1338. font-size: 30rpx;
  1339. color: #b4282d;
  1340. }
  1341. .order-goods .item {
  1342. display: flex;
  1343. align-items: center;
  1344. height: 190rpx;
  1345. padding-right: 30rpx;
  1346. border-bottom: 1px solid #f4f4f4;
  1347. margin: 20rpx 0;
  1348. }
  1349. .order-goods .item:last-child {
  1350. border-bottom: none;
  1351. }
  1352. .order-goods .item .img {
  1353. height: 190rpx;
  1354. width: 190rpx;
  1355. background: #f4f4f4;
  1356. }
  1357. .order-goods .item .img image {
  1358. height: 190rpx;
  1359. width: 190rpx;
  1360. border-radius: 10rpx;
  1361. }
  1362. .order-goods .item .info {
  1363. flex: 1;
  1364. height: 190rpx;
  1365. margin-left: 20rpx;
  1366. }
  1367. .order-goods .item .t {
  1368. margin-top: 8rpx;
  1369. line-height: 34rpx;
  1370. margin-bottom: 10rpx;
  1371. display: flex;
  1372. justify-content: space-between;
  1373. }
  1374. .order-goods .item .t .name {
  1375. color: #333;
  1376. font-size: 30rpx;
  1377. }
  1378. .order-goods .item .t .number {
  1379. height: 34rpx;
  1380. text-align: right;
  1381. line-height: 34rpx;
  1382. color: #666;
  1383. font-size: 28rpx;
  1384. }
  1385. .order-goods .item .attr {
  1386. height: 29rpx;
  1387. line-height: 29rpx;
  1388. margin-top: 10rpx;
  1389. color: #666;
  1390. margin-top: 10rpx;
  1391. font-size: 25rpx;
  1392. }
  1393. .order-goods .item .price {
  1394. display: block;
  1395. float: left;
  1396. height: 30rpx;
  1397. line-height: 30rpx;
  1398. color: #333;
  1399. font-size: 28rpx;
  1400. margin-top: 16rpx;
  1401. }
  1402. .order-goods .item .btn {
  1403. height: 50rpx;
  1404. line-height: 50rpx;
  1405. border-radius: 5rpx;
  1406. text-align: center;
  1407. display: block;
  1408. float: right;
  1409. margin: 0 15rpx;
  1410. padding: 0 20rpx;
  1411. }
  1412. .order-goods .item .btn.active {
  1413. background: #b4282d;
  1414. color: #fff;
  1415. }
  1416. .order-bottom1 {
  1417. margin-top: 20rpx;
  1418. padding-left: 31.25rpx;
  1419. height: auto;
  1420. overflow: hidden;
  1421. background: #fff;
  1422. }
  1423. .order-bottom .address {
  1424. /* height: 128rpx; */
  1425. padding-top: 25rpx;
  1426. border-top: 1px solid #f4f4f4;
  1427. border-bottom: 1px solid #f4f4f4;
  1428. }
  1429. .order-bottom .address .t {
  1430. height: 35rpx;
  1431. line-height: 35rpx;
  1432. margin-bottom: 20rpx;
  1433. }
  1434. .order-bottom .address .name {
  1435. display: inline-block;
  1436. height: 35rpx;
  1437. /* width: 140rpx; */
  1438. line-height: 35rpx;
  1439. font-size: 30rpx;
  1440. margin-right: 40rpx;
  1441. }
  1442. .order-bottom .address .mobile {
  1443. display: inline-block;
  1444. height: 35rpx;
  1445. line-height: 35rpx;
  1446. font-size: 30rpx;
  1447. }
  1448. .order-bottom .address .b {
  1449. /* height: 35rpx; */
  1450. line-height: 40rpx;
  1451. font-size: 28rpx;
  1452. padding-right: 30rpx;
  1453. text-align: justify;
  1454. }
  1455. .order-bottom .total {
  1456. height: 130rpx;
  1457. padding-top: 20rpx;
  1458. border-bottom: 1px solid #f4f4f4;
  1459. }
  1460. .order-bottom .total .t {
  1461. height: 44rpx;
  1462. line-height: 44rpx;
  1463. margin-bottom: 10rpx;
  1464. display: flex;
  1465. }
  1466. .order-bottom .total .label {
  1467. width: 150rpx;
  1468. display: inline-block;
  1469. height: 35rpx;
  1470. line-height: 35rpx;
  1471. font-size: 30rpx;
  1472. }
  1473. .order-bottom .total .txt {
  1474. flex: 1;
  1475. display: inline-block;
  1476. height: 35rpx;
  1477. line-height: 35rpx;
  1478. font-size: 30rpx;
  1479. }
  1480. .order-bottom .pay-fee {
  1481. height: 81rpx;
  1482. line-height: 81rpx;
  1483. }
  1484. .order-bottom .pay-fee .label {
  1485. display: inline-block;
  1486. width: 140rpx;
  1487. color: #b4282d;
  1488. }
  1489. .order-bottom .pay-fee .txt {
  1490. display: inline-block;
  1491. width: 140rpx;
  1492. color: #b4282d;
  1493. }
  1494. .order-express {
  1495. margin-top: 20rpx;
  1496. width: 100%;
  1497. height: 100rpx;
  1498. background: #fff;
  1499. }
  1500. .order-express .title {
  1501. float: left;
  1502. margin-bottom: 20rpx;
  1503. padding: 10rpx;
  1504. }
  1505. .order-express .ti {
  1506. float: right;
  1507. width: 52rpx;
  1508. height: 52rpx;
  1509. margin-right: 16rpx;
  1510. margin-top: 28rpx;
  1511. }
  1512. .order-express .t {
  1513. font-size: 29rpx;
  1514. margin-left: 10.25rpx;
  1515. color: #a78845;
  1516. }
  1517. .order-express .b {
  1518. font-size: 29rpx;
  1519. margin-left: 10.25rpx;
  1520. color: #a78845;
  1521. }
  1522. .order-express .traces {
  1523. padding: 17.5rpx;
  1524. background: #fff;
  1525. border-bottom: 1rpx solid #f1e6cdcc;
  1526. }
  1527. .order-express .trace {
  1528. padding-bottom: 17.5rpx;
  1529. padding-top: 17.5rpx;
  1530. background: #fff;
  1531. }
  1532. .order-express .acceptTime {
  1533. margin-top: 20rpx;
  1534. margin-right: 40rpx;
  1535. text-align: right;
  1536. font-size: 26rpx;
  1537. }
  1538. .order-express .acceptStation {
  1539. font-size: 26rpx;
  1540. }
  1541. /* 订单详情顶部 */
  1542. .order-main-top {
  1543. height: 200rpx;
  1544. background: url('https://mall.zhaijieshi.cc/file/jzmall/weixin/order-detail-bg.png') no-repeat center;
  1545. background-size: 100% 100%;
  1546. display: flex;
  1547. align-items: center;
  1548. justify-content: space-between;
  1549. margin: 0 0 20rpx;
  1550. padding: 0 24rpx;
  1551. }
  1552. .order-main-top view,
  1553. .order-main-top text {
  1554. color: #fff;
  1555. font-size: 28rpx;
  1556. }
  1557. .order-main-top .order-detail-status {
  1558. font-size: 40rpx;
  1559. font-weight: bold;
  1560. margin-bottom: 20rpx;
  1561. }
  1562. .order-main-right {
  1563. text-align: right;
  1564. }
  1565. .order-main-right .view-service {
  1566. width: 148rpx;
  1567. height: 44rpx;
  1568. line-height: 44rpx;
  1569. border-radius: 44rpx;
  1570. border: 1rpx solid #fff;
  1571. text-align: center;
  1572. margin: 10rpx 0 0;
  1573. }
  1574. .order-main-right .current-times {
  1575. font-size: 40rpx;
  1576. font-weight: bold;
  1577. }
  1578. page {
  1579. height: 100%;
  1580. width: 100%;
  1581. background: #f4f4f4;
  1582. }
  1583. .container {
  1584. padding: 24rpx 24rpx 180rpx;
  1585. /* padding: 14rpx 0rpx 0rpx; */
  1586. background: linear-gradient(210deg, rgba(123, 207, 255, 0.06) 0%, rgba(218, 218, 218, 0.28) 100%);
  1587. }
  1588. /* 未支付订单 */
  1589. .not-pay-module {
  1590. padding: 28rpx 0 48rpx;
  1591. display: flex;
  1592. flex-direction: column;
  1593. align-items: center;
  1594. }
  1595. .not-pay-module .pay-amount {
  1596. height: 50rpx;
  1597. display: flex;
  1598. align-items: center;
  1599. }
  1600. .not-pay-module .pay-amount image {
  1601. width: 40rpx;
  1602. height: 40rpx;
  1603. margin-right: 12rpx;
  1604. }
  1605. .not-pay-module .pay-amount {
  1606. font-size: 30rpx;
  1607. font-weight: bold;
  1608. color: #333;
  1609. }
  1610. .not-pay-module .pay-amount text {
  1611. color: #ff0000;
  1612. }
  1613. .not-pay-module .over-time {
  1614. height: 36rpx;
  1615. font-size: 26rpx;
  1616. color: #333;
  1617. margin: 26rpx 0 44rpx;
  1618. }
  1619. .not-pay-module .pay-now {
  1620. width: 160rpx;
  1621. height: 56rpx;
  1622. line-height: 56rpx;
  1623. background: linear-gradient(90deg, #ff9c49 0%, #ff8219 100%);
  1624. border-radius: 28rpx;
  1625. color: #f9f4f5;
  1626. font-size: 24rpx;
  1627. text-align: center;
  1628. }
  1629. /* 卡片 */
  1630. .top-card {
  1631. width: 700rpx;
  1632. height: 224rpx;
  1633. margin: auto;
  1634. background: url('https://mall.zhaijieshi.cc/file/jzmall-dy/order-card-bg.png') no-repeat center;
  1635. background-size: 100% 100%;
  1636. padding: 20rpx 30rpx 24rpx;
  1637. color: #fff;
  1638. position: relative;
  1639. }
  1640. .top-name-wrapper {
  1641. display: flex;
  1642. align-items: center;
  1643. justify-content: space-between;
  1644. height: 44rpx;
  1645. overflow: hidden;
  1646. }
  1647. .top-name {
  1648. height: 44rpx;
  1649. font-size: 32rpx;
  1650. font-weight: bold;
  1651. color: #ffffff;
  1652. line-height: 44rpx;
  1653. text-overflow: ellipsis;
  1654. white-space: nowrap;
  1655. overflow: hidden;
  1656. }
  1657. .top-sku-name {
  1658. font-size: 24rpx;
  1659. font-weight: bold;
  1660. color: #fff;
  1661. white-space: nowrap;
  1662. overflow: hidden;
  1663. text-overflow: ellipsis;
  1664. flex: 1;
  1665. }
  1666. .top-times {
  1667. margin: 12rpx 0 54rpx;
  1668. display: flex;
  1669. height: 42rpx;
  1670. align-items: center;
  1671. }
  1672. .top-times view {
  1673. font-size: 24rpx;
  1674. font-weight: bold;
  1675. }
  1676. .top-times view.serviced-times {
  1677. margin-left: 20rpx;
  1678. }
  1679. .top-times view text {
  1680. font-size: 30rpx;
  1681. }
  1682. .top-tips {
  1683. height: 28rpx;
  1684. line-height: 28rpx;
  1685. font-size: 20rpx;
  1686. }
  1687. .appoint-tag {
  1688. position: absolute;
  1689. top: 136rpx;
  1690. right: 0;
  1691. width: 196rpx;
  1692. height: 64rpx;
  1693. line-height: 64rpx;
  1694. background: linear-gradient(316deg, #ffffff 0%, rgba(255, 255, 255, 0.8) 100%);
  1695. border-radius: 32rpx 0rpx 0rpx 32rpx;
  1696. color: #ff8219;
  1697. font-size: 24rpx;
  1698. text-align: center;
  1699. font-weight: bold;
  1700. }
  1701. /* 退款工单 */
  1702. .refund-order-module {
  1703. margin-bottom: 24rpx;
  1704. width: 750rpx;
  1705. background: #fff;
  1706. border-radius: 24rpx;
  1707. padding: 0 24rpx;
  1708. }
  1709. .refund-title {
  1710. height: 80rpx;
  1711. display: flex;
  1712. align-items: center;
  1713. border-bottom: 2rpx solid #e0e0e0;
  1714. }
  1715. .refund-title .title-text {
  1716. color: #191919;
  1717. font-size: 30rpx;
  1718. font-weight: bold;
  1719. margin-bottom: 0;
  1720. }
  1721. .refund-title .title-order {
  1722. flex: 1;
  1723. color: #666666;
  1724. font-size: 24rpx;
  1725. margin: 0 10rpx;
  1726. }
  1727. .refund-title .title-status {
  1728. color: #fcc17c;
  1729. font-size: 26rpx;
  1730. }
  1731. .refund-main {
  1732. padding: 12rpx 0;
  1733. }
  1734. .refund-main .row {
  1735. height: 56rpx;
  1736. line-height: 56rpx;
  1737. display: flex;
  1738. color: rgba(0, 0, 0, 0.9);
  1739. font-size: 26rpx;
  1740. font-weight: bold;
  1741. }
  1742. .refund-main .row text {
  1743. color: #666666;
  1744. font-weight: normal;
  1745. }
  1746. .refuse-remark-wrapper {
  1747. padding: 24rpx 0;
  1748. border-top: 2rpx solid #e0e0e0;
  1749. }
  1750. .refund-order-module .refuse-remark {
  1751. width: 652rpx;
  1752. height: 56rpx;
  1753. line-height: 56rpx;
  1754. background: #ebebeb;
  1755. border-radius: 16rpx;
  1756. color: #000000;
  1757. padding: 0 16rpx;
  1758. white-space: nowrap;
  1759. text-overflow: ellipsis;
  1760. overflow: hidden;
  1761. }
  1762. .refund-order-module .refuse-remark text {
  1763. color: #fe2b54;
  1764. font-weight: bold;
  1765. }
  1766. .refund-operate {
  1767. padding: 24rpx 0;
  1768. border-top: 2rpx solid #e0e0e0;
  1769. display: flex;
  1770. justify-content: flex-end;
  1771. }
  1772. .refund-operate view {
  1773. width: 160rpx;
  1774. height: 56rpx;
  1775. line-height: 56rpx;
  1776. border-radius: 28rpx;
  1777. border: 2rpx solid #d8d8d8;
  1778. text-align: center;
  1779. color: #666666;
  1780. font-size: 24rpx;
  1781. }
  1782. /* 工单列表 */
  1783. .service-item {
  1784. margin-bottom: 20rpx;
  1785. background: #ffffff;
  1786. border-radius: 24rpx;
  1787. margin-bottom: 20rpx;
  1788. padding-left: 24rpx;
  1789. }
  1790. .service-item .service-title {
  1791. height: 80rpx;
  1792. display: flex;
  1793. align-items: center;
  1794. justify-content: space-between;
  1795. padding-right: 10rpx;
  1796. padding-left: 5rpx;
  1797. color: #999;
  1798. }
  1799. .service-item .service-num {
  1800. height: 80rpx;
  1801. display: flex;
  1802. align-items: center;
  1803. border-bottom: 2rpx solid #e0e0e0;
  1804. border-top: 2rpx solid #e0e0e0;
  1805. justify-content: space-between;
  1806. padding-right: 58rpx;
  1807. padding-left: 5rpx;
  1808. color: #999;
  1809. }
  1810. .title-text {
  1811. display: flex;
  1812. height: 40rpx;
  1813. margin-bottom: 20rpx;
  1814. align-items: center;
  1815. justify-content: space-between;
  1816. font-size: 28rpx;
  1817. color: #999;
  1818. }
  1819. .title-text .service-status {
  1820. font-weight: 600;
  1821. color: #09AFFF;
  1822. }
  1823. .main-text {
  1824. /* height: 40rpx; */
  1825. font-size: 28rpx;
  1826. font-weight: 600;
  1827. color: #333333;
  1828. line-height: 40rpx;
  1829. letter-spacing: 1rpx;
  1830. }
  1831. .service-title .sercive-name {
  1832. color: #191919;
  1833. font-size: 30rpx;
  1834. font-weight: bold;
  1835. }
  1836. .service-title .service-id {
  1837. color: #666666;
  1838. font-size: 24rpx;
  1839. margin: 0 12rpx;
  1840. flex: 1;
  1841. }
  1842. .service-title .service-status {
  1843. color: #008dff;
  1844. font-size: 26rpx;
  1845. }
  1846. .service-main {
  1847. padding: 12rpx 14rpx 16rpx;
  1848. }
  1849. .customer-info {
  1850. display: flex;
  1851. align-items: center;
  1852. }
  1853. .customer-info image {
  1854. width: 48rpx;
  1855. height: 48rpx;
  1856. margin-right: 24rpx;
  1857. }
  1858. .customer-info .customer-main {
  1859. display: flex;
  1860. padding: 0rpx 0 4rpx;
  1861. flex-direction: column;
  1862. flex: 1;
  1863. }
  1864. .main-line {
  1865. display: flex;
  1866. margin-bottom: 4rpx;
  1867. align-items: center;
  1868. }
  1869. .main-line .phone {
  1870. margin-left: 12rpx;
  1871. font-size: 22rpx;
  1872. color: #999;
  1873. }
  1874. .service-main .row {
  1875. display: flex;
  1876. color: rgba(0, 0, 0, 0.9);
  1877. font-size: 26rpx;
  1878. font-weight: bold;
  1879. align-items: center;
  1880. margin: 20rpx 0;
  1881. }
  1882. .service-main .row text {
  1883. color: #666666;
  1884. font-weight: normal;
  1885. }
  1886. .service-remark-wrapper {
  1887. padding: 20rpx 36rpx;
  1888. border-top: 1rpx solid #EBEBEB;
  1889. }
  1890. .service-store {
  1891. line-height: 40rpx;
  1892. display: flex;
  1893. align-items: center;
  1894. justify-content: space-between;
  1895. }
  1896. .service-store>view {
  1897. display: flex;
  1898. align-items: center;
  1899. }
  1900. .store-left image {
  1901. width: 36rpx;
  1902. height: 36rpx;
  1903. margin-right: 16rpx;
  1904. }
  1905. .store-left view {
  1906. color: #999999;
  1907. font-size: 28rpx;
  1908. white-space: nowrap;
  1909. margin-right: 20rpx;
  1910. }
  1911. .store-right view {
  1912. color: #333333;
  1913. font-size: 28rpx;
  1914. }
  1915. .store-right view.copy-text,
  1916. .order-top view.copy-text {
  1917. width: 76rpx;
  1918. height: 30rpx;
  1919. line-height: 30rpx;
  1920. border-radius: 30rpx;
  1921. text-align: center;
  1922. background: #09AFFF;
  1923. color: #fff;
  1924. font-size: 20rpx;
  1925. margin-left: 10rpx;
  1926. }
  1927. .ordersn-wrapper {
  1928. display: flex;
  1929. align-items: center;
  1930. }
  1931. .store-right image {
  1932. width: 30rpx;
  1933. height: 30rpx;
  1934. margin-left: 12rpx;
  1935. }
  1936. .service-remark-wrapper .service-remark {
  1937. width: 652rpx;
  1938. /* height: 56rpx; */
  1939. line-height: 44rpx;
  1940. background: #ebebeb;
  1941. border-radius: 16rpx;
  1942. color: #000000;
  1943. padding: 8rpx 16rpx;
  1944. /* white-space: nowrap;
  1945. text-overflow: ellipsis;*/
  1946. display: -webkit-box;
  1947. -webkit-box-orient: vertical;
  1948. -webkit-line-clamp: 2;
  1949. text-overflow: ellipsis;
  1950. overflow: hidden;
  1951. margin-top: 20rpx;
  1952. }
  1953. .service-remark text {
  1954. color: #fe2b54;
  1955. font-weight: bold;
  1956. }
  1957. .service-operate {
  1958. padding: 24rpx 20rpx;
  1959. border-top: 1rpx solid #EBEBEB;
  1960. display: flex;
  1961. justify-content: flex-end;
  1962. }
  1963. .service-operate view {
  1964. width: 160rpx;
  1965. height: 56rpx;
  1966. line-height: 56rpx;
  1967. border-radius: 28rpx;
  1968. text-align: center;
  1969. color: #f9f4f5;
  1970. font-size: 24rpx;
  1971. background: linear-gradient(90deg, #00baff 0%, #008dff 100%);
  1972. margin-left: 28rpx;
  1973. }
  1974. /* 产品订单信息 */
  1975. .product-block {
  1976. background: #ffffff;
  1977. border-radius: 24rpx;
  1978. padding: 36rpx 36rpx 40rpx 36rpx;
  1979. margin: 0rpx auto 16rpx;
  1980. width: 700rpx;
  1981. }
  1982. .product-block .title {
  1983. height: 88rpx;
  1984. line-height: 78rpx;
  1985. }
  1986. .profuct-info {
  1987. display: flex;
  1988. align-items: flex-start;
  1989. }
  1990. .product-img {
  1991. width: 128rpx;
  1992. height: 128rpx;
  1993. border-radius: 8rpx;
  1994. margin-right: 16rpx;
  1995. }
  1996. .info-right {
  1997. /* padding-top: 10rpx; */
  1998. flex: 1;
  1999. }
  2000. .info-main {
  2001. display: flex;
  2002. height: 40rpx;
  2003. align-items: center;
  2004. justify-content: space-between;
  2005. /* margin-bottom: 58rpx; */
  2006. }
  2007. .info-right .sku-name {
  2008. color: #999999;
  2009. font-size: 28rpx;
  2010. margin: 10rpx 0;
  2011. height: 40rpx;
  2012. line-height: 40rpx;
  2013. display: flex;
  2014. justify-content: space-between;
  2015. }
  2016. .product-name {
  2017. font-size: 28rpx;
  2018. color: #333333;
  2019. line-height: 40rpx;
  2020. font-size: 28rpx;
  2021. /* padding-left: 20rpx;
  2022. text-indent: -16rpx; */
  2023. overflow: hidden;
  2024. text-overflow: ellipsis;
  2025. white-space: nowrap;
  2026. width: 500rpx;
  2027. }
  2028. .info-right .other-info {
  2029. color: #333333;
  2030. font-size: 24rpx;
  2031. height: 40rpx;
  2032. display: flex;
  2033. align-items: center;
  2034. justify-content: space-between;
  2035. }
  2036. .other-info .price {
  2037. font-size: 24rpx;
  2038. }
  2039. .order-info {
  2040. background: #ffffff;
  2041. /* border-radius: 24rpx; */
  2042. padding: 32rpx 36rpx 24rpx 36rpx;
  2043. }
  2044. .order-info .order-top {
  2045. display: flex;
  2046. align-items: center;
  2047. height: 40rpx;
  2048. margin-bottom: 10rpx;
  2049. justify-content: space-between;
  2050. }
  2051. .order-info .order-title {
  2052. height: 44rpx;
  2053. font-size: 32rpx;
  2054. font-weight: 600;
  2055. color: #333333;
  2056. line-height: 44rpx;
  2057. letter-spacing: 2rpx;
  2058. margin-bottom: 16rpx;
  2059. }
  2060. .order-top view {
  2061. font-size: 28rpx;
  2062. color: #333;
  2063. }
  2064. .order-top view.topic {
  2065. color: #999;
  2066. margin-right: 16rpx;
  2067. }
  2068. .order-top .copy-img {
  2069. width: 24rpx;
  2070. height: 24rpx;
  2071. margin-left: 20rpx;
  2072. }
  2073. .order-bottom {
  2074. border-top: 2rpx solid #e0e0e0;
  2075. margin-top: 14rpx;
  2076. padding-top: 16rpx;
  2077. }
  2078. .order-price,
  2079. .coupon-price {
  2080. display: flex;
  2081. align-items: center;
  2082. height: 36rpx;
  2083. margin-bottom: 6rpx;
  2084. justify-content: space-between;
  2085. }
  2086. .order-price view,
  2087. .coupon-price view {
  2088. font-size: 26rpx;
  2089. color: rgba(0, 0, 0, 0.9);
  2090. font-weight: bold;
  2091. }
  2092. .order-price view.topic,
  2093. .coupon-price view.topic {
  2094. color: #666;
  2095. margin-right: 16rpx;
  2096. font-weight: normal;
  2097. }
  2098. .order-bottom .real-price {
  2099. display: flex;
  2100. align-items: center;
  2101. height: 36rpx;
  2102. justify-content: flex-end;
  2103. font-size: 26rpx;
  2104. font-weight: bold;
  2105. }
  2106. .order-bottom .real-price text {
  2107. color: #ff004e;
  2108. font-size: 26rpx;
  2109. }
  2110. /* 客户服务 */
  2111. .customer-service {
  2112. background: #ffffff;
  2113. border-radius: 24rpx;
  2114. padding: 32rpx 36rpx 30rpx 36rpx;
  2115. width: 700rpx;
  2116. margin: 16rpx auto 0rpx;
  2117. }
  2118. .customer-service .title {
  2119. height: 44rpx;
  2120. line-height: 44rpx;
  2121. color: #333333;
  2122. font-size: 32rpx;
  2123. font-weight: bold;
  2124. letter-spacing: 2px;
  2125. }
  2126. .contact-store {
  2127. border-bottom: 1rpx solid #ededed;
  2128. }
  2129. .contact-store,
  2130. .contact-company {
  2131. height: 70rpx;
  2132. display: flex;
  2133. align-items: center;
  2134. }
  2135. .contact-company {
  2136. position: relative;
  2137. }
  2138. .customer-service image {
  2139. width: 36rpx;
  2140. height: 36rpx;
  2141. }
  2142. .customer-service .topic {
  2143. color: rgba(0, 0, 0, 0.9);
  2144. font-size: 26rpx;
  2145. }
  2146. .customer-service .remark {
  2147. flex: 1;
  2148. color: #666666;
  2149. font-size: 20rpx;
  2150. margin-left: 14rpx;
  2151. padding-top: 4rpx;
  2152. }
  2153. .contact-btn {
  2154. height: 40rpx;
  2155. width: 40rpx;
  2156. position: absolute;
  2157. top: 26;
  2158. bottom: 26;
  2159. right: 0;
  2160. z-index: 99;
  2161. opacity: 0;
  2162. }
  2163. /* 底部按钮 */
  2164. .fixed-bottom {
  2165. position: fixed;
  2166. bottom: 0;
  2167. left: 0;
  2168. right: 0;
  2169. padding: 14rpx 24rpx 24rpx;
  2170. background: #fff;
  2171. }
  2172. .order-operate-wrapper {
  2173. /* height: 80rpx; */
  2174. display: flex;
  2175. align-items: center;
  2176. justify-content: flex-end;
  2177. flex: 1;
  2178. flex-wrap: wrap;
  2179. /* border-top: 2rpx solid #E0E0E0; */
  2180. padding-bottom: constant(safe-area-inset-bottom);
  2181. padding-bottom: env(safe-area-inset-bottom);
  2182. }
  2183. .order-operate-wrapper>view {
  2184. text-align: center;
  2185. font-size: 25rpx;
  2186. color: #fff;
  2187. margin-left: 20rpx;
  2188. width: 160rpx;
  2189. height: 57rpx;
  2190. line-height: 57rpx;
  2191. background: linear-gradient(90deg, #ff9c49 0%, #ff8219 100%);
  2192. border-radius: 50rpx;
  2193. margin-top: 10rpx;
  2194. margin-right: 40rpx;
  2195. /* font-weight: bold; */
  2196. }
  2197. .order-operate-wrapper>view.appoint {
  2198. background: linear-gradient(90deg, #00baff 0%, #008dff 100%);
  2199. }
  2200. .order-operate-wrapper view.eval-btn {
  2201. border: 2rpx solid #ff8219;
  2202. color: #ff8219;
  2203. background: #fff;
  2204. }
  2205. .refund-tips-bar {
  2206. height: 34rpx;
  2207. margin-top: 30rpx;
  2208. display: flex;
  2209. align-items: center;
  2210. }
  2211. .refund-tips-bar image {
  2212. width: 40rpx;
  2213. height: 40rpx;
  2214. margin-right: 4rpx;
  2215. }
  2216. .refund-tips-bar view {
  2217. font-size: 24rpx;
  2218. margin-right: 16rpx;
  2219. color: #666;
  2220. }
  2221. /* 投诉建议弹框 */
  2222. .goods-info-overlay {
  2223. position: fixed;
  2224. top: 0;
  2225. left: 0;
  2226. width: 100%;
  2227. height: 100%;
  2228. background-color: rgba(0, 0, 0, 0.6);
  2229. z-index: 99;
  2230. display: flex;
  2231. align-items: center;
  2232. justify-content: center;
  2233. }
  2234. .goods-info-popup {
  2235. width: 622rpx;
  2236. border-radius: 24rpx;
  2237. background: #fff;
  2238. overflow: hidden;
  2239. }
  2240. .popup-title {
  2241. height: 94rpx;
  2242. line-height: 94rpx;
  2243. text-align: center;
  2244. color: #ffffff;
  2245. font-size: 34rpx;
  2246. background: url('https://mall.zhaijieshi.cc/file/jzmall-dy/verify-dy-title.png') no-repeat center center;
  2247. background-size: 100% 100%;
  2248. background-color: #008dff;
  2249. }
  2250. .tips-title {
  2251. /* height: 180rpx; */
  2252. line-height: 40rpx;
  2253. padding: 34rpx 32rpx;
  2254. font-weight: 600;
  2255. color: #191919;
  2256. font-size: 28rpx;
  2257. }
  2258. .btn-msg {
  2259. border: 2rpx solid #008dff;
  2260. color: #008dff !important;
  2261. background: #fff !important;
  2262. }
  2263. .btn-del {
  2264. border: none;
  2265. color: #999 !important;
  2266. background: #fff !important;
  2267. }
  2268. .goods-info-popup .goods {
  2269. display: flex;
  2270. padding: 24rpx 20rpx 22rpx 22rpx;
  2271. }
  2272. .goods .img image {
  2273. height: 168rpx;
  2274. width: 168rpx;
  2275. overflow: hidden;
  2276. border-radius: 8rpx;
  2277. }
  2278. .goods .info {
  2279. height: 168rpx;
  2280. flex: 1;
  2281. padding-left: 18rpx;
  2282. }
  2283. .info-main {
  2284. display: flex;
  2285. height: 40rpx;
  2286. align-items: center;
  2287. justify-content: space-between;
  2288. }
  2289. .info .sku-name {
  2290. color: #666666;
  2291. font-size: 24rpx;
  2292. margin: 12rpx 0;
  2293. height: 34rpx;
  2294. line-height: 34rpx;
  2295. }
  2296. .product-name {
  2297. line-height: 40rpx;
  2298. font-size: 28rpx;
  2299. /* padding-left: 20rpx;
  2300. text-indent: -16rpx; */
  2301. overflow: hidden;
  2302. text-overflow: ellipsis;
  2303. white-space: nowrap;
  2304. width: 310rpx;
  2305. font-weight: bold;
  2306. color: rgba(0, 0, 0, 0.9);
  2307. }
  2308. .info-main .price {
  2309. color: rgba(0, 0, 0, 0.9);
  2310. font-size: 24rpx;
  2311. font-weight: bold;
  2312. }
  2313. .info .other-info {
  2314. font-size: 24rpx;
  2315. color: rgba(0, 0, 0, 0.9);
  2316. line-height: 34rpx;
  2317. }
  2318. .popup-bottom {
  2319. height: 106rpx;
  2320. padding: 14rpx 104rpx 34rpx;
  2321. display: flex;
  2322. justify-content: space-between;
  2323. }
  2324. .btn-cancel {
  2325. height: 58rpx;
  2326. line-height: 58rpx;
  2327. border-radius: 58rpx;
  2328. width: 162rpx;
  2329. text-align: center;
  2330. color: #0091ff;
  2331. font-size: 24rpx;
  2332. border: 2rpx solid #0091ff;
  2333. }
  2334. .btn-conf {
  2335. height: 58rpx;
  2336. line-height: 58rpx;
  2337. border-radius: 58rpx;
  2338. width: 162rpx;
  2339. text-align: center;
  2340. color: #fff;
  2341. font-size: 24rpx;
  2342. background: linear-gradient(270deg, #00baff 0%, #008dff 100%);
  2343. }
  2344. .ticket {
  2345. padding: 10rpx 20rpx;
  2346. margin-bottom: 10px;
  2347. background-color: rgb(247 240 240);
  2348. border-radius: 15rpx;
  2349. }
  2350. .ticket .title {
  2351. display: flex;
  2352. flex-direction: row;
  2353. justify-content: space-between;
  2354. }
  2355. .ticket .comment {
  2356. color: #09afff;
  2357. text-decoration: underline;
  2358. }
  2359. .timeline {
  2360. margin: 44rpx auto 0rpx auto;
  2361. position: relative;
  2362. width: 100%;
  2363. }
  2364. .timeline::before {
  2365. background-color: #6dd1c9;
  2366. content: '';
  2367. margin-left: -1rpx;
  2368. position: absolute;
  2369. top: 0rpx;
  2370. left: 8px;
  2371. width: 2rpx;
  2372. bottom: -250rpx;
  2373. height: calc(100% - 47rpx);
  2374. }
  2375. .timeline-event {
  2376. position: relative;
  2377. }
  2378. .timeline-event-copy {
  2379. padding: 32rpx 24rpx;
  2380. position: relative;
  2381. top: -47rpx;
  2382. left: 42rpx;
  2383. width: 536rpx;
  2384. background-color: #ffffff;
  2385. /* margin-bottom: 20rpx; */
  2386. border-radius: 20rpx;
  2387. }
  2388. .timeline-event-icon {
  2389. background-color: #ffffff00;
  2390. outline: 0rpx solid #ff0000;
  2391. display: block;
  2392. margin: 0rpx 0rpx 0rpx 0rpx;
  2393. position: absolute;
  2394. top: 0rpx;
  2395. left: 0rpx;
  2396. width: 28rpx;
  2397. height: 28rpx;
  2398. }
  2399. .timeline-event-thumbnail {
  2400. color: #333;
  2401. font-weight: bold;
  2402. font-size: 30rpx;
  2403. display: inline-flex;
  2404. width: 100%;
  2405. margin-bottom: 0rpx;
  2406. align-items: center;
  2407. justify-content: space-between;
  2408. }
  2409. .timeline-event-content {
  2410. display: flex;
  2411. flex-direction: column;
  2412. margin-top: 20rpx;
  2413. margin-bottom: 20rpx;
  2414. }
  2415. .timeline-text {
  2416. font-weight: 100;
  2417. color: #a09494;
  2418. font-size: 15px;
  2419. }
  2420. .timeline-marker {
  2421. border-radius: 50%;
  2422. height: 15px;
  2423. width: 15px;
  2424. }
  2425. .ticket-tips {
  2426. color: rgb(179 165 165);
  2427. font-size: 13px;
  2428. text-align: center;
  2429. padding: 10px 0;
  2430. margin-bottom: 10px;
  2431. height: 27px;
  2432. }
  2433. .ticket-tips-content {
  2434. padding: 0 20rpx 40rpx 32rpx;
  2435. margin-top: 21px;
  2436. font-size: 16px;
  2437. }
  2438. .ticket-img {
  2439. height: 45px;
  2440. width: 45px;
  2441. }
  2442. .top-new {
  2443. position: relative;
  2444. /* height: 208rpx; */
  2445. width: 750rpx;
  2446. padding: 48rpx 20rpx 0 38rpx;
  2447. margin-bottom: 20rpx;
  2448. }
  2449. .book-detail-tip {
  2450. font-size: 32rpx;
  2451. color: #FA6400;
  2452. line-height: 44rpx;
  2453. letter-spacing: 2rpx;
  2454. margin-top: 8rpx;
  2455. }
  2456. .top-bg-img {
  2457. position: absolute;
  2458. left: 10rpx;
  2459. top: 14rpx;
  2460. width: 90rpx;
  2461. height: 90rpx;
  2462. z-index: -10;
  2463. }
  2464. .top-bg-img2 {
  2465. position: absolute;
  2466. right: 38rpx;
  2467. top: 54rpx;
  2468. width: 110rpx;
  2469. height: 110rpx;
  2470. z-index: -10;
  2471. }
  2472. .top-new .status-val {
  2473. height: 56rpx;
  2474. line-height: 56rpx;
  2475. font-size: 40rpx;
  2476. font-weight: 600;
  2477. color: #191919;
  2478. letter-spacing: 2rpx;
  2479. margin-bottom: 14rpx;
  2480. }
  2481. .top-new .status-tips {
  2482. height: 44rpx;
  2483. font-size: 32rpx;
  2484. color: #999999;
  2485. line-height: 44rpx;
  2486. letter-spacing: 2rpx;
  2487. }
  2488. .service-list {
  2489. border-radius: 24rpx 24rpx;
  2490. width: 700rpx;
  2491. margin: 20rpx auto 0rpx;
  2492. padding: 10rpx;
  2493. }
  2494. .list-title {
  2495. display: flex;
  2496. align-items: center;
  2497. height: 102rpx;
  2498. font-size: 36rpx;
  2499. color: #fff;
  2500. padding: 0 46rpx 0 38rpx;
  2501. justify-content: space-between;
  2502. }
  2503. .service-remark-new {
  2504. padding: 20rpx 38rpx;
  2505. border-top: 1rpx solid #EBEBEB;
  2506. }
  2507. .service-remark-new .remark-text {
  2508. min-height: 20rpx;
  2509. font-size: 28rpx;
  2510. font-weight: 600;
  2511. color: #333333;
  2512. line-height: 40rpx;
  2513. letter-spacing: 1rpx;
  2514. }
  2515. .service-operate view.cancel-color {
  2516. border: 1rpx solid #979797;
  2517. color: #ACADB1;
  2518. background: #fff;
  2519. line-height: 54rpx;
  2520. }
  2521. .list-title-right {
  2522. display: flex;
  2523. align-items: center;
  2524. }
  2525. .arrow-white {
  2526. width: 34rpx;
  2527. height: 34rpx;
  2528. margin-left: 26rpx;
  2529. transform: rotate(0deg);
  2530. transition: transform 0.3s;
  2531. }
  2532. .appoint-overlay-wrapper {
  2533. position: fixed;
  2534. top: 0;
  2535. left: 0;
  2536. width: 100%;
  2537. height: 100%;
  2538. background-color: rgba(0, 0, 0, 0.7);
  2539. z-index: 999;
  2540. }
  2541. .remark-text {
  2542. font-size: 26rpx;
  2543. white-space: nowrap;
  2544. overflow: hidden;
  2545. text-overflow: ellipsis;
  2546. width: 486rpx;
  2547. padding-left: 40rpx;
  2548. margin: 0 10rpx 0 20rpx;
  2549. text-align: right;
  2550. }
  2551. .remark-popup {
  2552. position: fixed;
  2553. left: 0;
  2554. right: 0;
  2555. bottom: 0;
  2556. height: 560rpx;
  2557. background: #fff;
  2558. border-radius: 20rpx 20rpx 0px 0px;
  2559. padding: 40rpx 30rpx 50rpx;
  2560. z-index: 9999;
  2561. }
  2562. .remark-popup .title {
  2563. height: 30rpx;
  2564. line-height: 30rpx;
  2565. font-size: 30rpx;
  2566. color: #333333;
  2567. }
  2568. .remark-textarea {
  2569. width: 690rpx;
  2570. height: 240rpx;
  2571. background: #f8f8f8;
  2572. border-radius: 10rpx;
  2573. padding: 20rpx 36rpx 36rpx 20rpx;
  2574. font-size: 26rpx;
  2575. line-height: 40rpx;
  2576. margin: 30rpx 0 60rpx;
  2577. box-sizing: border-box;
  2578. }
  2579. .remark-popup .btn {
  2580. width: 690rpx;
  2581. height: 100rpx;
  2582. background: #00b9ff;
  2583. border-radius: 50rpx;
  2584. line-height: 100rpx;
  2585. font-size: 30rpx;
  2586. text-align: center;
  2587. color: #fff;
  2588. }
  2589. .blue-color {
  2590. background: linear-gradient(90deg, #00baff 0%, #008dff 100%) !important;
  2591. }
  2592. .warning-color {
  2593. background: linear-gradient(90deg, #af4318 0%, #c96405 100%) !important;
  2594. }
  2595. .appoint-overlay-wrapper {
  2596. position: fixed;
  2597. top: 0;
  2598. left: 0;
  2599. width: 100%;
  2600. height: 100%;
  2601. background-color: rgba(0, 0, 0, 0.7);
  2602. z-index: 999;
  2603. }
  2604. /* 选择时间 */
  2605. view.popup-wrapper {
  2606. /* padding: 0 0 20rpx; */
  2607. color: #333;
  2608. display: flex;
  2609. flex-direction: column;
  2610. justify-content: space-between;
  2611. /* height: 80%; */
  2612. position: fixed;
  2613. left: 0;
  2614. right: 0;
  2615. bottom: 0;
  2616. background: #fff;
  2617. padding-bottom: constant(safe-area-inset-bottom);
  2618. padding-bottom: env(safe-area-inset-bottom);
  2619. z-index: 9999;
  2620. border-radius: 36rpx 36rpx 0rpx 0rpx;
  2621. overflow: hidden;
  2622. }
  2623. view.popup-wrapper view.confirm-btn {
  2624. background: #09afff;
  2625. height: 88rpx;
  2626. line-height: 88rpx;
  2627. border-radius: 88rpx;
  2628. text-align: center;
  2629. color: #fff;
  2630. }
  2631. /* 选择备注 */
  2632. .appoint-overlay-wrapper.remark-overlay {
  2633. display: flex;
  2634. align-items: flex-end;
  2635. justify-content: center;
  2636. }
  2637. .remark-select {
  2638. width: 750rpx;
  2639. padding: 0 24rpx 56rpx;
  2640. background: #ffffff;
  2641. border-radius: 24rpx 24rpx 0 0;
  2642. }
  2643. .remark-select .title {
  2644. font-weight: 600;
  2645. color: #191919;
  2646. font-size: 30rpx;
  2647. height: 90rpx;
  2648. line-height: 90rpx;
  2649. text-align: center;
  2650. border-bottom: 2rpx solid #e0e0e0;
  2651. }
  2652. .remark-item .remark-value {
  2653. color: #191919;
  2654. font-size: 26rpx;
  2655. font-weight: bold;
  2656. flex: 1;
  2657. text-align: left;
  2658. }
  2659. .remark-list .remark-item {
  2660. height: 84rpx;
  2661. display: flex;
  2662. border-bottom: 2rpx solid #e0e0e0;
  2663. align-items: center;
  2664. }
  2665. .remark-item .radio-img {
  2666. width: 26rpx;
  2667. height: 26rpx;
  2668. }
  2669. .remark-conf-btn {
  2670. width: 652rpx;
  2671. height: 90rpx;
  2672. line-height: 90rpx;
  2673. border-radius: 90rpx;
  2674. border: 4rpx solid #ff8219;
  2675. text-align: center;
  2676. font-size: 36rpx;
  2677. color: #ff8219;
  2678. margin: 0 auto;
  2679. margin-top: 54rpx;
  2680. }
  2681. .service-item-wrapper {
  2682. background: #00B4FF;
  2683. margin-bottom: 14rpx;
  2684. }
  2685. .fold-title.list-title {
  2686. height: 130rpx;
  2687. }
  2688. .list-title-left view {
  2689. font-size: 32rpx;
  2690. }
  2691. .list-title-left view.item-appoint-time {
  2692. font-size: 28rpx;
  2693. }
  2694. .fold-title.list-title .arrow-white {
  2695. transform: rotate(-90deg);
  2696. transition: transform 0.3s;
  2697. }
  2698. .finish-title.list-title {
  2699. background: #E6F4FF;
  2700. color: rgba(0, 0, 0, 0.25);
  2701. }
  2702. .service-item-wrapper.finish-wrapper {
  2703. background: #E6F4FF;
  2704. }
  2705. .not-appoint-block {
  2706. width: 750rpx;
  2707. height: 220rpx;
  2708. padding: 30rpx 20rpx;
  2709. background: #73D13D;
  2710. border-radius: 14rpx;
  2711. }
  2712. .not-appoint-title {
  2713. height: 44rpx;
  2714. margin-bottom: 40rpx;
  2715. display: flex;
  2716. align-items: center;
  2717. justify-content: space-between;
  2718. padding-left: 18rpx;
  2719. font-size: 32rpx;
  2720. color: #fff;
  2721. }
  2722. .not-appoint-title .not-appoint-times {
  2723. font-size: 28rpx;
  2724. }
  2725. .not-appoint-btn {
  2726. width: 710rpx;
  2727. height: 72rpx;
  2728. line-height: 72rpx;
  2729. background: #FFFFFF;
  2730. border-radius: 72rpx;
  2731. font-size: 28rpx;
  2732. color: #00B4FF;
  2733. text-align: center;
  2734. margin-bottom: 24rpx;
  2735. }
  2736. /* 退款弹框 */
  2737. .refund-order-overlay {
  2738. width: 750rpx;
  2739. height: 100vh;
  2740. background: rgba(0, 0, 0, 0.5);
  2741. display: flex;
  2742. align-items: center;
  2743. justify-content: center;
  2744. position: fixed;
  2745. top: 0;
  2746. bottom: 0;
  2747. z-index: 999;
  2748. left: 0;
  2749. right: 0;
  2750. }
  2751. .refund-order-dialog {
  2752. width: 606rpx;
  2753. height: 644rpx;
  2754. border-radius: 14rpx;
  2755. background: #ffffff;
  2756. border-radius: 20rpx;
  2757. position: relative;
  2758. padding: 300rpx 30rpx 40rpx;
  2759. background: url('https://jzmall.lifejingzhi.com/file/jzmall-dy/dia-bg-refund.png') no-repeat;
  2760. background-color: #FFFFFF;
  2761. background-size: 606rpx 210rpx;
  2762. }
  2763. .refund-dia-title {
  2764. height: 56rpx;
  2765. font-weight: bold;
  2766. font-size: 40rpx;
  2767. color: rgba(0, 0, 0, 0.85);
  2768. line-height: 56rpx;
  2769. text-align: center;
  2770. margin: 60rpx 0 34rpx;
  2771. }
  2772. .refund-dia-tips {
  2773. width: 540rpx;
  2774. color: #333333;
  2775. line-height: 46rpx;
  2776. font-size: 32rpx;
  2777. color: rgba(0, 0, 0, 0.85);
  2778. text-align: center;
  2779. white-space: wrap;
  2780. margin-bottom: 120rpx;
  2781. font-weight: bold;
  2782. }
  2783. .dia-btn-wrapper {
  2784. height: 94rpx;
  2785. display: flex;
  2786. justify-content: space-between;
  2787. }
  2788. .dia-cancel-btn {
  2789. width: 248rpx;
  2790. height: 94rpx;
  2791. line-height: 94rpx;
  2792. border-radius: 94rpx;
  2793. border: 2rpx solid #0093FF;
  2794. font-size: 32rpx;
  2795. color: #0093FF;
  2796. /* font-weight: bold; */
  2797. text-align: center;
  2798. }
  2799. .dia-conf-btn {
  2800. width: 258rpx;
  2801. height: 94rpx;
  2802. line-height: 94rpx;
  2803. border-radius: 94rpx;
  2804. font-size: 32rpx;
  2805. color: #fff;
  2806. font-weight: bold;
  2807. background: #0093FF;
  2808. text-align: center;
  2809. }
  2810. .fast-appoint-block {
  2811. width: 712rpx;
  2812. height: 204rpx;
  2813. background: url('https://jzmall.lifejingzhi.com/file/mall-uni/fast-appoint-bg.png') no-repeat center;
  2814. background-size: 100% 100%;
  2815. padding: 44rpx 52rpx 40rpx 128rpx;
  2816. margin-left: 30rpx;
  2817. }
  2818. .fast-appoint-title {
  2819. height: 40rpx;
  2820. font-size: 28rpx;
  2821. color: #666666;
  2822. line-height: 40rpx;
  2823. margin-bottom: 10rpx;
  2824. }
  2825. .fast-appoint-title .order-num {
  2826. color: #00B4FF;
  2827. margin: 0 6rpx;
  2828. }
  2829. .fast-appoint-title .not-appoint {
  2830. color: #E02020;
  2831. }
  2832. .fast-appoint-btn {
  2833. width: 532rpx;
  2834. height: 64rpx;
  2835. border-radius: 8rpx;
  2836. border: 1rpx solid #F03030;
  2837. font-size: 24rpx;
  2838. color: #F03030;
  2839. font-weight: bold;
  2840. line-height: 64rpx;
  2841. text-align: center;
  2842. }
  2843. .collapse-title {
  2844. display: flex;
  2845. justify-content: space-between;
  2846. padding: 15rpx 40rpx 15rpx 0rpx;
  2847. }
  2848. .collapse-title .collapse-left {
  2849. display: flex;
  2850. flex-direction: column;
  2851. justify-content: center;
  2852. }
  2853. .collapse-left .status {
  2854. color: #09afff;
  2855. font-size: 29rpx;
  2856. margin-bottom: 12rpx;
  2857. }
  2858. .collapse-right {
  2859. display: flex;
  2860. line-height: 100rpx;
  2861. }
  2862. .collapse-right .service-times {
  2863. color: #999;
  2864. margin-left: 5rpx;
  2865. margin-right: 15rpx;
  2866. }
  2867. .collapse-right .icon {
  2868. width: 20rpx;
  2869. height: 16rpx;
  2870. }
  2871. .title-tips {
  2872. display: flex;
  2873. }
  2874. .title-tips .tips-content {
  2875. font-size: 16rpx;
  2876. margin-left: 8rpx;
  2877. color: #999;
  2878. height: 36rpx;
  2879. }
  2880. .title-tips .image {
  2881. width: 51rpx;
  2882. height: 36rpx;
  2883. }
  2884. .title-tips .image image {
  2885. width: 100%;
  2886. height: 100%;
  2887. }
  2888. .product-one {
  2889. margin-top: 10rpx;
  2890. display: flex;
  2891. }
  2892. .product-one .service-name {
  2893. margin-right: 15rpx;
  2894. font-size: 24rpx;
  2895. }
  2896. .product-one .service-peoplenum {
  2897. margin-right: 25rpx;
  2898. font-size: 24rpx;
  2899. }
  2900. .product-one .service-time {
  2901. color: #000;
  2902. font-size: 24rpx;
  2903. }
  2904. </style>