初始上传

This commit is contained in:
2026-04-04 17:27:12 +08:00
parent 4d80d28eb4
commit b7e11774ee
11191 changed files with 1588469 additions and 0 deletions

View File

@@ -0,0 +1,187 @@
<template>
<div>
<!-- 首页固定区 -->
<div class="index-wrap" :style="{ background: backgroundColor }" v-if="adList.length">
<div class="index">
<div class="banner">
<el-carousel height="500px" arrow="never" v-loading="loadingAd" @change="handleChange">
<el-carousel-item v-for="item in adList" :key="item.adv_id">
<el-image :src="$img(item.adv_image)" fit="cover" @click="$util.pushToTab(item.adv_url.url)" />
</el-carousel-item>
</el-carousel>
</div>
</div>
</div>
<div class="index-content-wrap">
<!-- 首页中部广告位 -->
<ul class="adv-middle" v-if="adCenterList.length">
<li class="adv-middle-item" v-for="(item,index) in adCenterList" :key="index">
<el-image :src="$img(item.adv_image)" fit="cover" @error="adCenterImageError(index)" @click="$util.pushToTab(item.adv_url.url)" />
</li>
</ul>
<!-- 广告 -->
<div class="content-div" v-if="adLeftList.length > 0 || adRightList.length > 0">
<div class="ad-wrap">
<div class="ad-big" v-if="adLeftList.length > 0">
<div class="ad-big-img" v-for="(item, index) in adLeftList" :key="index">
<el-image :src="$img(item.adv_image)" fit="cover" @error="adLeftImageError(index)" @click="$util.pushToTab(item.adv_url.url)" />
</div>
</div>
<div class="ad-small" v-if="adRightList.length > 0">
<div class="ad-small-img" v-for="(item, index) in adRightList" :key="index">
<el-image :src="$img(item.adv_image)" fit="cover" @error="adRightImageError(index)" @click="$util.pushToTab(item.adv_url.url)" />
</div>
</div>
</div>
</div>
<!-- 限时秒杀 -->
<div class="content-div" v-if="addonIsExit.seckill == 1 && listData.length > 0">
<div class="seckill-wrap">
<div class="seckill-time">
<div class="seckill-time-left">
<i class="iconfont icon-miaosha1 ns-text-color"></i>
<span class="seckill-time-title ns-text-color">限时秒杀</span>
<span>{{ seckillText }}</span>
<count-down class="count-down" v-on:start_callback="countDownS_cb()" v-on:end_callback="countDownE_cb()"
:currentTime="seckillTimeMachine.currentTime" :startTime="seckillTimeMachine.startTime"
:endTime="seckillTimeMachine.endTime" :dayTxt="''" :hourTxt="''" :minutesTxt="''"
:secondsTxt="''">
</count-down>
</div>
<div class="seckill-time-right" @click="$router.push('/promotion/seckill')">
<span>更多商品</span>
<i class="iconfont icon-arrow-right"></i>
</div>
</div>
<div class="seckill-content">
<vue-seamless-scroll :data="listData" :class-option="optionLeft" class="seamless-warp2">
<ul class="item" :style="{ width: 250 * listData.length + 'px' }">
<li v-for="(item, index) in listData" :key="index">
<div class="seckill-goods" @click="$router.push('/promotion/seckill/' + item.id)">
<div class="seckill-goods-img">
<img :src="$img(item.goods_image.split(',')[0], { size: 'mid' })" @error="imageError(index)" />
</div>
<p>{{ item.goods_name }}</p>
<div class="seckill-price-wrap">
<p class="ns-text-color">
<span>{{ item.seckill_price }}</span>
</p>
<p class="primary-price">{{ item.price }}</p>
</div>
</div>
</li>
</ul>
</vue-seamless-scroll>
</div>
</div>
</div>
<!-- 楼层区 -->
<div class="content-div">
<div class="floor">
<div v-for="(item, index) in floorList" :key="index" class="floor_item">
<floor-style-1 v-if="item.block_name == 'floor-style-1'" :data="item" />
<floor-style-2 v-if="item.block_name == 'floor-style-2'" :data="item" />
<floor-style-3 v-if="item.block_name == 'floor-style-3'" :data="item" />
<floor-style-4 v-if="item.block_name == 'floor-style-4'" :data="item" />
</div>
</div>
</div>
<!-- 浮层区 -->
<div class="floatLayer-wrap" v-if="floatLayer.is_show_type">
<div class="floatLayer">
<div class="img-wrap">
<img :src="$img(floatLayer.img_url)" @click="$util.pushToTab(floatLayer.link.url)" />
</div>
<i class="el-icon-circle-close" @click="closeFloat"></i>
</div>
</div>
<!-- 悬浮搜索 -->
<div class="fixed-box" :style="{ display: isShow ? 'block' : 'none' }">
<ns-header-mid />
</div>
</div>
</div>
</template>
<script>
import {
websiteInfo
} from "@/api/website"
import floorStyle1 from './index/components/floor-style-1.vue';
import floorStyle2 from './index/components/floor-style-2.vue';
import floorStyle3 from './index/components/floor-style-3.vue';
import floorStyle4 from './index/components/floor-style-4.vue';
import index from '@/assets/js/index/index.js';
import NsHeaderMid from "@/layouts/components/NsHeaderMid.vue"
import vueSeamlessScroll from 'vue-seamless-scroll'
import {
mapGetters
} from 'vuex';
export default {
components: {
floorStyle1,
floorStyle2,
floorStyle3,
floorStyle4,
NsHeaderMid,
vueSeamlessScroll
},
computed: {
...mapGetters(['siteInfo'])
},
mixins: [index],
async fetch({store, params}) {
await store.dispatch('site/siteInfo')
},
head() {
return {
title: this.siteInfo.seo_title ? this.siteInfo.seo_title : this.siteInfo.site_title,
meta: [{
name: 'description',
content: this.siteInfo.seo_description
},
{
name: 'keyword',
content: this.siteInfo.seo_keywords
},
{
property: 'og:title',
content: this.siteInfo.seo_title
},
{
property: 'og:description',
content: this.siteInfo.seo_description
},
{
property: 'og:type',
content: 'website'
}
]
}
}
}
</script>
<style lang="scss" scoped>
@import '@/assets/css/index/index.scss';
.count-down {
span {
display: inline-block;
width: 22px;
height: 22px;
line-height: 22px;
text-align: center;
background: #383838;
color: #ffffff;
border-radius: 2px;
}
}
</style>