This commit is contained in:
2025-04-18 17:55:28 +08:00
parent 5d17820abc
commit c738befac4
2 changed files with 2286 additions and 2164 deletions

View File

@@ -10,7 +10,7 @@
>
<u-icon
name="map-fill"
color="#258feb"
class="themeColor"
size="23"
style="display: inline-block; margin-right: 10rpx"
></u-icon>
@@ -246,7 +246,7 @@
v-if="v.type == 4 && initData.user.jf > 0"
>
<view class="jf_box">
<text style="color: #258feb; font-weight: 600"
<text class="themeColor" style="font-weight: 600"
>可用积分({{ jfNumberMax }})</text
>
<view class="jf_input">
@@ -285,7 +285,8 @@
<template v-if="v.type == 4">
<text> {{ v.text }}</text>
<text
style="color: #258feb; font-weight: 600; margin-left: 10rpx"
class="themeColor"
style="font-weight: 600; margin-left: 10rpx"
>
(余额{{
initData && initData.user ? initData.user.peanutCoin : 0
@@ -300,7 +301,7 @@
<radio
v-if="i == 2"
:value="v.value"
color="#258feb"
:color="themeColor"
:checked="selectPayIndex == i ? true : false"
@click="radioChange(i)"
size="10"
@@ -309,7 +310,7 @@
<template v-else>
<radio
:value="v.value"
color="#258feb"
:color="themeColor"
:checked="selectPayIndex == i ? true : false"
@click="radioChange(i)"
size="10"
@@ -332,7 +333,7 @@
<view class="linlanzhifu">
<u-icon
name="error-circle"
color="#258feb"
class="themeColor"
size="20"
style="display: inline-block; margin-right: 10rpx"
></u-icon>
@@ -363,16 +364,16 @@
支付时使用的信用卡需要带有Visa或MasterCard的标识请向邮箱
<text
@click="fnCopy('publisher@tmrjournals.com', '邮箱')"
class="aui-text-success"
style="text-decoration: underline; color: #258feb"
class="aui-text-success themeColor"
style="text-decoration: underline"
>
publisher@tmrjournals.com
</text>
点击复制发送支付请求内容需包含拟购买的课程名称支付金额APP注册姓名及手机号码或者加一路健康客服微信
<text
class="aui-text-success"
class="aui-text-success themeColor"
@click="fnCopy('yilujiankangkefu', '微信名')"
style="text-decoration: underline; color: #258feb"
style="text-decoration: underline"
>
yilujiankangkefu </text
>点击复制联系我们我们将在24小时内向您的邮箱或者微信发送支付链接根据提示即可完成信用卡支付无需兑换外币
@@ -424,6 +425,28 @@
</view>
</template>
</common-goods-nav>
<view
class="agree_wo"
style="background-color: #fff"
v-if="pageType == 'vip'"
>
<radio-group class="agree">
<view v-for="(item, index) in argee" :key="index">
<radio
class="agreeRadio"
:value="item.id"
:checked="item.id == radioValue"
color="#7dc1f0"
@click="radioCheck(index)"
></radio>
</view>
</radio-group>
<view
>* 我已阅读并同意<span class="highlight" @click="showXieyi"
>会员服务协议</span
></view
>
</view>
</view>
<u-popup :show="show" mode="right">
@@ -482,17 +505,26 @@
@confirmCoupon="confirmCoupon"
@close="closeCoupon"
></order-coupon>
<u-popup :show="xieyiShow" :round="10" @close="xieyiShow = false">
<view class="tanchu">
<view class="dp_title">{{ xieyi.title }}</view>
<view style="max-height: 1000rpx; overflow-y: scroll">
<view v-html="xieyi.content"></view>
</view>
</template>
</view>
</u-popup>
</view>
</template>
<script>
import orderCoupon from "@/components/orderCoupon.vue";
import courseDescription from "@/pages/component/commonComponents/list";
import { setPay, setPayAssign, setWXPay } from "@/config/utils";
import $http from "@/config/requestConfig.js";
const { platform } = uni.getSystemInfoSync();
import { mapState } from "vuex";
export default {
<script>
var themeColor='#258feb';
import orderCoupon from "@/components/orderCoupon.vue";
import courseDescription from "@/pages/component/commonComponents/list";
import { setPay, setPayAssign, setWXPay } from "@/config/utils";
import $http from "@/config/requestConfig.js";
const { platform } = uni.getSystemInfoSync();
import { mapState } from "vuex";
export default {
props: [
"options",
"pageType",
@@ -502,6 +534,7 @@ export default {
"priceKey",
"initData",
"urlList",
"isHideJf",
],
components: {
courseDescription, //课程说明
@@ -556,6 +589,15 @@ export default {
},
data() {
return {
appName: "wumen",
come: 2,
argee: [{ value: false, id: "1" }], // 同意权限
radioValue: "",
xieyi: {
title: "",
content: "",
},
xieyiShow: false,
vipPrice: 0,
districtAmount: 0,
historyOrderInfo: undefined, //上一个订单的参数
@@ -602,10 +644,11 @@ export default {
curriculumData: {},
curriculumInfo: {},
detailInfo: {},
themeColor:themeColor,
fdButtonStyle: {
width: "120rpx",
"border-color": "#258feb",
color: "#258feb",
"border-color": themeColor,
color: themeColor,
float: "right",
"margin-right": "20rpx",
"margin-left": "30rpx",
@@ -664,7 +707,7 @@ export default {
{
width: "200rpx",
text: "立即支付",
backgroundColor: "linear-gradient(90deg, #3C77BE 0%,#258feb 100%)",
backgroundColor: `linear-gradient(90deg, ${themeColor} 0%,${themeColor} 100%)`,
color: "#fff",
},
],
@@ -672,7 +715,7 @@ export default {
{
with: 200,
text: "确定",
backgroundColor: "linear-gradient(90deg, #3C77BE 0%,#258feb 100%)",
backgroundColor: `linear-gradient(90deg, ${themeColor} 0%,${themeColor} 100%)`,
color: "#fff",
},
],
@@ -744,6 +787,30 @@ export default {
...mapState(["userInfo"]),
},
methods: {
radioCheck(index) {
this.argee.forEach((item) => {
item.isCheck = false;
});
if (this.radioValue == this.argee[index].id) {
this.radioValue = null;
} else {
this.radioValue = this.argee[index].id;
}
},
//会员协议
async showXieyi() {
var data = await this.$commonJS.getAgreement(107);
if (data.content) {
data.content = data.content.replace(
/<h5>/g,
'<view style="font-weight: bold;font-size: 32rpx;margin-top: 20rpx;margin-bottom: 20rpx;">'
);
data.content = data.content.replace(/<\/h5>/g, "</view>");
}
this.xieyi = data;
this.xieyiShow = true;
},
async getGoodsList() {
//获取商品信息
// await this.getGoodsDataInfo();
@@ -762,7 +829,7 @@ export default {
this.haveCourse = list.some((ele) => ele === "05");
if (this.options.sourceType == "curriculum") {
this.goToInfo = {
url: "/pages/curriculum/order/index/index",
url: "/pages/course/myCourse",
type: 2,
};
} else {
@@ -1069,7 +1136,7 @@ export default {
}
this.isShowAddress = !this.isHideAddress;
if (!this.isShowAddress) {
if (!this.isShowAddress&&this.initData.user.jf>0) {
this.priceBreakdownList.push({
text: "积分",
imgUrl: require("@/static/icon/jifen.png"),
@@ -1268,6 +1335,16 @@ export default {
}
},
async goBuyJie() {
if (this.pageType == "vip") {
if (this.radioValue != "1") {
uni.showToast({
title: "请勾选 已阅读会员服务协议",
icon: "none",
});
return false;
}
}
if (this.buyingFlag) {
uni.showToast({
title: "操作太频繁了,休息下吧",
@@ -1281,6 +1358,7 @@ export default {
setTimeout(() => {
this.nowClick = true;
}, 5000);
let xiaBiao = [];
let data = {};
@@ -1303,7 +1381,7 @@ export default {
remark: this.goodsDataList
.map((e) => e.productId + "," + e.productName)
.join(","), //productId,商品名
come: "2",
come: this.come,
};
} else if (this.pageType == "vip") {
data = {
@@ -1313,7 +1391,7 @@ export default {
shippingMoney: 0, //运费
jfDeduction: this.jfNumber,
vipBuyConfigId: this.goodsDataList[0].id,
come: 2, //订单来源0疯子读书1国学众妙之门2医学吴门医述
come: this.come, //订单来源0疯子读书1国学众妙之门2医学吴门医述
};
} else {
if (this.options.goods[0].goodsType != "05") {
@@ -1355,8 +1433,8 @@ export default {
orderType: "order", //订单类型
addressId:
this.options.goods[0].goodsType != "05" ? this.addressData.id : 0, // 地址ID
appName: "wumen",
come: "2",
appName: this.appName,
come: this.come,
};
var productList = [...data.productList];
var thisproduct = productList.map((item) => {
@@ -1749,13 +1827,13 @@ export default {
plus.key.hideSoftKeybord();
// #endif
},
};
</script>
};
</script>
<style lang="scss" scoped>
@import "@/style/mixin.scss";
<style lang="scss" scoped>
@import "@/style/mixin.scss";
.order_box {
.order_box {
padding: 20rpx;
.order_top {
@@ -1788,42 +1866,42 @@ export default {
}
}
}
}
}
.u-grid-list {
.u-grid-list {
// height: 40rpx;
}
}
.flexbox {
.flexbox {
display: flex;
}
}
.dataList {
.dataList {
height: 100%;
}
}
.titleList2 {
.titleList2 {
height: calc(100% - 150rpx);
}
}
.priceDetail {
.priceDetail {
height: calc(100% - 180rpx) !important;
padding: 0rpx 0;
box-sizing: border-box;
}
}
.componentPage {
.componentPage {
height: calc(100% - 90rpx) !important;
}
}
.dateReminder {
.dateReminder {
width: 100%;
font-size: 24rpx;
text-align: right;
line-height: 40rpx;
}
}
.fdButtonBox {
.fdButtonBox {
border: 1rpx solid $themeColor;
background-color: $themeColor;
color: #fff;
@@ -1839,14 +1917,14 @@ export default {
// margin-top: 20rpx;
// display: flex;
// align-items: center;
}
}
.commonDetailPage {
.commonDetailPage {
font-size: 28rpx;
padding-bottom: 150rpx !important;
}
}
.goods_box {
.goods_box {
background-color: #fff;
// margin-top: 20rpx;
// padding: 40rpx 30rpx;
@@ -1880,36 +1958,36 @@ export default {
box-sizing: border-box;
}
}
}
}
.dataList {
.dataList {
background-color: #fff !important;
padding: 0 30rpx 40rpx !important;
box-sizing: border-box;
}
}
/deep/.titleItem {
/deep/.titleItem {
// width: calc(100% - 120rpx) !important;
}
}
/deep/.scroll-view-item:nth-child(2n-1) {
/deep/.scroll-view-item:nth-child(2n-1) {
background-color: transparent !important;
}
}
.dataList {
.dataList {
height: auto !important;
}
}
.related_courses_box {
.related_courses_box {
background-color: #fff;
.small_class_teaching_content {
padding: 10rpx 20rpx;
box-sizing: border-box;
}
}
}
.related_courses_name {
.related_courses_name {
display: inline-block;
width: calc(100% - 150rpx) !important;
@@ -1917,9 +1995,9 @@ export default {
display: inline-block;
float: right;
}
}
}
.original_price {
.original_price {
font-size: 28rpx !important;
font-weight: 500;
color: #999 !important;
@@ -1927,9 +2005,9 @@ export default {
text-decoration: line-through;
float: left;
margin-top: 6rpx;
}
}
.price {
.price {
width: auto;
font-size: 30rpx;
font-weight: 600;
@@ -1937,29 +2015,29 @@ export default {
margin-right: 10rpx;
color: #333;
// font-family: PangMenZhengDaoBiaoTiTiMianFeiBan;
}
}
.price_box {
.price_box {
width: auto;
overflow: hidden;
margin-top: 10rpx;
}
}
.commonTags {
.commonTags {
margin-right: 20rpx;
margin-top: -5rpx !important;
}
}
.sales_number {
.sales_number {
text-decoration: none;
color: #b0b0b0;
font-weight: 500;
}
}
// .common_curriculum_list{
// .common_curriculum_list{
// }
/deep/.common_curriculum_list {
// }
/deep/.common_curriculum_list {
margin-top: 20rpx;
padding: 20rpx 20rpx 20rpx;
@@ -1993,14 +2071,14 @@ export default {
.content_item:nth-child(1) {
border-top: none !important;
}
}
}
/deep/.common_section {
/deep/.common_section {
padding: 0 !important;
padding-bottom: 20rpx !important;
}
}
.goods_detail_list_title {
.goods_detail_list_title {
display: block;
padding-top: 20rpx;
padding-bottom: 40rpx;
@@ -2032,13 +2110,13 @@ export default {
}
// justify-content: space-between;
}
}
.commonPageContentBox {
.commonPageContentBox {
height: auto !important;
}
}
.minus {
.minus {
width: 50rpx;
height: 50rpx;
border-width: 2rpx;
@@ -2056,15 +2134,15 @@ export default {
@include flex;
justify-content: center;
align-items: center;
}
}
.input {
.input {
padding: 0 10px;
height: 50rpx;
border: 1rpx solid #e6e6e6;
}
}
.plus {
.plus {
width: 50rpx;
height: 50rpx;
border-width: 2rpx;
@@ -2081,9 +2159,9 @@ export default {
justify-content: center;
align-items: center;
color: $themeColor;
}
}
.order_bottom_box {
.order_bottom_box {
position: absolute;
right: 20rpx;
@@ -2099,9 +2177,9 @@ export default {
color: red;
}
}
}
}
/deep/.goods_nav_box {
/deep/.goods_nav_box {
.left {
margin-top: -10rpx;
width: calc(100% - 220rpx);
@@ -2109,21 +2187,21 @@ export default {
position: relative;
// overflow: hidden;
}
}
}
.explain {
.explain {
word-wrap: break-word;
word-break: normal;
word-break: break-all; //会断词
// white-space: nowrap;
}
}
.order_bottom_box {
.order_bottom_box {
display: flex;
align-items: center;
}
}
.pay_box {
.pay_box {
.pay_item {
border-bottom: 1rpx solid #eeecec;
padding-top: 20rpx;
@@ -2180,14 +2258,14 @@ export default {
/deep/.pay_item:nth-last-child(1) {
border-bottom: none !important;
}
}
}
.linlanzhifu {
.linlanzhifu {
font-size: 28rpx;
line-height: 24rpx;
}
}
.address_box {
.address_box {
// padding: 20rpx;
display: flex;
align-items: center;
@@ -2243,22 +2321,24 @@ export default {
// position: absolute;
// right: 30rpx;
}
}
}
.rightArrow {
.rightArrow {
width: 40rpx;
height: 40rpx;
// position: absolute;
// right: 30rpx;
}
}
.orderModalShow {
.orderModalShow {
width: 100%;
max-height: 48vh;
padding-bottom: 120rpx;
}
}
.popup_box {
.popup_box {
padding: 20rpx;
box-sizing: border-box;
.curriulum_title_box {
.title {
text-align: center;
@@ -2267,18 +2347,18 @@ export default {
margin-bottom: 60rpx !important;
}
}
}
}
.hasRemark {
.hasRemark {
color: #333 !important;
font-size: 40rpx !important;
}
}
.bgGrey {
.bgGrey {
// background-color: #f5f5f5;
}
}
.minus {
.minus {
width: 22px;
height: 22px;
border-width: 1px;
@@ -2291,13 +2371,13 @@ export default {
@include flex;
justify-content: center;
align-items: center;
}
}
.input {
.input {
padding: 0 10px;
}
}
.plus {
.plus {
width: 22px;
height: 22px;
background-color: #ff0000;
@@ -2307,5 +2387,39 @@ export default {
/* #endif */
justify-content: center;
align-items: center;
}
</style>
}
.agree_wo {
display: flex;
align-items: center;
justify-content: flex-end;
color: #aaa;
line-height: 30rpx;
font-size: 28rpx;
padding: 10rpx 10rpx 20rpx 0;
}
.agreeRadio {
zoom: 0.8;
}
.agree {
width: auto !important;
}
.highlight {
color: $uni-color-primary;
}
.tanchu {
padding: 40rpx 30rpx 40rpx 30rpx;
position: relative;
.dp_title {
font-size: 32rpx;
margin-bottom: 50rpx;
color: #555;
text-align: center;
font-weight: bold;
}
}
.themeColor {
color: $themeColor;
}
</style>

View File

@@ -7,6 +7,7 @@
<common-order-submit
v-if="showOrder"
:options="options"
:urlList="urlList"
:initData="initData"
:priceKey="priceKey"
@@ -198,7 +199,7 @@ export default {
.request({
url: `${this.urlList.userInfo}`,
method: "POST",
data,
data:{},
header: {
"Content-Type": "application/json",
},
@@ -260,15 +261,18 @@ export default {
for (const item of data) {
// Check if vcbList exists and loop through each item in vcbList
if (item.vcbList) {
this.isHideJf=true
const vcbItem = item.vcbList.find((vcb) => vcb.id === id);
if (vcbItem) {
return vcbItem; // Return the matching item
return {...vcbItem,}; // Return the matching item
}
}
if (item.yanqiList) {
this.isHideJf=false
const vcbItem = item.yanqiList.find((vcb) => vcb.id === id);
if (vcbItem) {
return vcbItem; // Return the matching item
return {...vcbItem,}; // Return the matching item
}
}
}
@@ -291,6 +295,7 @@ export default {
this.goodsDataList = res.productList.filter(
(e) => this.options.goods[0].productName == e.productName
);
});
},
@@ -307,6 +312,9 @@ export default {
.then(async (res) => {
console.log("res at line 846:", res);
var data = await this.findById(this.options.goods[0].id, res.res);
if(this.isHideJf){
this.initData.user.jf=0;
}
console.log("data at line 200:", data);
this.goodsDataList = [
{