index.vue 28 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027
  1. <template>
  2. <div :data-theme="theme" class="store-home productSort"
  3. :style="{backgroundImage: `linear-gradient(360deg, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.9) 100%),url(${merchantAPPInfo.backImage})`}">
  4. <tui-skeleton v-if="skeletonShow"></tui-skeleton>
  5. <view class="sys-head skeleton-rect" :style="{ height: statusBarHeight + 'px' }"></view>
  6. <view class="fixed-top">
  7. <view class='navbarCon acea-row' :style="{ paddingRight: navbarRight + 'px',width:leftWindowWidth+ 'px' }">
  8. <view class="select_nav acea-row row-around tui-skeleton-rect homeBox" id="home" ref="selectNav">
  9. <text class="iconfont icon-fanhui2" @tap="returns"></text>
  10. <text class="nav_line"></text>
  11. <text class="iconfont icon-shouye4" @tap="goIndex"></text>
  12. </view>
  13. <!-- #ifndef MP -->
  14. <navigator :url="'/pages/goods/goods_list/index?merId='+merId" class="input tui-skeleton-rect searchIpt"
  15. hover-class="none" :style="{ top: homeTop + 'rpx',width:searchIptWindowWidth+ 'px' }"><text
  16. class="iconfont icon-xiazai5"></text>
  17. 输入商品名称搜索</navigator>
  18. <!-- #endif -->
  19. <!-- #ifdef MP -->
  20. <navigator :url="'/pages/goods/goods_list/index?merId='+merId" class="input tui-skeleton-rect searchIpt"
  21. hover-class="none" :style="{ top: searchTop + 'px',width:searchIptWindowWidth+ 'px' ,height:searchHeight+'px'}"><text
  22. class="iconfont icon-xiazai5"></text>
  23. 输入商品名称搜索</navigator>
  24. <!-- #endif -->
  25. </view>
  26. </view>
  27. <scroll-view class="main" scroll-y="true" @scroll="scrollHome">
  28. <merHome class="tui-skeleton-rect" :merchantInfo="merchantAPPInfo" :merId="merId" type="detail"
  29. @merHomeHeight="merHomeHeight"></merHome>
  30. <view class="tab-cont">
  31. <!-- 分类 -->
  32. <view v-if="tabActive === 1">
  33. <mer-classify :merId="merId"></mer-classify>
  34. </view>
  35. <!-- 优惠券 -->
  36. <view v-if="tabActive === 2" class="couponBox">
  37. <mer-coupon :merId="merId"></mer-coupon>
  38. </view>
  39. </view>
  40. </scroll-view>
  41. </div>
  42. </template>
  43. <script>
  44. // +----------------------------------------------------------------------
  45. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  46. // +----------------------------------------------------------------------
  47. // | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
  48. // +----------------------------------------------------------------------
  49. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  50. // +----------------------------------------------------------------------
  51. // | Author: CRMEB Team <admin@crmeb.com>
  52. // +----------------------------------------------------------------------
  53. import {
  54. getMerCategoryApi,
  55. } from '@/api/merchant.js';
  56. import WaterfallsFlow from '@/components/WaterfallsFlow/WaterfallsFlow.vue'
  57. import WaterfallsFlowItem from '@/components/WaterfallsFlowItem/WaterfallsFlowItem.vue'
  58. import merCoupon from '../coupon/index.vue';
  59. import merClassify from '../classify/index.vue';
  60. import {
  61. mapGetters
  62. } from "vuex";
  63. import {
  64. getCoupons,
  65. setCouponReceive,
  66. } from '@/api/api.js';
  67. import {
  68. toLogin
  69. } from '@/libs/login.js';
  70. import emptyPage from '@/components/emptyPage.vue'
  71. import Cache from '@/utils/cache';
  72. import merHome from '@/components/merHome/index.vue'
  73. import {
  74. goProductDetail
  75. } from '@/libs/order.js'
  76. import tuiSkeleton from '@/components/base/tui-skeleton.vue';
  77. import easyLoadimage from '@/components/base/easy-loadimage.vue';
  78. var statusBarHeight = uni.getSystemInfoSync().statusBarHeight;
  79. let app = getApp();
  80. export default {
  81. components: {
  82. WaterfallsFlow,
  83. emptyPage,
  84. merHome,
  85. tuiSkeleton,
  86. easyLoadimage,
  87. WaterfallsFlowItem,
  88. merClassify,
  89. merCoupon
  90. },
  91. props: {
  92. merId: { // 商户id
  93. type: Number,
  94. default: 0
  95. }, //底部菜单选中的索引
  96. tabActive: {
  97. type: Number,
  98. default: 0
  99. }
  100. },
  101. data() {
  102. return {
  103. //普通价格
  104. svipPriceStyle: {
  105. svipBox: {
  106. height: '26rpx',
  107. borderRadius: '12rpx 56rpx 56rpx 20rpx',
  108. },
  109. icon: {
  110. height: '26rpx',
  111. fontSize: '18rpx',
  112. borderRadius: '12rpx 0 12rpx 2rpx'
  113. },
  114. price: {
  115. fontSize: '38rpx'
  116. },
  117. svipPrice: {
  118. fontSize: '22rpx'
  119. },
  120. topStyle: {
  121. top: '0'
  122. }
  123. },
  124. //svip价格
  125. svipIconStyle: {
  126. svipBox: {
  127. height: '26rpx',
  128. borderRadius: '24rpx 40rpx 40rpx 0.4rpx',
  129. },
  130. price: {
  131. fontSize: '38rpx'
  132. },
  133. svipPrice: {
  134. fontSize: '18rpx'
  135. }
  136. },
  137. urlDomain: this.$Cache.get("imgHost"),
  138. statusBarHeight: 0,
  139. navList: [{
  140. type: 1,
  141. name: '商家券',
  142. count: 0
  143. },
  144. {
  145. type: 2,
  146. name: '商品券',
  147. count: 0
  148. }
  149. ],
  150. type: 1,
  151. mer_banner: '../images/store.png',
  152. couponsList: [],
  153. loadTitle: '加载更多',
  154. categoryLoading: false,
  155. category: [],
  156. productList: [],
  157. scrollTop: 0,
  158. sortPrice: '',
  159. skeletonShow: true, //骨架屏显示隐藏
  160. navShow: false,
  161. navActive: 0,
  162. isColumn: true, // 商品列表排列方式
  163. stock: 0,
  164. price: 0,
  165. goodsLoading: false,
  166. loadendcoupon: false,
  167. loadingcoupon: false,
  168. page: 1,
  169. limit: 10,
  170. homeTop: 20,
  171. navbarRight: 0,
  172. theme: app.globalData.theme,
  173. storeHeight: 0, //商户信息高度
  174. rightSafeArea: 0, // 微信小程序右上角的胶囊菜单宽度
  175. leftWindowWidth: 0, //小程序头部左侧除去右上角的胶囊菜单宽度的长度
  176. searchIptWindowWidth: 0, //小程序端搜索框长度
  177. isShowTop: false ,//控制头部是否固定
  178. searchTop:0,
  179. searchHeight:0,
  180. }
  181. },
  182. computed: {
  183. ...mapGetters(["merchantClassify", "merchantType", 'isLogin', 'uid', 'merchantAPPInfo']),
  184. },
  185. // 滚动监听
  186. onPageScroll(e) {
  187. // 传入scrollTop值并触发所有easy-loadimage组件下的滚动监听事件
  188. uni.$emit('scroll');
  189. window.addEventListener('scroll', this.handleScroll)
  190. },
  191. onShow() {
  192. // #ifdef MP || APP-PLUS
  193. this.statusBarHeight = statusBarHeight;
  194. // #endif
  195. // #ifdef H5
  196. this.statusBarHeight = 20;
  197. // #endif
  198. },
  199. created() {
  200. // #ifdef MP
  201. // 获取窗口信息
  202. const windowInfo = uni.getWindowInfo()
  203. // 获取胶囊左边界坐标
  204. this.leftWindowWidth = uni.getMenuButtonBoundingClientRect().left;
  205. const query = uni.createSelectorQuery().in(this);
  206. const homeWidth = 0
  207. //搜索框宽度
  208. query.select('#home').boundingClientRect(data => {
  209. this.searchIptWindowWidth = this.leftWindowWidth - data.width - 50
  210. }).exec();
  211. // #endif
  212. // #ifdef MP
  213. const res = uni.getMenuButtonBoundingClientRect()
  214. const statusHeight = res.top //胶囊距离顶部
  215. const jnHeight = res.height //胶囊高度
  216. this.searchTop=statusHeight-this.statusBarHeight
  217. this.searchHeight=jnHeight
  218. // #endif
  219. },
  220. onLoad(options) {
  221. // this.merid = parseInt(options.id)
  222. // #ifdef MP || APP-PLUS
  223. this.statusBarHeight = statusBarHeight;
  224. // #endif
  225. // #ifdef H5
  226. this.statusBarHeight = 20;
  227. // #endif
  228. },
  229. mounted: function() {
  230. // #ifdef MP || APP-PLUS
  231. this.statusBarHeight = statusBarHeight;
  232. // #endif
  233. // #ifdef H5
  234. this.statusBarHeight = 20;
  235. // #endif
  236. this.$store.dispatch('MerTypeList');
  237. this.skeletonShow = false;
  238. },
  239. methods: {
  240. handleScroll() {
  241. const t = document.documentElement.scrollTop || document.body.scrollTop
  242. if (t > 100) {
  243. this.isShowTop = true
  244. } else {
  245. this.isShowTop = false
  246. }
  247. },
  248. //头部商户信息高度
  249. merHomeHeight(e) {
  250. this.storeHeight = e;
  251. },
  252. goIndex() {
  253. uni.switchTab({
  254. url: '/pages/index/index'
  255. })
  256. },
  257. // 后退
  258. returns: function() {
  259. uni.navigateBack()
  260. },
  261. onTouchmove(e) {
  262. if (this.loadend) return;
  263. if (this.loading) return;
  264. if (this.goodsLoading) return;
  265. const query = uni.createSelectorQuery().in(this);
  266. query.select('#goods').boundingClientRect(data => {
  267. if (data.bottom < 1500 && data.top < 0) {
  268. this.getGoods();
  269. }
  270. }).exec();
  271. // 模拟触底刷新
  272. },
  273. // 商铺首页滚动 navbar 吸顶
  274. scrollHome: function(e) {
  275. uni.$emit('scroll');
  276. this.navShow = e.detail.scrollTop >= this.storeHeight - 20;
  277. },
  278. returns() {
  279. uni.navigateBack()
  280. },
  281. },
  282. }
  283. </script>
  284. <style lang="scss" scoped>
  285. .headerfixed {
  286. /* #ifdef H5 */
  287. top: 88rpx;
  288. /* #endif */
  289. z-index: 99;
  290. position: fixed;
  291. }
  292. .iconfont {
  293. font-size: 28rpx !important;
  294. }
  295. .select_nav {
  296. width: 140rpx;
  297. /* #ifndef MP */
  298. height: 54rpx;
  299. /* #endif */
  300. border-radius: 33rpx;
  301. border: 1px solid rgba(255, 255, 255, .5);
  302. color: #fff;
  303. font-size: 18px;
  304. line-height: 54rpx;
  305. align-items: center;
  306. }
  307. .px-20 {
  308. padding: 0 20rpx 0;
  309. }
  310. .nav_line {
  311. content: '';
  312. display: inline-block;
  313. width: 1px;
  314. height: 34rpx;
  315. background: #b3b3b3 !important;
  316. color: #b3b3b3 !important;
  317. }
  318. .navbarCon {
  319. padding: 10rpx 20rpx 0 20rpx;
  320. /* #ifdef H5 || APP */
  321. width: 800rpx !important;
  322. /* #endif */
  323. }
  324. .h5_back {
  325. color: #fff;
  326. font-size: 32rpx;
  327. text-align: center;
  328. width: 140rpx;
  329. height: 54rpx;
  330. background: #3B3F41;
  331. border-radius: 27rpx;
  332. .iconfont {
  333. color: #fff;
  334. }
  335. }
  336. .input {
  337. display: flex;
  338. align-items: center;
  339. /* #ifdef MP */
  340. //width: 42%;
  341. /* #endif */
  342. /* #ifndef MP */
  343. width: 538rpx;
  344. /* #endif */
  345. height: 55rpx;
  346. padding: 0 0 0 30rpx;
  347. border: 1px solid rgba(0, 0, 0, 0.07);
  348. border-radius: 33rpx;
  349. color: #D9D9D9;
  350. font-size: 26rpx;
  351. // margin: auto;
  352. background: rgba(255, 255, 255, 0.3);
  353. margin-left: 20rpx;
  354. .iconfont {
  355. margin-right: 20rpx;
  356. font-size: 26rpx;
  357. color: #D9D9D9;
  358. }
  359. }
  360. .select {
  361. @include main_color(theme);
  362. @include coupons_border_color(theme);
  363. }
  364. .sold {
  365. font-size: 20rpx;
  366. color: #888888;
  367. }
  368. .navCoupon {
  369. width: 100%;
  370. height: 80rpx;
  371. color: #999999;
  372. background-color: #fff;
  373. }
  374. .navCoupon .acea-row {
  375. border-top: 5rpx solid transparent;
  376. border-bottom: 5rpx solid transparent;
  377. cursor: pointer;
  378. }
  379. .navCoupon .acea-row.on {
  380. @include tab_border_bottom(theme);
  381. @include main_color(theme);
  382. }
  383. .tab-cont {
  384. background: #f5f5f5;
  385. min-height: 500rpx;
  386. }
  387. .couponBox {
  388. /deep/.empty-box {
  389. padding-top: 200rpx;
  390. margin-top: 0 !important;
  391. }
  392. }
  393. .main {
  394. flex: 1;
  395. min-height: 0rpx;
  396. height: calc(100vh - var(--window-top)); //calc()是动态计算函数
  397. /deep/.store {
  398. padding: 0 24rpx 24rpx 24rpx;
  399. }
  400. /deep/.noCheck {
  401. color: #666;
  402. }
  403. /deep/.pictrue {
  404. width: 74rpx;
  405. height: 74rpx;
  406. border-radius: 6rpx;
  407. overflow: hidden;
  408. }
  409. }
  410. .font-bg-red {
  411. padding: 4rpx;
  412. @include main_bg_color(theme);
  413. color: #fff;
  414. font-size: 18rpx;
  415. display: inline-block;
  416. border-radius: 4rpx;
  417. }
  418. .goods {
  419. display: flex;
  420. flex-wrap: wrap;
  421. justify-content: space-between;
  422. padding-top: 20rpx;
  423. padding-left: 24rpx;
  424. background-color: #F5F5F5;
  425. width: 100%;
  426. }
  427. .coupon-list {
  428. margin-top: 0;
  429. .right {
  430. position: relative;
  431. overflow: hidden;
  432. }
  433. }
  434. .coupon {
  435. padding: 24rpx;
  436. background-color: #F5F5F5;
  437. .item {
  438. display: flex;
  439. margin-bottom: 16rpx;
  440. .left {
  441. display: flex;
  442. flex-direction: column;
  443. justify-content: center;
  444. align-items: center;
  445. width: 240rpx;
  446. font-weight: 500;
  447. font-size: 24rpx;
  448. line-height: 1;
  449. color: #FFFFFF;
  450. &.gary {
  451. background-image: url('data:image/png;base64,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');
  452. }
  453. .money {
  454. text {
  455. margin-left: 10rpx;
  456. font-size: 60rpx;
  457. }
  458. }
  459. }
  460. .right {
  461. flex: 1;
  462. min-width: 0;
  463. padding: 0 20rpx;
  464. background-color: #FFFFFF;
  465. .name {
  466. border-bottom: 1rpx solid #F0F0F0;
  467. font-weight: 500;
  468. height: 115rpx;
  469. font-size: 30;
  470. line-height: 46rpx;
  471. color: #282828;
  472. padding: 15rpx 0;
  473. text {
  474. display: inline-block;
  475. // width: 84rpx;
  476. // height: 28rpx;
  477. padding: 0 10rpx;
  478. border-radius: 14rpx;
  479. margin-right: 15rpx;
  480. background-color: #FFF4F3;
  481. font-weight: 500;
  482. font-size: 20rpx;
  483. line-height: 26rpx;
  484. text-align: center;
  485. @include main_color(theme);
  486. @include coupons_border_color(theme);
  487. &.gary {
  488. border-color: #BBB;
  489. color: #bbb;
  490. background-color: #F5F5F5;
  491. }
  492. }
  493. }
  494. .time-wrap {
  495. display: flex;
  496. align-items: center;
  497. padding-top: 16rpx;
  498. padding-bottom: 16rpx;
  499. font-weight: 500;
  500. font-size: 20rpx;
  501. color: #999999;
  502. .time {
  503. flex: 1;
  504. min-width: 0;
  505. }
  506. .button {
  507. width: 136rpx;
  508. height: 44rpx;
  509. border-radius: 22rpx;
  510. @include main_bg_color(theme);
  511. font-weight: 500;
  512. font-size: 22rpx;
  513. line-height: 44rpx;
  514. text-align: center;
  515. color: #FFFFFF;
  516. &.gary {
  517. background-color: #999;
  518. }
  519. }
  520. }
  521. }
  522. }
  523. .disabled {
  524. .left {
  525. background-image: url(../../static/images/coupon2.png);
  526. }
  527. .right {
  528. .name {
  529. text {
  530. border-color: #C1C1C1;
  531. color: #C1C1C1;
  532. }
  533. }
  534. .time-wrap {
  535. .button {
  536. background-color: #CCCCCC;
  537. color: #FFFFFF;
  538. }
  539. }
  540. }
  541. }
  542. }
  543. .category {
  544. padding-top: 34rpx;
  545. padding-right: 20rpx;
  546. padding-left: 20rpx;
  547. .section {
  548. border-radius: 10rpx;
  549. margin-bottom: 20rpx;
  550. background-color: #FFFFFF;
  551. .head {
  552. position: relative;
  553. display: flex;
  554. align-items: center;
  555. height: 90rpx;
  556. padding-right: 20rpx;
  557. padding-left: 36rpx;
  558. font-weight: bold;
  559. color: #282828;
  560. &::before {
  561. content: " ";
  562. position: absolute;
  563. top: 50%;
  564. left: 20rpx;
  565. width: 6rpx;
  566. height: 24rpx;
  567. @include main_bg_color(theme);
  568. transform: translateY(-50%);
  569. }
  570. .title {
  571. flex: 1;
  572. min-width: 0;
  573. overflow: hidden;
  574. white-space: nowrap;
  575. text-overflow: ellipsis;
  576. font-size: 30rpx;
  577. }
  578. .iconfont {
  579. font-size: 22rpx;
  580. line-height: 1;
  581. }
  582. }
  583. .body {
  584. display: flex;
  585. flex-wrap: wrap;
  586. justify-content: space-between;
  587. align-items: center;
  588. padding: 9rpx 36rpx 14rpx;
  589. .item {
  590. width: 314rpx;
  591. height: 84rpx;
  592. padding-right: 30rpx;
  593. padding-left: 30rpx;
  594. border-radius: 10rpx;
  595. background-color: #F5F5F5;
  596. margin-bottom: 10rpx;
  597. overflow: hidden;
  598. white-space: nowrap;
  599. text-overflow: ellipsis;
  600. font-weight: 500;
  601. font-size: 26rpx;
  602. line-height: 84rpx;
  603. color: #282828;
  604. }
  605. }
  606. }
  607. }
  608. .footer {
  609. position: fixed;
  610. bottom: 0;
  611. left: 0;
  612. z-index: 999;
  613. display: flex;
  614. width: 100%;
  615. padding-top: 12rpx;
  616. padding-bottom: constant(safe-area-inset-bottom); ///兼容 IOS<11.2/
  617. padding-bottom: env(safe-area-inset-bottom); ///兼容 IOS>11.2/
  618. background-color: #FFFFFF;
  619. opacity: 0.96;
  620. .item {
  621. flex: 1;
  622. display: flex;
  623. flex-direction: column;
  624. justify-content: center;
  625. align-items: center;
  626. font-weight: 500;
  627. font-size: 20rpx;
  628. color: #282828;
  629. .iconfont {
  630. font-size: 43rpx !important;
  631. }
  632. }
  633. .active {
  634. @include main_color(theme);
  635. }
  636. }
  637. .productList {
  638. background: #f5f5f5;
  639. }
  640. .productList .list.on {
  641. border-radius: 14rpx;
  642. margin-top: 0 !important;
  643. background-color: #fff;
  644. padding: 40rpx 0 0 0;
  645. }
  646. .productList .list .item {
  647. width: 335rpx;
  648. background-color: #fff;
  649. border-radius: 14rpx;
  650. margin-bottom: 20rpx;
  651. }
  652. .productList .list.item {
  653. &::before {
  654. content: " ";
  655. position: absolute;
  656. top: 0;
  657. right: 10px;
  658. left: 125px;
  659. border-top: 0.5px solid #f5f5f5;
  660. }
  661. }
  662. .productList .list .item.on {
  663. width: 100%;
  664. display: flex;
  665. padding: 0 24rpx 50rpx 24rpx;
  666. margin: 0;
  667. border-radius: 14rpx;
  668. overflow: hidden;
  669. }
  670. .productList .list .item .proPic,
  671. /deep/.easy-loadimage,
  672. uni-image {
  673. position: relative;
  674. }
  675. .productList .list .item .proPic.on /deep/.easy-loadimage,
  676. uni-image uni-image {
  677. width: 240rpx;
  678. height: 240rpx;
  679. border-radius: 14rpx;
  680. overflow: hidden;
  681. }
  682. .productList .list .item .proPic image.on {
  683. border-radius: 6rpx;
  684. overflow: hidden;
  685. }
  686. .productList .list .item .text.on {
  687. width: 456rpx;
  688. padding: 0 0 0 20rpx;
  689. position: relative;
  690. &::after {
  691. content: '';
  692. display: block;
  693. width: 94%;
  694. border-bottom: 1rpx solid #f6f6f6;
  695. position: absolute;
  696. right: 2rpx;
  697. bottom: -24rpx;
  698. }
  699. }
  700. .productList .list .item .text .name {
  701. font-size: 28rpx;
  702. font-weight: bold;
  703. margin-top: 8rpx;
  704. color: #333333;
  705. margin-bottom: 30rpx;
  706. }
  707. .productList .list .item .text .money.on {
  708. //margin-top: 80rpx;
  709. }
  710. .productList .list .item .text .money .num {
  711. font-size: 38rpx;
  712. font-weight: 900;
  713. @include price_color(theme);
  714. }
  715. .productList .list .item .text .y-money {
  716. font-size: 26rpx;
  717. color: #888888;
  718. text-decoration: line-through;
  719. margin-left: 14rpx;
  720. }
  721. .store-home-top {
  722. width: 100%;
  723. height: 360rpx;
  724. position: relative;
  725. }
  726. .store-home {
  727. position: fixed;
  728. top: 0;
  729. right: 0;
  730. bottom: 0;
  731. left: 0;
  732. display: flex;
  733. flex-direction: column;
  734. padding-bottom: 100rpx;
  735. background: left top/750rpx 390rpx no-repeat fixed;
  736. overflow: hidden;
  737. }
  738. .fixed-top {
  739. top: 0;
  740. left: 0;
  741. z-index: 9;
  742. margin-bottom: 24rpx;
  743. }
  744. .nav.fixed {
  745. position: fixed;
  746. left: 0;
  747. width: 100%;
  748. display: flex;
  749. .nav-cont {
  750. position: absolute;
  751. width: 80%;
  752. justify-content: space-between;
  753. }
  754. }
  755. .nav {
  756. position: relative;
  757. padding: 0 30rpx;
  758. margin-bottom: 20rpx;
  759. .nav-cont {
  760. width: 80%;
  761. display: flex;
  762. align-items: center;
  763. justify-content: space-between;
  764. // height: 84rpx;
  765. }
  766. .item {
  767. display: flex;
  768. justify-content: center;
  769. align-items: center;
  770. min-width: 0;
  771. .cont {
  772. display: flex;
  773. justify-content: center;
  774. align-items: center;
  775. padding: 0 12rpx;
  776. height: 44rpx;
  777. border-radius: 22rpx;
  778. font-weight: 500;
  779. font-size: 24rpx;
  780. color: #FFFFFF;
  781. .arrow-icon {
  782. margin-left: 10rpx;
  783. font-size: 18rpx;
  784. }
  785. .layout-icon {
  786. font-size: 32rpx;
  787. }
  788. .icon-pailie {
  789. font-size: 32rpx;
  790. }
  791. image {
  792. width: 15rpx;
  793. height: 21rpx;
  794. margin-left: 7rpx;
  795. }
  796. }
  797. }
  798. .active {
  799. .cont {
  800. background-color: #FFFFFF;
  801. font-weight: bold;
  802. @include main_color(theme);
  803. }
  804. }
  805. .select {
  806. position: absolute;
  807. top: 100%;
  808. left: 0;
  809. z-index: 2;
  810. width: 100%;
  811. padding-right: 40rpx;
  812. padding-bottom: 28rpx;
  813. padding-left: 74rpx;
  814. border-bottom-right-radius: 24rpx;
  815. border-bottom-left-radius: 24rpx;
  816. background-color: #FFFFFF;
  817. .item {
  818. margin-top: 28rpx;
  819. font-size: 24rpx;
  820. color: #454545;
  821. }
  822. .active {
  823. //background: url(../../../static/images/active.png) right center/20rpx no-repeat;
  824. color: #E93323;
  825. }
  826. }
  827. }
  828. .icon-dingbufanhui,
  829. .icon-more {
  830. color: #fff;
  831. }
  832. .searchIpt {
  833. /* #ifdef H5 || APP */
  834. width: 550rpx !important;
  835. height: 54rpx;
  836. line-height: 54rpx;
  837. /* #endif */
  838. }
  839. .productSort .header .input {
  840. width: 558rpx;
  841. height: 60rpx;
  842. background-color: #3F4244;
  843. border-radius: 50rpx;
  844. box-sizing: border-box;
  845. padding: 0 30rpx;
  846. display: flex;
  847. align-items: center;
  848. }
  849. .productSort .header .input .iconfont {
  850. font-size: 26rpx;
  851. color: #666;
  852. }
  853. .productSort .header .input .place {
  854. padding-left: 12rpx;
  855. color: #ccc;
  856. font-size: 26rpx;
  857. }
  858. .pic-num {
  859. font-size: 24rpx;
  860. margin-top: 10rpx;
  861. }
  862. .m-l-8 {
  863. margin-left: 8rpx;
  864. }
  865. .conts {
  866. color: #fff;
  867. }
  868. .buyed {
  869. font-size: 20rpx;
  870. color: #888888;
  871. }
  872. </style>