create-order.vue 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815
  1. <template>
  2. <view class="container order clearfix" :style="{ paddingBottom: isIphoneX ? '170rpx' : '134rpx' }">
  3. <!-- 地址选择 -->
  4. <choice-address ref="choiceAddress" v-if="isAddress" :addressData="addressData"></choice-address>
  5. <!-- 商品 -->
  6. <goods-list
  7. ref="goods"
  8. v-if="isRequest"
  9. :goodsData="goodsData"
  10. @handleGoodList="handChangeInputGoodsList"
  11. ></goods-list>
  12. <!-- 发票信息 -->
  13. <invoice-tent
  14. ref="invoice"
  15. v-if="isRequest"
  16. :invoiceDatas="invoiceData"
  17. @handleChoiceaInvoice="handleChoiceaInvoiceData"
  18. >
  19. </invoice-tent>
  20. <!-- 运费 -->
  21. <freight
  22. ref="freight"
  23. v-if="isFreight"
  24. :freightData="freightData"
  25. @confirmFreight="hanldFreightFn"
  26. >
  27. </freight>
  28. <freight-alert v-if="isfreightTip" ref="csPhone"></freight-alert>
  29. <!-- 底部 -->
  30. <view class="footer-wrapper" :style="{ paddingBottom: isIphoneX ? '68rpx' : '0rpx' }">
  31. <view class="footer">
  32. <view class="footer-le">
  33. <view class="footer-count">
  34. <text>共{{ totalCount }}件商品</text>
  35. </view>
  36. <view class="footer-price">
  37. <view class="sum none">
  38. 总价:<text class="price">¥{{ orderShouldPayFee | NumFormat }}</text>
  39. </view>
  40. </view>
  41. </view>
  42. <view class="footer-submit" @click.stop="orderSubmitMit">
  43. <view class="btn" :class="isSubLoading ? 'disabled' : ''">提交订单</view>
  44. </view>
  45. </view>
  46. </view>
  47. <!-- 提示弹窗 -->
  48. <tui-modal
  49. :show="showModal"
  50. @click="handleClick"
  51. @cancel="hideMobel"
  52. :content="contentModalText"
  53. :button="modalButton"
  54. color="#333"
  55. :size="28"
  56. shape="circle"
  57. :maskClosable="false"
  58. ></tui-modal>
  59. </view>
  60. </template>
  61. <script>
  62. import { mapState, mapMutations } from 'vuex'
  63. import choiceAddress from './components/choiceAddress'
  64. import goodsList from './components/goodsList'
  65. import invoiceTent from './components/invoiceTent'
  66. import freight from './components/freight'
  67. import freightAlert from '@/components/cm-module/modelAlert/freightAlert'
  68. export default {
  69. components: {
  70. choiceAddress,
  71. goodsList,
  72. invoiceTent,
  73. freight,
  74. freightAlert
  75. },
  76. data() {
  77. return {
  78. isIphoneX: this.$store.state.isIphoneX,
  79. isSubLoading: false,
  80. confirmType: 1,
  81. orderID: 0,
  82. cartParam: {
  83. // 购物车立即结算确认订单参数
  84. skuIds: 0, // 商品Id(逗号隔开)
  85. source: 2, // 来源:1WWW 2小程序
  86. userId: 0 // 用户Id
  87. },
  88. productParam: {
  89. // 商品立即购买确认订单参数
  90. productCount: 0, // 商品数量
  91. productId: 0, // 商品Id
  92. source: 2, // 来源:1WWW 2小程序
  93. userId: 0 // 用户Id
  94. },
  95. supportParm: {
  96. // 组合商品立即购买确认订单参数
  97. productInfo: '',
  98. source: 2, // 来源:1WWW 2小程序
  99. userId: 0 // 用户Id
  100. },
  101. postageParam: {
  102. // 邮费计算参数
  103. skuIds: 0, // 商品Id(逗号隔开)
  104. userId: 0, // 用户Id
  105. townId: 0 // 地区Id
  106. },
  107. confirmParam: {
  108. cartType: 1, // 购买类型:(1自主下单, 3协销下单)
  109. orderMiniType: 0, // 订单提交状态 0初始提交 1 继续提交
  110. orderSource: 6, // 订单来源 1WWW 6小程序[采美,星范]
  111. addressId: 0, // 收货地址Id
  112. clubCouponId: 0, // 关联优惠券Id
  113. clubId: 0, // 机构Id
  114. orderInfo: [], // 订单商品数据
  115. orderInvoice: { type: 0 }, // 订单发票信息
  116. payInfo: {
  117. // 订单金额数据
  118. orderShouldPayFee: 0, // 订单最终支付金额
  119. balancePayFlag: 0, // 勾选余额的状态(1使用,0不使用)
  120. clauseId: 0, // 条款Id
  121. postage: 0, // 运费金额
  122. postageFlag: 0, // 运费类型
  123. userBeans: 0, // 抵扣采美豆数量
  124. rebateFlag: 0 // 是否返佣订单
  125. },
  126. unionId: uni.getStorageSync('unionId') // 用户unionId
  127. }, // 提交订单参数
  128. productIds: '', // 获取上一级页面商品信息
  129. submitState: '', // 提交状态
  130. totalCount: 1, // 订单提交总数量
  131. allPrice: 0.0, // 订单总金额
  132. orderShouldPayFee: 0, // 订单最终支付金额
  133. isRequest: false, // 是否加载完成渲染子组件
  134. isFreight: false, // 是否加载完成渲染子组件
  135. isAddress: false, // 是否加载完成地址
  136. isExchangePopup: false, // 控制兑换优惠券弹窗
  137. isfreightTip: false, // 控制邮费弹窗
  138. hanldFreePostFlag: '', // 邮费状态
  139. hanldFreight: '', // 邮费
  140. addressData: {}, // 初始化地址信息
  141. goodsData: [], // 初始化商品信息
  142. couponList: [], // 初始化优惠券信息
  143. invoiceData: { type: 0 }, // 初始化发票信息
  144. freightData: {}, // 邮费数据
  145. orderInfo: [], // 提交的商品信息
  146. freightBeansMoney: 0, // 存储采美豆抵扣金额
  147. contentModalText: '采购金额过小,将扣除500采美豆,建议您前往采美旗下“颜选美学”小程序购买小额商品。', //操作文字提示语句
  148. modalButton: [
  149. {
  150. text: '前往颜选美学',
  151. type: 'gray',
  152. plain: true //是否空心
  153. },
  154. {
  155. text: '继续提交',
  156. customStyle: {
  157. color: '#fff',
  158. bgColor: 'linear-gradient(90deg, #F28F31 0%, #F3B574 100%)'
  159. },
  160. plain: false
  161. }
  162. ],
  163. showModal: false,
  164. showModalstauts: 0,
  165. }
  166. },
  167. onLoad(option) {
  168. //商品数据
  169. this.initStorage(option)
  170. },
  171. filters: {
  172. NumFormat(value) {
  173. //处理金额
  174. return Number(value).toFixed(2)
  175. }
  176. },
  177. methods: {
  178. async initStorage(option) {
  179. const data = JSON.parse(option.data)
  180. const userInfo = await this.$api.getStorage()
  181. console.log('data', data)
  182. this.productParam.userId = this.cartParam.userId = this.supportParm.userId = this.postageParam.userId = userInfo.userId
  183. ? userInfo.userId
  184. : 0
  185. this.confirmParam.clubId = userInfo.clubId ? userInfo.clubId : 0
  186. switch (option.type) {
  187. case '1': // 商品详情立即购买
  188. this.confirmParam.cartType = 2
  189. this.productParam.productCount = data.data.productCount
  190. this.productParam.productId = data.data.productIds
  191. this.productParam.skuId = data.data.skuId
  192. this.productIds = data.data.productIds
  193. this.GetProductCreateOrderInfo()
  194. break
  195. case '2': // 购物车结算
  196. this.confirmParam.cartType = 1
  197. this.confirmType = 2
  198. this.cartParam.skuIds = data.data.skuIds
  199. this.CartCreateOrderInfo()
  200. break
  201. case '3': // 组合商品立即购买
  202. this.confirmParam.cartType = 2
  203. this.confirmType = 2
  204. this.supportParm.productInfo = JSON.stringify(data.data)
  205. this.GetOrderClubProductSupporting()
  206. }
  207. },
  208. // 商品立即购买确认订单数据初始化
  209. async GetProductCreateOrderInfo() {
  210. try{
  211. const res = await this.OrderService.ProductCreateOrderInfo(this.productParam)
  212. this.setCreatDataInfo(res.data)
  213. }catch(error){
  214. console.log('商品立即购买订单初始化异常')
  215. }
  216. },
  217. // 组合商品立即购买确认订单数据初始化
  218. async GetOrderClubProductSupporting() {
  219. try{
  220. const res = await this.OrderService.OrderClubProductSupporting(this.supportParm)
  221. this.setCreatDataInfo(res.data)
  222. }catch(error){
  223. console.log('组合商品立即购买订单初始化异常')
  224. }
  225. },
  226. // 购物车去结算确认订单数据初始化
  227. async CartCreateOrderInfo() {
  228. try{
  229. const res = await this.OrderService.CartCreateOrderInfo(this.cartParam)
  230. this.setCreatDataInfo(res.data)
  231. }catch(error){
  232. console.log('购物车结算订单初始化异常')
  233. }
  234. },
  235. // 公共初始化数据
  236. setCreatDataInfo(data) {
  237. this.isRequest = true
  238. this.goodsData = data.list
  239. this.couponList = data.couponList
  240. this.userMoney = data.userMoney
  241. this.totalCount = data.totalCount
  242. this.allPrice = data.totalPrice
  243. this.orderShouldPayFee = this.allPrice
  244. this.postageParam.skuIds = this.getProductIds(data.list)
  245. this.getAddressData()
  246. },
  247. // 获取订单SKUId列表
  248. getProductIds(list) {
  249. const skuId = []
  250. list.forEach(function(supplier) {
  251. supplier.cartList.forEach(function(product) {
  252. skuId.push(product.skuId)
  253. })
  254. })
  255. // console.log(list);
  256. return skuId.join(',')
  257. },
  258. // 获取邮费信息
  259. async getFreightData() {
  260. try{
  261. this.isFreight = false
  262. const res = await this.OrderService.GetOrderPostage(this.postageParam)
  263. const data = res.data
  264. this.isFreight = true
  265. this.freightData = data
  266. this.hanldFreePostFlag = data.postageFlag
  267. this.hanldFreight = data.postage
  268. if (this.hanldFreePostFlag == 1) {
  269. if (this.freightData.userBeans > 0) {
  270. this.freightBeansMoney = this.hanldFreight
  271. } else {
  272. this.freightBeansMoney = 0
  273. }
  274. this.orderShouldPayFee = this.allPrice + data.postage
  275. this.attributePallPrice()
  276. } else {
  277. if (this.freightData.userBeans > 0) {
  278. this.freightBeansMoney = 30
  279. } else {
  280. this.freightBeansMoney = 0
  281. }
  282. this.orderShouldPayFee = this.allPrice
  283. this.attributePallPrice()
  284. }
  285. }catch(error){
  286. console.log('获取订单运费异常')
  287. }
  288. },
  289. //获取地址信息
  290. async getAddressData() {
  291. try{
  292. const userInfo = await this.$api.getStorage()
  293. const res = await this.UserService.QueryAddressList({ pageNum: 1,pageSize: 1,userId: this.postageParam.userId })
  294. const data = res.data
  295. this.isAddress = true
  296. this.addressData = {}
  297. if (data.list && data.list.length > 0) {
  298. this.confirmParam.addressId = data.list[0].addressId
  299. this.postageParam.townId = data.list[0].townId
  300. this.addressData = data.list[0]
  301. this.getFreightData()
  302. } else {
  303. this.addressData = this.addressData
  304. }
  305. }catch(error){
  306. console.log('error',error)
  307. }
  308. },
  309. //对应供应商的留言信息
  310. handChangeInputGoodsList(data) {
  311. this.goodsData = data
  312. },
  313. //获取发票信息
  314. handleChoiceaInvoiceData(data) {
  315. this.confirmParam.orderInvoice = data
  316. },
  317. //显示邮费弹窗
  318. hanldFreightFn(data) {
  319. console.log('邮费信息', data)
  320. switch (data.postageFlag) {
  321. case 1:
  322. this.hanldFreight = this.freightData.postage
  323. this.hanldFreePostFlag = data.postageFlag
  324. this.freightBeansMoney = data.freightBeansMoney
  325. this.orderShouldPayFee = this.allPrice + this.hanldFreight
  326. this.attributePallPrice()
  327. break
  328. case -1:
  329. this.hanldFreight = 0
  330. this.hanldFreePostFlag = data.postageFlag
  331. this.freightBeansMoney = data.freightBeansMoney
  332. this.orderShouldPayFee = this.allPrice
  333. this.attributePallPrice()
  334. break
  335. }
  336. },
  337. // 计算价格
  338. attributePallPrice() {
  339. if (this.hanldFreePostFlag == 1 || this.hanldFreePostFlag == '1') {
  340. this.attributeHashfreight(this.freightData.postage)
  341. } else {
  342. this.attributeNofreight()
  343. }
  344. },
  345. // 计算没有邮费的支付价格
  346. attributeNofreight() {
  347. this.orderShouldPayFee = this.allPrice
  348. console.log('最终订单支付金额', this.orderShouldPayFee)
  349. },
  350. // 计算需要邮费的支付价格
  351. attributeHashfreight(postage) {
  352. this.orderShouldPayFee = this.allPrice + parseInt(postage) //计算不包邮的价格 总价等于商品价格+邮费
  353. console.log('最终订单支付金额', this.orderShouldPayFee)
  354. },
  355. // 提交订单按钮点击事件
  356. orderSubmitMit() {
  357. this.handleClickOrderSubmitMit()
  358. },
  359. // 提交订单
  360. handleClickOrderSubmitMit() {
  361. if (this.isSubLoading) { return }
  362. if (this.confirmParam.addressId == '') {
  363. this.$util.msg('请先添加收货地址~', 2000)
  364. return
  365. }
  366. this.confirmParam.orderInfo = this.goodsData.map(el => {
  367. let productInfo = []
  368. el.cartList.forEach(pros => {
  369. productInfo.push({
  370. skuId: pros.skuId,
  371. productNum: pros.number,
  372. presentNum: 0,
  373. productType: pros.giftType
  374. })
  375. })
  376. return {
  377. splitCode: el.splitCode,
  378. shopId: el.shopId,
  379. note: el.note ? el.note : '',
  380. productInfo: productInfo
  381. }
  382. })
  383. this.confirmParam.payInfo.postage = parseInt(this.hanldFreight).toFixed(2)
  384. this.confirmParam.payInfo.postageFlag = parseInt(this.hanldFreePostFlag)
  385. this.confirmParam.payInfo.orderShouldPayFee = this.orderShouldPayFee.toFixed(2)
  386. this.confirmParam.payInfo = JSON.stringify(this.confirmParam.payInfo)
  387. this.confirmParam.orderInfo = JSON.stringify(this.confirmParam.orderInfo)
  388. this.confirmParam.orderInvoice = JSON.stringify(this.confirmParam.orderInvoice)
  389. console.log(this.confirmParam)
  390. this.isSubLoading = true
  391. this.hanldeOrderSubmit(this.confirmParam)
  392. },
  393. async hanldeOrderSubmit(params) {
  394. // 提交订单
  395. try{
  396. const res =await this.OrderService.CreatedOrderSubmit(params)
  397. const data = res.data
  398. if (data.code === 1) {
  399. this.submitState = 'success'
  400. setTimeout(() => {
  401. this.isSubLoading = false
  402. }, 2000)
  403. this.$api.redirectTo(
  404. `/pages/user/order/success?data=${JSON.stringify({ data: { orderId: data.orderId } })}`
  405. )
  406. } else {
  407. this.submitState = 'confirm'
  408. this.$util.msg('订单提交成功', 2000, true, 'success')
  409. setTimeout(() => {
  410. this.isSubLoading = false
  411. if (data.onlinePayFlag === 1) {
  412. this.$api.redirectTo(`/pages/user/pay/card-under?orderId=${data.orderId}`)
  413. } else {
  414. this.$api.redirectTo(`/pages/user/order/order-pay-list?orderId=${data.orderId}`)
  415. }
  416. }, 2000)
  417. }
  418. }catch(error){
  419. console.log(error)
  420. this.formatConfirmParam()
  421. this.isSubLoading = false
  422. }
  423. },
  424. formatConfirmParam(){// 还原提交订单参数格式
  425. this.confirmParam.payInfo = JSON.parse(this.confirmParam.payInfo)
  426. this.confirmParam.orderInfo = JSON.parse(this.confirmParam.orderInfo)
  427. this.confirmParam.orderInvoice = JSON.parse(this.confirmParam.orderInvoice)
  428. },
  429. handFreightAlertShow() {
  430. //显示邮费弹窗
  431. this.isfreightTip = true
  432. },
  433. handleClick(e) {
  434. // 采购量过小提示弹窗
  435. if (e.index === 1) {
  436. if (this.showModalstauts === 1) {
  437. this.showModal = false
  438. this.confirmParam.orderMiniType = 1
  439. this.handleClickOrderSubmitMit()
  440. } else if (this.showModalstauts === 2) {
  441. this.showModal = false
  442. this.isSubLoading = false
  443. this.$api.navigateTo('/pages/login/apply')
  444. } else {
  445. this.showModal = false
  446. this.handleClickHeHeMiniApplet()
  447. }
  448. } else {
  449. if (this.showModalstauts == 1) {
  450. this.showModal = false
  451. this.handleClickHeHeMiniApplet()
  452. } else if (this.showModalstauts === 2) {
  453. this.showModal = false
  454. this.confirmParam.orderMiniType = 2
  455. this.handleClickOrderSubmitMit()
  456. } else {
  457. this.showModal = false
  458. }
  459. }
  460. },
  461. handleClickHeHeMiniApplet() {
  462. // 跳转颜选美学小程序
  463. uni.navigateToMiniProgram({
  464. appId: 'wx2c3b0a7f343235b1',
  465. path: '/pages/tabBar/index/index',
  466. extraData: {
  467. data1: 'test'
  468. },
  469. envVersion: 'develop',
  470. success(res) {
  471. // 打开成功
  472. console.log(res)
  473. }
  474. })
  475. },
  476. hideFreight() {
  477. //关闭邮费弹窗
  478. this.isfreightTip = false
  479. }
  480. },
  481. onShow() {
  482. let pages = getCurrentPages()
  483. let currPage = pages[pages.length - 1]
  484. if (currPage.data.select == 'select') {
  485. this.isAddress = true
  486. let SelectData = uni.getStorageSync('selectAddress')
  487. this.confirmParam.addressId = SelectData.addressId
  488. this.postageParam.townId = SelectData.townId
  489. this.addressData = SelectData
  490. this.getFreightData()
  491. }
  492. }
  493. }
  494. </script>
  495. <style lang="scss">
  496. page {
  497. height: auto;
  498. background: #f7f7f7;
  499. }
  500. .btn-hover {
  501. background: #ffffff;
  502. }
  503. .animation {
  504. /* transition: transform 0.3s ease;*/
  505. transition-property: transform;
  506. transition-duration: 0.3s;
  507. transition-timing-function: ease;
  508. }
  509. .order {
  510. padding-bottom: 134rpx;
  511. }
  512. .invoice-freight {
  513. width: 702rpx;
  514. padding: 0 24rpx;
  515. height: auto;
  516. font-size: $font-size-28;
  517. color: $text-color;
  518. background: #ffffff;
  519. float: left;
  520. font-weight: bold;
  521. }
  522. .invoice-balance {
  523. width: 702rpx;
  524. height: auto;
  525. padding: 0 24rpx;
  526. background: #ffffff;
  527. float: left;
  528. margin-top: 24rpx;
  529. margin-bottom: 24rpx;
  530. .balabce-t {
  531. width: 100%;
  532. height: 86rpx;
  533. line-height: 86rpx;
  534. font-size: $font-size-28;
  535. color: $text-color;
  536. float: left;
  537. .balabce-t-le {
  538. float: left;
  539. font-weight: bold;
  540. }
  541. .balabce-t-ri {
  542. float: right;
  543. display: flex;
  544. align-items: center;
  545. .money {
  546. display: flex;
  547. float: left;
  548. }
  549. .checkbox-box {
  550. display: flex;
  551. width: 60rpx;
  552. float: left;
  553. height: 100%;
  554. font-size: $font-size-24;
  555. .checkbox {
  556. width: 40rpx;
  557. text-align: right;
  558. box-sizing: border-box;
  559. text-align: center;
  560. text-decoration: none;
  561. border-radius: 0;
  562. -webkit-tap-highlight-color: transparent;
  563. overflow: hidden;
  564. color: $color-system;
  565. }
  566. }
  567. }
  568. }
  569. .balabce-b {
  570. width: 100%;
  571. float: left;
  572. overflow: hidden;
  573. .balabce-b-text {
  574. width: 100%;
  575. line-height: 58rpx;
  576. font-size: $font-size-24;
  577. color: #ff2a2a;
  578. text-align: right;
  579. float: right;
  580. }
  581. &.balabce-b--hide {
  582. padding: 0 0;
  583. height: 0px;
  584. line-height: 0px;
  585. }
  586. }
  587. }
  588. .footer-wrapper {
  589. position: fixed;
  590. left: 0;
  591. bottom: 0;
  592. background-color: #ffffff;
  593. z-index: 990;
  594. .footer {
  595. display: flex;
  596. align-items: center;
  597. width: 100%;
  598. height: 110rpx;
  599. line-height: 110rpx;
  600. justify-content: space-between;
  601. font-size: $font-size-28;
  602. color: $text-color;
  603. }
  604. .footer-le {
  605. width: 570rpx;
  606. height: 100%;
  607. float: left;
  608. }
  609. .footer-count {
  610. float: left;
  611. padding-left: 24rpx;
  612. width: 180rpx;
  613. box-sizing: border-box;
  614. }
  615. .footer-price {
  616. width: 370rpx;
  617. float: right;
  618. text-align: right;
  619. color: $text-color;
  620. padding: 10rpx 20rpx 10rpx 0;
  621. box-sizing: border-box;
  622. .sum-none {
  623. width: 100%;
  624. height: 45rpx;
  625. line-height: 45rpx;
  626. color: $text-color;
  627. float: left;
  628. text-align: right;
  629. .money {
  630. font-size: $font-size-26;
  631. color: #999999;
  632. text-decoration: line-through;
  633. }
  634. .money-sign {
  635. font-size: $font-size-26;
  636. color: #999999;
  637. text-decoration: line-through;
  638. }
  639. .money-reduced {
  640. margin-left: 10rpx;
  641. font-size: $font-size-26;
  642. color: #ff2a2a;
  643. }
  644. }
  645. .sum {
  646. width: 100%;
  647. height: 45rpx;
  648. line-height: 45rpx;
  649. float: left;
  650. &.none {
  651. height: 90rpx;
  652. line-height: 90rpx;
  653. }
  654. .price {
  655. font-size: $font-size-32;
  656. color: #ff2a2a;
  657. }
  658. }
  659. }
  660. .footer-submit {
  661. display: flex;
  662. align-items: center;
  663. justify-content: center;
  664. width: 180rpx;
  665. height: 100%;
  666. box-sizing: border-box;
  667. padding: 15rpx 5rpx;
  668. .btn {
  669. width: 100%;
  670. height: 100%;
  671. color: #ffffff;
  672. background: $btn-confirm;
  673. font-size: $font-size-26;
  674. text-align: center;
  675. line-height: 80rpx;
  676. border-radius: 40rpx;
  677. &.disabled {
  678. background: #e4e8eb;
  679. color: #999999;
  680. }
  681. }
  682. }
  683. }
  684. .coupon-content-model {
  685. width: 100%;
  686. height: 100%;
  687. background: rgba(0, 0, 0, 0.5);
  688. position: fixed;
  689. top: 0;
  690. left: 0;
  691. z-index: 8888;
  692. transition: all 0.4s;
  693. .coupon-alert-content {
  694. width: 600rpx;
  695. height: 612rpx;
  696. position: absolute;
  697. top: 0;
  698. left: 0;
  699. bottom: 0;
  700. right: 0;
  701. margin: auto;
  702. box-sizing: border-box;
  703. padding-top: 92rpx;
  704. .coupon {
  705. width: 600rpx;
  706. height: 522rpx;
  707. background: url(https://static.caimei365.com/app/img/icon/icon-coupon-alertbg@2x.png);
  708. background-size: cover;
  709. box-sizing: border-box;
  710. padding: 230rpx 40rpx 0 40rpx;
  711. .coupon-list {
  712. width: 100%;
  713. height: 147rpx;
  714. margin-bottom: 32rpx;
  715. box-sizing: border-box;
  716. background: url(https://static.caimei365.com/app/img/icon/icon-coupon-bg@2x.png);
  717. background-size: cover;
  718. position: relative;
  719. .list-cell-tags {
  720. display: inline-block;
  721. padding: 0 10rpx;
  722. height: 32rpx;
  723. line-height: 32rpx;
  724. background-color: #f94b4b;
  725. color: #ffffff;
  726. font-size: 18rpx;
  727. border-radius: 16rpx 0 16rpx 0;
  728. text-align: center;
  729. position: absolute;
  730. top: 0;
  731. left: 0;
  732. }
  733. .list-cell-le {
  734. width: 154rpx;
  735. height: 100%;
  736. box-sizing: border-box;
  737. padding: 30rpx 0;
  738. float: left;
  739. .coupon-maxMoney {
  740. width: 100%;
  741. height: 54rpx;
  742. line-height: 54rpx;
  743. font-size: 42rpx;
  744. color: #f94b4b;
  745. text-align: center;
  746. margin-top: 10rpx;
  747. .small {
  748. font-size: $font-size-20;
  749. }
  750. }
  751. .coupon-minMoney {
  752. width: 100%;
  753. height: 28rpx;
  754. float: left;
  755. box-sizing: border-box;
  756. padding-left: 24rpx;
  757. .txt {
  758. display: block;
  759. height: 28rpx;
  760. line-height: 28rpx;
  761. font-size: 16rpx;
  762. color: #f94b4b;
  763. text-align: center;
  764. padding: 0 5rpx;
  765. background-color: #fff1eb;
  766. border-radius: 4rpx;
  767. float: left;
  768. }
  769. }
  770. }
  771. .list-cell-ri {
  772. width: 366rpx;
  773. height: 100%;
  774. box-sizing: border-box;
  775. padding: 30rpx 20rpx;
  776. float: left;
  777. .list-cell-top {
  778. width: 100%;
  779. height: 64rpx;
  780. line-height: 64rpx;
  781. font-size: $font-size-26;
  782. color: #333333;
  783. float: left;
  784. text-overflow: ellipsis;
  785. display: -webkit-box;
  786. word-break: break-all;
  787. -webkit-box-orient: vertical;
  788. -webkit-line-clamp: 1;
  789. overflow: hidden;
  790. }
  791. .list-cell-time {
  792. width: 100%;
  793. height: 28rpx;
  794. line-height: 28rpx;
  795. text-align: left;
  796. font-size: $font-size-20;
  797. color: #999999;
  798. }
  799. }
  800. }
  801. .coupon-btn {
  802. width: 100%;
  803. height: 78rpx;
  804. background: url(https://static.caimei365.com/app/img/icon/icon-coupon-alertbtnbg@2x.png);
  805. background-size: cover;
  806. line-height: 78rpx;
  807. text-align: center;
  808. color: #ffffff;
  809. font-size: $font-size-36;
  810. }
  811. }
  812. }
  813. }
  814. </style>