index.nvue 23 KB

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