card-order.vue 26 KB

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