packageOrderPay.vue 23 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006
  1. <template>
  2. <view>
  3. <view class="inner-box">
  4. <!-- 收货人 -->
  5. <view class="address-box" v-if="address==null" @click="openAddress()">
  6. <view class="left">
  7. <view class="name-box">
  8. <text class="text name">添加收货地址</text>
  9. </view>
  10. </view>
  11. <view class="arrow-box">
  12. <image src="/static/images/arrow_gray.png" mode=""></image>
  13. </view>
  14. </view>
  15. <view class="address-box" v-if="address!=null" @click="openAddress()">
  16. <view class="left">
  17. <view class="name-box">
  18. <text class="text name">{{address.realName}}</text>
  19. <text class="text" v-if="address.phone!=null">{{address.phone}}</text>
  20. </view>
  21. <view class="address">
  22. {{address.address}}
  23. </view>
  24. </view>
  25. <view class="arrow-box">
  26. <image src="/static/images/arrow_gray.png" mode=""></image>
  27. </view>
  28. </view>
  29. <view class="other-info">
  30. <view class="title">支付明细</view>
  31. <view class="item">
  32. <view class="left">
  33. <text class="label">应付金额:</text>
  34. </view>
  35. <view class="right">
  36. <text class="text" >{{payPrice}}</text>
  37. </view>
  38. </view>
  39. <view class="item" v-if="order!=null&&(order.userCouponId==null||order.userCouponId==0)" @click.stop="openCoupon()">
  40. <view class="left">
  41. <text class="label">优惠券:</text>
  42. </view>
  43. <view class="right">
  44. <text class="text">{{couponText}}</text>
  45. <image v-if="userCouponId!=0" @click.stop="delCoupon()" class="ic-close" src="../static/images/close.png"></image>
  46. <image class="ic-back" src="../static/images/arrow_gray.png"></image>
  47. </view>
  48. </view>
  49. <view class="item" >
  50. <view class="left">
  51. <text class="label">优惠金额:</text>
  52. </view>
  53. <view class="right">
  54. <text class="text">{{discountMoney}}</text>
  55. </view>
  56. </view>
  57. <view class="item">
  58. <view class="left">
  59. <text class="label">支付金额:</text>
  60. </view>
  61. <view class="right">
  62. <text class="text">{{payMoney}}</text>
  63. </view>
  64. </view>
  65. <view class="item">
  66. <view class="left">
  67. <text class="label">物流代收:</text>
  68. </view>
  69. <view class="right">
  70. <text class="text">{{payRemain}}</text>
  71. </view>
  72. </view>
  73. <view class="item">
  74. <view class="left">
  75. <text class="label">邮费:</text>
  76. </view>
  77. <view class="right">
  78. <text class="text">{{payDelivery}}</text>
  79. </view>
  80. </view>
  81. </view>
  82. <view class="pay-type">
  83. <view class="title">支付方式</view>
  84. <radio-group @change="payTypeChange" >
  85. <view class="item" v-if="checkPayType('1')&&choose!=1" >
  86. <view class="left" >
  87. <image src="/static/images/wecha_pay.png" mode=""></image>
  88. <text class="text">全款支付</text>
  89. </view>
  90. <label>
  91. <radio :value="1" :checked="payType=='1'" />
  92. </label>
  93. </view>
  94. <view class="item" v-if="checkPayType('2')" >
  95. <view class="left" >
  96. <image src="/static/images/pay_de.png" mode=""></image>
  97. <text class="text">物流代收</text>
  98. </view>
  99. <label>
  100. <radio :value="2" :checked="payType=='2'" />
  101. </label>
  102. </view>
  103. <view class="item" v-if="checkPayType('3')&&choose!=2" >
  104. <view class="left">
  105. <image src="/static/images/pay_1.png" mode=""></image>
  106. <text class="text">货到付款</text>
  107. </view>
  108. <label>
  109. <radio :value="3" :checked="payType=='3'" />
  110. </label>
  111. </view>
  112. </radio-group>
  113. </view>
  114. <!-- v-if="payType=='1'&&order!=null&&order.companyId!=null&&order.companyId>0&&giftPrice<=payPrice" -->
  115. <view class="other-info" v-if="gifts.length>0">
  116. <view class="title">赠品</view>
  117. <view class="drug-list" >
  118. <view v-for="(product) in gifts" class="drug-item" >
  119. <view class="img-box">
  120. <image :src="product.image" mode="aspectFill"></image>
  121. </view>
  122. <view class="drug-info" >
  123. <view>
  124. <view class="name-box ellipsis2">
  125. {{product.productName}}
  126. </view>
  127. <view class="spec">{{product.sku}}</view>
  128. </view>
  129. <view class="num-box">
  130. <view class="price">
  131. <text class="unit">¥</text>
  132. <text class="num">{{product.price.toFixed(2)}}</text>
  133. </view>
  134. <view class="amount">x{{product.count}}</view>
  135. </view>
  136. </view>
  137. </view>
  138. </view>
  139. </view>
  140. <!-- 备注 -->
  141. <view class="remarks" v-if="order!=null">
  142. <input type="text" v-model="order.remark" placeholder="备注留言(选填)" placeholder-class="input" />
  143. </view>
  144. </view>
  145. <u-popup :closeable="true" :show="couponShow" :round="10" mode="bottom" @close="close" @open="open">
  146. <view class="coupon">
  147. <view class="coupon-box" v-if="coupons.length>0" >
  148. <view @click="couponSelect(item)" class="coupon-item" v-for="(item) in coupons">
  149. <view class="left" >
  150. <image v-if="item.status==0" src="https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/0fdd75d89db84458886d38e615011048.png" mode="widthFix"></image>
  151. <image v-if="item.status!=0" src="https://fs-1319721001.cos.ap-chongqing.myqcloud.com/fs/20240229/d950e4c7af1e4464be1a7777e9dca576.png" mode="widthFix"></image>
  152. <view style="z-index: 999;">
  153. ¥<span class="num">{{item.price.toFixed(2)}}</span>
  154. </view>
  155. <view class="pic-num" >满{{item.minPrice.toFixed(2)}}元可用</view>
  156. </view>
  157. <view class="right">
  158. <view class="title">
  159. {{item.title}}
  160. </view>
  161. <view class="btns">
  162. <view v-if="item.status==0||item.status==2" >{{item.limitTime}} 到期</view>
  163. <view v-if="item.status==1">使用时间 {{item.useTime}}</view>
  164. <view class="bnt gray" v-if="item.status==1" >已使用</view>
  165. <view class="bnt gray" v-if="item.status==2" >已过期</view>
  166. <view class="btn" v-if="item.status==0" >使用</view>
  167. </view>
  168. </view>
  169. </view>
  170. </view>
  171. <view class="empty" v-if="coupons.length==0">
  172. <image src="https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png"></image>
  173. </view>
  174. </view>
  175. </u-popup>
  176. <!-- 底部按钮 -->
  177. <view class="btn-box">
  178. <view class="btn" v-if="order!=null" @click="payOrder()">支付{{payMoney}}元</view>
  179. </view>
  180. </view>
  181. </template>
  182. <script>
  183. import {getConfigByKey} from '@/api/common'
  184. import {getAddressByDefault} from '@/api/userAddress.js'
  185. import {getMyEnableCouponList} from '@/api/user.js'
  186. import {getPackageById} from '@/api/package.js'
  187. import {getPackageOrderById,pay,compute} from '@/api/packageOrder'
  188. export default {
  189. data() {
  190. return {
  191. giftPrice:0.00,
  192. payTypes:[],
  193. addressId:null,
  194. wxPay: true,
  195. address:null,
  196. orderId:null,
  197. order:null,
  198. items:null,
  199. payType:"1",
  200. couponText:"请选择优惠券",
  201. userCouponId:0,
  202. coupons:[],
  203. couponShow:false,
  204. payMoney:0.00,
  205. discountMoney:0,
  206. payRemain:0,
  207. payDelivery:0,
  208. payPrice:0,
  209. gifts:[],
  210. choose: 0
  211. }
  212. },
  213. onLoad(option) {
  214. this.choose = option.choose || 0
  215. this.payType = this.choose == 1 ? 3:this.choose == 2 ? 1 :this.payType
  216. this.orderId=option.orderId;
  217. var that=this;
  218. uni.$on('updateAddress', (e) => {
  219. that.addressId=e.addressId;
  220. that.address=e;
  221. that.address.address=e.province+e.city+e.district+e.detail
  222. })
  223. this.getAddressByDefault();
  224. },
  225. onShow() {
  226. this.getPackageOrderById();
  227. // this.getPackageById();
  228. this.getConfigByKey();
  229. },
  230. methods: {
  231. getAddressByDefault(){
  232. var data={};
  233. getAddressByDefault(data).then(
  234. res => {
  235. if(res.code==200){
  236. if(res.data!=null){
  237. this.addressId=res.data.addressId;
  238. this.address=res.data;
  239. this.address.address=res.data.province+res.data.city+res.data.district+res.data.detail
  240. }
  241. }else{
  242. uni.showToast({
  243. icon:'none',
  244. title: res.msg,
  245. });
  246. }
  247. },
  248. rej => {}
  249. );
  250. },
  251. getConfigByKey(){
  252. var that=this;
  253. var data={key:"his.package"}
  254. getConfigByKey(data).then(
  255. res => {
  256. if(res.code==200){
  257. this.giftPrice=JSON.parse(res.data).giftPrice;
  258. console.log(this.giftPrice)
  259. }
  260. },
  261. rej => {}
  262. );
  263. },
  264. checkPayType(payType){
  265. var flag=false
  266. this.payTypes.forEach(function(value,index,array){
  267. if(value.toString()==payType.toString()){
  268. flag=true;
  269. }
  270. });
  271. return flag;
  272. },
  273. payTypeChange(e){
  274. console.log(e.detail.value)
  275. this.payType=e.detail.value;
  276. this.compute()
  277. },
  278. couponSelect(item){
  279. this.couponShow = false;
  280. //计算金额
  281. this.userCouponId=item.id;
  282. console.log(item)
  283. this.couponText=item.price+"元优惠券"
  284. this.compute()
  285. },
  286. open() {
  287. },
  288. close() {
  289. this.couponShow = false
  290. },
  291. openCoupon(){
  292. this.couponShow=true;
  293. },
  294. delCoupon(){
  295. this.userCouponId=0;
  296. this.couponText="请选择优惠券";
  297. this.compute();
  298. },
  299. compute(){
  300. var data={
  301. payType:this.payType,
  302. orderId:this.orderId,
  303. userCouponId:this.userCouponId,
  304. companyId:this.companyId,
  305. companyUserId:this.companyUserId
  306. }
  307. console.log(data)
  308. compute(data).then(
  309. res => {
  310. if(res.code==200){
  311. this.payPrice=res.moneys.payPrice.toFixed(2);
  312. this.payMoney=res.moneys.payMoney.toFixed(2);
  313. this.discountMoney=res.moneys.discountMoney.toFixed(2);
  314. this.payDelivery=res.moneys.payDelivery.toFixed(2);
  315. this.payRemain=res.moneys.payRemain.toFixed(2);
  316. this.gifts=res.moneys.gifts;
  317. }
  318. else{
  319. this.payType=1;
  320. this.compute()
  321. this.userCouponId=0;
  322. this.couponText="请选择优惠券"
  323. uni.showToast({
  324. icon:'none',
  325. title: res.msg,
  326. });
  327. }
  328. },
  329. err => {
  330. }
  331. );
  332. },
  333. getMyEnableCouponList(){
  334. var data={}
  335. if(this.package.isShow==0){
  336. data.couponType=5;
  337. data.cateId=this.package.privateType
  338. }
  339. else if(this.package.isShow==1){
  340. data.couponType=6;
  341. data.cateId=this.package.diseaseType
  342. }
  343. getMyEnableCouponList(data).then(
  344. res => {
  345. if(res.code==200){
  346. this.coupons=res.data;
  347. }
  348. },
  349. err => {
  350. }
  351. );
  352. },
  353. getPackageOrderById(){
  354. var data={orderId:this.orderId};
  355. console.log(data)
  356. getPackageOrderById(data).then(
  357. res => {
  358. if(res.code==200){
  359. this.order=res.order
  360. this.choose = res.choose || 0
  361. this.payType = this.choose == 1 ? 3:this.choose == 2 ? 1 :this.payType
  362. this.compute();
  363. this.getPackageById(this.order.packageId)
  364. }else{
  365. }
  366. },
  367. rej => {}
  368. );
  369. },
  370. getPackageById(packageId){
  371. let data={packageId:packageId};
  372. if(this.choose == 1 || this.choose == 2) {
  373. data={
  374. packageId:packageId,
  375. choose: this.choose
  376. };
  377. }
  378. getPackageById(data).then(
  379. res => {
  380. if(res.code==200){
  381. this.package=res.data;
  382. this.payTypes=res.data.payType.split(',');
  383. this.payType=this.choose == 1 ? 3:this.choose == 2 ? 1 :this.payType
  384. console.log(this.payTypes)
  385. this.getMyEnableCouponList();
  386. }else{
  387. }
  388. },
  389. rej => {}
  390. );
  391. },
  392. openAddress(){
  393. uni.navigateTo({
  394. url: '/pages_user/address'
  395. })
  396. },
  397. payOrder(){
  398. var data = {
  399. payType:this.payType,
  400. userCouponId:this.userCouponId,
  401. addressId:this.addressId,
  402. remark:this.order.remark,
  403. orderId:this.order.orderId,
  404. };
  405. var that=this;
  406. uni.showLoading();
  407. pay(data).then(
  408. res => {
  409. if(res.code==200){
  410. uni.redirectTo({
  411. url:"./packagePayment?orderId="+this.orderId
  412. })
  413. }else{
  414. uni.showToast({
  415. icon:'none',
  416. title: res.msg,
  417. });
  418. }
  419. },
  420. rej => {}
  421. );
  422. }
  423. }
  424. }
  425. </script>
  426. <style lang="scss">
  427. .inner-box{
  428. padding: 20upx 20upx 300upx;
  429. .address-box{
  430. box-sizing: border-box;
  431. min-height: 171upx;
  432. background: #FFFFFF;
  433. border-radius: 16upx;
  434. background-image: url(/static/images/address_bg.png);
  435. background-repeat: no-repeat;
  436. background-size: 100% 30upx;
  437. background-position: left bottom;
  438. padding: 38upx 30upx 36upx;
  439. display: flex;
  440. align-items: center;
  441. justify-content: space-between;
  442. .left{
  443. width: 92%;
  444. .name-box{
  445. display: flex;
  446. align-items: center;
  447. .text{
  448. font-size: 32upx;
  449. font-family: PingFang SC;
  450. font-weight: bold;
  451. color: #111111;
  452. line-height: 1;
  453. &.name{
  454. margin-right: 30upx;
  455. }
  456. }
  457. }
  458. .address{
  459. font-size: 28upx;
  460. font-family: PingFang SC;
  461. font-weight: 500;
  462. color: #666666;
  463. line-height: 42upx;
  464. text-align:left;
  465. margin-top: 23upx;
  466. }
  467. }
  468. .arrow-box{
  469. width: 12upx;
  470. height: 23upx;
  471. display: flex;
  472. align-items: cenetr;
  473. justify-content: cenetr;
  474. image{
  475. width: 100%;
  476. height: 100%;
  477. }
  478. }
  479. }
  480. .goods-list{
  481. margin-top: 20upx;
  482. padding: 0 30upx;
  483. background-color: #FFFFFF;
  484. border-radius: 16upx;
  485. .item{
  486. padding: 30upx 0;
  487. border-bottom: 1px solid #EDEEEF;
  488. display: flex;
  489. align-items: center;
  490. .img-box{
  491. width: 160upx;
  492. height: 160upx;
  493. margin-right: 30upx;
  494. image{
  495. width: 100%;
  496. height: 100%;
  497. }
  498. }
  499. .info-box{
  500. width: calc(100% - 190upx);
  501. height: 160upx;
  502. display: flex;
  503. flex-direction: column;
  504. justify-content: space-between;
  505. .name-box{
  506. font-size: 28upx;
  507. font-family: PingFang SC;
  508. font-weight: 500;
  509. color: #111111;
  510. line-height: 40upx;
  511. .tag{
  512. display: inline-block;
  513. padding: 0 6upx;
  514. height: 30upx;
  515. background: linear-gradient(90deg, #C39A58 0%, #E2C99E 100%);
  516. border-radius: 4upx;
  517. margin-right: 10upx;
  518. font-size: 22upx;
  519. font-family: PingFang SC;
  520. font-weight: bold;
  521. color: #FFFFFF;
  522. line-height: 30upx;
  523. float: left;
  524. margin-top: 7upx;
  525. }
  526. }
  527. .spec{
  528. margin-top: 10upx;
  529. font-size: 24upx;
  530. font-family: PingFang SC;
  531. font-weight: 500;
  532. color: #999999;
  533. line-height: 1;
  534. }
  535. .price-num{
  536. display: flex;
  537. align-items: center;
  538. justify-content: space-between;
  539. .price{
  540. display: flex;
  541. align-items: flex-end;
  542. .unit{
  543. font-size: 24upx;
  544. font-family: PingFang SC;
  545. font-weight: 500;
  546. color: #111111;
  547. line-height: 1.2;
  548. margin-right: 4upx;
  549. }
  550. .num{
  551. font-size: 32upx;
  552. font-family: PingFang SC;
  553. font-weight: 500;
  554. color: #111111;
  555. line-height: 1;
  556. }
  557. }
  558. .num{
  559. font-size: 24upx;
  560. font-family: PingFang SC;
  561. font-weight: 500;
  562. color: #999999;
  563. line-height: 1;
  564. }
  565. }
  566. }
  567. }
  568. .sub-total{
  569. height: 88upx;
  570. display: flex;
  571. align-items: center;
  572. justify-content: flex-end;
  573. .label{
  574. font-size: 24upx;
  575. font-family: PingFang SC;
  576. font-weight: 500;
  577. color: #999999;
  578. }
  579. .price{
  580. display: flex;
  581. align-items: flex-end;
  582. .unit{
  583. font-size: 24upx;
  584. font-family: PingFang SC;
  585. font-weight: 500;
  586. color: #FF6633;
  587. line-height: 1.2;
  588. margin-right: 4upx;
  589. }
  590. .num{
  591. font-size: 32upx;
  592. font-family: PingFang SC;
  593. font-weight: bold;
  594. color: #FF6633;
  595. line-height: 1;
  596. }
  597. }
  598. }
  599. }
  600. .other-info{
  601. margin-top: 20upx;
  602. background-color: #fff;
  603. border-radius: 20upx;
  604. overflow: hidden;
  605. padding: 0 30upx;
  606. .title{
  607. height: 80upx;
  608. line-height: 80upx;
  609. font-size: 30upx;
  610. color: #000;
  611. font-weight: bold;
  612. border-bottom: 2upx solid #eeeeee;
  613. }
  614. .drug-list{
  615. margin-top: 15rpx;
  616. .drug-item{
  617. padding-bottom: 15upx;
  618. border-bottom: 1px soli #F0F0F0;
  619. display: flex;
  620. align-items: center;
  621. .img-box{
  622. width: 160upx;
  623. height: 160upx;
  624. margin-right: 30upx;
  625. flex-shrink: 0;
  626. image{
  627. width: 100%;
  628. height: 100%;
  629. }
  630. }
  631. .drug-info{
  632. width: calc(100% - 190upx);
  633. height: 160upx;
  634. display: flex;
  635. flex-direction: column;
  636. justify-content: space-between;
  637. .name-box{
  638. font-size: 28upx;
  639. font-family: PingFang SC;
  640. font-weight: 500;
  641. color: #111111;
  642. line-height: 40upx;
  643. .tag{
  644. display: inline-block;
  645. padding: 0 6upx;
  646. height: 30upx;
  647. background: linear-gradient(90deg, #2BC7B9 0%, #2BC7A4 100%);
  648. border-radius: 4upx;
  649. margin-right: 10upx;
  650. font-size: 22upx;
  651. font-family: PingFang SC;
  652. font-weight: bold;
  653. color: #FFFFFF;
  654. line-height: 30upx;
  655. float: left;
  656. margin-top: 7upx;
  657. }
  658. }
  659. .spec{
  660. font-size: 24upx;
  661. font-family: PingFang SC;
  662. font-weight: 500;
  663. color: #999999;
  664. line-height: 1;
  665. margin-top: 10upx;
  666. }
  667. .num-box{
  668. display: flex;
  669. align-items: center;
  670. justify-content: space-between;
  671. .price{
  672. display: flex;
  673. align-items: flex-end;
  674. .unit{
  675. font-size: 24upx;
  676. font-family: PingFang SC;
  677. font-weight: 500;
  678. color: #111111;
  679. line-height: 1.2;
  680. margin-right: 4upx;
  681. }
  682. .num{
  683. font-size: 32upx;
  684. font-family: PingFang SC;
  685. font-weight: 500;
  686. color: #111111;
  687. line-height: 1;
  688. }
  689. }
  690. .use{
  691. font-size: 24upx;
  692. font-family: PingFang SC;
  693. color: #999999;
  694. }
  695. .amount{
  696. font-size: 24upx;
  697. font-family: PingFang SC;
  698. font-weight: 500;
  699. color: #999999;
  700. line-height: 1;
  701. }
  702. }
  703. }
  704. }
  705. }
  706. .item{
  707. height: 80upx;
  708. display: flex;
  709. align-items: center;
  710. justify-content: space-between;
  711. &:last-child{
  712. border-bottom: none;
  713. }
  714. .left{
  715. flex: 1;
  716. display: flex;
  717. align-items: center;
  718. .label{
  719. min-width: 140rpx;
  720. font-size: 28upx;
  721. color: #000;
  722. }
  723. .text{
  724. font-size: 28upx;
  725. color: #1b1b1b;
  726. }
  727. }
  728. .right{
  729. display: flex;
  730. align-items: center;
  731. justify-content: flex-end;
  732. .text{
  733. font-size: 28upx;
  734. color: #1b1b1b;
  735. }
  736. .ic-close{
  737. margin-left: 10rpx;
  738. width: 30rpx;
  739. height:30rpx;
  740. }
  741. .ic-back{
  742. margin-left: 10rpx;
  743. width: 15rpx;
  744. height:30rpx;
  745. }
  746. }
  747. .item-btn{
  748. max-width: 200rpx;
  749. padding: 0rpx 15rpx;
  750. height: 48upx;
  751. border-radius: 24upx;
  752. line-height: 48upx;
  753. font-size: 24upx;
  754. color: #000;
  755. border: 1upx solid #d8d8d8;
  756. display: flex;
  757. align-items: center;
  758. justify-content: center;
  759. }
  760. }
  761. }
  762. .remarks{
  763. height: 88upx;
  764. padding: 0 30upx;
  765. background: #FFFFFF;
  766. border-radius: 16upx;
  767. margin-top: 20upx;
  768. display: flex;
  769. align-items: center;
  770. input{
  771. width: 100%;
  772. font-size: 28upx;
  773. font-family: PingFang SC;
  774. font-weight: 500;
  775. color: #000000;
  776. }
  777. .input{
  778. font-size: 28upx;
  779. font-family: PingFang SC;
  780. font-weight: 500;
  781. color: #999999;
  782. }
  783. }
  784. }
  785. .btn-box{
  786. z-index: 9999;
  787. width: 100%;
  788. padding: 30rpx 30upx 0rpx;
  789. position: fixed;
  790. bottom: 0;
  791. left: 0;
  792. box-sizing: border-box;
  793. background-color: #ffffff;
  794. display: flex;
  795. flex-direction: column;
  796. align-items: center;
  797. justify-content: center;
  798. .btn{
  799. margin-bottom: 20rpx;
  800. width: 100%;
  801. height: 88upx;
  802. line-height: 88upx;
  803. text-align: center;
  804. font-size: 34upx;
  805. font-family: PingFang SC;
  806. font-weight: 400;
  807. color: #FFFFFF;
  808. background: #C39A58;
  809. border-radius: 10upx;
  810. position: relative;
  811. .contact-btn {
  812. position: absolute;
  813. width:100%;
  814. height:100%;
  815. display: flex;
  816. opacity: 0;
  817. }
  818. }
  819. .btn1{
  820. margin-bottom: 20rpx;
  821. width: 100%;
  822. height: 88upx;
  823. line-height: 88upx;
  824. text-align: center;
  825. font-size: 34upx;
  826. font-family: PingFang SC;
  827. font-weight: 400;
  828. color: #C39A58;
  829. border: 1rpx solid #C39A58;
  830. border-radius: 10upx;
  831. position: relative;
  832. .contact-btn {
  833. position: absolute;
  834. width:100%;
  835. height:100%;
  836. display: flex;
  837. opacity: 0;
  838. }
  839. }
  840. }
  841. .pay-type{
  842. box-sizing: border-box;
  843. background: #FFFFFF;
  844. border-radius: 16upx;
  845. margin-top: 20upx;
  846. padding: 40upx 30upx 20rpx;
  847. display: flex;
  848. flex-direction: column;
  849. justify-content: space-between;
  850. .title{
  851. font-size: 28upx;
  852. font-family: PingFang SC;
  853. font-weight: 500;
  854. color: #999999;
  855. line-height: 1;
  856. margin-bottom: 10upx;
  857. }
  858. .item{
  859. padding: 15upx 0upx;
  860. display: flex;
  861. align-items: center;
  862. justify-content: space-between;
  863. .left{
  864. display: flex;
  865. align-items: center;
  866. image{
  867. width: 44upx;
  868. height: 44upx;
  869. margin-right: 20upx;
  870. }
  871. .text{
  872. font-size: 30upx;
  873. font-family: PingFang SC;
  874. font-weight: bold;
  875. color: #222222;
  876. line-height: 1;
  877. }
  878. }
  879. }
  880. }
  881. .coupon{
  882. height: 100%;
  883. .empty{
  884. display: flex;
  885. align-items: center;
  886. justify-content: center;
  887. height: 650rpx;
  888. width: 100%;
  889. image{
  890. width: 280rpx;
  891. height: 200rpx;
  892. }
  893. }
  894. }
  895. .coupon-box{
  896. overflow-y: auto;
  897. padding: 80rpx 20rpx 80rpx;
  898. height: 650rpx;
  899. width: 100%;
  900. display: flex;
  901. flex-direction: column;
  902. align-items: flex-start;
  903. justify-content: flex-start;
  904. box-sizing: border-box;
  905. .coupon-item{
  906. width: 100%;
  907. display: flex;
  908. align-items: center;
  909. justify-content: flex-start;
  910. margin-bottom: 16rpx;
  911. height:170rpx;
  912. &:last-child{
  913. margin-bottom: 0rpx;
  914. }
  915. .left{
  916. color: #fff;
  917. font-size: 36rpx;
  918. font-weight: bold;
  919. text-align: center;
  920. display: flex;
  921. flex-direction: column;
  922. align-items: center;
  923. justify-content: center;
  924. position: relative;
  925. width: 230rpx;
  926. image{
  927. position: absolute;
  928. width: 230rpx;
  929. height:170rpx;
  930. color: #fff;
  931. }
  932. .num{
  933. font-size: 40rpx;
  934. }
  935. .pic-num{
  936. font-size: 20rpx;
  937. z-index: 99;
  938. }
  939. }
  940. .right{
  941. display: flex;
  942. flex-direction: column;
  943. align-items: flex-start;
  944. justify-content: flex-start;
  945. height:170rpx;
  946. width: calc(100% - 230rpx);
  947. padding: 0 17rpx 0 24rpx;
  948. background-color: #fff;
  949. box-sizing: border-box;
  950. .title{
  951. width: 100%;
  952. font-size: 0.3 * 100rpx;
  953. color: #282828;
  954. height: 0.93 * 100rpx;
  955. line-height: 0.93 * 100rpx;
  956. border-bottom: 1px solid #f0f0f0;
  957. }
  958. .btns{
  959. display: flex;
  960. align-items: center;
  961. justify-content: space-between;
  962. width: 100%;
  963. font-size: 0.2 * 100rpx;
  964. color: #999;
  965. height: 0.76 * 100rpx;
  966. .btn{
  967. width: 1.36 * 100rpx;
  968. height: 0.44 * 100rpx;
  969. border-radius: 0.22 * 100rpx;
  970. font-size: 0.22 * 100rpx;
  971. color: #fff;
  972. text-align: center;
  973. line-height: 0.44 * 100rpx;
  974. background-color: #C39A58;
  975. .gray{
  976. background-color: #ccc;
  977. }
  978. }
  979. }
  980. }
  981. }
  982. }
  983. </style>