index.vue 25 KB

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