index.vue 20 KB

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