index.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927
  1. <template>
  2. <view>
  3. <ujp-navbar title="充电">
  4. <view class="slot-wrap">
  5. <view class="navbar-left"></view>
  6. <!-- <view class="navbar-right"><u-icon name="iconfontscan" custom-prefix="custom-icon" color="#1677ff" size="40"></u-icon></view>
  7. -->
  8. </view>
  9. </ujp-navbar>
  10. <view class="charge" style="padding-bottom: 0px;">
  11. <view class="chargeInfo">
  12. <view class="chargeInfo-row">
  13. <view class="u-flex">
  14. <p>站点:</p>
  15. <h4>{{detail.stationName}}</h4>
  16. </view>
  17. </view>
  18. <view class="chargeInfo-row">
  19. <view class="u-flex">
  20. <p>桩号:</p>
  21. <h4>{{detail.deviceNo}}</h4>
  22. </view>
  23. <view class="u-flex" @click="switchCharge">
  24. <span>切换充电桩</span>
  25. <u-icon name="arrow-right" color="#999" size="24"></u-icon>
  26. </view>
  27. </view>
  28. <view class="chargeInfo-row">
  29. <view class="u-flex">
  30. <p>桩名:</p>
  31. <h4>{{detail.name}}</h4>
  32. </view>
  33. <view class="u-flex" @click="showTips()" v-if="!(detail.electricityPrice&&detail.servicePrice)">
  34. <span>费用说明</span>
  35. <u-icon name="error-circle" color="#1677ff" size="32"></u-icon>
  36. </view>
  37. </view>
  38. </view>
  39. <view class="chargeMain">
  40. <template v-for="(item,i) in list">
  41. <view :key="i" class="chargeMain-item " @click="selectItem(item)" :class="{
  42. 'active':item.channelNo==submitForm.channelNo,
  43. 'occupy':item.status==1,
  44. 'fault':item.status==2,
  45. }">
  46. <p>{{i+1}}</p>
  47. <p>{{item.statusStr}}</p>
  48. </view>
  49. </template>
  50. <h2 v-if="isReady&&list.length==0">无可用通道<br />请联系客服人员</h2>
  51. </view>
  52. </view>
  53. <view class="charge">
  54. <view class="chargeInfo" v-if="!(detail.electricityPrice&&detail.servicePrice)"
  55. style="margin-bottom: 10px;">
  56. <p>充电{{listTypeIndex==0?'时长':'金额'}} <span style="color:#1677FF;margin-left:10px ">{{getListName()}}</span></p>
  57. </view>
  58. <view v-if="detail.templateCode=='3'" class="subsection-class" >
  59. 金额付费
  60. </view>
  61. <u-subsection :list="listType" mode="subsection" v-else active-color="#3786f4" :current="0"
  62. @change="changeListType"></u-subsection>
  63. <view class="chargeMain" v-show="listTypeIndex==0">
  64. <template v-for="(item,i) in timelist">
  65. <view :key="i" class="chargeMain-item " style="width: 30%;padding: 5px;"
  66. @click="submitForm.hour=item.id" :class="{
  67. 'active':submitForm.hour==item.id,
  68. }">
  69. <p>{{item.name}}</p>
  70. </view>
  71. </template>
  72. </view>
  73. <view class="chargeMain" v-show="listTypeIndex==1">
  74. <view class="chargeMain-item " style="width: 30%;padding: 5px;"
  75. @click="submitForm.amount=0" :class="{
  76. 'active':submitForm.amount==0,
  77. }">
  78. <p>充满自停</p>
  79. </view>
  80. <template v-for="(item,i) in moneylist">
  81. <view :key="i" class="chargeMain-item " style="width: 30%;padding: 5px;"
  82. @click="submitForm.amount=item.id" :class="{
  83. 'active':submitForm.amount==item.id,
  84. }">
  85. <p>{{item.name}}</p>
  86. </view>
  87. </template>
  88. </view>
  89. </view>
  90. <view class="charge">
  91. <view class="chargeInfo" style="margin-bottom: 10px;">
  92. <p v-show="listTypeIndex==0"><span style="color:red">*</span>按时间付费:需要先充值,从余额中扣费,适用会员用户。</p>
  93. <p v-show="listTypeIndex==1"><span style="color:red">*</span>按金额付费:无需充值,先付费后使用,未使用完的费用原路退回。</p>
  94. </view>
  95. <view class="chargeInfo" v-if="(detail.electricityPrice&&detail.servicePrice)"
  96. style="margin-bottom: 10px;padding-top:10px;border-top:1px solid #CDCDCD">
  97. <view style=" display: flex;
  98. justify-content: space-between;">
  99. <p>充电{{listTypeIndex==0?'时长':'金额'}} <span style="color:#1677FF;margin-left:10px ">{{getListName()}}</span>
  100. </p>
  101. <view class="u-flex" v-if="detail.templateCode!=3" style=" color: #1677ff;
  102. margin-right: 5px;" @click="showTips()">
  103. <span>费用说明</span>
  104. <u-icon name="error-circle" color="#1677ff" size="32"></u-icon>
  105. </view>
  106. </view>
  107. <p>电费单价:{{detail.electricityPrice}}元/千瓦时</p>
  108. <p>服务费单价:{{detail.servicePrice}}元/千瓦时</p>
  109. </view>
  110. </view>
  111. <view style="padding-bottom: 100px;">
  112. <view class="charge">
  113. <view class="chargeRadio">
  114. <view class="u-flex">
  115. <u-icon name="rmb-circle-fill" color="#ff9502" size="90"></u-icon>
  116. <view class="chargeRadio-text">
  117. <p>余额支付</p>
  118. <p>现有余额¥{{user.availableBalance}} </p>
  119. </view>
  120. </view>
  121. <u-button type="warning" style=" height: 34px;z-index: 0;"
  122. @click='gotoUrl("pages/user/recharge")'>我要充值</u-button>
  123. </view>
  124. </view>
  125. </view>
  126. <view class="foot-btn">
  127. <u-button type="primary" :custom-style="customStyle" @click="submit" shape="square">开始充电</u-button>
  128. </view>
  129. <u-modal v-model="showPriceList" title="费用说明">
  130. <view class="priceListMain">
  131. <u-table v-if="detail.priceList.length"
  132. align="right"
  133. border-color="#fff" style=" padding: 20rpx;" >
  134. <u-tr class="u-tr u-tr1">
  135. <u-td class="u-td u-td1">充电功率</u-td>
  136. <template v-if="detail.priceList[0].electricityPrice&&detail.priceList[0].servicePrice">
  137. <u-td class="u-td">电费</u-td>
  138. <u-td class="u-td">服务费</u-td>
  139. </template>
  140. <u-td class="u-td" v-else>费用</u-td>
  141. </u-tr>
  142. <u-tr class="u-tr" v-for="(item,i) in detail.priceList" >
  143. <u-td class="u-td u-td1">{{item.minPower}}W-{{item.maxPower}}W</u-td>
  144. <template v-if="item.electricityPrice&&item.servicePrice">
  145. <u-td class="u-td">{{item.electricityPrice}}元/小时</u-td>
  146. <u-td class="u-td">{{item.servicePrice}}元/小时</u-td>
  147. </template>
  148. <u-td class="u-td" v-else>{{item.price}}元/小时</u-td>
  149. </u-tr>
  150. </u-table>
  151. <!-- <p v-for="(item,i) in detail.priceList" class="showPriceList" :key="i">{{item.minPower}}W-{{item.maxPower}}W
  152. <span>{{item.price}}元每小时</span></p> -->
  153. <p style=" padding: 20rpx;" v-if="(detail.electricityPrice&&detail.servicePrice)">
  154. 电费单价:{{detail.electricityPrice}}元/千瓦时;服务费单价:{{detail.servicePrice}}元/千瓦时 </p>
  155. <template v-else>
  156. <p style=" padding: 20rpx;" v-if="detail.roundingMinute!=null&&detail.roundingMinute!=-1">
  157. 超过{{detail.roundingMinute}}分钟,按1小时记,不足{{detail.roundingMinute}}分钟,不计费</p>
  158. </template>
  159. </view>
  160. </u-modal>
  161. <u-modal v-model="showmodel" @confirm="confirm" :showCancelButton="true" title="订单信息">
  162. <div class="showmodel">
  163. <p>桩号</p>{{detail.deviceNo}}
  164. </div>
  165. <div class="showmodel">
  166. <p>充电通道</p>{{submitForm.channelNo}}
  167. </div>
  168. <div class="showmodel">
  169. <p>支付方式</p>{{listTypeIndex==0?'余额支付':'微信支付'}}
  170. </div>
  171. <div class="showmodel">
  172. <p>充电{{listTypeIndex==0?'时长':'金额'}}</p>{{getListName()}}
  173. </div>
  174. <p class="showmodel" style="color: red;" v-if="listTypeIndex==0&&submitForm.hour==0">充满自停模式,设备充满后会自动停止计费,剩余费用会原路返还</p>
  175. <p class="showmodel" style="color: red;" v-if="listTypeIndex==1">按金额付费:无需充值,先付费后使用,未使用完的费用原路退回。</p>
  176. </u-modal>
  177. <u-modal v-model="showmodal2" :show-cancel-button="true" title="余额不足" confirm-text="前往充值"
  178. content="账户余额不足,充值成功后开始充电" @confirm="wxpay"></u-modal>
  179. </view>
  180. </template>
  181. <script>
  182. import * as API from '@/apis/index.js'
  183. import * as Pay from '@/apis/weixin.js'
  184. import {
  185. wxPayJs
  186. } from '@/utils/wxpay'
  187. export default {
  188. data() {
  189. return {
  190. showmodal: false,
  191. show: false,
  192. otherNum_f: '',
  193. moneyList_f: [],
  194. showmodal2: false,
  195. moneyActiveClass_f: "-1",
  196. fee:"",
  197. id: "",
  198. showPriceList: false,
  199. showmodel: false,
  200. //充电桩信息
  201. detail: {
  202. roundingMinute: -1,
  203. priceList: [],
  204. },
  205. user: {},
  206. //充电位子list
  207. listTypeIndex: 0,
  208. listType: [{
  209. name: '按时间付费'
  210. },
  211. {
  212. name: '按金额付费(临时充电)'
  213. }
  214. ],
  215. list: [
  216. ],
  217. recordId:"",
  218. moneylist: [{
  219. id: '0.5',
  220. name: '0.5元'
  221. },
  222. {
  223. id: '1',
  224. name: '1元'
  225. },
  226. {
  227. id: '2',
  228. name: '2元'
  229. },
  230. {
  231. id: '3',
  232. name: '3元'
  233. },
  234. {
  235. id: '4',
  236. name: '4元'
  237. },
  238. {
  239. id: '5',
  240. name: '5元'
  241. },
  242. ],
  243. timelist: [{
  244. id: '0',
  245. name: '充满自停'
  246. },
  247. {
  248. id: '1',
  249. name: '1小时'
  250. },
  251. {
  252. id: '2',
  253. name: '2小时'
  254. },
  255. {
  256. id: '3',
  257. name: '3小时'
  258. },
  259. {
  260. id: '4',
  261. name: '4小时'
  262. },
  263. {
  264. id: '5',
  265. name: '5小时'
  266. },
  267. {
  268. id: '6',
  269. name: '6小时'
  270. },
  271. {
  272. id: '8',
  273. name: '8小时'
  274. },
  275. {
  276. id: '10',
  277. name: '10小时'
  278. },
  279. ],
  280. selectItemObj: {},
  281. //提交信息
  282. submitForm: {
  283. deviceNo: '',
  284. channelNo: '',
  285. hour: '0',
  286. amount: "0.5",
  287. //paytype:'YE',
  288. },
  289. isReady: false,
  290. customStyle: {
  291. background: '#1677ff'
  292. }
  293. }
  294. },
  295. onLoad(op) {
  296. if (op.id) {
  297. this.id = op.id;
  298. this.carhelp.set("qr-default-id", op.id);
  299. } else {
  300. //用于支付后返回系统 -- 点金计划
  301. var id = this.carhelp.get("qr-default-id")
  302. if (id) {
  303. this.id = this.carhelp.get("qr-default-id");
  304. }
  305. }
  306. this.init()
  307. },
  308. methods: {
  309. wxpay(){
  310. uni.showLoading({
  311. title: "加载中",
  312. mask: true,
  313. })
  314. Pay.wxpay2({
  315. recordId:this.recordId,
  316. amount:this.fee
  317. }).then((response) => {
  318. if(!response.result){
  319. uni.showToast({
  320. title: response.message
  321. })
  322. return
  323. }
  324. var data = response.data
  325. uni.hideLoading()
  326. console.log("Pay+"+new Date().getTime())
  327. wxPayJs(data);
  328. }).catch(error => {
  329. uni.showToast({
  330. title: error
  331. })
  332. })
  333. },
  334. getListName() {
  335. var list = [];
  336. var value = [];
  337. if (this.listTypeIndex == 0) {
  338. list = this.timelist;
  339. value = this.submitForm.hour;
  340. } else {
  341. list = this.moneylist;
  342. value = this.submitForm.amount;
  343. }
  344. for (var i in list) {
  345. var obj = list[i];
  346. if (obj.id == value) {
  347. return obj.name
  348. }
  349. }
  350. return ""
  351. },
  352. changeListType(e) {
  353. console.log(e)
  354. this.listTypeIndex = e;
  355. },
  356. switchCharge() {
  357. var stationId = this.detail.stationId;
  358. console.log("switchCharge")
  359. uni.redirectTo({
  360. url: '/pages/charge/switchCharge?id=' + this.id + '&stationId=' + stationId
  361. })
  362. },
  363. moneyClick_f(index, item) {
  364. this.otherNum_f = '';
  365. this.moneyActiveClass_f = index;
  366. if (item) {
  367. this.selectItemObj = item;
  368. // if(item.imgUrl){
  369. // this.selectImg=item
  370. // }
  371. }
  372. },
  373. init() {
  374. if (!this.id) {
  375. this.switchCharge()
  376. } else {
  377. var data = {
  378. //type:1 ,
  379. };
  380. API.marketingData(data).then((res) => {
  381. this.moneyList_f = res.data.chargingMarketingList
  382. if (this.moneyList_f.length > 0) {
  383. this.selectItemObj = this.moneyList_f[0];
  384. this.moneyActiveClass_f = this.moneyList_f[0].id
  385. //(this.moneyActiveClass)
  386. }
  387. }).catch(error => {
  388. uni.showToast({
  389. title: error
  390. })
  391. })
  392. uni.showLoading({
  393. title: "加载中",
  394. mask: true,
  395. })
  396. var data = {
  397. };
  398. if (this.id) {
  399. data.deviceId = this.id
  400. }
  401. API.chargingData(data).then((res) => {
  402. this.detail = res.data.chargingDevice;
  403. if(this.detail.templateCode==3){
  404. this.listTypeIndex=1;
  405. this.submitForm.amount=0;
  406. }
  407. if (!this.detail.online) {
  408. uni.showToast({
  409. title: '设备不在线,请扫描其他二维码'
  410. })
  411. return
  412. }
  413. this.carhelp.set("qr-default-id", this.id);
  414. this.user = res.data.userAccount;
  415. this.list = this.detail.chargeStatusArray
  416. this.isReady = true;
  417. uni.hideLoading()
  418. }).catch(error => {
  419. this.isReady = true;
  420. uni.hideLoading()
  421. uni.showToast({
  422. title: error
  423. })
  424. })
  425. }
  426. },
  427. selectItem(row) {
  428. if (row.status == 0) {
  429. this.submitForm.channelNo = row.channelNo
  430. } else {
  431. uni.showToast({
  432. title: '当前设备不可选'
  433. })
  434. }
  435. },
  436. confirm(bl) {
  437. uni.showLoading({
  438. title: "加载中",
  439. mask: true,
  440. })
  441. this.submitForm.deviceNo = this.detail.deviceNo;
  442. //提交信息
  443. var submitForm = {
  444. deviceNo: this.submitForm.deviceNo,
  445. channelNo: this.submitForm.channelNo,
  446. };
  447. if (this.listTypeIndex == 0) {
  448. submitForm.hour = this.submitForm.hour
  449. } else {
  450. submitForm.amount = this.submitForm.amount
  451. }
  452. //paytype:'YE',
  453. API.startCharging(submitForm).then((res) => {
  454. if(res.data.status=="5"){
  455. uni.hideLoading()
  456. this.recordId=res.data.recordId;
  457. var fee=res.data.fee;
  458. this.fee=(fee-this.user.availableBalance).toFixed(2);
  459. //this.otherNum_f=this.fee;
  460. if(bl){
  461. this.wxpay();
  462. }else{
  463. this.showmodal2=true;
  464. }
  465. }else{
  466. this.gotoUrl("pages/index/index");
  467. }
  468. // uni.showModal({
  469. // title: '提示',
  470. // showCancel:false,
  471. // content: '启动成功',
  472. // success: res=> {
  473. // if (res.confirm) {
  474. // //付钱 改为组件
  475. // this.gotoUrl("pages/index/index");
  476. // } else if (res.cancel) {
  477. // console.log('用户点击取消');
  478. // }
  479. // }
  480. // });
  481. // uni.showToast({
  482. // title: '启动中..'
  483. // })
  484. // setTimeout(()=>{
  485. // },3000)
  486. // uni.hideLoading()
  487. }).catch(error => {
  488. uni.hideLoading()
  489. if (error == '用户账户余额不足!') {
  490. uni.showModal({
  491. title: '支付',
  492. content: '用户账户余额不足,是否充值?',
  493. success: res => {
  494. if (res.confirm) {
  495. //付钱 改为组件
  496. this.gotoUrl("pages/user/recharge");
  497. } else if (res.cancel) {
  498. console.log('用户点击取消');
  499. }
  500. }
  501. });
  502. } else {
  503. uni.showToast({
  504. title: error
  505. })
  506. }
  507. })
  508. },
  509. submit() {
  510. if (!this.submitForm.channelNo) {
  511. uni.showToast({
  512. title: '请先选择充电通道'
  513. })
  514. return
  515. }
  516. var obj = this.list.find(item => {
  517. return item.channelNo == this.submitForm.channelNo
  518. })
  519. if (!obj || obj.status != 0) {
  520. uni.showToast({
  521. title: '当前设备不可选'
  522. })
  523. return
  524. }
  525. if( this.listTypeIndex==0){
  526. this.showmodel = true;
  527. }else{
  528. this.confirm(true)
  529. }
  530. },
  531. showTips() {
  532. this.showPriceList = true
  533. }
  534. },
  535. onShow() {
  536. if (this.isReady) {
  537. if (this.id) {
  538. this.carhelp.set("qr-default-id", this.id);
  539. } else {
  540. //用于支付后返回系统 -- 点金计划
  541. this.id = this.carhelp.get("qr-default-id");
  542. }
  543. this.init()
  544. }
  545. }
  546. }
  547. </script>
  548. <style>
  549. page {
  550. background-color: #f7f7f7;
  551. }
  552. </style>
  553. <style lang="scss" scoped>
  554. .showmodel {
  555. margin-left: 20px;
  556. margin-right: 20px;
  557. p {
  558. display: inline-block;
  559. width: 100px;
  560. }
  561. }
  562. .u-tr{
  563. .u-td{
  564. font-size: 24rpx !important;
  565. }
  566. }
  567. .u-tr1{
  568. .u-td{
  569. font-size: 28rpx !important;
  570. }
  571. }
  572. .u-td1{
  573. text-align: left !important;
  574. }
  575. .u-tr:nth-child(even){
  576. background-color: rgba(245, 245, 245, 1);
  577. .u-td{
  578. border:rgba(245, 245, 245, 1);
  579. background-color: rgba(245, 245, 245, 1);
  580. }
  581. }
  582. .priceListMain{
  583. p{
  584. font-size: 24rpx;
  585. }
  586. .showPriceList {
  587. margin-left: 20px;
  588. margin-right: 20px;
  589. span {
  590. float: right;
  591. }
  592. }
  593. }
  594. .slot-wrap {
  595. display: flex;
  596. align-items: center;
  597. justify-content: space-between;
  598. flex: 1;
  599. }
  600. .navbar-right {
  601. display: flex;
  602. margin-right: 20rpx;
  603. align-items: center;
  604. }
  605. .charge {
  606. padding: 15px;
  607. background-color: #fff;
  608. margin-bottom: 10px;
  609. }
  610. .chargeRadio {
  611. display: flex;
  612. justify-content: space-between;
  613. align-items: center;
  614. width: 100%;
  615. .chargeRadio-text {
  616. margin-left: 5px;
  617. }
  618. }
  619. .chargeTime {
  620. display: flex;
  621. overflow: scroll;
  622. padding-bottom: 15px;
  623. .chargeTime-item {
  624. border: 1px solid #1677ff;
  625. border-radius: 50%;
  626. min-width: 56px;
  627. height: 56px;
  628. text-align: center;
  629. line-height: 56px;
  630. margin-right: 20px;
  631. }
  632. .chargeTime-first {
  633. line-height: 20px !important;
  634. padding-top: 6px;
  635. margin-right: 20px;
  636. }
  637. .chargeTime-active {
  638. color: #fff;
  639. background-color: #1677ff;
  640. }
  641. }
  642. .chargeTime-text {
  643. border-top: 1px solid #f7f7f7;
  644. padding-top: 15px;
  645. display: flex;
  646. align-items: center;
  647. span {
  648. margin-left: 20px;
  649. color: #1677ff;
  650. }
  651. }
  652. .chargeInfo {
  653. .chargeInfo-row {
  654. display: flex;
  655. align-items: center;
  656. justify-content: space-between;
  657. margin-bottom: 10px;
  658. p {
  659. color: #999;
  660. }
  661. h4 {
  662. font-weight: normal;
  663. }
  664. span {
  665. color: #1677ff;
  666. margin-right: 5px;
  667. }
  668. }
  669. }
  670. .chargeMain {
  671. display: flex;
  672. flex-wrap: wrap;
  673. justify-content: space-between;
  674. margin-top: 20px;
  675. .chargeMain-item {
  676. width: 18%;
  677. text-align: center;
  678. padding: 10px;
  679. border: 1px solid #1677ff;
  680. margin-bottom: 10px;
  681. border-radius: 10px;
  682. color: #1677ff;
  683. }
  684. .active {
  685. background-color: #1677ff;
  686. color: #fff;
  687. }
  688. .fault {
  689. background-color: #e1e1e1;
  690. color: #666;
  691. border: 1px solid #ccc;
  692. }
  693. .occupy {
  694. color: #FF4F3F;
  695. border: 1px solid #FF4F3F;
  696. }
  697. }
  698. .foot-btn {
  699. padding: 10px;
  700. position: fixed;
  701. left: 0;
  702. right: 0;
  703. bottom: 0;
  704. background-color: #fff;
  705. }
  706. .recharge {
  707. padding: 16px;
  708. // padding-bottom: 80px;
  709. .title {
  710. font-size: 16px;
  711. position: relative;
  712. }
  713. p {
  714. color: #666;
  715. margin-top: 4px;
  716. }
  717. .self-stop.active {
  718. background-color: #EFFFF7;
  719. border-color: #00B962;
  720. color: #00B962;
  721. }
  722. .rechargeMain {
  723. display: flex;
  724. flex-wrap: wrap;
  725. // justify-content: space-between;
  726. margin-top: 12px;
  727. margin-bottom: 5px;
  728. .recharge-item {
  729. .u-input {
  730. text-align: center !important;
  731. }
  732. width: 31%;
  733. border: 1px solid #e3e3e3;
  734. padding: 10px 0;
  735. border-radius: 4px;
  736. text-align: center;
  737. margin-bottom: 10px;
  738. position: relative;
  739. margin-left: 5px;
  740. font-size: 16px;
  741. }
  742. .active {
  743. background-color: #EFFFF7;
  744. border-color: #00B962;
  745. color: #00B962;
  746. }
  747. }
  748. .self-stop {
  749. width: 105px;
  750. height: 48px;
  751. line-height: 48px;
  752. border-radius: 4px;
  753. color: #101010;
  754. font-size: 16px;
  755. text-align: center;
  756. font-family: Arial;
  757. border: 1px solid rgba(227, 227, 227, 100);
  758. margin-top: 12px;
  759. }
  760. }
  761. .recharge-input {
  762. margin-top: 8px;
  763. margin-bottom: 32px;
  764. }
  765. .recharge-radio {
  766. margin-top: 10px;
  767. .recharge-radio-item {
  768. display: flex;
  769. align-items: center;
  770. }
  771. .recharge-radio-name {
  772. margin-left: 8px;
  773. }
  774. }
  775. .subsection-class:after {
  776. content: "";
  777. position: absolute;
  778. left: 10px;
  779. width: 3px;
  780. height: 12px;
  781. // top: 50%;
  782. margin-top: 5px;
  783. background: #3385FF;
  784. }
  785. .subsection-class{
  786. font-size: 16px;
  787. font-weight: bold;
  788. }
  789. </style>