confirmCreateOrder.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932
  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. createOrderKey:null,
  213. },
  214. storeId: '',
  215. priceAll:{
  216. payPrice:0,
  217. totalPostage:0,
  218. usedIntegral:0,
  219. totalPrice:0.00,
  220. },
  221. confirmParam: []
  222. }
  223. },
  224. computed: {
  225. _background() {
  226. //productType: 1:OTC,2:Rx,3:非药品,4:器械
  227. return (productType)=> {
  228. switch (productType) {
  229. case 1: return '#37E2EA' // OTC
  230. case 2: return 'red' // Rx
  231. case 3: return '#2583EB' // 非药品
  232. case 4: return '#999' // 器械
  233. default: return '#ccc'
  234. }
  235. }
  236. }
  237. },
  238. onLoad(option) {
  239. this.form.createOrderKey=option.createOrderKey;
  240. this.form.companyId=option.companyId;
  241. this.form.companyUserId=option.companyUserId;
  242. // this.cartIds=option.cartIds;
  243. this.type=option.type;
  244. this.storeId=option.storeId;
  245. this.confirmParam = JSON.parse(decodeURIComponent(option.confirmParam))
  246. this.confirm();
  247. uni.$on('updateAddress', (e) => {
  248. this.address=e;
  249. this.form.addressId=e.addressId;
  250. this.computed()
  251. })
  252. this.getWeixinOrderTemps();
  253. },
  254. onUnload() {
  255. uni.$off('updateAddress')
  256. },
  257. methods: {
  258. handleAgreement() {
  259. this.isAgreement = !this.isAgreement;
  260. },
  261. getWeixinOrderTemps:function(){
  262. getWeixinOrderTemps().then(
  263. res => {
  264. if(res.code==200){
  265. this.temps=res.temp
  266. console.log(this.temps)
  267. }else{
  268. }
  269. },
  270. rej => {}
  271. );
  272. },
  273. couponSelect(item){
  274. this.couponText="-¥"+item.couponPrice.toFixed(2);
  275. this.couponUserId=item.id;
  276. this.couponVisible=false;
  277. this.computed();
  278. },
  279. openCoupon(){
  280. let that = this;
  281. var data={couponType:0,useMinPrice:this.price.payPrice};
  282. getMyEnableCouponList(data).then(res => {
  283. this.couponVisible=true;
  284. that.couponsList = res.data
  285. })
  286. },
  287. integralChange(e){
  288. console.log(e)
  289. this.form.useIntegral=e?1:0
  290. this.computed()
  291. },
  292. confirm(){
  293. if(this.confirmParam && this.confirmParam.length > 0) {
  294. confirm(this.confirmParam).then(
  295. res => {
  296. if(res.code==200){
  297. this.carts=res.carts.map(item=>({
  298. ...item,
  299. markinfo: ""
  300. }));
  301. this.form.orderKey=res.orderKeys;
  302. if(res.address!=null){
  303. this.form.addressId=res.address.id;
  304. this.address=res.address;
  305. }
  306. this.computed()
  307. }else{
  308. uni.showToast({
  309. icon:'none',
  310. title: res.msg,
  311. });
  312. }
  313. },
  314. rej => {}
  315. )
  316. }else {
  317. uni.showToast({
  318. icon: 'none',
  319. title:'订单参数不存在~',
  320. });
  321. }
  322. },
  323. computed(){
  324. let data = {
  325. companyId:this.form.companyId,
  326. couponUserId:this.couponUserId,
  327. orderKeys:this.form.orderKey,
  328. addressId:this.form.addressId,
  329. useIntegral:this.form.useIntegral,
  330. createOrderKey:this.form.createOrderKey
  331. };
  332. computed(data).then(
  333. res => {
  334. if(res.code==200){
  335. this.price= res.data && res.data.length > 0 ? res.data : []
  336. this.priceAll = res.data && res.data.length > 0 ? res.data[res.data.length -1] : {
  337. payPrice:0,
  338. totalPostage:0,
  339. usedIntegral:0,
  340. totalPrice:0.00,
  341. }
  342. }else{
  343. if(res.code==501){
  344. uni.showToast({
  345. icon:'none',
  346. title: res.msg,
  347. });
  348. setTimeout(function(){
  349. uni.navigateBack({
  350. delta:1
  351. })
  352. },500);
  353. return;
  354. }
  355. else{
  356. uni.showToast({
  357. icon:'none',
  358. title: res.msg,
  359. });
  360. }
  361. }
  362. },
  363. rej => {}
  364. );
  365. },
  366. // 提交订单
  367. submitOrder() {
  368. var that=this;
  369. if(this.form.orderKey==null || this.form.orderKey.length == 0){
  370. uni.showToast({
  371. icon:'none',
  372. title: '订单KEY不存在',
  373. });
  374. return;
  375. }
  376. if(this.form.addressId==null){
  377. uni.showToast({
  378. icon:'none',
  379. title: '收货地址不能为空',
  380. });
  381. return;
  382. }
  383. if(!this.isAgreement) {
  384. uni.showToast({
  385. icon:'none',
  386. title: '购买前请同意相关须知',
  387. });
  388. return;
  389. }
  390. uni.requestSubscribeMessage({
  391. tmplIds: this.temps,
  392. success(res) {
  393. that.createOrder();
  394. },
  395. fail(res) {
  396. that.createOrder();
  397. }
  398. })
  399. },
  400. createOrder(){
  401. const mark = this.carts.map(item => item.markinfo)
  402. var that=this;
  403. var data=null;
  404. var tuiUserId=uni.getStorageSync('tuiUserId');
  405. uni.showLoading({
  406. title: '正在处理中...'
  407. });
  408. // if(tuiUserId!=null&&tuiUserId!=undefined&&tuiUserId>0){
  409. // 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};
  410. // }
  411. // else{
  412. // 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};
  413. // }
  414. if(tuiUserId!=null&&tuiUserId!=undefined&&tuiUserId>0){
  415. data = {createOrderKey:this.form.createOrderKey,orderCreateType:3,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};
  416. }
  417. else{
  418. data = {createOrderKey:this.form.createOrderKey,orderCreateType:3,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};
  419. }
  420. if(this.storeId!=null&& this.storeId>0){
  421. data.storeId=this.storeId;
  422. }
  423. create(data).then(
  424. res => {
  425. uni.hideLoading()
  426. if(res.code == 200){
  427. uni.hideLoading()
  428. if(res.data.some(item=> item.order.isPrescribe) == 1) {
  429. setTimeout(function(){
  430. let orderIds = res.data.filter(item=> item.order.isPrescribe == 1).map(it=>it.order.id)
  431. orderIds = orderIds.join(',')
  432. uni.redirectTo({
  433. url:"/pages_shopping/prescribe?orderId="+orderIds+"&combinationOrderId="+encodeURIComponent(res.data[0].order.combinationOrderId)
  434. })
  435. },200);
  436. } else {
  437. setTimeout(function(){
  438. uni.redirectTo({
  439. url: '/pages_shopping/paymentOrder?combinationOrderId='+encodeURIComponent(res.data[0].order.combinationOrderId)
  440. })
  441. },200);
  442. }
  443. // if(res.order.isPrescribe==1){
  444. // setTimeout(function(){
  445. // uni.redirectTo({
  446. // url:"/pages_shopping/prescribe?orderId="+res.order.id
  447. // })
  448. // },200);
  449. // }
  450. // else{
  451. // setTimeout(function(){
  452. // uni.redirectTo({
  453. // url: '/pages_shopping/paymentOrder?orderId='+res.order.id
  454. // })
  455. // },200);
  456. // }
  457. return;
  458. }
  459. else{
  460. if(res.code==501){
  461. uni.showToast({
  462. icon:'none',
  463. title: res.msg,
  464. });
  465. setTimeout(function(){
  466. uni.navigateBack({
  467. delta:1
  468. })
  469. },200);
  470. return;
  471. }
  472. else{
  473. uni.showToast({
  474. icon:'none',
  475. title: res.msg,
  476. });
  477. }
  478. }
  479. },
  480. rej => {}
  481. );
  482. },
  483. openAddress(){
  484. uni.navigateTo({
  485. url: '/pages_user/address'
  486. })
  487. }
  488. }
  489. }
  490. </script>
  491. <style lang="scss" scoped>
  492. .inner-box{
  493. padding: 20upx 20upx 140upx;
  494. .address-box{
  495. box-sizing: border-box;
  496. min-height: 171upx;
  497. background: #FFFFFF;
  498. border-radius: 16upx;
  499. background-image: url(https://bjyjb-1362704775.cos.ap-chongqing.myqcloud.com/app/newImages/shopping/address_bg.png);
  500. background-repeat: no-repeat;
  501. background-size: 100% 30upx;
  502. background-position: left bottom;
  503. padding: 38upx 30upx 36upx;
  504. display: flex;
  505. align-items: center;
  506. justify-content: space-between;
  507. .left{
  508. width: 92%;
  509. .name-box{
  510. display: flex;
  511. align-items: center;
  512. .text{
  513. font-size: 32upx;
  514. font-family: PingFang SC;
  515. font-weight: bold;
  516. color: #111111;
  517. line-height: 1;
  518. &.name{
  519. margin-right: 30upx;
  520. }
  521. }
  522. }
  523. .address{
  524. font-size: 28upx;
  525. font-family: PingFang SC;
  526. font-weight: 500;
  527. color: #666666;
  528. line-height: 42upx;
  529. text-align:left;
  530. margin-top: 23upx;
  531. }
  532. }
  533. .arrow-box{
  534. width: 12upx;
  535. height: 23upx;
  536. display: flex;
  537. align-items: cenetr;
  538. justify-content: cenetr;
  539. image{
  540. width: 100%;
  541. height: 100%;
  542. }
  543. }
  544. }
  545. .shopbox {
  546. background: #FFFFFF;
  547. border-radius: 16rpx;
  548. margin: 20rpx 0;
  549. .points {
  550. padding: 0 !important;
  551. }
  552. .remarks {
  553. padding: 0 !important;
  554. }
  555. }
  556. .shopbox-name {
  557. padding: 30rpx 30rpx 0 30rpx;
  558. font-family: PingFang SC, PingFang SC;
  559. font-weight: bold;
  560. font-size: 30rpx;
  561. color: #111;
  562. overflow: hidden;
  563. white-space: nowrap;
  564. text-overflow: ellipsis;
  565. }
  566. .goods-list{
  567. // margin-top: 20upx;
  568. padding: 0 30upx;
  569. background-color: #FFFFFF;
  570. border-radius: 16upx;
  571. .item{
  572. padding: 30upx 0;
  573. border-bottom: 1px solid #EDEEEF;
  574. display: flex;
  575. align-items: center;
  576. .img-box{
  577. width: 160upx;
  578. height: 160upx;
  579. margin-right: 30upx;
  580. image{
  581. width: 100%;
  582. height: 100%;
  583. }
  584. }
  585. .info-box{
  586. width: calc(100% - 190upx);
  587. height: 160upx;
  588. display: flex;
  589. flex-direction: column;
  590. justify-content: space-between;
  591. .name-box{
  592. font-size: 28upx;
  593. font-family: PingFang SC;
  594. font-weight: 500;
  595. color: #111111;
  596. line-height: 40upx;
  597. .tag{
  598. display: inline-block;
  599. padding: 0 6upx;
  600. height: 30upx;
  601. background: linear-gradient(90deg, #66b2ef 0%, #0bb3f2 100%);
  602. border-radius: 4upx;
  603. margin-right: 10upx;
  604. font-size: 22upx;
  605. font-family: PingFang SC;
  606. font-weight: bold;
  607. color: #FFFFFF;
  608. line-height: 30upx;
  609. float: left;
  610. margin-top: 7upx;
  611. }
  612. }
  613. .spec{
  614. margin-top: 10upx;
  615. font-size: 24upx;
  616. font-family: PingFang SC;
  617. font-weight: 500;
  618. color: #999999;
  619. line-height: 1;
  620. }
  621. .price-num{
  622. display: flex;
  623. align-items: center;
  624. justify-content: space-between;
  625. .price{
  626. display: flex;
  627. align-items: flex-end;
  628. .unit{
  629. font-size: 24upx;
  630. font-family: PingFang SC;
  631. font-weight: 500;
  632. color: #111111;
  633. line-height: 1.2;
  634. margin-right: 4upx;
  635. }
  636. .num{
  637. font-size: 32upx;
  638. font-family: PingFang SC;
  639. font-weight: 500;
  640. color: #111111;
  641. line-height: 1;
  642. }
  643. }
  644. .num{
  645. font-size: 24upx;
  646. font-family: PingFang SC;
  647. font-weight: 500;
  648. color: #999999;
  649. line-height: 1;
  650. }
  651. }
  652. }
  653. }
  654. .sub-total{
  655. height: 88upx;
  656. display: flex;
  657. align-items: center;
  658. justify-content: flex-end;
  659. .label{
  660. font-size: 24upx;
  661. font-family: PingFang SC;
  662. font-weight: 500;
  663. color: #999999;
  664. }
  665. .price{
  666. display: flex;
  667. align-items: flex-end;
  668. .unit{
  669. font-size: 24upx;
  670. font-family: PingFang SC;
  671. font-weight: 500;
  672. color: #FF6633;
  673. line-height: 1.2;
  674. margin-right: 4upx;
  675. }
  676. .num{
  677. font-size: 32upx;
  678. font-family: PingFang SC;
  679. font-weight: bold;
  680. color: #FF6633;
  681. line-height: 1;
  682. }
  683. }
  684. }
  685. }
  686. .price-info {
  687. background: #FFFFFF;
  688. border-radius: 16upx;
  689. &-title {
  690. padding: 30rpx 30rpx 20rpx 30rpx;
  691. font-family: PingFang SC, PingFang SC;
  692. font-weight: 500;
  693. font-size: 30rpx;
  694. color: #111;
  695. }
  696. &-unit {
  697. font-size: 24rpx;
  698. }
  699. &-num {
  700. font-size: 28rpx;
  701. }
  702. }
  703. .points{
  704. height: 88upx;
  705. width: 100%;
  706. padding: 0 30upx;
  707. box-sizing: border-box;
  708. background: #FFFFFF;
  709. border-radius: 16upx;
  710. display: flex;
  711. align-items: center;
  712. justify-content: space-between;
  713. .left{
  714. display: flex;
  715. align-items: center;
  716. image{
  717. width: 28upx;
  718. height: 28upx;
  719. margin-right: 20upx;
  720. }
  721. .text{
  722. font-size: 28upx;
  723. font-family: PingFang SC;
  724. font-weight: 500;
  725. color: #666666;
  726. }
  727. }
  728. .right{
  729. display: flex;
  730. align-items: center;
  731. .text{
  732. font-size: 28upx;
  733. font-family: PingFang SC;
  734. font-weight: 500;
  735. color: #111111;
  736. }
  737. image{
  738. margin-left: 15upx;
  739. width: 14upx;
  740. height: 24upx;
  741. }
  742. }
  743. }
  744. .remarks{
  745. height: 88upx;
  746. padding: 0 30upx;
  747. background: #FFFFFF;
  748. border-radius: 16upx;
  749. display: flex;
  750. align-items: center;
  751. input{
  752. width: 100%;
  753. font-size: 28upx;
  754. font-family: PingFang SC;
  755. font-weight: 500;
  756. color: #000000;
  757. }
  758. .input{
  759. font-size: 28upx;
  760. font-family: PingFang SC;
  761. font-weight: 500;
  762. color: #999999;
  763. }
  764. }
  765. }
  766. .agreement {
  767. font-size: 28rpx;
  768. font-family: PingFang SC;
  769. font-weight: 500;
  770. color: red;
  771. padding: 30rpx 0;
  772. }
  773. .btn-foot{
  774. box-sizing: border-box;
  775. width: 100%;
  776. height: 121upx;
  777. background: #FFFFFF;
  778. padding: 16upx;
  779. display: flex;
  780. align-items: center;
  781. justify-content: flex-end;
  782. position: fixed;
  783. left: 0;
  784. bottom: 0;
  785. z-index: 99;
  786. .right{
  787. display: flex;
  788. align-items: center;
  789. .total{
  790. display: flex;
  791. align-items: flex-end;
  792. margin-right: 36upx;
  793. .label{
  794. font-size: 26upx;
  795. font-family: PingFang SC;
  796. font-weight: 500;
  797. color: #999999;
  798. line-height: 1.5;
  799. }
  800. .price{
  801. display: flex;
  802. align-items: flex-end;
  803. .unit{
  804. font-size: 32upx;
  805. font-family: PingFang SC;
  806. font-weight: bold;
  807. color: #FF6633;
  808. line-height: 1.2;
  809. margin-right: 10upx;
  810. }
  811. .num{
  812. font-size: 50upx;
  813. font-family: PingFang SC;
  814. font-weight: bold;
  815. color: #FF6633;
  816. line-height: 1;
  817. }
  818. }
  819. }
  820. .btn{
  821. width: 200upx;
  822. height: 88upx;
  823. line-height: 88upx;
  824. text-align: center;
  825. font-size: 30upx;
  826. font-family: PingFang SC;
  827. font-weight: bold;
  828. color: #FFFFFF;
  829. background: #0bb3f2;
  830. border-radius: 44upx;
  831. }
  832. }
  833. }
  834. // </style>
  835. // <style lang="less" scoped>
  836. .coupon {
  837. height: 100%;
  838. }
  839. /*优惠券列表公共*/
  840. .coupon-list {
  841. }
  842. .coupon-list .item {
  843. display: flex;
  844. flex-direction: column;
  845. justify-content: center;
  846. align-items: center;
  847. width: 100%;
  848. height: 1.7 * 100rpx;
  849. margin-bottom: 0.16 * 100rpx;
  850. }
  851. .coupon-list .item .money {
  852. background-size: 100% 100%;
  853. width: 2.4 * 100rpx;
  854. height: 100%;
  855. color: #fff;
  856. font-size: 0.36 * 100rpx;
  857. font-weight: bold;
  858. text-align: center;
  859. display: flex;
  860. flex-direction: column;
  861. align-items: center;
  862. justify-content: center;
  863. position: relative;
  864. }
  865. .coupon-list .item .money .img{
  866. position: absolute;
  867. width: 2.4 * 100rpx;
  868. height: 100%;
  869. color: #fff;
  870. }
  871. .coupon-list .item .money .num {
  872. font-size: 0.6 * 100rpx;
  873. }
  874. .coupon-list .item .money .pic-num {
  875. font-size: 20rpx;
  876. z-index: 99;
  877. }
  878. .coupon-list .item .text {
  879. width: 4.5 * 100rpx;
  880. padding: 0 0.17 * 100rpx 0 0.24 * 100rpx;
  881. background-color: #fff;
  882. box-sizing: border-box;
  883. }
  884. .coupon-list .item .text .condition {
  885. font-size: 0.3 * 100rpx;
  886. color: #282828;
  887. height: 0.93 * 100rpx;
  888. line-height: 0.93 * 100rpx;
  889. border-bottom: 1px solid #f0f0f0;
  890. }
  891. .coupon-list .item .text .data {
  892. font-size: 0.2 * 100rpx;
  893. color: #999;
  894. height: 0.76 * 100rpx;
  895. }
  896. .coupon-list .item .text .data .bnt {
  897. width: 1.36 * 100rpx;
  898. height: 0.44 * 100rpx;
  899. border-radius: 0.22 * 100rpx;
  900. font-size: 0.22 * 100rpx;
  901. color: #fff;
  902. text-align: center;
  903. line-height: 0.44 * 100rpx;
  904. background-color: red;
  905. }
  906. .coupon-list .item .text .data .bnt.gray {
  907. background-color: #ccc;
  908. }
  909. </style>