index.vue 24 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054
  1. <template>
  2. <view class="pageBox" :style="colorStyle">
  3. <view class="userOff" v-if="actionCartItem.id">
  4. <view class="navBox">
  5. <view class="acea-row row-between-wrapper topIconBox">
  6. <navigator url="/pages/renttab/index">
  7. <image class="topIcon" src="../../../static/images/controller_witchShop.png" mode="widthFix">
  8. </image>
  9. </navigator>
  10. <view v-if="actionCartItem" class="clamp padding-l-10 padding-r-10">
  11. {{actionCartItem.machine_name||''}}
  12. </view>
  13. <image @click="navTo('/pages/index/notice')" class="topIcon"
  14. src="../../../static/images/controller_witchMessage.png" mode="widthFix">
  15. </image>
  16. <view class="topIconNum acea-row row-between-wrapper" v-if="notify>0">
  17. <text>
  18. {{notify}}
  19. </text>
  20. </view>
  21. </view>
  22. </view>
  23. <view class="actionBox">
  24. <map class="map" :markers="[{
  25. id:1,
  26. longitude:actionCartItem.longitude||121.420761,
  27. latitude: actionCartItem.latitude||28.65641,
  28. iconPath:'../../static/images/location.png',
  29. width:30,
  30. height:35
  31. }]" :longitude='actionCartItem.longitude||121.420761' :latitude='actionCartItem.latitude||28.65641'></map>
  32. <view class="timeBox" v-if="actionCartItem.is_available==1">
  33. <view class="rightTip rowContentBox acea-row row-between-wrapper">
  34. <view class="dayBox acea-row row-middle">
  35. <view class="oldDay ">
  36. 编号:
  37. </view>
  38. <view class="tip">
  39. {{actionCartItem.machine_no}}
  40. </view>
  41. </view>
  42. <view class=" dayBox acea-row row-middle" v-if="actionCartItem.plate_number">
  43. <view class="oldDay ">
  44. 车牌号:
  45. </view>
  46. <view class="tip">
  47. {{actionCartItem.plate_number}}
  48. </view>
  49. </view>
  50. </view>
  51. </view>
  52. </view>
  53. <view class="content acea-row row-middle">
  54. <view class="contentButtom flexCenter">
  55. <view class="buttomBox acea-row row-between-wrapper">
  56. <view class="leftBox">
  57. <view class="buttom buttomLg ">
  58. <view @click="authSet" class="rowContentBox flexCenter lineBorder">
  59. <view class="tipMen"></view>
  60. <view class="centerTextBox">
  61. <view>
  62. <image class="tipIcon" src="../../../static/images/controller_shouquan.png"
  63. mode="aspectFit"></image>
  64. </view>
  65. <view class="margin-t-10">
  66. 授权
  67. </view>
  68. </view>
  69. </view>
  70. <view class="rightPaddingBg">
  71. </view>
  72. <view class="buttomPaddingBg">
  73. </view>
  74. </view>
  75. <view class="leftCenterButtom buttom" @click="navTo('/pages/users/user_payment/index')">
  76. <view class="rowContentBox flexCenter lineBorder">
  77. <view class="tipMen"></view>
  78. <view style="z-index: 99;">
  79. <view>
  80. </view>
  81. <view>
  82. </view>
  83. </view>
  84. </view>
  85. <view class="topBageBg"></view>
  86. <view class="bottomBageBg"></view>
  87. </view>
  88. <view class="buttomLg buttom">
  89. <view @click="navTo('/pages/user/reportForRepair/Report?id='+actionCartItem.car_number)"
  90. class="rowContentBox flexCenter lineBorder">
  91. <view class="tipMen"></view>
  92. <view class="centerTextBox">
  93. <view>
  94. <image class="tipIcon" src="../../../static/images/controller_baoxiu.png"
  95. mode="aspectFit"></image>
  96. </view>
  97. <view class="margin-t-10">
  98. 报修
  99. </view>
  100. </view>
  101. </view>
  102. <view class="topPaddingBg"></view>
  103. <view class="rightPaddingBg"></view>
  104. </view>
  105. </view>
  106. <view class="centerBgBox">
  107. <view class="centerBg lineBorder borderRadiusAll">
  108. <view class="borTopHide"></view>
  109. <view class="borBottomHide"></view>
  110. </view>
  111. <view class="bgGray borderRadiusAll"></view>
  112. <view class="contentOrg borderRadiusAll">
  113. <view class="contentOrgBg borderRadiusAll centerBox lineBorder2 flexCenter">
  114. <view class="centerBoxJb borderRadiusAll lineBorder2">
  115. <view class="boxBgJb borderRadiusAll flexCenter">
  116. <view class="flex-center">
  117. <view class="iconButtomBox borderRadiusAll flexCenter"
  118. :class="{greedBg:actionCartItem.status==0||actionCartItem.status==2}"
  119. @click="setCarType((actionCartItem.status==2||actionCartItem.status==0)?'unlock':'lock')">
  120. <view class="mr borderRadiusAll "></view>
  121. <view class="iconButtomJb">
  122. <view>
  123. <image class="img"
  124. src="../../../static/images/controller_qidong.png"
  125. mode="aspectFit"></image>
  126. </view>
  127. <view class="margin-t-10" v-if="actionCartItem.status==0">
  128. 启动
  129. </view>
  130. <view class="margin-t-10" v-else>
  131. 关闭
  132. </view>
  133. </view>
  134. </view>
  135. </view>
  136. </view>
  137. </view>
  138. <view class="line left"></view>
  139. <view class="line right"></view>
  140. <view @click="alertCarList=true" class="topButtomTipBox posbuttom flexCenter">
  141. <view class="centerTextBox">
  142. <view>
  143. <image class="tipIcon"
  144. src="../../../static/images/controller_huanche.png"
  145. mode="aspectFit"></image>
  146. </view>
  147. <view class="margin-t-10">
  148. 换车
  149. </view>
  150. </view>
  151. </view>
  152. <view class="rightButtomTipBox posbuttom flexCenter" @click="setCarType('find')">
  153. <view class="centerTextBox">
  154. <view>
  155. <image class="tipIcon"
  156. src="../../../static/images/controller_xunche.png" mode="aspectFit">
  157. </image>
  158. </view>
  159. <view class="margin-t-10">
  160. 寻车
  161. </view>
  162. </view>
  163. </view>
  164. <view @click="setCarType('deblock')"
  165. class="bottomButtomTipBox posbuttom flexCenter">
  166. <view class="centerTextBox">
  167. <view>
  168. <image class="tipIcon"
  169. src="../../../static/images/controller_dingwei.png"
  170. mode="aspectFit"></image>
  171. </view>
  172. <view class="margin-t-10">
  173. 解锁
  174. </view>
  175. </view>
  176. </view>
  177. <view class="leftButtomTipBox posbuttom flexCenter" @click="setCarType('cushion')">
  178. <view class="centerTextBox">
  179. <view>
  180. <image class="tipIcon"
  181. src="../../../static/images/controller_kaisuo.png" mode="aspectFit">
  182. </image>
  183. </view>
  184. <view class="margin-t-10">
  185. 开座垫
  186. </view>
  187. </view>
  188. </view>
  189. </view>
  190. </view>
  191. </view>
  192. <view class="rightBox">
  193. <view class="rightButtom buttom acea-row row-between-wrapper">
  194. <view class="centerTextBox">
  195. <view>
  196. {{actionCartItem.residue||0}}%
  197. </view>
  198. <view>
  199. <image class="tipIcon" src="../../../static/images/controller_dianchi.png"
  200. mode="aspectFit"></image>
  201. </view>
  202. </view>
  203. <view class="rightElectric flexCenter">
  204. <view class="electric" v-for="(ls,ind) in residueList"
  205. :class="{greedBg:actionCartItem.residue>ls}" :key="ind"></view>
  206. </view>
  207. </view>
  208. <view class=" buttomLg buttom"
  209. @click="navTo('/pages/rent/control/route?id='+actionCartItem.id)">
  210. <view class="topBageBg"></view>
  211. <view class="rowContentBox flexCenter lineBorder">
  212. <view class="tipMen"></view>
  213. <view class="centerTextBox repair ">
  214. <view>
  215. <image class="tipIcon" src="../../../static/images/controller_xincheng.png"
  216. mode="aspectFit"></image>
  217. </view>
  218. <view class="margin-t-10">
  219. 行程
  220. </view>
  221. </view>
  222. </view>
  223. <view class="topPaddingBg"></view>
  224. <view class="leftPaddingBg"></view>
  225. </view>
  226. </view>
  227. </view>
  228. </view>
  229. </view>
  230. </view>
  231. <view v-if="actionCartItem.id" class="payment" :class="{on:alertCarList}">
  232. <view class="cartListAlertButtom">
  233. <view class="cartTitle acea-row row-between-wrapper">
  234. <view>
  235. 请选择更换的车辆
  236. </view>
  237. <image @click="alertCarList=false" class="exit" src="../../../static/images/goodsExit.png"
  238. mode="scaleToFill">
  239. </image>
  240. </view>
  241. <view class="item" v-for="(item,ind) in myCartList"
  242. @click="()=>{alertCarList=false,actionCartItem=item}" :class="{action:item.id==actionCartItem.id}">
  243. <view class="acea-row">
  244. <image class="img" src="../../rent/static/cart.png" mode="scaleToFill"></image>
  245. <view class="title line2">
  246. {{item.machine_name}}
  247. </view>
  248. </view>
  249. <view class="machine ">
  250. <view class="acea-row row-between">
  251. <view class="it">
  252. 当前位置:{{item.address?item.address:'未定位'}}
  253. </view>
  254. <view class="status">
  255. 电量:{{item.residue}}%
  256. </view>
  257. </view>
  258. </view>
  259. <view class="machine acea-row row-between-wrapper">
  260. <view class="acea-row row-left">
  261. <view class="it">
  262. 编号:
  263. </view>
  264. <view class="code">
  265. {{item.machine_no}}
  266. </view>
  267. </view>
  268. <view class="acea-row row-right" v-if="item.plate_number">
  269. <view class="it">
  270. 车牌号:
  271. </view>
  272. <view class="code">
  273. {{item.plate_number}}
  274. </view>
  275. </view>
  276. </view>
  277. <view v-if="item.status==0" class="text_red tip ">
  278. 关锁
  279. </view>
  280. <view v-if="item.status==1" class="text_blue tip">
  281. 开锁
  282. </view>
  283. <view v-if="item.status==2" class="text_greed tip">
  284. 解锁
  285. </view>
  286. </view>
  287. <view style="height: 1px;"></view>
  288. </view>
  289. </view>
  290. <pageFoot></pageFoot>
  291. </view>
  292. </template>
  293. <script>
  294. import {
  295. getMyCar,
  296. getLock
  297. } from '@/api/rent.js';
  298. import {
  299. getUserInfo,
  300. } from "@/api/user.js";
  301. import {
  302. toLogin
  303. } from "@/libs/login.js";
  304. import {
  305. mapGetters
  306. } from 'vuex';
  307. import pageFoot from '@/components/pageFooter/index.vue';
  308. import colors from '@/mixins/color.js';
  309. export default {
  310. mixins: [colors],
  311. props: {
  312. notify: {
  313. type: Number,
  314. default: 0
  315. },
  316. },
  317. components: {
  318. pageFoot
  319. },
  320. data() {
  321. return {
  322. // 我的车辆
  323. myCartList: [],
  324. ladingCart: false, //判断是否已经加载过我的车辆
  325. // #ifdef H5
  326. iconPath: '../../static/image/location.png', //定位图标地址
  327. // #endif
  328. // #ifndef H5
  329. iconPath: '../../../static/image/location.png', //定位图标地址
  330. // #endif
  331. timeOut: '', //用于存放调用定时获取对象数据
  332. reachangeAlert: false, //判断是否已经提示过充值
  333. alertCarList: false,
  334. actionCartItem: {
  335. id: 0
  336. },
  337. // 进度百分比
  338. residueList: [91, 83, 75, 66, 58, 50, 41, 33, 24, 16, 8, 0],
  339. };
  340. },
  341. watch: {},
  342. computed: {
  343. ...mapGetters(['isLogin', 'uid']),
  344. },
  345. created() {
  346. if (this.isLogin) {
  347. this.getCarInfo();
  348. } else {
  349. toLogin();
  350. }
  351. },
  352. methods: {
  353. changeCart() {
  354. },
  355. navTo(url) {
  356. if (this.isLogin) {
  357. uni.navigateTo({
  358. url,
  359. });
  360. } else {
  361. toLogin();
  362. }
  363. },
  364. // 设置车锁状态
  365. async setCarType(type) {
  366. uni.showLoading({
  367. title: '提交中',
  368. mask: true
  369. });
  370. const bool = await this.$util.$L.getLocation();
  371. // 判断是否获取地址失败
  372. if (!bool) {
  373. uni.hideLoading()
  374. uni.showModal({
  375. title: '提示',
  376. content: '未获取地址数据,请授权后再试',
  377. cancelText: '取消',
  378. confirmText: '授权',
  379. success: res => {
  380. if (res.confirm) {
  381. this.setCarType(type)
  382. }
  383. },
  384. });
  385. return;
  386. }
  387. console.log(uni.getStorageSync('CACHE_LONGITUDE'));
  388. console.log(uni.getStorageSync('CACHE_LATITUDE'));
  389. getLock({
  390. type: type,
  391. 'machine_no': this.actionCartItem.machine_no,
  392. 'longitude': uni.getStorageSync('CACHE_LONGITUDE'),
  393. 'latitude': uni.getStorageSync('CACHE_LATITUDE')
  394. }).then((res) => {
  395. console.log(res);
  396. uni.hideLoading()
  397. }).catch((res) => {
  398. uni.hideLoading()
  399. uni.showToast({
  400. title: res,
  401. icon: 'error'
  402. });
  403. })
  404. },
  405. // 父元素启动监听
  406. onStartGetCartInfo() {
  407. if (this.timeOut) {
  408. this.outGetCartInfo();
  409. }
  410. this.onGetCartInfo()
  411. },
  412. // 关闭定时获取车辆信息
  413. outGetCartInfo() {
  414. clearInterval(this.timeOut)
  415. },
  416. // 获取车辆数据
  417. onGetCartInfo() {
  418. this.getCarInfo();
  419. this.timeOut = setInterval((e) => {
  420. this.getCarInfo();
  421. }, 60000)
  422. },
  423. //获取车辆信息
  424. getCarInfo() {
  425. getMyCar({}).then((e) => {
  426. this.myCartList = e.data;
  427. this.actionCartItem = e.data[0]
  428. console.log(e)
  429. }).catch((e) => {
  430. console.log(e);
  431. })
  432. },
  433. // 判断是否有权限授权车辆
  434. authSet() {
  435. if ((+this.actionCartItem.uid) == (+this.uid)) {
  436. this.navTo('/pages/rent/control/authList?id=' + this.actionCartItem.id)
  437. } else {
  438. uni.showModal({
  439. title: '提示',
  440. content: '该车辆是他人授权给您的车辆您无权二次授权',
  441. showCancel: false,
  442. });
  443. }
  444. },
  445. },
  446. };
  447. </script>
  448. <style lang="scss">
  449. $paddingJg:40rpx;
  450. // 按钮黑色背景
  451. $bgBlack:#161727;
  452. // 底色
  453. $contentBg:#373c5a;
  454. // 按钮包裹框背景颜色
  455. $maxBoxBg:#1f2136;
  456. .pageBox {
  457. height: 100vh;
  458. padding-bottom: 45px;
  459. }
  460. .flexCenter {
  461. display: flex;
  462. justify-content: center;
  463. align-items: center;
  464. }
  465. .navBox {
  466. /* #ifdef APP */
  467. padding-top: var(--status-bar-height);
  468. padding-bottom: 30rpx;
  469. /* #endif */
  470. /* #ifdef H5 || MP */
  471. padding-top: 30rpx;
  472. padding-bottom: 30rpx;
  473. /* #endif */
  474. background-color: $contentBg;
  475. flex-shrink: 0;
  476. }
  477. .topIconBox {
  478. padding: 0 $paddingJg;
  479. position: relative;
  480. color: #FFFFFF;
  481. font-size: $uni-font-size-base + 2rpx;
  482. .topIconNum {
  483. position: absolute;
  484. top: -10rpx;
  485. right: 20rpx;
  486. font-size: $uni-font-size-sm;
  487. min-width: 30rpx;
  488. min-height: 30rpx;
  489. border-radius: 100rpx;
  490. background-color: $uni-color-error;
  491. padding: 5rpx;
  492. justify-content: center;
  493. }
  494. .topIcon {
  495. transform: rotateZ(-90deg);
  496. width: 45rpx;
  497. height: 45rpx;
  498. flex-shrink: 0;
  499. }
  500. }
  501. .userOff {
  502. display: flex;
  503. flex-direction: column;
  504. height: 100%;
  505. .actionBox {
  506. background-color: #0f1025;
  507. flex-shrink: 1;
  508. flex-grow: 1;
  509. text-align: center;
  510. height: 400rpx;
  511. position: relative;
  512. flex-direction: column;
  513. display: flex;
  514. .map {
  515. height: calc(100% - 80rpx);
  516. width: 100%;
  517. }
  518. .timeBox {
  519. color: #FFFFFF;
  520. width: 100%;
  521. font-size: $uni-font-size-base;
  522. font-weight: bold;
  523. flex-shrink: 0;
  524. .rightTip {
  525. padding: 20rpx;
  526. }
  527. .dayBox {
  528. z-index: 1;
  529. line-height: 1;
  530. font-size: $uni-font-size-sm;
  531. .tip {
  532. color: #75EFFA;
  533. background-color: rgba($color: #75EFFA, $alpha: 0.2);
  534. padding: 10rpx 10rpx;
  535. border-radius: 10rpx;
  536. }
  537. }
  538. .oldDay {
  539. padding: 6rpx 10rpx;
  540. text-align: left;
  541. font-size: $uni-font-size-sm - 2rpx;
  542. color: #FFF;
  543. }
  544. }
  545. }
  546. .content {
  547. flex-shrink: 0;
  548. }
  549. .lineBorder {
  550. border: 1px solid #aaaec7;
  551. }
  552. .lineBorder2 {
  553. border: 1px solid #b7cbf2;
  554. }
  555. .rowContentBox {
  556. overflow: hidden;
  557. background-color: $contentBg;
  558. .tipMen {
  559. position: absolute;
  560. top: 0;
  561. left: 0;
  562. transform-origin: top left;
  563. margin-left: -40rpx;
  564. transform: rotateZ(-45deg);
  565. height: 100%;
  566. width: 100%;
  567. background-image: linear-gradient(to bottom, rgba(69, 75, 113, 1) 0%, transparent 100%);
  568. }
  569. }
  570. .rowContentBox,
  571. .centerBox {
  572. height: 100%;
  573. width: 100%;
  574. position: relative;
  575. }
  576. .contentButtom {
  577. width: 750rpx;
  578. height: 100%;
  579. background-color: $maxBoxBg;
  580. font-size: $uni-font-size-base;
  581. line-height: 1;
  582. .centerTextBox {
  583. text-align: center;
  584. margin-left: -70rpx;
  585. }
  586. .tipIcon {
  587. width: 46rpx;
  588. height: 46rpx;
  589. }
  590. .buttomBox {
  591. width: 750rpx;
  592. padding: 40rpx;
  593. color: #B2B9D3;
  594. .buttom {
  595. padding: 10rpx;
  596. background-color: $bgBlack;
  597. position: relative;
  598. .rightPaddingBg,
  599. .topPaddingBg,
  600. .leftPaddingBg,
  601. .buttomPaddingBg {
  602. position: absolute;
  603. background-color: $bgBlack;
  604. z-index: 11;
  605. }
  606. .topPaddingBg,
  607. .buttomPaddingBg {
  608. height: 12rpx;
  609. width: 180rpx;
  610. left: 0;
  611. }
  612. .rightPaddingBg,
  613. .leftPaddingBg {
  614. height: 180rpx;
  615. width: 10rpx;
  616. top: 0rpx;
  617. }
  618. .topPaddingBg {
  619. top: -1px;
  620. }
  621. .buttomPaddingBg {
  622. button: 0rpx;
  623. }
  624. .rightPaddingBg {
  625. right: 0rpx;
  626. }
  627. .leftPaddingBg {
  628. left: 0;
  629. }
  630. .topBageBg,
  631. .bottomBageBg {
  632. height: 30rpx;
  633. width: 180rpx;
  634. background-color: $maxBoxBg;
  635. position: absolute;
  636. z-index: 10;
  637. }
  638. .topBageBg {
  639. top: -30rpx;
  640. }
  641. .bottomBageBg {
  642. bottom: -30rpx;
  643. }
  644. }
  645. .centerBox {
  646. // background-image: linear-gradient(to bottom, #49548d 0%, transparent 100%);
  647. background-color: rgba($color: #49548d, $alpha: 0.5);
  648. box-shadow: 0px 0px 30rpx rgba($color: #5a6fdb, $alpha: 0.5) inset;
  649. }
  650. .buttomLg {
  651. width: 180rpx;
  652. height: 180rpx;
  653. .repair {
  654. margin-left: 40rpx;
  655. padding-left: 30rpx;
  656. }
  657. }
  658. .leftBox {
  659. .leftCenterButtom {
  660. margin: 30rpx 0;
  661. width: 80rpx;
  662. height: 120rpx;
  663. background-size: 80rpx 120rpx;
  664. z-index: 99;
  665. .tipMen {
  666. margin-left: 0rpx;
  667. }
  668. }
  669. }
  670. .centerBgBox {
  671. flex-shrink: 1;
  672. position: relative;
  673. .borderRadiusAll {
  674. border-radius: 1000rpx;
  675. }
  676. .bgGray {
  677. position: absolute;
  678. top: 0;
  679. left: 0;
  680. background-color: $maxBoxBg;
  681. width: 530rpx;
  682. height: 530rpx;
  683. z-index: 20;
  684. left: -265rpx;
  685. top: -265rpx;
  686. }
  687. .contentOrg {
  688. position: absolute;
  689. background-color: $bgBlack;
  690. width: 480rpx;
  691. height: 480rpx;
  692. left: -240rpx;
  693. top: -240rpx;
  694. z-index: 99;
  695. padding: 20rpx;
  696. .contentOrgBg {
  697. width: 100%;
  698. height: 100%;
  699. position: relative;
  700. background-color: $contentBg;
  701. background-image: linear-gradient(to bottom, rgba($color: #454b71, $alpha: 1) 0%, transparent 25%, transparent 75%, rgba($color: #454b71, $alpha: 1) 100%);
  702. .posbuttom {
  703. position: absolute;
  704. .centerTextBox {
  705. margin: 0;
  706. }
  707. }
  708. .topButtomTipBox {
  709. top: 0;
  710. padding-bottom: 20rpx;
  711. }
  712. .bottomButtomTipBox {
  713. bottom: 0;
  714. padding-top: 20rpx;
  715. }
  716. .bottomButtomTipBox,
  717. .topButtomTipBox {
  718. width: 200rpx;
  719. height: 140rpx;
  720. margin: 0 auto;
  721. }
  722. .rightButtomTipBox,
  723. .leftButtomTipBox {
  724. width: 140rpx;
  725. height: 200rpx;
  726. }
  727. .rightButtomTipBox {
  728. padding-left: 20rpx;
  729. right: 0;
  730. }
  731. .leftButtomTipBox {
  732. padding-right: 20rpx;
  733. left: 0;
  734. }
  735. .line {
  736. position: absolute;
  737. width: calc(440rpx + 2px);
  738. height: 20rpx;
  739. border-top: 1px solid #b7cbf2;
  740. border-bottom: 1px solid #b7cbf2;
  741. border-left: 1px solid $bgBlack;
  742. border-right: 1px solid $bgBlack;
  743. background-color: $bgBlack;
  744. box-shadow: 0px 0px 30rpx rgba($color: #5a6fdb, $alpha: 0.5);
  745. &.left {
  746. transform: rotateZ(45deg);
  747. }
  748. &.right {
  749. transform: rotateZ(-45deg);
  750. }
  751. }
  752. .centerBoxJb {
  753. width: 200rpx;
  754. height: 200rpx;
  755. background-color: $bgBlack;
  756. box-shadow: 0px 0px 30rpx rgba($color: #5a6fdb, $alpha: 0.5);
  757. position: relative;
  758. .boxBgJb {
  759. background-color: $bgBlack;
  760. width: 100%;
  761. height: 100%;
  762. position: absolute;
  763. z-index: 1;
  764. .iconButtomBox {
  765. font-size: $uni-font-size-base;
  766. color: #FFFFFF;
  767. font-weight: bold;
  768. width: 160rpx;
  769. height: 160rpx;
  770. background-color: #DEDEDE;
  771. text-align: center;
  772. background-color: #F6C531;
  773. position: relative;
  774. &.greedBg {
  775. background-color: $uni-color-success;
  776. }
  777. .mr {
  778. position: absolute;
  779. height: 100%;
  780. width: 100%;
  781. background-image: linear-gradient(to bottom, rgba($color: #FFFFFF, $alpha: 0.2) 0%, rgba($color: #FFFFFF, $alpha: 0) 50%, rgba($color: #FFFFFF, $alpha: 0) 100%);
  782. box-shadow: 0px 0px 20rpx rgba($color: #FFFFFF, $alpha: 0.5) inset;
  783. }
  784. .iconButtomJb {
  785. .img {
  786. width: 75rpx;
  787. height: 75rpx;
  788. }
  789. }
  790. }
  791. }
  792. }
  793. }
  794. }
  795. .centerBg {
  796. position: absolute;
  797. left: -280rpx;
  798. top: -280rpx;
  799. background-color: $bgBlack;
  800. width: 560rpx;
  801. height: 560rpx;
  802. z-index: 10;
  803. .borTopHide {
  804. top: -10rpx;
  805. left: 120rpx;
  806. }
  807. .borBottomHide,
  808. .borTopHide {
  809. position: absolute;
  810. height: 100rpx;
  811. width: 316rpx;
  812. background-color: $maxBoxBg;
  813. }
  814. .borBottomHide {
  815. left: 120rpx;
  816. bottom: -10rpx;
  817. }
  818. }
  819. }
  820. .rightBox {
  821. flex-shrink: 0;
  822. .rightElectric {
  823. flex-direction: column;
  824. padding-right: 6rpx;
  825. .electric {
  826. width: 40rpx;
  827. height: 10rpx;
  828. // border-radius: 10rpx;
  829. background-color: $maxBoxBg;
  830. margin-bottom: 16rpx;
  831. // &:last-child{
  832. // border-bottom-left-radius: 10rpx;
  833. // border-bottom-right-radius: 10rpx;
  834. // }
  835. // &:first-child{
  836. // border-top-left-radius: 10rpx;
  837. // border-top-right-radius: 10rpx;
  838. // }
  839. &.greedBg {
  840. background-color: $uni-color-success;
  841. }
  842. &.yellowBg {
  843. background-color: #F6C531;
  844. }
  845. &.redGb {
  846. background-color: #DE2C2C;
  847. }
  848. }
  849. }
  850. .rightButtom {
  851. position: relative;
  852. z-index: 11;
  853. margin-bottom: 30rpx;
  854. width: 180rpx;
  855. height: 330rpx;
  856. padding-left: 30rpx;
  857. padding-top: 16rpx;
  858. align-items: flex-start;
  859. .centerTextBox {
  860. text-align: right;
  861. margin-left: 16rpx;
  862. }
  863. }
  864. }
  865. }
  866. }
  867. }
  868. .cartListAlertButtom {
  869. position: relative;
  870. padding-top: 20rpx;
  871. padding: 30rpx;
  872. overflow: hidden;
  873. z-index: 999;
  874. .cartTitle {
  875. margin: 0 30rpx;
  876. margin-bottom: 30rpx;
  877. font-size: $uni-font-size-lg;
  878. font-weight: bold;
  879. color: #FFF;
  880. .exit {
  881. width: 50rpx;
  882. height: 50rpx;
  883. }
  884. }
  885. .item {
  886. position: relative;
  887. background-color: var(--view-theme-16);
  888. padding: 30rpx;
  889. border-radius: 10rpx;
  890. margin-bottom: 20rpx;
  891. overflow: hidden;
  892. .title {
  893. font-weight: bold;
  894. font-size: $uni-font-size-lg;
  895. color: #fff;
  896. padding-left: 10rpx;
  897. }
  898. .machine {
  899. font-size: $uni-font-size-sm;
  900. color: #999999;
  901. margin-top: 20rpx;
  902. .code {
  903. color: var(--view-priceColor);
  904. background-color: rgba(#75EFFA, 0.2);
  905. padding: 5rpx 10rpx;
  906. border-radius: 10rpx;
  907. }
  908. }
  909. .img {
  910. width: 40rpx;
  911. height: 40rpx;
  912. }
  913. .tip {
  914. position: absolute;
  915. top: 0;
  916. right: 0;
  917. padding: 5rpx 20rpx;
  918. font-size: 20rpx;
  919. border-bottom-left-radius: 10rpx;
  920. &.text_greed {
  921. color: #49D8A8;
  922. background-color: rgba(#49D8A8, 0.2);
  923. }
  924. &.text_red {
  925. color: rgba(254, 92, 45, 1);
  926. background-color: rgba(rgba(254, 92, 45, 1), 0.2);
  927. }
  928. &.text_blue {
  929. color: #1db0fc;
  930. background-color: rgba(#1db0fc, 0.2);
  931. }
  932. }
  933. }
  934. }
  935. .payment {
  936. position: fixed;
  937. bottom: 45px;
  938. left: 0;
  939. width: 100%;
  940. background-color: var(--view-theme);
  941. border-top-left-radius: 40rpx;
  942. border-top-right-radius: 40rpx;
  943. z-index: 999;
  944. transition: all 0.3s cubic-bezier(0.25, 0.5, 0.5, 0.9);
  945. border: 1px solid #999;
  946. transform: translate3d(0, 100%, 0);
  947. &.on {
  948. transform: translate3d(0, 0, 0);
  949. }
  950. }
  951. </style>