index.vue 26 KB

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