1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345 |
- <template>
- <view>
- <view :class="bgTabVal==2?'fullsize noRepeat':bgTabVal==1?'repeat ysize':'noRepeat ysize'"
- :style="'background-color:'+bgColor+';background-image: url('+bgPic+');min-height:'+windowHeight+'px;'" id="home">
- <skeleton :show="showSkeleton" :isNodes="isNodes" ref="skeleton" loading="chiaroscuro" selector="skeleton" bgcolor="transparent"></skeleton>
- <view :style="{visibility: showSkeleton ? 'hidden' : 'visible'}">
- <view class="page-index skeleton" :class="{ bgf: navIndex > 0 }">
- <block>
- <!-- #ifdef H5 -->
- <homeComb v-if="smallPage" class="home-comb" :isScale="isScale" :isMenu="isMenu" :dataConfig="homeCombData" :userInfo="userInfo" :isFixed="isFixed" :isScrolled="isScrolled" @changeDiy="diyData"></homeComb>
- <view v-for="(item, index) in styleConfig" :key="index">
- <block v-if="item.name != 'headerSerch' && item.name != 'tabNav' && item.name != 'shopList' && item.name != 'homeComb' && item.name != 'hotRanking' && item.name != 'pageFoot'">
- <component
- :is="item.name"
- :index="index"
- :isFixed="isFixed"
- :dataConfig="item"
- :tempArr="tempArr"
- :userInfo="userInfo"
- :tabTitle="navTop"
- :navIndex="navIndex"
- @changeTab="changeTab"
- @detail="goDetail"
- v-show="navIndex == 0"
- ></component>
- </block>
- <block v-if="item.name == 'headerSerch'">
- <headerSerch
- :dataConfig="item"
- :tempArr="tempArr"
- :userInfo="userInfo"
- :tabTitle="navTop"
- @changeTab="changeTab"
- @detail="goDetail"
- ></headerSerch>
- </block>
- <block v-if="item.name == 'shopList' && hide_mer_status != 1 && navIndex == 0">
- <shopList :dataConfig="item"></shopList>
- </block>
- <block v-if="item.name == 'tabNav'">
- <tabNav
- :isFixed="isFixed"
- :dataConfig="item"
- :tempArr="tempArr"
- :userInfo="userInfo"
- :tabTitle="navTop"
- @changeTab="changeTab"
- @detail="goDetail"
- ></tabNav>
- </block>
- <block v-if="item.name == 'homeComb' && !smallPage">
- <homeComb :isMenu="isMenu" :dataConfig="item" :isFixed="isFixed" :isScrolled="isScrolled" :userInfo="userInfo" @changeDiy="diyData"></homeComb>
- </block>
- <block v-if="item.name == 'hotRanking' && hot_ranking_switch != 0 && navIndex == 0">
- <hotRanking :dataConfig="item"></hotRanking>
- </block>
- </view>
- <!-- #endif -->
- <!-- #ifdef MP || APP-PLUS -->
- <homeComb class="home-comb" v-if="smallPage" :isScale="isScale" :isMenu="isMenu" :dataConfig="homeCombData" :isFixed="isFixed" :isScrolled="isScrolled" :userInfo="userInfo" @changeDiy="diyData"></homeComb>
- <block v-for="(item, index) in styleConfig" :key="index" >
- <view v-show="navIndex == 0">
- <homeComb v-if="item.name == 'homeComb' && !smallPage" :isMenu="isMenu" :dataConfig="item" :isFixed="isFixed" :isScrolled="isScrolled" :userInfo="userInfo" @changeDiy="diyData"></homeComb>
- <activeParty v-if="item.name == 'activeParty'" :dataConfig="item"></activeParty>
- <bargain v-if="item.name == 'bargain'" :dataConfig="item"></bargain>
- <blankPage v-if="item.name == 'blankPage'" :dataConfig="item"></blankPage>
- <combination v-if="item.name == 'combination'" :dataConfig="item"></combination>
- <topic v-if="item.name == 'topic'" :dataConfig="item"></topic>
- <coupon v-if="item.name == 'coupon'" :dataConfig="item"></coupon>
- <customerService v-if="item.name == 'customerService'" :dataConfig="item"></customerService>
- <goodList v-if="item.name == 'goodList'" :dataConfig="item" @detail="goDetail"></goodList>
- <guide v-if="item.name == 'guide'" :dataConfig="item"></guide>
- <liveBroadcast v-if="item.name == 'liveBroadcast'" :dataConfig="item"></liveBroadcast>
- <menus :class="isMenu ? 'transform-view' : ''" v-if="item.name == 'menus'" :dataConfig="item"></menus>
- <news v-if="item.name == 'news'" :dataConfig="item"></news>
- <presellList v-if="item.name == 'presellList'" :dataConfig="item"></presellList>
- <plantList v-if="item.name == 'plantList'" :dataConfig="item"></plantList>
- <hotRanking v-if="item.name == 'hotRanking' && hot_ranking_switch != 0" :dataConfig="item"></hotRanking>
- <promotionList v-if="item.name == 'promotionList'" :dataConfig="item" @changeTab="changeTab" :tempArr="tempArr" @detail="goDetail"></promotionList>
- <richText v-if="item.name == 'richText'" :dataConfig="item"></richText>
- <seckill v-if="item.name == 'seckill'" :dataConfig="item"></seckill>
- <swiperBg v-if="item.name == 'swiperBg'" :dataConfig="item"></swiperBg>
- <pictureCube v-if="item.name == 'pictureCube'" :dataConfig="item"></pictureCube>
- <titles v-if="item.name == 'titles'" :dataConfig="item"></titles>
- <shopList v-if="item.name == 'shopList' && hide_mer_status != 1" :dataConfig="item"></shopList>
- </view>
- <headerSerch v-if="item.name == 'headerSerch'" :dataConfig="item" :userInfo="userInfo"></headerSerch>
- <tabNav v-if="item.name == 'tabNav'" :dataConfig="item" class="tabNav" :tabTitle="navTop"
- @changeTab="changeTab" :isFixed="isFixed"></tabNav>
- </block>
- <!-- #endif -->
- </block>
- <!-- 分类页 -->
- <view class="productList" v-if="navIndex > 0">
- <view class="sort acea-row" v-if="sortList.length>0" :style="{ marginTop: sortMarTop + 'px' }">
- <navigator
- hover-class="none"
- v-if="index < 9"
- :url="'/pages/columnGoods/goods_list/index?id=' + item.store_category_id + '&title=' + item.cate_name"
- class="item"
- v-for="(item, index) in sortList"
- :key="item.store_category_id"
- >
- <view class="pictrue cate_pictrue">
- <easy-loadimage :image-src="item.pic"></easy-loadimage>
- <view v-if="item.border_pic" :style="{ backgroundImage: `url(${item.border_pic})` }" class="border-picture"></view>
- </view>
- <view class="text">{{ item.cate_name }}</view>
- </navigator>
- <view class="item" @click="bindMore" v-if="sortList.length >= 9">
- <view class="pictrues acea-row row-center-wrapper"><text class="iconfont icon-gengduo1"></text></view>
- <view class="text" style="margin-top: 22rpx;">更多</view>
- </view>
- </view>
- <block v-if="sortProduct.length > 0">
- <view class="list acea-row row-between-wrapper">
- <navigator @tap="goDetails(item)" class="item" v-for="(item, index) in sortProduct" :key="item.product_id">
- <view class="pictrue">
- <easy-loadimage :image-src="item.image"></easy-loadimage>
- <view v-if="item.border_pic" :style="{ backgroundImage: `url(${item.border_pic})` }" class="border-picture"></view>
- </view>
- <view class="text">
- <view class="name line1">
- <text class="name_text line2">{{ item.store_name }}</text>
- </view>
- <view class="acea-row row-middle">
- <view class="money font-color-red">
- ¥
- <text class="num">{{ item.price }}</text>
- </view>
- </view>
- <view class="item_tags acea-row">
- <text v-if="item.merchant.type_name && item.product_type == 0" class="font-bg-red">{{ item.merchant.type_name }}</text>
- <text v-else-if="item.merchant.is_trader && item.product_type == 0" class="font-bg-red">自营</text>
- <text v-if="item.product_type != 0" :class="'font_bg-red type' + item.product_type">
- {{ item.product_type == 1 ? '秒杀' : item.product_type == 2 ? '预售' : item.product_type == 3 ? '助力' : item.product_type == 4 ? '拼团' : '' }}
- </text>
- <text class="tags_item ticket" v-if="item.issetCoupon">领券</text>
- <text class="tags_item delivery" v-if="item.delivery_free == 1">包邮</text>
- </view>
- </view>
- </navigator>
- <view class="loadingicon acea-row row-center-wrapper" v-if="sortProduct.length > 0 || sortProductLoading">
- <text class="loading iconfont icon-jiazai" :hidden="loading == false"></text>
- {{ loadTitle }}
- </view>
- </view>
- </block>
- <block v-if="sortProduct.length == 0">
- <view class="noCommodity">
- <view class="pictrue" style="margin: 0 auto;">
- <image :src="`${domain}/static/images/noCart.png`"></image>
- <view>暂无商品,去看点什么吧</view>
- </view>
- </view>
- </block>
- </view>
- </view>
- </view>
- <home></home>
- </view>
- </view>
- </template>
- <script>
- // +----------------------------------------------------------------------
- // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
- // +----------------------------------------------------------------------
- // | Author: CRMEB Team <admin@crmeb.com>
- // +----------------------------------------------------------------------
- let app = getApp();
- import { getUserInfo } from '@/api/user.js';
- import { getPageDiy, getIndexData } from '@/api/api.js';
- import { getStorage } from '@/libs/uniApi.js';
- // #ifdef MP-WEIXIN
- import { SUBSCRIBE_MESSAGE, TIPS_KEY } from '@/config/cache';
- // #endif
- import { getShare, getconfig } from '@/api/public.js';
- import { goShopDetail } from '@/libs/order.js';
- import { mapGetters } from 'vuex';
- import { getProductslist, storeCategory } from '@/api/store.js';
- import { initiateAssistApi } from '@/api/activity.js';
- import { spread } from '@/api/user.js';
- import recommend from '@/components/recommend';
- // #ifdef H5
- import mConfig from '../index/component/index.js';
- // #endif
- import customTab from '@/components/customTab';
- // #ifdef MP || APP-PLUS
- import activeParty from '../index/component/activeParty';
- import headerSerch from '../index/component/headerSerch';
- import homeComb from '../index/component/homeComb';
- import coupon from '../index/component/coupon';
- import bargain from '../index/component/bargain';
- import blankPage from '../index/component/blankPage';
- import combination from '../index/component/combination';
- import customerService from '../index/component/customerService';
- import goodList from '../index/component/goodList';
- import guide from '../index/component/guide';
- import liveBroadcast from '../index/component/liveBroadcast';
- import menus from '../index/component/menus';
- import news from '../index/component/news';
- import topic from '../index/component/topic';
- import presellList from '../index/component/presellList';
- import plantList from '../index/component/plantList';
- import pictureCube from '../index/component/pictureCube'
- import shopList from '../index/component/shopList';
- import richText from '../index/component/richText';
- import seckill from '../index/component/seckill';
- import swiperBg from '../index/component/swiperBg';
- import tabNav from '../index/component/tabNav';
- import titles from '../index/component/titles';
- import hotRanking from "../index/component/hotRanking.vue";
- // #endif
- import { silenceBindingSpread, configMap, isWeixin } from '@/utils/index';
- import history from '@/mixins/history';
- import shareScence from '@/libs/spread';
- import easyLoadimage from '@/components/easy-loadimage/easy-loadimage.vue';
- import {getNewPeopleCouponLst} from '@/api/activity.js'
- import { HTTP_REQUEST_URL } from '@/config/app';
- import home from '@/components/home/index.vue';
- import { toLogin } from '@/libs/login.js';
- export default {
- computed: configMap({hide_mer_status:0,recommend_switch:0,beian_sn:'',share_title:'',site_name:'',hot_ranking_switch:0,navigation: {}},
- mapGetters(['isLogin','uid','keyColor'])),
- mixins: [history],
- components: {
- easyLoadimage,
- home,
- // #ifdef H5
- ...mConfig,
- // #endif
- // #ifdef MP || APP-PLUS
- activeParty,
- headerSerch,
- homeComb,
- bargain,
- coupon,
- blankPage,
- combination,
- customerService,
- goodList,
- guide,
- liveBroadcast,
- menus,
- news,
- topic,
- presellList,
- plantList,
- pictureCube,
- shopList,
- richText,
- seckill,
- swiperBg,
- tabNav,
- titles,
- hotRanking
- // #endif
- },
- data() {
- return {
- domain: HTTP_REQUEST_URL,
- couponTypeMsg:{
- 10: '通用券',
- 11: '品类券',
- 12: '跨店券'
- },
- styleConfig: [],
- showSkeleton: true, //骨架屏显示隐藏
- isNodes: 0, //控制什么时候开始抓取元素节点,只要数值改变就重新抓取
- userInfo: {},
- loading: false,
- navIndex: 0,
- navTop: [],
- subscribe: false,
- followUrl: '',
- followHid: true,
- followCode: false,
- sortList: [],
- window: false,
- navH: '',
- couponList: [],
- marTop: 0,
- loadend: false,
- loading: false,
- loadTitle: '加载更多',
- sortProduct: [],
- where: {
- pid: 0,
- page: 1,
- limit: 6
- },
- is_switch: true,
- hotPage: 1,
- hotLimit: 30,
- hotScroll: true,
- hotLoading: false,
- hotTitle: '加载更多',
- // #ifdef MP || APP-PLUS
- isFixed: true,
- // #endif
- // #ifdef H5
- isFixed: false,
- // #endif
- isScrolled: false,
- scrolled: false,
- tempArr: [], //精品推荐临时数组
- d: '',
- h: '',
- m: '',
- s: '',
- sum_h: '',
- sortMarTop: 0,
- // #ifdef MP || APP-PLUS
- mpHeight: 108,
- // #endif
- // #ifndef MP || APP-PLUS
- mpHeight: 0,
- // #endif
- currSpid: '',
- _options:{},
- isIntegral: false,
- appUpdate: {},
- bgColor: '',
- bgPic: '',
- bgTabVal: '',
- windowHeight: 0,
- domHeight: 0,
- isHeaderSerch: false,
- showCoupon: false,
- couponArray: [],
- smallPage: false,
- isMenu: false,
- isScale: false,
- homeCombData: {},
- footerStatus: false,
- newData: {},
- activeRouter: '',
- overflow: false,
- };
- },
- /**
- * 用户点击右上角分享
- */
- // #ifdef MP
- onShareAppMessage: function() {
- let that = this;
- wx.showShareMenu({
- withShareTicket: true,
- menus: ['shareAppMessage', 'shareTimeline']
- });
- return {
- title: that.share_title,
- path: '/pages/index/index?spid=' + that.uid
- };
- },
- onShareTimeline: function() {
- let that = this;
- return {
- title: that.share_title,
- query: {
- spid: that.uid
- },
- imageUrl: ''
- };
- },
- // #endif
- onLoad(options) {
- let that = this
- this._options = options;
- that.$nextTick(function() {
- uni.getSystemInfo({
- success: function(res) {
- that.windowHeight = res.windowHeight;
- }
- });
- })
- that.pageLoad(options);
-
- },
- created(options) {
- let routes = getCurrentPages(); // 获取当前打开过的页面路由数组
- let curRoute = routes[routes.length - 1].route //获取当前页面路由
- this.activeRouter = '/' + curRoute
- },
- onShow() {
- let that = this
- that.isIntegral = uni.getStorageSync('isIntegral')
- that.$nextTick(function() {
- const query = uni.createSelectorQuery();
- query.select('#home').boundingClientRect(); //获取当前元素距离顶部的距离
- query.exec(res =>{
- if(res[0].top <= -60)that.isScrolled = true
- })
- })
- },
- onHide() {
- uni.setStorageSync('isIntegral',false)
- },
- onReady() {
- },
- watch: {
- },
- onPullDownRefresh(){
- this.overflow = true;
- },
- methods: {
- pageLoad(options){
- let that = this;
- if (options.spid) {
- that.currSpid = options.spid;
- app.globalData.spid = options.spid;
- }else if(getStorage('spid')){
- that.currSpid = getStorage('spid');
- app.globalData.spid = getStorage('spid');
- }
- // #ifdef MP
- if (options.scene) {
- let value = that.$util.getUrlParams(decodeURIComponent(options.scene));
- if (value.id) options.id = value.id;
- //记录推广人uid
- if (value.spid) {
- that.currSpid = value.spid;
- app.globalData.spid = value.spid;
- }else if(getStorage('spid')){
- that.currSpid = getStorage('spid');
- app.globalData.spid = getStorage('spid');
- }
- }
- // #endif
- shareScence(that.currSpid, that.isLogin);
- this.isLogin && silenceBindingSpread();
- this.getIndexConfig();
- Promise.all([
- this.diyData(options.id),
- ]);
- if (this.isLogin) {
- this.getUserInfo();
- }
- },
- closeShare(){
- uni.setStorageSync('isIntegral',false);
- this.isIntegral = uni.getStorageSync('isIntegral');
- },
- // 对象转数组
- objToArr(data) {
- let obj = Object.keys(data).sort();
- let m = obj.map(key => data[key]);
- return m;
- },
- diyData(id) {
- let that = this;
- let data = {
- id: id
- }
- that.styleConfig = []
- getPageDiy({id: id,version:'221'}).then(res => {
- setTimeout(() => {
- that.isNodes++;
- }, 0);
- let data = res.data;
- uni.setNavigationBarTitle({
- title: data.title
- });
- if (data.is_bg_color) {
- that.bgColor = data.color_picker
- }
- if (data.is_bg_pic) {
- that.bgPic = data.bg_pic
- that.bgTabVal = data.bg_tab_val
- }
- that.styleConfig = that.objToArr(data.value);
- that.styleConfig.forEach((item, index, arr) => {
- if (item.name == 'headerSerch' || item.name == 'homeComb') {
- that.isHeaderSerch = true
- if(item.name == 'homeComb'){
- // that.homeCombData = item
- that.$set(that, 'homeCombData', item)
- that.smallPage = true;
- }
- }
- if (item.name == 'pageFoot') {
- if (item.status && item.status.status) {
- this.newData = item
- setTimeout((e) => {
- that.$set(that, 'footerStatus', true);
- }, 50)
- }
- uni.setStorageSync('FOOTER_BAR', item.status && item.status.status ? true : false)
- item.menuList.map((path, index) => {
- if (path.link === '/pages/order_addcart/order_addcart') {
- uni.setStorageSync('FOOTER_ADDCART', index)
- }
- })
- arr.splice(index, 1);
- }
- if(item.name == 'menus'){
- that.isMenu = true;
- }
- uni.pageScrollTo({
- scrollTop: 0,
- })
- that.overflow = false;
- });
- }).catch(err => {
- uni.showToast({
- title: err,
- icon: 'none'
- })
- });
- },
- // 分类页更多
- bindMore() {
- try {
- uni.setStorageSync('storeIndex', this.navTop[this.navIndex].pid);
- uni.switchTab({
- url: '/pages/goods_cate/goods_cate'
- });
- } catch (e) {}
- },
- goDetails(item) {
- goShopDetail(item, this.uid).then(res => {
- if (this.isLogin) {
- initiateAssistApi(item.activity_id)
- .then(res => {
- let id = res.data.product_assist_set_id;
- uni.hideLoading();
- uni.navigateTo({
- url: '/pages/activity/assist_detail/index?id=' + id
- });
- })
- .catch(err => {
- uni.showToast({
- title: err,
- icon: 'none'
- });
- });
- } else {
- toLogin()
- }
- });
- },
- /**
- * 获取个人用户信息
- */
- getUserInfo: function() {
- let that = this;
- getUserInfo().then(res => {
- that.userInfo = res.data;
- });
- },
- // 导航分类切换
- changeTab(e) {
- let self = this;
- if (this.navIndex == e.index) return;
- this.navIndex = e.index;
- if (e.index > 0) {
- storeCategory({
- pid: e.pid
- }).then(res => {
- this.sortList = res.data.length > 9 ? res.data.splice(0, 9) : res.data;
- if (this.sortList.length > 0) {
- this.where.pid = e.pid;
- this.where.page = 1;
- this.loadend = false;
- this.loading = false;
- this.sortProduct = [];
- this.get_product_list();
- uni.pageScrollTo({
- scrollTop: 0,
- })
- }
- });
- self.sortMarTop = 10;
- }
- },
- //分类产品
- get_product_list: function() {
- let that = this;
- if (that.loading) return;
- that.loading = true;
- that.loadTitle = '';
- getProductslist(that.where)
- .then(res => {
- let list = res.data.list;
- let productList = that.$util.SplitArray(list, that.sortProduct);
- let loadend = list.length < that.where.limit;
- that.loadend = loadend;
- that.loading = false;
- that.loadTitle = loadend ? '已全部加载' : '加载更多';
- that.$set(that, 'sortProduct', productList);
- that.$set(that.where, 'page', that.where.page + 1);
- })
- .catch(err => {
- that.loading = false;
- that.loadTitle = '加载更多';
- });
- },
- // 首页数据
- getIndexConfig: function() {
- let that = this;
- getIndexData().then(res => {
- res.data.category.unshift({
- cate_name: '首页'
- });
- that.$set(that, 'navTop', res.data.category);
- // #ifdef H5
- that.subscribe = res.data.subscribe;
- // #endif
- // 小程序判断用户是否授权;
- // #ifdef MP
- uni.getSetting({
- success(res) {
- if (!res.authSetting['scope.userInfo']) {
- that.window = that.couponList.length ? true : false;
- } else {
- that.window = false;
- }
- }
- });
- // #endif
- // #ifndef MP
- if (that.isLogin) {
- that.window = false;
- } else {
- that.window = that.couponList.length ? true : false;
- }
- // #endif
- that.reloadData();
- });
- },
- reloadData() {
- setTimeout(() => {
- this.showSkeleton = false
- }, 500)
- },
- // 首发新品详情
- goDetail(item) {
- if (item.activity && item.activity.type === '2' && !this.isLogin) {
- // #ifdef H5
- uni.showModal({
- title: '提示',
- content: '您未登录,请登录!',
- success: function(res) {
- if (res.confirm) {
- uni.navigateTo({
- url: '/pages/users/login/index'
- });
- } else if (res.cancel) {
- }
- }
- });
- // #endif
- // #ifdef MP
- toLogin()
- // #endif
- return;
- } else {
- goShopDetail(item, this.uid).then(res => {
- uni.navigateTo({
- url: `/pages/goods_details/index?id=${item.id}`
- });
- });
- }
- },
- },
- mounted() {
- let query = uni.createSelectorQuery().in(this);
- query.select("#home").boundingClientRect();
- query.exec(res => {
- this.domHeight = res[0].height;
- })
- },
- // 滚动到底部
- onReachBottom() {
- // 分类栏目加载更多
- if (this.sortProduct.length > 0) {
- this.get_product_list();
- }
- },
- // 滚动监听
- onPageScroll(e) {
- if (this.isHeaderSerch) {
- let isScroll = false
- isScroll = e.scrollTop > 50
- this.isScrolled = isScroll;
- } else {
- this.isScrolled = false
- }
- // 传入scrollTop值并触发所有easy-loadimage组件下的滚动监听事件
- uni.$emit('scroll');
- }
- };
- </script>
- <style>
- </style>
- <style lang="scss" scoped>
- .bnt1{
- color: red;
- }
- .overflow-mask{
- position: fixed;
- top: 0;
- left: 0;
- z-index: 1001;
- width: 100%;
- height: 100vh;
- background: transparent;
- transition: all .5s;
- }
- page {
- display: flex;
- flex-direction: column;
- }
- /deep/ .home-comb .my-main{
- left: 0;
- position: fixed;
- top: 0;
- width: 100%;
- z-index: 30;
- }
- .main {
- padding: 0 20rpx;
- }
- .colum0{
- white-space: nowrap;
- display: flex;
- }
- .ysize {
- background-size: 100%;
- }
- .fullsize {
- background-size: 100% 100%;
- }
- .repeat {
- background-repeat: repeat;
- }
- .noRepeat {
- background-repeat: no-repeat;
- }
- .privacy-wrapper {
- z-index: 999;
- position: fixed;
- left: 0;
- top: 0;
- bottom: 0;
- right: 0;
- width: 100%;
- height: 100%;
- background: #7f7f7f;
- .privacy-box {
- position: absolute;
- left: 50%;
- top: 50%;
- transform: translate(-50%, -50%);
- width: 560rpx;
- padding: 50rpx 45rpx 0;
- background: #fff;
- border-radius: 20rpx;
- .title {
- text-align: center;
- font-size: 32rpx;
- text-align: center;
- color: #333;
- font-weight: 700;
- }
- .content {
- margin-top: 20rpx;
- line-height: 1.5;
- font-size: 26rpx;
- color: #666;
- navigator {
- display: inline-block;
- color: #e93323;
- }
- }
- .btn-box {
- margin-top: 40rpx;
- text-align: center;
- font-size: 30rpx;
- .btn-item {
- height: 82rpx;
- line-height: 82rpx;
- background: linear-gradient(90deg, #f67a38 0%, #f11b09 100%);
- color: #fff;
- border-radius: 41rpx;
- }
- .btn {
- padding: 30rpx 0;
- }
- }
- }
- }
- .coupon_popups{
- z-index: 999;
- position: fixed;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- text-align: center;
- .bg{
- position: absolute;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- background-color: rgba(0,0,0,.5);
- }
- .con{
- position: absolute;
- left: 50%;
- top: 50%;
- transform: translate(-50%,-50%);
- width: 680rpx;
- height:900rpx;
- background-size: 100% 700rpx;
- background-repeat: no-repeat;
- scroll-view{
- width: 610rpx;
- height: 306rpx;
- padding-top: 20rpx;
- margin: 300rpx auto 0;
- }
- .item{
- display: flex;
- align-items: center;
- width: 100%;
- height: 164rpx;
- background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABDgAAAFICAMAAACC1L7bAAAAilBMVEUAAAD////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////2N2iNAAAALXRSTlMA9xnrZyf0790ev4d1Egr7cl9TI+XNbVpAtKSUjX0NB6ucgnpDMdjRxUw7LdTK5bIiAAAF40lEQVR42uzcWW7CMBSF4UNImAIBEcpUKJQixt79b68qD1VLgNi8VHL+bxHH9tH1VUE+SeedVs1QkMmNAYGotTrzdNJWiSRtGe7J5aRnQFh2m1z3ndeGB05ycjYgOPNct2WLvuGRoZxMDAhPbbnSDQmPlDKpnCwMCNE+UsGxYSixl5MXA4JUP+lKbCgXyUHbgED1J/pjbHAwloONAcGKqfP8jVYqlTUNCNdQPxKDmw+V6hoQsEZOm+et0VOJHiUzwnbgjPQ3Uwlm6BC6WBcRZ6SHpa7QMqNimj19ezd42OqBLcO3CF/K2IG/5lR3Tbm8oQIuVd/S4CfmnYJqiyXtDJ5eM92QdAyohI6UG7zVB7qWpQZUxRufVJ4z6kb65dytG1AZR80NzzkMTkkkKY/XpAaqJWVqFICvmfiSBcDTp1hnDsDTiFX+AHzVCA4A3ggOAAQHgAKCA8D/Izi+2KmDAQAAAAZC/tYDGMB9CiJAHMARB9ATByAO4IgD6IkDEAdwxAH0xAGIAzjiAHriAMQBHHEAPXEA4gCOOICeOABxAEccQE8cgDiAIw6gJw5AHMARB9ATByAOxk4dDAAAADAQ8rcewADuUxDBEQfQEwcgDuCIA+iJAxAHcMQB9MQBiAM44gB64gDEARxxAD1xAOIAjjiAnjgAcQBHHEBPHIA4gCMOoCcOQBzAEQfQEwcgDuCIA+iJAxAHcMQB9MQBiAM44gB64gDEARxxAD1xAOIAjjiAnjgAcQBHHEBPHIA4gCMOoCcOQBzAEQfQEwcgDuCIA+iJAxAHcMQB9MQBjJ06GAAAAGAg5G89gAHcpyASB3DEAfTEAYgDOOIAeuIAxAEccQA9cQDiAI44gJ44AHEARxxATxyAOIAjDqAnDkAcwBEH0BMHIA7giAPoiQMQB3DEAfTEAYgDOOIAeuIAxAEccQA9cQDiAI44gJ44AHEARxxATxyAOIAjDqAnDkAcwBEH0BMHIA7giAPoiQMQB3DEAfTEAYgDOOIAeuIAxAEccQA9cTB26mAAAACAgZC/9QAOYJ+CCMQBhDiAP3EA4gBCHMCfOABxACEO4E8cgDiAEAfwJw5AHECIA/gTByAOIMQB/IkDEAcQ4gD+xAGIAwhxAH/iAMQBhDiAP3EA4gBCHMCfOABxACEO4E8cgDiAEAfwJw5AHECIA/gTByAOIMQB/IkDEAcQ4gD+xAGIAwhxAH/iAMQBhDiAP3EA4gBCHMCfOABxACEOYOzUwQAAAAADIX/rAQzgPgVRTxyAOIAjDqAnDkAcwBEH0BMHIA7giAPoiQMQB3DEAfTEAYgDOOIAeuIAxAEccQA9cQDiAI44gJ44AHEARxxATxyAOIAjDqAnDkAcwBEH0BMHIA7giAPoiQMQB3DEAfTEAYgDOOIAeuIAxAEccQA9cQDiAI44gJ44AHEARxxATxyAOIAjDqAnDkAcwBEH0BMHIA7giIOxU4cEAIBAEMBAIUny/esR4BTqzBZi0CcOQBxAEAfQJw5AHEAQB9AnDkAcQBAH0CcOQBxAEAfQJw5AHEAQB9AnDkAcQBAH0CcOQBxAEAfQt+4AfNnrDK+dO8tNGIaiMHwSoBAKlERAQ4FQhnSQeve/vaoPRVWayTza/7cI2/ecKwNwMtDEAMDJRFMDACdb7Qz3WZ3SRJqX2fJ1YEBI9no23GGyGemP8sLZgYBkig3uLqpaLDk6EIy5tDY42iaqsTgZEISppJnBSZSqwdKAEAwlZhVHg1KNcrZiEICHQhK9ipOoVIucRVz476wfcWToLVOroQGeG8wlkXI42akF7zeE4BbyvRv6WS3UoaCVhd+m+jUy9JPqhmoFQRrHukkNfUzU7bgywF+fXJPONmpFZATvDSttAD1it6hQMwY/+O8pVcWV3aVOW/XBFyfw1TjXP8mXod1MvewN8NE6Vo3jmU2wdrlaEDXDb9HhqHqjF0OLWL1cDfDOKVGz5PBmaCKJdBQhWl9idUiy/QczSy31UxjgjYfpYxar6hufchGebA48QgAAAABJRU5ErkJggg==');
- background-repeat: no-repeat;
- background-size: 100% 100%;
- margin-bottom: 20rpx;
- border-radius: 20rpx;
- position: relative;
- .left{
- width: 160rpx;
- text-align: center;
- &::after{
- content: "";
- display: block;
- height: 110rpx;
- border-right: 1px dashed #E6E6E6;
- position: absolute;
- left: 178rpx;
- top: 25rpx;
- }
- .price{
- color: #E93323;
- font-size: 26rpx;
- font-weight: bold;
- text{
- font-size: 46rpx;
- }
- }
- .max_price{
- color: #999999;
- font-size: 18rpx;
- margin-top: 8rpx;
- }
- }
- .right{
- width: 440rpx;
- padding: 0 20rpx;
- .title{
- color: #333333;
- font-size: 26rpx;
- }
- .time{
- color: #999999;
- font-size: 22rpx;
- margin-top: 20rpx;
- }
- .bnt1{
- .titleSize{
- font-weight: 700;
- font-size: 33rpx;
- }
- .titleColor{
- margin-top: 20rpx;
- color: #999999;
- }
- }
- .coupon_type{
- position: absolute;
- color: #fff;
- font-size: 15rpx;
- width: 30rpx;
- text-align: center;
- height: auto;
- background: #E93323;
- top: 0;
- right: 20rpx;
- line-height: 26rpx;
- padding: 5rpx 0 15rpx;
- &::after{
- content: "";
- width: 0;
- height: 0;
- border-left: 14rpx solid transparent;
- border-right: 14rpx solid transparent;
- border-bottom: 14rpx solid #fff;
- position: absolute;
- bottom: -4rpx;
- left: 2rpx;
- }
- }
- }
- }
- .text{
- width: 600rpx;
- margin: 30rpx auto 0;
- font-size: 20rpx;
- color: #ffffff;
- }
- .icon-guanbi3{
- color: #ffffff;
- font-size: 70rpx;
- position: absolute;
- bottom: -80rpx;
- left: 320rpx;
- }
- }
- }
- .item_tags{
- margin-top: 8rpx;
- display: flex;
- }
- .item_tags .tags_item {
- display: inline-block;
- font-size: 20rpx;
- text-align: center;
- border-radius: 5rpx;
- padding: 0 4rpx;
- line-height: 28rpx;
- margin-right: 8rpx;
- }
- .item_tags .tags_item.ticket{
- color: var(--view-theme);
- border: 1px solid var(--view-theme);
- }
- .item_tags .tags_item.delivery{
- color: #FF9000;
- border: 1px solid #FF9000;
- }
- .copyRight{
- margin: 60rpx auto 20rpx;
- max-width: 690rpx;
- font-size: 20rpx;
- color: #707070;
- text-decoration: none;
- }
- .share-box {
- z-index: 1000;
- position: fixed;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- image {
- width: 100%;
- height: 100%;
- }
- }
- .error-network {
- position: fixed;
- left: 0;
- top: 0;
- display: flex;
- flex-direction: column;
- align-items: center;
- width: 100%;
- height: 100%;
- padding-top: 40rpx;
- background: #fff;
- padding-top: 30%;
- image {
- width: 414rpx;
- height: 336rpx;
- }
- .title {
- position: relative;
- top: -40rpx;
- font-size: 32rpx;
- color: #666;
- }
- .con {
- font-size: 24rpx;
- color: #999;
- .label {
- margin-bottom: 20rpx;
- }
- .item {
- margin-bottom: 20rpx;
- }
- }
- .btn {
- display: flex;
- align-items: center;
- justify-content: center;
- width: 508rpx;
- height: 86rpx;
- margin-top: 100rpx;
- border: 1px solid #d74432;
- color: #e93323;
- font-size: 30rpx;
- border-radius: 120rpx;
- }
- }
- .area-row {
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- display: block;
- width: 100%;
- text-align: center;
- }
- .page-index {
- display: flex;
- flex-direction: column;
- min-height: 100%;
- .page_content {
- /* #ifdef MP || APP-PLUS */
- padding-top: 270rpx;
- /* #endif */
- .page_bg{
- background: linear-gradient(180deg, #fff 0%, #f5f5f5 100%);
- }
- .nav {
- padding: 0 0rpx 30rpx;
- flex-wrap: wrap;
- /* #ifdef MP */
- margin-top: 0;
- /* #endif */
- /* #ifdef H5 */
- margin-top: 0;
- /* #endif */
- .item {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- width: 20%;
- margin-top: 30rpx;
- image {
- width: 82rpx;
- height: 82rpx;
- }
- }
- }
- .index-product-wrapper {
- .nav-bd {
- display: flex;
- align-items: center;
- .item {
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- width: 25%;
- .txt {
- font-size: 32rpx;
- color: #282828;
- }
- .label {
- display: flex;
- align-items: center;
- justify-content: center;
- width: 124rpx;
- height: 32rpx;
- margin-top: 5rpx;
- font-size: 24rpx;
- color: #999;
- }
- &.active {
- color: $theme-color;
- .label {
- background: linear-gradient(90deg, $bg-star 0%, $bg-end 100%);
- border-radius: 16rpx;
- color: #fff;
- }
- }
- }
- }
- .list-box {
- display: flex;
- flex-wrap: wrap;
- justify-content: space-between;
- .item {
- width: 345rpx;
- margin-bottom: 20rpx;
- background-color: #fff;
- border-radius: 10px;
- overflow: hidden;
- image {
- width: 100%;
- height: 345rpx;
- }
- .text-info {
- padding: 10rpx 20rpx 15rpx;
- .title {
- color: #222222;
- }
- .old-price {
- margin-top: 8rpx;
- font-size: 26rpx;
- color: #aaaaaa;
- text-decoration: line-through;
- text {
- margin-right: 2px;
- font-size: 20rpx;
- }
- }
- .price {
- display: flex;
- align-items: flex-end;
- color: $theme-color;
- font-size: 34rpx;
- font-weight: 800;
- text {
- padding-bottom: 4rpx;
- font-size: 24rpx;
- font-weight: normal;
- }
- .txt {
- display: flex;
- align-items: center;
- justify-content: center;
- width: 28rpx;
- height: 28rpx;
- margin-left: 15rpx;
- margin-bottom: 10rpx;
- border: 1px solid $theme-color;
- border-radius: 4rpx;
- font-size: 22rpx;
- font-weight: normal;
- }
- }
- }
- }
- &.on {
- display: flex;
- }
- }
- }
- }
- }
- .productList {
- background-color: #f1f1f1;
- min-height: 70vh;
- .sort {
- width: 710rpx;
- max-height: 380rpx;
- background: rgba(255, 255, 255, 1);
- border-radius: 16rpx;
- padding: 8rpx 0rpx 30rpx;
- flex-wrap: wrap;
- margin: 25rpx auto 0 auto;
- .item {
- width: 20%;
- margin-top: 30rpx;
- text-align: center;
- .pictrues {
- width: 90rpx;
- height: 90rpx;
- background: rgba(248, 248, 248, 1);
- border-radius: 50%;
- margin: 0 auto;
- }
- .easy-loadimage {
- width: 90rpx;
- height: 90rpx;
- display: inline-block;
- }
- .text {
- color: #272727;
- font-size: 24rpx;
- margin-top: 10rpx;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- }
- }
- }
- }
- .productList .list {
- padding: 0 20rpx;
- }
- .productList .list.on {
- background-color: #fff;
- border-top: 1px solid #f6f6f6;
- }
- .productList .list .item {
- width: 345rpx;
- margin-top: 20rpx;
- background-color: #fff;
- border-radius: 10rpx;
- .name{
- display: flex;
- align-items: center;
- }
- }
- .productList .list .item.on {
- width: 100%;
- display: flex;
- border-bottom: 1px solid #f6f6f6;
- padding: 30rpx 0;
- margin: 0;
- }
- .productList .list .item .pictrue {
- position: relative;
- width: 100%;
- height: 345rpx;
- }
- .productList .list .item .pictrue.on {
- width: 180rpx;
- height: 180rpx;
- }
- /deep/.productList .list .item .pictrue image,
- /deep/.productList .list .item .pictrue uni-image,
- /deep/.productList .list .item .pictrue .easy-loadimage{
- width: 100%;
- height: 100%;
- border-radius: 10rpx 10rpx 0 0;
- }
- /deep/.productList .list .item .pictrue uni-image.origin-img{
- border-radius: 10rpx 10rpx 0 0;
- }
- .productList .list .item .pictrue image.on {
- border-radius: 6rpx;
- }
- .productList .list .item .text {
- padding: 14rpx 17rpx 26rpx 17rpx;
- font-size: 28rpx;
- color: #212121;
- }
- .productList .list .item .text.on {
- width: 508rpx;
- padding: 0 0 0 22rpx;
- }
- .productList .list .item .text .money {
- font-size: 26rpx;
- font-weight: bold;
- margin-top: 8rpx;
- }
- .productList .list .item .text .coupon {
- background: rgba(255, 248, 247, 1);
- border: 1px solid rgba(233, 51, 35, 1);
- border-radius: 4rpx;
- font-size: 20rpx;
- margin-left: 18rpx;
- padding: 1rpx 4rpx;
- }
- .productList .list .item .text .money.on {
- margin-top: 50rpx;
- }
- .productList .list .item .text .money .num {
- font-size: 34rpx;
- }
- .pictrue {
- position: relative;
-
- .border-picture {
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- border-radius: 10rpx 10rpx 0 0;
- background: center/cover no-repeat;
- }
- }
- .cate_pictrue,/deep/.cate_pictrue image,/deep/.cate_pictrue .easy-loadimage,/deep/.cate_pictrue uni-image{
- width: 82rpx;
- height: 82rpx;
- margin: 0 auto;
- }
- .fixed {
- z-index: 100;
- position: fixed;
- left: 0;
- top: 0;
- background-color: #fff;
- box-shadow: 0 10rpx 20rpx -5rpx rgba(0, 0, 0, 0.06);
- }
- .page-footer {
- position: fixed;
- bottom: 0;
- z-index: 30;
- display: flex;
- align-items: center;
- justify-content: space-around;
- width: 100%;
- height: calc(98rpx+ constant(safe-area-inset-bottom)); ///兼容 IOS<11.2/
- height: calc(98rpx + env(safe-area-inset-bottom)); ///兼容 IOS>11.2/
- box-sizing: border-box;
- border-top: 1px solid #F3F3F3;
- background-color: #fff;
- box-shadow: 0px 0px 17rpx 1rpx rgba(206, 206, 206, 0.32);
- padding-bottom: constant(safe-area-inset-bottom); ///兼容 IOS<11.2/
- padding-bottom: env(safe-area-inset-bottom); ///兼容 IOS>11.2/
- &.filter{
- filter: blur(2rpx);
- }
- .foot-item {
- display: flex;
- width: max-content;
- align-items: center;
- justify-content: center;
- flex-direction: column;
- position: relative;
- .count-num {
- position: absolute;
- display: flex;
- justify-content: center;
- align-items: center;
- width: 40rpx;
- height: 40rpx;
- top: 0rpx;
- right: -15rpx;
- color: #fff;
- font-size: 20rpx;
- background-color: #FD502F;
- border-radius: 50%;
- padding: 4rpx;
- }
- }
- .foot-item image {
- height: 50rpx;
- width: 50rpx;
- text-align: center;
- margin: 0 auto;
- }
- .foot-item .txt {
- font-size: 24rpx;
- }
- }
- </style>
|