confirmOrder.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923
  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. </vie>
  11. </view>
  12. <view class="arrow-box">
  13. <image src="https://bjyjb-1362704775.cos.ap-chongqing.myqcloud.com/app/newImages/shopping/arrow_gray.png" mode=""></image>
  14. </view>
  15. </view>
  16. <view class="address-box" v-if="address!=null" @click="openAddress()">
  17. <view class="left">
  18. <view class="name-box">
  19. <text class="text name">{{address.realName}}</text>
  20. <text class="text" v-if="address.phone!=null">{{address.phone}}</text>
  21. </view>
  22. <view class="address">
  23. {{address.province}}{{address.city}}{{address.district}}{{address.detail}}
  24. </view>
  25. </view>
  26. <view class="arrow-box">
  27. <image src="https://bjyjb-1362704775.cos.ap-chongqing.myqcloud.com/app/newImages/shopping/arrow_gray.png" mode=""></image>
  28. </view>
  29. </view>
  30. <!-- 药品列表 -->
  31. <view class="shopbox" v-for="(shop,idx) in carts" :key="idx">
  32. <view class="shopbox-name" v-if="shop.storeName && shop.storeName != 'null'">
  33. <text>{{shop.storeName}}</text>
  34. </view>
  35. <view class="goods-list">
  36. <view v-for="(item,index) in shop.list" :key="index" class="item">
  37. <view class="img-box">
  38. <image :src="item.productAttrImage || item.productImage" mode="aspectFill"></image>
  39. </view>
  40. <view class="info-box">
  41. <view>
  42. <view class="name-box ellipsis2">
  43. <view class="tag" :style="{background:_background(item.productType)}">{{$getDictLabelName("storeProductType",item.productType)}}</view>
  44. {{item.commonName&&item.commonName!=='-'?item.commonName:item.productName}}
  45. </view>
  46. <view class="spec ellipsis2">{{item.productAttrName}}</view>
  47. </view>
  48. <view class="price-num">
  49. <view class="price">
  50. <text class="unit">¥</text>
  51. <text class="num">{{item.price? item.price.toFixed(2): '0.00'}}</text>
  52. </view>
  53. <view class="num">x{{item.cartNum}}</view>
  54. </view>
  55. </view>
  56. </view>
  57. <!-- 运费 -->
  58. <view class="points">
  59. <view class="left">
  60. <text class="text">运费</text>
  61. </view>
  62. <view class="right" v-if="price&&price.length > 0">
  63. <text class="text">{{price[idx].payPostage==null||price[idx].payPostage==0?'免运费':price[idx].payPostage.toFixed(2)}}</text>
  64. </view>
  65. </view>
  66. <!-- 备注 -->
  67. <view class="points">
  68. <view class="left">
  69. <text class="text">备注</text>
  70. </view>
  71. <view class="remarks">
  72. <input type="text" v-model="shop.markinfo" placeholder="备注留言(选填)" placeholder-class="input" />
  73. </view>
  74. </view>
  75. </view>
  76. </view>
  77. <!-- 积分 -->
  78. <view class="price-info">
  79. <view class="price-info-title">价格明细</view>
  80. <view class="points">
  81. <view class="left">
  82. <text class="text">商品总价</text>
  83. </view>
  84. <view class="right" style="align-items: baseline;">
  85. <text class="price-info-unit">¥</text>
  86. <text class="price-info-num">{{priceAll.totalPrice.toFixed(2)}}</text>
  87. </view>
  88. </view>
  89. <view class="points">
  90. <view class="left">
  91. <image src="https://bjyjb-1362704775.cos.ap-chongqing.myqcloud.com/app/newImages/shopping/points.png" mode=""></image>
  92. <text class="text">可用积分</text>
  93. </view>
  94. <view class="right">
  95. <text class="text">{{priceAll.usedIntegral}}积分</text>
  96. <evan-switch @change="integralChange" v-model="checked" activeColor="#0bb3f2" inactiveColor="rgba(0, 0, 0, 0.1)"></evan-switch>
  97. </view>
  98. </view>
  99. <view class="points" @click="openCoupon()">
  100. <view class="left">
  101. <text class="text">优惠券</text>
  102. </view>
  103. <view class="right">
  104. <text class="text">{{couponText}}</text>
  105. <image src="https://bjyjb-1362704775.cos.ap-chongqing.myqcloud.com/app/newImages/shopping/arrow4.png" mode=""></image>
  106. </view>
  107. </view>
  108. <view class="points">
  109. <view class="left">
  110. <text class="text">合计</text>
  111. </view>
  112. <view class="right" style="align-items: baseline;">
  113. <text class="price-info-unit">¥</text>
  114. <text class="price-info-num">{{priceAll.payPrice.toFixed(2)}}</text>
  115. </view>
  116. </view>
  117. </view>
  118. <!-- <view class="points">
  119. <view class="left">
  120. <text class="text">服务费</text>
  121. </view>
  122. <view class="right">
  123. <text class="text">{{price.serviceFee? price.serviceFee.toFixed(2):'0.00'}}</text>
  124. </view>
  125. </view> -->
  126. <!-- 备注 -->
  127. <!-- <view class="remarks">
  128. <input type="text" v-model="form.mark" placeholder="备注留言(选填)" placeholder-class="input" />
  129. </view> -->
  130. <view class="agreement">
  131. <label>
  132. <checkbox :checked="isAgreement" color="#2583EB" style="transform:scale(0.7)" @click="handleAgreement()" />药品属于特殊商品除药品质量问题外,一经售出,不得退换
  133. </label>
  134. </view>
  135. </view>
  136. <!-- 底部按钮 -->
  137. <view class="btn-foot">
  138. <view class="right">
  139. <view class="total">
  140. <text class="label">合计:</text>
  141. <view class="price">
  142. <text class="unit">¥</text>
  143. <text class="num">{{priceAll.payPrice.toFixed(2)}}</text>
  144. </view>
  145. </view>
  146. <view class="btn" @click="submitOrder">提交订单</view>
  147. </view>
  148. </view>
  149. <popupBottom ref="popup" :visible.sync="couponVisible" title=" " bgColor="#f5f5f5" radius="30" maxHeight="60%">
  150. <view class="coupon" style="height:650rpx;">
  151. <view class="coupon-list" v-if="couponsList.length > 0">
  152. <view class="item acea-row row-center-wrapper" v-for="(item, index) in couponsList" :key="index">
  153. <view class="money" >
  154. <image v-if="item.status==0" class="img" src="https://bjyjb-1362704775.cos.ap-chongqing.myqcloud.com/app/newImages/shopping/coupon1.png" mode="widthFix"></image>
  155. <image v-if="item.status!=0" class="img" src="https://bjyjb-1362704775.cos.ap-chongqing.myqcloud.com/app/newImages/shopping/coupon2.png" mode="widthFix"></image>
  156. <view style="z-index: 999;">
  157. ¥<span class="num">{{ item.couponPrice }}</span>
  158. </view>
  159. <view class="pic-num" >满{{ item.useMinPrice }}元可用</view>
  160. </view>
  161. <view class="text">
  162. <view class="condition line1">
  163. {{ item.couponTitle }}
  164. </view>
  165. <view class="data acea-row row-between-wrapper">
  166. <view >{{ item.limitTime }}到期</view>
  167. <view class="bnt bg-color-red" @click="couponSelect(item)" >选择</view>
  168. </view>
  169. </view>
  170. </view>
  171. </view>
  172. <view v-if="couponsList.length == 0" class="no-data-box" >
  173. <image src="https://bjyjb-1362704775.cos.ap-chongqing.myqcloud.com/app/newImages/empty_icon.png" mode="aspectFit"></image>
  174. <view class="empty-title">暂无数据</view>
  175. </view>
  176. </view>
  177. </popupBottom>
  178. </view>
  179. </template>
  180. <script>
  181. import {getWeixinOrderTemps} from '@/api/common'
  182. import {confirm,computed,create} from '@/api/myStoreOrder.js'
  183. import { getMyEnableCouponList } from './api/coupon'
  184. import EvanSwitch from './components/evan-switch.vue'
  185. import popupBottom from './components/px-popup-bottom.vue'
  186. export default {
  187. components: {
  188. EvanSwitch,
  189. popupBottom
  190. },
  191. data() {
  192. return {
  193. isAgreement: true,
  194. temps:[],
  195. couponUserId:null,
  196. couponText:"请选择",
  197. couponsList:[],
  198. couponVisible:false,
  199. price:[],
  200. address:null,
  201. carts:[],
  202. checked: false,
  203. type:null,
  204. cartIds:null,
  205. form:{
  206. useIntegral:0,
  207. orderKey:null,
  208. addressId:null,
  209. mark:null,
  210. companyId:null,
  211. companyUserId:null
  212. },
  213. storeId: '',
  214. priceAll:{
  215. payPrice:0,
  216. totalPostage:0,
  217. usedIntegral:0,
  218. totalPrice:0.00,
  219. },
  220. confirmParam: []
  221. }
  222. },
  223. computed: {
  224. _background() {
  225. //productType: 1:OTC,2:Rx,3:非药品,4:器械
  226. return (productType)=> {
  227. switch (productType) {
  228. case 1: return '#37E2EA' // OTC
  229. case 2: return 'red' // Rx
  230. case 3: return '#2583EB' // 非药品
  231. case 4: return '#999' // 器械
  232. default: return '#ccc'
  233. }
  234. }
  235. }
  236. },
  237. onLoad(option) {
  238. this.form.companyId=option.companyId;
  239. this.form.companyUserId=option.companyUserId;
  240. // this.cartIds=option.cartIds;
  241. this.type=option.type;
  242. this.storeId=option.storeId;
  243. this.confirmParam = JSON.parse(decodeURIComponent(option.confirmParam))
  244. this.confirm();
  245. uni.$on('updateAddress', (e) => {
  246. this.address=e;
  247. this.form.addressId=e.addressId;
  248. this.computed()
  249. })
  250. this.getWeixinOrderTemps();
  251. },
  252. onUnload() {
  253. uni.$off('updateAddress')
  254. },
  255. methods: {
  256. handleAgreement() {
  257. this.isAgreement = !this.isAgreement;
  258. },
  259. getWeixinOrderTemps:function(){
  260. getWeixinOrderTemps().then(
  261. res => {
  262. if(res.code==200){
  263. this.temps=res.temp
  264. console.log(this.temps)
  265. }else{
  266. }
  267. },
  268. rej => {}
  269. );
  270. },
  271. couponSelect(item){
  272. this.couponText="-¥"+item.couponPrice.toFixed(2);
  273. this.couponUserId=item.id;
  274. this.couponVisible=false;
  275. this.computed();
  276. },
  277. openCoupon(){
  278. let that = this;
  279. var data={couponType:0,useMinPrice:this.price.payPrice};
  280. getMyEnableCouponList(data).then(res => {
  281. this.couponVisible=true;
  282. that.couponsList = res.data
  283. })
  284. },
  285. integralChange(e){
  286. console.log(e)
  287. this.form.useIntegral=e?1:0
  288. this.computed()
  289. },
  290. confirm(){
  291. if(this.confirmParam && this.confirmParam.length > 0) {
  292. confirm(this.confirmParam).then(
  293. res => {
  294. if(res.code==200){
  295. this.carts=res.carts.map(item=>({
  296. ...item,
  297. markinfo: ""
  298. }));
  299. this.form.orderKey=res.orderKeys;
  300. if(res.address!=null){
  301. this.form.addressId=res.address.id;
  302. this.address=res.address;
  303. }
  304. this.computed()
  305. }else{
  306. uni.showToast({
  307. icon:'none',
  308. title: res.msg,
  309. });
  310. }
  311. },
  312. rej => {}
  313. )
  314. }else {
  315. uni.showToast({
  316. icon: 'none',
  317. title:'订单参数不存在~',
  318. });
  319. }
  320. },
  321. computed(){
  322. let data = {
  323. companyId:this.form.companyId,
  324. couponUserId:this.couponUserId,
  325. orderKeys:this.form.orderKey,
  326. addressId:this.form.addressId,
  327. useIntegral:this.form.useIntegral,
  328. };
  329. computed(data).then(
  330. res => {
  331. if(res.code==200){
  332. this.price= res.data && res.data.length > 0 ? res.data : []
  333. this.priceAll = res.data && res.data.length > 0 ? res.data[res.data.length -1] : {
  334. payPrice:0,
  335. totalPostage:0,
  336. usedIntegral:0,
  337. totalPrice:0.00,
  338. }
  339. }else{
  340. if(res.code==501){
  341. uni.showToast({
  342. icon:'none',
  343. title: res.msg,
  344. });
  345. setTimeout(function(){
  346. uni.navigateBack({
  347. delta:1
  348. })
  349. },500);
  350. return;
  351. }
  352. else{
  353. uni.showToast({
  354. icon:'none',
  355. title: res.msg,
  356. });
  357. }
  358. }
  359. },
  360. rej => {}
  361. );
  362. },
  363. // 提交订单
  364. submitOrder() {
  365. var that=this;
  366. if(this.form.orderKey==null || this.form.orderKey.length == 0){
  367. uni.showToast({
  368. icon:'none',
  369. title: '订单KEY不存在',
  370. });
  371. return;
  372. }
  373. if(this.form.addressId==null){
  374. uni.showToast({
  375. icon:'none',
  376. title: '收货地址不能为空',
  377. });
  378. return;
  379. }
  380. if(!this.isAgreement) {
  381. uni.showToast({
  382. icon:'none',
  383. title: '购买前请同意相关须知',
  384. });
  385. return;
  386. }
  387. uni.requestSubscribeMessage({
  388. tmplIds: this.temps,
  389. success(res) {
  390. that.createOrder();
  391. },
  392. fail(res) {
  393. that.createOrder();
  394. }
  395. })
  396. },
  397. createOrder(){
  398. const mark = this.carts.map(item => item.markinfo)
  399. var that=this;
  400. var data=null;
  401. var tuiUserId=uni.getStorageSync('tuiUserId');
  402. uni.showLoading({
  403. title: '正在处理中...'
  404. });
  405. if(tuiUserId!=null&&tuiUserId!=undefined&&tuiUserId>0){
  406. data = {orderCreateType:1,tuiUserId:tuiUserId,companyId:this.form.companyId,companyUserId:this.form.companyUserId,couponUserId:this.couponUserId,mark:mark,orderKeys:this.form.orderKey,addressId:this.form.addressId,useIntegral:this.form.useIntegral,payType:1,appId: getApp().globalData.appId};
  407. }
  408. else{
  409. data = {orderCreateType:1,companyId:this.form.companyId,companyUserId:this.form.companyUserId,couponUserId:this.couponUserId,mark:mark,orderKeys:this.form.orderKey,addressId:this.form.addressId,useIntegral:this.form.useIntegral,payType:1,appId: getApp().globalData.appId};
  410. }
  411. if(this.storeId!=null&& this.storeId>0){
  412. data.storeId=this.storeId;
  413. }
  414. create(data).then(
  415. res => {
  416. uni.hideLoading()
  417. if(res.code == 200){
  418. uni.hideLoading()
  419. if(res.data.some(item=> item.order.isPrescribe) == 1) {
  420. setTimeout(function(){
  421. let orderIds = res.data.filter(item=> item.order.isPrescribe == 1).map(it=>it.order.id)
  422. orderIds = orderIds.join(',')
  423. uni.redirectTo({
  424. url:"/pages_shopping/prescribe?orderId="+orderIds+"&combinationOrderId="+encodeURIComponent(res.data[0].order.combinationOrderId)
  425. })
  426. },200);
  427. } else {
  428. setTimeout(function(){
  429. uni.redirectTo({
  430. url: '/pages_shopping/paymentOrder?combinationOrderId='+encodeURIComponent(res.data[0].order.combinationOrderId)
  431. })
  432. },200);
  433. }
  434. // if(res.order.isPrescribe==1){
  435. // setTimeout(function(){
  436. // uni.redirectTo({
  437. // url:"/pages_shopping/prescribe?orderId="+res.order.id
  438. // })
  439. // },200);
  440. // }
  441. // else{
  442. // setTimeout(function(){
  443. // uni.redirectTo({
  444. // url: '/pages_shopping/paymentOrder?orderId='+res.order.id
  445. // })
  446. // },200);
  447. // }
  448. return;
  449. }
  450. else{
  451. if(res.code==501){
  452. uni.showToast({
  453. icon:'none',
  454. title: res.msg,
  455. });
  456. setTimeout(function(){
  457. uni.navigateBack({
  458. delta:1
  459. })
  460. },200);
  461. return;
  462. }
  463. else{
  464. uni.showToast({
  465. icon:'none',
  466. title: res.msg,
  467. });
  468. }
  469. }
  470. },
  471. rej => {}
  472. );
  473. },
  474. openAddress(){
  475. uni.navigateTo({
  476. url: '/pages_user/address'
  477. })
  478. }
  479. }
  480. }
  481. </script>
  482. <style lang="scss" scoped>
  483. .inner-box{
  484. padding: 20upx 20upx 140upx;
  485. .address-box{
  486. box-sizing: border-box;
  487. min-height: 171upx;
  488. background: #FFFFFF;
  489. border-radius: 16upx;
  490. background-image: url(https://bjyjb-1362704775.cos.ap-chongqing.myqcloud.com/app/newImages/shopping/address_bg.png);
  491. background-repeat: no-repeat;
  492. background-size: 100% 30upx;
  493. background-position: left bottom;
  494. padding: 38upx 30upx 36upx;
  495. display: flex;
  496. align-items: center;
  497. justify-content: space-between;
  498. .left{
  499. width: 92%;
  500. .name-box{
  501. display: flex;
  502. align-items: center;
  503. .text{
  504. font-size: 32upx;
  505. font-family: PingFang SC;
  506. font-weight: bold;
  507. color: #111111;
  508. line-height: 1;
  509. &.name{
  510. margin-right: 30upx;
  511. }
  512. }
  513. }
  514. .address{
  515. font-size: 28upx;
  516. font-family: PingFang SC;
  517. font-weight: 500;
  518. color: #666666;
  519. line-height: 42upx;
  520. text-align:left;
  521. margin-top: 23upx;
  522. }
  523. }
  524. .arrow-box{
  525. width: 12upx;
  526. height: 23upx;
  527. display: flex;
  528. align-items: cenetr;
  529. justify-content: cenetr;
  530. image{
  531. width: 100%;
  532. height: 100%;
  533. }
  534. }
  535. }
  536. .shopbox {
  537. background: #FFFFFF;
  538. border-radius: 16rpx;
  539. margin: 20rpx 0;
  540. .points {
  541. padding: 0 !important;
  542. }
  543. .remarks {
  544. padding: 0 !important;
  545. }
  546. }
  547. .shopbox-name {
  548. padding: 30rpx 30rpx 0 30rpx;
  549. font-family: PingFang SC, PingFang SC;
  550. font-weight: bold;
  551. font-size: 30rpx;
  552. color: #111;
  553. overflow: hidden;
  554. white-space: nowrap;
  555. text-overflow: ellipsis;
  556. }
  557. .goods-list{
  558. // margin-top: 20upx;
  559. padding: 0 30upx;
  560. background-color: #FFFFFF;
  561. border-radius: 16upx;
  562. .item{
  563. padding: 30upx 0;
  564. border-bottom: 1px solid #EDEEEF;
  565. display: flex;
  566. align-items: center;
  567. .img-box{
  568. width: 160upx;
  569. height: 160upx;
  570. margin-right: 30upx;
  571. image{
  572. width: 100%;
  573. height: 100%;
  574. }
  575. }
  576. .info-box{
  577. width: calc(100% - 190upx);
  578. height: 160upx;
  579. display: flex;
  580. flex-direction: column;
  581. justify-content: space-between;
  582. .name-box{
  583. font-size: 28upx;
  584. font-family: PingFang SC;
  585. font-weight: 500;
  586. color: #111111;
  587. line-height: 40upx;
  588. .tag{
  589. display: inline-block;
  590. padding: 0 6upx;
  591. height: 30upx;
  592. background: linear-gradient(90deg, #66b2ef 0%, #0bb3f2 100%);
  593. border-radius: 4upx;
  594. margin-right: 10upx;
  595. font-size: 22upx;
  596. font-family: PingFang SC;
  597. font-weight: bold;
  598. color: #FFFFFF;
  599. line-height: 30upx;
  600. float: left;
  601. margin-top: 7upx;
  602. }
  603. }
  604. .spec{
  605. margin-top: 10upx;
  606. font-size: 24upx;
  607. font-family: PingFang SC;
  608. font-weight: 500;
  609. color: #999999;
  610. line-height: 1;
  611. }
  612. .price-num{
  613. display: flex;
  614. align-items: center;
  615. justify-content: space-between;
  616. .price{
  617. display: flex;
  618. align-items: flex-end;
  619. .unit{
  620. font-size: 24upx;
  621. font-family: PingFang SC;
  622. font-weight: 500;
  623. color: #111111;
  624. line-height: 1.2;
  625. margin-right: 4upx;
  626. }
  627. .num{
  628. font-size: 32upx;
  629. font-family: PingFang SC;
  630. font-weight: 500;
  631. color: #111111;
  632. line-height: 1;
  633. }
  634. }
  635. .num{
  636. font-size: 24upx;
  637. font-family: PingFang SC;
  638. font-weight: 500;
  639. color: #999999;
  640. line-height: 1;
  641. }
  642. }
  643. }
  644. }
  645. .sub-total{
  646. height: 88upx;
  647. display: flex;
  648. align-items: center;
  649. justify-content: flex-end;
  650. .label{
  651. font-size: 24upx;
  652. font-family: PingFang SC;
  653. font-weight: 500;
  654. color: #999999;
  655. }
  656. .price{
  657. display: flex;
  658. align-items: flex-end;
  659. .unit{
  660. font-size: 24upx;
  661. font-family: PingFang SC;
  662. font-weight: 500;
  663. color: #FF6633;
  664. line-height: 1.2;
  665. margin-right: 4upx;
  666. }
  667. .num{
  668. font-size: 32upx;
  669. font-family: PingFang SC;
  670. font-weight: bold;
  671. color: #FF6633;
  672. line-height: 1;
  673. }
  674. }
  675. }
  676. }
  677. .price-info {
  678. background: #FFFFFF;
  679. border-radius: 16upx;
  680. &-title {
  681. padding: 30rpx 30rpx 20rpx 30rpx;
  682. font-family: PingFang SC, PingFang SC;
  683. font-weight: 500;
  684. font-size: 30rpx;
  685. color: #111;
  686. }
  687. &-unit {
  688. font-size: 24rpx;
  689. }
  690. &-num {
  691. font-size: 28rpx;
  692. }
  693. }
  694. .points{
  695. height: 88upx;
  696. width: 100%;
  697. padding: 0 30upx;
  698. box-sizing: border-box;
  699. background: #FFFFFF;
  700. border-radius: 16upx;
  701. display: flex;
  702. align-items: center;
  703. justify-content: space-between;
  704. .left{
  705. display: flex;
  706. align-items: center;
  707. image{
  708. width: 28upx;
  709. height: 28upx;
  710. margin-right: 20upx;
  711. }
  712. .text{
  713. font-size: 28upx;
  714. font-family: PingFang SC;
  715. font-weight: 500;
  716. color: #666666;
  717. }
  718. }
  719. .right{
  720. display: flex;
  721. align-items: center;
  722. .text{
  723. font-size: 28upx;
  724. font-family: PingFang SC;
  725. font-weight: 500;
  726. color: #111111;
  727. }
  728. image{
  729. margin-left: 15upx;
  730. width: 14upx;
  731. height: 24upx;
  732. }
  733. }
  734. }
  735. .remarks{
  736. height: 88upx;
  737. padding: 0 30upx;
  738. background: #FFFFFF;
  739. border-radius: 16upx;
  740. display: flex;
  741. align-items: center;
  742. input{
  743. width: 100%;
  744. font-size: 28upx;
  745. font-family: PingFang SC;
  746. font-weight: 500;
  747. color: #000000;
  748. }
  749. .input{
  750. font-size: 28upx;
  751. font-family: PingFang SC;
  752. font-weight: 500;
  753. color: #999999;
  754. }
  755. }
  756. }
  757. .agreement {
  758. font-size: 28rpx;
  759. font-family: PingFang SC;
  760. font-weight: 500;
  761. color: red;
  762. padding: 30rpx 0;
  763. }
  764. .btn-foot{
  765. box-sizing: border-box;
  766. width: 100%;
  767. height: 121upx;
  768. background: #FFFFFF;
  769. padding: 16upx;
  770. display: flex;
  771. align-items: center;
  772. justify-content: flex-end;
  773. position: fixed;
  774. left: 0;
  775. bottom: 0;
  776. z-index: 99;
  777. .right{
  778. display: flex;
  779. align-items: center;
  780. .total{
  781. display: flex;
  782. align-items: flex-end;
  783. margin-right: 36upx;
  784. .label{
  785. font-size: 26upx;
  786. font-family: PingFang SC;
  787. font-weight: 500;
  788. color: #999999;
  789. line-height: 1.5;
  790. }
  791. .price{
  792. display: flex;
  793. align-items: flex-end;
  794. .unit{
  795. font-size: 32upx;
  796. font-family: PingFang SC;
  797. font-weight: bold;
  798. color: #FF6633;
  799. line-height: 1.2;
  800. margin-right: 10upx;
  801. }
  802. .num{
  803. font-size: 50upx;
  804. font-family: PingFang SC;
  805. font-weight: bold;
  806. color: #FF6633;
  807. line-height: 1;
  808. }
  809. }
  810. }
  811. .btn{
  812. width: 200upx;
  813. height: 88upx;
  814. line-height: 88upx;
  815. text-align: center;
  816. font-size: 30upx;
  817. font-family: PingFang SC;
  818. font-weight: bold;
  819. color: #FFFFFF;
  820. background: #0bb3f2;
  821. border-radius: 44upx;
  822. }
  823. }
  824. }
  825. // </style>
  826. // <style lang="less" scoped>
  827. .coupon {
  828. height: 100%;
  829. }
  830. /*优惠券列表公共*/
  831. .coupon-list {
  832. }
  833. .coupon-list .item {
  834. display: flex;
  835. flex-direction: column;
  836. justify-content: center;
  837. align-items: center;
  838. width: 100%;
  839. height: 1.7 * 100rpx;
  840. margin-bottom: 0.16 * 100rpx;
  841. }
  842. .coupon-list .item .money {
  843. background-size: 100% 100%;
  844. width: 2.4 * 100rpx;
  845. height: 100%;
  846. color: #fff;
  847. font-size: 0.36 * 100rpx;
  848. font-weight: bold;
  849. text-align: center;
  850. display: flex;
  851. flex-direction: column;
  852. align-items: center;
  853. justify-content: center;
  854. position: relative;
  855. }
  856. .coupon-list .item .money .img{
  857. position: absolute;
  858. width: 2.4 * 100rpx;
  859. height: 100%;
  860. color: #fff;
  861. }
  862. .coupon-list .item .money .num {
  863. font-size: 0.6 * 100rpx;
  864. }
  865. .coupon-list .item .money .pic-num {
  866. font-size: 20rpx;
  867. z-index: 99;
  868. }
  869. .coupon-list .item .text {
  870. width: 4.5 * 100rpx;
  871. padding: 0 0.17 * 100rpx 0 0.24 * 100rpx;
  872. background-color: #fff;
  873. box-sizing: border-box;
  874. }
  875. .coupon-list .item .text .condition {
  876. font-size: 0.3 * 100rpx;
  877. color: #282828;
  878. height: 0.93 * 100rpx;
  879. line-height: 0.93 * 100rpx;
  880. border-bottom: 1px solid #f0f0f0;
  881. }
  882. .coupon-list .item .text .data {
  883. font-size: 0.2 * 100rpx;
  884. color: #999;
  885. height: 0.76 * 100rpx;
  886. }
  887. .coupon-list .item .text .data .bnt {
  888. width: 1.36 * 100rpx;
  889. height: 0.44 * 100rpx;
  890. border-radius: 0.22 * 100rpx;
  891. font-size: 0.22 * 100rpx;
  892. color: #fff;
  893. text-align: center;
  894. line-height: 0.44 * 100rpx;
  895. background-color: red;
  896. }
  897. .coupon-list .item .text .data .bnt.gray {
  898. background-color: #ccc;
  899. }
  900. </style>