|
|
@@ -1,7 +1,7 @@
|
|
|
<template>
|
|
|
<view class="container">
|
|
|
+ <!-- shipping_method 发货方式:0邮寄 1自提 2邮寄自提 -->
|
|
|
<template v-if="Data.is_sell != 1">
|
|
|
- <!-- shipping_method 发货方式:0邮寄 1自提 2邮寄自提 -->
|
|
|
<div class="qtmd mar_b20" v-if="goodsInfo.shipping_method == 2">
|
|
|
<view class="order_list flex_r flex_ac flex_jb">
|
|
|
<view class="list_name">发货方式</view>
|
|
|
@@ -22,8 +22,7 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
<!-- 收货地址 -->
|
|
|
- <!-- is_sell 0:邮寄 1:寄售 -->
|
|
|
- <!-- prom_type 0:邮寄 1:自提 -->
|
|
|
+ <!-- is_sell 0:邮寄 1:寄售 prom_type 0:邮寄 1:自提 -->
|
|
|
<view class="address mar_b20" v-if="Data.is_sell != 1 && prom_type != 1">
|
|
|
<block v-if="DefaultAddress.name">
|
|
|
<view class="add_head flex_r flex_ac flex_jb">
|
|
|
@@ -48,42 +47,33 @@
|
|
|
<!-- 收货地址-end -->
|
|
|
<!-- 商品信息 -->
|
|
|
<view class="goods_info mar_b20">
|
|
|
- <view class="info_type">{{ modularName }}</view>
|
|
|
+ <view class="info_type" v-if="Data.type != 1">{{ modularName }}</view>
|
|
|
<view class="goods flex_r">
|
|
|
<image class="goods_img" :src="goodsInfo.original_img" mode=""></image>
|
|
|
<view class="goods_con flex_c flex_jc flex_jb">
|
|
|
<view class="goods_name ellipsis2">{{ goodsInfo.goods_name }}</view>
|
|
|
- <view class="goods_msg" v-if="Data.type == 2">{{ goodsInfo.trade_price }}元+{{ goodsInfo.trade_num }}批发券+{{ goodsInfo.treasure_price }}茶宝</view>
|
|
|
- <view class="goods_msg" v-else>{{ goodsInfo.cost_price }}</view>
|
|
|
- <view class="goods_num">x {{ Data.num }}</view>
|
|
|
+ <!-- <view class="goods_msg" v-if="Data.type == 2">{{ goodsInfo.trade_price }}元+{{ goodsInfo.trade_num }}批发券+{{ goodsInfo.treasure_price }}茶宝</view> -->
|
|
|
+ <template v-if="Data.type != 1">
|
|
|
+ <view class="goods_msg">{{ goodsInfo.cost_price }}</view>
|
|
|
+ <view class="goods_num">x {{ Data.num }}</view>
|
|
|
+ </template>
|
|
|
</view>
|
|
|
</view>
|
|
|
</view>
|
|
|
<!-- 商品信息-end -->
|
|
|
<!-- 订单信息 -->
|
|
|
- <view class="order">
|
|
|
+ <view class="order mar_b20">
|
|
|
+ <view class="info_type" v-if="Data.type == 1">{{ modularName }}</view>
|
|
|
<view class="order_list flex_r flex_ac flex_jb">
|
|
|
<view class="list_name">数量</view>
|
|
|
<view class="list_con">{{ Data.num }}</view>
|
|
|
</view>
|
|
|
- <template v-if="Data.type==2">
|
|
|
- <view class="order_list flex_r flex_ac flex_jb" v-if="Data.is_sell == 1">
|
|
|
- <view class="flex_r flex_ac">
|
|
|
- <view class="list_name">服务费</view>
|
|
|
- <view class="list_con p_color">(寄卖,{{ freight.service }}元/每套)</view>
|
|
|
- </view>
|
|
|
- <view class="list_con">¥{{ $h.Mul(freight.service, Data.num) }}</view>
|
|
|
- </view>
|
|
|
- <view class="order_list flex_r flex_ac flex_jb" v-else-if="prom_type != 1">
|
|
|
- <view class="flex_r flex_ac">
|
|
|
- <view class="list_name">服务费</view>
|
|
|
- <view class="list_con p_color">(邮寄,{{ freight.freight }}元/每套)</view>
|
|
|
- </view>
|
|
|
- <view class="list_con">¥{{ $h.Mul(freight.freight, Data.num) }}</view>
|
|
|
- </view>
|
|
|
- </template>
|
|
|
- <template v-else>
|
|
|
- <view class="order_list flex_r flex_ac flex_jb" v-if="Data.is_sell != 1 && prom_type != 1">
|
|
|
+ <view class="order_list flex_r flex_ac flex_jb">
|
|
|
+ <view class="list_name">商品单价</view>
|
|
|
+ <view class="list_con">¥{{ parseFloat(goodsInfo.cost_price) }}</view>
|
|
|
+ </view>
|
|
|
+ <template v-if="Data.type != 1">
|
|
|
+ <view class="order_list flex_r flex_ac flex_jb" v-if="Data.is_sell != 1 && prom_type != 1 && freight > 0">
|
|
|
<view class="flex_r flex_ac">
|
|
|
<view class="list_name">运费</view>
|
|
|
<view class="list_con p_color">({{ freight }}元/每套)</view>
|
|
|
@@ -106,33 +96,63 @@
|
|
|
</view>
|
|
|
<view class="list_con">{{ $h.Mul(goodsInfo.trade_num, Data.num) }} 批发券</view>
|
|
|
</view>
|
|
|
- <template v-if="Data.type==4 && isAct">
|
|
|
- <view class="order_list flex_r flex_ac flex_jb">
|
|
|
- <view class="list_name">商品原价</view>
|
|
|
- <view class="list_con">¥{{ originalPrice }}</view>
|
|
|
- </view>
|
|
|
- <view class="order_list flex_r flex_ac flex_jb">
|
|
|
- <view class="flex_r flex_ac">
|
|
|
- <view class="list_name">消费金抵</view>
|
|
|
- <view class="list_con p_color">(可用 {{ parseFloat(local_uinfo.integral) }})</view>
|
|
|
- </view>
|
|
|
- <view class="list_con p_color">-¥{{ goldNum }}</view>
|
|
|
- </view>
|
|
|
- </template>
|
|
|
-
|
|
|
- <view class="order_list flex_r flex_ac flex_jb" v-if="Data.type != 5">
|
|
|
- <view class="list_name">商品金额</view>
|
|
|
+ <template v-if="Data.type==4 && isAct">
|
|
|
+ <view class="order_list flex_r flex_ac flex_jb">
|
|
|
+ <view class="list_name">商品原价</view>
|
|
|
+ <view class="list_con">¥{{ originalPrice }}</view>
|
|
|
+ </view>
|
|
|
+ <view class="order_list flex_r flex_ac flex_jb">
|
|
|
+ <view class="flex_r flex_ac">
|
|
|
+ <view class="list_name">消费金抵</view>
|
|
|
+ <view class="list_con p_color">(可用 {{ parseFloat(localInfo.integral) }})</view>
|
|
|
+ </view>
|
|
|
+ <view class="list_con p_color">-¥{{ goldNum }}</view>
|
|
|
+ </view>
|
|
|
+ </template>
|
|
|
+ <view class="order_list flex_r flex_ac flex_jb">
|
|
|
+ <view class="list_name">小计</view>
|
|
|
<view class="list_con">¥{{ CommodityPrice || 0 }}</view>
|
|
|
</view>
|
|
|
+ </view>
|
|
|
+ <view class="order mar_b20" v-if="Data.type == 1">
|
|
|
+ <view class="info_type">批发专区</view>
|
|
|
+ <view class="order_list flex_r flex_ac flex_jb">
|
|
|
+ <view class="list_name">数量</view>
|
|
|
+ <view class="list_con">{{ Data.num * 2 }}</view>
|
|
|
+ </view>
|
|
|
+ <view class="order_list flex_r flex_ac flex_jb">
|
|
|
+ <view class="list_name">商品单价</view>
|
|
|
+ <view class="list_con">¥{{ parseFloat(goodsInfo.trade_price) }}</view>
|
|
|
+ </view>
|
|
|
+ <view class="order_list flex_r flex_ac flex_jb">
|
|
|
+ <view class="flex_r flex_ac">
|
|
|
+ <view class="list_name">寄卖服务</view>
|
|
|
+ <view class="list_con p_color">({{ goodsInfo.service }}元/每套)</view>
|
|
|
+ </view>
|
|
|
+ <view class="list_con">¥{{ $h.Mul(goodsInfo.service, Data.num * 2) }}</view>
|
|
|
+ </view>
|
|
|
+ <view class="order_list flex_r flex_ac flex_jb">
|
|
|
+ <view class="list_name">小计</view>
|
|
|
+ <view class="list_con">¥{{ wholesalePriceTotal || 0 }}</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="order">
|
|
|
+ <view class="order_list flex_r flex_ac flex_jb">
|
|
|
+ <view class="list_name">订单合计</view>
|
|
|
+ <view class="list_con">¥{{ amountTotal || 0 }}</view>
|
|
|
+ </view>
|
|
|
<view class="order_list flex_r flex_ac flex_jb" v-if="['1','2','3'].includes(Data.type)">
|
|
|
<view class="list_name">可用云宝</view>
|
|
|
<view class="list_con g_color">¥{{ userinfo.user_money }}</view>
|
|
|
</view>
|
|
|
<view class="order_list flex_r flex_ac flex_jb" v-if="['1','2','3', '4'].includes(Data.type) && isAct">
|
|
|
<view class="list_name">数智余额</view>
|
|
|
- <view class="list_con g_color">¥{{ local_uinfo.property }}</view>
|
|
|
+ <view class="list_con g_color">¥{{ localInfo.property }}</view>
|
|
|
</view>
|
|
|
-
|
|
|
+ </view>
|
|
|
+ <view class="msginfo" v-if="Data.type == 1">
|
|
|
+ <view class="title">特别提示</view>
|
|
|
+ <view>1、寄卖服务费只能使用数智余额抵扣或微信支付</view>
|
|
|
</view>
|
|
|
<!-- 订单信息-end -->
|
|
|
<!-- 底部操作栏 -->
|
|
|
@@ -157,20 +177,22 @@ export default {
|
|
|
data() {
|
|
|
return {
|
|
|
Data: {},
|
|
|
- goodsInfo: "", // 商品信息
|
|
|
- modularName: "", // 商品类型
|
|
|
- DefaultAddress: {}, // 用户默认地址
|
|
|
- CommodityPrice: 0, //商品价格
|
|
|
- obligation: 0, //待支付
|
|
|
+ goodsInfo: "", //商品信息
|
|
|
+ modularName: "", //商品类型
|
|
|
+ DefaultAddress: {}, //用户默认地址
|
|
|
+ originalPrice: 0, //商品原价(总价)
|
|
|
+ CommodityPrice: 0, //商品折扣后价格(总价)
|
|
|
+ wholesalePriceTotal: 0, //批发总价
|
|
|
+ obligation: 0, //待支付 (可以理解为必须微信支付的)
|
|
|
freight: 0, //运费
|
|
|
- goldNum: 0, //消费金抵扣
|
|
|
- originalPrice: 0, //抵扣后价格
|
|
|
+ goldNum: 0, //消费金抵扣
|
|
|
+ amountTotal: 0, //合计
|
|
|
|
|
|
- userinfo: {},
|
|
|
- local_uinfo: {},
|
|
|
+ userinfo: uni.getStorageSync("userinfo"),
|
|
|
+ localInfo: uni.getStorageSync("localInfo"),
|
|
|
|
|
|
- prom_type: 0,
|
|
|
- isAct: false, //是否激活数智生活
|
|
|
+ prom_type: 0, //0:邮寄 1:自提
|
|
|
+ isAct: false, //是否激活数智生活
|
|
|
};
|
|
|
},
|
|
|
components: {
|
|
|
@@ -178,26 +200,13 @@ export default {
|
|
|
},
|
|
|
onLoad(e) {
|
|
|
this.Data = e;
|
|
|
- this.isActivation(); //查询是否激活数智生活
|
|
|
- this.getLU(); //获取数智生活用户信息
|
|
|
- this.getuserInfo(); //获取云店用户信息
|
|
|
+ this.isActivation(); //查询是否激活数智生活
|
|
|
this.loadAddress(); //获取收货地址
|
|
|
- this.loadData(e); //加载订单商品数据
|
|
|
+ this.loadData(e); //加载订单商品数据
|
|
|
|
|
|
this.modularName = this.tidyTpye(e.type);
|
|
|
},
|
|
|
- computed: {
|
|
|
- runp() {
|
|
|
- switch (this.Data.type) {
|
|
|
- case '2':
|
|
|
- return this.goodsInfo.trade_price;
|
|
|
- case '4':
|
|
|
- return this.$h.Sub(this.goodsInfo.cost_price, this.isAct ? this.goodsInfo.consume : 0);
|
|
|
- default:
|
|
|
- return this.goodsInfo.cost_price;
|
|
|
- }
|
|
|
- }
|
|
|
- },
|
|
|
+ computed: {},
|
|
|
methods: {
|
|
|
onprom(va) {
|
|
|
this.prom_type = va
|
|
|
@@ -206,76 +215,92 @@ export default {
|
|
|
// 是否激活数智生活
|
|
|
async isActivation() {
|
|
|
let res = await post("local/isActivation", this.Query);
|
|
|
- if (res.code === 0) {
|
|
|
- this.isAct = true
|
|
|
- }else {
|
|
|
- uni.hideToast();
|
|
|
- this.isAct = false
|
|
|
- }
|
|
|
+ if (res.code === 0) {
|
|
|
+ this.isAct = true
|
|
|
+ } else {
|
|
|
+ uni.hideToast();
|
|
|
+ this.isAct = false
|
|
|
+ }
|
|
|
},
|
|
|
loadData(da) {
|
|
|
post("v1/goods/goodsDetail", da).then((res) => {
|
|
|
if (res.code === 0) {
|
|
|
this.goodsInfo = res.data.data;
|
|
|
if (this.goodsInfo.shipping_method != 2) this.prom_type = this.goodsInfo.shipping_method
|
|
|
- post("v1/goods/freight", { type: da.type, id: da.id }).then((res) => {
|
|
|
- if (res.code === 0) this.freight = res.data.freight;
|
|
|
-
|
|
|
- let type = this.Data.type; // 商品类型(零售、批发 ...)
|
|
|
-
|
|
|
- // 计算待支付
|
|
|
- let p = type == 2 ? this.goodsInfo.trade_price : this.goodsInfo.cost_price; //商品单价
|
|
|
- let y = 0; //运费单价
|
|
|
- if(type == 2){
|
|
|
- if(this.Data.is_sell == 1) y = this.freight.service
|
|
|
- else if(this.prom_type != 1 && this.Data.is_sell != 1) y = this.freight.freight
|
|
|
- }
|
|
|
- else y = this.prom_type == 1 ? 0 : this.freight; // 运费单价 寄卖、自提 运费为0
|
|
|
- let ps = this.$h.Mul(p, this.Data.num); //商品总价
|
|
|
- let ys = this.$h.Mul(y, this.Data.num) //运费总价
|
|
|
- let a = this.$h.Add(ps, ys); //商品总价加运费
|
|
|
- this.originalPrice = ps; this.CommodityPrice = ps;
|
|
|
-
|
|
|
- let um = 0; //数智生活余额
|
|
|
- if(this.isAct) um = this.local_uinfo.property; //数智生活余额
|
|
|
- let userBalance = this.$h.Add(this.userinfo.user_money, um); //用户总余额(数智生活余额+云宝)
|
|
|
-
|
|
|
- let b = this.$h.Sub(a, userBalance); //待支付金额
|
|
|
- let b1 = this.$h.Sub(ps, userBalance); //待支付金额 - 零售&批发&云宝货易 运费必须现金支付
|
|
|
-
|
|
|
- if (type == 4) {
|
|
|
- if(this.isAct){
|
|
|
- let up = this.local_uinfo.integral; //数智生活消费金
|
|
|
- let goldnum = this.$h.Mul(this.goodsInfo.consume, this.Data.num); //商品消费金 可抵金额
|
|
|
- this.goldNum = up > goldnum ? goldnum : up; //可抵金额,消费金不够及余额多少抵多少
|
|
|
- let sp = this.$h.Sub(ps, this.goldNum); //抵扣后价格
|
|
|
- this.CommodityPrice = sp;
|
|
|
- let b2 = this.$h.Sub(sp, um); //消费金电商 可以使用数智生活佣金支付
|
|
|
- this.obligation = b2 > 0 ? b2 : 0;
|
|
|
- }
|
|
|
- else this.obligation = a;
|
|
|
- }
|
|
|
- else if (["5", "6"].includes(type)) this.obligation = a;
|
|
|
- else if (["1", "2", "3"].includes(type)) this.obligation = b1 > 0 ? this.$h.Add(b1, ys) : ys;
|
|
|
- else this.obligation = b > 0 ? b : 0;
|
|
|
- });
|
|
|
+ if(da.type==1)this.calculatePrice(1,this.Data.num);
|
|
|
+ else{
|
|
|
+ post("v1/goods/freight", { type: da.type, id: da.id }).then((res) => {
|
|
|
+ if (res.code === 0) this.freight = res.data.freight;
|
|
|
+ this.calculatePrice(this.Data.type,this.Data.num);
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
+ calculatePrice(type,num){
|
|
|
+ setTimeout(() => {
|
|
|
+ // 计算待支付
|
|
|
+ let p = this.goodsInfo.cost_price; //商品单价
|
|
|
+ let y = (this.prom_type == 1 || this.Data.is_sell == 1 || type == 1) ? 0 : this.freight; // 运费单价 寄卖、自提 运费为0
|
|
|
+ let ps = this.$h.Mul(p, num); //商品总价
|
|
|
+ let ys = this.$h.Mul(y, num); //运费总价
|
|
|
+ let a = this.$h.Add(ps, ys); //商品总价加运费
|
|
|
+ this.originalPrice = ps; this.CommodityPrice = ps; this.amountTotal = ps;
|
|
|
+ let wy = this.$h.Mul(this.goodsInfo.service, num*2); //寄卖服务费
|
|
|
+ if (type == 1) {
|
|
|
+ let wp = this.$h.Mul(this.goodsInfo.trade_price, num*2);
|
|
|
+ let wpt = this.$h.Add(wp,wy)
|
|
|
+ this.wholesalePriceTotal = wpt;
|
|
|
+ this.amountTotal = this.$h.Add(wpt,this.amountTotal)
|
|
|
+ ps = this.$h.Add(ps, wp);
|
|
|
+ }
|
|
|
+
|
|
|
+ let um = 0; //数智生活余额
|
|
|
+ if (this.isAct) um = this.localInfo.property; //数智生活余额
|
|
|
+ let userBalance = this.$h.Add(this.userinfo.user_money, um); //用户总余额(数智生活余额+云宝)
|
|
|
+
|
|
|
+ let b = this.$h.Sub(a, userBalance); //待支付金额
|
|
|
+ let b1 = this.$h.Sub(ps, userBalance); //待支付金额 - 零售&批发&云宝货易 运费必须现金支付
|
|
|
+
|
|
|
+ let obligation = 0;
|
|
|
+ if (type == 1) {
|
|
|
+ b1 = this.$h.Sub(ps, this.userinfo.user_money); //用云宝计算后 待支付价格
|
|
|
+ let sp = this.$h.Sub(wy,um); //寄卖服务费只能用数智生活余额支付或微信支付
|
|
|
+ console.log("sp",sp);
|
|
|
+ obligation = b1 > 0 ? b1 : 0;
|
|
|
+ obligation = this.$h.Add(obligation,sp > 0 ? sp : 0);
|
|
|
+ }
|
|
|
+ else if (type == 4) {
|
|
|
+ if (this.isAct) {
|
|
|
+ let up = this.localInfo.integral; //数智生活消费金
|
|
|
+ let goldnum = this.$h.Mul(this.goodsInfo.consume, num); //商品消费金 可抵金额
|
|
|
+ this.goldNum = up > goldnum ? goldnum : up; //可抵金额,消费金不够及余额多少抵多少
|
|
|
+ let sp = this.$h.Sub(ps, this.goldNum); //抵扣后价格
|
|
|
+ this.CommodityPrice = sp; this.amountTotal = sp;
|
|
|
+ let b2 = this.$h.Sub(sp, um); //消费金电商 可以使用数智生活佣金支付
|
|
|
+ obligation = b2 > 0 ? b2 : 0;
|
|
|
+ } else obligation = a;
|
|
|
+ }
|
|
|
+ else if (["5", "6"].includes(type)) obligation = a;
|
|
|
+ else if (["3"].includes(type)) obligation = b1 > 0 ? this.$h.Add(b1, ys) : ys;
|
|
|
+ else obligation = b > 0 ? b : 0;
|
|
|
+ this.obligation = obligation;
|
|
|
+ }, 100);
|
|
|
+ },
|
|
|
// 获取用户地址
|
|
|
async loadAddress() {
|
|
|
let res = await post("v1/user/addressList");
|
|
|
- if (res.code === 0) {
|
|
|
- let da = res.data.data;
|
|
|
- if (da.length) {
|
|
|
- for (const i of da) {
|
|
|
- if (i.status == 1) {
|
|
|
- this.DefaultAddress = i;
|
|
|
- break;
|
|
|
- } else this.DefaultAddress = da[0];
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ if (res.code === 0) {
|
|
|
+ let da = res.data.data;
|
|
|
+ if (da.length) {
|
|
|
+ for (const i of da) {
|
|
|
+ if (i.status == 1) {
|
|
|
+ this.DefaultAddress = i;
|
|
|
+ break;
|
|
|
+ } else this.DefaultAddress = da[0];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
},
|
|
|
//获取微信的收货地址
|
|
|
getwexinAddress() {
|
|
|
@@ -391,7 +416,7 @@ export default {
|
|
|
this.userinfo = await uni.userfun();
|
|
|
},
|
|
|
async getLU() {
|
|
|
- this.local_uinfo = await uni.Luserfun()
|
|
|
+ this.localInfo = await uni.Luserfun()
|
|
|
},
|
|
|
},
|
|
|
};
|
|
|
@@ -403,7 +428,7 @@ page {
|
|
|
}
|
|
|
|
|
|
.container {
|
|
|
- padding: 20rpx;
|
|
|
+ padding: 20rpx 20rpx 150rpx;
|
|
|
box-sizing: border-box;
|
|
|
}
|
|
|
|
|
|
@@ -585,6 +610,7 @@ page {
|
|
|
.p_color {
|
|
|
color: #ff6d44;
|
|
|
}
|
|
|
+
|
|
|
.g_color {
|
|
|
color: #18bb88;
|
|
|
}
|
|
|
@@ -664,4 +690,18 @@ page {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+.msginfo{
|
|
|
+ font-size: 24rpx;
|
|
|
+ color: #999;
|
|
|
+ margin-top: 30rpx;
|
|
|
+ .title {
|
|
|
+ color: #666;
|
|
|
+ font-size: 26rpx;
|
|
|
+ height: 26rpx;
|
|
|
+ line-height: 26rpx;
|
|
|
+ // padding-left: 12rpx;
|
|
|
+ // border-left: 6rpx solid #00b76c;
|
|
|
+ margin-bottom: 16rpx;
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|