积分商品,搜索热词为null问题

This commit is contained in:
mabo
2021-08-05 11:19:12 +08:00
parent 0387ac510a
commit 35881e30e0
7 changed files with 219 additions and 907 deletions

View File

@@ -97,12 +97,14 @@ export default {
const time = new Date().getTime() - 5 * 60 * 1000
if (!reloadTime) {
hotWords({count: 5}).then(res => {
if (res.success) storage.setItem('hotWordsList', res.result)
console.log(res);
if (res.success && res.result) storage.setItem('hotWordsList', res.result)
})
storage.setItem('hotWordsReloadTime', new Date().getTime())
} else if (reloadTime && time > reloadTime) {
hotWords({count: 5}).then(res => {
if (res.success) storage.setItem('hotWordsList', res.result)
console.log(res);
if (res.success && res.result) storage.setItem('hotWordsList', res.result)
})
storage.setItem('hotWordsReloadTime', new Date().getTime())
}

View File

@@ -70,7 +70,6 @@ export default {
},
async getListByDay () { // 当天秒杀活动
const res = await seckillByDay()
console.log(res);
if (res.success && res.result.length) {
return res.result
} else {

View File

@@ -0,0 +1,189 @@
<template>
<div style="background:#fff;">
<BaseHeader></BaseHeader>
<Search></Search>
<!-- <drawer></drawer> -->
<div class="base-width cate-container">
<Breadcrumb>
<BreadcrumbItem to="/">首页</BreadcrumbItem>
<BreadcrumbItem v-for="(item, index) in categoryBar" :to="goGoodsList(index)" target="_blank" :key="index">{{item.name}}</BreadcrumbItem>
</Breadcrumb>
</div>
<!-- 商品信息展示 -->
<div class="item-detail-show">
<!-- 详情左侧展示数据图片收藏举报 -->
<div class="item-detail-left">
<!-- 大图放大镜 -->
<div class="item-detail-big-img">
<pic-zoom :url="imgList[imgIndex].url" :scale="2"></pic-zoom>
</div>
<div class="item-detail-img-row">
<div
class="item-detail-img-small"
@mouseover="imgIndex = index"
v-for="(item, index) in imgList"
:key="index"
>
<img :src="item.url" />
</div>
</div>
<div class="goodsConfig mt_10">
<span @click="collect" ><Icon type="ios-heart" :color="isCollected ? '#ed3f14' : '#666'" />{{isCollected?'已收藏':'收藏'}}</span>
</div>
</div>
<!-- 右侧商品信息活动信息操作展示 -->
<div class="item-detail-right">
<div class="item-detail-title">
<p>
{{ skuDetail.goodsName }}
</p>
</div>
<div class="sell-point">
{{skuDetail.sellingPoint}}
</div>
<!-- 商品详细 价格优惠券促销 -->
<div class="item-detail-price-row">
<div class="item-price-left">
<!-- 商品原价 -->
<div class="item-price-row" v-if="!skuDetail.promotionPrice">
<p>
<span class="item-price-title"> &nbsp;&nbsp;&nbsp;&nbsp;</span>
<span class="item-price">{{skuDetail.price | unitPrice("¥")}}</span>
</p>
</div>
</div>
<!-- 选择规格 -->
<div class="item-select" v-for="(sku, index) in formatList" :key="sku.name">
<div class="item-select-title">
<p>{{ sku.name }}</p>
</div>
<div class="item-select-column">
<div class="item-select-row" v-for="(item) in sku.values" :key="item.value">
<div class="item-select-box" @click="select(index, item.value)"
:class="{ 'item-select-box-active': item.value === currentSelceted[index] }"
>
<div class="item-select-intro">
<p>{{ item.value }}</p>
</div>
</div>
</div>
</div>
</div>
<br />
<div class="add-buy-car-box">
<div class="item-select">
<div class="item-select-title">
<p>数量</p>
</div>
<div class="item-select-row">
<InputNumber :min="1" :disabled="skuDetail.quantity === 0" v-model="count"></InputNumber>
<span class="inventory"> 库存{{skuDetail.quantity}}</span>
</div>
</div>
<div class="item-select" v-if="skuDetail.goodsType !== 'VIRTUAL_GOODS' && skuDetail.weight !== 0">
<div class="item-select-title">
<p>重量</p>
</div>
<div class="item-select-row">
<span class="inventory"> {{skuDetail.weight}}kg</span>
</div>
</div>
</div>
</div>
</div>
<!-- 商品详情 -->
<div class="base-width item-intro" ref="itemIntroGoods">
<div>商品介绍</div>
<div v-html="goodsSku.intro" v-if="goodsSku.intro"></div>
<div v-else style="margin:20px;">暂无商品介绍</div>
</div>
<Spin size="large" fix v-if="isLoading"></Spin>
<BaseFooter></BaseFooter>
</div>
</template>
<script>
import Search from '@/components/Search';
import PicZoom from 'vue-piczoom';
import { pointGoodsDetail } from '@/api/promotion';
export default {
name: 'PointGoodsDetail',
beforeRouteEnter (to, from, next) {
window.scrollTo(0, 0);
next();
},
created () {
this.getGoodsDetail();
},
mounted () {
window.addEventListener('scroll', this.handleScroll)
},
data () {
return {
goodsMsg: {}, // 商品信息
goodsSku: {}, // 商品sku
isLoading: false, // 加载状态
categoryBar: [], // 分类
onceFlag: true // 只调用一次
};
},
methods: {
// 获取积分商品详情
getGoodsDetail () {
this.isLoading = true;
pointGoodsDetail(this.$route.query.id).then((res) => {
this.isLoading = false;
if (res.success) {
this.goodsMsg = res.result;
this.goodsSku = res.result.goodsSku
} else {
this.$Message.error(res.message)
// this.$router.push('/')
}
}).catch(() => {
// this.$router.push('/')
});
},
goGoodsList (currIndex) { // 跳转商品列表
const arr = []
this.categoryBar.forEach((e, index) => {
if (index <= currIndex) {
arr.push(e.id)
}
})
return location.origin + '/goodsList?categoryId=' + arr.toString()
},
handleScroll () { // 监听页面滚动
if (this.onceFlag) {
this.$nextTick(() => {
this.changeHeight('itemIntroGoods')
});
this.onceFlag = false
}
}
},
components: {
Search, PicZoom
}
};
</script>
<style scoped lang="scss">
.base-width{
width: 1200px;
margin: 0 auto;
position: relative;
}
.cate-container {
}
.item-intro {
margin-top: 10px;
>div:nth-child(1) {
height: 40px;
line-height: 40px;
background-color: #eee;
padding-left: 20px;
}
}
</style>

View File

@@ -15,7 +15,7 @@
class="goods-show-info"
v-for="(item, index) in goodsList"
:key="index"
@click="goGoodsDetail(item.skuId, item.goodsSku.goodsId)"
@click="goGoodsDetail(item.id)"
>
<div class="goods-show-img">
<img width="220" height="220" :src="item.goodsSku.thumbnail" />
@@ -97,12 +97,13 @@ export default {
this.getList()
this.$router.push({query: {categoryId: cateId}})
},
goGoodsDetail (skuId, goodsId) { //
let routerUrl = this.$router.resolve({
path: '/goodsDetail',
query: {skuId, goodsId, way: 'POINT'}
})
window.open(routerUrl.href, '_blank')
goGoodsDetail (id) { //
this.$router.push({path: '/pointGoodsDetail', query: {id}})
// let routerUrl = this.$router.resolve({
// path: '/pointGoodsDetail',
// query: {id}
// })
// window.open(routerUrl.href, '_blank')
},
changePageNum (val) { //
this.params.pageNumber = val;
@@ -117,7 +118,7 @@ export default {
}
</script>
<style lang="scss" scoped>
@import '../assets/styles/goodsList.scss';
@import '../../assets/styles/goodsList.scss';
.seckill-price {
font-size: 18px;
}
@@ -151,7 +152,7 @@ export default {
justify-content: flex-end;
}
.promotion-decorate::before,.promotion-decorate::after{
background-image: url('../../static/sprite@2x.png');
background-image: url('../../../static/sprite@2x.png');
}
.cate-select-con{
display: block;

View File

@@ -6,6 +6,7 @@ const SignUp = resolve => require(['@/pages/SignUp'], resolve);
const ForgetPassword = resolve => require(['@/pages/ForgetPassword'], resolve);
const GoodsList = resolve => require(['@/pages/GoodsList'], resolve);
const GoodsDetail = resolve => require(['@/pages/GoodsDetail'], resolve);
const PointGoodsDetail = resolve => require(['@/pages/promotion/PointGoodsDetail'], resolve);
const ShoppingCart = resolve => require(['@/pages/ShoppingCart'], resolve);
const Cart = resolve => require(['@/pages/Cart'], resolve);
const Pay = resolve => require(['@/pages/payment/Pay'], resolve);
@@ -15,7 +16,7 @@ const ThirdPay = resolve => require(['@/pages/payment/ThirdPay'], resolve);
const Coupon = resolve => require(['@/pages/CouponCenter'], resolve);
const seckill = resolve => require(['@/pages/promotion/seckill'], resolve);
const article = resolve => require(['@/pages/article/index'], resolve);
const PointMall = resolve => require(['@/pages/PointMall'], resolve);
const PointMall = resolve => require(['@/pages/promotion/PointMall'], resolve);
/*
* 会员中心
@@ -109,6 +110,12 @@ export default new Router({
component: GoodsDetail,
meta: {title: '商品详情'}
},
{
path: '/pointGoodsDetail', // 商品详情
name: 'PointGoodsDetail',
component: PointGoodsDetail,
meta: {title: '积分商品'}
},
{
path: '/shoppingCart', // 头部购物车
name: 'ShoppingCart',