Files
soulspace/pages/goods/order.vue
2025-04-18 17:56:33 +08:00

1600 lines
40 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view class="commonPageBox commonDetailPage">
<z-nav-bar title="确认订单"></z-nav-bar>
<view class="contentBox commonPageContentBox order_box">
<view v-show="isShowAddress" class="order_top common_radius_box color_shandow goods_box address_box"
@click="goToAddress">
<u-icon name="map-fill" color="#7dc1f0" size="20"
style="display: inline-block; margin-right: 10rpx"></u-icon>
<view class="normal_box" v-if="addressData.consigneeName">
<view class="normal_box_top">
<view class="curriulum_title">{{ addressData.address }} </view>
<view class="user_info">
<text class="name"> {{ addressData.consigneeName }} </text>
<text class="tel"> {{ addressData.consigneePhone }} </text>
</view>
</view>
</view>
<view class="normal_box" v-else>
<view class="normal_box_top">
<view class="curriulum_title">请添加收货地址 </view>
</view>
</view>
<view class="right">
<image src="@/static/icon/icon_right.png" class="rightArrow" style=""></image>
</view>
</view>
<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">
<text class="goods_item_vip" v-if="v.isVipPrice==1&&v.vipPrice!=null&&v.vipPrice!=0">VIP优惠</text>
<image class="goods_item_img" :src="v.productImages" mode="aspectFit">
</image>
<view class="normal_box">
<view class="normal_box_top">
<view class="curriulum_title">{{ v.productName }} </view>
<view class="price_box">
<view class="vip_price" v-if="v.isVipPrice==1&&v.vipPrice!=null&&v.vipPrice!=0">
<text class="vip_price_jg">{{ v.vipPrice }}</text>
<text class="vip_price_text">VIP到手价</text>
<text class="vip_price_line">{{ v.price }}</text>
</view>
<text class="price" v-else-if="v.activityPrice&&v.activityPrice>0">
<text class="vip_price_jg">{{ v.activityPrice }}</text>
<text class="vip_price_text">活动价</text>
<text class="vip_price_line">{{ v.price }}</text>
</text>
<text v-else>{{ v.price }}</text>
<view>
x 1
</view>
</view>
</view>
</view>
</view>
<view class="pay_box" style="margin-top: 20rpx">
<view @click="openOrderModal(v)" class="curriulum_title_box goods_item pay_item"
v-for="(v, i) in orderInfoList">
<view class="top">
<view class="left">
<text> {{ v.text }}</text>
</view>
<view class="right" style="display: flex; align-items: center">
<text style="
float: left;
text-align: right;
color: #b0b0b0;
font-size: 28rpx;
display: inline-block;
width: 200rpx;
" :class="remark ? 'hidden1 hasRemark' : 'hidden1'">
{{ remark == "" ? v.placeholder : remark }}</text>
<image src="@/static/icon/icon_right.png" class="rightArrow" style=""></image>
</view>
</view>
</view>
</view>
</view>
<view class="order_top common_radius_box color_shandow goods_box pay_box">
<view class="title">价格明细</view>
<view class="curriulum_title_box goods_item pay_item" v-for="(v, i) in priceBreakdownList">
<view class="top">
<view class="left" style="display: flex; align-items: center;">
<image v-if="v.imgUrl" class="pay_item_img_icon" :src="v.imgUrl" mode="aspectFil"
:style="v.style">
</image>
<u-icon v-if="v.icon" name="map-fill" color="#018F89" size="20"
style="display: inline-block"></u-icon>
<template v-if="v.type == 3">
<text style="color: #aaa; margin-left: 10rpx">
(全部积分{{ initData.user.jf }})</text>
</template>
<template v-else-if="v.type == 5">
<text class="type_text_red">活动立减</text>
</template>
<template v-else-if="v.type == 6">
<text class="type_text_red">VIP专享立减</text>
</template>
<text v-else>{{ v.text }}</text>
</view>
<view class="right">
<template v-if="v.type == 1"> {{ totalPrice }}</template>
<template v-if="v.type == 2">
<text>
{{ isShowAddress ? freightNum.toFixed(2) : Number(0).toFixed(2) }}</text>
</template>
<template v-if="v.type == 3">
<text style="color: #fe6035"> -{{ jfNumberShow }}</text>
</template>
<template v-if="v.type == 5">
<text class="type_text_red">-{{districtAmount}}</text>
</template>
<template v-if="v.type == 6">
<text class="type_text_red">-{{vipPrice}}</text>
</template>
</view>
</view>
<view class="bottom jf_box" v-if="v.type == 3">
<view class="jf_box">
<text style="color: #7dc1f0; font-weight: 600">可用积分({{ jfNumberMax }})</text>
<view class="jf_input">
<u--input type="number" @input="handleChangejf" @clear="jfNumber = 0" :max="jfNumberMax"
v-model="jfNumber" placeholder="请输入积分" border="surround" clearable></u--input>
</view>
</view>
</view>
</view>
</view>
<view class="order_top common_radius_box color_shandow goods_box pay_box">
<view class="title">支付方式</view>
<view class="curriulum_title_box goods_item pay_item" v-for="(v, i) in payList">
<view :class="isDefaultCurrency && i != 2 ? 'bgGrey top' : 'top'">
<view class="left">
<image class="pay_item_img" :src="v.imgUrl" mode="aspectFil" :style="v.style">
</image>
<template v-if="v.type == 4">
<text> {{ v.text }}</text>
<text style="color: #7dc1f0; font-weight: 600; margin-left: 10rpx">
(余额{{
initData && initData.user ? initData.user.peanutCoin : 0
}})</text>
</template>
<text v-else> {{ v.text }}</text>
</view>
<template v-if="isDefaultCurrency">
<radio :value="v.value" color="#7dc1f0" v-if="i == 2"
:checked="selectPayIndex == i ? true : false" @click="radioChange(i)" size="10" />
</template>
<template v-else>
<radio :value="v.value" color="#7dc1f0" :checked="selectPayIndex == i ? true : false"
@click="radioChange(i)" size="10" />
</template>
</view>
</view>
<template v-if="selectPayIndex == 2 || $platform == 'ios'">
<view class="goods_detail_list_title bg_box_shandow color_shandow bg_color">
<view class="linlanzhifu" style="
width: 100%;
overflow: hidden;
justify-content: space-between;
">
<view class="linlanzhifu">
<u-icon name="error-circle" color="#7dc1f0" size="20"
style="display: inline-block; margin-right: 10rpx"></u-icon>
确保您的天医币足够支付
</view>
<text class="fdButtonBox aui-text-danger fdButtonBoxRed" style="float: right" @click="
onPageJump('/pages/wallet/recharge?source=order')
">立即充值</text>
</view>
<view class="other_info" style="margin-top: 12rpx">
<view class="explain" style="margin-bottom: 10rpx"> 说明 </view>
<view class="explain"> 1. 1天医币 = 1元人民币 </view>
<view class="explain">
2.若有疑问或意见请致电客服
<span style="font-size: 15px"><u @click="checkPermision">022-24142321</u></span>
</view>
<view class="explain">
3.非中国大陆用户可以信用卡支付简单快捷推荐使用
支付时使用的信用卡需要带有Visa或MasterCard的标识请向邮箱
<text @click="fnCopy('publisher@tmrjournals.com', '邮箱')" class="aui-text-success"
style="text-decoration: underline; color: #7dc1f0">
publisher@tmrjournals.com
</text>
点击复制发送支付请求内容需包含拟购买的课程名称支付金额APP注册姓名及手机号码或者加一路健康客服微信
<text class="aui-text-success" @click="fnCopy('yilujiankangkefu', '微信名')"
style="text-decoration: underline; color: #7dc1f0">
yilujiankangkefu </text>点击复制联系我们我们将在24小时内向您的邮箱或者微信发送支付链接根据提示即可完成信用卡支付无需兑换外币
</view>
</view>
</view>
</template>
</view>
<template>
<common-sticky label="title" :itemStyle="`width:${
cateList.length == 2 ? '50' : '33'
}%;padding-left: 15px; padding-right: 15px; height: 68rpx;`" :list="cateList"
:currentCateIndex="currentCateIndex" @handleselectCate="handleselectCate">
</common-sticky>
</template>
</view>
<view class="goods_nav_box">
<common-goods-nav :iconList="[]" :customButton="customButton" @submit="goBuyJie">
<!-- leftSlot -->
<template slot="leftSlot" slot-scope="slotProps">
<view class="price_box order_bottom_box">
<text class="price">合计:
<text class="total">
<template v-if="actualPayment>0">
{{ Number(actualPayment).toFixed(2) }}
</template>
<text style="margin: 0 4rpx;" v-if="actualPayment>0&&jfNumber>0">
+
</text>
<text v-if="jfNumber>0">{{ jfNumber }} 积分</text>
</text>
</text>
</view>
</template>
</common-goods-nav>
</view>
<u-popup :show="show" mode="right">
<common-address backState="3000" ref="commonAddress" @fresh="handleFresh"
@selectAddress="selectAddress"></common-address></u-popup>
<u-popup :show="orderModalShow" mode="bottom" :round="20">
<view class="orderModalShow popup_box">
<u-icon name="close" color="#333" size="18" @click="closeOrderModalShow" style="
display: inline-block;
position: absolute;
right: 20rpx;
top: 20rpx;
"></u-icon>
<view v-if="orderModalShowInfo.type == 'remark'">
<view class="order_top common_radius_box goods_box">
<view class="curriulum_title_box goods_item">
<view class="title">订单备注</view>
<u--textarea v-model="content" placeholder="选填:给商家留言" count class="textarea"></u--textarea>
</view>
</view>
</view>
<view class="goods_nav_box">
<uni-goods-nav :fill="true" :options="[]" :button-group="customButtonGroup1"
@click="onHandleClickBuy" @buttonClick="onHandleClickBuy" />
</view>
</view>
</u-popup>
</view>
</template>
<script>
import debounce from "@/common/debounce.js";
import {
setPay,
setPayAssign,
setWXPay
} from "@/config/utils";
import $http from "@/config/requestConfig.js";
import permission from "@/js_sdk/wa-permission/permission.js"
const { platform } = uni.getSystemInfoSync();
import {
mapState
} from "vuex";
import parse from "../../uni_modules/uview-ui/libs/config/props/parse";
export default {
watch: {
isDefaultCurrency: {
immediate: true,
handler(newRoute) {
if (this.isDefaultCurrency) {
if (platform == "ios") {
this.selectPayIndex = 0;
} else {
this.selectPayIndex = 0;
}
} else {
if (platform == "ios") {
this.selectPayIndex = 0;
} else {
this.selectPayIndex = 0;
}
}
this.payType = this.payList[this.selectPayIndex].type;
if (this.actualPayment == 0) {
var that = this;
this.payList.forEach((e, i) => {
if (e.type == 4) {
that.selectPayIndex = i;
that.payType = 4;
}
});
this.$forceUpdate();
}
this.$forceUpdate();
},
},
},
data() {
return {
isDefaultCurrency: false,
isShowAddress: false,
jfNumber: 0,
totalPrice: 0,
actualPayment: 0,
jfNumberShow: "",
jfNumberMax: 0,
goodsDataList: [],
orderModalShowInfo: {},
orderModalShow: false,
payType: 1,
freightNum: 0,
addressData: {
address: "",
consigneeName: "",
consigneePhone: "",
},
selectPayIndex: 1,
farePrice: 0,
payList: [],
priceBreakdownList: [],
orderInfoList: [{
text: "订单备注",
placeholder: "填写订单备注",
imgUrl: "",
type: "remark",
}, ],
number: 1,
detailInfo: {},
content: "",
remark: "",
iconList: [],
swiperList: [],
options: {},
relatedCoursesList: [], //相关课程
curriculumData: {},
curriculumInfo: {},
detailInfo: {},
fdButtonStyle: {
width: "120rpx",
"border-color": "#3AB3AE",
color: "#3AB3AE",
float: "right",
"margin-right": "20rpx",
"margin-left": "30rpx",
},
modalInfo: {},
currentCateIndex: 0,
show: false,
playData: {},
initData: {},
taiHuClassInfo: {},
searchValue: "",
cateList: [], // 一级分类标题1
twoCateList: [], // 二级分类标题
dataList: [], // 方剂标题
defaultAddressList: {},
allDataList: [], // 方剂标题
currentStatusIndex: 0, // 当前选中的一级分类
curTwoCateIndex: 0, // 当前选中的二级分类
searchList: [], // 搜索结果数组
showSearchList: false,
userMes: {}, // 用户信息
searchDisable: false, // 搜索不可用
limitShow: false,
limitTitle: "提示",
goToInfo: {},
limitContent: "",
scrollViewHeight: 0,
urlList: {
list: "app/phone.do?getCourseDetail_new",
initPrepareOrder: "common/buyOrder/initPrepareOrder",
buyOrder: "book/buyOrder/placeOrder",
curriculumInfo: "app/phone.do?getCourseInfo",
detailInfo: "app/phoneDoctor.do?getTaiHuClassInfo_new",
addressList: "common/userAddress/getUserAddress",
freightNum: "book/buyOrder/calculateTransportPrice", //运费
},
customButton: [{
width: "300rpx",
text: "立即支付",
backgroundColor: "linear-gradient(90deg, #294a97 0%, #7dc1f0 80%)",
color: "#fff",
}, ],
customButtonGroup1: [{
with: 200,
text: "确定",
backgroundColor: "linear-gradient(90deg, #294a97 0%, #7dc1f0 80%)",
color: "#fff",
}, ],
//立减金额
districtAmount: 0,
vipPrice: 0,
orderNumber: 1, //商品数量
};
},
async onLoad(options) {
var that = this;
var mynavData = uni.getStorageSync('mynavData');
this.options = mynavData;
if (this.options.sourceType == "curriculum") {
this.goToInfo = {
url: "/pages/curriculum/index/index",
type: 2,
};
} else {
this.goToInfo = {
url: "/pages/order/index",
type: 1,
};
}
that.getData();
},
async onShow() {
var that = this;
await uni.$on("returnData", function(data) {
if (data) {
that.addressData = {
...data,
address: `${data.province}${data.city}${data.county}${data.detailAddress}`,
consigneeName: data.consigneeName,
consigneePhone: data.consigneePhone,
};
that.$forceUpdate();
that.getUserAddress();
} else {
}
});
if (platform == "ios") {
that.payList = [
{
text: "天医币",
imgUrl: require("@/static/icon/pay_3.png"),
type: 4,
value: "2",
},
];
that.selectPayIndex = 0;
that.payType = 4;
} else {
that.payList = [
{
text: "支付宝",
imgUrl: require("@/static/icon/pay_1.png"),
type: 2,
value: "0",
},
{
text: "微信",
imgUrl: require("@/static/icon/pay_2.png"),
type: 1,
value: "1",
},
{
text: "天医币",
imgUrl: require("@/static/icon/pay_3.png"),
type: 4,
value: "2",
},
];
that.selectPayIndex = 1;
that.payType = 1;
}
},
computed: {
...mapState(["userInfo"]),
},
methods: {
//获取数据
async getData(){
this.$http.request({
url: 'book/buyOrder/getShopProductListByIds',
method: "POST",
data: {
productIds: this.options.goods[0].productId.toString()
},
header: {
"Content-Type": "application/json",
},
})
.then(async (res) => {
if (res.code == 0) {
this.goodsDataList = res.shopProductList;
//请求VIP还是活动的逻辑
if(this.goodsDataList[0].isVipPrice==1&&
this.goodsDataList[0].vipPrice!=null&&
this.goodsDataList[0].vipPrice!=0){
await this.getVipDiscountAmount();
}else if(this.goodsDataList[0].activityPrice&&
this.goodsDataList[0].activityPrice>0){
await this.getDistrictAmount();
}else{
await this.initPrepareOrder();
}
}
});
},
//VIP立减
async getVipDiscountAmount(){
let data = [];
this.goodsDataList.forEach((item, index) => {
data.push({
productId: item.productId,
quantity: this.orderNumber,
});
});
this.$http.request({
url: 'book/buyOrder/getVipDiscountAmount',
method: "POST",
data: {
productList: data
},
header: {
"Content-Type": "application/json",
},
})
.then(async (res) => {
if (res.code == 0) {
this.vipPrice = res.discountAmount;
await this.initPrepareOrder();
}
});
},
//活动立减
async getDistrictAmount(){
let data = [];
this.goodsDataList.forEach((item, index) => {
data.push({
productId: item.productId,
quantity: this.orderNumber,
});
});
this.$http.request({
url: 'book/buyOrder/getDistrictAmount',
method: "POST",
data: {
productList: data
},
header: {
"Content-Type": "application/json",
},
})
.then(async (res) => {
if (res.code == 0) {
this.districtAmount = res.districtAmount;
await this.initPrepareOrder();
}
});
},
handleChangejf(val) {
var value = val;
this.$nextTick(() => {
if (val == 0) {
this.jfNumber = 0;
this.jfNumberShow = "0.00";
} else {
if (value >= this.jfNumberMax) {
value = this.jfNumberMax;
this.$forceUpdate();
} else {}
this.jfNumber = Number(value);
this.jfNumberShow = this.jfNumber.toFixed(2);
}
this.actualPayment = this.totalPrice - this.jfNumber - this.vipPrice - this.districtAmount + this.freightNum;
// 如果实际支付金额为0设置支付方式为默认货币
if (this.actualPayment == 0) {
console.log("this.actualPayment at line 1097:", this.actualPayment);
this.isDefaultCurrency = true;
this.payList.forEach((e, i) => {
if (e.type == 4) {
this.selectPayIndex = i;
this.payType = 4;
}
});
this.$forceUpdate();
} else {
this.isDefaultCurrency = false;
}
this.$forceUpdate();
});
},
onHandleClickBuy() {
this.orderModalShow = false;
this.remark = this.content;
},
closeOrderModalShow() {
if (this.orderModalShowInfo.type == "remark") {
this.content = "";
}
this.orderModalShow = false;
},
onPageJump(url) {
uni.navigateTo({
url: url,
});
},
//获取订单初始数据
async initPrepareOrder() {
this.priceBreakdownList = [{
text: "商品总价",
imgUrl: "",
type: 1,
},
{
text: "运费",
imgUrl: "",
type: 2,
},
];
//如果是活动
if(this.goodsDataList[0].activityPrice&&this.goodsDataList[0].activityPrice>0&&!this.goodsDataList[0].vipPrice>0){
this.priceBreakdownList.push({
type: 5,
})
}
//如果是vip
if(this.goodsDataList[0].isVipPrice==1&&this.goodsDataList[0].vipPrice!=null&&this.goodsDataList[0].vipPrice!=0){
this.priceBreakdownList.push({
type: 6,
})
}
var data = {
uid: this.userInfo.id,
productList: this.goodsDataList.map((e) => {
return {
productId: this.goodsDataList[0].productId,
quantity: this.orderNumber,
};
}),
};
var that = this;
this.$http.request({
url: `${this.urlList.initPrepareOrder}`,
method: "POST",
data,
header: {
"Content-Type": "application/json",
},
})
.then(async (res) => {
if (res.code == 0) {
this.initData = res.data;
this.isShowAddress = res.data.is_course ? false : true;
if (!this.isShowAddress) {
this.priceBreakdownList.push({
text: "积分",
imgUrl: require("@/static/icon/jifen.png"),
type: 3,
});
}
if (this.isShowAddress) {
await this.getUserAddress();
} else {
await this.getTotalPrice();
}
}
this.$forceUpdate();
});
},
// 获取地址列表
async getUserAddress() {
var data = {};
var that = this;
this.$http.request({
url: `${this.urlList.addressList}?userId=${this.userInfo.id}`,
method: "POST",
data,
header: {
"Content-Type": "application/json",
},
})
.then(async (res) => {
if (res.code == 0) {
if (res.list.length > 0) {
var index = res.list.findIndex((e) => e.isDefault == 1);
if (index >= 0) {
that.defaultAddressList = {
...res.list[index],
address: `${res.list[index].province}${res.list[index].city}${
res.list[index].county
}${
res.list[index].detailAddress
? res.list[index].detailAddress
: ""
}`,
};
} else {
that.defaultAddressList = {
...res.list[0],
address: `${res.list[0].province}${res.list[0].city}${
res.list[0].county
}${
res.list[0].detailAddress ? res.list[0].detailAddress : ""
}`,
};
}
} else {
this.defaultAddressList = {};
}
}
if (!this.addressData.id) {
this.addressData = this.defaultAddressList;
}
await this.getFreightNum();
this.$forceUpdate();
});
},
//获取运费
async getFreightNum() {
if (!this.addressData.regionCode) {
await this.getTotalPrice();
} else {
var data = {
products: this.goodsDataList.map((e) => {
return {
productId: e.productId,
quantity: this.orderNumber,
};
}),
regionCode: this.addressData.regionCode,
};
var that = this;
this.$http
.request({
url: `${this.urlList.freightNum}`,
method: "POST",
data,
header: {
"Content-Type": "application/json",
},
})
.then(async (res) => {
if (res.code == 0) {
this.freightNum = res.result;
}
await this.getTotalPrice();
this.$forceUpdate();
});
}
},
handleFresh() {
this.show = false;
},
//获取总金额
async getTotalPrice() {
var s = 0;
var that = this;
for (var i = this.goodsDataList.length - 1; i >= 0; i--) {
s += this.goodsDataList[i].price;
}
that.totalPrice = s * that.orderNumber;
if (!this.isShowAddress) {
if (this.initData.user.jf >= that.totalPrice) {
this.jfNumber = that.totalPrice - that.vipPrice - that.districtAmount;
this.jfNumberMax = that.totalPrice - that.vipPrice - that.districtAmount;
} else {
this.jfNumber = this.initData.user.jf;
this.jfNumberMax = this.initData.user.jf;
}
if (that.jfNumber == 0 || that.jfNumber == null) {
that.jfNumberShow = "0.00";
that.actualPayment = that.totalPrice;
} else {
that.jfNumberShow = that.jfNumber.toFixed(2);
that.actualPayment = that.totalPrice - that.jfNumber;
}
that.actualPayment = that.actualPayment + that.freightNum - that.vipPrice- that.districtAmount;
} else {
that.actualPayment = that.totalPrice + that.freightNum - that.vipPrice - that.districtAmount;
}
if (this.actualPayment == 0 && !this.isShowAddress) {
this.isDefaultCurrency = true;
} else {
this.isDefaultCurrency = false;
}
this.$forceUpdate();
},
selectAddress(data) {
this.show = false;
},
goToAddress() {
uni.navigateTo({
url: "/pages/component/commonComponents/address/index?type=order",
});
},
fnCopy(value, title) {
this.$commonJS.handleMakingPhoneCalls(value, title);
},
async checkPermision() {
var result = await permission.premissionCheck("CALLPHONE")
if (result != 1) {
return false
}
this.gotoPhone()
},
gotoPhone() {
this.$commonJS.handleMakingPhoneCalls("022-24142321");
},
openOrderModal(v) {
this.orderModalShowInfo = v;
this.orderModalShow = true;
if (this.orderModalShowInfo.type == "remark") {
this.content = this.remark;
}
},
async goBuyJie() {
debounce(async () => {
var that = this;
this.nowClick = false;
setTimeout(() => {
this.nowClick = true;
}, 5000);
let xiaBiao = [];
if (this.options.goods[0].goodsType != "05") {
if (!this.addressData.id) {
this.$commonJS.showToast("请选择收货地址");
return false;
}
}
let data = {
buyType: this.options.typeId, //0- 商品页直接下单 1- 购物车结算
userId: this.userInfo.id, //下单人ID
shippingUser: this.addressData ? this.addressData.consigneeName : "111", //收货人姓名
userPhone: this.addressData.consigneePhone, //收货人手机号
jfDeduction: this.jfNumber,
paymentMethod: this.payType, //支付方式 2支付宝1微信3ios内购 4天医币购买
orderMoney: this.totalPrice, //订单金额
realMoney: this.actualPayment, //实收金额
shippingMoney: this.freightNum, //运费
remark: this.remark, //备注
couponId: null, //优惠券Id
couponName: "", //优惠券名称
districtMoney: 0, //活动
productList: this.goodsDataList.map((e) => {
return {
productId: e.productId,
quantity: this.orderNumber,
};
}), //订单列表商品
orderType: "order", //订单类型
addressId: this.options.goods[0].goodsType != "05" ? this.addressData.id : 0, // 地址ID
appName: "xlkj",
come: "3", //3心灵空间
}
if(this.goodsDataList[0].isVipPrice==1&&
this.goodsDataList[0].vipPrice!=null&&
this.goodsDataList[0].vipPrice!=0){
data.vipDiscountAmount = this.vipPrice; //vip
}else if(this.goodsDataList[0].activityPrice&&
this.goodsDataList[0].activityPrice>0){
data.districtMoney = this.districtAmount; //活动
}
await $http.request({
url: that.urlList.buyOrder,
method: "POST",
data,
header: {
"Content-Type": "application/json",
},
})
.then(async (res) => {
if (res.code == 0) {
if (res.orderSn == null) {
uni.showToast({
title: "失败,请重新下单",
icon: "none"
});
} else {
if (that.payType == 2) {
// 常规支付
uni.showToast({
title: "正在支付",
icon: "loading",
});
await setPay({
typePay: "alipay",
subject: "order",
totalAmount: res.money,
type: 2,
relevanceoid: res.orderSn,
customerId: that.userInfo.id,
},
(res) => {
uni.showLoading({
title: "加载中",
});
console.log(res, "支付支付");
if (res.success) {
uni.showToast({
title: "支付成功",
});
setTimeout(() => {
if (that.goToInfo.type == 1) {
uni.switchTab({
url: `${that.goToInfo.url}?type=order`,
});
} else {
uni.redirectTo({
url: `${that.goToInfo.url}?backType=order`,
});
}
}, 1000);
} else {
setTimeout(() => {
console.log("延迟调用 失败提示");
uni.showToast({
title: "支付失败"
});
}, 0);
}
}
);
} else if (this.payType == 1) {
// 微信支付
let data1 = {
orderSn: res.orderSn,
buyOrderId: null,
totalAmount: res.money,
};
setWXPay(data1, (res) => {
if (res.success) {
uni.showToast({
title: "支付成功",
});
setTimeout(() => {
if (that.goToInfo.type == 1) {
uni.switchTab({
url: `${that.goToInfo.url}?type=order`,
});
} else {
uni.redirectTo({
url: `${that.goToInfo.url}?backType=order`,
});
}
}, 1000);
} else {
if (res.data.errMsg.indexOf(
"User canceled") != -1) {
uni.showToast({
title: "用户取消支付",
icon: "none"
});
} else {
uni.showToast({
title: "支付失败",
icon: "none"
});
}
}
});
} else if (this.payType == 4) {
// 天医币支付
uni.showToast({
title: "购买成功",
icon: "success",
});
setTimeout(() => {
if (that.goToInfo.type == 1) {
uni.switchTab({
url: `${that.goToInfo.url}?type=order`,
});
} else {
uni.redirectTo({
url: `${that.goToInfo.url}?backType=order`,
});
}
}, 1000);
}
}
}
uni.removeStorageSync('mynavData');
});
}, 200);
},
radioChange(index) {
this.selectPayIndex = index;
this.payType = this.payList[this.selectPayIndex].type;
this.$forceUpdate();
},
buttonClick(e) {
this.options[2].info++;
},
// 获取用户详情
getUserInfo() {
if (this.userInfo.id != undefined) {
this.$http.post("book/user/info/" + this.userInfo.id).then((res) => {
this.userMes = res.user;
this.getCateList();
});
}
},
async handleselectCate(item, index) {
this.dataList = [];
var data = [];
console.log(item, index, 99999);
var that = this;
this.$http
.post(this.urlList.curriculumInfo, {
customerType: "D",
token: uni.getStorageSync("token"),
customerOid: uni.getStorageSync("customerOid"),
oid: item.coid,
})
.then(async (res) => {
that.curriculumInfo = res.obj;
that.dataList = res.obj.courseList;
});
this.searchValue = "";
this.searchList = [];
this.showSearchList = false;
return data;
},
async getDetailInfo() {
var that = this;
this.detailInfo = {
content: "<img src='http://oss.taihumed.com/other/null_20210528102528870.jpg' ></img> <img src='http://101.201.146.165:8088/curriculum/detailImg/curriculum_20170420143333621.png' ></img><p><p>没有中医基础想学中医难不难?中医学者治疗出现瓶颈怎么办?中西医究竟有什么不同呢?吴雄志教授将以全新的视角,完美整合中药学和西医学知识,让你领略当代中医生理学魅力。</p><p><br/><p></p><p><br/></p><p>【思考题】</p><p>1、简述中医的发展这些年出现了哪些变化</p><p>2、简述中西医学科的异同</p>",
};
this.searchValue = "";
this.searchList = [];
this.showSearchList = false;
return data;
},
getCateList(id) {
id ? "" : (id = 0);
this.twoCateList = [];
this.curTwoCateIndex = 0;
},
},
onBackPress() {
// #ifdef APP-PLUS
plus.key.hideSoftKeybord();
// #endif
},
};
</script>
<style lang="scss" scoped>
@import "@/static/mixin.scss";
.order_box {
padding: 20rpx;
.order_top {
background-color: #fff;
margin-bottom: 20rpx;
}
.goods_item {
width: 100%;
overflow: hidden;
.textarea {
margin-top: 20rpx;
background-color: #fffdfd;
}
.goods_item_img {
width: 140rpx;
height: 140rpx;
float: left;
background-color: #f5f5f5;
border-radius: 10rpx;
}
.normal_box {
width: calc(100% - 160rpx);
height: auto;
float: right;
.normal_box_top {
width: 100%;
height: 100rpx;
}
}
}
}
.flexbox {
display: flex;
}
.dataList {
height: 100%;
}
.titleList2 {
height: calc(100% - 150rpx);
}
.priceDetail {
height: calc(100% - 180rpx) !important;
padding: 0rpx 0;
box-sizing: border-box;
}
.componentPage {
height: calc(100% - 90rpx) !important;
}
.dateReminder {
width: 100%;
font-size: 24rpx;
text-align: right;
line-height: 40rpx;
}
.fdButtonBox {
border: 1rpx solid $themeColor;
background-color: $themeColor;
color: #fff;
// width: 100%;
float: right;
padding: 4rpx 14rpx;
font-size: 24rpx;
font-weight: 500;
line-height: 30rpx;
border-radius: 10rpx;
box-sizing: border-box;
}
.commonDetailPage {
padding-bottom: 150rpx !important;
}
.goods_box {
background-color: #fff;
box-sizing: border-box;
width: 100%;
.title {
color: #333;
font-weight: 600;
margin-bottom: 20rpx;
}
.curriulum_title_box {
width: calc(100%) !important;
padding-bottom: 20rpx;
background-color: #fff;
.curriulum_title {
width: calc(100% - 80rpx);
font-weight: 500;
font-size: 30rpx;
margin-top: 10rpx;
margin-bottom: 0rpx;
color: #333;
box-sizing: border-box;
}
}
}
.dataList {
background-color: #fff !important;
padding: 0 30rpx 40rpx !important;
box-sizing: border-box;
}
/deep/.scroll-view-item:nth-child(2n-1) {
background-color: transparent !important;
}
.dataList {
height: auto !important;
}
.related_courses_box {
background-color: #fff;
.small_class_teaching_content {
padding: 10rpx 20rpx;
box-sizing: border-box;
}
}
.related_courses_name {
display: inline-block;
width: calc(100% - 150rpx) !important;
.aui-text-danger {
display: inline-block;
float: right;
}
}
.original_price {
font-size: 28rpx !important;
font-weight: 500;
color: #999 !important;
white-space: nowrap;
text-decoration: line-through;
float: left;
margin-top: 6rpx;
}
.price {
width: auto;
font-size: 28rpx;
font-weight: 600;
margin-right: 10rpx;
color: #333;
}
.normal_box_top .price_box {
width: auto;
overflow: hidden;
margin-top: 20rpx;
display: flex;
align-items: center;
justify-content: space-between;
.vip_price_jg{
color: red;
font-weight: bold;
}
.vip_price_text{
color: red;
padding-left: 10rpx;
font-size: 24rpx;
font-weight: normal;
}
.vip_price_line{
color: #666;
text-decoration: line-through;
padding-left: 15rpx;
}
}
.commonTags {
margin-right: 20rpx;
margin-top: -5rpx !important;
}
.sales_number {
text-decoration: none;
color: #b0b0b0;
font-weight: 500;
}
/deep/.common_curriculum_list {
margin-top: 20rpx;
padding: 20rpx 20rpx 20rpx;
.content_item {
width: 100% !important;
margin-bottom: 0 !important;
padding: 15rpx 0 0rpx;
border-top: 1rpx solid #f1f0f0;
// height: 160rpx;
.book_image {
width: 60rpx !important;
height: 60rpx !important;
float: left !important;
background-color: #f5f5f5;
}
.common_curriculum_item {
width: calc(100% - 88rpx);
float: right;
display: block !important;
// overflow: hidden;
.related_courses_name {
width: 100% !important;
}
}
}
.content_item:nth-child(1) {
border-top: none !important;
}
}
/deep/.common_section {
padding: 0 !important;
padding-bottom: 20rpx !important;
}
.goods_detail_list_title {
display: block;
padding-top: 20rpx;
padding-bottom: 40rpx;
.linlanzhifu {
display: flex;
align-items: center;
}
.other_info {
font-size: 28rpx;
// color: #aaa;
color: #5a5a5a;
.explain {}
}
.left {
display: flex;
align-items: center;
}
.right {
font-size: 24rpx;
font-weight: 500 !important;
color: #999;
font-family: none;
}
}
.commonPageContentBox {
height: auto !important;
}
.minus {
width: 50rpx;
height: 50rpx;
border-width: 2rpx;
border-color: #e6e6e6;
border-right-color: transparent;
border-top-left-radius: 10rpx;
border-bottom-left-radius: 10rpx;
border-style: solid;
@include flex;
justify-content: center;
align-items: center;
}
.input {
padding: 0 10px;
height: 50rpx;
border: 1rpx solid #e6e6e6;
}
.plus {
width: 50rpx;
height: 50rpx;
border-width: 2rpx;
border-color: #e6e6e6;
border-left-color: transparent;
border-style: solid;
// background-color: #3AB3AE;
border-top-right-radius: 10rpx;
border-bottom-right-radius: 10rpx;
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
justify-content: center;
align-items: center;
color: $themeColor;
}
.order_bottom_box {
position: absolute;
right: 20rpx;
.number {
font-size: 26rpx;
margin-right: 15rpx;
}
.price {
.total {
font-size: 34rpx;
color: red;
}
}
}
/deep/.goods_nav_box {
.left {
margin-top: -10rpx;
width: calc(100% - 220rpx);
height: auto;
position: relative;
}
}
.explain {
word-wrap: break-word;
word-break: normal;
word-break: break-all; //会断词
// white-space: nowrap;
}
.order_bottom_box {
display: flex;
align-items: center;
justify-content: center;
}
.pay_box {
.pay_item {
border-bottom: 1rpx solid #eeecec;
padding-top: 20rpx;
justify-content: space-between;
.top {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
}
.left {
line-height: 50rpx;
font-family: MicrosoftYaHei;
font-weight: 500;
color: #242323;
.pay_item_img {
width: 50rpx;
height: 50rpx;
float: left;
margin-right: 20rpx;
}
.pay_item_img_icon{
width: 40rpx;
height: 40rpx;
float: left;
margin-right: 8rpx;
}
}
.bottom {
width: calc(100% - 60rpx);
float: right;
// background-color: #dcdfe6;
background-color: #f5f5f5;
border-radius: 20rpx;
margin-top: 20rpx;
.jf_box {
width: 100%;
display: flex;
align-items: center;
padding: 0 20rpx;
box-sizing: border-box;
justify-content: space-between;
color: #aaa;
}
.jf_input {
width: calc(100% - 320rpx) !important;
padding: 10rpx 0;
box-sizing: border-box;
}
}
}
/deep/.pay_item:nth-last-child(1) {
border-bottom: none !important;
}
}
.linlanzhifu {
font-size: 28rpx;
line-height: 24rpx;
}
.address_box {
display: flex;
align-items: center;
padding: 30rpx 20rpx;
.order_top {
background-color: #fff;
}
.user_info {
width: 100%;
float: left;
display: flex;
align-items: center;
.name {
color: #838282;
margin-right: 10rpx;
}
.tel {
color: #838282;
}
}
.curriulum_title {
width: auto;
font-size: 30rpx;
font-weight: 700;
float: left;
margin-right: 10rpx;
color: #333;
line-height: 40rpx;
letter-spacing: 2rpx;
}
.normal_box {
margin-left: 5rpx;
width: calc(100% - 120rpx);
}
.goods_box {
padding: 20rpx 20rpx;
display: flex;
align-items: center;
}
.rightArrow {
margin-left: 40rpx;
width: 40rpx;
height: 40rpx;
// position: absolute;
// right: 30rpx;
}
}
.rightArrow {
width: 40rpx;
height: 40rpx;
// position: absolute;
// right: 30rpx;
}
.orderModalShow {
width: 100%;
max-height: 48vh;
padding-bottom: 120rpx;
}
.popup_box {
.curriulum_title_box {
.title {
text-align: center;
font-size: 34rpx !important;
padding-top: 15rpx !important;
margin-bottom: 30rpx !important;
}
}
}
.hasRemark {
color: #333 !important;
}
.goods_item_vip{
position: absolute;
left: 0px;
top: 0;
z-index: 99;
background: #ff1f00;
padding: 0 4px;
border-radius: 4px;
line-height: 18px;
font-size: 9px;
color: #fff;
}
.type_text_red{
color: red;
}
</style>