This commit is contained in:
2025-03-07 10:43:12 +08:00
parent 0020a80506
commit eb42140cae
9 changed files with 2784 additions and 2062 deletions

View File

@@ -24,7 +24,7 @@
"type" : "uni-app:app-ios"
},
{
"playground" : "custom",
"playground" : "standard",
"type" : "uni-app:app-android"
},
{

View File

@@ -136,9 +136,16 @@
>
</view>
<view
style="color: #c0c4cc; font-size: 26rpx; font-weight: 700"
style="color: #e97512; font-size: 26rpx; font-weight: 700"
>
×{{ item.quantity ? item.quantity : "" }}</view
<view style="text-align: right;font-size: 30rpx;margin-bottom: 10rpx;">
¥{{ item.price }}
</view>
<view style="text-align: right;color: #333;">
×{{ item.quantity ? item.quantity : "" }}
</view>
</view
>
</view>
<!-- <view class="btns flexbox" style="margin-top: 10rpx">
@@ -241,10 +248,46 @@
</span>
<span>¥</span>{{ orderContet.shippingMoney }}
</view>
<view
class="orderReal"
v-if="
orderContet.orderType == 'order' &&
orderContet.districtMoney &&
orderContet.districtMoney > 0
"
>
<span style="color: #666; margin-right: 10rpx; float: left">
活动立减:
</span>
<span style="color: #fa2d12"
>- ¥{{ orderContet.districtMoney }}</span
>
</view>
<view
class="orderReal"
v-if="
orderContet.orderType == 'order' &&
orderContet.vipDiscountAmount &&
orderContet.vipDiscountAmount > 0
"
>
<span style="color: #666; margin-right: 10rpx; float: left">
<span
style="color: #f94f04; font-weight: bold; margin-right: 2px"
>VIP</span
>
专享立减:
</span>
<span style="color: #fa2d12"
>- ¥{{ orderContet.vipDiscountAmount }}</span
>
</view>
<view
class="orderReal"
v-if="orderContet.couponId && orderContet.couponId != null"
>
<span style="color: #666; margin-right: 10rpx; float: left"
>优惠券 :
</span>

View File

@@ -1,6 +1,15 @@
<template>
<view class="container commonPageBox commonDetailPage" style="height: auto !important;padding-bottom: 0 !important;">
<u-popup :show="show" v-if="show" mode="bottom" @close="close" class="popup_box">
<view
class="container commonPageBox commonDetailPage"
style="height: auto !important; padding-bottom: 0 !important"
>
<u-popup
:show="show"
v-if="show"
mode="bottom"
@close="close"
class="popup_box"
>
<view class="popup_top">
<!-- @click="previewImage(selectGoodsData.productImages)" -->
<view class="product_image">
@@ -15,7 +24,30 @@
<view :class="`common_radius_box goods_box popup_content`">
<view class="title title_box"
><text class="title_price">{{ selectGoodsData.activityPrice?selectGoodsData.activityPrice:selectGoodsData.price }}</text
><text class="title_price"
>
<text v-if="selectGoodsData.isVipPrice==1&&selectGoodsData.vipPrice!=0&&selectGoodsData.vipPrice!=null">
<text style="color: #e97512;font-weight: bold;">{{(selectGoodsData.vipPrice).toFixed(2)}}</text>
<text style="color: #fa2d12;font-size: 12px;margin-left: 4px;">VIP到手价</text>
<!-- <text style="color: #8a8a8a;font-size: 10px;margin-left: 4px;font-weight: bold;text-decoration: line-through;">{{(selectGoodsData.price).toFixed(2)}}</text> -->
</text>
<text
v-else-if="selectGoodsData.activityPrice && selectGoodsData.activityPrice > 0">
<text style="color: #e97512;font-weight: bold;">{{(selectGoodsData.activityPrice).toFixed(2)}}</text>
<text style="color: #613804;font-size: 12px;margin-left: 4px;">活动价</text>
<!-- <text style="color: #8a8a8a;font-size: 10px;margin-left: 4px;font-weight: bold;text-decoration: line-through;">{{(selectGoodsData.price).toFixed(2)}}</text> -->
</text>
<text v-else style="color: #e97512;font-weight: bold;"> {{Number(selectGoodsData.price).toFixed(2)}}</text>
</text
>
<u-icon
name="close"
@@ -44,13 +76,16 @@
<view
class="related_courses_name"
:class="`goods_item ${
!isFudu && selectGoodsData &&
selectGoodsData.productId == slotProps.row.productId || isFudu && selectGoodsData.productName == slotProps.row.productName
(!isFudu &&
selectGoodsData &&
selectGoodsData.productId == slotProps.row.productId) ||
(isFudu &&
selectGoodsData.productName == slotProps.row.productName)
? 'isSelectGoods color_shandow'
: ''
}`"
>
<view class="image_box" style="margin-right: 10rpx; ">
<view class="image_box" style="margin-right: 10rpx">
<image
:src="slotProps.row.productImages"
mode="aspectFit"
@@ -58,17 +93,93 @@
></image>
</view>
<view :class="`goods_info flex_box just`" style="justify-content: space-between;">
<view :class="`goods_info just`" style="">
<view class="name">{{ slotProps.row.productName }}</view>
<view class="flex_box">
<text style="color: #999; text-decoration: line-through; margin-right: 20rpx;"
<view class="flex_box" style="align-items: center;">
<!-- <text style="color: #999; text-decoration: line-through; margin-right: 20rpx;"
v-if="slotProps.row.activityPrice > 0 && slotProps.row.activityPrice < slotProps.row.price" >{{slotProps.row.price}}</text>
<view class="price" style="color: #258feb"
>{{ slotProps.row.activityPrice?slotProps.row.activityPrice:slotProps.row.price }}</view
></view
> -->
<text
class="price"
v-if="
slotProps.row.isVipPrice == 1 &&
slotProps.row.vipPrice != 0 &&
slotProps.row.vipPrice != null
"
>
<text
style="color: #e97512; font-size: 12px; font-weight: bold"
>¥{{ slotProps.row.vipPrice.toFixed(2) }}</text
>
<!-- <text style="color: #fa2d12; font-size: 10px; margin-left: 4px"
>VIP到手价</text
> -->
<text
style="
color: #8a8a8a;
font-size: 10px;
margin-left: 4px;
font-weight: bold;
text-decoration: line-through;
"
>¥{{ Number(slotProps.row.price).toFixed(2) }}</text
>
</text>
<text
v-else-if="
slotProps.row.activityPrice &&
slotProps.row.activityPrice > 0
"
class="price"
>
<text
style="color: #e97512; font-size: 12px; font-weight: bold"
>¥{{ slotProps.row.activityPrice.toFixed(2) }}</text
>
<!-- <text style="color: #613804; font-size: 10px; margin-left: 4px"
>活动价</text
> -->
<text
style="
color: #8a8a8a;
font-size: 10px;
margin-left: 4px;
font-weight: bold;
text-decoration: line-through;
"
>¥{{ Number(slotProps.row.price).toFixed(2) }}</text
>
</text>
<text v-else class="price"
>¥{{ Number(slotProps.row.price).toFixed(2) }}</text
>
<text
v-if="
slotProps.row.isVipPrice == 1 &&
slotProps.row.vipPrice != 0 &&
slotProps.row.vipPrice != null
"
style="
z-index: 10;
margin-left: 10rpx;
font-size: 20rpx;
color: #f94f04;
font-weight: bold;
"
>VIP优惠</text
>
</view>
</view>
</view>
<!-- <text v-if="slotProps.row.conditions!='03'">【试听】</text> -->
@@ -166,7 +277,7 @@ export default {
</script>
<style lang="scss" scoped>
@import '@/style/mixin.scss';
@import "@/style/mixin.scss";
.goods_item {
overflow: hidden;
display: flex;
@@ -199,9 +310,9 @@ export default {
// padding: 10rpx 20rpx;
box-sizing: border-box;
// height: 100rpx;
display: flex;
align-items: center;
justify-content: space-between;
// display: flex;
// align-items: center;
// justify-content: space-between;
float: left;
.name {
font-size: 26rpx;

View File

@@ -273,17 +273,92 @@
<view class="list supermarketBox">
<scroll-view class="scroll-view_H" scroll-x="true">
<view class="item" v-for="(item, index) in tjProList" :key="index" @click="goToGoodsList(item)">
<view class="imgcontainer">
<view class="imgcontainer" style="position: relative;">
<view v-if="item.isVipPrice==1&&item.vipPrice!=0&&item.vipPrice!=null"
style="z-index:10;position: absolute;top: 10rpx;left: 10rpx;text-align: center;font-size: 22rpx;background-color: #f94f04;color: #fff;font-weight: bold;border-radius:4px;width: 120rpx; padding:4px;box-sizing: border-box;">
VIP优惠</view>
<image :src="item.productImages" mode="aspectFit"></image>
</view>
<view class="name">
{{ item.productName }}
</view>
<text
class="price"
v-if="
item.isVipPrice == 1 &&
item.vipPrice != 0 &&
item.vipPrice != null
"
>
<text
style="color: #e97512; font-size: 12px; font-weight: bold"
>¥{{ item.vipPrice.toFixed(2) }}</text
>
<!-- <text style="color: #fa2d12; font-size: 10px; margin-left: 4px"
>VIP到手价</text
> -->
<text
style="
color: #8a8a8a;
font-size: 10px;
margin-left: 4px;
font-weight: bold;
text-decoration: line-through;
"
>¥{{ Number(item.price) }}</text
>
</text>
<view class="price" v-if="item.activityPrice && item.activityPrice > 0">
<text
v-else-if="item.activityPrice && item.activityPrice > 0"
class="price"
>
<text
style="color: #e97512; font-size: 12px; font-weight: bold"
>¥{{ item.activityPrice }}</text
>
<!-- <text style="color: #613804; font-size: 10px; margin-left: 4px"
>活动价</text
> -->
<text
style="
color: #8a8a8a;
font-size: 10px;
margin-left: 4px;
font-weight: bold;
text-decoration: line-through;
"
>¥{{ Number(item.price)}}</text
>
</text>
<text v-else class="price" style="color: #e97512 !important;"
>¥{{ Number(item.price) }}</text
>
<!-- <text
v-if="
item.isVipPrice == 1 &&
item.vipPrice != 0 &&
item.vipPrice != null
"
style="
z-index: 10;
margin-left: 10rpx;
font-size: 20rpx;
color: #f94f04;
font-weight: bold;
"
>VIP优惠</text
> -->
<!-- <view class="price" v-if="item.activityPrice && item.activityPrice > 0">
¥{{ item.activityPrice }}
</view>
<view class="price" v-else> {{ item.price }} </view>
<view class="price" v-else> ¥{{ item.price }} </view> -->
</view>
</scroll-view>
</view>

View File

@@ -32,35 +32,76 @@
<view class="goods_box">
<view class="curriulum_title_box">
<view v-if="this.options.isMiaosha == 1" class="miaosha_box">
<view v-if="(curriculumData.isVipPrice == 1 &&
curriculumData.vipPrice != 0 &&
curriculumData.vipPrice != null)|| curriculumData.activityPrice &&
curriculumData.activityPrice > 0" class="miaosha_box">
<view class="price_box">
<view class="price_left">
<template
<view class="price_left" v-if="curriculumData">
<text
class="price"
v-if="
curriculumData.activityPrice &&
curriculumData.activityPrice > 0
curriculumData.isVipPrice == 1 &&
curriculumData.vipPrice != 0 &&
curriculumData.vipPrice != null
"
>
<text class="aui-text-danger price">
¥{{ curriculumData.activityPrice }}
<text
>¥{{ curriculumData.vipPrice.toFixed(2) }}</text
>
<!-- <text style="color: #fa2d12; font-size: 10px; margin-left: 4px"
>VIP到手价</text
> -->
<text
style="
color: #8a8a8a;
font-size: 14px;
margin-left: 4px;
font-weight: bold;
text-decoration: line-through;
"
>¥{{ Number(curriculumData.price).toFixed(2) }}</text
>
</text>
<text class="price original_price"
>原价:¥{{ curriculumData.price }}
</text>
</template>
<template v-else>
<text class="aui-text-danger price">
¥{{ curriculumData.price }}
</text>
</template>
<text
v-else-if="curriculumData.activityPrice && curriculumData.activityPrice > 0"
class="price"
>
<text
>¥{{ curriculumData.activityPrice.toFixed(2) }}</text
>
<!-- <text style="color: #613804; font-size: 10px; margin-left: 4px"
>活动价</text
> -->
<text
style="
color: #8a8a8a;
font-size: 14px;
margin-left: 4px;
font-weight: bold;
text-decoration: line-through;
"
>¥{{ Number(curriculumData.price).toFixed(2) }}</text
>
</text>
<text v-else-if="curriculumData&&curriculumData.price>0" class="price"
>¥{{ Number(curriculumData.price).toFixed(2) }}</text
>
<view class="price original_price sales_number"
>已售 {{ curriculumData.sumSales }}件
</view>
</view>
<view class="xianshimaiosha_box" >
<text class="xianshimaiosha">秒杀商品</text>
<text class="xianshimaiosha" v-if="curriculumData.isVipPrice == 1 &&
curriculumData.vipPrice != 0 &&
curriculumData.vipPrice != null">VIP优惠</text>
<text class="xianshimaiosha" v-else-if=" curriculumData.activityPrice &&
curriculumData.activityPrice > 0">活动立减</text>
</view>
</view>
@@ -68,6 +109,7 @@
>{{ curriculumData.productName }}
</view>
</view>
<view
v-else
class="normal_box"
@@ -87,9 +129,9 @@
>原价:¥{{ curriculumData.price }}
</text>
</template>
<template v-else>
<template v-else-if="curriculumData.price">
<text class="aui-text-danger price">
¥{{ curriculumData.price }}
¥{{ Number(curriculumData.price).toFixed(2) }}
</text>
</template>
<text

View File

@@ -42,7 +42,28 @@
<view class="order_top common_radius_box color_shandow goods_box">
<view
class="curriulum_title_box goods_item"
style="position: relative"
v-for="(v, i) in goodsDataList"
>
<span
v-if="v.isVipPrice == 1 && v.vipPrice != 0 && v.vipPrice != null"
style="
position: absolute;
z-index: 10;
top: 4px;
left: 0px;
margin-right: 10px;
text-align: center;
font-size: 18rpx;
background-color: #f94f04;
color: #fff;
font-weight: bold;
border-radius: 4px;
width: 80rpx;
padding: 2px 4px;
box-sizing: border-box;
"
>VIP优惠</span
>
<image
v-if="v.productImages && v.productImages != ''"
@@ -58,9 +79,12 @@
@click="goDetail(item.productId)"
></image>
<view class="normal_box">
<view class="normal_box_top" style="justify-content: space-between;position: relative;">
<view class="curriulum_title">{{ v.productName }} </view>
<view
class="normal_box_top"
style="justify-content: space-between; position: relative"
>
<view class="curriulum_title">{{ v.productName }} </view>
<!-- <view
style="
width: 120rpx !important;
text-align: right;
@@ -75,8 +99,8 @@
: v.price
}}
</view>
</view>
<view
</view> -->
<!-- <view
v-if="v.activityPrice > 0 && v.activityPrice < v.price"
style="
position: absolute;
@@ -86,9 +110,54 @@
text-decoration: line-through;
font-size: 24rpx;
"
>原价{{ v.price }}</view>
>原价{{ v.price }}</view> -->
</view>
<view>
<text
v-if="
v.isVipPrice == 1 && v.vipPrice != 0 && v.vipPrice != null
"
>
<text style="color: #e97512; font-size: 12px; font-weight: bold"
>¥{{ v.vipPrice.toFixed(2) }}</text
>
<text style="color: #fa2d12; font-size: 10px; margin-left: 4px"
>VIP到手价</text
>
<text
style="
color: #8a8a8a;
font-size: 10px;
margin-left: 4px;
font-weight: bold;
text-decoration: line-through;
"
>¥{{ Number(v.price).toFixed(2) }}</text
>
</text>
<text v-else-if="v.activityPrice && v.activityPrice > 0">
<text style="color: #e97512; font-size: 12px; font-weight: bold"
>¥{{ v.activityPrice.toFixed(2) }}</text
>
<text style="color: #613804; font-size: 10px; margin-left: 4px"
>活动价</text
>
<text
style="
color: #8a8a8a;
font-size: 10px;
margin-left: 4px;
font-weight: bold;
text-decoration: line-through;
"
>¥{{ Number(v.price).toFixed(2) }}</text
>
</text>
<text v-else style="font-size: 12px"
>¥{{ Number(v.price).toFixed(2) }}</text
>
<u-number-box v-model="orderNumber" style="float: right">
<view slot="minus" class="minus">
<u-icon name="minus" size="12"></u-icon>
@@ -168,19 +237,30 @@
style="display: inline-block"
></u-icon>
<text> {{ v.text }}</text>
<text v-if="v.type == 6">
<span
style="color: #f94f04; font-weight: bold; margin-right: 2px"
>VIP</span
>
专享立减</text
>
<text v-else> {{ v.text }}</text>
<template v-if="v.type == 4">
<text style="color: #aaa; margin-left: 10rpx">
(全部积分{{ initData.user.jf }})</text>
(全部积分:{{ initData.user.jf }})</text
>
</template>
</view>
<view class="right">
<template v-if="v.type == 1"> {{ totalPrice }}</template>
<template v-if="v.type == 1">
¥{{ Number(totalPrice).toFixed(2) }}</template
>
<template v-if="v.type == 2">
<text>
¥{{
isShowAddress ? freightNum.toFixed(2) : Number(0).toFixed(2)
}}</text>
}}</text
>
</template>
<template v-if="v.type == 3">
<template v-if="!curCoupon.id">
@@ -239,6 +319,16 @@
<template v-if="v.type == 4">
<text style="color: #fe6035"> -¥{{ jfNumberShow }}</text>
</template>
<template v-if="v.type == 5">
<text style="color: #fa2d12"
>- ¥{{ districtAmount.toFixed(2) }}</text
>
</template>
<template v-if="v.type == 6">
<text style="color: #fa2d12"
>- ¥{{ vipPrice.toFixed(2) }}</text
>
</template>
</view>
</view>
@@ -297,12 +387,23 @@
</view>
<template v-if="isDefaultCurrency">
<radio v-if="i == 2" :value="v.value" color="#258feb"
:checked="selectPayIndex == i ? true : false" @click="radioChange(i)" size="10" />
<radio
v-if="i == 2"
:value="v.value"
color="#258feb"
:checked="selectPayIndex == i ? true : false"
@click="radioChange(i)"
size="10"
/>
</template>
<template v-else>
<radio :value="v.value" color="#258feb" :checked="selectPayIndex == i ? true : false"
@click="radioChange(i)" size="10" />
<radio
:value="v.value"
color="#258feb"
:checked="selectPayIndex == i ? true : false"
@click="radioChange(i)"
size="10"
/>
</template>
</view>
</view>
@@ -397,7 +498,9 @@
<text class="price"
>合计:
<text class="total">{{ actualPayment }}</text>
<text class="total"
>¥{{ Number(actualPayment).toFixed(2) }}</text
>
</text>
</view>
</template>
@@ -478,9 +581,12 @@ export default {
watch: {
isDefaultCurrency: {
immediate: true,
handler(newRoute) { console.log('this.isDefaultCurrency at line 482:', this.isDefaultCurrency)
handler(newRoute) {
console.log(
"this.isDefaultCurrency at line 482:",
this.isDefaultCurrency
);
if (this.isDefaultCurrency) {
if (platform == "ios") {
this.selectPayIndex = 0;
} else {
@@ -502,7 +608,10 @@ export default {
handler(newRoute) {
if (this.orderNumber >= 1) {
this.$nextTick(async () => {
await this.getActiveCouponList();
await this.getGoodsList();
// await this.getVipFei();
// await this.getDistrictAmount();
// await this.getActiveCouponList();
});
}
this.$forceUpdate();
@@ -511,6 +620,8 @@ export default {
},
data() {
return {
vipPrice: 0,
districtAmount: 0,
historyOrderInfo: undefined, //上一个订单的参数
isDefaultCurrency: false,
isShowAddress: false,
@@ -650,27 +761,12 @@ export default {
async onLoad(options) {
var that = this;
this.options = JSON.parse(options.data);
this.goodsDataList = this.options.goods;
var list = [...this.options.goods];
list = list.map((e) => e.goodsType);
this.haveCourse = list.some((ele) => ele === "05");
if (this.options.sourceType == "curriculum") {
this.goToInfo = {
url: "/pages/curriculum/order/index/index",
type: 2,
};
} else {
this.goToInfo = {
url: "/pages/bookShop/orderList",
type: 1,
};
}
that.initPrepareOrder();
// this.getGoodsList();
},
async onShow() {
this.curCouponId = undefined;
var that = this;
// this.getGoodsList();
await uni.$on("returnData", function (data) {
if (data) {
that.addressData = {
@@ -683,11 +779,10 @@ export default {
that.getUserAddress();
} else {
}
});
if(platform=='ios'){
if (platform == "ios") {
this.payList = [
{
text: "天医币",
@@ -695,11 +790,12 @@ export default {
type: 4,
value: "2",
},
]
];
this.selectPayIndex = 0;
this.payType=4
this.payType = 4;
} else {
this.payList= [{
this.payList = [
{
text: "支付宝",
imgUrl: require("@/static/icon/pay_1.png"),
type: 2,
@@ -717,15 +813,126 @@ export default {
type: 4,
value: "2",
},
]
];
this.selectPayIndex = 1;
this.payType=1
this.payType = 1;
}
},
computed: {
...mapState(["userInfo"]),
},
methods: {
getGoodsList() {
this.$http
.request({
// url: "book/buyOrder/calculateTransportPrice/",
url: "/book/buyOrder/getShopProductListByIds",
// url: "book/buyorder/getTransPrice/" + this.adressMoRen.areaidpath + "?" + dataToString,
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: {
productIds: this.options.goods.map((e) => e.productId).toString(),
},
header: {
//默认 无 说明:请求头
"Content-Type": "application/json",
},
})
.then(async (res) => {
this.goodsDataList = res.shopProductList;
console.log("this.goodsDataList at line 780:", this.goodsDataList);
await this.getVipFei();
await this.getDistrictAmount();
await this.getActiveCouponList();
var list = [...this.goodsDataList];
list = list.map((e) => e.goodsType);
this.haveCourse = list.some((ele) => ele === "05");
if (this.options.sourceType == "curriculum") {
this.goToInfo = {
url: "/pages/curriculum/order/index/index",
type: 2,
};
} else {
this.goToInfo = {
url: "/pages/bookShop/orderList",
type: 1,
};
}
this.initPrepareOrder();
});
},
async getVipFei() {
let key = [];
let dataToString = "";
// console.log(this.adressMoRen, '默认地址')
this.goodsDataList.forEach((item, index) => {
key.push({
productId: item.productId,
quantity: this.orderNumber,
});
// dataToString = dataToString.concat(item.productId+"="+item.productAmount+"&")
});
// console.log(key,'this.adressMoRen.areaidpath')
await $http
.request({
// url: "book/buyOrder/calculateTransportPrice/",
url: "/book/buyOrder/getVipDiscountAmount",
// url: "book/buyorder/getTransPrice/" + this.adressMoRen.areaidpath + "?" + dataToString,
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: {
productList: key,
},
header: {
//默认 无 说明:请求头
"Content-Type": "application/json",
},
})
.then(async(res) => {
if (res.code == 0) {
console.log("res.code at line 538:", res);
this.vipPrice = res.discountAmount;
// console.log('需要的运费', res.result)
await this.getTotalPrice();
}
});
},
async getDistrictAmount() {
let key = [];
let dataToString = "";
this.goodsDataList.forEach((item, index) => {
key.push({
productId: item.productId,
quantity: this.orderNumber,
});
// dataToString = dataToString.concat(item.productId+"="+item.productAmount+"&")
});
console.log(key, "this.adressMoRen.areaidpath");
await $http
.request({
// url: "book/buyOrder/calculateTransportPrice/",
url: "/book/buyOrder/getDistrictAmount",
// url: "book/buyorder/getTransPrice/" + this.adressMoRen.areaidpath + "?" + dataToString,
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: {
productList: key,
},
header: {
//默认 无 说明:请求头
"Content-Type": "application/json",
},
})
.then(async(res) => {
if (res.code == 0) {
console.log("res.code at line 538111111111111111:", res);
this.districtAmount = res.districtAmount;
// console.log('需要的运费', res.result)
await this.getTotalPrice();
}
});
},
closeCoupon() {
this.showCouponPup = false;
},
@@ -742,13 +949,13 @@ export default {
},
// 查询商品可用优惠券
async getActiveCouponList() {
if (this.goodsDataList.length <= 0) {
uni.showToast({
title: "商品参数错误,无法获取优惠券",
icon: "none",
});
return;
}
// if (this.goodsDataList.length <= 0) {
// uni.showToast({
// title: "商品参数错误,无法获取优惠券",
// icon: "none",
// });
// return;
// }
var list = [];
this.goodsDataList.forEach((e) => {
@@ -849,7 +1056,12 @@ export default {
couponAmount = this.curCoupon.couponEntity.couponAmount;
}
this.actualPayment =
this.totalPrice - couponAmount - this.jfNumber + this.freightNum;
this.totalPrice -
couponAmount -
this.jfNumber +
this.freightNum -
this.districtAmount -
this.vipPrice;
if (this.actualPayment == 0) {
this.isDefaultCurrency = true;
@@ -902,6 +1114,7 @@ export default {
imgUrl: "",
type: 2,
},
{
text: "优惠券",
imgUrl: "",
@@ -909,6 +1122,27 @@ export default {
},
];
}
if (
this.goodsDataList[0].activityPrice &&
this.goodsDataList[0].activityPrice > 0
) {
this.priceBreakdownList.push({
text: "活动立减",
imgUrl: "",
type: 5,
});
}
if (
this.goodsDataList[0].isVipPrice &&
this.goodsDataList[0].vipPrice &&
this.goodsDataList[0].vipPrice > 0
) {
this.priceBreakdownList.push({
text: "VIP专享立减",
imgUrl: "",
type: 6,
});
}
var data = {
uid: this.userInfo.id,
productList: this.goodsDataList.map((e) => {
@@ -932,8 +1166,10 @@ export default {
})
.then(async (res) => {
console.log('res at line 1168:', res)
if (res.code == 0) {
this.initData = res.data;
console.log(
"this.initData at line 初始化课程订单信息:",
this.initData
@@ -946,8 +1182,6 @@ export default {
type: 4,
});
}
}
this.$forceUpdate();
@@ -1056,10 +1290,10 @@ export default {
var that = this;
for (var i = this.goodsDataList.length - 1; i >= 0; i--) {
s +=
this.goodsDataList[i].activityPrice &&
this.goodsDataList[i].activityPrice > 0
? this.goodsDataList[i].activityPrice
: this.goodsDataList[i].price;
// this.goodsDataList[i].activityPrice &&
// this.goodsDataList[i].activityPrice > 0
// ? this.goodsDataList[i].activityPrice
this.goodsDataList[i].price;
}
that.totalPrice = s * this.orderNumber;
var couponAmount = 0;
@@ -1072,6 +1306,7 @@ export default {
couponAmount = 0;
}
if (!this.isShowAddress) {
if(that.initData.user&&that.initData.user.jf){
if (this.initData.user.jf >= that.totalPrice) {
this.jfNumber = that.totalPrice - couponAmount;
this.jfNumberMax = that.totalPrice - couponAmount;
@@ -1085,6 +1320,10 @@ export default {
this.jfNumberMax = this.initData.user.jf;
}
}
}else{
this.jfNumber=0
}
if (that.jfNumber == 0 || that.jfNumber == null) {
that.jfNumberShow = "0.00";
that.actualPayment = that.totalPrice - couponAmount;
@@ -1092,9 +1331,18 @@ export default {
that.jfNumberShow = that.jfNumber.toFixed(2);
that.actualPayment = that.totalPrice - that.jfNumber - couponAmount;
}
that.actualPayment = that.actualPayment + that.freightNum;
that.actualPayment =
that.actualPayment +
that.freightNum -
that.districtAmount -
that.vipPrice;
} else {
that.actualPayment = that.totalPrice + that.freightNum - couponAmount;
that.actualPayment =
that.totalPrice +
that.freightNum -
couponAmount -
that.districtAmount -
that.vipPrice;
}
if (this.actualPayment == 0 && !this.isShowAddress) {
this.isDefaultCurrency = true;
@@ -1188,6 +1436,8 @@ export default {
? this.curCoupon.couponEntity.couponName
: "", //优惠券名称
districtMoney: 0, //优惠金额
vipDiscountAmount: this.vipPrice, //折扣金额
districtMoney: this.districtAmount, //折扣金额
productList: this.goodsDataList.map((e) => {
return {
@@ -1705,7 +1955,7 @@ export default {
.curriulum_title {
// width: calc(100% - 80rpx);
width: calc(100% - 130rpx);
width: calc(100%);
font-weight: 500;
font-size: 30rpx;
// line-height: 40rpx;
@@ -1934,7 +2184,7 @@ export default {
.price {
.total {
font-size: 38rpx;
font-size: 30rpx;
color: red;
}
}

View File

@@ -4,23 +4,37 @@
<view class="" style="">
<view style="height: 60rpx"></view>
<view class="icon_hua">
<image src="../../static/homeLogo.png" mode="aspectFit" class="icon_hua_1"></image>
<image
src="../../static/homeLogo.png"
mode="aspectFit"
class="icon_hua_1"
></image>
</view>
<view class="hehan">
<image src="../../static/icon/hehan.png" mode="aspectFit" class="icon_hua_1"></image>
<image
src="../../static/icon/hehan.png"
mode="aspectFit"
class="icon_hua_1"
></image>
</view>
<view class="topSearch_box">
<image src="../../static/search.png" mode="aspectFit"
@click="onPageJump('/pages/peanut/searchFor')"></image>
<image
src="../../static/search.png"
mode="aspectFit"
@click="onPageJump('/pages/peanut/searchFor')"
></image>
</view>
</view>
</view>
<view class="fourBox nopadding" style="">
<view class="fourIcon flexbox noRadius" style="
<view
class="fourIcon flexbox noRadius"
style="
justify-content: space-around;
margin-bottom: 0;
box-shadow: none;
">
"
>
<div class="item flexbox" @click="onPageJump('/pages/course/outline')">
<image src="../../static/my_01.png" mode="aspectFit"></image>
<text>学习大纲</text>
@@ -29,7 +43,10 @@
<image src="../../static/my_02.png" mode="aspectFit"></image>
<text>我的课程</text>
</div>
<div class="item flexbox" @click="onPageJump('/pages/course/vipCourse')">
<div
class="item flexbox"
@click="onPageJump('/pages/course/vipCourse')"
>
<image src="../../static/my_06.png" mode="aspectFit"></image>
<text>超V专享</text>
</div>
@@ -37,28 +54,52 @@
<image src="../../static/my_03.png" mode="aspectFit"></image>
<text>太湖讲堂</text>
</div> -->
<div class="item flexbox" @click="onPageJump('/pages/medicaldes/medicaldes')">
<div
class="item flexbox"
@click="onPageJump('/pages/medicaldes/medicaldes')"
>
<image src="../../static/my_04.png" mode="aspectFit"></image>
<text>吴门医述</text>
</div>
</view>
</view>
<view class="newLeve2">
<view class="home_nar nomargin" style="padding: 0; background-color: #fff">
<view
class="home_nar nomargin"
style="padding: 0; background-color: #fff"
>
<view class="flexbox">
<view :class="['hn_cl_tit', currentIndex == index ? 'active' : '']" @click="curseClick(item,index)"
v-for="(item, index) in curseTagList" :key="index">
<view
:class="['hn_cl_tit', currentIndex == index ? 'active' : '']"
@click="curseClick(item, index)"
v-for="(item, index) in curseTagList"
:key="index"
>
<image :src="item.icon" mode="aspectFit"></image>
<text>{{ item.title }}</text>
</view>
</view>
</view>
<view class="fourBox" style="padding: 0; padding-bottom: 8rpx"
v-if="sbuMedicalTagsList && sbuMedicalTagsList.length > 0">
<view class="childrenBox fourIcon flexbox" style="justify-content: space-around">
<div class="item flexbox" @click="curseClickJump(item)" v-for="(item, index) in sbuMedicalTagsList"
:key="index">
<image :src="item.icon" mode="aspectFit" v-if="item.icon != '' && item.icon != null"></image>
<view
class="fourBox"
style="padding: 0; padding-bottom: 8rpx"
v-if="sbuMedicalTagsList && sbuMedicalTagsList.length > 0"
>
<view
class="childrenBox fourIcon flexbox"
style="justify-content: space-around"
>
<div
class="item flexbox"
@click="curseClickJump(item)"
v-for="(item, index) in sbuMedicalTagsList"
:key="index"
>
<image
:src="item.icon"
mode="aspectFit"
v-if="item.icon != '' && item.icon != null"
></image>
<text>{{ item.title }}</text>
</div>
</view>
@@ -68,11 +109,23 @@
<view class="flex_box flex_between align-items_box learnBox homeTestBox">
<text>考试进行中</text>
<view class="">
<uni-countdown @timeup="timeup" :font-size="20" :show-day="false" :hour="timeDif.hour"
:minute="timeDif.minutes" :second="timeDif.second" color="#fff" splitorColor="#fff" />
<uni-countdown
@timeup="timeup"
:font-size="20"
:show-day="false"
:hour="timeDif.hour"
:minute="timeDif.minutes"
:second="timeDif.second"
color="#fff"
splitorColor="#fff"
/>
</view>
<view class="">
<text class="small_btn retake border_radius_10" @click="continueTest(examId, classId)">继续考试</text>
<text
class="small_btn retake border_radius_10"
@click="continueTest(examId, classId)"
>继续考试</text
>
</view>
</view>
</view>
@@ -84,10 +137,18 @@
<text>观看记录</text>
</view>
<view class="learn flexbox">
<view class="item" v-for="(item, index) in learnList" :key="index"
@click="onPageJump('/pages/course/courseDetail', item.id)">
<view
class="item"
v-for="(item, index) in learnList"
:key="index"
@click="onPageJump('/pages/course/courseDetail', item.id)"
>
<view class="img" style="overflow: hidden">
<image v-if="item.image && item.image != ''" :src="item.image" mode="aspectFit"></image>
<image
v-if="item.image && item.image != ''"
:src="item.image"
mode="aspectFit"
></image>
<image v-else src="/static/nobg.jpg" mode="widthFix"></image>
</view>
<view class="txt555">
@@ -105,22 +166,41 @@
<image src="../../static/class.png" mode="aspectFit"></image>
<text>班级列表</text>
</view>
<view class="moreBtn" @click="onPageJump('/pages/miniClass/allLearningClassList')">
<view
class="moreBtn"
@click="onPageJump('/pages/miniClass/allLearningClassList')"
>
<text>更多班级</text>
</view>
</view>
<view class="classItemBox uni-margin-wrap">
<view class="uni-margin-wrap">
<swiper class="swiper" circular :indicator-dots="false" :autoplay="true" interval="3000"
duration="500">
<swiper
class="swiper"
circular
:indicator-dots="false"
:autoplay="true"
interval="3000"
duration="500"
>
<swiper-item v-for="(item, index) in classList" :key="index">
<view class="classItem flex_box"
@click="onPageJump('/pages/miniClass/classInfo', item.id)">
<view
class="classItem flex_box"
@click="onPageJump('/pages/miniClass/classInfo', item.id)"
>
<view class="img" style="overflow: hidden">
<image v-if="item.icon && item.icon != ''" :src="item.icon" mode="aspectFit">
<image
v-if="item.icon && item.icon != ''"
:src="item.icon"
mode="aspectFit"
>
</image>
<image v-else src="@/static/my_04.png" mode="widthFix"></image>
<image
v-else
src="@/static/my_04.png"
mode="widthFix"
></image>
</view>
<view class="textBox flex_box">
<view class="">
@@ -149,15 +229,22 @@
</view>
<!-- 健康超市 -->
<view class="supermarketBox" v-if="tjProList.length > 0">
<view class="hightLightTitleBox" @click="onPageJump('/pages/course/healthMarket', 2, '健康超市')">
<view
class="hightLightTitleBox"
@click="onPageJump('/pages/course/healthMarket', 2, '健康超市')"
>
<text>健康超市</text>
</view>
<view class="supermarket">
<view class="borderbb">
<view class="main">
<view class="flexbox">
<view class="item" v-for="(item, index) in tjProList" :key="index"
@click="goGoodsDetail(item, 0)">
<view
class="item"
v-for="(item, index) in tjProList"
:key="index"
@click="goGoodsDetail(item, 0)"
>
<view class="imgcontainer">
<image :src="item.productImages" mode="aspectFit"></image>
</view>
@@ -165,7 +252,10 @@
{{ item.productName }}
</view>
<view class="price" v-if="item.activityPrice && item.activityPrice > 0">
<view
class="price"
v-if="item.activityPrice && item.activityPrice > 0"
>
{{ item.activityPrice }}
</view>
<view class="price" v-else> {{ item.price }} </view>
@@ -189,7 +279,12 @@
<view class="super_block">
<scroll-view class="scroll-view" scroll-x="true" scroll-left="0">
<view class="super_product_list">
<view class="super_product_item" v-for="(item,index) in superList" :key="index" @click="goGoodsDetail(item, 0)">
<view
class="super_product_item"
v-for="(item, index) in superList"
:key="index"
@click="goGoodsDetail(item, 0)"
>
<image :src="item.productImages"></image>
<text>{{ item.productName }}</text>
</view>
@@ -209,26 +304,103 @@
<view class="ftitle">
<text>天天秒杀 时时返积分</text>
</view>
<scroll-view class="scroll-view_H" scroll-x="true">
<scroll-view
class="scroll-view_H"
scroll-x="true"
style="
display: flex;
align-items: center;
justify-content: space-between;
"
>
<!-- <view class=""> -->
<view class="item" v-for="(item, index) in seckillList" :key="index"
@click="goGoodsDetail(item, 1)">
<view class="imgcontainer">
<view
class="item"
v-for="(item, index) in seckillList"
:key="index"
@click="goGoodsDetail(item, 1)"
>
<view class="imgcontainer" style="position: relative">
<view v-if="item.isVipPrice==1&&item.vipPrice!=0&&item.vipPrice!=null"
style="z-index: 10;position: absolute;top: 10rpx;left: 10px;text-align: center;font-size: 22rpx;background-color: #f94f04;color: #fff;font-weight: bold;border-radius:4px;width: 120rpx; padding:4rpx;box-sizing: border-box;">
VIP优惠</view>
<image :src="item.productImages" mode="aspectFit"></image>
</view>
<view class="name">
{{ item.productName }}
</view>
<view>
<!-- v-if="
item.isVipPrice == 1 &&
item.vipPrice != 0 &&
item.vipPrice != null
" -->
<text
class="price"
v-if="
item.isVipPrice == 1 &&
item.vipPrice != 0 &&
item.vipPrice != null
"
>
<text
style="color: #e97512; font-size: 12px; font-weight: bold"
>¥{{ item.vipPrice }}</text
>
<view class="price"> {{ item.price }} </view>
<view class="fall">
<text class="mprice">{{
<text
style="
color: #8a8a8a;
font-size: 10px;
margin-left: 4px;
font-weight: bold;
text-decoration: line-through;
"
>¥{{ Number(item.price) }}</text
>
</text>
<text
v-else-if="item.activityPrice && item.activityPrice > 0"
class="price"
>
<text
style="color: #e97512; font-size: 12px; font-weight: bold"
>¥{{ item.activityPrice }}</text
>
<text
style="
color: #8a8a8a;
font-size: 10px;
margin-left: 4px;
font-weight: bold;
text-decoration: line-through;
"
>¥{{ Number(item.price) }}</text
>
</text>
<text v-else class="price" style="color: #e97512; font-size: 12px; font-weight: bold"
>¥{{ Number(item.price) }}</text
>
<view>
</view>
</view>
<!-- <view class="fall">
<text class="mprice"
>¥{{
item.activityPrice && item.activityPrice > 0
? item.activityPrice
: item.price
}}</text>
<text class="cprice">直降<br />{{ item.price - item.activityPrice }}</text>
</view>
}}</text
>
</view> -->
</view>
<!-- </view> -->
@@ -244,9 +416,20 @@
<u-icon name="volume-fill" color="#2979ff" size="26"></u-icon>
</view>
<view class="newscoll">
<swiper class="swiper" interval="5000" circular autoplay vertical indicator-dots="false">
<swiper-item class="item" v-for="(item, index) in newsList" :key="index"
@click="newsClick(item)">
<swiper
class="swiper"
interval="5000"
circular
autoplay
vertical
indicator-dots="false"
>
<swiper-item
class="item"
v-for="(item, index) in newsList"
:key="index"
@click="newsClick(item)"
>
<view class="swiper-item">{{ item.title }}</view>
</swiper-item>
</swiper>
@@ -261,11 +444,20 @@
<text>精彩试听</text>
</view>
<view class="learn flexbox shiting">
<view class="item" v-for="(item, index) in tryListenList" :key="index" @click="
<view
class="item"
v-for="(item, index) in tryListenList"
:key="index"
@click="
onPageJump('/pages/course/courseDetail', item.id, item.title)
">
"
>
<view class="imgcontainer">
<image v-if="item.image == '' || !item.image" src="@/static/nobg.jpg" mode="aspectFit">
<image
v-if="item.image == '' || !item.image"
src="@/static/nobg.jpg"
mode="aspectFit"
>
</image>
<image v-else :src="item.image" mode="aspectFit"></image>
</view>
@@ -280,12 +472,19 @@
</view>
</view>
<view class="moreBox shiting">
<text @click="onPageJump('/pages/course/tryListen', 1, '精彩试听')">更多试听</text>
<text @click="onPageJump('/pages/course/tryListen', 1, '精彩试听')"
>更多试听</text
>
</view>
</view>
</view>
<view>
<u-back-top :scroll-top="scrollTop" bottom="60" :customStyle="bgiStyle" :iconStyle="iconStyle"></u-back-top>
<u-back-top
:scroll-top="scrollTop"
bottom="60"
:customStyle="bgiStyle"
:iconStyle="iconStyle"
></u-back-top>
</view>
<!-- 应对华为审核去掉app跳转 -->
<view class="appJump">
@@ -317,7 +516,10 @@
<!-- 公共组件-每个页面必须引入 -->
<public-module></public-module>
<z-navigation></z-navigation>
<common-advertisement ref="commonAdvertisement" :list="advertisementList"></common-advertisement>
<common-advertisement
ref="commonAdvertisement"
:list="advertisementList"
></common-advertisement>
<!-- <music-play :playList="myList"></music-play> -->
</view>
</template>
@@ -343,10 +545,7 @@
import updata from "@/uni_modules/uni-upgrade-center-app/utils/check-update";
import advertisement from "@/uni_modules/uni-upgrade-center-app/utils/check-update";
// #endif
import {
mapState,
mapMutations
} from "vuex";
import { mapState, mapMutations } from "vuex";
export default {
data() {
return {
@@ -398,7 +597,7 @@
currentIndex: null,
fixed: null,
//vip活动
superList: []
superList: [],
};
},
onPageScroll(e) {
@@ -414,12 +613,12 @@
},
onHide() {
this.page = 1;
uni.removeStorageSync('fixed');
uni.removeStorageSync("fixed");
},
//页面显示
async onShow() {
//存储的需要固定分类
this.fixed = uni.getStorageSync('fixed');
this.fixed = uni.getStorageSync("fixed");
//固定分类
if (this.fixed) {
@@ -566,7 +765,7 @@
if (res.code == 0 && res.classExamUser != null) {
obj = {
...res.classExamUser,
planEndTime: res.planEndTime
planEndTime: res.planEndTime,
};
} else {
obj = undefined;
@@ -672,7 +871,8 @@
res.labels[0].children.length > 0
) {
//数据按currentIndex同步显示
this.sbuMedicalTagsList = res.labels[this.currentIndex].children;
this.sbuMedicalTagsList =
res.labels[this.currentIndex].children;
} else {
this.sbuMedicalTagsList = [];
}
@@ -982,7 +1182,8 @@
//苹果
//因为ios查不到B款app在ios系统手机里面其实下载了也是检测不到所以就不检测了
//直接打开B款appB款app没有的话会进入回调报错我们在回调去打开下载链接
plus.runtime.launchApplication({
plus.runtime.launchApplication(
{
action: "${schemes}://",
},
function (e) {
@@ -1230,7 +1431,7 @@
}
.fall {
background-image: linear-gradient(-90deg, #e70503 0%, #e7a535 100%);
background-image: linear-gradient(90deg, #e70503 0%, #e7a535 100%);
border-radius: 10px;
color: #fff;
padding: 4rpx;
@@ -1246,20 +1447,6 @@
font-size: 28rpx;
font-weight: bold;
}
.cprice {
color: #333;
text-align: center;
padding: 28rpx 0;
width: 46%;
line-height: 24rpx;
position: absolute;
right: 0;
bottom: 0;
background: url(@/static/miaosha_bg.png) center no-repeat;
background-size: contain;
}
}
image {
@@ -1268,7 +1455,23 @@
}
}
}
.cprice {
color: #fff;
text-align: center;
padding: 60rpx 0 20rpx;
width: 58px;
height: 65px;
box-sizing: border-box;
font-weight: 500;
font-size: 10px;
z-index: 10;
line-height: 24rpx;
position: absolute;
left: 0;
top: -30px;
background: url(@/static/icon/zhijiang.png) center no-repeat;
background-size: 100% 100%;
}
.supermarketBox {
.hightLightTitleBox {
background: url("@/static/level_bg_green.png") center top no-repeat;
@@ -1883,10 +2086,8 @@
}
.super_block {
margin-top: 20rpx;
}
.scroll-view {
}
.super_product_list {
display: inline-flex;

BIN
static/icon/zhijiang.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.