index.nvue 23 KB

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