积分商品,以及完善砍价商品
parent
65a9110ada
commit
0ea121e59e
|
@ -51,13 +51,25 @@ export function getPointsCategory() {
|
|||
* 获取积分商城商品
|
||||
* @param params
|
||||
*/
|
||||
export function getPointsGoods(params) {
|
||||
export function getPointsGoods(params) {
|
||||
return http.request({
|
||||
url: "/promotion/pointsGoods",
|
||||
method: Method.GET,
|
||||
params,
|
||||
});
|
||||
}
|
||||
/**
|
||||
* 获取积分商城商品详情
|
||||
* @param params
|
||||
*/
|
||||
export function getPointsGoodsDetail(id) {
|
||||
return http.request({
|
||||
url: "/promotion/pointsGoods/"+id,
|
||||
method: Method.GET,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取限时抢购时间线 当天限时抢购信息
|
||||
|
|
|
@ -4,23 +4,27 @@
|
|||
*/
|
||||
// 开发环境
|
||||
const dev = {
|
||||
common: "https://common-api.pickmall.cn",
|
||||
buyer: "https://buyer-api.pickmall.cn",
|
||||
|
||||
// common: "https://common-api.pickmall.cn",
|
||||
// buyer: "https://buyer-api.pickmall.cn",
|
||||
common: 'http://192.168.0.101:8890',
|
||||
buyer: 'http://192.168.0.101:8888',
|
||||
seller: 'http://192.168.0.101:8889',
|
||||
manager: 'http://192.168.0.101:8887'
|
||||
|
||||
};
|
||||
// 生产环境
|
||||
const prod = {
|
||||
common: "https://common-api.pickmall.cn",
|
||||
buyer: "https://buyer-api.pickmall.cn",
|
||||
common: "https://common-api.pickmall.cn",
|
||||
buyer: "https://buyer-api.pickmall.cn",
|
||||
};
|
||||
|
||||
//默认生产环境
|
||||
let api = dev;
|
||||
//如果是开发环境
|
||||
if (process.env.NODE_ENV == "development") {
|
||||
api = dev;
|
||||
api = dev;
|
||||
} else {
|
||||
api = prod;
|
||||
api = prod;
|
||||
}
|
||||
//微信小程序,app的打包方式建议为生产环境,所以这块直接条件编译赋值
|
||||
// #ifdef MP-WEIXIN || APP-PLUS
|
||||
|
@ -30,5 +34,5 @@ api = prod;
|
|||
api.buyer += "/buyer";
|
||||
api.common += "/common";
|
||||
export default {
|
||||
...api,
|
||||
...api,
|
||||
};
|
||||
|
|
|
@ -497,6 +497,13 @@
|
|||
"navigationStyle": "custom",
|
||||
"navigationBarTextStyle": "white"
|
||||
|
||||
}
|
||||
},{
|
||||
"path": "point/detail",
|
||||
"style": {
|
||||
"navigationStyle": "custom",
|
||||
"navigationBarTextStyle": "white"
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -745,7 +752,6 @@
|
|||
"selectedIconPath": "static/tabbar/category-s.png",
|
||||
"text": "分类"
|
||||
},
|
||||
|
||||
// {
|
||||
// "pagePath": "pages/navigation/point/point-mall",
|
||||
// "iconPath": "static/tabbar/point-mall.png",
|
||||
|
|
|
@ -162,13 +162,12 @@ export default {
|
|||
* 直接购买
|
||||
*/
|
||||
buy(data) {
|
||||
|
||||
API_trade.addToCart(data).then((res) => {
|
||||
if (res.data.code == 200) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/order/fillorder?way=${data.cartType}&addr=${
|
||||
this.addr.id || ""
|
||||
}&parentOrder=${encodeURIComponent(
|
||||
url: `/pages/order/fillorder?way=${
|
||||
data.cartType
|
||||
}&addr=${""}&parentOrder=${encodeURIComponent(
|
||||
JSON.stringify(this.parentOrder)
|
||||
)}`,
|
||||
});
|
||||
|
@ -213,8 +212,10 @@ export default {
|
|||
});
|
||||
} else {
|
||||
// 判断是否拼团商品
|
||||
if (this.buyType) {
|
||||
if (this.buyType == "PINTUAN") {
|
||||
data.cartType = "PINTUAN";
|
||||
} else if (this.buyType == "POINTS") {
|
||||
data.cartType = "POINTS";
|
||||
} else {
|
||||
data.cartType = "BUY_NOW";
|
||||
}
|
||||
|
@ -224,7 +225,7 @@ export default {
|
|||
},
|
||||
formatSku(list) {
|
||||
// 格式化数据
|
||||
|
||||
if (typeof list != Array) return false;
|
||||
let arr = [{}];
|
||||
list.forEach((item, index) => {
|
||||
item.specValues.forEach((spec, specIndex) => {
|
||||
|
|
|
@ -100,6 +100,7 @@ export default {
|
|||
async onShow() {
|
||||
//获取顶级分类
|
||||
let response = await getPointsCategory();
|
||||
|
||||
if (response.data.success) {
|
||||
let navData = response.data.result.records;
|
||||
navData.forEach((item) => {
|
||||
|
@ -130,7 +131,7 @@ export default {
|
|||
toGoods(item) {
|
||||
//跳转详情
|
||||
uni.navigateTo({
|
||||
url: `/pages/product/goods?id=${item.skuId}&goodsId=${item.id}&whetherPoint=1`,
|
||||
url: `/pages/promotion/point/detail?id=${item.id}`,
|
||||
});
|
||||
},
|
||||
|
||||
|
|
|
@ -91,6 +91,7 @@
|
|||
</div>
|
||||
|
||||
<p class="sp_number">¥{{ val.goodsSku.price | unitPrice }}</p>
|
||||
|
||||
</u-col>
|
||||
</u-row>
|
||||
|
||||
|
|
|
@ -476,7 +476,6 @@ export default {
|
|||
this.routerVal.id,
|
||||
this.routerVal.goodsId,
|
||||
this.routerVal.distributionId,
|
||||
this.routerVal.whetherPoint
|
||||
);
|
||||
}
|
||||
},
|
||||
|
|
|
@ -93,7 +93,7 @@
|
|||
|
||||
<!-- 购买 -->
|
||||
|
||||
<popupGoods :addr="addr" ref="popupGoods" :buyMask="maskFlag" @closeBuy="closePopupBuy" :goodsDetail="bargainDetail" :goodsSpec="goodsSpec" v-if="bargainDetail.id "
|
||||
<popupGoods ref="popupGoods" :buyMask="maskFlag" @closeBuy="closePopupBuy" :goodsDetail="bargainDetail" :goodsSpec="goodsSpec" v-if="bargainDetail.id "
|
||||
@handleClickSku="getGoodsDetail" />
|
||||
|
||||
<!-- 产品详情 -->
|
||||
|
@ -218,22 +218,11 @@ export default {
|
|||
title: "加载中",
|
||||
mask: true,
|
||||
});
|
||||
|
||||
this.$refs.popupGoods.buy({
|
||||
skuId: this.bargainDetail.id,
|
||||
num: 1,
|
||||
cartType: "KANJIA",
|
||||
});
|
||||
// getGoods(this.bargainDetail.id, this.bargainDetail.goodsId).then(
|
||||
// (response) => {
|
||||
// this.goodsDetail = response.data.result.data;
|
||||
// this.selectedGoods = response.data.result.data;
|
||||
// this.goodsSpec = response.data.result.specs;
|
||||
// uni.hideLoading();
|
||||
|
||||
// // this.maskFlag = true;
|
||||
// }
|
||||
// );
|
||||
},
|
||||
|
||||
// 初始化商品以及砍价活动
|
||||
|
@ -257,7 +246,7 @@ export default {
|
|||
let res = await getBargainActivity(this.params);
|
||||
// 判断当前是否是第一次进入,如果是第一次进入默认砍一刀
|
||||
res.data.success
|
||||
? res.data.result
|
||||
? res.data.result.launch
|
||||
? (this.activityData = res.data.result)
|
||||
: this.openActivity()
|
||||
: "";
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<div class="page">
|
||||
<u-navbar back-icon-color="#fff" :background="background" :border-bottom="false" title=""></u-navbar>
|
||||
<u-navbar back-icon-color="#fff" :background="background" :border-bottom="false" title=""></u-navbar>
|
||||
<div class="wrapper">
|
||||
<!-- 砍价列表 -->
|
||||
<div class="box">
|
||||
|
@ -34,7 +34,7 @@ export default {
|
|||
data() {
|
||||
return {
|
||||
background: {
|
||||
backgroundColor: 'transparent',
|
||||
backgroundColor: "transparent",
|
||||
},
|
||||
params: {
|
||||
promotionStatus: "START", //开始/上架
|
||||
|
@ -45,6 +45,12 @@ export default {
|
|||
};
|
||||
},
|
||||
onShow() {
|
||||
this.params.pageNumber = 1;
|
||||
this.bargainList = [];
|
||||
this.init();
|
||||
},
|
||||
onReachBottom() {
|
||||
this.params.pageNumber++;
|
||||
this.init();
|
||||
},
|
||||
methods: {
|
||||
|
@ -54,7 +60,7 @@ export default {
|
|||
async init() {
|
||||
let res = await getBargainList(this.params); //砍价列表
|
||||
if (res.data.success) {
|
||||
this.bargainList = res.data.result.records;
|
||||
this.bargainList.push(...res.data.result.records);
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -68,12 +74,11 @@ export default {
|
|||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
page{
|
||||
background-color: $light-color !important;
|
||||
page {
|
||||
background-color: $light-color !important;
|
||||
}
|
||||
</style>
|
||||
<style lang="scss" scoped>
|
||||
|
||||
.wrapper {
|
||||
background: url("../static/Bargaining.png");
|
||||
background-repeat: no-repeat;
|
||||
|
|
|
@ -0,0 +1,217 @@
|
|||
<template>
|
||||
<div class="page">
|
||||
<u-navbar :border-bottom="false" title=""></u-navbar>
|
||||
|
||||
<div class="wrapper">
|
||||
<!-- 砍价列表 -->
|
||||
<div class="box box1">
|
||||
<div class="bargain">
|
||||
<div class="row-title">商品信息</div>
|
||||
<div class="flex row-item">
|
||||
<div class="goods-img">
|
||||
<u-image width="200" height="200" :src="goodsData.thumbnail"></u-image>
|
||||
</div>
|
||||
<div class="goods-config">
|
||||
<div class="goods-title wes-2">
|
||||
{{goodsData.goodsName}}
|
||||
</div>
|
||||
<div class="flex price-box">
|
||||
<div class="purchase-price">积分:<span>{{ pointDetail.points | unitPrice }}</span>
|
||||
</div>
|
||||
<div class="max-price">原价:<span>¥{{ goodsData.price | unitPrice}}</span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="tips">{{goodsData.sellingPoint}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="buy" @click="getGoodsDetail">
|
||||
立即购买
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 产品详情 -->
|
||||
<div class="box box3">
|
||||
<div class="bargain">
|
||||
<div class="row-title">商品详情</div>
|
||||
<view class="u-content">
|
||||
<u-parse :html="goodsData.mobileIntro"></u-parse>
|
||||
</view>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 购买 -->
|
||||
<popupGoods ref="popupGoods" :goodsSpec="goodsSpec" :buyMask="maskFlag" @closeBuy="closePopupBuy" :goodsDetail="goodsData" v-if="goodsData.id " @handleClickSku="getGoodsDetail" />
|
||||
|
||||
<div class="box4"></div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import popupGoods from "@/pages/cart/payment/popup/goods"; //购物车商品的模块
|
||||
import { getPointsGoodsDetail } from "@/api/promotions";
|
||||
export default {
|
||||
components: {
|
||||
popupGoods,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
maskFlag: false, //商品弹框
|
||||
lightColor: this.$lightColor,
|
||||
goodsData: {}, //积分商品中商品详情
|
||||
pointDetail: {}, //积分商品详情
|
||||
goodsDetail: {}, //商品详情
|
||||
goodsSpec: {}, //商品规格
|
||||
selectedGoods: {},
|
||||
};
|
||||
},
|
||||
onLoad(options) {
|
||||
this.routerVal = options;
|
||||
},
|
||||
onShow() {
|
||||
this.init();
|
||||
},
|
||||
watch: {},
|
||||
methods: {
|
||||
// 购买积分商品
|
||||
getGoodsDetail() {
|
||||
uni.showLoading({
|
||||
title: "加载中",
|
||||
mask: true,
|
||||
});
|
||||
this.$refs.popupGoods.buy({
|
||||
skuId: this.goodsData.id,
|
||||
num: 1,
|
||||
cartType: "POINTS",
|
||||
});
|
||||
},
|
||||
|
||||
// 初始化商品
|
||||
async init() {
|
||||
// 获取商品
|
||||
let res = await getPointsGoodsDetail(this.routerVal.id);
|
||||
if (res.data.success) {
|
||||
this.goodsData = res.data.result.goodsSku;
|
||||
this.pointDetail = res.data.result;
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss">
|
||||
</style>
|
||||
<style lang="scss" scoped>
|
||||
.page {
|
||||
min-height: 100vh;
|
||||
}
|
||||
.slot-content {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
justify-content: center;
|
||||
margin: 20rpx 0 80rpx 0;
|
||||
}
|
||||
.price {
|
||||
margin-left: 10rpx;
|
||||
color: #44a88d;
|
||||
}
|
||||
.price-box {
|
||||
align-items: center;
|
||||
padding: 10rpx 0;
|
||||
}
|
||||
|
||||
.box {
|
||||
background: #fff;
|
||||
border-radius: 20rpx;
|
||||
position: relative;
|
||||
|
||||
margin: 40rpx auto;
|
||||
> .bargain {
|
||||
padding: 32rpx;
|
||||
}
|
||||
}
|
||||
|
||||
.row-item {
|
||||
align-items: center;
|
||||
}
|
||||
.goods-config {
|
||||
margin-left: 20rpx;
|
||||
> .goods-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
.max-price,
|
||||
.purchase-price {
|
||||
font-size: 24rpx;
|
||||
color: #999;
|
||||
}
|
||||
.max-price {
|
||||
margin-left: 10rpx;
|
||||
text-decoration: line-through;
|
||||
}
|
||||
.purchase-price {
|
||||
color: #44a88d;
|
||||
> span {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
.buy {
|
||||
font-size: 24rpx;
|
||||
color: #fff;
|
||||
width: 80%;
|
||||
margin: 50rpx auto 0 auto;
|
||||
text-align: center;
|
||||
font-size: 30rpx;
|
||||
background-image: linear-gradient(25deg, #00627d, #2d8485, #44a88d, #57ce93);
|
||||
|
||||
padding: 18rpx;
|
||||
border-radius: 100px;
|
||||
}
|
||||
|
||||
.line {
|
||||
margin: 20rpx 0;
|
||||
}
|
||||
.tips {
|
||||
font-size: 24rpx;
|
||||
color: #999;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.row-progress {
|
||||
margin: 20rpx 0;
|
||||
}
|
||||
.row-title {
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #44a88d;
|
||||
text-align: center;
|
||||
margin-bottom: 40rpx;
|
||||
}
|
||||
.user-item {
|
||||
margin: 40rpx 0;
|
||||
align-items: center;
|
||||
}
|
||||
.user-config {
|
||||
margin-left: 20rpx;
|
||||
flex: 8;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
> .user-name {
|
||||
> div:nth-of-type(1) {
|
||||
font-size: 28rpx;
|
||||
}
|
||||
> div:nth-last-of-type(1) {
|
||||
font-size: 24rpx;
|
||||
color: #999;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mobile-intro {
|
||||
overflow: hidden;
|
||||
max-width: 100%;
|
||||
}
|
||||
</style>
|
Binary file not shown.
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Loading…
Reference in New Issue