card-order.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881
  1. <template>
  2. <view class="container cashier">
  3. <tui-skeleton
  4. v-if="skeletonShow"
  5. backgroundColor="#fafafa"
  6. borderRadius="10rpx"
  7. :isLoading="true"
  8. :loadingType="5"
  9. ></tui-skeleton>
  10. <template v-else>
  11. <cu-custom :navbar-data="nvabarData" @navigateBack="hanldNavigateBack"></cu-custom>
  12. <view class="container-cash clearfix" :style="{ marginTop: CustomBar + 'px' }">
  13. <view class="container-wrapper">
  14. <view class="pay-content">
  15. <view class="pay-top">
  16. <view class="pay-paid">
  17. <text class="txt-m">待付金额</text>
  18. <text class="txt-b"><text class="small">¥</text>{{ obligation | NumFormat }}</text>
  19. </view>
  20. <view class="pay-payd">
  21. <view class="pay-paids">
  22. <text class="txt-m">应付总额</text>
  23. <text class="txt-b">¥{{ payableAmount | NumFormat }}</text>
  24. </view>
  25. <view class="pay-paids">
  26. <text class="txt-m">已支付金额</text>
  27. <text class="txt-b">¥{{ receiptAmount | NumFormat }}</text>
  28. </view>
  29. </view>
  30. </view>
  31. <view class="pay-bot">
  32. <view class="bot-title"><text>本次支付金额</text></view>
  33. <view class="bot-input">
  34. <text>¥</text>
  35. <input
  36. class="input"
  37. type="digit"
  38. v-model="payAmount"
  39. @focus="focusInput"
  40. @blur="blurInput"
  41. placeholder="输入金额不能大于待付金额"
  42. placeholder-class="placeholder"
  43. />
  44. </view>
  45. <view class="bot-resid">
  46. <text class="bot-resid-le">应付剩余¥{{ balanceAmount | NumFormat }}</text>
  47. <text class="bot-resid-ri" @click="hanldeShowPopup(0)"
  48. >支付记录 <text class="iconfont icon-xiayibu"></text>
  49. </text>
  50. </view>
  51. </view>
  52. </view>
  53. <view class="pay-checked">
  54. <view class="pay-card-main">
  55. <view class="pay-item-cell" @click="tabClick(3)">
  56. <view class="item-icon"><image :src="handleLogo(cards.B2B)"></image></view>
  57. <view class="item-texts"><text>{{ cards.name }}</text></view>
  58. <view class="item-checked">
  59. <text
  60. class="iconfont"
  61. :class="[tabCurrentIndex === 3 ? 'icon-yixuanze3' : 'icon-weixuanze']"
  62. ></text>
  63. </view>
  64. </view>
  65. <view class="pay-item-cell add" @click="hanldeShowPopup(1)">
  66. <view class="item-texts add" ><text>查看全部银行卡 / 添加新卡支付</text></view>
  67. <view class="item-checked"> <text class="iconfont icon-xiayibu"></text> </view>
  68. </view>
  69. </view>
  70. <view class="pay-item" @click="handleAddCard(2)">
  71. <view class="pay-item-cell">
  72. <view class="item-texts add"><text>添加银行卡快捷付款</text></view>
  73. <view class="item-checked"> <text class="iconfont icon-xiayibu"></text> </view>
  74. </view>
  75. </view>
  76. <view class="pay-item" @click="tabClick(0)">
  77. <view class="pay-item-cell">
  78. <view class="item-icon"><text class="iconfont icon-weixinzhifu"></text></view>
  79. <view class="item-texts"><text>微信支付</text></view>
  80. <view class="item-checked">
  81. <text
  82. class="iconfont"
  83. :class="[tabCurrentIndex === 0 ? 'icon-yixuanze3' : 'icon-weixuanze']"
  84. ></text>
  85. </view>
  86. </view>
  87. </view>
  88. <view class="pay-item" @click="tabClick(1)">
  89. <view class="pay-item-cell">
  90. <view class="item-icon"><text class="iconfont icon-qiyewangyinzhifu"></text></view>
  91. <view class="item-texts"><text>企业网银支付</text></view>
  92. <view class="item-checked">
  93. <text
  94. class="iconfont"
  95. :class="[tabCurrentIndex === 1 ? 'icon-yixuanze3' : 'icon-weixuanze']"
  96. ></text>
  97. </view>
  98. </view>
  99. </view>
  100. <view class="pay-item" @click="tabClick(2)">
  101. <view class="pay-item-cell">
  102. <view class="item-icon"><text class="iconfont icon-gerenwangyinzhifu"></text></view>
  103. <view class="item-texts"><text>个人网银支付</text></view>
  104. <view class="item-checked">
  105. <text
  106. class="iconfont"
  107. :class="[tabCurrentIndex === 2 ? 'icon-yixuanze3' : 'icon-weixuanze']"
  108. ></text>
  109. </view>
  110. </view>
  111. </view>
  112. </view>
  113. </view>
  114. <view class="pay-button" :style="{ paddingBottom: isIphoneX ? '68rpx' : '24rpx' }">
  115. <view class="btn" @click.stop="buttonSubMit" :style="{ background: btnColor }">{{
  116. buttonText
  117. }}</view>
  118. </view>
  119. </view>
  120. </template>
  121. <!-- 支付链接弹窗 -->
  122. <view class="alert spec" :class="specClass" v-if="isShowTip">
  123. <!-- 选择支付弹窗说明 -->
  124. <view class="freight-alert" @tap="hideTips">
  125. <view class="content">
  126. <view class="title">
  127. <text>支付链接</text> <text class="iconfont icon-iconfontguanbi" @click.stop="hideTips"></text>
  128. </view>
  129. <view class="text-content">
  130. <view class="text"
  131. >请复制以下链接,并发送至电脑端,在浏览器访问该链接并选择银行尽快完成支付</view
  132. >
  133. <view class="text-p">{{ payHttpUrl }}</view> <view class="text-b">链接有效期为72小时</view>
  134. </view>
  135. <view class="text-button" @click.stop="clipboard(payHttpUrl)">复制链接</view>
  136. </view>
  137. </view>
  138. </view>
  139. <!-- 支付记录 -->
  140. <cm-record :show="popupShow" :list="discernReceipt"></cm-record>
  141. <!-- 选择快捷支付银行 -->
  142. <cm-cards :show="popupShow1" :list="cardsList" @handleChoiceaCards="handleChoiceaCards"></cm-cards>
  143. <!-- 弹窗提示 -->
  144. <tui-modal
  145. :show="modal"
  146. @click="handleClick"
  147. :content="contentModalText"
  148. :button="modalButton"
  149. color="#333"
  150. :size="32"
  151. shape="circle"
  152. :maskClosable="false"
  153. >
  154. </tui-modal>
  155. </view>
  156. </template>
  157. <script>
  158. import authorize from '@/common/config/authorize.js'
  159. import thorui from '@/components/clipboard/clipboard.thorui.js'
  160. import payMixins from '@/mixins/payMixins.js'
  161. import cardMixins from './mixins/cardMixins.js'
  162. import cmCards from './components/cm-cards-popup'
  163. import cmRecord from './components/cm-record-popup'
  164. export default {
  165. mixins: [payMixins, cardMixins],
  166. components: {
  167. cmRecord,
  168. cmCards
  169. },
  170. data() {
  171. return {
  172. skeletonShow: true,
  173. orderId: 0,
  174. shopOrderId: 0,
  175. shopOrderInfo: 0,
  176. payType: '',
  177. realPay: 0, //应付金额
  178. payableAmount: 0, // 应付总额
  179. receiptAmount: 0, // 已付金额
  180. obligation: 0, //待付金额
  181. balanceAmount: 0,
  182. payAmount: 0,
  183. nvabarData: {
  184. //顶部自定义导航
  185. showCapsule: 1, // 是否显示左上角图标 1表示显示 0表示不显示,
  186. showSearch: 0,
  187. title: '收银台', // 导航栏 中间的标题
  188. haveBack: true,
  189. textLeft: this.$store.state.isIphone
  190. },
  191. idCardList: [],
  192. isIphoneX: this.$store.state.isIphoneX,
  193. CustomBar: this.CustomBar, // 顶部导航栏高度
  194. isShowTip: false,
  195. discernReceipt: [],
  196. showDigitKeyboard: false,
  197. payHttpUrl: '',
  198. mbOrderId: 0, // 支付记录订单Id
  199. modal: false,
  200. contentModalText: '本次支付金额已超出微信支付限额,请输入小于5千的金额。', //操作文字提示语句
  201. modalButton: [
  202. {
  203. text: '知道了',
  204. customStyle: {
  205. color: '#fff',
  206. bgColor: 'linear-gradient(90deg, #F28F31 0%, #FF5B00 100%)'
  207. },
  208. plain: false
  209. }
  210. ],
  211. cardsList:[]//查看银行列表
  212. }
  213. },
  214. onLoad(option) {
  215. this.initData(option)
  216. },
  217. filters: {
  218. NumFormat(value) {
  219. if (!value) return '0.00'
  220. /*原来用的是Number(value).toFixed(0),这样取整时有问题,例如0.51取整之后为1,感谢Nils指正*/
  221. /*后来改成了 Number(value)|0,但是输入超过十一位就为负数了,具体见评论 */
  222. var intPart = Number(value) - (Number(value) % 1) //获取整数部分(这里是windy93的方法)
  223. var intPartFormat = intPart.toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,') //将整数部分逢三一断
  224. var floatPart = '.00' //预定义小数部分
  225. var value2Array = value.toString().split('.')
  226. //=2表示数据有小数位
  227. if (value2Array.length == 2) {
  228. floatPart = value2Array[1].toString() //拿到小数部分
  229. if (floatPart.length == 1) {
  230. //补0,实际上用不着
  231. return intPartFormat + '.' + floatPart + '0'
  232. } else {
  233. return intPartFormat + '.' + floatPart
  234. }
  235. } else {
  236. return intPartFormat + floatPart
  237. }
  238. }
  239. },
  240. methods: {
  241. initData(e) {
  242. this.payType = e.type
  243. console.log(this.payType)
  244. this.shopOrderId = e.shopOrderId
  245. this.GetPayOrderInfo()
  246. },
  247. GetPayOrderInfo() {
  248. //初始化支付信息
  249. this.PayService.PayOrderCheckoutShoporders({ shopOrderId: this.shopOrderId })
  250. .then(response => {
  251. let data = response.data
  252. this.discernReceipt = data.discernReceipt // 支付记录
  253. this.shopOrderInfo = data.shopOrder // 子订单
  254. this.obligation = data.shopOrder.obligation // 待付金额
  255. this.orderId = data.shopOrder.orderId // 主订单Id
  256. this.receiptAmount = data.shopOrder.receiptAmount // 已付金额
  257. this.payableAmount = data.shopOrder.realPay // 应付金额
  258. this.payAmount = this.toFixedFn(this.obligation) // 自定义金额
  259. this.balanceAmount = this.obligation - this.payAmount // 计算剩余支付金额
  260. // 支付方式配置
  261. // this.checkPayMode(data.onlinePayWays)
  262. setTimeout(() => {
  263. this.skeletonShow = false
  264. }, 500)
  265. })
  266. .catch(error => {
  267. this.$util.msg(error.msg, 2000)
  268. })
  269. },
  270. buttonSubMit() {
  271. switch (this.tabCurrentIndex) {
  272. case 0: // 微信支付
  273. this.handleUmTrackEvent('Um_Event_ConfirmWechatPay','微信支付')
  274. this.MiniWxPayFor()
  275. break
  276. case 1: // 企业网银
  277. this.handleUmTrackEvent('Um_Event_ConfirmEbankPay','企业网银')
  278. this.BuildCatenate()
  279. break
  280. case 2: // 个人网银
  281. this.handleUmTrackEvent('Um_Event_ConfirmAbankPay','个人网银')
  282. this.BuildCatenate()
  283. break
  284. case 3: // 快捷支付
  285. this.handleUmTrackEvent('Um_Event_ConfirmAbankPay','快捷支付')
  286. break
  287. }
  288. },
  289. handleUmTrackEvent(UmName,UmPageName){
  290. // 友盟埋点收集
  291. if (process.env.NODE_ENV != 'development') {
  292. this.$uma.trackEvent(UmName, {
  293. Um_Key_PageName: UmPageName,
  294. Um_Key_SourcePage: '线上支付',
  295. Um_Key_PayName: `${this.buttonText}`,
  296. Um_Key_PayOrderID: `${this.shopOrderId}`
  297. })
  298. }
  299. },
  300. BuildCatenate() {
  301. // 企业网银 个人网银
  302. if (this.payAmount == 0) {
  303. this.$util.msg('请输入本次支付的金额', 2000)
  304. return
  305. }
  306. if (this.payAmount <= 10) {
  307. this.$util.msg('网银支付的金额必须大于¥10.00', 2000)
  308. return
  309. }
  310. if (this.payType == '1') {
  311. if (this.payAmount != this.payableAmount) {
  312. this.contentModalText = '企业网银支付每次收取的手续费较高,建议一次性全额付款。'
  313. this.modal = true
  314. return
  315. }
  316. }
  317. this.PayService.PayOrderPayLink({
  318. unpaidAmount: this.payAmount,
  319. shopOrderId: this.shopOrderId,
  320. payType: this.payType
  321. }).then(response => {
  322. this.payHttpUrl = response.data
  323. this.isShowTip = true
  324. })
  325. },
  326. async MiniWxPayFor() {
  327. // 微信支付
  328. if (this.payAmount > 5000) {
  329. this.modal = true
  330. return
  331. }
  332. if (this.payAmount == 0) {
  333. this.$util.msg('请输入本次支付的金额', 2000)
  334. return
  335. }
  336. if (this.payAmount * 100 < 2) {
  337. this.$util.msg('本次支付的金额必须大于¥0.02', 2000)
  338. return
  339. }
  340. // 获取微信code
  341. const wechatCode = await authorize.getCode('weixin')
  342. const params = {
  343. payAmount: this.payAmount,
  344. payType: 'XCX',
  345. code: wechatCode,
  346. shopOrderId: this.shopOrderId
  347. }
  348. this.weChatMiniOrderWxPay(params)
  349. },
  350. handleClick() {
  351. this.modal = false
  352. },
  353. confirmEvent(value) {
  354. //点击自定义键盘完成的回调函数
  355. this.chechValue(value)
  356. this.showDigitKeyboard = false
  357. },
  358. blurInput(e) {
  359. this.chechValue(e.detail.value)
  360. },
  361. focusInput() {
  362. // this.showDigitKeyboard = true
  363. },
  364. hideKeyboard() {
  365. this.showDigitKeyboard = false
  366. },
  367. chechValue(value) {
  368. let patern = /\d+\.\d+/g
  369. if (value && value.split('.').length > 2) {
  370. value = patern.exec(value)
  371. }
  372. if (value == '' || value < 0) {
  373. this.payAmount = ''
  374. this.balanceAmount = this.obligation
  375. } else if (value > this.obligation) {
  376. this.payAmount = this.toFixedFn(this.obligation)
  377. this.balanceAmount = this.toFixedFn(this.obligation - this.payAmount)
  378. } else {
  379. this.payAmount = this.toFixedFn(value)
  380. this.balanceAmount = this.toFixedFn(this.obligation - this.payAmount)
  381. }
  382. },
  383. hanldNavigateBack() {
  384. //页面返回
  385. uni.navigateBack({
  386. delta: 1
  387. })
  388. },
  389. hideTips() {
  390. //隐藏弹窗
  391. this.isShowTip = false
  392. },
  393. toFixedFn(text) {
  394. //处理小数点后两位数
  395. return Number(text).toFixed(2)
  396. },
  397. copyClipboard(data) {
  398. //复制账号
  399. thorui.getClipboardData(data, res => {
  400. if (res) {
  401. this.$util.msg('已复制', 2000)
  402. } else {
  403. this.$util.msg('复制失败', 2000)
  404. }
  405. })
  406. },
  407. clipboard(data) {
  408. //复制链接
  409. console.log('data', data)
  410. thorui.getClipboardData(data, res => {
  411. if (res) {
  412. this.isShowTip = false
  413. this.$util.msg('已复制', 2000)
  414. // 友盟埋点收集复制网银链接
  415. if (process.env.NODE_ENV != 'development') {
  416. this.$uma.trackEvent('Um_Event_CopyUnionPay', {
  417. Um_Key_PageName: '网银支付',
  418. Um_Key_SourcePage: '线上支付',
  419. Um_Key_PayName: `${this.buttonText}`,
  420. Um_Key_PayOrderID: `${this.shopOrderId}`
  421. })
  422. }
  423. } else {
  424. this.$util.msg('复制失败', 2000)
  425. }
  426. })
  427. },
  428. discard() {
  429. //丢弃
  430. }
  431. },
  432. onShow() {}
  433. }
  434. </script>
  435. <style lang="scss">
  436. page {
  437. height: auto !important;
  438. background-color: #ffffff;
  439. }
  440. .container-cash {
  441. width: 100%;
  442. .container-wrapper {
  443. width: 100%;
  444. margin: 0 auto;
  445. .pay-content {
  446. width: 100%;
  447. height: 420rpx;
  448. box-sizing: border-box;
  449. padding: 64rpx 35rpx 0 35rpx;
  450. background: url(https://img.caimei365.com/group1/M00/03/BD/Cmis218elN6AY6VeAAqw4n3n4nw186.png) no-repeat;
  451. background-size: cover;
  452. float: left;
  453. position: relative;
  454. .pay-top {
  455. width: 100%;
  456. height: auto;
  457. float: left;
  458. margin-bottom: 44rpx;
  459. .pay-paid {
  460. width: 100%;
  461. height: auto;
  462. margin-bottom: 38rpx;
  463. text {
  464. line-height: 48rpx;
  465. text-align: left;
  466. color: #ffffff;
  467. width: 100%;
  468. }
  469. .txt-m {
  470. font-size: $font-size-26;
  471. opacity: 0.7;
  472. display: inline-block;
  473. }
  474. .txt-b {
  475. font-size: $font-size-48;
  476. display: inline-block;
  477. .small {
  478. font-size: $font-size-32;
  479. }
  480. }
  481. }
  482. .pay-payd {
  483. width: 100%;
  484. height: auto;
  485. .pay-paids {
  486. height: auto;
  487. float: left;
  488. margin-right: 48rpx;
  489. text {
  490. line-height: 48rpx;
  491. text-align: left;
  492. color: #ffffff;
  493. }
  494. .txt-m {
  495. width: 100%;
  496. display: inline-block;
  497. font-size: $font-size-26;
  498. opacity: 0.7;
  499. }
  500. .txt-b {
  501. width: 100%;
  502. display: inline-block;
  503. font-size: $font-size-32;
  504. }
  505. }
  506. }
  507. }
  508. .pay-bot {
  509. width: 680rpx;
  510. height: 240rpx;
  511. padding: 24rpx;
  512. box-sizing: border-box;
  513. background: #ffffff;
  514. border-radius: 28rpx;
  515. box-shadow: 0 2px 6px rgba(255, 77, 0, 0.17);
  516. position: absolute;
  517. bottom: -150rpx;
  518. left: 35rpx;
  519. .bot-title {
  520. line-height: 36rpx;
  521. font-size: $font-size-26;
  522. color: #666666;
  523. }
  524. .bot-input {
  525. width: 100%;
  526. height: 66rpx;
  527. margin: 15rpx 0;
  528. border-bottom: 1px solid #ebebeb;
  529. line-height: 66rpx;
  530. font-size: $font-size-32;
  531. color: $text-color;
  532. text {
  533. display: block;
  534. float: left;
  535. }
  536. .input {
  537. font-size: $font-size-40;
  538. width: 500rpx;
  539. height: 66rpx;
  540. padding: 0 10rpx;
  541. line-height: 66rpx;
  542. float: left;
  543. .none {
  544. color: $text-color;
  545. opacity: 0.3;
  546. }
  547. .text {
  548. color: $text-color;
  549. }
  550. }
  551. .placeholder {
  552. font-size: $font-size-26;
  553. }
  554. }
  555. .bot-resid {
  556. line-height: 36rpx;
  557. font-size: $font-size-26;
  558. margin-top: 24rpx;
  559. .bot-resid-le {
  560. display: inline-block;
  561. float: left;
  562. color: $color-system;
  563. }
  564. .bot-resid-ri {
  565. display: inline-block;
  566. float: right;
  567. color: #1890f9;
  568. .iconfont {
  569. font-size: 32rpx;
  570. }
  571. }
  572. }
  573. }
  574. }
  575. .pay-checked {
  576. width: 100%;
  577. height: auto;
  578. float: left;
  579. box-sizing: border-box;
  580. padding: 0 0 32rpx 0;
  581. border-top: 1px solid #e1e1e1;
  582. margin-top: 180rpx;
  583. .pay-card-main{
  584. width: 100%;
  585. height: auto;
  586. float: left;
  587. border-top: 12px solid #F7F7F7;
  588. border-bottom: 12px solid #F7F7F7;
  589. box-sizing: border-box;
  590. padding: 0 32rpx;
  591. .pay-item-cell {
  592. height: 100rpx;
  593. box-sizing: border-box;
  594. padding: 26rpx 0;
  595. background-color: #ffffff;
  596. border-bottom: 1px solid #e1e1e1;
  597. &.add{
  598. border-bottom: none;
  599. padding-left: 66rpx;
  600. }
  601. .item-icon {
  602. width: 48rpx;
  603. height: 48rpx;
  604. margin-right: 20rpx;
  605. float: left;
  606. image{
  607. width: 48rpx;
  608. height: 48rpx;
  609. display: block;
  610. }
  611. }
  612. .item-texts {
  613. line-height: 48rpx;
  614. font-size: $font-size-28;
  615. color: $text-color;
  616. float: left;
  617. &.add {
  618. font-weight: bold;
  619. }
  620. }
  621. .item-checked {
  622. width: 48rpx;
  623. height: 48rpx;
  624. float: right;
  625. text-align: center;
  626. line-height: 48rpx;
  627. font-size: $font-size-40;
  628. color: #ffffff;
  629. .icon-weixuanze {
  630. color: #b2b2b2;
  631. }
  632. .icon-yixuanze3 {
  633. color: #ff5b00;
  634. }
  635. .icon-xiayibu {
  636. color: #b2b2b2;
  637. }
  638. }
  639. }
  640. }
  641. .pay-item {
  642. width: 100%;
  643. height: auto;
  644. box-sizing: border-box;
  645. float: left;
  646. padding: 0 32rpx;
  647. .pay-item-cell {
  648. height: 100rpx;
  649. box-sizing: border-box;
  650. padding: 26rpx 0;
  651. background-color: #ffffff;
  652. border-bottom: 1px solid #e1e1e1;
  653. .item-icon {
  654. width: 48rpx;
  655. height: 48rpx;
  656. float: left;
  657. text-align: center;
  658. line-height: 48rpx;
  659. margin-right: 20rpx;
  660. .iconfont {
  661. font-size: 48rpx;
  662. }
  663. .icon-weixinzhifu {
  664. color: #0ABC64;
  665. }
  666. .icon-gerenwangyinzhifu {
  667. color: #16afe8;
  668. }
  669. .icon-qiyewangyinzhifu {
  670. color: #007acc;
  671. }
  672. }
  673. .item-texts {
  674. line-height: 48rpx;
  675. font-size: $font-size-28;
  676. color: $text-color;
  677. float: left;
  678. &.add {
  679. font-weight: bold;
  680. }
  681. }
  682. .item-checked {
  683. width: 48rpx;
  684. height: 48rpx;
  685. float: right;
  686. text-align: center;
  687. line-height: 48rpx;
  688. font-size: $font-size-40;
  689. color: #ffffff;
  690. .icon-weixuanze {
  691. color: #b2b2b2;
  692. }
  693. .icon-yixuanze3 {
  694. color: #ff5b00;
  695. }
  696. .icon-xiayibu {
  697. color: #b2b2b2;
  698. }
  699. }
  700. }
  701. }
  702. }
  703. }
  704. .pay-button {
  705. width: 600rpx;
  706. background-color: #ffffff;
  707. position: fixed;
  708. height: 88rpx;
  709. padding: 24rpx 75rpx 0 75rpx;
  710. bottom: 0;
  711. .btn {
  712. width: 100%;
  713. height: 88rpx;
  714. border-radius: 44rpx;
  715. font-size: $font-size-28;
  716. line-height: 88rpx;
  717. color: #ffffff;
  718. margin: 0 auto;
  719. text-align: center;
  720. background: $btn-confirm;
  721. }
  722. }
  723. }
  724. .freight-alert {
  725. width: 100%;
  726. height: 100%;
  727. background: rgba(0, 0, 0, 0.5);
  728. position: fixed;
  729. top: 0;
  730. left: 0;
  731. z-index: 8888;
  732. transition: all 0.4s;
  733. &.none {
  734. display: none;
  735. }
  736. &.show {
  737. display: block;
  738. }
  739. .content {
  740. width: 422rpx;
  741. height: 434rpx;
  742. position: absolute;
  743. background: $bg-color;
  744. left: 0;
  745. right: 0;
  746. bottom: 0;
  747. top: 0;
  748. margin: auto;
  749. padding: 20rpx 32rpx;
  750. border-radius: 12rpx;
  751. .title {
  752. width: 100%;
  753. height: 68rpx;
  754. line-height: 68rpx;
  755. font-size: $font-size-28;
  756. color: $text-color;
  757. text-align: center;
  758. position: relative;
  759. .icon-iconfontguanbi {
  760. width: 68rpx;
  761. height: 68rpx;
  762. text-align: center;
  763. line-height: 68rpx;
  764. position: absolute;
  765. right: 0;
  766. top: 0;
  767. font-size: $font-size-36;
  768. color: #999999;
  769. }
  770. }
  771. .text-content {
  772. width: 100%;
  773. height: auto;
  774. .text {
  775. padding: 20rpx 0 0 0;
  776. line-height: 44rpx;
  777. font-size: $font-size-26;
  778. color: #666666;
  779. text-align: justify;
  780. }
  781. .text-p {
  782. width: 100%;
  783. line-height: 44rpx;
  784. font-size: $font-size-26;
  785. color: $color-system;
  786. text-align: left;
  787. text-overflow: ellipsis;
  788. display: -webkit-box;
  789. word-break: break-all;
  790. -webkit-box-orient: vertical;
  791. -webkit-line-clamp: 1;
  792. overflow: hidden;
  793. }
  794. .text-b {
  795. line-height: 44rpx;
  796. font-size: $font-size-24;
  797. color: #999999;
  798. text-align: left;
  799. }
  800. }
  801. .text-button {
  802. width: 100%;
  803. height: 88rpx;
  804. line-height: 88rpx;
  805. background: $btn-confirm;
  806. font-size: $font-size-28;
  807. border-radius: 44rpx;
  808. color: #ffffff;
  809. text-align: center;
  810. margin-top: 20rpx;
  811. }
  812. }
  813. }
  814. .tui-prompt-title {
  815. width: 100%;
  816. height: 44rpx;
  817. line-height: 44rpx;
  818. padding: 20rpx 0;
  819. text-align: center;
  820. color: #333333;
  821. border-bottom: 1px solid #e2e7ef;
  822. }
  823. .tui-prompt-text {
  824. padding-top: 20rpx;
  825. .tui-prompt-tips {
  826. width: 100%;
  827. line-height: 36rpx;
  828. font-size: $font-size-22;
  829. color: #ff5b00;
  830. text-align: justify;
  831. margin-bottom: 24rpx;
  832. }
  833. .tui-prompt-item {
  834. width: 100%;
  835. line-height: 60rpx;
  836. color: #333333;
  837. font-size: $font-size-26;
  838. .text {
  839. font-weight: bold;
  840. }
  841. .copy {
  842. height: 38rpx;
  843. box-sizing: border-box;
  844. padding: 0 24rpx;
  845. text-align: center;
  846. line-height: 36rpx;
  847. display: inline-block;
  848. .iconfont {
  849. font-size: $font-size-40;
  850. color: #666666;
  851. }
  852. }
  853. }
  854. }
  855. .tui-prompt-flex {
  856. width: 100%;
  857. height: auto;
  858. margin-top: 20rpx;
  859. box-sizing: border-box;
  860. padding: 0 35rpx;
  861. .btn {
  862. width: 100%;
  863. line-height: 84rpx;
  864. font-size: $font-size-26;
  865. text-align: center;
  866. color: #ffffff;
  867. border-radius: 44rpx;
  868. margin: 20rpx 0;
  869. &.btn-cancel {
  870. background: #ffffff;
  871. color: #333333;
  872. border: 1px solid #979797;
  873. }
  874. &.btn-confirm {
  875. background: $btn-confirm;
  876. }
  877. }
  878. }
  879. </style>