index.nvue 23 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120
  1. <template>
  2. <view class="app">
  3. <view class="app-top">
  4. <view class="atop1">
  5. <view class="top2-bg">
  6. <view class="top3-bg">
  7. </view>
  8. </view>
  9. </view>
  10. <view class="atop2"></view>
  11. </view>
  12. <view class="top mtop">
  13. <view class="top-body">
  14. <view class="statusBar" :style="'height:' + statusBarHeight + 'px'"></view>
  15. <view class="panel">
  16. <view class="inputIndex">
  17. <navigator url="../goods/list">
  18. <view class="inputText fx-ac fx-bc fx-r">
  19. <text class="text">请输入关键词搜索</text>
  20. </view>
  21. </navigator>
  22. </view>
  23. <image src="/static/img/ic_information.png" class="information"></image>
  24. </view>
  25. </view>
  26. </view>
  27. <view class="app-body">
  28. <view class="swiper-img">
  29. <u-swiper radius='20rpx' :list="topData.banner" keyName="img" bgColor="transparent" indicator
  30. indicatorActiveColor="#DB292B" indicatorInactiveColor="#B7B7B7" previousMargin="15" nextMargin="15"
  31. indicatorMode="line"></u-swiper>
  32. </view>
  33. <view class="grid-bg">
  34. <!--九宫格-->
  35. <view class="grid gridItem" v-if="sysData.is_audit == 0">
  36. <view class="item" @tap="tapOpen2" data-url="/pages/user/order/index">
  37. <image class="icon" mode="aspectFill" src="/static/ad/1.png"></image>
  38. <text class="label">提货订单</text>
  39. </view>
  40. <view class="item" @tap="$refs.customer.open()">
  41. <image class="icon" mode="aspectFill" src="/static/ad/2.png"></image>
  42. <text class="label">联系客服</text>
  43. </view>
  44. <view class="item" @tap="tapOpen" data-url="/pages/merchant/list">
  45. <image class="icon" mode="aspectFill" src="/static/ad/3.png"></image>
  46. <text class="label">附近门店</text>
  47. </view>
  48. <view class="item" @tap="tapOpen2" data-url="/pages/guild/order/order">
  49. <image class="icon" mode="aspectFill" src="/static/ad/4.png"></image>
  50. <text class="label">抢购订单</text>
  51. </view>
  52. <view v-if="showData" class="item" @tap="tapOpen" data-url="/pages/news/about">
  53. <image class="icon" mode="aspectFill" src="/static/ad/5.png"></image>
  54. <text class="label">关于我们</text>
  55. </view>
  56. </view>
  57. <!--消息通知-->
  58. <view class="news-panel" v-if="showData">
  59. <image src="/static/img/news-icon.png" class="icon"></image>
  60. <text class="label">消息通知</text>
  61. <maoScroll class="box-panel" :data="topData.notice" :showNum="1" :lineHeight="15"
  62. :animationScroll="800" :animation="4000">
  63. <template v-slot="{line}">
  64. <text @tap="tapOpen" :data-url="'../news/index?id=' + line.id" class="line">{{ line.title }}
  65. </text>
  66. </template>
  67. </maoScroll>
  68. <image @tap="tapNews" src="/static/img/news-right.png" class="icon-right"></image>
  69. </view>
  70. </view>
  71. <view v-if="sysData.is_audit == 0">
  72. <!--CBB潮贝抢货通道-->
  73. <view class="team-buy" @tap="tapOpen" data-url="/pages/guild/itemIndex" v-if="guData!= null">
  74. <image class="teamBg" src="@/static/img/indexChatBg1.png" mode="widthFix"></image>
  75. <view class="team-show">
  76. <view class="labelBox">
  77. <text class="label">{{ guData.name }}</text>
  78. </view>
  79. <view class="guNicknameBox">
  80. <text class="guNickname">
  81. 总监:{{ guData.nickname }}
  82. </text>
  83. </view>
  84. </view>
  85. </view>
  86. </view>
  87. <!--提货好物-->
  88. <view class="goods">
  89. <view class="top">
  90. <image class="topBgImg" src="@/static/img/index_item_bg.png" mode="widthFix"></image>
  91. <view class="goodsTitle">
  92. <image class="icon" src="/static/img/goods-icon.png"></image>
  93. <text class="label">货款提货</text>
  94. <view class="fx-g1"></view>
  95. <view class="more" @tap="tapOpen" data-url="../goods/list">
  96. <text class="text">查看更多></text>
  97. </view>
  98. </view>
  99. </view>
  100. <view class="goods-items">
  101. <view @tap="tapOpen" :data-url="'../goods/index?id=' + item.id" class="item"
  102. v-for="(item,index) in topData.product">
  103. <image :src="item.img" mode="aspectFill" class="nimg"></image>
  104. <text class="title">
  105. {{ item.title }}
  106. </text>
  107. <view class="iview">
  108. <view class="score">
  109. <text>
  110. {{ item.commission }}
  111. </text>
  112. <text class="tag" v-if="sysData.is_audit == 0">积分</text>
  113. <text class="tag" v-else>参考价</text>
  114. </view>
  115. <view class="fx-g1"></view>
  116. <text class="btn" v-if="sysData.is_audit == 0">提货</text>
  117. </view>
  118. </view>
  119. </view>
  120. </view>
  121. <!--最新门店-->
  122. <view class="shop" v-if="sysData.is_audit == 0">
  123. <view class="top">
  124. <image class="icon" src="/static/img/shop-icon.png"></image>
  125. <text class="label">易趣C果园({{merchantCount}}家)</text>
  126. <view class="fx-g1"></view>
  127. <view class="more" @tap="tapOpen" data-url="../merchant/list">
  128. <text class="text">查看更多></text>
  129. <image class="prv" src="/static/img/ic-pev.png"></image>
  130. </view>
  131. </view>
  132. <view class="shop-items">
  133. <view class="item fx-r" @tap="tapOpen" :data-url="'../merchant/index?id=' + item.id"
  134. v-for="item in merchantData">
  135. <image :src="item.logo" class="img" mode="aspectFill"></image>
  136. <view class="info">
  137. <view class="iview-top fx-r">
  138. <text class="title">{{ item.name }}</text>
  139. <view class="fx-g1"></view>
  140. <view class="ii">
  141. <image src="/static/img/shop-small-location.png"></image>
  142. <text>
  143. 距离{{ item.dis_km }}
  144. </text>
  145. </view>
  146. </view>
  147. <view class="address">
  148. <image src="/static/img/address-shop.png" class="icon"></image>
  149. <text class="value">{{ item.address }}</text>
  150. </view>
  151. <view class="tel">
  152. <image src="/static/img/tel-shop.png" class="icon"></image>
  153. <text class="value">{{ item.tel }}</text>
  154. </view>
  155. <view class="business">
  156. 营业时间: {{ item.business }}
  157. </view>
  158. <view class="wiget">
  159. <view class="witem" @tap.stop="tapTel(item)">
  160. <image src="/static/img/shop-tel.png"></image>
  161. <text class="text">电话</text>
  162. </view>
  163. <view class="witem" @tap.stop="tapLbs(item)">
  164. <image src="/static/img/shop-location.png"></image>
  165. <text class="text">导航</text>
  166. </view>
  167. </view>
  168. </view>
  169. </view>
  170. </view>
  171. </view>
  172. </view>
  173. <customer-wiget ref="customer"></customer-wiget>
  174. <view class="popwin" v-if="isGg && showData">
  175. <view class="bg"></view>
  176. <view class="body">
  177. <image src="/static/img/index_bg.png" class="bgimg"></image>
  178. <view class="inner-top"></view>
  179. <view class="inner">
  180. <text class="inner-title">
  181. {{title}}
  182. </text>
  183. <scroll-view scroll-y class="max-he">
  184. <uv-parse :content="content"></uv-parse>
  185. </scroll-view>
  186. <view class="foot">
  187. <view class="btnBox">
  188. <text class="btn" @tap="tapYGdBtn">未阅读,去查看></text>
  189. </view>
  190. </view>
  191. </view>
  192. <view class="m-close">
  193. <image src="/static/img/btn-close.png" @tap="isGg = false" class="icon"></image>
  194. </view>
  195. </view>
  196. </view>
  197. </view>
  198. </template>
  199. <script>
  200. import maoScroll from '@/components/mao-scroll/mao-scroll.nvue';
  201. import customerWiget from '@/components/ui-public/customer-wiget.nvue';
  202. import upApp from "@/library/upapp.js"
  203. import {
  204. mapState,
  205. mapMutations
  206. } from 'vuex';
  207. import request from '@/library/Request.js'
  208. import utils from "@/library/utils/Comm.js"
  209. export default {
  210. computed: {
  211. ...mapState(['user', 'lbs', 'sysData', 'showData']),
  212. },
  213. components: {
  214. maoScroll,
  215. customerWiget
  216. },
  217. watch: {
  218. showData(newValue, oldValue) {
  219. this.isShowInit(newValue);
  220. }
  221. },
  222. data() {
  223. return {
  224. statusBarHeight: 20,
  225. windowHeight: 0,
  226. topData: {
  227. banner: [],
  228. notice: [],
  229. product: []
  230. },
  231. content: "",
  232. title: '',
  233. isGg: false,
  234. gGid: 0,
  235. merchantData: [],
  236. guData: null,
  237. merchantCount: 0,
  238. page: {
  239. page: 1,
  240. isLoad: false,
  241. isFoot: false
  242. },
  243. wenAr: {},
  244. isLoad: false,
  245. maxheight: 0, //滚轮页面高度
  246. }
  247. },
  248. onLoad() {
  249. this.initView();
  250. this.isShowInit(false);
  251. upApp();
  252. },
  253. onReady() {
  254. const that = this;
  255. uni.getSystemInfo({
  256. success: (resu) => {
  257. try {
  258. // console.log(resu,'resu')
  259. that.statusBarHeight = resu.statusBarHeight;
  260. // that.windowHeight = resu.windowHeight
  261. } catch (err) {
  262. console.log(err)
  263. }
  264. }
  265. });
  266. },
  267. onReachBottom() {
  268. if (this.page.isFoot || this.page.isLoad) {
  269. return;
  270. }
  271. this.page.page++;
  272. this.getData();
  273. },
  274. methods: {
  275. // ...mapMutations(['setSys', 'getGps']),
  276. AllApp() {
  277. return getApp()
  278. },
  279. isShowInit(type) {
  280. // console.log(type,'type11111111111111')
  281. uni.setTabBarItem({
  282. index: 1,
  283. visible: type,
  284. });
  285. uni.setTabBarItem({
  286. index: 2,
  287. visible: type,
  288. })
  289. },
  290. initView: function() {
  291. const that = this
  292. request
  293. .post("indexInit")
  294. .then(res => {
  295. // console.log(res,'resssss')
  296. uni.hideLoading();
  297. if (res.code == 200) {
  298. this.isLoad = true;
  299. this.topData = res.data;
  300. this.getData(true);
  301. //获取文票系统
  302. this.wenpiao();
  303. if (this.user != null) {
  304. //获取自己场馆
  305. this.getGu();
  306. }
  307. let gongId = uni.getStorageSync('gonggao') || '';
  308. if (this.topData.notice.length > 0 && gongId != this.topData.notice[0].id) {
  309. this.gGid = this.topData.notice[0].id;
  310. this.getNoticPop(this.topData.notice[0].id);
  311. }
  312. }
  313. })
  314. .catch(err => {
  315. utils.Tip("加载失败,重新点击尝试!" + JSON.stringify(error));
  316. uni.hideLoading();
  317. });
  318. this.initSys();
  319. },
  320. /**
  321. * 基本逻辑
  322. */
  323. initSys: function() {
  324. const that = this;
  325. if (plus != null) {
  326. plus.runtime.getProperty(plus.runtime.appid, (wgtinfo) => {
  327. let versionCode = wgtinfo.versionCode;
  328. request.post("sysInit", {
  329. code: versionCode
  330. })
  331. .then(res => {
  332. if (res.code == 200) {
  333. that.$store.commit('setSys', res.data)
  334. if (res.data.is_audit == 0) {
  335. that.$store.commit('getGps', {
  336. page: that,
  337. fn: (res) => {
  338. console.log(res);
  339. that.getData(true);
  340. },
  341. err: (err) => {
  342. that.getData(true);
  343. }
  344. })
  345. }
  346. }
  347. });
  348. });
  349. }
  350. },
  351. /**
  352. * 重要提示
  353. * @param {Object} id
  354. */
  355. getNoticPop: function(id) {
  356. request
  357. .post("getContent", {
  358. id: id
  359. })
  360. .then(res => {
  361. // console.log(res);
  362. if (res.code == 200) {
  363. this.title = res.data.title;
  364. this.content = res.data.content;
  365. console.log(this.content, 'this.content')
  366. this.isGg = true;
  367. }
  368. })
  369. .catch(err => {
  370. utils.Tip("网络错误,请稍后尝试");
  371. });
  372. },
  373. /**
  374. * 确认阅读公告
  375. */
  376. tapYGdBtn: function() {
  377. this.isGg = false;
  378. uni.setStorageSync('gonggao', this.gGid);
  379. uni.navigateTo({
  380. url: '../news/index?id=' + this.gGid
  381. });
  382. },
  383. wenpiao: function() {
  384. request
  385. .get("tradeweb")
  386. .then(res => {
  387. uni.hideLoading();
  388. if (res.code == 200) {
  389. this.wenAr = res.data;
  390. }
  391. });
  392. },
  393. /**
  394. * 最新门店
  395. */
  396. getData: function(isPull = false) {
  397. if (this.page.isLoad) return;
  398. this.page.isLoad = true;
  399. var post = {};
  400. post.page = this.page.page;
  401. //gps位置
  402. if (this.lbs != null) {
  403. post.lat = utils.isDefine(this.lbs.latitude) ? this.lbs.latitude : 0;
  404. post.lng = utils.isDefine(this.lbs.longitude) ? this.lbs.longitude : 0;
  405. }
  406. request
  407. .post("merchants", post)
  408. .then(res => {
  409. uni.hideLoading();
  410. if (res.code == 200) {
  411. this.merchantData = res.data.result;
  412. this.merchantCount = res.data.count;
  413. this.page.isFoot = true;
  414. this.isLoad = true;
  415. }
  416. })
  417. .catch(error => {
  418. console.log(error);
  419. uni.hideLoading();
  420. utils.Tip("加载失败,重新点击尝试!");
  421. });
  422. },
  423. getGu: function() {
  424. request
  425. .get("indexGu")
  426. .then(res => {
  427. uni.hideLoading();
  428. if (res.code == 200) {
  429. this.guData = res.data.guData;
  430. }
  431. });
  432. },
  433. /**
  434. * 更多
  435. */
  436. tapNews: function() {
  437. uni.navigateTo({
  438. url: "../news/list"
  439. });
  440. },
  441. /**
  442. * 打开
  443. * @param {Object} ev
  444. */
  445. tapOpen: function(ev) {
  446. let url = ev.currentTarget.dataset.url;
  447. utils.navigateTo(url);
  448. },
  449. /**
  450. * 打开
  451. * @param {Object} ev
  452. */
  453. tapOpen2: function(ev) {
  454. let url = ev.currentTarget.dataset.url;
  455. if (!utils.isDefine(this.user)) {
  456. uni.navigateTo({
  457. url: "/pages/login/index"
  458. });
  459. return;
  460. }
  461. utils.navigateTo(url);
  462. },
  463. /**
  464. * 拨打电话
  465. */
  466. tapTel: function(item) {
  467. if (item.tel == null) {
  468. utils.showAlert({
  469. title: "系统提示",
  470. content: "暂无联系方式"
  471. });
  472. return;
  473. }
  474. const info = uni.getSystemInfoSync();
  475. if (info.platform == 'android') {
  476. uni.showModal({
  477. content: "确认拨打" + item.tel,
  478. confirmText: "确定",
  479. cancelText: "取消",
  480. success: (res) => {
  481. if (res.confirm) {
  482. this.$store.dispatch('permission/requestPermissions', 'CALL_PHONE').then(
  483. res => {
  484. if (res !== 1) return;
  485. uni.makePhoneCall({
  486. phoneNumber: item.tel,
  487. fail: (res) => {
  488. console.log("aaaaa");
  489. uni.showModal({
  490. content: JSON.stringify(res)
  491. });
  492. },
  493. complete: (xx) => {
  494. console.log(xx);
  495. console.log("ad");
  496. }
  497. });
  498. });
  499. }
  500. }
  501. });
  502. } else {
  503. uni.makePhoneCall({
  504. phoneNumber: item.tel,
  505. });
  506. }
  507. },
  508. tapLbs: function(item) {
  509. uni.openLocation({
  510. latitude: Number(item.lat),
  511. longitude: Number(item.lng),
  512. name: item.name,
  513. address: item.address,
  514. scale: 12,
  515. success: function() {
  516. console.log('success');
  517. },
  518. fail: function(res) {
  519. },
  520. })
  521. },
  522. }
  523. }
  524. </script>
  525. <style lang="scss">
  526. .swiper-box {}
  527. .app {
  528. background-color: #FEF7F5;
  529. }
  530. .mtop {
  531. margin-top: -500rpx;
  532. width: 750rpx;
  533. }
  534. .app-top {
  535. height: 500rpx;
  536. width: 750rpx;
  537. .atop1 {
  538. height: 500rpx;
  539. .top2-bg {
  540. height: 500rpx;
  541. width: 750rpx;
  542. background-image: linear-gradient(to right, #FEA9C8, #FFA18E);
  543. .top3-bg {
  544. height: 500rpx;
  545. width: 750rpx;
  546. background-image: linear-gradient(to bottom, rgba(255, 255, 255, 0), #FEF7F5);
  547. }
  548. }
  549. }
  550. .atop2 {
  551. background: #fff;
  552. }
  553. }
  554. .top {
  555. .top-body {
  556. .panel {
  557. flex: 1;
  558. flex-direction: row;
  559. align-items: center;
  560. padding: 20rpx 30rpx;
  561. .inputIndex {
  562. flex: 1;
  563. z-index: 2;
  564. padding-right: 20rpx;
  565. .inputText {
  566. background-color: #FFF;
  567. border-radius: 100px;
  568. line-height: 1;
  569. padding: 20rpx;
  570. }
  571. .text {
  572. font-size: 24rpx;
  573. color: rgba(170, 170, 170, 1);
  574. }
  575. }
  576. .index-img {
  577. width: 80rpx;
  578. height: 48rpx;
  579. }
  580. .information {
  581. width: 38rpx;
  582. height: 38rpx;
  583. }
  584. }
  585. }
  586. }
  587. //消息信息
  588. .grid-bg {
  589. padding: 0 32rpx;
  590. margin-top: 20rpx;
  591. .gridItem {
  592. background-color: #FFF;
  593. padding: 20rpx 0;
  594. border-radius: 20rpx;
  595. flex-direction: row;
  596. justify-content: space-between;
  597. align-items: center;
  598. }
  599. //9宫格
  600. .grid {
  601. .item {
  602. width: 140rpx;
  603. flex: 1;
  604. align-items: center;
  605. .icon {
  606. width: 90rpx;
  607. height: 90rpx;
  608. }
  609. .label {
  610. font-size: 12px;
  611. color: #0C1732;
  612. margin-top: 16rpx;
  613. }
  614. }
  615. }
  616. //消息通知
  617. .news-panel {
  618. padding: 15rpx 20rpx;
  619. background-color: #FFF;
  620. margin-top: 20rpx;
  621. border-radius: 20rpx;
  622. flex-direction: row;
  623. justify-content: center;
  624. align-items: center;
  625. .box-panel {
  626. flex: 1;
  627. }
  628. .titleBorder {
  629. border: 1px solid #000;
  630. }
  631. .icon {
  632. width: 28rpx;
  633. height: 28rpx;
  634. }
  635. .label {
  636. margin: 0px 10rpx;
  637. font-weight: bold;
  638. font-size: 26rpx;
  639. color: #FF4C4C;
  640. }
  641. .icon-right {
  642. width: 30rpx;
  643. height: 6rpx;
  644. }
  645. .line {
  646. height: 15px;
  647. line-height: 15px;
  648. color: #575656;
  649. font-size: 26rpx;
  650. text-overflow: ellipsis;
  651. lines: 1;
  652. }
  653. }
  654. }
  655. //抢货通道
  656. .team-buy {
  657. margin: 15rpx 10rpx 20rpx 30rpx;
  658. height: 240rpx;
  659. width: 690rpx;
  660. .teamBg {
  661. width: 690rpx;
  662. height: 240rpx;
  663. }
  664. .team-show {
  665. color: #fff;
  666. padding-top: 70rpx;
  667. margin-top: -240rpx;
  668. align-items: center;
  669. justify-content: center;
  670. .labelBox {
  671. padding-top: 30rpx;
  672. .label {
  673. line-height: 45rpx;
  674. font-weight: bold;
  675. font-size: 45rpx;
  676. color: #FFF;
  677. }
  678. }
  679. .guNicknameBox {
  680. margin-top: 20rpx;
  681. padding: 8rpx 30rpx;
  682. background-color: #fffdf1;
  683. border: 1px solid #EDC299;
  684. border-radius: 100rpx;
  685. box-shadow: 4rpx 4rpx 10rpx 2rpx #FCD3BF inset;
  686. }
  687. .guNickname {
  688. font-weight: bold;
  689. font-size: 28rpx;
  690. color: #EA3616;
  691. }
  692. }
  693. }
  694. //产品中心
  695. .goods {
  696. padding: 20rpx 30rpx;
  697. .goodsTitle {
  698. margin-top: -60rpx;
  699. flex:1;
  700. position: relative;
  701. flex-direction: row;
  702. padding-left: 86rpx;
  703. padding-right: 50rpx;
  704. }
  705. .topBgImg {
  706. width: 690rpx;
  707. height: 74rpx;
  708. }
  709. .top {
  710. height: 74rpx;
  711. .icon {
  712. width: 96rpx;
  713. height: 123rpx;
  714. position: absolute;
  715. top: -24rpx;
  716. left: 0;
  717. }
  718. .label {
  719. color: #fff;
  720. font-weight: bold;
  721. font-size: 34rpx;
  722. margin-left: 12rpx;
  723. align-self: self-start;
  724. padding-top: 16rpx;
  725. }
  726. .more {
  727. align-self: self-start;
  728. padding-top: 30rpx;
  729. .text {
  730. color: #FFF;
  731. font-size: 24rpx;
  732. }
  733. .prv {
  734. width: 10rpx;
  735. height: 20rpx;
  736. margin-left: 8rpx;
  737. }
  738. }
  739. }
  740. .goods-items {
  741. border: 2px solid rgba(255, 51, 44, 1);
  742. border-bottom-left-radius: 20rpx;
  743. border-bottom-right-radius: 20rpx;
  744. padding: 20rpx;
  745. .item {
  746. // width: calc(50% - 10rpx);
  747. margin-right: 10rpx;
  748. margin-bottom: 20rpx;
  749. box-shadow: 0px 0px 20px 0px rgba(50, 50, 52, 0.1);
  750. border-radius: 20rpx;
  751. background-color: #FFF;
  752. .nimg {
  753. // width: 100%;
  754. // height: calc(50vw - 20rpx - 10rpx);
  755. border-radius: 20rpx 20rpx 0 0;
  756. }
  757. .title {
  758. padding: 20rpx;
  759. height: 80rpx;
  760. text-overflow: ellipsis;
  761. lines: 1;
  762. color: #333333;
  763. font-weight: bold;
  764. font-size: 30rpx;
  765. }
  766. .iview {
  767. padding: 20rpx;
  768. .score {
  769. color: #FF4C4C;
  770. font-weight: bold;
  771. font-size: 36rpx;
  772. .tag {
  773. font-weight: bold;
  774. font-size: 18rpx;
  775. color: #FF4C4C;
  776. }
  777. }
  778. .btn {
  779. background-image: linear-gradient(143.2747deg, #FF6A00, #EE0979);
  780. border-radius: 40rpx;
  781. padding: 10rpx 28rpx;
  782. font-size: 22rpx;
  783. color: #FFFFFF;
  784. }
  785. }
  786. }
  787. }
  788. }
  789. //最新门店
  790. .shop {
  791. padding: 20rpx 30rpx;
  792. .top {
  793. height: 74rpx;
  794. padding-left: 86rpx;
  795. padding-right: 50rpx;
  796. .icon {
  797. width: 96rpx;
  798. height: 123rpx;
  799. position: absolute;
  800. top: -24rpx;
  801. left: 0;
  802. }
  803. .label {
  804. color: #fff;
  805. font-weight: bold;
  806. font-size: 34rpx;
  807. margin-left: 12rpx;
  808. align-self: self-start;
  809. padding-top: 16rpx;
  810. }
  811. .more {
  812. align-self: self-start;
  813. padding-top: 30rpx;
  814. .text {
  815. color: #FFF;
  816. font-size: 24rpx;
  817. }
  818. .prv {
  819. width: 10rpx;
  820. height: 20rpx;
  821. margin-left: 8rpx;
  822. }
  823. }
  824. }
  825. .shop-items {
  826. border: 2px solid rgba(255, 51, 44, 1);
  827. border-bottom-left-radius: 20rpx;
  828. border-bottom-right-radius: 20rpx;
  829. padding: 20rpx;
  830. .item {
  831. margin-top: 30rpx;
  832. .img {
  833. width: 180rpx;
  834. height: 180rpx;
  835. border-radius: 10rpx;
  836. }
  837. .info {
  838. position: relative;
  839. margin-left: 20rpx;
  840. // width: calc(100% - 200rpx);
  841. border-bottom: 1px solid #F8F8F8;
  842. .title {
  843. font-weight: bold;
  844. font-size: 34rpx;
  845. color: #333333;
  846. // width: calc(60%);
  847. text-overflow: ellipsis;
  848. lines: 1;
  849. }
  850. .ii {
  851. // image {
  852. // width: 20rpx;
  853. // height: 28rpx;
  854. // margin-right: 8rpx
  855. // }
  856. font-weight: 400;
  857. font-size: 22rpx;
  858. color: #666666;
  859. }
  860. .address {
  861. .icon {
  862. width: 28rpx;
  863. height: 28rpx;
  864. }
  865. .value {
  866. font-size: 22rpx;
  867. color: #666666;
  868. opacity: 0.5;
  869. margin-left: 10rpx;
  870. }
  871. margin-top: 20rpx;
  872. }
  873. .tel {
  874. margin-top: 16rpx;
  875. .icon {
  876. width: 28rpx;
  877. height: 28rpx;
  878. }
  879. .value {
  880. font-size: 22rpx;
  881. color: #666666;
  882. opacity: 0.5;
  883. margin-left: 10rpx;
  884. }
  885. }
  886. .business {
  887. font-weight: bold;
  888. font-size: 24rpx;
  889. color: #FF6F0F;
  890. background: rgba(252, 243, 240, 0.8);
  891. border-radius: 16rpx 16rpx 16rpx 0px;
  892. padding: 10rpx 10rpx;
  893. margin-bottom: 20rpx;
  894. }
  895. .wiget {
  896. position: absolute;
  897. right: 0;
  898. bottom: 20rpx;
  899. .wline {
  900. margin: 0px 24rpx;
  901. height: 40rpx;
  902. width: 1px;
  903. background: #eee;
  904. }
  905. .witem {
  906. // image {
  907. // width: 46rpx;
  908. // height: 46rpx;
  909. // }
  910. .text {
  911. font-size: 14px;
  912. color: #666666;
  913. margin-top: 8rpx;
  914. }
  915. }
  916. }
  917. }
  918. }
  919. }
  920. }
  921. /**弹出框 **/
  922. .popwin {
  923. position: fixed;
  924. width: 750rpx;
  925. top: 0;
  926. left: 0;
  927. bottom: 0;
  928. z-index: 88;
  929. justify-content: center;
  930. align-items: center;
  931. }
  932. .popwin .bg {
  933. background: rgba(0, 0, 0, 0.5);
  934. width: 750rpx;
  935. position: absolute;
  936. left: 0;
  937. top: 0;
  938. bottom: 0;
  939. }
  940. .popwin .body {
  941. position: relative;
  942. border-radius: 8px;
  943. width: 600rpx;
  944. align-items: center;
  945. }
  946. .popwin .body .bgimg {
  947. width: 600rpx;
  948. height: 900rpx;
  949. position: absolute;
  950. top: 0;
  951. bottom: 0;
  952. }
  953. .popwin .body .inner {
  954. position: relative;
  955. z-index: 99;
  956. width: 670rpx;
  957. padding: 0px 40rpx;
  958. align-items: center;
  959. }
  960. .inner-title {
  961. color: #FC2D47;
  962. padding: 25rpx 0rpx;
  963. font-size: 36rpx;
  964. font-weight: bold;
  965. }
  966. .inner-top {
  967. height: 225rpx
  968. }
  969. .max-he {
  970. height: 322rpx;
  971. margin: 0 20rpx;
  972. width: 500rpx;
  973. }
  974. .foot {
  975. height: 195rpx;
  976. width: 337rpx;
  977. margin-top: 60rpx;
  978. }
  979. .popwin .btnBox {
  980. height: 66rpx;
  981. align-items: center;
  982. justify-content: center;
  983. background-image: linear-gradient(0deg, #FAC37B, #FFF5B0);
  984. box-shadow: 2px 7px 7px 0px rgba(161, 23, 36, 0.4);
  985. border-radius: 15rpx;
  986. .btn {
  987. font-size: 38rpx;
  988. color: #97000E;
  989. }
  990. }
  991. .popwin .m-close {
  992. margin-top: 10px;
  993. }
  994. .popwin .m-close .icon {
  995. width: 120rpx;
  996. height: 120rpx;
  997. }
  998. .app-body {
  999. .swiper-img {
  1000. margin: 0 30rpx;
  1001. }
  1002. }
  1003. </style>