index.vue 21 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033
  1. <template>
  2. <view class="container">
  3. <view class="carousel-section">
  4. <!-- 背景色区域 -->
  5. <view class="bg"></view>
  6. <!-- 标题栏和状态栏占位符 -->
  7. <view class="titleNview-placing"></view>
  8. <!-- 搜素栏 -->
  9. <view class="search flex">
  10. <view class="input-box flex" @click.stop="clickSearch">
  11. <view class=" input-content flex">
  12. <view class="iconfont iconsearch"></view>
  13. <view class="input"><input type="text" disabled value="输入关键字搜索" /></view>
  14. </view>
  15. </view>
  16. </view>
  17. <swiper class="carousel" autoplay="true" duration="400" interval="5000" @change="swiperChange"
  18. :indicator-dots="true" indicator-active-color="#FFFFFF">
  19. <!-- <swiper class="carousel" autoplay="true" duration="400" interval="5000"> -->
  20. <swiper-item v-for="(item, index) in carouselList" :key="index" class="carousel-item">
  21. <image :src="item.pic" mode="aspectFill" @click="bannerNavToUrl(item)"></image>
  22. </swiper-item>
  23. </swiper>
  24. </view>
  25. <view class="navbar">
  26. <view class="navbar-box flex">
  27. <view class="navbar-item" @click="navTo('/pages/product/list')">
  28. <image class="nitem-image" src="../../static/sy/sy12.png" mode=""></image>
  29. <view class="nitem-font">全部分类</view>
  30. </view>
  31. <view class="navbar-item" @click="navTo('')">
  32. <image class="nitem-image" src="../../static/sy/sy14.png" mode=""></image>
  33. <view class="nitem-font">超值拼团</view>
  34. </view>
  35. <view class="navbar-item" @click="navTo('/pages/index/sign')">
  36. <image class="nitem-image" src="../../static/sy/sy15.png" mode=""></image>
  37. <view class="nitem-font">公司介绍</view>
  38. </view>
  39. <view class="navbar-item" @click="navTo('/pages/user/shareQrCode')">
  40. <image class="nitem-image" src="../../static/sy/sy13.png" mode=""></image>
  41. <view class="nitem-font">邀请有礼</view>
  42. </view>
  43. </view>
  44. </view>
  45. <view class="jx-box">
  46. <view class="jx-box-title">
  47. <image src="../../static/sy/sy03.png" mode=""></image>
  48. </view>
  49. <view class="jx-box-img">
  50. <image src="../../static/sy/sy09.png" mode=""></image>
  51. </view>
  52. </view>
  53. <view class="jx-box-content">
  54. <view class="content-left">
  55. <image src="../../static/sy/sy15.png" mode=""></image>
  56. </view>
  57. <view class="content-right">
  58. <view class="shop-name">
  59. 测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据测试数据
  60. </view>
  61. <view class="shop-content">
  62. <view class="shop-content-left">
  63. <view class="price-box">
  64. <view class="yuan-price">
  65. ${{99}}
  66. </view>
  67. <image src="../../static/sy/sy06.png" mode=""></image>
  68. <view class="j-price">
  69. 直降{{40}}元
  70. </view>
  71. </view>
  72. <view class="price-x">
  73. ${{199}}
  74. </view>
  75. </view>
  76. <view class="shop-content-right">
  77. 立即购买
  78. </view>
  79. </view>
  80. </view>
  81. </view>
  82. <view class="product-box" v-if="bastList.length != 0">
  83. <view class="product-title">
  84. <view class="bb">
  85. </view>
  86. <view class="pt-title">猜你喜欢</view>
  87. <view class="bb">
  88. </view>
  89. </view>
  90. <view class="hotgoods">
  91. <view class="hotgoods-item" v-for="item in bastList" :key="item.id" @click="navToDetailPage(item)">
  92. <view class="image-wrapper">
  93. <image class="image" :src="item.image" mode="scaleToFill"></image>
  94. </view>
  95. <view class="title clamp2">{{ item.store_name }}</view>
  96. <view class="titlee">{{ item.store_name }}</view>
  97. <view class="hot-price">
  98. <!-- <view class="hotPrice-box">会员价</view> -->
  99. <view class="price">
  100. <text class="font-size-sm">¥</text>
  101. {{ item.price * 1 }}
  102. </view>
  103. <view class="yuanPrice">{{ item.ot_price }}</view>
  104. </view>
  105. </view>
  106. </view>
  107. </view>
  108. <!-- <u-tabbar activeColor="#434A54" v-model="current" :list="tabbar" :mid-button="true"></u-tabbar> -->
  109. </view>
  110. </template>
  111. <script>
  112. import {
  113. lookSubpoints,
  114. lookOneself
  115. } from '../../api/user.js';
  116. import seckill from '../../components/seckill/seckill.vue';
  117. import {
  118. loadIndexs
  119. } from '@/api/index.js';
  120. import {
  121. getUserInfo,
  122. spread
  123. } from '@/api/user.js';
  124. import {
  125. setCoupons
  126. } from '@/api/functionalUnit.js';
  127. import {
  128. getBargainList
  129. } from '@/api/product.js';
  130. import {
  131. interceptor
  132. } from '@/utils/loginUtils';
  133. import {
  134. mapState,
  135. mapMutations
  136. } from 'vuex';
  137. import {
  138. tabbar
  139. } from '@/utils/tabbar.js';
  140. // #ifdef H5
  141. import {
  142. weixindata,
  143. shareLoad
  144. } from '@/utils/wxAuthorized';
  145. // #endif
  146. export default {
  147. components: {
  148. seckill
  149. },
  150. data() {
  151. return {
  152. tabbar: tabbar,
  153. current: 0,
  154. shareShow: false, //分享海报
  155. pageProportion: 0, //保存页面基于750宽度的比例
  156. swiperHeight: 0,
  157. checkid: 0,
  158. titleNViewBackground: '',
  159. longitude: 0, //经度
  160. latitude: 0, //纬度
  161. swiperCurrent: 0,
  162. swiperLength: 0,
  163. carouselList: [], //轮播列表
  164. bastList: [], //会员礼包
  165. shoplist: [], //商店列表
  166. page: 1,
  167. limit: 5
  168. };
  169. },
  170. computed: {
  171. ...mapState(['loginInterceptor', 'baseURL']),
  172. ...mapState('user', ['hasLogin', 'userInfo'])
  173. },
  174. onLoad: function(option) {
  175. this.getaddress();
  176. // #ifdef MP
  177. if (option.scene) {
  178. // 存储小程序邀请人
  179. uni.setStorage({
  180. key: 'spread_code',
  181. data: option.scene
  182. });
  183. }
  184. // #endif
  185. // #ifdef H5
  186. this.IndexShare();
  187. //#endif
  188. },
  189. onShow: function() {
  190. // 判断是否强制登录
  191. if (!this.hasLogin) {
  192. // 登录拦截
  193. interceptor();
  194. }
  195. this.loadData();
  196. this.getBargainList();
  197. },
  198. //下拉刷新
  199. onPullDownRefresh() {
  200. this.loadData();
  201. },
  202. // #ifndef MP
  203. // 监听导航栏输入框点击事件
  204. onNavigationBarSearchInputClicked(e) {
  205. //跳转到搜索页面
  206. this.clickSearch();
  207. },
  208. //点击导航栏 buttons 时触发
  209. onNavigationBarButtonTap(e) {
  210. const index = e.index;
  211. if (index === 0) {
  212. this.$api.msg('点击了扫描');
  213. } else if (index === 1) {
  214. // #ifdef APP-PLUS
  215. const pages = getCurrentPages();
  216. const page = pages[pages.length - 1];
  217. const currentWebview = page.$getAppWebview();
  218. currentWebview.hideTitleNViewButtonRedDot({
  219. index
  220. });
  221. // #endif
  222. uni.navigateTo({
  223. url: '/pages/user/notice'
  224. });
  225. }
  226. },
  227. // #endif
  228. methods: {
  229. ...mapMutations(['setLat', 'setLon']),
  230. // #ifdef H5
  231. IndexShare() {
  232. let obj = this;
  233. let pages = getCurrentPages();
  234. // 获取当前页面
  235. let page = pages[pages.length - 1];
  236. let path = '#/' + page.route + '?';
  237. // 保存传值
  238. for (let i in page.options) {
  239. path += i + '=' + page.options[i] + '&';
  240. }
  241. console.log(obj.Path);
  242. // 保存邀请人
  243. path += 'spread=' + this.userInfo.uid;
  244. let data = {
  245. link: this.baseURL + '/index/' + path,
  246. title: this.userInfo.nickname + '邀请您进入响亮商城',
  247. desc: '欢迎加入响亮商城',
  248. imgUrl: 'https://xl.liuniu946.com/index/static/img/logo.jpg'
  249. };
  250. console.log(data, '分享数据');
  251. shareLoad(data);
  252. },
  253. // #endif
  254. getaddress() {
  255. console.log('dizhi+++++++++++');
  256. let obj = this;
  257. // uni.getLocation({
  258. // type: 'gcj02',
  259. // success: res => {
  260. // console.log(res, 123456);
  261. // obj.setLat(res.latitude);
  262. // obj.setLon(res.longitude);
  263. // },
  264. // fail: err => {
  265. // console.log(err, 'shi+++++++++++++++');
  266. // openMap().then(e => {
  267. // this.getaddress();
  268. // });
  269. // }
  270. // });
  271. weixindata().then(wxOjb => {
  272. console.log(wxOjb, '获取微信');
  273. wxOjb.getLocation({
  274. type: 'gcj02',
  275. success: res => {
  276. console.log(res, 123456);
  277. obj.setLat(res.latitude);
  278. obj.setLon(res.longitude);
  279. },
  280. fail: err => {
  281. console.log(err, 'shi+++++++++++++++');
  282. openMap().then(e => {
  283. this.getaddress();
  284. });
  285. }
  286. });
  287. });
  288. },
  289. //砍价商品推荐详情页
  290. navToDetailPages(item) {
  291. let id = item.product_id;
  292. //let type = 2;
  293. uni.navigateTo({
  294. url: '/pages/product/product?id=' + id
  295. });
  296. },
  297. navTo(url) {
  298. if (url == '') {
  299. this.$api.msg('暂未开通,敬请期待');
  300. } else {
  301. uni.navigateTo({
  302. url
  303. });
  304. }
  305. },
  306. openSubscribe: function(e) {
  307. let page = e;
  308. // #ifndef MP
  309. uni.navigateTo({
  310. url: page
  311. });
  312. // #endif
  313. // #ifdef MP
  314. uni.showLoading({
  315. title: '正在加载'
  316. });
  317. openBargainSubscribe()
  318. .then(res => {
  319. uni.hideLoading();
  320. uni.navigateTo({
  321. url: page
  322. });
  323. })
  324. .catch(err => {
  325. uni.hideLoading();
  326. });
  327. // #endif
  328. },
  329. getBargainList() {
  330. let that = this;
  331. getBargainList({
  332. page: that.page,
  333. limit: that.limit
  334. })
  335. .then(function(res) {
  336. that.$set(that, 'bargainlist', res.data.slice(0, 2));
  337. })
  338. .catch(res => {
  339. console.log(res, 'getBargainList');
  340. });
  341. },
  342. Mask() {
  343. this.MaskShow = false;
  344. this.shareShow = true;
  345. uni.setStorage({
  346. key: 'FirstEntry',
  347. data: true,
  348. success: function() {
  349. console.log(uni.getStorageSync('FirstEntry'), 'Mask');
  350. }
  351. });
  352. },
  353. Toshare() {
  354. if (this.userInfo == '') {
  355. getUserInfo({})
  356. .then(({
  357. data
  358. }) => {
  359. this.setUserInfo(data);
  360. this.userInfo = data;
  361. })
  362. .catch(e => {});
  363. } else {
  364. this.shareShow = false;
  365. uni.navigateTo({
  366. url: '/pages/user/shareQrCode?spread=' + this.userInfo.uid
  367. });
  368. }
  369. },
  370. Tocancel() {
  371. this.shareShow = false;
  372. },
  373. // 监听切换事件
  374. listChange(e) {
  375. this.checkid = e.detail.current;
  376. },
  377. // 點擊搜索框
  378. clickSearch() {
  379. uni.navigateTo({
  380. url: '/pages/product/search'
  381. });
  382. },
  383. // 点击触发领取优惠券
  384. setCoupons(item) {
  385. // 判断是否已经领取了优惠券
  386. let obj = this;
  387. uni.showModal({
  388. title: '领取提示',
  389. content: '是否领取优惠券',
  390. success(e) {
  391. if (e.confirm) {
  392. setCoupons({
  393. couponId: item.id
  394. }).then(e => {
  395. item.is_use = true;
  396. uni.showToast({
  397. title: '领取成功',
  398. type: 'top',
  399. duration: 2000
  400. });
  401. });
  402. }
  403. }
  404. });
  405. },
  406. //商品种类切换
  407. change(item) {
  408. let id = item;
  409. this.checkid = id;
  410. if (this.checkid == 1) {
  411. // console.log(1);
  412. this.detail = this.selected_detail;
  413. } else if (this.checkid == 2) {
  414. // console.log(2);
  415. this.detail = this.new_product;
  416. } else {
  417. this.detail = this.cheap_good;
  418. }
  419. },
  420. // 监听图片加载完成
  421. onImageError(key, index) {
  422. this[key][index].image = '/static/error/errorImage.jpg';
  423. },
  424. // 请求载入数据
  425. async loadData() {
  426. loadIndexs({})
  427. .then(({
  428. data
  429. }) => {
  430. let goods = data.info;
  431. this.carouselList = data.banner;
  432. this.swiperLength = this.carouselList.length;
  433. this.bastList = data.giftInfo; //会员礼包
  434. uni.stopPullDownRefresh();
  435. })
  436. .catch(e => {
  437. uni.stopPullDownRefresh();
  438. });
  439. },
  440. //轮播图切换修改背景色
  441. swiperChange(e) {
  442. const index = e.detail.current;
  443. this.swiperCurrent = index;
  444. this.titleNViewBackground = this.carouselList[index].background;
  445. },
  446. //详情页
  447. navToDetailPage(item) {
  448. let id = item.id;
  449. uni.navigateTo({
  450. url: '/pages/product/product?id=' + id + '&isVip=1'
  451. });
  452. },
  453. // 轮播图跳转
  454. bannerNavToUrl(item) {
  455. // #ifdef H5
  456. console.log(item.wap_url.indexOf('http'), 'banner');
  457. if (item.wap_url.indexOf('http') >= 0) {
  458. window.location.href = item.wap_url;
  459. }
  460. // #endif
  461. //测试数据没有写id,用title代替
  462. uni.navigateTo({
  463. url: item.wap_url
  464. });
  465. }
  466. }
  467. };
  468. </script>
  469. <style lang="scss">
  470. .carousel-section {
  471. position: relative;
  472. padding-top: 10px;
  473. .bg {
  474. position: absolute;
  475. top: 0;
  476. left: 0;
  477. width: 750rpx;
  478. height: 378rpx;
  479. image {
  480. width: 100%;
  481. height: 100%;
  482. }
  483. }
  484. .titleNview-placing {
  485. height: var(--status-bar-height);
  486. box-sizing: content-box;
  487. }
  488. .search {
  489. justify-content: flex-start;
  490. padding: 10rpx 32rpx 20rpx;
  491. align-items: center;
  492. .address {
  493. width: 32rpx;
  494. height: 38rpx;
  495. }
  496. .shop-name {
  497. height: 38rpx;
  498. position: relative;
  499. top: -4rpx;
  500. z-index: 100;
  501. font-size: 30rpx;
  502. font-family: PingFang SC;
  503. font-weight: 500;
  504. padding-left: 10rpx;
  505. }
  506. .shop-jt {
  507. margin-left: 8rpx;
  508. width: 16rpx;
  509. height: 10rpx;
  510. }
  511. .input-box {
  512. margin-left: 10rpx;
  513. position: relative;
  514. z-index: 99;
  515. width: 710rpx;
  516. height: 60rpx;
  517. background: #EEEEEE;
  518. border-radius: 30rpx;
  519. .input-content {
  520. position: relative;
  521. z-index: 11;
  522. border-radius: 99rpx;
  523. flex-grow: 1;
  524. padding: 5rpx 30rpx;
  525. background: #EEEEEE;
  526. .iconsearch {
  527. font-size: 50rpx;
  528. color: #CBCBCB;
  529. }
  530. .input {
  531. margin-left: 19rpx;
  532. flex-grow: 1;
  533. color: #CBCBCB;
  534. input {
  535. font-size: 28rpx;
  536. color: #CBCBCB;
  537. }
  538. }
  539. }
  540. .input-button {
  541. padding-left: 20rpx;
  542. font-size: $font-base;
  543. height: 100%;
  544. }
  545. }
  546. }
  547. }
  548. .carousel {
  549. position: relative;
  550. z-index: 3;
  551. width: 100%;
  552. height: 360rpx;
  553. .carousel-item {
  554. width: 100%;
  555. height: 100%;
  556. padding: 0 28rpx;
  557. overflow: hidden;
  558. }
  559. image {
  560. width: 100%;
  561. height: 100%;
  562. border-radius: $border-radius-sm;
  563. }
  564. }
  565. .navbar {
  566. position: relative;
  567. z-index: 2;
  568. padding: 0 50rpx;
  569. margin-top: -200rpx;
  570. width: 750rpx;
  571. height: 420rpx;
  572. background: #ffffff;
  573. border-radius: 40rpx;
  574. .navbar-box {
  575. padding-top: 250rpx;
  576. .navbar-item {
  577. display: flex;
  578. flex-direction: column;
  579. align-items: center;
  580. width: 20%;
  581. .nitem-image {
  582. width: 90rpx;
  583. height: 90rpx;
  584. }
  585. .nitem-font {
  586. margin-top: 22rpx;
  587. font-size: 26rpx;
  588. font-family: PingFang SC;
  589. font-weight: 500;
  590. color: #000000;
  591. }
  592. }
  593. }
  594. }
  595. .jx-box {
  596. background: #fff;
  597. display: flex;
  598. flex-direction: column;
  599. align-items: center;
  600. width: 750rpx;
  601. .jx-box-title {
  602. margin: 50rpx 0;
  603. width: 610rpx;
  604. height: 30rpx;
  605. image {
  606. width: 100%;
  607. height: 100%;
  608. }
  609. }
  610. .jx-box-img {
  611. width: 750rpx;
  612. height: 220rpx;
  613. image {
  614. width: 100%;
  615. height: 100%;
  616. }
  617. }
  618. }
  619. .jx-box-content {
  620. display: flex;
  621. .content-left {
  622. margin: 20rpx 15rpx;
  623. width: 236rpx;
  624. height: 236rpx;
  625. background: #E2E2E2;
  626. border-radius: 10rpx;
  627. image {
  628. width: 100%;
  629. height:100%;
  630. }
  631. }
  632. .content-right {
  633. display: flex;
  634. flex-direction: column;
  635. justify-content: space-around;
  636. .shop-name {
  637. width: 382rpx;
  638. font-size: 32rpx;
  639. font-weight: bold;
  640. color: #333333;
  641. overflow: hidden;
  642. text-overflow: ellipsis;
  643. display:-webkit-box;
  644. -webkit-box-orient:vertical;
  645. -webkit-line-clamp:2;
  646. }
  647. .shop-content {
  648. display: flex;
  649. justify-content: space-between;
  650. .shop-content-left {
  651. display: flex;
  652. flex-direction: column;
  653. .price-box {
  654. display: flex;
  655. align-items: center;
  656. .yuan-price {
  657. font-size: 26rpx;
  658. font-weight: 500;
  659. text-decoration: line-through;
  660. color: #999999;
  661. }
  662. image {
  663. width: 16rpx;
  664. height: 18rpx;
  665. }
  666. .j-price {
  667. font-size: 24rpx;
  668. font-weight: bold;
  669. color: #B59467;
  670. }
  671. }
  672. .price-x {
  673. font-size: 36rpx;
  674. font-weight: bold;
  675. color: #FF4C4C;
  676. }
  677. }
  678. .shop-content-right {
  679. margin-top:20rpx ;
  680. align-items: center;
  681. text-align: center;
  682. width: 137rpx;
  683. height: 52rpx;
  684. font-size: 26rpx;
  685. font-weight: 500;
  686. color: #F8DABA;
  687. background: #303030;
  688. border-radius: 26rpx;
  689. line-height: 52rpx;
  690. }
  691. }
  692. }
  693. }
  694. .product-box {
  695. margin-top: 20rpx;
  696. background: #ffffff;
  697. padding: 26rpx 30rpx 20rpx;
  698. .product-title {
  699. display: flex;
  700. align-items: center;
  701. justify-content: center;
  702. .pt-image {
  703. width: 36rpx;
  704. height: 36rpx;
  705. }
  706. .bb {
  707. width: 120rpx;
  708. height: 1rpx;
  709. background: #989898;
  710. }
  711. .pt-title {
  712. margin: 0 28rpx;
  713. font-size: 30rpx;
  714. font-weight: 500;
  715. color: #363636;
  716. }
  717. .pt-tip {
  718. margin-left: 16rpx;
  719. font-size: 20rpx;
  720. font-family: PingFang SC;
  721. font-weight: bold;
  722. color: #95a0b1;
  723. }
  724. }
  725. .hotgoods {
  726. margin-top: 38rpx;
  727. width: 100%;
  728. display: flex;
  729. flex-wrap: wrap;
  730. padding: 0 0 30rpx;
  731. .hotgoods-item {
  732. width: 44%;
  733. background: #FFFFFF;
  734. margin: 20rpx;
  735. box-shadow: 0px 0px 20px 0px rgba(50, 50, 52, 0.06);
  736. border-radius: 10px;
  737. .image-wrapper {
  738. width: 100%;
  739. height: 330rpx;
  740. border-radius: 3px;
  741. overflow: hidden;
  742. position: relative;
  743. .image-bg {
  744. position: absolute;
  745. top: 0;
  746. left: 0;
  747. right: 0;
  748. bottom: 0;
  749. width: 100%;
  750. height: 100%;
  751. opacity: 1;
  752. border-radius: 12rpx 12rpx 0 0;
  753. z-index: 2;
  754. }
  755. .image {
  756. width: 100%;
  757. height: 100%;
  758. opacity: 1;
  759. border-radius: 12rpx 12rpx 0 0;
  760. }
  761. }
  762. .title {
  763. margin-top: 20rpx;
  764. font-size: 28rpx;
  765. font-family: PingFang SC;
  766. font-weight: 500;
  767. color: #333333;
  768. }
  769. .titlee {
  770. margin-left: 15rpx;
  771. font-size: 26rpx;
  772. font-weight: 500;
  773. color: #666666;
  774. white-space: nowrap;
  775. overflow: hidden;
  776. text-overflow: ellipsis;
  777. }
  778. .hot-price {
  779. display: flex;
  780. justify-content: flex-start;
  781. align-items: center;
  782. padding: 14rpx 0 30rpx;
  783. .hotPrice-box {
  784. width: 70rpx;
  785. height: 28rpx;
  786. background: linear-gradient(90deg, #c79a4c, #f9df7f);
  787. border-radius: 5rpx;
  788. text-align: center;
  789. line-height: 28rpx;
  790. font-size: 20rpx;
  791. font-weight: 400;
  792. color: #ffffff;
  793. }
  794. .price {
  795. margin-left: 10rpx;
  796. font-size: 36rpx;
  797. color: #ff0000;
  798. font-weight: 500;
  799. }
  800. .yuanPrice {
  801. margin-left: 10rpx;
  802. font-size: 20rpx;
  803. font-family: PingFang SC;
  804. font-weight: 500;
  805. text-decoration: line-through;
  806. color: #999999;
  807. }
  808. .cart-icon {
  809. image {
  810. width: 44rpx;
  811. height: 44rpx;
  812. }
  813. }
  814. }
  815. }
  816. }
  817. }
  818. .shop {
  819. margin-top: 20rpx;
  820. background: #ffffff;
  821. padding: 0 12rpx;
  822. .shop-title {
  823. padding: 30rpx 0 20rpx;
  824. display: flex;
  825. align-items: center;
  826. border-bottom: 1px solid #e3e6e7;
  827. .shop-item {
  828. width: 25%;
  829. display: flex;
  830. align-items: center;
  831. justify-content: center;
  832. .sitem-font {
  833. font-size: 26rpx;
  834. font-family: PingFang SC;
  835. font-weight: bold;
  836. color: #333333;
  837. }
  838. .jt-down {
  839. width: 10rpx;
  840. height: 8rpx;
  841. margin-left: 12rpx;
  842. }
  843. }
  844. }
  845. }
  846. .shop-main {
  847. padding: 32rpx 18rpx 0 12rpx;
  848. align-items: flex-start;
  849. justify-content: flex-start;
  850. .main-left {
  851. width: 180rpx;
  852. height: 180rpx;
  853. border-radius: 10rpx;
  854. }
  855. .main-right {
  856. width: 500rpx;
  857. justify-content: space-between;
  858. align-items: flex-start;
  859. margin-left: 20rpx;
  860. padding: 13rpx 0 35rpx;
  861. border-bottom: 1px solid #eaeced;
  862. .shopm-info {
  863. max-width: 60%;
  864. line-height: 1;
  865. .shopm-title {
  866. display: flex;
  867. justify-content: flex-start;
  868. .shopmt-font {
  869. font-size: 34rpx;
  870. font-family: PingFang SC;
  871. font-weight: bold;
  872. color: #333333;
  873. }
  874. .shopmt-good {
  875. margin-left: 6rpx;
  876. width: 30rpx;
  877. height: 30rpx;
  878. border: 1px solid #ff4c4c;
  879. border-radius: 5rpx;
  880. font-size: 20rpx;
  881. font-family: PingFang SC;
  882. font-weight: 500;
  883. color: #ff4c4c;
  884. text-align: center;
  885. line-height: 30rpx;
  886. }
  887. }
  888. .address {
  889. margin-top: 16rpx;
  890. font-size: 24rpx;
  891. font-family: PingFang SC;
  892. font-weight: 500;
  893. color: #666666;
  894. }
  895. .shopmt-tip {
  896. position: relative;
  897. display: inline-block;
  898. flex-grow: 0;
  899. margin-top: 52rpx;
  900. padding: 8rpx;
  901. background: #fcf3f0;
  902. border-radius: 16rpx 16rpx 16rpx 0px;
  903. font-size: 20rpx;
  904. font-family: PingFang SC;
  905. font-weight: 500;
  906. color: #ff440d;
  907. }
  908. }
  909. .right {
  910. height: 100%;
  911. margin-top: 5rpx;
  912. display: flex;
  913. flex-direction: column;
  914. .mright-top {
  915. display: flex;
  916. justify-content: flex-end;
  917. align-items: center;
  918. .mrt-image {
  919. width: 20rpx;
  920. height: 28rpx;
  921. }
  922. .mrt-font {
  923. margin-left: 8rpx;
  924. font-size: 22rpx;
  925. font-family: PingFang SC;
  926. font-weight: 500;
  927. color: #666666;
  928. }
  929. }
  930. .mright-bottom {
  931. margin-top: 80rpx;
  932. display: flex;
  933. justify-content: flex-end;
  934. .mrb-item {
  935. width: 46rpx;
  936. height: 46rpx;
  937. margin-left: 14rpx;
  938. }
  939. }
  940. }
  941. }
  942. }
  943. </style>