Слияние кода завершено, страница обновится автоматически
<template>
<div class="container">
<Modal v-model="showCpmodel" width="350">
<template #header>
<p style="color:black;text-align:left">
<!-- <Icon type="ios-information-circle"></Icon> -->
<span>活动优惠券</span>
</p>
</template>
<template>
<Scroll :on-reach-bottom="handleReachBottom">
<Card dis-hover v-for="(item, index) in autoCoupList" :key="index" style="margin: 10px 15px">
<span v-if="item.couponType === 'PRICE'" class="fontsize_12 global_color" style="font-size: 15px;">¥<span class="price">{{item.price | unitPrice}}</span></span>
<span v-if="item.couponType === 'DISCOUNT'" class="fontsize_12 global_color" style="font-size: 15px;"><span class="price">{{item.discount}}</span>折</span>
<span class="describe" style="font-size: 15px;margin-left: 5px;">满{{item.consumeThreshold}}元可用</span>
<p style="font-size: 10px;">使用范围:{{useScope(item.scopeType, item.storeName)}}</p>
<p style="font-size: 10px;">有效期:{{item.endTime}}</p>
</Card>
</Scroll>
</template>
<template #footer>
<Button type="error" @click="showCpmodel=false">确定</Button>
</template>
</Modal>
<!-- 固定头部 -->
<hover-search class="hover-search" :class="{show: topSearchShow}"></hover-search>
<!-- 顶部广告 -->
<FixedTopPage :data="topAdvert"></FixedTopPage>
<!-- 头部 包括登录,我的订单等 -->
<BaseHeader></BaseHeader>
<!-- 搜索框、logo -->
<Search></Search>
<!-- 商品分类 -->
<cateNav :showAlways="true" v-if="showNav" :large="carouselLarge" :opacity="carouselOpacity"></cateNav>
<!-- 楼层装修部分 -->
<model-form ref="modelForm" :data="modelForm"></model-form>
<!-- 底部栏 -->
<BaseFooter></BaseFooter>
<!-- 侧边栏 -->
<fixedBar class="fixed-bar" :class="{'show-fixed': topSearchShow}"></fixedBar>
</div>
</template>
<script>
import Search from '@/components/Search';
import ModelForm from '@/components/indexDecorate/ModelForm';
import HoverSearch from '@/components/header/hoverSearch';
import fixedBar from '@/components/fixed/index';
import storage from "@/plugins/storage";
import { indexData,getAutoCoup } from '@/api/index.js';
import {seckillByDay} from '@/api/promotion'
export default {
name: 'Index',
mounted () {
this.getIndexData();
let that = this;
window.onscroll = function () {
let top = document.documentElement.scrollTop || document.body.scrollTop;
if (top > 300) {
that.topSearchShow = true;
} else {
that.topSearchShow = false;
}
};
if(storage.getItem('userInfo')){
this.getAutoCoup()
}
},
data () {
return {
autoCoupList:[],
showCpmodel:false,
modelForm: { list: [] }, // 楼层装修数据
topAdvert: {}, // 顶部广告
showNav: false, // 是否展示分类栏
topSearchShow: false, // 滚动后顶部搜索栏展示
carouselLarge: false, // 不同轮播分类尺寸
carouselOpacity: false // 不同轮播分类样式
};
},
// created(){
// },
methods: {
// 优惠券可用范围
useScope (type, storeName) {
let shop = '平台';
let goods = '全部商品'
if (storeName !== 'platform') shop = storeName
switch (type) {
case 'ALL':
goods = '全部商品'
break;
case 'PORTION_GOODS':
goods = '部分商品'
break;
case 'PORTION_GOODS_CATEGORY':
goods = '部分分类商品'
break;
}
return `${shop}${goods}可用`
},
getAutoCoup(){
let data = new Date()
let datas = data.getDate()
let hours = data.getHours()
let flagCoup = storage.getItem('getTimes') //缓存
if(flagCoup && flagCoup != undefined && flagCoup != null){ //判断当前是否有缓存
if(Number(datas) > Number(flagCoup)){ //判断缓存是否小于当前天数
if(Number(hours) >= 6){//超过或等于6时清楚缓存
storage.setItem('getTimes',datas)//存储缓存
this.getcps()
}
}
}else{
// window.localStorage.setItem('getTimes',datas)//存储缓存
this.getcps()
}
},
getcps(){
console.log(123123)
let data = new Date()
let datas = data.getDate()
getAutoCoup().then(res=>{ //调用自动发券
if(res.success){
this.autoCoupList.push(...res.result);
let objs = {};
this.autoCoupList = this.autoCoupList.reduce((cur, next) => {
//对象去重
if (next.id != undefined) {
objs[next.id]
? ""
: (objs[next.id] = true && cur.push(next));
}
return cur;
}, []);
if(this.autoCoupList != '' && this.autoCoupList.length > 0){
console.log(1231232132)
this.showCpmodel = true;
}
storage.setItem('getTimes',datas)//存储缓存
}
})
},
handleReachBottom(){
} ,
getIndexData () {
// 获取首页装修数据
indexData({ clientType: 'PC' }).then(async (res) => {
if (res.success) {
let dataJson = JSON.parse(res.result.pageData);
// 秒杀活动不是装修的数据,需要调用接口判断是否有秒杀商品
// 轮播图根据不同轮播,样式不同
for (let i = 0; i < dataJson.list.length; i++) {
let type = dataJson.list[i].type
if (type === 'carousel2') {
this.carouselLarge = true;
} else if (type === 'carousel1') {
this.carouselLarge = true
this.carouselOpacity = true
} else if (type === 'seckill') {
let seckill = await this.getListByDay()
dataJson.list[i].options.list = seckill
}
}
this.modelForm = dataJson;
storage.setItem('navList', dataJson.list[1])
this.showNav = true
this.topAdvert = dataJson.list[0];
}
});
},
async getListByDay () { // 当天秒杀活动
const res = await seckillByDay()
if (res.success && res.result.length) {
return res.result
} else {
return []
}
}
},
components: {
Search,
ModelForm,
HoverSearch,
fixedBar
}
};
</script>
<style scoped lang="scss">
@import '../assets/styles/coupon.scss';
.container {
@include sub_background_color($light_background_color);
}
</style>
<style>
.hover-search {
width: 100%;
height: 60px;
transform: translateY(-200px);
background-color: #fff;
position: fixed;
top: 0;
z-index: 9999;
box-shadow:0 0 10px 2px rgb(90 90 90 / 60%);
transition: 0.35s;
}
.show {
transform: translateY(0);
-webkit-transform: translateZ(0);
-moz-transform: translateZ(0);
-ms-transform: translateZ(0);
-o-transform: translateZ(0);
transform: translateZ(0);
top: 0;
}
.fixed-bar{
opacity: 0 !important;
transform: translateY(-10px);
transition: .35s;
z-index: 999999;
height: 0px !important;
overflow: hidden;
}
.show-fixed{
height: 354px !important;
opacity: 1 !important;
transform: translateY(0);
-webkit-transform: translateZ(0);
-moz-transform: translateZ(0);
-ms-transform: translateZ(0);
-o-transform: translateZ(0);
transform: translateZ(0);
}
/* 2K */
@media screen and (min-width: 2561px) and (max-width: 3840px) {
/* 样式 */
.fixed-bar{
position: fixed;
right:900px;
top: 500px;
}
}
/* 1080p */
@media screen and (max-width: 2560px) {
/* 样式 */
.fixed-bar{
position: fixed;
right:300px;
top: 500px;
}
}
@media screen and (max-width: 2025px) {
/* 样式 */
.fixed-bar{
position: fixed;
right:150px;
top: 300px;
}
}
</style>
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )