index.vue 23 KB

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