chargingPileDetails.vue 77 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196
  1. <template>
  2. <view>
  3. <!-- chargingPileDetails -->
  4. <u-popup v-model="carTempBl" @open="carTempBlInit" :closeable="true" mode="bottom">
  5. <view style="margin-top: 18px;">
  6. <view style="font-size: 48rpx;">临时车牌:{{form.carNum}}</view>
  7. <ucarkeyboard style="position: inherit !important;" ref="uKeyboard" mode="car"
  8. @confirm="car.carNum=form.carNum,carTempBl=false" @cancel="carTempBl=false" :showTips="true"
  9. :mask-close-able="false" @change="valChange" @backspace="backspace"></ucarkeyboard>
  10. </view>
  11. </u-popup>
  12. <view v-show="step==1">
  13. <ujp-navbar title="费用说明页" :startGz="false"
  14. :custom-back="customback2" ref="ujpnavbar">
  15. </ujp-navbar>
  16. <view class="main2">
  17. <view class="item">
  18. <view class="title">
  19. 充电枪编号
  20. </view>
  21. <view class="content">
  22. {{gun.gunNo}}
  23. </view>
  24. </view>
  25. <view class="item">
  26. <view class="title">
  27. 充电枪名称-充电枪类型
  28. </view>
  29. <view class="content">
  30. {{detail.name}}-{{detail.interfaceType}}{{detail.chargingType}}
  31. </view>
  32. </view>
  33. <view class="item">
  34. <view class="title">
  35. 充电枪功率
  36. </view>
  37. <view class="content">
  38. {{detail.chargingPower}}kW
  39. </view>
  40. </view>
  41. <view class="item" v-if="price">
  42. <view class="title">
  43. 电费+服务费
  44. </view>
  45. <view class="content" v-if="personInfo&&personInfo.userType==2">
  46. 当前时段:{{price.startTime}}~{{price.endTime}} 费用为
  47. <span style="color: #00b962;">{{price.costPrice.toFixed(2)}} </span>元/度
  48. <span v-if="station.giveDiscount">(含电费{{price.electricityPrice.toFixed(2)}}元/度 +
  49. 服务费{{price.discountServicePrice.toFixed(2)}}元/度(折前价{{price.servicePrice.toFixed(2)}}元/度))</span>
  50. <span v-if="!station.giveDiscount">(含电费{{price.electricityPrice.toFixed(2)}}元/度 +
  51. 服务费{{price.servicePrice.toFixed(2)}}元/度)</span>
  52. </view>
  53. <view class="content" v-else>
  54. 当前时段:{{price.startTime}}~{{price.endTime}} 费用为
  55. <span style="color: #00b962;">{{(price.electricityPrice+price.servicePrice).toFixed(2)}}
  56. </span>元/度
  57. <span>(含电费{{price.electricityPrice.toFixed(2)}}元/度 +
  58. 服务费{{price.servicePrice.toFixed(2)}}元/度)</span>
  59. </view>
  60. </view>
  61. <view class="item" v-if="station.parkingDescription">
  62. <view class="title">
  63. 停车费用
  64. </view>
  65. <view class="content"
  66. v-html="station.parkingSimpleDescription?station.parkingSimpleDescription:station.parkingDescription">
  67. </view>
  68. </view>
  69. </view>
  70. </view>
  71. <view v-show="step==0">
  72. <ujp-navbar :title="pageTitle" :startGz="false" :custom-back="customback">
  73. <view class="iconfont service" @click="openModal">
  74. &#xe60d;
  75. </view>
  76. </ujp-navbar>
  77. <!-- 未插枪提示 -->
  78. <!-- <u-alert-tips type="warning" v-if="!isInsert" :description="description" :show-icon="true"></u-alert-tips>
  79. -->
  80. <view class="main">
  81. <view class="main-head">
  82. <view class="text" v-if="haveLock&&lockStatus==1">
  83. <view class="text-1">
  84. 请下降地锁
  85. </view>
  86. <view class="text-2">
  87. 请在<span style="color:red">{{lockSafeStopTime}}分钟</span>内停车入位,以免地锁抬升对您的爱车造成损伤。
  88. </view>
  89. </view>
  90. <view class="text" v-else>
  91. <view class="text-1" v-if="gun&&gun.workStatus==2">
  92. 充电中
  93. </view>
  94. <view class="text-1" v-else >
  95. {{isInsert?'可充电':'未插枪'}}
  96. </view>
  97. <view class="text-2" v-if="station.stationType==50">
  98. 可进行充电
  99. </view>
  100. <view class="text-2" v-else>
  101. <template v-if="gun&&gun.workStatus==2">
  102. </template>
  103. <template v-else>
  104. {{isInsert?'充电枪已连接,可进行充电':'未检测到充电枪,若已插枪,请拔出重插'}}
  105. </template>
  106. </view>
  107. </view>
  108. <view class="charge-img">
  109. <img src="@/assets/img/charge.png" alt="">
  110. </view>
  111. </view>
  112. <view class="charging-info">
  113. <view class="address">
  114. {{station.name}}
  115. <!-- <text class="explain" @click="step=1">费用说明</text> -->
  116. </view>
  117. <view class="name">
  118. <span style="font-weight: bold;color: #000;"
  119. v-if="station.stationType!=50&&gun.sortNo">{{gun.sortNo}}号/</span><span
  120. style="font-weight: bold;color: #000;">{{detail.name}}</span><span
  121. style="font-weight: bold;color: #000;"
  122. v-if="station.stationType!=50">枪{{channelNoShow(gun.channelNo,detail.manufacturer,gun.customNo)}}</span>
  123. <text class="free" v-if="gunDetail.chargingAppointment&&gunDetail.isMeAppoint">您已预约</text>
  124. <text class="free" v-else-if="gunDetail.chargingAppointment&&!gunDetail.isMeAppoint">已被预约</text>
  125. <text class="free " :class="'workStatusText'+gun.workStatus" v-else >{{gun.workStatusText}}</text>
  126. </view>
  127. <view v-if="gun.workStatus==6" @click="operating=true"
  128. style="margin-top: 10rpx;color: rgba(255, 56, 56, 1);font-size: 28rpx; display: flex; align-items: center;" >
  129. <span style="color: #fff;background: linear-gradient(93.02deg, rgba(255,56,56,1) 39.4%,rgba(255,124,112,1) 92.42%);
  130. border-radius: 4px;
  131. padding: 0rpx 10rpx;
  132. margin-right: 8rpx;
  133. font-size: 24rpx;
  134. line-height:40rpx;
  135. " >提醒</span>
  136. 点击查看恢复供电操作指示图
  137. <u-icon name="arrow-right"></u-icon>
  138. </view>
  139. <view v-if="quickChargeReduceMethod1(station)&&personInfo&&personInfo.userType==2"
  140. style="margin-top: 10rpx;color: rgba(255, 121, 0, 1);font-size: 28rpx; display: flex; align-items: center;" >
  141. <span style="color: #fff;background: linear-gradient(93.02deg, rgba(255,121,0,1) 39.4%,rgba(255,174,0,1) 93.51%);
  142. border-radius: 4px;
  143. padding: 0rpx 10rpx;
  144. margin-right: 8rpx;
  145. font-size: 24rpx;
  146. line-height:40rpx;
  147. " >活动</span>
  148. 快充订单满{{station.quickChargeDegree}}度服务费{{discountRatio10(station.quickChargeDiscountRatio)}}折
  149. </view>
  150. <view v-if="quickChargeReduceMethod2(station)&&personInfo&&personInfo.userType==2"
  151. style="margin-top: 10rpx;color: rgba(255, 121, 0, 1);font-size: 28rpx; display: flex; align-items: center;" >
  152. <span style="color: #fff;background: linear-gradient(93.02deg, rgba(255,121,0,1) 39.4%,rgba(255,174,0,1) 93.51%);
  153. border-radius: 4px;
  154. padding: 0rpx 10rpx;
  155. margin-right: 8rpx;
  156. font-size: 24rpx;
  157. line-height:40rpx;
  158. " >活动</span>
  159. 喜迎国庆,充电有奖
  160. </view>
  161. <!-- <view class="price" v-if="detail.stationAddress">
  162. <text class="unit">{{detail.stationAddress}}</text>
  163. </view> -->
  164. <view v-if="price" class="priceListBlMain">
  165. <view class="price-3-card-view " v-if="personInfo&&personInfo.userType==2&&(userCardBool&&userCard.classify==2||(!userCardBool&&prevMonthKwhBL))">
  166. <view class="price">
  167. <text class="span">{{price.costPrice.toFixed(2)}}</text><text class="unit">元/度</text>
  168. </view>
  169. <view class="price-3-card ">
  170. <view class="num1" v-if="!userCard||userCard.serviceFeeDiscountRate==60" >
  171. <img src="@/assets/img/9-4/6折卡价.svg" />
  172. </view>
  173. <view class="num1" style=" background: #303133;
  174. color: #f4f4f4;
  175. border-radius: 4px 0 4px 4px;
  176. padding: 0 3px;
  177. margin-right: 3px;" v-else >
  178. <span v-if="userCard.cardType==4" >折扣卡 </span>
  179. <span v-else >{{userCard.serviceFeeDiscountRate/10}}折卡 </span>
  180. </view>
  181. <text
  182. class="num">{{ (price.electricityPrice+(price.servicePrice*(userCard?userCard.serviceFeeDiscountRate/100:0.6))).toFixed(2)}}元/度</text>
  183. </view>
  184. </view>
  185. <view class="price-3-card-view " v-else-if="personInfo&&personInfo.userType==2&&((userCardBool&&userCard.classify==1)||(!userCardBool&&!prevMonthKwhBL))">
  186. <view class="price">
  187. <text class="span">{{price.costPrice.toFixed(2)}}</text><text class="unit">元/度</text>
  188. </view>
  189. <view class="price-3-card price-3-card-yue ">
  190. <view class="num1">
  191. <img src="@/assets/img/9-4/月卡价格.png" />
  192. </view>
  193. <text
  194. class="num">{{ (price.electricityPrice).toFixed(2)}}元/度</text>
  195. </view>
  196. </view>
  197. <view class="price" v-else-if="false&&personInfo&&personInfo.userType==2">
  198. <text class="span">{{price.costPrice.toFixed(2)}}</text><text class="unit">元/度</text>
  199. <text class="unit"
  200. v-if="station.giveDiscount">(折前价{{((price.electricityPrice*1000+price.servicePrice*1000)/1000).toFixed(2)}}元/度)</text>
  201. </view>
  202. <view class="price-2" v-else>
  203. <view class="price-4">
  204. <text>{{((price.electricityPrice*1000+price.servicePrice*1000)/1000).toFixed(2)}}</text><text
  205. class="unit">元/度</text>
  206. </view>
  207. <view class="price-3 " v-if="station.giveDiscount">
  208. <text class="num1">会员</text>
  209. <text class="num">{{price.costPrice.toFixed(2)}}</text>
  210. <text class="unit3 ">元/度</text>
  211. </view>
  212. </view>
  213. <view class="priceListBl" @click="priceListBl=!priceListBl">
  214. {{priceListBl?'收起':'详情'}}
  215. <u-icon :name="!priceListBl?'arrow-up':'arrow-down'"></u-icon>
  216. </view>
  217. </view>
  218. <view class="chat-box" v-show="priceListBl">
  219. <view class="chat_hhh">
  220. <view class="chatTime" v-for="(item,i) in pricesInfo" :key="i" :style="'width:'+getW(item)" :class="{
  221. current1: pricesInfoCurrent.startTime==item.startTime,
  222. current2: pricesInfoCurrent2.startTime==item.startTime,
  223. }" @click="chatShowBtn(item)">
  224. <view class="chatShow" v-show="chatShow" :class="{
  225. chatShowA:i<pricesInfo.length/2,
  226. chatShowB:i>pricesInfo.length/2,
  227. chatShowNo: pricesInfoCurrent2.startTime!=item.startTime,
  228. chatShowOk: pricesInfoCurrent2.startTime==item.startTime,
  229. }">
  230. <view>时段:<span class="">{{item.startTime}}-{{item.endTime}}</span></view>
  231. <view>电价:<span class="showspan">{{item.electricityPrice}}元/度</span></view>
  232. <view>服务费:<span class="showspan">{{(personInfo&&personInfo.userType==2)&&(station.giveDiscount||(item.discountServicePrice))?item.discountServicePrice:item.servicePrice}}元/度</span></view>
  233. </view>
  234. <template v-if="station">
  235. <template
  236. v-if="(personInfo&&personInfo.userType==2)&&(station.giveDiscount||(item.discountServicePrice))">
  237. <span class="chats1" :style="'height:'+getH(item.discountServicePrice)">
  238. {{item.discountServicePrice}}</span>
  239. </template>
  240. <template v-else>
  241. <span class="chats1" :style="'height:'+getH(item.servicePrice)">
  242. {{item.servicePrice}}</span>
  243. </template>
  244. </template>
  245. <span class="chats2" :style="'height:'+getH(item.electricityPrice)">
  246. <span>{{item.electricityPrice}}</span>
  247. <span class="chats0" v-if="pricesInfoCurrent.startTime==item.startTime">
  248. <span>当前</span>
  249. <span>时段</span>
  250. </span>
  251. <span class="chats9" v-else>
  252. <span>当前</span>
  253. <span>时段</span>
  254. </span>
  255. </span>
  256. </view>
  257. </view>
  258. <view class="chat_hhh_time">
  259. <span>00:00</span>
  260. <span>12:00</span>
  261. <span>24:00</span>
  262. </view>
  263. </view>
  264. <view class="discount-card"
  265. :class="{
  266. 'discount-card-4':userCard.cardType==4
  267. }"
  268. v-if="userCardBool&&userCard.classify==2">
  269. <view class="name" v-if="userCard.cardType==4">
  270. {{projectName}}{{userCard.monthlyRentName}}
  271. </view>
  272. <view class="name" v-else>
  273. 自营站充电服务费{{userCard.serviceFeeDiscountRate/10}}折卡
  274. </view>
  275. <view class="progress">
  276. <view class="time">
  277. {{thisendTime(userCard.endTime)}}到期 | 剩余{{setValidity(thisdaysDistance(userCard.endTime))}}
  278. </view>
  279. <view class="electric-quantity" v-if="userCard.chargeDegreeLimit">
  280. 已用{{userCard.chargedDegree?userCard.chargedDegree.toFixed(0):0.00}}度 /
  281. 共{{userCard.chargeDegreeLimit}}度
  282. </view>
  283. <view class="electric-quantity" v-if="userCard.chargeDegreeLimit==0&&userCard.saveInformation">
  284. 已用{{userCard.saveInformation.num}}次 /
  285. 共省{{userCard.saveInformation.saveMoney}}元
  286. </view>
  287. </view>
  288. <u-line-progress :show-percent="false" active-color="#2979ff" :percent="thispercent(userCard)">
  289. </u-line-progress>
  290. </view>
  291. </view>
  292. </view>
  293. <view class="carImg" v-if="personInfo&&personInfo.userType!=2">
  294. <img @click="gotoLogin" src="@/assets/img/gologin/img.png">
  295. </view>
  296. <view class="class20250501" @click="gotoUrl('pages/temporary/activity20250501?source=99')"
  297. v-else-if="!userCardBool&&userChargingAmountObj.type">
  298. <view class="body1" v-if="userChargingAmountObj.type==3">
  299. <view class="text1">近半年您已花费<span>{{userChargingAmountObj.money}}</span>元用于充电</view>
  300. <view class="text2">如参与充值送折扣卡活动,预计可省 <span style="font-size: 56rpx;">{{userChargingAmountMethod(userChargingAmountObj).num3}}</span> 元</view>
  301. </view>
  302. <view class="body1" v-if="userChargingAmountObj.type==2">
  303. <view class="text1">按您每月充电花费,半年将超<span>{{userChargingAmountObj.money}}</span>元</view>
  304. <view class="text2">推荐充值<span>{{userChargingAmountMethod(userChargingAmountObj).num1}}元</span>,预计可省 <span style="font-size: 56rpx;">{{userChargingAmountMethod(userChargingAmountObj).num3}}</span> 元</view>
  305. </view>
  306. <view class="body1" v-if="userChargingAmountObj.type==1">
  307. <view class="text1">新用户参与充值送折扣卡活动推荐充值<span>1000</span>元,预计可省 <span> 133元</span>。</view>
  308. </view>
  309. <view class="body2">
  310. <view class="botton">查看活动详情</view>
  311. </view>
  312. </view>
  313. <!-- <view class="carImg3" :class="{
  314. 'carImg3-yue':!prevMonthKwhBL
  315. }"
  316. v-else-if="carImg3Bl&&!userCardBool">
  317. <view class="carImg2" v-if="prevMonthKwhBL" >
  318. <view>
  319. <view class="carImg-1">您近30天已充电{{carImg3span1}}度</view>
  320. <view class="carImg-2">如购买6折卡,可省约<span>{{carImg3span2}}</span>元</view>
  321. <view class="carImg-3" @click="gotoUrl('pages/discountCard/productDetails')">
  322. <span>点击购买</span>
  323. </view>
  324. </view>
  325. </view>
  326. <view class="carImg2-yue" v-if="!prevMonthKwhBL" >
  327. <view>
  328. <view class="carImg-1">您近30天已充电{{carImg3span1}}度</view>
  329. <view class="carImg-2">如购买月卡,可省约<span>{{carImg3span3}}</span>元</view>
  330. <view class="carImg-3" @click="gotoUrl('pages/monthlyCardActivity/monthlyCardBuy')">
  331. <span>点击购买</span>
  332. </view>
  333. </view>
  334. </view>
  335. </view>
  336. <view class="carImg3" v-else-if="carImg4Bl&&!userCardBool">
  337. <view class="carImg2" >
  338. <view>
  339. <view class="carImg-1">每月只需12.9元</view>
  340. <view class="carImg-2">前338度电可省约<span>67.6</span>元</view>
  341. <view class="carImg-3" @click="gotoUrl('pages/discountCard/productDetails')">
  342. <span>点击购买</span>
  343. </view>
  344. </view>
  345. </view>
  346. </view> -->
  347. <view class="slogan-4 " v-show="bannerListTop.length"
  348. @click="showTop=true,getBannerInfoTopBl=true">
  349. <u-icon :class="{
  350. imageshake :true
  351. }" size="45" name="gift"></u-icon>
  352. </view>
  353. <u-modal v-model="showTop" v-if="getBannerInfoTopBl" class="showOss showOssK" :show-title="false"
  354. :show-confirm-button="false">
  355. <view class="slot-content">
  356. <swiper class="swiper" circular :indicator-dots="true" :autoplay="true" :interval="2500"
  357. :duration="500">
  358. <swiper-item class="swiperitem" v-if="showNt">
  359. <u-image width="600" style="margin: auto;min-height: 250px;" mode="widthFix"
  360. v-show="showNtStep==0" src="@/assets/img/nt/f5surprised-1.png">
  361. <view slot="loading" style="height: 200px;">
  362. <u-loading mode="flower" size="186">
  363. </u-loading>
  364. </view>
  365. </u-image>
  366. <view style="color: #ecc07d;
  367. font-size: 64rpx;
  368. position: relative;
  369. top: -220rpx;
  370. right: -100rpx; width: 400rpx;" @click="showNtStepClick" v-show="showNtStep==0">
  371. <span>.</span>
  372. </view>
  373. <u-image width="600" height="700" style="margin: auto;;min-height: 250px;"
  374. mode="scaleToFill" v-show="showNtStep==1" src="@/assets/img/nt/f5surprised-2.png">
  375. </u-image>
  376. <u-image width="600" style="margin: auto;min-height: 250px;" mode="widthFix"
  377. v-show="showNtStep==2" src="@/assets/img/nt/nt-activity-3.png">
  378. </u-image>
  379. <u-image width="500" style="color: #FFFFFF;
  380. font-size: 64rpx;
  381. position: relative;
  382. top: -540rpx;
  383. right: -60rpx;height: 0;
  384. " mode="widthFix" v-show="showNtStep==2" src="@/assets/img/nt/f5surprised-3.png">
  385. </u-image>
  386. <view style="color: #ecc07d;
  387. font-size: 72rpx;
  388. position: relative;
  389. top: -180rpx;
  390. right: -144rpx; width: 310rpx;" @click="showNtStepClick" v-show="showNtStep==2">
  391. <span>.</span>
  392. </view>
  393. <view style="color: #FFFFFF;
  394. font-size: 64rpx;
  395. position: relative;
  396. top: -528rpx;
  397. right: -80rpx;" :style="{
  398. right:showNtValue>99?'-80rpx':(showNtValue>9?'-95rpx':'-110rpx')
  399. }" v-show="showNtStep==1"><b>{{showNtValue}}</b>
  400. <span style="font-size: 28rpx;">元</span>
  401. </view>
  402. <view style="color: #ecc07d;
  403. font-size: 72rpx;
  404. position: relative;
  405. top: -270rpx;
  406. right: -144rpx; width: 310rpx;" @click="showNtStepClick" v-show="showNtStep==1">
  407. <span>.</span>
  408. </view>
  409. </swiper-item>
  410. <swiper-item class="swiperitem" v-for="(item,i) in bannerListTop" :key="i">
  411. <u-image width="500" height="500" bgColor="#ff000000"
  412. style="margin: auto;min-height: 250px;" mode="widthFix" @click="clickBannerTopI(i)"
  413. :src="item.picUrl">
  414. <view slot="loading" style="height: 200px;">
  415. <u-loading mode="flower" size="186">
  416. </u-loading>
  417. </view>
  418. </u-image>
  419. </swiper-item>
  420. </swiper>
  421. <u-image width="36px" style="margin: auto; margin-top: 10px;" mode="widthFix" @click="showTop=false"
  422. src="@/assets/img/if-close-line-circled.png"></u-image>
  423. </view>
  424. </u-modal>
  425. <view class="bottom" :class="{
  426. haveLock:haveLock
  427. }" >
  428. <!-- 解锁中 -->
  429. <!-- <u-button shape="circle" type="success" style="opacity: 0.4;">
  430. 解锁中<img style="margin-left: 4px;" src="@/assets/static/img/riLine-refresh-line.svg" alt="">
  431. </u-button> -->
  432. <!-- 刷新充电枪状态 如果改动 ,请添加 方法判断startCarCharging -->
  433. <u-button shape="circle" type="success" v-if="gun&&gun.workStatus==2">充电中</u-button>
  434. <u-button shape="circle" type="success" v-else-if="!openBool">仅单位内部员工可用</u-button>
  435. <!-- 刷新充电枪状态 如果改动 ,请添加 方法判断startCarCharging -->
  436. <u-button shape="circle" type="success" @click="getPile()"
  437. v-else-if="gunDetail.chargingAppointment&&!gunDetail.isMeAppoint">已被预约</u-button>
  438. <!-- 刷新充电枪状态 如果改动 ,请添加 方法判断startCarCharging -->
  439. <u-button shape="circle" v-else-if="haveLock&&lockStatus==1" @click="lockDown()"
  440. style="background-color:#009ED7" type="success">下降地锁</u-button>
  441. <u-button shape="circle" v-else-if="!isInsert" @click="getPile()" type="success">刷新充电枪状态</u-button>
  442. <!-- 刷新充电枪状态 如果改动 ,请添加 方法判断startCarCharging -->
  443. <!-- 开始充电 -->
  444. <u-button shape="circle" type="success" v-else @click="charge()">开始充电</u-button>
  445. <view v-if="lastTiming&&lastTiming.startTime&&gunDetail.nextTiming">
  446. <view style="
  447. text-align: center;
  448. color: #FF9800;
  449. margin-top: 10px;
  450. " >
  451. <u-icon
  452. style=" margin-top: 2px;"
  453. size="30"
  454. name="info-circle"
  455. ></u-icon>
  456. 已设置{{lastTiming.startTime}}的定时充电,再次启动将会覆盖设置
  457. </view>
  458. <view @click="onShowRole = true,gotoUrl('pages/user/myReservation/chargingRe')"
  459. style="width: 100%; text-align: center;color: #00B962; margin-top: 10px;">
  460. 预约充电列表<u-icon name="arrow-right-double" color="#00B962" size="22"></u-icon>
  461. </view>
  462. </view>
  463. </view>
  464. <view class="carImg3" style=" background: 0;margin-top: 20rpx;" v-if="station.nightRemind&&station.nightRemindContent" >
  465. <img :src="station.nightRemindContent" style=" width: 100%;height: 200rpx;">
  466. </view>
  467. <view class="cost-explainMain" >
  468. <view class="cost-explain" v-if="gun.parkingNo" >
  469. <view class="text"
  470. style=" font-size: 32rpx; color: #009ED7; font-weight: bold;">
  471. 车位号:{{gun.parkingNo}}
  472. </view>
  473. </view>
  474. <view class="cost-explain" >
  475. <view class="text">
  476. 充电记录
  477. </view>
  478. <view class="iconfont" style="
  479. font-size: 32rpx;
  480. text-align: right;" @click="gotoUrl('pages/record/index')">
  481. 查看&#xe600;
  482. </view>
  483. </view>
  484. <view class="cost-explain useFreeCoupon" v-if="station.useFreeCoupon" >
  485. ↑↑充电结束后查看记录使用“免费停车优惠劵”
  486. </view>
  487. <view class="cost-explain" v-if="station.id=='f62ce857-1301-4cf3-9c02-74d378c25ab2'" >
  488. <view class="text" style="width: 100%;">
  489. 费用说明
  490. <view class="iconfont" style="color: #1bbe6b;
  491. font-size: 28rpx;
  492. display: initial; float: right;" @click="step=1">
  493. 查看更多&#xe600;
  494. </view>
  495. </view>
  496. </view>
  497. <p style="text-indent: 2em; font-size: 28rpx;" v-if="station.id=='f62ce857-1301-4cf3-9c02-74d378c25ab2'" >
  498. 停车费调整:本停车场,新能源汽车充电,最高<span style="color:red">只减免2小时</span>停车费用,<span style="color:red">超出部分</span>按停车场规定缴费
  499. </p>
  500. <view class="cost-explain" v-else >
  501. <view class="text">
  502. 费用说明
  503. </view>
  504. <view class="iconfont" style="
  505. font-size: 32rpx;
  506. text-align: right;" @click="step=1">
  507. 查看&#xe600;
  508. </view>
  509. </view>
  510. <view class="cost-explain" :class="{
  511. 'cost-explain2':!car
  512. }" >
  513. <view class="text">
  514. 入场车辆
  515. </view>
  516. <view class="car-number" v-if="!car||!carplateMust" @click="carDet()">
  517. {{car?car.carNum:'填车牌号可减免部分停车费用'}}
  518. <img v-if="!car" src="@/assets/static/img/riLine-edit-box-line2.svg" alt="">
  519. </view>
  520. <view class="car-number" v-else >
  521. {{car?car.carNum:'填车牌号可减免部分停车费用'}}
  522. <!-- <img v-if="car&&car.carNum" @click="carTempBl=true"
  523. src="@/assets/static/img/riLine-edit-box-line2.svg" alt=""> -->
  524. <img @click="carTempBl=true" src="@/assets/static/img/riLine-edit-box-line2.svg" alt="">
  525. </view>
  526. </view>
  527. </view>
  528. <!--提示 -->
  529. <view class="tips">
  530. <p class="p" @click="chargeTest">站点标签:</p>
  531. <view class="sign" v-if="station.stationType==50">
  532. <view class="sign-tag sign-0" v-if="station.isRecommend">推荐</view>
  533. <view class="sign-tag sign-5" v-if="station.isAlways">常用</view>
  534. <view class="sign-tag sign-6" v-if="station.isSpecial">特价</view>
  535. {{station.address}}
  536. </view>
  537. <view class="sign" v-else>
  538. <view class="sign-tag sign-0" v-if="station.isRecommend">推荐</view>
  539. <view class="sign-tag sign-5" v-if="station.isAlways">常用</view>
  540. <view class="sign-tag sign-6" v-if="station.isSpecial">特价</view>
  541. <!-- -->
  542. <view class="sign-1 sign-tag "
  543. v-if="station.giveDiscount&&station.discountRatio&&station.discountRatio!=100">
  544. 会员{{discountRatio10(station.discountRatio)}}折</view>
  545. <view class="sign-3 sign-tag" v-if="station.category=='超充'">160kW超充站</view>
  546. <view class="sign-4 sign-tag" v-if="station.nightLowPriceEnabled">
  547. 夜间超低价</view>
  548. <view class="sign-2 sign-tag" v-if="station.platformType==1">自营站</view>
  549. <view class="sign-2 sign-tag" v-if="station.tagList.length != 0"
  550. v-for="(tagName,tagIndex) in station.tagList" :style="'border: 1px solid '+tagNameBy(tagName,1)+';color:'+tagNameBy(tagName,1)"
  551. :key="tagIndex">{{tagNameBy(tagName,0)}}</view>
  552. </view>
  553. <p class="p" @click="chargeTest" style="margin-top: 20rpx;">注意事项:</p>
  554. <!-- <view class="content" v-if="!isInsert">
  555. 点击降锁后,请稍等几十秒,待地锁完全下降后,再驶入车位。
  556. </view> -->
  557. <view class="content">
  558. 1.车停好,请熄火后再充电;<br />
  559. 2.请确保充电枪插接到位;<br />
  560. 3.车辆充电时,请关闭车内电源;<br />
  561. 4.充电完毕,请及时拔枪;<br />
  562. 5.填写车牌号,离场时可减免部分停车费。
  563. </view>
  564. </view>
  565. <!-- 弹窗 -->
  566. <view>
  567. <u-modal v-model="show" @confirm="confirmPhone" :confirm-text="confirmText" confirm-color="#606266"
  568. :show-cancel-button="true" ref="uModal" :asyncClose="true" :title="title" :content="consumerPhone"
  569. :content-style="{fontSize: '24px',color: '#101010'}"></u-modal>
  570. </view>
  571. </view>
  572. <u-modal v-model="showNt" class="showOss2" :show-title="false" :show-confirm-button="false">
  573. <view class="slot-content">
  574. <u-image width="600" style="margin: auto;min-height: 250px;" mode="widthFix" v-show="showNtStep==0"
  575. src="@/assets/img/nt/news-activity-2.png">
  576. <view slot="loading" style="height: 200px;">
  577. <u-loading mode="flower" size="186">
  578. </u-loading>
  579. </view>
  580. </u-image>
  581. <view style="color: #ecc07d;
  582. font-size: 64rpx;
  583. position: relative;
  584. top: -220rpx;
  585. right: -100rpx; width: 400rpx;" @click="showNtStepClick" v-show="showNtStep==0">
  586. <span>.</span>
  587. </view>
  588. <u-image width="600" style="margin: auto;min-height: 250px;" mode="widthFix" v-show="showNtStep==1"
  589. src="@/assets/img/nt/news-activity-1.png">
  590. </u-image>
  591. <view style="color: #FFFFFF;
  592. font-size: 64rpx;
  593. position: relative;
  594. top: -600rpx;
  595. right: -80rpx;" :style="{
  596. right:showNtValue>99?'-80rpx':(showNtValue>9?'-95rpx':'-110rpx')
  597. }" v-show="showNtStep==1"><b>{{showNtValue}}</b>
  598. <span style="font-size: 28rpx;">元</span>
  599. </view>
  600. <view style="color: #ecc07d;
  601. font-size: 72rpx;
  602. position: relative;
  603. top: -290rpx;
  604. right: -144rpx; width: 310rpx;" @click="showNtStepClick" v-show="showNtStep==1">
  605. <span>.</span>
  606. </view>
  607. </view>
  608. </u-modal>
  609. <u-modal v-model="show3" class="showOss" confirm-text="注册会员" cancel-text="先不注册" :show-title="false" width="650"
  610. border-radius="30" title="" :show-cancel-button="false" :show-confirm-button="false">
  611. <view class="slot-content">
  612. <!-- :show-title="false" -->
  613. <view>
  614. <img v-if="branchParameterBl('ud')" src="@/assets/img/gologin/nipic.png" style="width: 100%;"></img>
  615. <img v-else src="@/assets/img/Nipic_24385267_20191128181916139081.png" style="width: 100%;"></img>
  616. </view>
  617. <view>
  618. <table class="classtable">
  619. <tr>
  620. <td class="td1">
  621. <img src="@/assets/img/Nipic_vip.png" style="width: 24px;"></img>
  622. <p style="color: #FF9800;line-height: 10px;">会员</p>
  623. </td>
  624. <td class="td2">
  625. <p v-if="branchParameterBl()" ><span class="dian">·</span>充电最低<span style="color:#4aa461">0.66元</span>/度(含服务费)</p>
  626. <p><span class="dian">·</span>账户充值赠送代金券</p>
  627. <p><span class="dian">·</span>更有<span style="color:#4aa461">会员充电折扣、服务费包月会员资格</span>等超多福利
  628. </p>
  629. <p v-if="branchParameterBl('ud')"><span class="dian">·</span>与51充电联盟会员共享数据,包括账户余额、优惠卡券等</p>
  630. </td>
  631. </tr>
  632. <tr>
  633. <td style="color: #fff;line-height: 3px;">.</td>
  634. </tr>
  635. <tr>
  636. <td class="td1">
  637. <img src="@/assets/img/Nipic_youke.png" style="width: 24px;"></img>
  638. <p style="color: rgb(74, 164, 97);line-height: 10px;">游客</p>
  639. </td>
  640. <td class="td2">
  641. <p><span class="dian">·</span>临时车牌快速充电</p>
  642. <p><span class="dian">·</span>无需注册 先付后退</p>
  643. <p><span class="dian">·</span><span style="color:#F44336">不可使用</span>平台各类代金券</p>
  644. </td>
  645. </tr>
  646. </table>
  647. </view>
  648. <view class="btnview">
  649. <!-- <u-button shape="circle" @click="show3=false"
  650. style=" width: 200rpx; background-color: #fff !important; margin: 20rpx;float: left;margin-bottom: 20px; "
  651. szie="mini" type="success" plain>继续充电</u-button> -->
  652. <view class="btnview1">
  653. <u-button shape="circle" style=" float: left; width: 400rpx; margin: 20rpx; " szie="mini"
  654. type="success" @click="gotoUrl('pages/login/login')">注册会员</u-button>
  655. </view>
  656. <view class="btnview2" @click="show3=false,show4=true">暂不注册,先充电</view>
  657. </view>
  658. </view>
  659. </u-modal>
  660. <u-modal v-model="quickChargingBl" class="quickMain" confirm-text="注册会员" cancel-text="先不注册" :show-title="false" width="650"
  661. border-radius="30" title="" :show-cancel-button="false" :show-confirm-button="false">
  662. <view class="quickMain-slot-content">
  663. <!-- :show-title="false" -->
  664. <view class="quickMain-img">
  665. <img src="@/assets/img/member/10.png" ></img>
  666. </view>
  667. <view class="quickMain-bodyMain" >
  668. <view class="quickMain-body">
  669. <view class="quickMain-text1">快捷充电功能上线!</view>
  670. <view class="quickMain-text2">
  671. 恭喜您达到
  672. <img src="@/assets/img/9-4/白金会员.svg" ></img>
  673. <span style="color:#3F51B5;">白金会员</span>等级,您已获得<span style="color: #19be6b;">【快捷充电】</span>功能体验资格。
  674. </view>
  675. <view class="quickMain-text2">
  676. 当您插枪扫码后,在个人账户余额充足的情况下,自动帮您选择充满自停模式并开始充电。如需关闭此功能,可在“我的”-“设置”中修改。
  677. </view>
  678. </view>
  679. <view class="btnview">
  680. <!-- <u-button shape="circle" @click="show3=false"
  681. style=" width: 200rpx; background-color: #fff !important; margin: 20rpx;float: left;margin-bottom: 20px; "
  682. szie="mini" type="success" plain>继续充电</u-button> -->
  683. <view class="btnview1">
  684. <u-button shape="circle" style=" float: left; width: 400rpx; margin: 20rpx; " szie="mini"
  685. type="success" @click="checkedChange2(1)">同意并记住我的选择</u-button>
  686. </view>
  687. <view class="btnview2" @click="checkedChange2(0)">暂不启用</view>
  688. </view>
  689. </view>
  690. </view>
  691. </u-modal>
  692. <u-modal v-model="carplateMustModel" :mask-close-able="true"
  693. @cancel="carTempBl=true" :title="station.name+'提醒您'"
  694. cancel-text="其他车牌号" :confirm-text="car?car.carNum:''" :show-cancel-button="true" >
  695. <view @click="carplateMustModel=false"
  696. style=" position: absolute;
  697. top: 0;
  698. right: 3px;">关闭</view>
  699. <view style="padding: 20px;">
  700. 当前绑定的车牌号为<span style="color:#19be6b">{{car?car.carNum:''}}</span><br/>
  701. 车辆充电,车牌号一致可<span style="color:#FF5722">减免停车费</span>,不一致可使用临时车牌号,用于出入停车场
  702. </view>
  703. </u-modal>
  704. <u-modal v-model="show1" @confirm="gotoGz" cancel-text="暂不关注" confirm-text="前往关注" :show-cancel-button="false"
  705. confirm-color="#53b56b" ref="uModal2" :asyncClose="true">
  706. <view style="padding: 15px;">请先关注<span style=" color: #53b56b;">{{projectName}}</span>公众号,然后进行车辆充电</view>
  707. </u-modal>
  708. <quickRegistration v-if="show4" @login="loginMethod" :carNum="car?car.carNum:''" ></quickRegistration>
  709. <u-popup v-model="operating" mode="center" >
  710. <view @click="operating=false"
  711. style="background-color: #53a849;
  712. text-align: center;
  713. width: 600rpx; ">
  714. <img style=" width: 400rpx;"
  715. src="@/assets/img/gologin/操作指引-tuya.png"></img>
  716. </view>
  717. </u-popup>
  718. </view>
  719. </template>
  720. <script>
  721. import * as loginApi from '@/apis/login.js'
  722. import * as API_index from '@/apis/index.js'
  723. import * as API from "@/apis/chargeProcess.js"
  724. import * as userApi from '@/apis/user.js'
  725. import * as newsApi from '@/apis/news.js'
  726. import ucarkeyboard from '@/components/Ucarkeyboard.vue'
  727. import * as API_weixin from '@/apis/weixin.js'
  728. import quickRegistration from '@/components/QuickRegistration.vue'
  729. import {
  730. newDate,
  731. hourDistanceArr,
  732. currentTimeStamp,
  733. parseUnixTime,
  734. daysDistance
  735. } from '@/utils'
  736. export default {
  737. components: {
  738. ucarkeyboard,quickRegistration
  739. },
  740. data() {
  741. return {
  742. userChargingAmountObj:{
  743. },
  744. pageTitle:"充电枪详情",
  745. show1: false,
  746. show2: false,
  747. show3: false,
  748. show4: false,
  749. operating:false,
  750. carImg3Bl:false,
  751. carImg4Bl:false,
  752. carImg3span1:0,
  753. carImg3span2:0,
  754. carImg3span3:0,
  755. pricesInfoCurrent: {},
  756. pricesInfoCurrent2: {},
  757. show3: false,
  758. temporaryCarNum: "",
  759. form: {
  760. carNum: '',
  761. defaultFlag: true,
  762. },
  763. priceListBl: false,
  764. pricesInfo: [],
  765. showNt: false,
  766. showNtStep: 0,
  767. showNtValue: 30,
  768. station: {},
  769. step: 0,
  770. bannerList: [],
  771. isInsert: false,
  772. isReady: false,
  773. onShowRole: false,
  774. id: "",
  775. car: {},
  776. isback: false,
  777. gun: {},
  778. prices: {},
  779. personInfo: {},
  780. price: {
  781. costPrice: 0,
  782. electricityPrice: 0,
  783. discountServicePrice: 0,
  784. servicePrice: 0,
  785. },
  786. gunDetail: {},
  787. haveLock: false,
  788. lockSafeStopTime: 0,
  789. lockStatus: '', // 1抬锁 2落锁
  790. carplateMust: false,
  791. detail: {
  792. no: '',
  793. interface: '',
  794. type: '',
  795. power: 0,
  796. price: [
  797. ]
  798. },
  799. consumerPhone: "",
  800. description: '充电前请确保您的车辆已与充电桩连接!并关闭车内电源。',
  801. show: false,
  802. title: '联系客服',
  803. showVin: false,
  804. confirmText: '拨打电话',
  805. content: '余额不足5,请先充值。',
  806. carDetText: '',
  807. userCard: null,
  808. canUse: false,
  809. openStatus: 0,
  810. isVip: false,
  811. openBoolShow: false,
  812. carTempBl: false,
  813. maxlength: 8,
  814. chatShowId: "",
  815. chatShow: false,
  816. startCarChargingBl:false,
  817. quickChargingBl:false,
  818. carplateMustModel:false,
  819. carplateMustModelFirst:true,
  820. projectName: "",
  821. showrecharge:"",
  822. bannerListTop:[],
  823. getBannerInfoTopBl:true,
  824. showTop:false,
  825. showTopImg:"",
  826. showTopIndex: 0,
  827. YSTX:"",
  828. lastTiming:{}
  829. }
  830. },
  831. computed: {
  832. prevMonthKwhBL(){
  833. if(this.carImg3span1>=1000){
  834. return false
  835. }
  836. return true
  837. },
  838. openBool() {
  839. if (this.openStatus == '3') {
  840. return this.isVip
  841. }
  842. return true
  843. },
  844. userCardBool() {
  845. if (this.userCard) {
  846. var date = new Date().getTime()
  847. var reg = new RegExp('-', 'gi')
  848. var str = this.userCard.endTime;
  849. //console.log(str.replace(reg,'/'))
  850. var date2 = new Date(str.replace(reg, '/')).getTime();
  851. if (date < date2) {
  852. return true;
  853. }
  854. }
  855. return false
  856. },
  857. },
  858. onShow() {
  859. console.log("1111")
  860. uni.hideToast();
  861. this.checkSubscribe()
  862. if (this.onShowRole) {
  863. this.getPile()
  864. }
  865. },
  866. onReady() {
  867. },
  868. onLoad(op) {
  869. this.init(op)
  870. },
  871. methods: {
  872. onShowK() {
  873. console.log("222")
  874. uni.hideToast();
  875. this.checkSubscribe()
  876. if (this.onShowRole) {
  877. this.getPile()
  878. }
  879. },
  880. init(op){
  881. this.projectName = process.car.ProjectName;
  882. var consumerPhone = "400-8899-619"
  883. // img="https://yktwechat.xiaoxinda.com/config/xxd2021.jpg"
  884. if (consumerPhone) {
  885. this.consumerPhone = consumerPhone
  886. }
  887. var carDetText = "填写车牌号,充电时可以减免部分停车费用"
  888. // img="https://yktwechat.xiaoxinda.com/config/xxd2021.jpg"
  889. if (carDetText) {
  890. this.carDetText = carDetText
  891. }
  892. if( this.branchParameterBl('ud')){
  893. //this.getf5surprised()
  894. this.getBannerInfoTop("home-top2");
  895. }
  896. try{
  897. }catch(e){
  898. }
  899. this.findNoLTextConfigure()
  900. //this.startCarCharging()
  901. if (op.isback) {
  902. this.isback = true
  903. }
  904. if (op.id) {
  905. this.id = op.id
  906. var personInfo = this.carhelp.getPersonInfo()
  907. this.personInfo = personInfo
  908. var userInfo = this.carhelp.getPersonInfo();
  909. if (this.personInfo && this.personInfo.userType == "1") {
  910. this.show3 = true
  911. }else{
  912. }
  913. if (userInfo && userInfo.id) {
  914. //this.getNewYear()
  915. } else {
  916. //this.getBannerInfoTop("home-top");
  917. }
  918. this.getPile()
  919. } else {
  920. uni.showToast({
  921. title: "请扫码充电"
  922. })
  923. }
  924. },
  925. userChargingAmount(){
  926. API_index.userChargingAmount().then((res) => {
  927. this.userChargingAmountObj = res.data
  928. //this.userChargingAmountObj.type=3
  929. }).catch(error => {
  930. })
  931. },
  932. findNoLTextConfigure(){
  933. loginApi.findNoLTextConfigure().then((response) => {
  934. this.carhelp.setConfig(response.data.configure)
  935. this.YSTX=this.carhelp.getConfig().YSTX
  936. }).catch(error => {
  937. uni.showToast({
  938. title: error,
  939. icon: "none"
  940. })
  941. })
  942. },
  943. loginMethod(){
  944. var personInfo = this.carhelp.getPersonInfo()
  945. this.personInfo = personInfo
  946. this.getPile()
  947. },
  948. cancelGz() {
  949. this.carhelp.setGzDate()
  950. },
  951. gotoGz() {
  952. this.carhelp.setGzDate()
  953. var url = process.car.gzUrl;
  954. window.location.href = url
  955. },
  956. checkSubscribe() {
  957. API_weixin.checkSubscribe({
  958. openId: this.carhelp.getOpenId()
  959. }).then((res) => {
  960. if (res.data == "0") {
  961. this.show1 = true
  962. } else {
  963. //this.init();
  964. this.show1 = false;
  965. this.show2 = true;
  966. //this.carhelp.setGzDate()
  967. }
  968. //setGzDate
  969. }).catch(error => {
  970. uni.showToast({
  971. title: error
  972. })
  973. })
  974. },
  975. checkedChange2(checked2) {
  976. uni.showLoading({
  977. title: "加载中",
  978. mask: true,
  979. })
  980. API_index.changeQuickCharging({qucikStatus: checked2}).then((res) => {
  981. var userInfo = this.carhelp.getPersonInfo();
  982. userInfo.quickCharging=checked2;
  983. this.carhelp.setPersonInfo(userInfo);
  984. this.quickChargingBl=false;
  985. uni.hideLoading();
  986. if(checked2){
  987. this.startCarCharging()
  988. }
  989. }).catch(error => {
  990. uni.showToast({
  991. title: error,
  992. icon: "none"
  993. })
  994. })
  995. },
  996. chatShowBtn(item) {
  997. if(this.chatShow == false){
  998. this.chatShow = true
  999. }else if(item.startTime!=this.pricesInfoCurrent2.startTime){
  1000. this.chatShow = true
  1001. }else{
  1002. this.chatShow = false
  1003. }
  1004. this.pricesInfoCurrent2=item
  1005. },
  1006. clickBannerTopI(i) {
  1007. var mod = this.bannerListTop[i];
  1008. //this.showTop = false;
  1009. this.clickBanner(0, true, mod)
  1010. },
  1011. clickBannerTop() {
  1012. var mod = this.bannerListTop[this.showTopIndex];
  1013. this.showTop = false;
  1014. this.clickBanner(0, true, mod)
  1015. },
  1016. clickBanner(index, bl, modout) {
  1017. var uurl = "";
  1018. var mod = {}
  1019. if (modout) {
  1020. mod = modout;
  1021. }else{
  1022. mod =this.bannerList[index]
  1023. }
  1024. mod.clickUrl = mod.linkUrl
  1025. if (mod.linkPicUrl && !bl) {
  1026. this.showOss = true;
  1027. this.showOssImg = mod.linkPicUrl;
  1028. this.showOssIndex = index;
  1029. } else if (mod.clickUrl == null) {
  1030. } else if (mod.clickUrl.indexOf('http') == 0) {
  1031. window.location = mod.clickUrl + uurl;
  1032. } else if (mod.clickUrl.slice(-5) == 'login' && this.userId) {
  1033. } else if (mod.clickUrl.indexOf('#/') == 0) {
  1034. if (mod.clickUrl.indexOf("?") == -1) {
  1035. mod.clickUrl += '?';
  1036. }
  1037. var url = mod.clickUrl.split("#")[1]
  1038. //window.location = mod.clickUrl;
  1039. uni.navigateTo({
  1040. url: url + uurl
  1041. })
  1042. } else if (mod.clickUrl == '#' || mod.clickUrl == '') {
  1043. } else {
  1044. uni.navigateTo({
  1045. url: mod.clickUrl + uurl
  1046. })
  1047. }
  1048. },
  1049. getBannerInfo(code) {
  1050. uni.showLoading({
  1051. title: "加载中",
  1052. mask: true,
  1053. })
  1054. newsApi.getBannerInfo(code).then((res) => {
  1055. uni.hideLoading();
  1056. this.bannerList = res.data;
  1057. // document.getElementsByClassName("uni-swiper-wrapper")[0].parentNode.style="background-color: rgb(255, 255, 255); height: 300px;"
  1058. }).catch(error => {
  1059. uni.showToast({
  1060. title: error,
  1061. icon: "none"
  1062. })
  1063. })
  1064. },
  1065. thisdaysDistance(endTime) {
  1066. var date = new Date()
  1067. var date2 = newDate(endTime);
  1068. return daysDistance(date, date2)
  1069. },
  1070. thisendTime(endTime) {
  1071. if (endTime) {
  1072. var reg = new RegExp('-', 'gi')
  1073. var str = endTime.substring(0, 10).replace(reg, '.')
  1074. return str
  1075. }
  1076. return ''
  1077. },
  1078. thispercent(userCard) {
  1079. if(userCard.classify==1||(userCard.classify==2&&userCard.chargeDegreeLimit==0)){
  1080. var k1=daysDistance(userCard.startTime, userCard.endTime)
  1081. var k2=this.thisdaysDistance(userCard.endTime)
  1082. var p=(k1-k2)/k2* 100
  1083. if (p > 100) {
  1084. p = 100
  1085. }
  1086. return p.toFixed(0)
  1087. }else if(userCard.classify==2){
  1088. var p = 0
  1089. if (userCard && userCard.chargeDegreeLimit) {
  1090. p = userCard.chargedDegree / userCard.chargeDegreeLimit * 100
  1091. }
  1092. if (p > 100) {
  1093. p = 100
  1094. }
  1095. return p.toFixed(0)
  1096. }else{
  1097. return 0
  1098. }
  1099. },
  1100. carTempBlInit() {
  1101. var aaa = this.$refs.uKeyboard.changeCarInputValue();
  1102. console.log(aaa)
  1103. if (this.form.carNum.length && !aaa) {
  1104. var c = this.$refs.uKeyboard.changeCarInputMode();
  1105. }
  1106. },
  1107. // 按键被点击(点击退格键不会触发此事件)
  1108. // 按键被点击(点击退格键不会触发此事件)
  1109. valChange(val) {
  1110. if (this.form.carNum.length >= this.maxlength) {
  1111. return
  1112. }
  1113. if (true) {
  1114. this.form.carNum += val;
  1115. } else {
  1116. }
  1117. // 将每次按键的值拼接到form.carNum变量中,注意+=写法
  1118. //(this.form.carNum);
  1119. var aaa = this.$refs.uKeyboard.changeCarInputValue();
  1120. if ((this.form.carNum.length == 0) && aaa) {
  1121. this.$refs.uKeyboard.changeCarInputMode();
  1122. } else if (!aaa) {
  1123. this.$refs.uKeyboard.changeCarInputMode();
  1124. }
  1125. },
  1126. // 退格键被点击
  1127. backspace() {
  1128. // 删除form.carNum的最后一个字符
  1129. if (this.form.carNum.length) {
  1130. if (true) {
  1131. this.form.carNum = this.form.carNum.substr(0, this.form.carNum.length - 1);
  1132. } else {
  1133. //this.selectIndex=-1;
  1134. }
  1135. }
  1136. //(this.form.carNum);
  1137. var aaa = this.$refs.uKeyboard.changeCarInputValue();
  1138. if (this.form.carNum.length == 0 && aaa) {
  1139. this.$refs.uKeyboard.changeCarInputMode();
  1140. }
  1141. },
  1142. lockDown() {
  1143. uni.showLoading({
  1144. title: "加载中",
  1145. mask: true,
  1146. })
  1147. API.lockDown({
  1148. gunId: this.gun.id
  1149. }).then((res) => {
  1150. uni.hideLoading()
  1151. this.lockStatus = res.data.lockStatus
  1152. setTimeout(() => {
  1153. this.getPile()
  1154. }, 5 * 1000)
  1155. }).catch(error2 => {
  1156. uni.showToast({
  1157. title: error2
  1158. })
  1159. })
  1160. },
  1161. workStatus2() {
  1162. API_index.findChargeData().then((res) => {
  1163. var list = res.data.chargingRecordList;
  1164. var obj = null;
  1165. for (var i = 0; i < list.length; i++) {
  1166. if (list[i].deviceNo == this.detail.deviceNo && list[i].channelNo == this.gun.channelNo) {
  1167. obj = list[i];
  1168. break;
  1169. }
  1170. }
  1171. if (obj) {
  1172. uni.redirectTo({
  1173. url: "/pages/searchPile/chargeProcess/dcCharging?id=" + obj.id
  1174. })
  1175. }
  1176. }).catch(error => {
  1177. uni.showToast({
  1178. title: error,
  1179. icon: "none"
  1180. })
  1181. })
  1182. },
  1183. priceDetail() {
  1184. uni.navigateTo({
  1185. url: 'chargePriceDetails?stationId=' + this.detail.stationId + "&type=" + this.detail.type +
  1186. "&id=" + this.detail.id
  1187. })
  1188. },
  1189. customback2() {
  1190. this.step = 0;
  1191. },
  1192. customback() {
  1193. if (this.isback) {
  1194. if (this.$refs.ujpnavbar) {
  1195. this.$refs.ujpnavbar.navberBack()
  1196. } else {
  1197. uni.navigateBack({
  1198. })
  1199. }
  1200. } else {
  1201. uni.reLaunch({
  1202. url: "/pages/login/welcome"
  1203. })
  1204. }
  1205. },
  1206. gotoLogin() {
  1207. this.onShowRole = true
  1208. if (false) {
  1209. } else {
  1210. uni.navigateTo({
  1211. url: "/pages/login/login?jpcode=jp_team51_charge_id:A_" + this.id
  1212. })
  1213. }
  1214. },
  1215. carTemp() {
  1216. },
  1217. carDet(t) {
  1218. if(this.car&&this.car.carNum){
  1219. return
  1220. }
  1221. this.onShowRole = true
  1222. var url="/pages/user/car/carDet?jpcode=jp_team51_charge_id:A_" + this.id
  1223. if( this.car&& this.car.id){
  1224. url+="&id="+this.car.id
  1225. }
  1226. uni.navigateTo({
  1227. url: url
  1228. })
  1229. },
  1230. openModal() {
  1231. this.show = true;
  1232. },
  1233. confirmPhone() {
  1234. this.show = false;
  1235. uni.makePhoneCall({
  1236. phoneNumber: this.consumerPhone //仅为示例
  1237. });
  1238. },
  1239. role(bl) {
  1240. if (bl) {
  1241. return true;
  1242. }
  1243. if (this.carplateMust) {
  1244. if (this.car && this.car.carNum) {
  1245. } else {
  1246. uni.showModal({
  1247. title: "提示",
  1248. content: "填写车牌号,离场时可减免部分停车费",
  1249. confirmText: "填写车牌号",
  1250. cancelText: "继续充电",
  1251. success: res1 => {
  1252. if (res1.confirm) {
  1253. this.carDet()
  1254. } else if (res1.cancel) {
  1255. //('用户点击取消');
  1256. this.charge(true)
  1257. }
  1258. }
  1259. })
  1260. return false;
  1261. }
  1262. }
  1263. return true;
  1264. },
  1265. getChargeList(){
  1266. var obj=this.carhelp.get("carhelp_getChargeList")
  1267. var time=new Date( ).toLocaleString().substr(0,12).replace("T"," ");
  1268. if(obj&&time==obj.time){
  1269. var num1=parseInt(obj.electricQuantity);
  1270. var num2=parseInt(obj.totalServiceMoney) ;
  1271. this.carImg3span1=parseInt(num1/10000);
  1272. this.carImg3span2=parseInt(num2*0.4) ;
  1273. this.carImg3span3=parseInt(num2) ;
  1274. if(num2*0.4>20||this.carImg3span1>=1000){
  1275. this.carImg3Bl=true;
  1276. }else{
  1277. this.carImg4Bl=true;
  1278. }
  1279. console.log("carhelp_getChargeList",this.carImg3span1,this.carImg3span2)
  1280. return
  1281. }
  1282. var date =new Date().getTime()-30*1000*60*60*24;
  1283. var startDate =parseUnixTime(new Date(date),'{y}-{m}-{d}');
  1284. API_index.chargingRecordData({
  1285. pageIndex: 1,
  1286. pageSize:999,
  1287. startDate: startDate,
  1288. // endDate: this.endDate
  1289. }).then((res) => {
  1290. var chargeList =res.data.data;
  1291. var num1=0;
  1292. var num2=0;
  1293. for(var i in chargeList){
  1294. var obj=chargeList[i]
  1295. if(obj.status==2){
  1296. num1+=obj.electricQuantity
  1297. num2+=obj.totalServiceMoney
  1298. }
  1299. }
  1300. console.log(num1,num2)
  1301. this.carhelp.set("carhelp_getChargeList",{
  1302. time: time,
  1303. electricQuantity:num1,
  1304. totalServiceMoney:num2
  1305. })
  1306. this.carImg3span1=parseInt(num1/10000);
  1307. this.carImg3span2=parseInt(num2*0.4) ;
  1308. this.carImg3span3=parseInt(num2) ;
  1309. if(num2*0.4>20||this.carImg3span1>=1000){
  1310. this.carImg3Bl=true;
  1311. }else{
  1312. this.carImg4Bl=true;
  1313. }
  1314. }).catch(error => {
  1315. uni.showToast({
  1316. title: error,
  1317. icon: "none"
  1318. })
  1319. })
  1320. },
  1321. getUserCard() {
  1322. uni.showLoading({
  1323. title: "加载中",
  1324. mask: true,
  1325. })
  1326. API.userCard({
  1327. stationId: this.detail.stationId
  1328. }).then((res2) => {
  1329. uni.hideLoading()
  1330. this.userCard = res2.data.regUserCard
  1331. //this.canUse=res2.data.canUse
  1332. //this.user = res.data
  1333. this.personInfo = this.carhelp.getPersonInfo()
  1334. if (!this.userCardBool) {
  1335. if (this.personInfo && this.personInfo.userType == "2") {
  1336. try{
  1337. //this.getChargeList()
  1338. this.userChargingAmount()
  1339. }catch(e){
  1340. //TODO handle the exception
  1341. console.log(e)
  1342. }
  1343. }
  1344. }
  1345. //快捷充电
  1346. if (this.personInfo && (this.personInfo.memberLevel == "3"||this.personInfo.memberLevel == "4") ) {
  1347. if(this.personInfo.quickCharging){
  1348. if(this.startCarChargingBl==false){
  1349. this.startCarCharging()
  1350. }
  1351. }else if(this.personInfo.quickCharging==null){
  1352. //初始化
  1353. this.quickChargingBl=true
  1354. }
  1355. }
  1356. }).catch(error2 => {
  1357. uni.showToast({
  1358. title: error2
  1359. })
  1360. })
  1361. },
  1362. getH(item) {
  1363. return item * 100 + 'px'
  1364. },
  1365. getW(item) {
  1366. var t1 = item.endTime.substring(0, 2)
  1367. var t2 = item.startTime.substring(0, 2)
  1368. var k = parseInt(t1) - parseInt(t2);
  1369. return 100 / 24 * k + "%"
  1370. },
  1371. getPile() {
  1372. uni.showLoading({
  1373. title: "加载中",
  1374. mask: true,
  1375. })
  1376. API.chargingDeviceGunDetail({
  1377. gunNo: this.id,
  1378. jpcode: "jp_team51_charge_id:A_" + this.id
  1379. }).then((res) => {
  1380. uni.hideLoading()
  1381. this.gunDetail = res.data;
  1382. this.detail = res.data.device
  1383. if(this.detail.homeApplyId){
  1384. this.pageTitle= "我的家桩充电详情"
  1385. }
  1386. this.station = res.data.station
  1387. this.carplateMust = this.station.carNumRequired;
  1388. this.prices = res.data.prices
  1389. this.pricesInfo = res.data.prices
  1390. this.price = res.data.price
  1391. this.lastTiming=res.data.lastTiming
  1392. this.pricesInfoCurrent = {
  1393. ...this.price
  1394. }
  1395. this.pricesInfoCurrent2 = {
  1396. ...this.price
  1397. }
  1398. this.gun = res.data.gun
  1399. if(this.gun &&this.gun.workStatus==6){
  1400. this.operating=true;
  1401. }
  1402. this.car =res.data.car
  1403. if (this.carplateMust && this.car && this.car.carNum&&this.carplateMustModelFirst) {
  1404. this.carplateMustModel=true;
  1405. this.carplateMustModelFirst=false;
  1406. } else {
  1407. }
  1408. this.getTemporaryCarNumByOpenId()
  1409. this.lockStatus = res.data.lockStatus;
  1410. this.haveLock = res.data.haveLock;
  1411. this.lockSafeStopTime = res.data.lockSafeStopTime
  1412. this.isVip = res.data.isVip
  1413. this.openStatus = res.data.station.openStatus
  1414. this.isInsert = this.gun.insertStatus
  1415. if (!this.openBool) {
  1416. //this.openBoolShow=true;
  1417. uni.showModal({
  1418. title: "提示",
  1419. content: "当前设备仅供内部使用,如有问题可联系客服",
  1420. showCancel: false,
  1421. success: () => {
  1422. }
  1423. })
  1424. }
  1425. if (res.data.chargingAppointment) {
  1426. if (res.data.isMeAppoint) {
  1427. this.getUserCard();
  1428. } else {
  1429. var chargingAppointment = res.data.chargingAppointment
  1430. var data = newDate(chargingAppointment.createTime).getTime()
  1431. var c = hourDistanceArr(new Date(), new Date(data + chargingAppointment
  1432. .reserveMinutes * 60 * 1000))
  1433. var description = '当前充电枪已被其他车主预约,' + c[1] + '分' + c[2] + "秒后预约自动失效。";
  1434. this.isReady = false;
  1435. uni.showModal({
  1436. title: "提示",
  1437. content: description,
  1438. showCancel: false,
  1439. success: () => {
  1440. }
  1441. })
  1442. }
  1443. } else {
  1444. this.getUserCard();
  1445. }
  1446. if (this.gun.workStatus == 2) {
  1447. this.workStatus2()
  1448. }
  1449. }).catch(error => {
  1450. uni.hideLoading()
  1451. uni.showModal({
  1452. title: "提示",
  1453. content: "设备扫码异常",
  1454. confirmText: "前往首页",
  1455. showCancel: false,
  1456. success: () => {
  1457. uni.reLaunch({
  1458. url: "/pages/index/index"
  1459. })
  1460. }
  1461. })
  1462. // uni.showToast({
  1463. // title: error
  1464. // })
  1465. })
  1466. },
  1467. chargeTest(bl) {
  1468. if (process.env.NODE_ENV === "development" && process.car.SIMPLE_RUN) {
  1469. var url = '/pages/searchPile/chargeProcess/charge?stationId=' + this.detail.stationId +
  1470. '&deviceNo=' + this.detail.deviceNo + "&gun=" + this.gun.channelNo + "&carNumber=" + (
  1471. this.car ? this.car.carNum : '');
  1472. url+="&id="+this.id
  1473. uni.navigateTo({
  1474. url: url
  1475. })
  1476. }
  1477. },
  1478. charge(bl) {
  1479. if (!this.role(bl)) {
  1480. return
  1481. }
  1482. if(this.detail.homeApplyId){
  1483. this.startCarCharging()
  1484. }else{
  1485. var url = '/pages/searchPile/chargeProcess/charge?stationId=' + this.detail.stationId +
  1486. '&deviceNo=' + this.detail.deviceNo + "&gun=" + this.gun.channelNo + "&carNumber=" + (
  1487. this.car ? this.car.carNum : '');
  1488. if(this.isback){
  1489. url+="&startMode=1"
  1490. }
  1491. url+="&id="+this.id
  1492. uni.navigateTo({
  1493. url: url
  1494. })
  1495. }
  1496. },
  1497. isInsertBtn() {
  1498. this.isInsert = true;
  1499. },
  1500. getNewYear() {
  1501. //var obj=this.carhelp.get("newyear_activity2023")
  1502. //
  1503. var sz = ["1615623336912621569", "1615623336912621568"];
  1504. var code = parseInt(Math.random() * 2)
  1505. this.carhelp.set("newyear_activity2023", {
  1506. nt: sz[code],
  1507. code: code,
  1508. status: 0
  1509. })
  1510. //先查询另一个领取过没
  1511. userApi.exchangeDetail({
  1512. key: sz[code == 0 ? 1 : 0]
  1513. }).then((res) => {
  1514. if (!res.data.enabled) {
  1515. if (res.data.code == 2) {
  1516. //未开始
  1517. } else {
  1518. //已经结束
  1519. }
  1520. //this.getBannerInfoTop("home-top");
  1521. } else if (res.data.status == 1) {
  1522. //this.getBannerInfoTop("home-top");
  1523. //已经兑换,或者不能兑换
  1524. } else if (res.data.status == 2) {
  1525. // this.showNtValue=res.data.totalDiscount
  1526. this.exchangeDetail(sz[code]);
  1527. } else {
  1528. //res.data.status==0
  1529. //this.showNtValue=res.data.totalDiscount
  1530. this.exchangeDetail(sz[code], sz[code == 0 ? 1 : 0]);
  1531. }
  1532. }).catch(error => {
  1533. this.showNt = false;
  1534. uni.showToast({
  1535. title: error,
  1536. icon: "none"
  1537. })
  1538. })
  1539. },
  1540. exchangeDetail(exchangeCode, code2) {
  1541. uni.showLoading({
  1542. title: "加载中",
  1543. mask: true,
  1544. })
  1545. userApi.exchangeDetail({
  1546. key: exchangeCode
  1547. }).then((res) => {
  1548. uni.hideLoading();
  1549. //
  1550. if (!res.data.enabled) {
  1551. if (res.data.code == 2) {
  1552. //未开始
  1553. } else {
  1554. //已经结束
  1555. }
  1556. //this.getBannerInfoTop("home-top");
  1557. } else if (res.data.status == 1) {
  1558. //this.getBannerInfoTop("home-top");
  1559. //已经兑换,
  1560. } else if (res.data.status == 2) {
  1561. if (code2) {
  1562. //试试另一张卷
  1563. var c = this.carhelp.get("newyear_activity2023")
  1564. if (c) {
  1565. this.carhelp.set("newyear_activity2023", {
  1566. nt: code2,
  1567. code: c.code == 0 ? 1 : 0,
  1568. status: 0
  1569. })
  1570. }
  1571. this.exchangeDetail(code2)
  1572. } else {
  1573. //this.getBannerInfoTop("home-top");
  1574. }
  1575. //不能兑换
  1576. } else {
  1577. this.showNt = true
  1578. this.showNtStep = 0;
  1579. this.showNtValue = res.data.totalDiscount
  1580. }
  1581. }).catch(error => {
  1582. this.showNt = false;
  1583. uni.showToast({
  1584. title: error,
  1585. icon: "none"
  1586. })
  1587. })
  1588. },
  1589. getTemporaryCarNumByOpenId() {
  1590. try {
  1591. API.getTemporaryCarNumByOpenId(this.carhelp.getOpenId()).then((res) => {
  1592. this.temporaryCarNum = res.data
  1593. var temporaryCarNum = res.data
  1594. if (this.temporaryCarNum) {
  1595. var k=false
  1596. if( this.carplateMustModel==true){
  1597. k=true
  1598. this.carplateMustModel=false
  1599. }
  1600. this.carTempBl = false;
  1601. uni.showModal({
  1602. title: "临牌提醒",
  1603. content: `查询到[${temporaryCarNum}]入场记录`,
  1604. confirmText: "使用临牌",
  1605. cancelText: "取消",
  1606. success: res1 => {
  1607. if (res1.confirm) {
  1608. //this.carDet()
  1609. this.car = {
  1610. carNum: temporaryCarNum
  1611. }
  1612. } else if (res1.cancel) {
  1613. //('用户点击取消');
  1614. if(k){
  1615. this.carplateMustModel=true
  1616. }
  1617. }
  1618. }
  1619. })
  1620. }
  1621. }).catch(error => {
  1622. })
  1623. } catch (e) {
  1624. //TODO handle the exception
  1625. console.log("errorerrorerrorerrorerror")
  1626. }
  1627. },
  1628. redeemNow(exchangeCode) {
  1629. uni.showLoading({
  1630. title: "加载中",
  1631. mask: true,
  1632. })
  1633. userApi.exchange({
  1634. key: exchangeCode
  1635. }).then((res) => {
  1636. uni.hideLoading();
  1637. this.showNtStep = 1
  1638. this.carhelp.set("newyear_activity2023", {
  1639. nt: exchangeCode,
  1640. status: 1
  1641. })
  1642. }).catch(error => {
  1643. this.showNt = false;
  1644. uni.showToast({
  1645. title: error,
  1646. icon: "none"
  1647. })
  1648. })
  1649. },
  1650. showNtStepClick() {
  1651. if (this.showNtStep == 0) {
  1652. var obj = this.carhelp.get("newyear_activity2023")
  1653. if (this.personInfo.userType != 1) {
  1654. this.redeemNow(obj.nt)
  1655. } else {
  1656. this.showNt = false;
  1657. uni.showModal({
  1658. title: "提示",
  1659. content: "游客无法兑换,请先注册为会员后再兑换",
  1660. confirmText: "前往注册",
  1661. success: res1 => {
  1662. if (res1.confirm) {
  1663. uni.navigateTo({
  1664. url: '/pages/login/login'
  1665. })
  1666. } else if (res1.cancel) {
  1667. //('用户点击取消');
  1668. }
  1669. }
  1670. })
  1671. }
  1672. } else if (this.showNtStep == 1 || this.showNtStep == 2 || this.showNtStep == 3 || this.showNtStep == 4) {
  1673. this.showNt = false;
  1674. uni.navigateTo({
  1675. url: "/pages/user/coupon/myCoupon"
  1676. })
  1677. }
  1678. },
  1679. getf5surprised() {
  1680. uni.showLoading({
  1681. title: "加载中",
  1682. mask: true,
  1683. })
  1684. userApi.exchangeGroupDetail2("周年红包").then((res) => {
  1685. uni.hideLoading();
  1686. var data=res.data;
  1687. this.key=""
  1688. this.couponList=[]
  1689. if(data.length){
  1690. this.couponList = res.data[0].couponList;
  1691. if(this.couponList&&this.couponList.length){
  1692. //this.getBannerInfoTop()
  1693. this.getBannerInfoTop("home-top2");
  1694. }
  1695. }
  1696. }).catch(error => {
  1697. uni.showToast({
  1698. title: error,
  1699. icon: "none"
  1700. })
  1701. })
  1702. },
  1703. getBannerInfoTop(code) {
  1704. if(!this.carhelp.getOpenId()){
  1705. return
  1706. }
  1707. var nowtime = parseUnixTime(currentTimeStamp(), '{y}-{m}-{d}')
  1708. var time = this.carhelp.get("bannerListTop");
  1709. if ((time && nowtime == time)) {
  1710. this.getBannerInfoTopBl = false;
  1711. }
  1712. //特殊活动不考虑
  1713. //this.getBannerInfoTopBl = true;
  1714. // uni.showLoading({
  1715. // title: "加载中",
  1716. // mask: true,
  1717. // })
  1718. newsApi.getBannerInfo(code).then((res) => {
  1719. this.bannerListTop = res.data;
  1720. if (this.bannerListTop.length) {
  1721. this.showTop = true;
  1722. this.showTopImg = this.bannerListTop[0].picUrl;
  1723. this.showTopIndex = 0;
  1724. }
  1725. this.carhelp.set("bannerListTop", nowtime);
  1726. //this.test()
  1727. var userInfo = this.carhelp.getPersonInfo();
  1728. if (userInfo && userInfo.id) {
  1729. //this.getf5surprised()
  1730. } else {}
  1731. //uni.hideLoading()
  1732. //document.getElementsByClassName("uni-swiper-wrapper")[0].parentNode.style="background-color: rgb(255, 255, 255); height: 120px;"
  1733. }).catch(error => {
  1734. uni.showToast({
  1735. title: error,
  1736. icon: "none"
  1737. })
  1738. })
  1739. },
  1740. startCarCharging(){
  1741. if(this.gun&&this.gun.workStatus==2){
  1742. uni.showModal({
  1743. title: '提示',
  1744. showCancel:false,
  1745. content:"快捷充电失败:充电中",
  1746. })
  1747. }else if(!this.openBool){
  1748. uni.showModal({
  1749. title: '提示',
  1750. showCancel:false,
  1751. content:"快捷充电失败:仅单位内部员工可用"
  1752. })
  1753. }else if(this.gunDetail.chargingAppointment&&!this.gunDetail.isMeAppoint){
  1754. uni.showModal({
  1755. title: '提示',
  1756. showCancel:false,
  1757. content:"快捷充电失败:已被预约"
  1758. })
  1759. }else if(this.haveLock&&this.lockStatus==1){
  1760. uni.showModal({
  1761. title: '提示',
  1762. showCancel:false,
  1763. content:"快捷充电失败:下降地锁"
  1764. })
  1765. }else if(!this.isInsert){
  1766. uni.showModal({
  1767. title: '提示',
  1768. showCancel:false,
  1769. content:"快捷充电失败:未插枪"
  1770. })
  1771. }else {
  1772. this.startCarChargingApi();
  1773. }
  1774. },
  1775. startCarChargingApi(){
  1776. uni.showLoading({
  1777. title:"快捷充电启动",
  1778. mask: true,
  1779. })
  1780. this.startCarChargingBl=true;
  1781. var submitForm={
  1782. deviceNo:this.detail.deviceNo,
  1783. channelNo:this.gun.channelNo,
  1784. carNumber:this.car ? this.car.carNum : '',
  1785. chargeStrategy:0,
  1786. amount:0,
  1787. payType:2,
  1788. }
  1789. if(this.userCardBool){
  1790. submitForm.userCardId=this.userCard.id
  1791. }
  1792. API.startCarCharging(submitForm).then((res) => {
  1793. if (res.data.status == "5") {
  1794. var _this=this;
  1795. var recordId=res.data.recordId;
  1796. uni.showModal({
  1797. title: '启动充电失败',
  1798. confirmText:"充值",
  1799. cancelText:"暂不启用",
  1800. content:"个人账户余额不足10元,无法启动快捷充电",
  1801. success: function (res) {
  1802. if (res.confirm) {
  1803. console.log('用户点击确定');
  1804. _this.gotoUrl("pages/user/finance/recharge?recordId=" + recordId);
  1805. } else if (res.cancel) {
  1806. _this.checkedChange2(0);
  1807. console.log('用户点击取消');
  1808. }
  1809. }
  1810. })
  1811. uni.hideLoading()
  1812. }else{
  1813. this.gotoUrl("pages/searchPile/chargeProcess/dcCharging?id=" + res.data.recordId);
  1814. }
  1815. }).catch(error => {
  1816. uni.hideLoading()
  1817. if (error == '用户账户余额不足!') {
  1818. var _this=this;
  1819. uni.showModal({
  1820. title: '快捷充电失败',
  1821. confirmText:"充值",
  1822. content:"用户余额不足!",
  1823. success: function (res) {
  1824. if (res.confirm) {
  1825. console.log('用户点击确定');
  1826. _this.showrecharge=true
  1827. } else if (res.cancel) {
  1828. console.log('用户点击取消');
  1829. }
  1830. }
  1831. })
  1832. } else {
  1833. uni.showModal({
  1834. title: '提示',
  1835. showCancel:false,
  1836. content:"充电失败:"+( error?error:'未知错误')
  1837. })
  1838. }
  1839. })
  1840. }
  1841. },
  1842. }
  1843. </script>
  1844. <style lang="scss">
  1845. .priceListBlMain {
  1846. display: flex;
  1847. justify-content: space-between;
  1848. align-items: last baseline;
  1849. }
  1850. .discount-card {
  1851. box-shadow: 0px 0px 8px 0px rgba(0, 65, 30, 0.1);
  1852. border: 1px solid rgba(225, 236, 231, 1);
  1853. border-radius: 8px;
  1854. //background-color: rgba(55, 59, 80, 1);
  1855. padding: 24rpx;
  1856. margin-top: 24rpx;
  1857. .name {
  1858. //color: rgba(255, 255, 255, 1);
  1859. font-size: 32rpx;
  1860. }
  1861. .progress {
  1862. display: flex;
  1863. justify-content: space-between;
  1864. flex-wrap: wrap;
  1865. // color: rgba(219, 219, 219, 1);
  1866. font-size: 24rpx;
  1867. margin-bottom: 16rpx;
  1868. margin-top: 24rpx;
  1869. }
  1870. ::v-deep .u-active {
  1871. background: linear-gradient(84.49deg, rgba(59, 182, 254, 1) 4.25%, rgba(0, 185, 98, 1) 95.02%);
  1872. }
  1873. }
  1874. .discount-card-4 {
  1875. background: #da241e !important;
  1876. .unit{
  1877. color:#fff !important;
  1878. }
  1879. .u-progress{
  1880. background-color:#cf4c42 !important;
  1881. color: #fff;
  1882. }
  1883. .name{
  1884. color: #ffd695!important;
  1885. font-size: 36rpx;
  1886. font-family: "SimSun", Arial, sans-serif;
  1887. font-weight: 400;
  1888. text-shadow: 2px 1px 0px #800400 ;
  1889. }
  1890. .progress{
  1891. color: #fff;
  1892. }
  1893. }
  1894. .temporaryCarNum {
  1895. text-align: right;
  1896. margin-bottom: 10px;
  1897. margin: 0 40rpx;
  1898. span {
  1899. margin: 0 8rpx;
  1900. color: #19be6b;
  1901. }
  1902. }
  1903. .oldTextClassF {
  1904. .tips {
  1905. padding: 36rpx;
  1906. .p {
  1907. font-size: 42rpx !important;
  1908. }
  1909. .content {
  1910. font-size: 34rpx !important;
  1911. }
  1912. }
  1913. .bottom {
  1914. .u-btn {
  1915. font-size: 48rpx
  1916. }
  1917. }
  1918. .text-1 {
  1919. font-size: 56rpx !important;
  1920. }
  1921. .text-2 {
  1922. font-size: 38rpx !important;
  1923. }
  1924. .charging-info {
  1925. .name {
  1926. font-size: 36rpx !important;
  1927. .free {
  1928. font-weight: bold;
  1929. font-size: 36rpx !important;
  1930. }
  1931. }
  1932. .address {
  1933. font-size: 44rpx;
  1934. font-weight: bold;
  1935. }
  1936. .price {
  1937. font-weight: bold;
  1938. font-size: 60rpx !important;
  1939. .unit {
  1940. font-weight: normal;
  1941. font-size: 36rpx !important;
  1942. }
  1943. }
  1944. }
  1945. }
  1946. page {
  1947. background-color: #F6F8F8;
  1948. padding-bottom: 100px;
  1949. }
  1950. .service {
  1951. font-size: 24px;
  1952. color: #101010;
  1953. position: absolute;
  1954. right: 16px;
  1955. }
  1956. .main2 {
  1957. background-color: #fff;
  1958. padding-left: 16px;
  1959. .item {
  1960. border-bottom: 1px solid #e5e7ea;
  1961. padding: 16px 0;
  1962. .title {
  1963. line-height: 16px;
  1964. color: rgba(119, 119, 119, 100);
  1965. font-size: 16px;
  1966. .more {
  1967. font-size: 24px;
  1968. color: #b3b3b3;
  1969. float: right;
  1970. margin-right: 8px;
  1971. }
  1972. }
  1973. .content {
  1974. line-height: 24px;
  1975. color: rgba(16, 16, 16, 100);
  1976. font-size: 16px;
  1977. margin-top: 8px;
  1978. padding-right: 30px;
  1979. }
  1980. }
  1981. }
  1982. .main {
  1983. padding: 40rpx 40rpx 24rpx 40rpx;
  1984. background-image: linear-gradient(#D6EEDC, #F6F8F8);
  1985. .text-1 {
  1986. color: rgba(0, 170, 90, 100);
  1987. font-size: 48rpx;
  1988. line-height: 33px;
  1989. }
  1990. .text-2 {
  1991. color: rgba(102, 102, 102, 100);
  1992. font-size: 32rpx;
  1993. line-height: 22px;
  1994. }
  1995. .charging-info {
  1996. background-color: #fff;
  1997. margin: 0px auto;
  1998. border-radius: 12px;
  1999. padding: 20rpx 38rpx;
  2000. .name {
  2001. margin-top: 8rpx;
  2002. color: #777777;
  2003. font-size: 32rpx;
  2004. .free {
  2005. display: inline-block;
  2006. //width: 72px;
  2007. padding:4rpx 24rpx ;
  2008. //height: 20px;
  2009. line-height: 20px;
  2010. border-radius: 50px;
  2011. background-color: rgba(208, 246, 228, 100);
  2012. color: rgba(0, 185, 98, 100);
  2013. font-size: 28rpx;
  2014. text-align: center;
  2015. margin-left: 12px;
  2016. }
  2017. .workStatusText6{
  2018. background-color: rgba(255, 214, 210, 1);
  2019. color: rgba(255, 56, 56, 1);
  2020. }
  2021. }
  2022. .price-3-card-view {
  2023. display: flex;
  2024. align-items: last baseline;
  2025. .price-3-card {
  2026. max-width: 240rpx;
  2027. min-width: 220rpx;
  2028. display: flex;
  2029. background: linear-gradient(93.02deg, rgba(59, 182, 254, 1) 39.4%, rgba(0, 185, 98, 1) 92.96%);
  2030. border-radius: 4px;
  2031. height: 32rpx;
  2032. min-height: 32rpx;
  2033. margin-left: 32rpx;
  2034. // align-items: center;
  2035. line-height: 32rpx;
  2036. .num1 {
  2037. img {
  2038. // width: 88rpx;
  2039. //width: 34px;
  2040. height: 32rpx;
  2041. }
  2042. ::v-deep .u-image {
  2043. min-height: 32rpx;
  2044. }
  2045. font-size: 22rpx;
  2046. background: rgb(48, 49, 51);
  2047. }
  2048. .num {
  2049. padding: 0 6rpx 0 6rpx;
  2050. color: rgba(255, 255, 255, 1);
  2051. font-size: 22rpx;
  2052. display: flex;
  2053. align-items: center;
  2054. }
  2055. }
  2056. .price-3-card-yue{
  2057. background: linear-gradient(88.81deg, rgba(219,199,167,1) 1.89%,rgba(194,154,93,1) 98%);
  2058. }
  2059. }
  2060. .price-2 {
  2061. display: flex;
  2062. align-items: baseline;
  2063. .price-4 {
  2064. color: rgba(0, 185, 98, 100);
  2065. font-size: 56rpx;
  2066. margin-top: 0rpx;
  2067. display: flex;
  2068. align-items: baseline;
  2069. .unit {
  2070. font-size: 32rpx;
  2071. color: #666666;
  2072. margin-left: 4px;
  2073. }
  2074. }
  2075. .price-3 {
  2076. font-size: 24rpx;
  2077. color: #fff;
  2078. margin-left: 8rpx;
  2079. padding-right: 9rpx;
  2080. background: #00B962;
  2081. border-radius: 8rpx;
  2082. .num1 {
  2083. padding-left: 12rpx;
  2084. border-radius: 8rpx 0 8rpx 8rpx;
  2085. padding-right: 18rpx;
  2086. background: #121212;
  2087. -webkit-clip-path: polygon(0 0, 93% 0, 84% 100%, 0% 100%);
  2088. clip-path: polygon(0 0, 93% 0, 84% 100%, 0% 100%);
  2089. }
  2090. }
  2091. }
  2092. .price {
  2093. color: rgba(0, 185, 98, 100);
  2094. //font-size: 56rpx;
  2095. margin: 8rpx 0;
  2096. .span {
  2097. font-size: 56rpx;
  2098. }
  2099. .unit {
  2100. font-size: 32rpx;
  2101. color: #666666;
  2102. margin-left: 4px;
  2103. }
  2104. }
  2105. .address {
  2106. color: #333333;
  2107. font-size: 40rpx;
  2108. .explain {
  2109. line-height: 22px;
  2110. color: rgba(22, 119, 255, 100);
  2111. font-size: 32rpx;
  2112. float: right;
  2113. }
  2114. }
  2115. }
  2116. }
  2117. .main-head {
  2118. display: flex;
  2119. justify-content: space-between;
  2120. }
  2121. .charge-img {
  2122. width: 80px;
  2123. overflow: hidden;
  2124. height: 80px;
  2125. // margin-right: 16rpx;
  2126. img {
  2127. width: 100%;
  2128. }
  2129. }
  2130. .cost-explainMain{
  2131. margin: 24rpx 40rpx 24rpx 40rpx;
  2132. padding: 30rpx 40rpx;
  2133. background-color: #fff;
  2134. // background-color: #fff;
  2135. // margin: 0 40rpx;
  2136. border-radius: 12px;
  2137. // padding: 38rpx 40rpx;
  2138. // display: flex;
  2139. font-size: 36rpx;
  2140. // 费用说明
  2141. .cost-explain {
  2142. margin-bottom: 12rpx;
  2143. border-radius: 12px;
  2144. display: flex;
  2145. justify-content: space-between;
  2146. align-items: center;
  2147. .car-number {
  2148. display: flex;
  2149. font-size: 32rpx;
  2150. }
  2151. img {
  2152. vertical-align: middle;
  2153. }
  2154. .text {
  2155. font-size: 36rpx;
  2156. color: #101010;
  2157. //width: 330rpx;
  2158. white-space: pre;
  2159. }
  2160. .iconfont {
  2161. color: #b3b3b3;
  2162. font-size: 48rpx
  2163. }
  2164. }
  2165. .cost-explain2{
  2166. .car-number{
  2167. font-size: 28rpx;
  2168. color: #FF3D00;
  2169. }
  2170. }
  2171. }
  2172. .tips {
  2173. background-color: #fff;
  2174. padding: 40rpx;
  2175. margin: 8rpx 40rpx 0 40rpx;
  2176. border-radius: 12px;
  2177. .p {
  2178. line-height: 25px;
  2179. color: #333333;
  2180. font-size: 32rpx;
  2181. font-weight: 550;
  2182. }
  2183. .content {
  2184. margin-top: 16rpx;
  2185. line-height: 22px;
  2186. color: #666666;
  2187. font-size: 28rpx;
  2188. }
  2189. }
  2190. .bottom {
  2191. width: 100%;
  2192. padding: 28rpx 0;
  2193. .u-btn {
  2194. margin: 0 40rpx;
  2195. line-height: 88rpx;
  2196. height: 88rpx;
  2197. font-size: 40rpx
  2198. }
  2199. }
  2200. .haveLock{
  2201. ::v-deep .u-btn {
  2202. background-color:#009ED7
  2203. }
  2204. }
  2205. ::v-deep .u-alert-desc {
  2206. color: rgba(255, 115, 0, 100);
  2207. font-size: 16px
  2208. }
  2209. // 入场车辆
  2210. .carp {
  2211. margin: 0 40rpx;
  2212. }
  2213. .carImg {
  2214. margin: 0 40rpx;
  2215. img {
  2216. width: 100%;
  2217. }
  2218. }
  2219. .carImg3 {
  2220. margin: 0 40rpx;
  2221. background: linear-gradient(32.4deg, rgba(59,182,254,1) 20.49%,rgba(0,185,98,1) 118.87%);
  2222. border-radius: 8px;
  2223. }
  2224. .carImg3-yue {
  2225. margin: 0 40rpx;
  2226. background: linear-gradient(88.81deg, rgba(219,199,167,1) 1.89%,rgba(194,154,93,1) 98%);
  2227. border-radius: 8px;
  2228. }
  2229. .carImg2-yue {
  2230. line-height: 20px;
  2231. color: rgba(255, 255, 255, 1);
  2232. font-size: 32rpx;
  2233. padding:40rpx;
  2234. //background: linear-gradient(88.81deg, rgba(219,199,167,1) 1.89%,rgba(194,154,93,1) 98%);
  2235. background: url('@/assets/img/9-4/antFill-crown.svg');
  2236. background-repeat: repeat-y;
  2237. background-position-x: 440rpx;
  2238. .carImg-2{
  2239. span{
  2240. font-size: 48rpx;
  2241. color:red;
  2242. margin: 0 4rpx;
  2243. font-weight: bold;
  2244. padding:0rpx 4rpx;
  2245. }
  2246. }
  2247. .carImg-3{
  2248. margin-top:8rpx ;
  2249. span{
  2250. padding:8rpx 16rpx;
  2251. border-radius: 12px;
  2252. background-color: rgba(255, 255, 255, 1);
  2253. text-align: center;
  2254. color: #795626 ;
  2255. font-size: 12px;
  2256. }
  2257. }
  2258. }
  2259. .carImg2 {
  2260. line-height: 20px;
  2261. color: rgba(255, 255, 255, 1);
  2262. font-size: 32rpx;
  2263. padding:40rpx;
  2264. background: url('@/assets/img/9-4/6show.png');
  2265. background-repeat: repeat-y;
  2266. background-position-x: 440rpx;
  2267. .carImg-2{
  2268. span{
  2269. font-size: 48rpx;
  2270. color:red;
  2271. margin: 0 4rpx;
  2272. font-weight: bold;
  2273. padding:0rpx 4rpx;
  2274. }
  2275. }
  2276. .carImg-3{
  2277. margin-top:8rpx ;
  2278. span{
  2279. padding:8rpx 16rpx;
  2280. border-radius: 12px;
  2281. background-color: rgba(255, 255, 255, 1);
  2282. text-align: center;
  2283. color: rgba(0, 130, 69, 1);
  2284. font-size: 12px;
  2285. }
  2286. }
  2287. }
  2288. .showOss2 {
  2289. ::v-deep .u-model,
  2290. ::v-deep .u-mode-center-box {
  2291. background-color: transparent;
  2292. }
  2293. }
  2294. .classtable {
  2295. margin: 0rpx 40rpx;
  2296. .td1 {
  2297. width: 50rpx;
  2298. padding: 12rpx 0;
  2299. text-align: center;
  2300. img {
  2301. width: 48rpx;
  2302. height: 48rpx;
  2303. }
  2304. font-size: 10px;
  2305. }
  2306. .td2 {
  2307. padding-left: 16rpx;
  2308. font-size: 12px;
  2309. line-height: 24px;
  2310. .dian {
  2311. padding: 0 10rpx
  2312. }
  2313. }
  2314. }
  2315. .btnview {
  2316. display: flex;
  2317. flex-direction: column;
  2318. align-items: center;
  2319. .btnview1 {}
  2320. .btnview2 {
  2321. color: #999999;
  2322. margin-top: 20rpx;
  2323. padding-bottom: 48rpx;
  2324. }
  2325. }
  2326. .sign-6 {
  2327. //background: linear-gradient(89.4deg, rgba(255,61,0,1) 2.8%,rgba(255,134,0,1) 98.02%);
  2328. background: linear-gradient(89.4deg, rgba(0, 164, 87, 1) 2.8%, rgba(0, 206, 141, 1) 98.02%);
  2329. color: rgba(255, 255, 255, 1);
  2330. padding: 0 10rpx;
  2331. }
  2332. .chat_hhh_time {
  2333. display: flex;
  2334. justify-content: space-between;
  2335. }
  2336. .chat_hhh {
  2337. .chatShow {
  2338. .showspan{
  2339. float: right;
  2340. color: #00b962;
  2341. }
  2342. margin-bottom: 280rpx;
  2343. //height: 160px;
  2344. visibility: hidden;
  2345. // width: 120px;
  2346. padding: 4rpx 16rpx;
  2347. text-align: initial;
  2348. /* 定位 */
  2349. position: absolute;
  2350. z-index: 1;
  2351. padding: 4rpx 16rpx;
  2352. background-color: #fff;
  2353. color: rgba(102, 102, 102, 1);
  2354. border-radius: 3px;
  2355. font-size: 24rpx;
  2356. box-shadow: 0px 0px 4px 0px rgba(0, 0, 0, 0.2);
  2357. }
  2358. .chatShowA {
  2359. margin-left: -60rpx;
  2360. }
  2361. .chatShowB {
  2362. margin-left: -160rpx;
  2363. }
  2364. .chatShowNo {
  2365. visibility: hidden;
  2366. }
  2367. .chatShowOk {
  2368. visibility: visible;
  2369. }
  2370. background: #f9f9f9;
  2371. text-align: center;
  2372. min-height: 160px;
  2373. display: flex;
  2374. font-size: 20rpx;
  2375. .current1 {
  2376. .chats2 {
  2377. //border: 1px solid red;
  2378. }
  2379. }
  2380. .current2 {
  2381. .chats1 {
  2382. border: 1px solid #333333;
  2383. border-bottom: 0px;
  2384. }
  2385. .chats2 {
  2386. border: 1px solid #333333;
  2387. background: #26FF6B !important;
  2388. border-top: 0px;
  2389. }
  2390. }
  2391. .chatTime {
  2392. min-width: 68rpx;
  2393. display: flex;
  2394. flex-direction: column;
  2395. justify-content: flex-end;
  2396. border: 1px solid #f9f9f9;
  2397. .chats0 {
  2398. // background-color: #ff8b17;
  2399. // color: #ffecdd;
  2400. display: flex;
  2401. justify-content: center;
  2402. flex-wrap: wrap;
  2403. flex-direction: column;
  2404. }
  2405. .chats9 {
  2406. opacity: 0;
  2407. display: flex;
  2408. justify-content: center;
  2409. flex-wrap: wrap;
  2410. flex-direction: column;
  2411. }
  2412. .chats1 {
  2413. background: #dcdcdc;
  2414. min-height: 30rpx
  2415. }
  2416. .chats2 {
  2417. background: #80e0a6;
  2418. display: flex;
  2419. flex-direction: column;
  2420. justify-content: space-between;
  2421. }
  2422. }
  2423. }
  2424. .quickMain{
  2425. ::v-deep .u-mode-center-box{
  2426. background-color: transparent;
  2427. }
  2428. ::v-deep .u-model{
  2429. background-color: transparent;
  2430. }
  2431. .quickMain-slot-content{
  2432. .quickMain-img{
  2433. position: relative;
  2434. top: 120rpx;
  2435. text-align: center;
  2436. img{
  2437. width: 160rpx;
  2438. height: 240rpx;
  2439. }
  2440. }
  2441. .quickMain-bodyMain{
  2442. background-color:#fff;
  2443. border-radius: 15px;
  2444. }
  2445. .quickMain-body{
  2446. margin:0 56rpx ;
  2447. color: rgba(51, 51, 51, 1);
  2448. .quickMain-text1{
  2449. font-size: 48rpx;
  2450. text-align: center;
  2451. padding: 132rpx 0 32rpx 0;
  2452. }
  2453. .quickMain-text2{
  2454. margin-bottom: 20rpx ;
  2455. //color: rgba(51, 51, 51, 1);
  2456. font-size: 32rpx;
  2457. img{
  2458. width: 40rpx;
  2459. //height: 120px;
  2460. }
  2461. }
  2462. }
  2463. }
  2464. }
  2465. .slogan-4 {
  2466. z-index: 2;
  2467. margin-top: 10px;
  2468. display: flex;
  2469. justify-content: center;
  2470. /* text-decoration: underline; */
  2471. text-align: center;
  2472. position: fixed;
  2473. /* top: 40px; */
  2474. bottom: 180px;
  2475. right: 20px;
  2476. height: 80rpx;
  2477. width: 80rpx;
  2478. line-height: 20px;
  2479. font-size: 16px;
  2480. background: linear-gradient(95deg, #FF9800, #FF5722);
  2481. box-shadow: 0 4rpx 24rpx 0 #FF5722;
  2482. //padding-top: 8px;
  2483. color: #fff;
  2484. border-radius: 25px;
  2485. }
  2486. .imageshake {
  2487. position: relative;
  2488. animation: shake 0.5s ease-in-out infinite;
  2489. }
  2490. @keyframes shake {
  2491. 0% {
  2492. transform: rotate(0deg);
  2493. }
  2494. 25% {
  2495. transform: rotate(8deg);
  2496. }
  2497. 50% {
  2498. transform: rotate(0deg);
  2499. }
  2500. 75% {
  2501. transform: rotate(-8deg);
  2502. }
  2503. 100% {
  2504. transform: rotate(0deg);
  2505. }
  2506. }
  2507. .showOssK {
  2508. ::v-deep .u-model,
  2509. ::v-deep .u-mode-center-box {
  2510. background-color: transparent;
  2511. }
  2512. }
  2513. // .showOss {
  2514. // ::v-deep .u-model,
  2515. // ::v-deep .u-mode-center-box {
  2516. // background-color: transparent;
  2517. // }
  2518. // }
  2519. .swiper {
  2520. height: 700rpx;
  2521. .swiperitem {
  2522. height: 700rpx;
  2523. }
  2524. }
  2525. .useFreeCoupon{
  2526. font-size: 24rpx;
  2527. color:#FF3D00;
  2528. }
  2529. .sign {
  2530. display: flex;
  2531. flex-wrap: wrap;
  2532. margin-top: 10px;
  2533. .sign-tag {
  2534. height: 36rpx;
  2535. line-height: 32rpx;
  2536. border-radius: 8rpx;
  2537. //background-color: rgba(255, 255, 255, 100);
  2538. //color: rgba(255, 139, 0, 100);
  2539. font-size: 10px;
  2540. text-align: center;
  2541. //border: 1px solid rgba(255, 139, 0, 100);
  2542. padding: 0 8rpx;
  2543. margin-right: 8rpx;
  2544. margin-bottom: 8rpx;
  2545. }
  2546. .sign-0 {
  2547. background: linear-gradient(89.4deg, rgba(129, 97, 255, 1) 2.8%, rgba(169, 147, 255, 1) 98.02%);
  2548. color: rgba(255, 255, 255, 1);
  2549. //padding: 0 10rpx;
  2550. //border: 1px solid rgba(255, 139, 0, 100);
  2551. }
  2552. .sign-5 {
  2553. background: linear-gradient(89.4deg, rgba(255, 61, 0, 1) 2.8%, rgba(255, 134, 0, 1) 98.02%);
  2554. color: rgba(255, 255, 255, 1);
  2555. //padding: 0 10rpx;
  2556. }
  2557. .sign-1 {
  2558. background-color: rgba(255, 255, 255, 100);
  2559. color: rgba(255, 139, 0, 100);
  2560. border: 1px solid rgba(255, 139, 0, 100);
  2561. }
  2562. .sign-2 {
  2563. background-color: rgba(255, 255, 255, 100);
  2564. color: rgba(153, 153, 153, 100);
  2565. border: 1px solid rgba(204, 204, 204, 100);
  2566. }
  2567. .sign-3 {
  2568. background-color: rgba(255, 255, 255, 100);
  2569. color: #8161FF;
  2570. border: 1px solid #8161FF;
  2571. }
  2572. .sign-4 {
  2573. background-color: rgba(255, 255, 255, 100);
  2574. color: #00B962;
  2575. border: 1px solid #00B962;
  2576. }
  2577. }
  2578. .class20250501{
  2579. width: 670rpx;
  2580. //height: 200rpx;
  2581. background: url(@/assets/img/20250501/char-index-1.png) round;
  2582. background-size: 100%;
  2583. margin: 0 40rpx;
  2584. //background: linear-gradient(32.4deg, rgba(59,182,254,1) 20.49%,rgba(0,185,98,1) 118.87%);
  2585. border-radius: 8px;
  2586. padding:32rpx 32rpx 16rpx 32rpx;
  2587. display: flex;
  2588. flex-direction: column;
  2589. justify-content: space-between;
  2590. .body1{
  2591. color: #fff;
  2592. font-size: 32rpx;
  2593. span{
  2594. color:#FDE94E;
  2595. font-weight: bold;
  2596. }
  2597. .text1{
  2598. font-weight: bold;
  2599. }
  2600. .text2{
  2601. margin-top: -20rpx;
  2602. font-size: 28rpx;
  2603. }
  2604. }
  2605. .body2{
  2606. display: flex;
  2607. margin-top: 16rpx;
  2608. .botton{
  2609. padding: 2px 6px;
  2610. line-height: 20px;
  2611. border-radius: 50px;
  2612. background-color: rgba(255, 255, 255, 1);
  2613. font-size: 12px;
  2614. color: rgba(0, 130, 69, 1);
  2615. }
  2616. }
  2617. }
  2618. </style>