index.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847
  1. <template>
  2. <view :data-theme="theme" class="user_payment">
  3. <form @submit="submitSub" report-submit='true'>
  4. <view class="payment-top acea-row row-column row-center-wrapper">
  5. <span class="name1">我的余额</span>
  6. <view class="pic">
  7. {{$store.getters.priceUnit}}<span class="pic-font semiBold">{{ nowMoney || 0 }}</span>
  8. </view>
  9. </view>
  10. <view v-if="!payShow" class="payment">
  11. <view class='tip picList'>
  12. <view class="pic-box pic-box-color acea-row row-center-wrapper row-column"
  13. :class="activePic === index ? 'pic-box-color-active' : ''" v-for="(item, index) in packageList"
  14. :key="index" @click="picCharge(index, item)">
  15. <view class="pic-number-pic">
  16. {{ item.price }}<span class="pic-number"> 币</span>
  17. </view>
  18. <view class="pic-number" v-if="item.giveMoney > 0">赠送:{{ item.giveMoney }} 币</view>
  19. </view>
  20. <view class="pic-box pic-box-color acea-row row-center-wrapper"
  21. :class="parseFloat(activePic)===parseFloat(packageList.length)?'pic-box-color-active':''"
  22. @click="picCharge(packageList.length)">
  23. <input type="digit" placeholder="其他" style="font-size: 32rpx;" placeholder-style="font-size:32rpx" v-model="money" @input="onInput($event)" maxlength="5"
  24. class="pic-box-money pic-number-pic uni-input" :placeholder-class="parseFloat(activePic) === parseFloat(packageList.length) ? 'placeColor':''"
  25. :class="parseFloat(activePic) === parseFloat(packageList.length) ? 'pic-box-color-active' : ''"
  26. @blur="addMoney()" />
  27. </view>
  28. <view class="tips-box">
  29. <view class="tips mt-30">注意事项:</view>
  30. <view class="tips-samll" v-for="item in noticeList" :key="item">
  31. {{ item }}--
  32. </view>
  33. </view>
  34. </view>
  35. <!-- #ifndef MP-->
  36. <view class='wrapper borRadius14 borderPad' v-if='!active'>
  37. <view class='item'>
  38. <view>支付方式</view>
  39. <view class='list'>
  40. <view class='payItem acea-row row-middle' :class='curActive==index ?"on":""'
  41. @tap='payItem(index)' v-for="(item,index) in cartArr" :key='index'
  42. v-if="item.payStatus==1">
  43. <view class='name acea-row row-center-wrapper'>
  44. <view class='iconfont animated'
  45. :class='(item.icon) + " " + (animated==true&&active==index ?"bounceIn":"")'>
  46. </view>
  47. {{item.name}}
  48. </view>
  49. <view class='tip'>{{item.title}}</view>
  50. </view>
  51. </view>
  52. </view>
  53. </view>
  54. <!-- #endif -->
  55. <button class='but' formType="submit"> {{active ? '立即转入': '立即充值' }}</button>
  56. <view class="alipaysubmit" v-html="formContent"></view>
  57. </view>
  58. <view v-if="payShow" class="payment db-payment">
  59. <view class="db-qrcode">
  60. <canvas canvas-id="qrcode" class="img"></canvas>
  61. </view>
  62. <view class="db-item">
  63. <view class="db-item-label">充值地址:</view>
  64. <view class="db-item-val" @click="copyData(payAccountAddress)">
  65. {{payAccountAddress}}
  66. <text style="color: #fc5445;">复制</text>
  67. </view>
  68. </view>
  69. <view class="db-item">
  70. <view class="db-item-label">充值金额:</view>
  71. <view class="db-item-val" @click="copyData(payMoney)">
  72. {{payMoney}}
  73. <text style="color: #fc5445;">复制</text>
  74. </view>
  75. </view>
  76. <view class="db-item">
  77. <view class="db-item-label">注意事项</view>
  78. <view class="db-item-tips">
  79. <view>1. 充值地址和充值金额必须与当前页面显示<text class="important">完全一致</text>,填写错误会导致充值失败,请仔细核对!</view>
  80. <view>2. 充值请选用<text class="important">sLGNS</text>支付。</view>
  81. <view>3. 链上交易有延迟,请耐心等待<text class="important">1-3分钟</text>后手动刷新。</view>
  82. <view>4. 若充值异常,请联系客服处理。</view>
  83. </view>
  84. </view>
  85. <button class='but' @click="payConfig">刷新余额</button>
  86. </view>
  87. </form>
  88. </view>
  89. </template>
  90. <script>
  91. // +----------------------------------------------------------------------
  92. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  93. // +----------------------------------------------------------------------
  94. // | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
  95. // +----------------------------------------------------------------------
  96. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  97. // +----------------------------------------------------------------------
  98. // | Author: CRMEB Team <admin@crmeb.com>
  99. // +----------------------------------------------------------------------
  100. import {
  101. rechargeRoutine,
  102. rechargeWechat,
  103. getRechargeApi,
  104. transferIn,
  105. appWechat,
  106. alipayFull,
  107. rechargeCreateApi
  108. } from '@/api/user.js';
  109. import {
  110. wechatQueryPayResult
  111. } from '@/api/order.js';
  112. import {
  113. toLogin
  114. } from '@/libs/login.js';
  115. import {
  116. mapGetters
  117. } from "vuex";
  118. import {
  119. Debounce
  120. } from '@/utils/validate.js'
  121. import {setThemeColor} from "../../../utils/setTheme";
  122. import uQRCode from '@/js_sdk/Sansnn-uQRCode/uqrcode.js'
  123. let app = getApp();
  124. export default {
  125. data() {
  126. let that = this;
  127. return {
  128. navRecharge: ['账户充值', '佣金转入'],
  129. active: 0,
  130. toPrice: '',
  131. placeholder: "0.00",
  132. payChannel: '',
  133. packageList: [],
  134. activePic: 0,
  135. money: "",
  136. numberPic: '',
  137. rechar_id: 0,
  138. noticeList: [],
  139. theme: app.globalData.theme,
  140. cartArr: [],
  141. payType: '', //支付方式
  142. openType: 1, //优惠券打开方式 1=使用
  143. curActive: 0, //支付方式切换
  144. animated: false,
  145. formContent: '',
  146. nowMoney: 0,
  147. payAccountAddress: '0xcA96Fee92B19E495e424f51932AFc6e923208De8',
  148. payMoney: '0.00',
  149. payQrcode: '',
  150. payShow: false
  151. };
  152. },
  153. computed: mapGetters(['isLogin', 'systemPlatform', 'userInfo']),
  154. watch: {
  155. isLogin: {
  156. handler: function(newV, oldV) {
  157. if (newV) {
  158. this.getRecharge();
  159. }
  160. },
  161. deep: true
  162. }
  163. },
  164. onLoad() {
  165. let bgColor = setThemeColor();
  166. uni.setNavigationBarColor({
  167. frontColor: '#ffffff',
  168. backgroundColor:bgColor,
  169. });
  170. if (this.isLogin) {
  171. this.getRecharge();
  172. this.payConfig();
  173. } else {
  174. toLogin();
  175. }
  176. },
  177. methods: {
  178. // 支付配置
  179. payConfig() {
  180. // 支付方式
  181. uni.showLoading({
  182. title: 'loading...'
  183. })
  184. this.$store.dispatch('getPayConfig').then((res) => {
  185. uni.hideLoading()
  186. this.nowMoney = res.userBalance;
  187. let cartArrs = res.payConfig.filter(e => e.value !== 'yue');
  188. this.cartArr = cartArrs || [];
  189. this.cartArr.push({
  190. name: "sLGNS支付",
  191. icon: "icon-ic_Money2",
  192. value: 'daibi',
  193. title: 'sLGNS支付',
  194. payStatus: 1
  195. })
  196. if (this.cartArr.length) {
  197. this.payType = this.cartArr[0].value;
  198. }
  199. });
  200. },
  201. onInput(e) {
  202. let val = e.target.value.replace(/(^\s*)|(\s*$)/g, "")
  203. if (!val) {
  204. this.val = '';
  205. return
  206. }
  207. var reg = /[^\d.]/g
  208. // 只能是数字和小数点,不能是其他输入
  209. val = val.replace(reg, "")
  210. // // 保证第一位只能是数字,不能是点
  211. val = val.replace(/^\./g, "");
  212. // // 小数只能出现1位
  213. val = val.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
  214. // // 小数点后面保留2位
  215. val = val.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3');
  216. this.$nextTick(() => {
  217. this.money = val;
  218. })
  219. },
  220. getAll() {
  221. this.toPrice = this.userInfo.brokeragePrice
  222. },
  223. /**
  224. * 选择金额
  225. */
  226. picCharge(idx, item) {
  227. this.activePic = idx;
  228. if (!item) {
  229. this.rechar_id = null;
  230. this.numberPic = "";
  231. this.money = ""
  232. } else {
  233. this.money = null;
  234. this.rechar_id = item.id;
  235. this.numberPic = null;
  236. }
  237. },
  238. /**
  239. * 充值额度选择
  240. */
  241. getRecharge() {
  242. getRechargeApi()
  243. .then(res => {
  244. this.packageList = res.data.packageList;
  245. if (this.packageList[0]) {
  246. this.rechar_id = this.packageList[0].id;
  247. this.numberPic = this.packageList[0].price;
  248. }
  249. this.noticeList = res.data.noticeList || [];
  250. })
  251. .catch(res => {
  252. this.$dialog.toast({
  253. mes: res
  254. });
  255. });
  256. },
  257. navRecharges: function(index) {
  258. this.active = index;
  259. },
  260. payItem: function(e) {
  261. let that = this;
  262. let active = e;
  263. that.curActive = active;
  264. that.animated = true;
  265. that.payType = that.cartArr[active].value;
  266. },
  267. /*
  268. * 用户充值
  269. */
  270. submitSub: Debounce(function(e) {
  271. let that = this
  272. let value = e.detail.value.number ? e.detail.value.number : that.numberPic;
  273. // 转入余额
  274. if (that.active) {
  275. if (parseFloat(value) < 0 || parseFloat(value) == NaN || value == undefined || value == "") {
  276. return that.$util.Tips({
  277. title: '请输入金额'
  278. });
  279. }
  280. uni.showModal({
  281. title: '转入余额',
  282. content: '转入余额后无法再次转出,确认是否转入余额',
  283. cancelColor: '#f55850',
  284. success(res) {
  285. if (res.confirm) {
  286. transferIn({
  287. price: parseFloat(value)
  288. }).then(res => {
  289. that.$store.commit("changInfo", {
  290. amount1: 'brokeragePrice',
  291. amount2: that.$util.$h.Sub(that.userInfo
  292. .brokeragePrice, parseFloat(value))
  293. });
  294. return that.$util.Tips({
  295. title: '转入成功',
  296. icon: 'success'
  297. }, {
  298. tab: 5,
  299. url: '/pages/users/user_money/index'
  300. });
  301. }).catch(err => {
  302. return that.$util.Tips({
  303. title: err
  304. });
  305. })
  306. } else if (res.cancel) {
  307. return that.$util.Tips({
  308. title: '已取消'
  309. });
  310. }
  311. },
  312. })
  313. } else {
  314. if (!this.payType) return this.$util.Tips({
  315. title: '请选择支付方式'
  316. });
  317. uni.showLoading({
  318. title: '正在支付',
  319. })
  320. let money = parseFloat(that.money);
  321. if (that.rechar_id == 0) {
  322. if (Number.isNaN(money)) {
  323. return that.$util.Tips({
  324. title: '充值金额必须为数字'
  325. });
  326. }
  327. if (money <= 0) {
  328. return that.$util.Tips({
  329. title: '充值金额不能为0'
  330. });
  331. }
  332. if (money > 50000) {
  333. return that.$util.Tips({
  334. title: '充值金额最大值为50000'
  335. });
  336. }
  337. } else {
  338. money = that.money
  339. }
  340. if (that.payType == 'alipay') {
  341. // #ifdef H5
  342. that.payChannel = 'alipay';
  343. // #endif
  344. // #ifdef APP-PLUS
  345. that.payChannel = 'alipayApp';
  346. // #endif
  347. } else {
  348. // #ifdef H5
  349. that.payChannel = that.$wechat.isWeixin() ? "public" : "h5";
  350. // #endif
  351. // #ifdef MP
  352. that.payChannel = "mini";
  353. // #endif
  354. // #ifdef APP-PLUS
  355. that.payChannel = that.systemPlatform === 'ios' ? 'wechatIos' : 'wechatAndroid';
  356. // #endif
  357. }
  358. rechargeCreateApi({
  359. payChannel: that.payChannel,
  360. price: money,
  361. payType: that.payType,
  362. groupDataId: that.rechar_id
  363. }).then(res => {
  364. uni.hideLoading();
  365. that.pay(res);
  366. }).catch(err => {
  367. uni.hideLoading();
  368. return that.$util.Tips({
  369. title: err
  370. })
  371. });
  372. }
  373. }),
  374. pay(res) {
  375. let that = this
  376. console.log(that.money)
  377. switch (that.payType) {
  378. case 'weixin':
  379. // #ifdef APP-PLUS
  380. let jsConfig = res.data.jsConfig;
  381. uni.requestPayment({
  382. provider: 'wxpay',
  383. orderInfo: {
  384. "appid": jsConfig.appId, // 微信开放平台 - 应用 - AppId,注意和微信小程序、公众号 AppId 可能不一致
  385. "noncestr": jsConfig.nonceStr, // 随机字符串
  386. "package": "Sign=WXPay", // 固定值
  387. "partnerid": jsConfig.partnerid, // 微信支付商户号
  388. "prepayid": jsConfig.prepayid, // 统一下单订单号
  389. "timestamp": Number(jsConfig.timeStamp), // 时间戳(单位:秒)
  390. "sign": jsConfig.paySign // 签名
  391. }, //微信、支付宝订单数据 【注意微信的订单信息,键值应该全部是小写,不能采用驼峰命名】
  392. success: function(res) {
  393. return that.$util.Tips({
  394. title: '支付成功',
  395. icon: 'success'
  396. }, {
  397. tab: 5,
  398. url: '/pages/users/user_money/index'
  399. });
  400. },
  401. fail: function(err) {
  402. return that.$util.Tips({
  403. title: '支付失败'
  404. });
  405. },
  406. complete: function(res) {
  407. if (res.errMsg == 'requestPayment:cancel') return that.$util.Tips({
  408. title: '取消支付'
  409. });
  410. }
  411. })
  412. // #endif
  413. // #ifdef MP
  414. let jsConfig = res.data.jsConfig;
  415. uni.requestPayment({
  416. timeStamp: jsConfig.timeStamp,
  417. nonceStr: jsConfig.nonceStr,
  418. package: jsConfig.packages,
  419. signType: jsConfig.signType,
  420. paySign: jsConfig.paySign,
  421. success: function(res) {
  422. return that.$util.Tips({
  423. title: '支付成功',
  424. icon: 'success'
  425. }, {
  426. tab: 5,
  427. url: '/pages/users/user_money/index'
  428. });
  429. },
  430. fail: function(err) {
  431. return that.$util.Tips({
  432. title: '支付失败'
  433. });
  434. },
  435. complete: function(res) {
  436. if (res.errMsg == 'requestPayment:cancel') return that.$util.Tips({
  437. title: '取消支付'
  438. });
  439. }
  440. })
  441. // #endif
  442. // #ifdef H5
  443. let jsConfig = res.data.jsConfig;
  444. let orderNo = res.data.orderNo;
  445. let data = {
  446. timestamp: jsConfig.timeStamp,
  447. nonceStr: jsConfig.nonceStr,
  448. package: jsConfig.packages,
  449. signType: jsConfig.signType,
  450. paySign: jsConfig.paySign
  451. };
  452. if (that.payChannel == "h5") {
  453. uni.hideLoading();
  454. setTimeout(() => {
  455. location.href = jsConfig.mwebUrl;
  456. }, 100)
  457. } else {
  458. that.$wechat.pay(data)
  459. .finally(() => {
  460. return that.$util.Tips({
  461. title: '支付成功',
  462. icon: 'success'
  463. }, {
  464. tab: 5,
  465. url: '/pages/users/user_money/index'
  466. });
  467. })
  468. .catch(function(err) {
  469. return that.$util.Tips({
  470. title: '支付失败'
  471. });
  472. });
  473. }
  474. // #endif
  475. break;
  476. case 'alipay':
  477. // alipayFull
  478. // #ifdef APP-PLUS
  479. let alipayRequest = res.data.alipayRequest;
  480. uni.requestPayment({
  481. provider: 'alipay',
  482. orderInfo: alipayRequest,
  483. success: (e) => {
  484. return that.$util.Tips({
  485. title: '支付成功',
  486. icon: 'success'
  487. }, {
  488. tab: 5,
  489. url: '/pages/users/user_money/index'
  490. });
  491. },
  492. fail: (e) => {
  493. return that.$util.Tips({
  494. title: '支付失败'
  495. });
  496. },
  497. complete: () => {
  498. uni.hideLoading();
  499. },
  500. });
  501. // #endif
  502. // #ifdef H5
  503. that.formContent = res.data.alipayRequest;
  504. that.$nextTick(() => {
  505. document.forms['punchout_form'].submit();
  506. })
  507. // #endif
  508. break;
  509. case 'daibi':
  510. that.payAccountAddress = res.data.accountAddress || ''
  511. that.payMoney = res.data.money
  512. that.genQrcode(that.payAccountAddress);
  513. that.payShow = true
  514. break;
  515. }
  516. },
  517. addMoney() {
  518. //this.money = this.money.replace(/[^\d]/g, '').replace(/^0{1,}/g, '');
  519. },
  520. copyData(data){
  521. uni.setClipboardData({
  522. data: data,
  523. success: () => {
  524. uni.showToast({
  525. icon: 'success',
  526. title: '复制成功'
  527. })
  528. },
  529. fail: () => {
  530. uni.showToast({
  531. icon: 'error',
  532. title: '复制失败'
  533. })
  534. }
  535. })
  536. },
  537. genQrcode(data){
  538. uQRCode.make({
  539. canvasId: 'qrcode',
  540. text: data,
  541. size: 150,
  542. margin: 10,
  543. success: res => {
  544. this.payQrcode = res;
  545. },
  546. complete: () => {},
  547. fail: res => {
  548. this.$util.Tips({
  549. title: '海报二维码生成失败!'
  550. });
  551. }
  552. })
  553. }
  554. }
  555. }
  556. </script>
  557. <style lang="scss">
  558. .placeColor{
  559. color: #fff;
  560. }
  561. .user_payment {
  562. height: 100vh;
  563. background-color: #fff;
  564. }
  565. .payment {
  566. position: relative;
  567. top: -56rpx;
  568. width: 100%;
  569. background-color: #fff;
  570. border-top-right-radius: 24rpx;
  571. border-top-left-radius: 24rpx;
  572. }
  573. .payment .nav {
  574. height: 75rpx;
  575. line-height: 75rpx;
  576. padding: 0 100rpx;
  577. }
  578. .payment .nav .item {
  579. font-size: 30rpx;
  580. color: #333;
  581. }
  582. .payment .nav .item.on {
  583. font-weight: bold;
  584. @include tab_border_bottom(theme);
  585. }
  586. .payment .input {
  587. display: flex;
  588. align-items: center;
  589. justify-content: center;
  590. border-bottom: 1px dashed #dddddd;
  591. margin: 60rpx auto 0 auto;
  592. padding-bottom: 20rpx;
  593. font-size: 56rpx;
  594. color: #333333;
  595. flex-wrap: nowrap;
  596. }
  597. .payment .input text {
  598. padding-left: 106rpx;
  599. }
  600. .payment .input input {
  601. padding-right: 106rpx;
  602. width: 310rpx;
  603. height: 94rpx;
  604. text-align: center;
  605. font-size: 70rpx;
  606. }
  607. .payment .placeholder {
  608. color: #fff;
  609. height: 100%;
  610. line-height: 94rpx;
  611. }
  612. .payment .tip {
  613. font-size: 26rpx;
  614. color: #888888;
  615. padding: 10rpx 24rpx 0 24rpx;
  616. // margin-top: 25rpx;
  617. }
  618. .payment .but {
  619. color: #fff;
  620. font-size: 28rpx;
  621. width: 700rpx;
  622. height: 88rpx;
  623. border-radius: 44rpx;
  624. margin: 48rpx auto 0 auto;
  625. @include linear-gradient(theme);
  626. line-height: 88rpx;
  627. }
  628. .payment-top {
  629. width: 100%;
  630. height: 350rpx;
  631. @include main_bg_color(theme);
  632. .name1 {
  633. font-size: 26rpx;
  634. color: rgba(255, 255, 255, 0.8);
  635. margin-top: -38rpx;
  636. margin-bottom: 30rpx;
  637. }
  638. .pic {
  639. font-size: 32rpx;
  640. color: #fff;
  641. }
  642. .pic-font {
  643. font-size: 78rpx;
  644. color: #fff;
  645. }
  646. }
  647. .picList {
  648. display: flex;
  649. flex-wrap: wrap;
  650. margin: 30rpx 0;
  651. .pic-box {
  652. width: 216rpx;
  653. height: 126rpx;
  654. border-radius: 16rpx;
  655. margin-top: 21rpx;
  656. padding: 20rpx 0;
  657. margin-right: 26rpx;
  658. &:nth-child(3n) {
  659. margin-right: 0;
  660. }
  661. }
  662. .pic-box-color {
  663. background-color: #f4f4f4;
  664. color: #656565;
  665. }
  666. .pic-number {
  667. font-size: 22rpx;
  668. }
  669. .pic-number-pic {
  670. font-size: 38rpx;
  671. margin-right: 10rpx;
  672. text-align: center;
  673. }
  674. }
  675. .pic-box-color-active {
  676. @include linear-gradient(theme);
  677. color: #fff !important;
  678. }
  679. .tips-box {
  680. .tips {
  681. font-size: 28rpx;
  682. color: #333333;
  683. font-weight: 800;
  684. margin-bottom: 14rpx;
  685. margin-top: 20rpx;
  686. }
  687. .tips-samll {
  688. font-size: 24rpx;
  689. color: #333333;
  690. margin-bottom: 14rpx;
  691. }
  692. .tip-box {
  693. margin-top: 30rpx;
  694. }
  695. }
  696. .tips-title {
  697. margin-top: 20rpx;
  698. font-size: 24rpx;
  699. color: #333;
  700. }
  701. .wrapper .item textarea {
  702. background-color: #f9f9f9;
  703. width: auto !important;
  704. height: 140rpx;
  705. border-radius: 14rpx;
  706. margin-top: 30rpx;
  707. padding: 15rpx;
  708. box-sizing: border-box;
  709. font-weight: 400;
  710. }
  711. .wrapper .item .placeholder {
  712. color: #ccc;
  713. }
  714. .wrapper .item .list {
  715. margin-top: 35rpx;
  716. }
  717. .wrapper .item .list .payItem {
  718. border: 1px solid #eee;
  719. border-radius: 14rpx;
  720. height: 86rpx;
  721. width: 100%;
  722. box-sizing: border-box;
  723. margin-top: 20rpx;
  724. font-size: 28rpx;
  725. color: #282828;
  726. }
  727. .wrapper .item .list .payItem.on {
  728. // border-color: #fc5445;
  729. @include coupons_border_color(theme);
  730. color: $theme-color;
  731. }
  732. .name {
  733. width: 50%;
  734. text-align: center;
  735. border-right: 1px solid #eee;
  736. }
  737. .name .iconfont {
  738. width: 44rpx;
  739. height: 44rpx;
  740. border-radius: 50%;
  741. text-align: center;
  742. line-height: 44rpx;
  743. background-color: #fe960f;
  744. color: #fff;
  745. font-size: 30rpx;
  746. margin-right: 15rpx;
  747. }
  748. .name .iconfont.icon-weixin2 {
  749. background-color: #41b035;
  750. }
  751. .name .iconfont.icon-a-ic_alipay {
  752. background-color: #00AAEA;
  753. }
  754. .payItem .tip {
  755. width: 49%;
  756. text-align: center;
  757. font-size: 26rpx;
  758. color: #aaa;
  759. }
  760. .db-payment{
  761. padding: 30rpx;
  762. background: #fff;
  763. margin-top: -28px;
  764. top: 0;
  765. .db-qrcode{
  766. display: flex;
  767. align-items: center;
  768. justify-content: center;
  769. .img{
  770. width: 300rpx;
  771. height: 300rpx;
  772. background: #dddddd;
  773. }
  774. }
  775. .db-item{
  776. margin: 30rpx 0;
  777. .db-item-label{
  778. font-size: 32rpx;
  779. font-weight: bold;
  780. }
  781. .db-item-val{
  782. margin-top: 10rpx;
  783. border: 2rpx solid #ccc;
  784. padding: 20rpx;
  785. border-radius: 32rpx;
  786. display: flex;
  787. align-items: center;
  788. justify-content: space-between;
  789. font-size: 24rpx;
  790. cursor: pointer;
  791. }
  792. .db-item-tips{
  793. margin-top: 10rpx;
  794. font-size: 24rpx;
  795. .important{
  796. color: rgb(252, 84, 69);
  797. font-weight: bold;
  798. }
  799. }
  800. }
  801. }
  802. </style>