1.vue 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756
  1. <template>
  2. <view class="container">
  3. <view id="pinkBanner">
  4. <view class="top-img"><image src="http://shicai.liuniu946.com/static/img/pinkBanner.png"></image></view>
  5. <view class="switch-bar flex_item">
  6. <view class="switchList" @click="change(index)" :key="index" v-for="(ls, index) in switchList" v-bind:class="{ active_color: index == checkedTab }">
  7. <view class="time">{{ ls.time }}</view>
  8. <view class="name">{{ ls.name }}</view>
  9. <view class="switchimg" v-bind:class="{ switchimgshow: index == 1 }"><image src="/static/img/img084.png"></image></view>
  10. </view>
  11. </view>
  12. <view class="tip flex">
  13. <view class="time-box flex" >
  14. <view class="time-name">抢购中先下单先得哦</view>
  15. <view class="flex_item" v-show="starting">
  16. <view>距开始</view>
  17. <uni-countdown color="#FFFFFF" background-color="#334432"
  18. :show-day="false"
  19. :hour="starthour"
  20. :minute="startminute"
  21. :second="startsecond">
  22. </uni-countdown>
  23. </view>
  24. <view class="flex_item" v-show="Timeing">
  25. <view>距结束</view>
  26. <uni-countdown color="#FFFFFF" background-color="#334432"
  27. :show-day="false"
  28. :hour="Timeinghour"
  29. :minute="Timeingminute"
  30. :second="Timeingsecond">
  31. </uni-countdown>
  32. </view>
  33. </view>
  34. </view>
  35. </view>
  36. <swiper :current="checkedTab" :style="{ height: scrollHeight + 'px' }" duration="300" @change="changeTab">
  37. <swiper-item class="tab-content" v-for="(tabItem, tabIndex) in switchList" :key="tabIndex">
  38. <scroll-view class="list-scroll-content" scroll-y @scrolltolower="loadData()">
  39. <!-- 空白页 -->
  40. <empty v-if="tabItem.loaded === true && tabItem.list.length === 0"></empty>
  41. <!-- 订单列表 -->
  42. <view class="preferred_centent">
  43. <view class="preferred_item" v-for="item in tabItem.list" @click="navToDetailPage(item)">
  44. <view class="flex_item">
  45. <view class="tlist-img">
  46. <view class="leftImgIcon" v-if="tabItem.id == 1">AA团</view>
  47. <view class="leftImgIcon" v-if="tabItem.id == 2">达人团</view>
  48. <view class="img"><image :src="item.image" mode="scaleToFill"></image></view>
  49. </view>
  50. <view class="tlist-img " v-for="imgItem in item.images">
  51. <view class="img"><image :src="imgItem" mode="scaleToFill"></image></view>
  52. </view>
  53. </view>
  54. <view class="goods_name">
  55. <view class="goods_title flex_item">
  56. <view class="text">{{ item.min_people }}人团</view>
  57. <view class="">{{ item.title }}</view>
  58. </view>
  59. <view class="goods-height">
  60. <!-- <view class="goods_num clamp">{{ item.info }}</view> -->
  61. <view class="flex goods-peplo">
  62. <view class="goods-tip flex_item">
  63. <view class="peplo">库存剩{{ item.percent | parseIntTo }}%</view>
  64. <view class="make">{{ item.mark }}</view>
  65. </view>
  66. <view class="right flex_item">
  67. <image src="/static/icon/hot.png" mode="aspectFill"></image>
  68. <text>已拼{{ item.order_count }}份</text>
  69. </view>
  70. </view>
  71. </view>
  72. <view class="price flex">
  73. <view class="price_list">
  74. <view class="price-red">
  75. <text class="moneyIcon">¥</text>
  76. <text class="money">{{ item.price }}</text>
  77. <text class="moneyType">/{{ item.unit_name }}</text>
  78. <text class="outMoney">¥{{ item.product_price }}</text>
  79. </view>
  80. </view>
  81. <view class="img position-relative" @click.stop="Addcar(item)">去开团</view>
  82. </view>
  83. </view>
  84. </view>
  85. </view>
  86. <uni-load-more :status="tabItem.loadingType"></uni-load-more>
  87. </scroll-view>
  88. </swiper-item>
  89. </swiper>
  90. <button open-type="share" class="shareDate">分享给好友</button>
  91. </view>
  92. </template>
  93. <script>
  94. import { cartAdd } from '@/api/product.js';
  95. import { getCombinationList } from '@/api/groupBooking.js';
  96. import { saveUrl, interceptor } from '@/utils/loginUtils.js';
  97. import { mapState } from 'vuex';
  98. import { loadIndexs } from '@/api/index.js';
  99. import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
  100. import empty from '@/components/empty';
  101. import uniCountdown from '@/components/uni-countdown/uni-countdown.vue';
  102. export default {
  103. computed: {
  104. ...mapState('user', ['userInfo', 'hasLogin']),
  105. ...mapState(['addressData', 'addressPageShow'])
  106. },
  107. components: {
  108. empty,
  109. uniLoadMore,
  110. uniCountdown
  111. },
  112. data() {
  113. return {
  114. scrollHeight: 0, // 底部分享按钮高度
  115. checkedTab: 0, // 当前选中的切换页面
  116. switchList: [
  117. {
  118. id: 1,
  119. time: 'AA团',
  120. name: '人人参与',
  121. // sid: 128, // 测试服
  122. sid: 132, // 正式服
  123. list: [],
  124. loadingType: 'more',
  125. page: 1, //当前页数
  126. limit: 3 //每次信息条数
  127. },
  128. {
  129. id: 2,
  130. time: '带货达人团',
  131. name: '多人成团 不限人数',
  132. // sid: 129, // 测试服
  133. sid: 131, // 正式服
  134. list: [],
  135. loadingType: 'more',
  136. page: 1, //当前页数
  137. limit: 3 //每次信息条数
  138. }
  139. ],
  140. checkid:0,
  141. //倒计时
  142. hour: 0,//距离明天8点开始时间
  143. minute: 0,
  144. second: 0,
  145. starting: false,//判断活动未开始
  146. Timeing:false,//判断活动进行中
  147. starthour:0,//距离今天开始时间
  148. startminute:0,
  149. startsecond:0,
  150. Timeinghour:0,//距离今天结束时间
  151. Timeingminute:0,
  152. Timeingsecond:0,
  153. workstarTime:'',
  154. workendTime:'',
  155. };
  156. },
  157. filters: {
  158. parseIntTo(percent) {
  159. percent = +percent * 100;
  160. if (percent % 1 === 0) {
  161. return percent;
  162. } else {
  163. percent = percent.toFixed(1);
  164. return percent;
  165. }
  166. }
  167. },
  168. onLoad(option) {
  169. // 判断是否登录
  170. if (!this.hasLogin) {
  171. interceptor();
  172. }
  173. // 判断有无邀请人
  174. if (option.spread) {
  175. uni.setStorageSync('spread', option.spread);
  176. }
  177. saveUrl();
  178. },
  179. onShow() {
  180. this.Getlist();
  181. },
  182. //下拉刷新
  183. onPullDownRefresh() {
  184. let obj = this;
  185. //监听下拉刷新动作的执行方法,每次手动下拉刷新都会执行一次
  186. obj.loadData('refresh');
  187. },
  188. // 加载完成后重置无限加载商品包裹框高度
  189. onReady() {
  190. let obj = this;
  191. // 处理数据加载完毕则加载数据
  192. obj.onlodingTrue().then(e => {
  193. obj.scrollHeight = e.pageHeight - e.topHeight - e.bottomHeight;
  194. obj.loadData();
  195. });
  196. },
  197. //分享
  198. onShareAppMessage(options) {
  199. // 设置菜单中的转发按钮触发转发事件时的转发内容
  200. let shareObj = {
  201. title: '点击进入拼团', // 默认是小程序的名称(可以写slogan等)
  202. path: '/pages/groupBooking/index?spread=' + this.userInfo.uid, // 默认是当前页面,必须是以‘/’开头的完整路径
  203. imageUrl: 'http://shicai.liuniu946.com/static/img/pinkShare.jpg',
  204. success: function(res) {
  205. // 转发成功之后的回调
  206. if (res.errMsg == 'shareAppMessage:ok') {
  207. }
  208. },
  209. fail: function() {
  210. // 转发失败之后的回调
  211. if (res.errMsg == 'shareAppMessage:fail cancel') {
  212. // 用户取消转发
  213. } else if (res.errMsg == 'shareAppMessage:fail') {
  214. // 转发失败,其中 detail message 为详细失败信息
  215. }
  216. }
  217. }; // 来自页面内的按钮的转发 // 返回shareObj
  218. return shareObj;
  219. },
  220. methods: {
  221. // 获取营业时间
  222. async Getlist() {
  223. loadIndexs({})
  224. .then(({ data }) => {
  225. let arr = data.sell_time.split(',');
  226. this.workstarTime = arr[0];
  227. this.workendTime = arr[1];
  228. this.StartDate();
  229. this.GetDate();
  230. })
  231. .catch(e => {
  232. });
  233. },
  234. //点击切换商品种类
  235. change(index) {
  236. // 当前选中的对象
  237. this.checkedTab = index;
  238. console.log(this.checkedTab,55)
  239. this.loadData('tabChange');
  240. },
  241. StartDate() {
  242. let obj = this;
  243. console.log(obj.workstarTime)
  244. console.log(this.workendTime)
  245. // 获取当前时间
  246. let now = new Date();
  247. let year = now.getFullYear(); //得到年份
  248. let month = now.getMonth();//得到月份
  249. let date = now.getDate();//得到日期
  250. let hour = now.getHours();//得到小时
  251. let minu = now.getMinutes();//得到分钟
  252. let sec = now.getSeconds();//得到秒
  253. //获取早上开始营业的时间戳
  254. let aa = this.workstarTime.split(':');
  255. let bb = aa[0];
  256. let cc = aa[1];
  257. let dd = String(cc).split('');
  258. let ff = dd[0];
  259. let gg = dd[1];
  260. console.log(bb,ff,gg)
  261. let time1 = new Date(year,month,date,bb,ff,gg);
  262. let morning = time1.getTime();
  263. //获取现在时间的时间戳
  264. let time2 = new Date(year,month,date,hour,minu,sec);
  265. let present = time2.getTime();
  266. //获取晚上结束营业的时间戳
  267. let a = this.workendTime.split(':');
  268. let b = a[0];
  269. let c = a[1];
  270. let d = String(c).split('');
  271. let f = d[0];
  272. let g = d[1];
  273. console.log(b,f,g)
  274. let time3 = new Date(year,month,date,b,f,g);
  275. console.log(time1,'time1')
  276. console.log(time3,'time3')
  277. let night = time3.getTime();
  278. //现在时间大于结束时间,活动结束
  279. // if(present > time3){
  280. // console.log('现在时间大于结束时间,活动结束')
  281. // obj.end = true;
  282. // }
  283. //现在时间大于开始时间小于结束时间,活动进行中
  284. if(present < time3 && present > time1){
  285. console.log('现在时间大于开始时间小于结束时间,活动进行中')
  286. obj.Timeing = true;
  287. let starTime = time3 - present;
  288. let hours = Math.floor((starTime / 1000 / 60 / 60) % 24); //获取剩余小时数
  289. let minutes = Math.floor((starTime / 1000 / 60) % 60); //获取分钟
  290. let seconds = Math.floor((starTime / 1000) % 60); //获取秒数
  291. obj.Timeinghour = hours;
  292. obj.Timeingminute = minutes;
  293. obj.Timeingsecond = seconds;
  294. console.log('时间差是: '+ obj.Timeinghour + '小时, ' + obj.Timeingminute + '分钟, ' + obj.Timeingsecond + '秒','距离晚上22:00点结束');
  295. }
  296. //现在时间小于开始时间,活动还未开始
  297. if(present < time1){
  298. console.log('现在时间小于开始时间,活动还未开始')
  299. obj.starting = true;
  300. let starTime = time1 - present;
  301. let hours = Math.floor((starTime / 1000 / 60 / 60) % 24); //获取剩余小时数
  302. let minutes = Math.floor((starTime / 1000 / 60) % 60); //获取分钟
  303. let seconds = Math.floor((starTime / 1000) % 60); //获取秒数
  304. obj.starthour = hours;
  305. obj.startminute = minutes;
  306. obj.startsecond = seconds;
  307. console.log('时间差是: '+ obj.starthour + '小时, ' + obj.startminute + '分钟, ' + obj.startsecond + '秒','距离早上7:00点开始');
  308. }
  309. //现在时间距离第二天开始时间
  310. // day3.setTime(day3.getTime()+24*60*60*1000);
  311. // var s3 = day3.getFullYear()+"-" + (day3.getMonth()+1) + "-" + day3.getDate();
  312. },
  313. //获取明天早上7:00的时间戳
  314. GetDate(){
  315. let obj = this;
  316. let now = new Date();
  317. //现在时间转换成时间戳
  318. let nowTime = now.getTime();
  319. now.setTime(now.getTime()+24*60*60*1000);
  320. let time = obj.workstarTime;
  321. let data = now.getFullYear() + '-' + (now.getMonth() + 1) + '-' + now.getDate() + ' ' + time;
  322. data = data.replace(/-/g, '/');
  323. let time4 = new Date(data);
  324. let tomorrow = time4.getTime();
  325. let starTime = tomorrow - nowTime;
  326. let hours = Math.floor((starTime / 1000 / 60 / 60) % 24); //获取剩余小时数
  327. let minutes = Math.floor((starTime / 1000 / 60) % 60); //获取分钟
  328. let seconds = Math.floor((starTime / 1000) % 60); //获取秒数
  329. obj.hour = hours;
  330. obj.minute = minutes;
  331. obj.second = seconds;
  332. console.log('时间差是: '+ hours + '小时, ' + minutes + '分钟, ' + seconds + '秒','距离第二天6:40开始');
  333. },
  334. onlodingTrue() {
  335. let obj = this;
  336. return new Promise(function(resolve, reject) {
  337. let num = 0;
  338. let height = {
  339. topHeight: 0,
  340. bottomHeight: 0,
  341. pageHeight: 0
  342. };
  343. // 初始化获取头部宽度
  344. uni.createSelectorQuery()
  345. .select('#pinkBanner')
  346. .fields(
  347. {
  348. size: true
  349. },
  350. data => {
  351. // 计算最多下拉的高度
  352. height.topHeight = data.height;
  353. num++;
  354. if (num == 3) {
  355. resolve(height);
  356. }
  357. }
  358. )
  359. .exec();
  360. // 初始化获取底部分享宽度
  361. uni.createSelectorQuery()
  362. .select('.shareDate')
  363. .fields(
  364. {
  365. size: true
  366. },
  367. data => {
  368. // 计算最多下拉的高度
  369. height.bottomHeight = data.height;
  370. num++;
  371. if (num == 3) {
  372. resolve(height);
  373. }
  374. }
  375. )
  376. .exec();
  377. // 初始化获取底部分享宽度
  378. uni.createSelectorQuery()
  379. .select('.container')
  380. .fields(
  381. {
  382. size: true
  383. },
  384. data => {
  385. // 计算最多下拉的高度
  386. height.pageHeight = data.height;
  387. num++;
  388. if (num == 3) {
  389. resolve(height);
  390. }
  391. }
  392. )
  393. .exec();
  394. });
  395. },
  396. // 查询分类切换
  397. changeTab(e) {
  398. this.checkedTab = e.target.current;
  399. this.loadData('tabChange');
  400. },
  401. // 请求商品列表
  402. async loadData(source) {
  403. console.log(source);
  404. let obj = this;
  405. //这里是将订单挂载到tab列表下
  406. let index = obj.checkedTab;
  407. let navItem = obj.switchList[index];
  408. let state = navItem.state;
  409. if (source === 'tabChange' && navItem.loaded === true) {
  410. //tab切换只有第一次需要加载数据
  411. return;
  412. }
  413. if (navItem.loadingType === 'loading') {
  414. //防止重复加载
  415. return;
  416. }
  417. if (navItem.loadingType === 'noMore') {
  418. //防止重复加载
  419. return;
  420. }
  421. if (source == 'refresh') {
  422. navItem.page = 1;
  423. }
  424. // 修改当前对象状态为加载中
  425. navItem.loadingType = 'loading';
  426. getCombinationList({
  427. type: navItem.sid,
  428. page: navItem.page,
  429. limit: navItem.limit
  430. })
  431. .then(({ data }) => {
  432. console.log(source == 'refresh');
  433. if (source == 'refresh') {
  434. navItem.list = [];
  435. uni.stopPullDownRefresh(); //停止下拉刷新动画
  436. }
  437. let arr = data.map(e => {
  438. e.images = e.images.slice(0, 2);
  439. return e;
  440. });
  441. console.log(arr);
  442. navItem.list = navItem.list.concat(arr);
  443. console.log(navItem);
  444. navItem.page++;
  445. // 判断是否是第一次加载
  446. if (!navItem.loaded) {
  447. obj.$set(navItem, 'loaded', true);
  448. uni.hideLoading();
  449. }
  450. if (navItem.limit == data.length) {
  451. //判断是否还有数据, 有改为 more, 没有改为noMore
  452. navItem.loadingType = 'more';
  453. return;
  454. } else {
  455. //判断是否还有数据, 有改为 more, 没有改为noMore
  456. navItem.loadingType = 'noMore';
  457. }
  458. })
  459. .catch(e => {
  460. console.log(e);
  461. });
  462. },
  463. //加入购物车
  464. Addcar(item) {
  465. let obj = this;
  466. uni.navigateTo({
  467. url: '/pages/product/productGroup?id=' + item.id
  468. });
  469. },
  470. //跳转商品详情页
  471. navToDetailPage(ls) {
  472. let obj = this;
  473. let id = ls.id;
  474. uni.navigateTo({
  475. url: '/pages/product/productGroup?id=' + id
  476. });
  477. }
  478. }
  479. };
  480. </script>
  481. <style lang="scss">
  482. page,
  483. .container {
  484. background: #F3F3F4;
  485. height: 100%;
  486. }
  487. .top-img {
  488. width: 100%;
  489. height: 180rpx;
  490. image {
  491. width: 100%;
  492. height: 100%;
  493. }
  494. }
  495. .tab-content {
  496. .list-scroll-content {
  497. height: 100%;
  498. }
  499. }
  500. .switch-bar {
  501. width: 100%;
  502. font-size: 32rpx;
  503. background-color: #FFFFFF;
  504. .switchList {
  505. padding: 28rpx 0rpx;
  506. text-align: center;
  507. width: 50%;
  508. .time {
  509. font-size: $font-lg;
  510. font-weight: bold;
  511. }
  512. .name {
  513. font-size: $font-sm;
  514. }
  515. }
  516. .switchimg{
  517. position: absolute;
  518. left: 23%;
  519. image{
  520. width: 24rpx;
  521. height: 13rpx;
  522. }
  523. }
  524. .switchimgshow{
  525. left:75%;
  526. }
  527. .active_color {
  528. background: linear-gradient(270deg, #fe531e 0%, #fe9503 100%);
  529. color: #ffffff;
  530. }
  531. }
  532. .tip {
  533. width: 100%;
  534. height: 76rpx;
  535. background-color: #FFFFFF;
  536. }
  537. .time-box{
  538. width: 100%;
  539. padding: 0rpx 25rpx;
  540. font-size:27rpx;
  541. }
  542. .time-name{
  543. font-size:27rpx;
  544. }
  545. .preferred_centent {
  546. padding:32rpx 20rpx;
  547. width: 100%;
  548. .tip {
  549. padding: 25rpx 0rpx;
  550. font-size: 28rpx;
  551. }
  552. .preferred_item {
  553. width: 100%;
  554. height: 100%;
  555. padding: 25rpx 25rpx;
  556. position: relative;
  557. background-color: #FFFFFF;
  558. border-radius: 15rpx;
  559. margin-bottom: 15rpx;
  560. .tlist-img {
  561. width: 225rpx;
  562. position: relative;
  563. margin-right: 15rpx;
  564. .leftImgIcon {
  565. position: absolute;
  566. top: 0;
  567. left: 0;
  568. font-size: 22rpx;
  569. font-family: PingFangSC;
  570. color: rgba(148, 71, 34, 1);
  571. background: rgba(254, 242, 111, 1);
  572. z-index: 99;
  573. border-radius: 5rpx;
  574. padding: 5rpx 10rpx;
  575. }
  576. .img {
  577. width: 210rpx;
  578. height: 210rpx;
  579. image {
  580. width: 100%;
  581. height: 100%;
  582. border-radius: 20rpx;
  583. }
  584. }
  585. .stock {
  586. margin-top: 13rpx;
  587. font-size: 26rpx;
  588. background: #fff1ee;
  589. width: 100%;
  590. color: #fb4912;
  591. padding: 6rpx 0;
  592. border-radius: 5rpx;
  593. justify-content: center;
  594. align-items: center;
  595. position: absolute;
  596. left: 0;
  597. bottom: 0;
  598. .img {
  599. width: 20rpx;
  600. height: 20rpx;
  601. flex-shrink: 0;
  602. }
  603. .stock-num {
  604. padding-left: 7rpx;
  605. font-size: 22rpx;
  606. border-radius: 5rpx;
  607. height: 32rpx;
  608. line-height: 32rpx;
  609. }
  610. }
  611. }
  612. .goods_name {
  613. .goods_title {
  614. padding-top: 15rpx;
  615. color:rgba(0,0,0,1);
  616. white-space: nowrap;
  617. overflow: hidden;
  618. text-overflow: ellipsis;
  619. font-size:32rpx;
  620. color: $font-color-dark;
  621. height: 70rpx;
  622. .text{
  623. border-radius: 8rpx;
  624. border: 2rpx solid #FF1A27;
  625. color: #FF1A27;
  626. padding:0rpx 10rpx;
  627. font-size: 26rpx !important;
  628. margin-right: 15rpx;
  629. }
  630. }
  631. .goods-height {
  632. min-height: 60rpx;
  633. }
  634. .goods_num {
  635. font-size: 26rpx;
  636. color: #8f8f97;
  637. padding-bottom: 15rpx;
  638. }
  639. .goods-peplo {
  640. height: 45rpx;
  641. margin-top: 15rpx;
  642. .right {
  643. color:#8e8e8e;
  644. font-size: 24rpx;
  645. width:195rpx;
  646. image {
  647. width: 30rpx;
  648. height: 33rpx;
  649. margin-right: 15rpx;
  650. }
  651. }
  652. .goods-tip {
  653. .peplo {
  654. background:linear-gradient(14deg,rgba(255,116,37,1),rgba(255,30,41,1));
  655. padding: 5rpx 10rpx;
  656. color: #ffffff;
  657. border-top-left-radius:8rpx;
  658. border-bottom-left-radius: 8rpx;
  659. }
  660. .make {
  661. background-color: #fef26f;
  662. color: #944722;
  663. border-top-right-radius: 8rpx;
  664. border-bottom-right-radius: 8rpx;
  665. }
  666. .make,
  667. .peplo {
  668. font-size: $font-sm;
  669. padding: 5rpx 10rpx;
  670. }
  671. }
  672. }
  673. .price {
  674. font-size: 28rpx;
  675. position: relative;
  676. padding-top: 15rpx;
  677. .price_list {
  678. .price-red {
  679. font-size: 30rpx !important;
  680. font-family: Source Han Sans CN;
  681. color: rgba(253, 27, 42, 1);
  682. font-size: $font-base;
  683. font-weight: bold;
  684. .moneyIcon {
  685. font-weight: normal !important;
  686. }
  687. .money {
  688. font-size: 58rpx;
  689. }
  690. .moneyType {
  691. font-weight: 400;
  692. }
  693. .outMoney {
  694. font-weight: 400;
  695. text-decoration: line-through;
  696. color: rgba(142, 142, 142, 1);
  697. }
  698. }
  699. .price-green {
  700. color: #2dbd59;
  701. font-size: 26rpx !important;
  702. font-weight: bold;
  703. text {
  704. background: linear-gradient(45deg, rgba(21, 197, 52, 1), rgba(21, 197, 52, 1));
  705. color: #ffffff;
  706. padding: 0rpx 10rpx;
  707. border-radius: 7rpx;
  708. font-size: 24rpx !important;
  709. margin-left: 15rpx;
  710. }
  711. }
  712. }
  713. .img {
  714. width: 265rpx;
  715. height: 74rpx;
  716. line-height: 74rpx;
  717. background:linear-gradient(14deg,rgba(255,116,37,1),rgba(255,30,41,1));
  718. border-radius: 99rpx;
  719. color: #ffffff;
  720. font-size: $font-lg;
  721. text-align: center;
  722. }
  723. .tomorrow {
  724. background: #29a66e;
  725. color: #ffffff;
  726. border-radius: 25rpx;
  727. padding: 10rpx 25rpx;
  728. }
  729. }
  730. }
  731. }
  732. }
  733. .shareDate {
  734. width: 100%;
  735. font-size: 28rpx;
  736. background: linear-gradient(270deg, #fe531e 0%, #fe9503 100%);
  737. padding: 25rpx 0rpx;
  738. line-height: 1;
  739. text-align: center;
  740. color: #ffffff;
  741. position: fixed;
  742. bottom: 0;
  743. border: none;
  744. border-radius: 0rpx !important;
  745. }
  746. </style>