packageOrderPay.vue 24 KB

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