index.vue 25 KB

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