增加培训班管理,增加购物车功能
This commit is contained in:
2
main.js
2
main.js
@@ -45,6 +45,8 @@ uni.getSystemInfo({
|
|||||||
|
|
||||||
import commonList from '@/pages/component/commonComponents/list.vue'
|
import commonList from '@/pages/component/commonComponents/list.vue'
|
||||||
Vue.component('common-list', commonList);
|
Vue.component('common-list', commonList);
|
||||||
|
import commonOrderSubmit from '@/pages/component/commonComponents/orderSubmit.vue'
|
||||||
|
Vue.component('common-order-submit', commonOrderSubmit);
|
||||||
import commonVideoAliyun from '@/pages/component/commonComponents/video/AliPlayer.vue'
|
import commonVideoAliyun from '@/pages/component/commonComponents/video/AliPlayer.vue'
|
||||||
Vue.component('common-list-aliyun', commonVideoAliyun);
|
Vue.component('common-list-aliyun', commonVideoAliyun);
|
||||||
import commonVideoAudio from '@/pages/component/commonComponents/video/audio.vue'
|
import commonVideoAudio from '@/pages/component/commonComponents/video/audio.vue'
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
"name" : "心灵空间",
|
"name" : "心灵空间",
|
||||||
"appid" : "__UNI__BBBDFD2",
|
"appid" : "__UNI__BBBDFD2",
|
||||||
"description" : "心灵空间",
|
"description" : "心灵空间",
|
||||||
"versionName" : "1.0.28",
|
"versionName" : "1.0.32",
|
||||||
"versionCode" : 1028,
|
"versionCode" : 1032,
|
||||||
"transformPx" : false,
|
"transformPx" : false,
|
||||||
/* 5+App特有相关 */
|
/* 5+App特有相关 */
|
||||||
"app-plus" : {
|
"app-plus" : {
|
||||||
@@ -48,9 +48,6 @@
|
|||||||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
|
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.INSTALL_PACKAGES\"/>",
|
|
||||||
"<uses-permission android:name=\"android.permission.INTERNET\"/>",
|
"<uses-permission android:name=\"android.permission.INTERNET\"/>",
|
||||||
"<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>"
|
"<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>"
|
||||||
],
|
],
|
||||||
|
|||||||
36
pages.json
36
pages.json
@@ -218,6 +218,30 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/trainingCourse/index",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "培训班管理",
|
||||||
|
"enablePullDownRefresh": false, // 禁止下拉刷新
|
||||||
|
"app-plus": {
|
||||||
|
"bounce": "none",
|
||||||
|
"titleNView": false,
|
||||||
|
"popGesture": "none"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/trainingCourse/detail",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "培训班管理",
|
||||||
|
"enablePullDownRefresh": false, // 禁止下拉刷新
|
||||||
|
"app-plus": {
|
||||||
|
"bounce": "none",
|
||||||
|
"titleNView": false,
|
||||||
|
"popGesture": "none"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/my/persData",
|
"path": "pages/my/persData",
|
||||||
"style": {
|
"style": {
|
||||||
@@ -314,6 +338,18 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/goods/shopping",
|
||||||
|
"style": {
|
||||||
|
"navigationBarTitleText": "购物车",
|
||||||
|
"enablePullDownRefresh": false,
|
||||||
|
"app-plus": {
|
||||||
|
"bounce": "none",
|
||||||
|
"titleNView": false,
|
||||||
|
"popGesture": "none"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/place/order",
|
"path": "pages/place/order",
|
||||||
"style": {
|
"style": {
|
||||||
|
|||||||
@@ -161,7 +161,7 @@
|
|||||||
validateFunction: (rule, value, data, callback) => {
|
validateFunction: (rule, value, data, callback) => {
|
||||||
// 异步需要返回 Promise 对象
|
// 异步需要返回 Promise 对象
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
if (!this.$base.phoneRegular.test(value)) {
|
if (!/^\d{5,15}$/.test(value)) {
|
||||||
reject(new Error("手机号格式不正确"));
|
reject(new Error("手机号格式不正确"));
|
||||||
} else {
|
} else {
|
||||||
resolve();
|
resolve();
|
||||||
|
|||||||
@@ -147,6 +147,7 @@ export default {
|
|||||||
|
|
||||||
.titleItem {
|
.titleItem {
|
||||||
width: calc(100%) !important;
|
width: calc(100%) !important;
|
||||||
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
/deep/.scroll-view-item:nth-child(2n-1) {
|
/deep/.scroll-view-item:nth-child(2n-1) {
|
||||||
|
|||||||
388
pages/component/commonComponents/orderCoupon.vue
Normal file
388
pages/component/commonComponents/orderCoupon.vue
Normal file
@@ -0,0 +1,388 @@
|
|||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<!-- 优惠券弹出 -->
|
||||||
|
<u-popup :show="youhuiShow" :round="10" @close="closePup">
|
||||||
|
<view class="tanchu">
|
||||||
|
<view class="dp_title">请选择优惠券</view>
|
||||||
|
<template v-if="list.length > 0">
|
||||||
|
<view style="max-height: 40vh; overflow-y: scroll">
|
||||||
|
<view v-for="(item, index) in list" :key="index">
|
||||||
|
<view
|
||||||
|
:class="`youhuiItem ${
|
||||||
|
youhuiIndex === index ? ' youItem_style' : ''
|
||||||
|
} ${item.canUse === 0 ? 'disableSelect' : ''}`"
|
||||||
|
@click="choseYouhui(index)"
|
||||||
|
><text
|
||||||
|
class="border_radius_10"
|
||||||
|
style="
|
||||||
|
position: absolute;
|
||||||
|
top: 10rpx;
|
||||||
|
right: 10rpx;
|
||||||
|
font-size: 25rpx;
|
||||||
|
background-color: #ffe3e9;
|
||||||
|
color: #c81346;
|
||||||
|
padding: 6rpx;
|
||||||
|
"
|
||||||
|
>{{ item.couponEntity.couponRange | couponType }}</text
|
||||||
|
>
|
||||||
|
<view
|
||||||
|
style="width: 25%; color: #ff0043; text-align: center"
|
||||||
|
class="couponPrice"
|
||||||
|
>
|
||||||
|
<text>¥</text>
|
||||||
|
<b style="font-size: 45rpx">{{
|
||||||
|
item.couponEntity.couponAmount
|
||||||
|
}}</b>
|
||||||
|
<text
|
||||||
|
class="useLevel"
|
||||||
|
style="
|
||||||
|
display: block;
|
||||||
|
color: #666;
|
||||||
|
font-size: 25rpx;
|
||||||
|
margin-top: 10rpx;
|
||||||
|
"
|
||||||
|
>满{{ item.couponEntity.useLevel }}元可用</text
|
||||||
|
>
|
||||||
|
</view>
|
||||||
|
<view style="width: 68%; padding-left: 5%">
|
||||||
|
<view>
|
||||||
|
<text
|
||||||
|
style="
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 6rpx;
|
||||||
|
line-height: 36rpx;
|
||||||
|
"
|
||||||
|
>{{ item.couponEntity.couponName }}</text
|
||||||
|
>
|
||||||
|
</view>
|
||||||
|
<text
|
||||||
|
style="
|
||||||
|
display: block;
|
||||||
|
font-size: 22rpx;
|
||||||
|
color: #999;
|
||||||
|
margin-top: 10rpx;
|
||||||
|
"
|
||||||
|
>有效期至:{{
|
||||||
|
item.effectType == 0 ? "永久有效" : item.endTime
|
||||||
|
}}</text
|
||||||
|
>
|
||||||
|
<template v-if="item.canUse == 0">
|
||||||
|
<view
|
||||||
|
class=""
|
||||||
|
style="font-size: 20rpx; display: inline-block"
|
||||||
|
>
|
||||||
|
<text style="color: #333">不可用原因:</text>
|
||||||
|
<text style="color: #333">{{ item.canUseReason }}</text>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
</view>
|
||||||
|
<view
|
||||||
|
style="width: 7%; position: absolute; right: 20rpx; top: 43%"
|
||||||
|
>
|
||||||
|
<!-- <view class="" style="background-color: #d9d9d9; border-radius: 10rpx; 0 0 10rpx; text-align: center;" v-if="item.canUse == 0">
|
||||||
|
<text
|
||||||
|
style="color: #999; "
|
||||||
|
>不可用</text>
|
||||||
|
</view> -->
|
||||||
|
|
||||||
|
<template v-if="item.canUse == 1">
|
||||||
|
<text
|
||||||
|
style="
|
||||||
|
border: 1px solid #d9d9d9;
|
||||||
|
width: 35rpx;
|
||||||
|
height: 35rpx;
|
||||||
|
display: inline-block;
|
||||||
|
border-radius: 30rpx;
|
||||||
|
"
|
||||||
|
v-if="youhuiIndex !== index"
|
||||||
|
></text>
|
||||||
|
|
||||||
|
<u-icon
|
||||||
|
name="checkmark-circle-fill"
|
||||||
|
color="#fd6004"
|
||||||
|
size="20"
|
||||||
|
v-if="youhuiIndex === index"
|
||||||
|
>
|
||||||
|
</u-icon>
|
||||||
|
</template>
|
||||||
|
</view>
|
||||||
|
<br clear="both" />
|
||||||
|
</view>
|
||||||
|
<u-collapse
|
||||||
|
v-if="source != 'goodsDetail' && item.couponEntity.remark"
|
||||||
|
style="
|
||||||
|
margin-top: 0rpx;
|
||||||
|
z-index: 10 !important;
|
||||||
|
background-color: #fafafa;
|
||||||
|
border-bottom-left-radius: 10rpx;
|
||||||
|
border-bottom-right-radius: 10rpx;
|
||||||
|
"
|
||||||
|
:border="false"
|
||||||
|
>
|
||||||
|
<u-collapse-item title="详细信息" name="Docs guide">
|
||||||
|
<view
|
||||||
|
v-if="item.couponEntity.remark"
|
||||||
|
style="
|
||||||
|
font-size: 22rpx;
|
||||||
|
width: 100%;
|
||||||
|
margin-right: 20rpx !important;
|
||||||
|
"
|
||||||
|
>使用说明:{{ item.couponEntity.remark }}</view
|
||||||
|
>
|
||||||
|
</u-collapse-item>
|
||||||
|
</u-collapse>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- <view style="font-size: 20rpx;color: #aaa;margin-top: 30rpx;">* 每笔订单只能使用一张优惠价</view> -->
|
||||||
|
</view>
|
||||||
|
<view class="btnBox flex_box flex_between" v-if="selectcouponList.length>0">
|
||||||
|
<view class="" style="width: 48%">
|
||||||
|
<button type="default" @click="confirmCoupon('none')">
|
||||||
|
不使用优惠券
|
||||||
|
</button>
|
||||||
|
</view>
|
||||||
|
<view class="" style="width: 48%">
|
||||||
|
<button type="primary" @click="confirmCoupon()">选好了</button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="btnBox flex_box flex_between" v-else>
|
||||||
|
<view class="" style="width: 100%">
|
||||||
|
<button type="default" @click="confirmCoupon('none')">
|
||||||
|
取消
|
||||||
|
</button>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
<view class="" v-else>
|
||||||
|
<u-divider text="暂无可用优惠券哦"></u-divider>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</u-popup>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "orderCoupon",
|
||||||
|
props: ["list", "curCouponId", "sumMeony",'selectcouponList'],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
youhuiShow: true,
|
||||||
|
youhuiIndex: undefined,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
console.log("进入了", this.curCouponId, this.sumMeony);
|
||||||
|
if (this.curCouponId) {
|
||||||
|
this.youhuiIndex = this.list.findIndex(
|
||||||
|
(item) => item.couponEntity.id === this.curCouponId
|
||||||
|
);
|
||||||
|
console.log("查找后的结果", this.youhuiIndex);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
filters: {
|
||||||
|
couponType(type) {
|
||||||
|
// 0无限制 1课程卷 2课程品类卷
|
||||||
|
var str = "";
|
||||||
|
switch (type) {
|
||||||
|
case 0:
|
||||||
|
str = "全场通用";
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
str = "指定课程可用";
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
str = "指定课程品类可用";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
computed: {},
|
||||||
|
methods: {
|
||||||
|
closePup() {
|
||||||
|
this.youhuiIndex = undefined;
|
||||||
|
this.$emit("close");
|
||||||
|
},
|
||||||
|
// 确定选中优惠券
|
||||||
|
confirmCoupon(str) {
|
||||||
|
console.log(str, "6666");
|
||||||
|
if (str && str == "none") {
|
||||||
|
// 清空优惠券操作
|
||||||
|
this.$emit("confirmCoupon");
|
||||||
|
setTimeout(() => {
|
||||||
|
this.closePup();
|
||||||
|
}, 300);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.youhuiIndex == 0 || this.youhuiIndex) {
|
||||||
|
this.$emit("confirmCoupon", this.list[this.youhuiIndex]);
|
||||||
|
setTimeout(() => {
|
||||||
|
this.closePup();
|
||||||
|
}, 300);
|
||||||
|
} else {
|
||||||
|
uni.showToast({
|
||||||
|
title: "请选择您要使用的优惠券",
|
||||||
|
icon: "none",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 选择优惠券
|
||||||
|
choseYouhui(e) {
|
||||||
|
if (this.list[e].canUse == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
console.log("选中优惠券e", e);
|
||||||
|
this.youhuiIndex = e;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.btnBox {
|
||||||
|
margin-top: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tanchu {
|
||||||
|
padding: 40rpx 30rpx 40rpx 30rpx;
|
||||||
|
position: relative;
|
||||||
|
// max-height: 60vh;
|
||||||
|
// overflow-y: scroll;
|
||||||
|
|
||||||
|
.dp_title {
|
||||||
|
font-size: 32rpx;
|
||||||
|
margin-bottom: 50rpx;
|
||||||
|
color: #555;
|
||||||
|
text-align: center;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dp_add {
|
||||||
|
position: absolute;
|
||||||
|
top: 40rpx;
|
||||||
|
right: 30rpx;
|
||||||
|
font-size: 22rpx;
|
||||||
|
background-color: #fd6004;
|
||||||
|
color: #fff;
|
||||||
|
border-radius: 10rpx;
|
||||||
|
padding: 5rpx 10rpx;
|
||||||
|
|
||||||
|
.u-icon {
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 5rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.addressItem {
|
||||||
|
border: 2px dashed #d9d9d9;
|
||||||
|
border-radius: 10rpx;
|
||||||
|
width: 100%;
|
||||||
|
display: flex;
|
||||||
|
padding: 20rpx 10rpx;
|
||||||
|
margin: 25rpx 0 0 0;
|
||||||
|
align-items: center;
|
||||||
|
background-color: #fff;
|
||||||
|
|
||||||
|
.addrContent {
|
||||||
|
margin-left: 40rpx;
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
.addrContentTop {
|
||||||
|
display: flex;
|
||||||
|
align-items: flex-end;
|
||||||
|
margin: 0 0 15rpx 0;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.userName {
|
||||||
|
font-size: 35rpx;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-right: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.userTel {
|
||||||
|
font-size: 25rpx;
|
||||||
|
color: #888;
|
||||||
|
}
|
||||||
|
|
||||||
|
.userMoren {
|
||||||
|
border: 1px solid #fd6004;
|
||||||
|
color: #fd6004;
|
||||||
|
padding: 3rpx 10rpx;
|
||||||
|
font-size: 22rpx;
|
||||||
|
border-radius: 10rpx;
|
||||||
|
margin: 0 0 0 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.chooseCheck {
|
||||||
|
position: absolute;
|
||||||
|
top: 3rpx;
|
||||||
|
right: 6rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.addrContentBottom {
|
||||||
|
font-size: 32rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.addressItem.addItem_style {
|
||||||
|
border-color: #fd6004;
|
||||||
|
}
|
||||||
|
|
||||||
|
.youhuiItem {
|
||||||
|
position: relative;
|
||||||
|
background: linear-gradient(to top right, #fff, #fef2f4);
|
||||||
|
|
||||||
|
border: 1px solid #d9d9d9;
|
||||||
|
border-radius: 10rpx;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
padding: 50rpx 20rpx 20rpx;
|
||||||
|
margin: 25rpx 0 0 0;
|
||||||
|
align-items: center;
|
||||||
|
background-color: #fff;
|
||||||
|
font-size: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.disableSelect {
|
||||||
|
background: linear-gradient(to top right, #fafafa, #fafafa) !important;
|
||||||
|
|
||||||
|
color: #979797 !important;
|
||||||
|
.couponPrice {
|
||||||
|
color: #979797 !important;
|
||||||
|
}
|
||||||
|
.useLevel {
|
||||||
|
color: #979797 !important;
|
||||||
|
}
|
||||||
|
.border_radius_10 {
|
||||||
|
color: #98989a !important;
|
||||||
|
background-color: #fafafa !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.youhuiItem > view {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.youhuiItem.youItem_style {
|
||||||
|
border-color: #fd6004;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
::v-deep .u-cell__body {
|
||||||
|
padding-top: 0 !important ;
|
||||||
|
padding-bottom: 0 !important ;
|
||||||
|
z-index: 10 !important ;
|
||||||
|
.u-cell__title-text {
|
||||||
|
color: #333 !important;
|
||||||
|
font-size: 24rpx !important;
|
||||||
|
padding-left: 0 !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::v-deep .u-collapse-item__content__text {
|
||||||
|
padding: 10rpx 20rpx !important;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
2414
pages/component/commonComponents/orderSubmit.vue
Normal file
2414
pages/component/commonComponents/orderSubmit.vue
Normal file
File diff suppressed because it is too large
Load Diff
@@ -52,10 +52,13 @@
|
|||||||
<view
|
<view
|
||||||
class="related_courses_name"
|
class="related_courses_name"
|
||||||
:class="`goods_item ${
|
:class="`goods_item ${
|
||||||
selectGoodsData &&
|
(!isFudu &&
|
||||||
selectGoodsData.productId == slotProps.row.productId
|
selectGoodsData &&
|
||||||
? 'isSelectGoods color_shandow'
|
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">
|
||||||
@@ -108,7 +111,7 @@ export default {
|
|||||||
"isScroll",
|
"isScroll",
|
||||||
"selectGoodsData",
|
"selectGoodsData",
|
||||||
"customButtonGroup1",
|
"customButtonGroup1",
|
||||||
"buyOptions",
|
"buyOptions", "isFudu", // 是否复读
|
||||||
],
|
],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
v-for="(item, index) in dataList" :key="index"
|
v-for="(item, index) in dataList" :key="index"
|
||||||
v-if="dataList&&dataList.length>0"
|
v-if="dataList&&dataList.length>0"
|
||||||
@click="goToDetail(item)"
|
@click="goToDetail(item)"
|
||||||
|
:class="item.isStudying==0||item.isStudying==1?'list_item_bt':''"
|
||||||
>
|
>
|
||||||
<view class="list_item_image">
|
<view class="list_item_image">
|
||||||
<image v-if="item.image" :src="item.image" mode="aspectFit"></image>
|
<image v-if="item.image" :src="item.image" mode="aspectFit"></image>
|
||||||
@@ -19,7 +20,7 @@
|
|||||||
<view class="list_item_title">{{item.title}}</view>
|
<view class="list_item_title">{{item.title}}</view>
|
||||||
<view class="list_item_content" v-html="item.content"></view>
|
<view class="list_item_content" v-html="item.content"></view>
|
||||||
<view class="list_item_study" v-if="item.isStudying==0" @click.stop="addStudying(item.id)">加入学习</view>
|
<view class="list_item_study" v-if="item.isStudying==0" @click.stop="addStudying(item.id)">加入学习</view>
|
||||||
<view class="list_item_study_out" v-else @click.stop="removeStudying(item.id)">移出学习</view>
|
<view class="list_item_study_out" v-else-if="item.isStudying==1||currentCateIndex==1" @click.stop="removeStudying(item.id)">移出学习</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<text v-if="statusNull" class="text_null">暂无数据</text>
|
<text v-if="statusNull" class="text_null">暂无数据</text>
|
||||||
@@ -52,14 +53,14 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
onShow(){
|
onShow(){
|
||||||
|
|
||||||
|
},
|
||||||
|
onLoad() {
|
||||||
//我的课程
|
//我的课程
|
||||||
this.getMyList();
|
this.getMyList();
|
||||||
this.$nextTick(async () => {
|
this.$nextTick(async () => {
|
||||||
await this.ordersTabCLi(this.ordersTabs[0], 0);
|
await this.ordersTabCLi(this.ordersTabs[0], 0);
|
||||||
});
|
});
|
||||||
},
|
|
||||||
onLoad() {
|
|
||||||
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
//我的课程数据
|
//我的课程数据
|
||||||
@@ -170,6 +171,7 @@ export default {
|
|||||||
},
|
},
|
||||||
//过期课程数据
|
//过期课程数据
|
||||||
getExpireList(){
|
getExpireList(){
|
||||||
|
this.dataList = [];
|
||||||
uni.showLoading({
|
uni.showLoading({
|
||||||
title: '加载中'
|
title: '加载中'
|
||||||
})
|
})
|
||||||
@@ -237,11 +239,15 @@ export default {
|
|||||||
position: relative;
|
position: relative;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
box-shadow: 0px 0px 10px 0px #a7bbe4;
|
box-shadow: 0px 0px 10px 0px #a7bbe4;
|
||||||
padding: 30rpx 20rpx 70rpx;
|
padding: 30rpx 20rpx 30rpx;
|
||||||
margin-bottom: 20rpx;
|
margin-bottom: 20rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
border-radius: 10rpx;
|
border-radius: 10rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.list_item_bt{
|
||||||
|
padding: 30rpx 20rpx 70rpx;
|
||||||
|
}
|
||||||
.list_item_image,.image_null{
|
.list_item_image,.image_null{
|
||||||
width: 250rpx;
|
width: 250rpx;
|
||||||
height: 220rpx;
|
height: 220rpx;
|
||||||
|
|||||||
@@ -65,24 +65,27 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="not_purchased" v-if="slotProps.data.type != 0">
|
<view class="not_purchased" v-if="slotProps.data.type != 0&&!showNewPayBtn[0].status">
|
||||||
<view class="spot"></view>
|
<view class="spot"></view>
|
||||||
<view>
|
<view>
|
||||||
<text v-if="userVip==null&&slotProps.data.isBuy!=1">未购买</text>
|
<text v-if="userVip==null&&slotProps.data.isBuy!=1">未购买</text>
|
||||||
<view v-if="userVip==null&&slotProps.data.isBuy==1">
|
<view v-if="userVip==null&&slotProps.data.isBuy==1">
|
||||||
<text v-if="slotProps.data.endTime">课程有效期截止到:<br/>{{slotProps.data.endTime}} </text>
|
<text v-if="slotProps.data.endTime" style=" width: 280rpx; margin: 0;">课程有效期截止到:<br/>{{slotProps.data.endTime}} </text>
|
||||||
<text v-else>已购买</text>
|
<text v-else>已购买</text>
|
||||||
</view>
|
</view>
|
||||||
<text v-if="userVip!=null">有效期至{{ userVip.endTime }}</text>
|
<text v-if="userVip!=null">有效期至{{ userVip.endTime }}</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="right">
|
<view class="right">
|
||||||
<u-icon v-if="userVip==null&&slotProps.data.type != 0&&slotProps.data.isBuy!=1"
|
|
||||||
@click="handleClickGetGoodsList(slotProps.data)" class="editIcon" name="shopping-cart-fill"
|
|
||||||
color="#FF2B57" size="28"></u-icon>
|
|
||||||
|
|
||||||
<text v-if="slotProps.data.type == 0&&userVip==null&&slotProps.data.isBuy!=1" style="color: #fff; font-size: 12px" class="fdButtonBox aui-text-success"
|
<text v-if="slotProps.data.type == 0&&userVip==null&&slotProps.data.isBuy!=1" style="color: #fff; font-size: 12px" class="fdButtonBox aui-text-success"
|
||||||
@click="handleClickGetGoodsList(slotProps.data)">领取课程</text>
|
@click="handleClickGetGoodsList(slotProps.data)">领取课程</text>
|
||||||
|
|
||||||
|
<text v-else-if="showNewPayBtn[0]&&showNewPayBtn[0].status" style=" background: #f42c32; border: 0; padding: 15rpx 30rpx; color: #fff; font-size: 12px" class="fdButtonBox aui-text-success"
|
||||||
|
@click="goNewPay(slotProps.data)">复读</text>
|
||||||
|
|
||||||
|
<u-icon v-else-if="userVip==null&&slotProps.data.type != 0&&slotProps.data.isBuy!=1"
|
||||||
|
@click="handleClickGetGoodsList(slotProps.data)" class="editIcon" name="shopping-cart-fill"
|
||||||
|
color="#FF2B57" size="28"></u-icon>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -96,20 +99,51 @@
|
|||||||
<view class="chapter_content">
|
<view class="chapter_content">
|
||||||
<courseDescription :isCondition="true" :dataList="slotProps.dataList"
|
<courseDescription :isCondition="true" :dataList="slotProps.dataList"
|
||||||
@hancleClick="(data, index) => gotoDetail(data, index, slotProps)" label="title">
|
@hancleClick="(data, index) => gotoDetail(data, index, slotProps)" label="title">
|
||||||
<template slot="labelSlot" slot-scope="slotProps">
|
<template slot="labelSlot" slot-scope="slotProps1">
|
||||||
<view :style="`${
|
<view :style="`${ slotProps1.row.isAudition==1|| slotProps1.row.isLearned==1||slotProps1.row.isLearned==0
|
||||||
slotProps.row.isAudition==1
|
|
||||||
? 'width:calc(100% - 100rpx);float:left;'
|
? 'width:calc(100% - 100rpx);float:left;'
|
||||||
: 'width:100%;'}`">
|
: 'width:100%;'}`">
|
||||||
<text :class="`${slotProps.row.viewFlg == 1 ? 'aui-text-success' : ''}`">{{ slotProps.row.title }}</text>
|
<text :class="`${slotProps1.row.viewFlg == 1 ? 'aui-text-success' : ''}`">{{ slotProps1.row.title }}</text>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template slot="leftSlot" slot-scope="slotProps">
|
<template slot="leftSlot" slot-scope="slotProps1">
|
||||||
</template>
|
</template>
|
||||||
<template slot="rightSlot" slot-scope="slotProps">
|
<template slot="rightSlot" slot-scope="slotProps1">
|
||||||
<text class="fdButtonBox aui-text-success" style="background: none"
|
<text class="fdButtonBox aui-text-success" style="background: none"
|
||||||
v-if="slotProps.row.isAudition == 1">试听</text>
|
v-if="slotProps.data.isBuy == 0&&slotProps1.row.isAudition == 1&&userVip==null">试听</text>
|
||||||
|
|
||||||
|
<template v-if="slotProps.data.isBuy == 1 || userVip!=null">
|
||||||
|
<uni-tag v-if="slotProps1.row.isLearned == 0" style="position: absolute; right: 10rpx; top: 5rpx;"
|
||||||
|
:inverted="true" text="未学" size="mini" type="primary" />
|
||||||
|
<uni-tag v-if="slotProps1.row.isLearned == 1" style="position: absolute; right: 10rpx; top: 5rpx;"
|
||||||
|
:inverted="true" text="已学" size="mini" type="success" />
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<view class="shitingTag" v-if="slotProps.data.type != 0" style="position: absolute; right: 0; top: 0;">
|
||||||
|
<u-icon
|
||||||
|
v-if="
|
||||||
|
slotProps.data.isBuy == 0 &&
|
||||||
|
userVip == null &&
|
||||||
|
slotProps1.row.isAudition == 0
|
||||||
|
"
|
||||||
|
name="lock"
|
||||||
|
color="#7dc1f0 "
|
||||||
|
size="22"
|
||||||
|
></u-icon>
|
||||||
|
</view>
|
||||||
|
<view class="shitingTag" v-if="slotProps.data.type == 0" style="position: absolute; right: 0; top: 0;">
|
||||||
|
<u-icon
|
||||||
|
v-if="
|
||||||
|
userVip == null &&
|
||||||
|
slotProps1.row.isAudition == 0 &&
|
||||||
|
slotProps.data.isBuy == 0
|
||||||
|
"
|
||||||
|
name="lock"
|
||||||
|
color="#7dc1f0 "
|
||||||
|
size="24"
|
||||||
|
></u-icon>
|
||||||
|
</view>
|
||||||
</template>
|
</template>
|
||||||
</courseDescription>
|
</courseDescription>
|
||||||
</view>
|
</view>
|
||||||
@@ -141,12 +175,12 @@
|
|||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
</common-anchor-link>
|
</common-anchor-link>
|
||||||
<common-select-goods ref="commonSelectGoods" :selectGoodsData="selectGoodsData" :goodsList="goodsList"
|
<common-select-goods :isFudu="isFudu" ref="commonSelectGoods" :selectGoodsData="selectGoodsData" :goodsList="goodsList"
|
||||||
:buyOptions="buyOptions" :customButtonGroup1="customButtonGroup1" @selectGoods="handleClickSelectGoods"
|
:buyOptions="buyOptions" :customButtonGroup1="customButtonGroup1" @selectGoods="handleClickSelectGoods"
|
||||||
@onHandleClickBuy="
|
@onHandleClickBuy="
|
||||||
$refs.commonSelectGoods.close();
|
$refs.commonSelectGoods.close();
|
||||||
protocolShow = true;
|
protocolShow = true;
|
||||||
"></common-select-goods>
|
"></common-select-goods>
|
||||||
|
|
||||||
<u-popup :show="protocolShow" mode="center" round="6">
|
<u-popup :show="protocolShow" mode="center" round="6">
|
||||||
<view class="popup_box">
|
<view class="popup_box">
|
||||||
@@ -257,7 +291,12 @@
|
|||||||
textList: [], //转化文字集合
|
textList: [], //转化文字集合
|
||||||
//存储解析后的内容
|
//存储解析后的内容
|
||||||
parsedContent: '',
|
parsedContent: '',
|
||||||
images: []
|
images: [],
|
||||||
|
|
||||||
|
isFudu: false,
|
||||||
|
fuduId: null,
|
||||||
|
showNewPayBtn: [], //复读状态
|
||||||
|
newPaymentProList: [], //复读列表数据
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
onLoad(options) {
|
onLoad(options) {
|
||||||
@@ -380,7 +419,7 @@
|
|||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
.then((res) => {
|
.then(res => {
|
||||||
if (res.code == 0) {
|
if (res.code == 0) {
|
||||||
this.courseVipModule = res.list;
|
this.courseVipModule = res.list;
|
||||||
let text = '';
|
let text = '';
|
||||||
@@ -406,21 +445,48 @@
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
//查询目录续费情况
|
||||||
|
async checkRenewPayment(id) {
|
||||||
|
var ss = false;
|
||||||
|
await this.$http
|
||||||
|
.request({
|
||||||
|
url: 'common/courseRelearn/courseCatalogueCanRelearn',
|
||||||
|
method: "POST",
|
||||||
|
data: {
|
||||||
|
courseCatalogueId: id,
|
||||||
|
},
|
||||||
|
header: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.then(async (res) => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
ss = res.canRelearn;
|
||||||
|
}
|
||||||
|
this.$forceUpdate();
|
||||||
|
})
|
||||||
|
.catch((e) => {
|
||||||
|
ss = false;
|
||||||
|
this.$commonJS.showToast(e.errMsg);
|
||||||
|
});
|
||||||
|
return ss;
|
||||||
|
},
|
||||||
handleClickSelectGoods(data) {
|
handleClickSelectGoods(data) {
|
||||||
this.selectGoodsData = data;
|
this.selectGoodsData = data;
|
||||||
this.$forceUpdate();
|
this.$forceUpdate();
|
||||||
},
|
},
|
||||||
onHandleClickBuy(e) {
|
onHandleClickBuy(e) {
|
||||||
var mynavData = {
|
var mynavData = JSON.stringify({
|
||||||
goods: [this.selectGoodsData],
|
goods: [this.selectGoodsData],
|
||||||
typeId: 0,
|
typeId: 0,
|
||||||
navTitle: this.options.navTitle,
|
navTitle: this.options.navTitle,
|
||||||
title: this.options.title,
|
title: this.options.title,
|
||||||
sourceType: "curriculum",
|
sourceType: "curriculum",
|
||||||
};
|
isFudu: this.isFudu,
|
||||||
uni.setStorageSync('mynavData', mynavData);
|
fuduId: this.fuduId
|
||||||
|
});
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: '/pages/goods/order',
|
url: `/pages/goods/order?data=${mynavData}`,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
handleClickClose() {
|
handleClickClose() {
|
||||||
@@ -460,8 +526,54 @@
|
|||||||
this.getProductListForCourse(v);
|
this.getProductListForCourse(v);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
//点击复读
|
||||||
|
async goNewPay(item){
|
||||||
|
await this.getNewPaymentList(item.id)
|
||||||
|
if(this.newPaymentProList.length > 0){
|
||||||
|
this.goodsList = this.newPaymentProList;
|
||||||
|
this.selectGoodsData = this.goodsList[0];
|
||||||
|
console.log('this.goodsList', this.goodsList)
|
||||||
|
this.$refs.commonSelectGoods.open();
|
||||||
|
this.show = true;
|
||||||
|
this.isFudu = true;
|
||||||
|
//存复读需要的id
|
||||||
|
this.fuduId = item.id;
|
||||||
|
}else{
|
||||||
|
this.show = false;
|
||||||
|
this.isFudu = false;
|
||||||
|
this.$commonJS.showToast('暂无复读方案');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getNewPaymentList(id){
|
||||||
|
uni.showLoading({
|
||||||
|
title:'加载中'
|
||||||
|
})
|
||||||
|
await this.$http
|
||||||
|
.request({
|
||||||
|
url: 'common/courseRelearn/relearnShopProductList',
|
||||||
|
method: "POST",
|
||||||
|
data: {
|
||||||
|
catalogueId: id,
|
||||||
|
},
|
||||||
|
header: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.then(async (res) => {
|
||||||
|
console.log("复读列表", res);
|
||||||
|
uni.hideLoading()
|
||||||
|
if(res.code != 0){return this.$commonJS.showToast(res.errMsg);}
|
||||||
|
this.newPaymentProList = res.productList;
|
||||||
|
this.$forceUpdate();
|
||||||
|
}).catch(e => {
|
||||||
|
uni.hideLoading()
|
||||||
|
this.newPaymentProList = []
|
||||||
|
this.$commonJS.showToast(e.errMsg);
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
getProductListForCourse(v){
|
getProductListForCourse(v){
|
||||||
this.isFudu = false
|
this.isFudu = false;
|
||||||
this.$http.request({
|
this.$http.request({
|
||||||
url: this.urlList.goodsList,
|
url: this.urlList.goodsList,
|
||||||
method: "POST",
|
method: "POST",
|
||||||
@@ -489,10 +601,10 @@
|
|||||||
if(this.userVip){
|
if(this.userVip){
|
||||||
this.goVideo(data);
|
this.goVideo(data);
|
||||||
}else{
|
}else{
|
||||||
if(data.isAudition == 1||this.cateList[this.currentCateIndex].isBuy == 1){
|
if(data.isAudition == 1||this.cateList[slotProps.index].isBuy == 1){
|
||||||
this.goVideo(data);
|
this.goVideo(data);
|
||||||
}else{
|
}else{
|
||||||
if(this.cateList[this.currentCateIndex].type != 0){
|
if(this.cateList[slotProps.index].type != 0){
|
||||||
this.$commonJS.showToast("请先购买课程");
|
this.$commonJS.showToast("请先购买课程");
|
||||||
}else{
|
}else{
|
||||||
this.$commonJS.showToast("请先领取课程");
|
this.$commonJS.showToast("请先领取课程");
|
||||||
@@ -537,11 +649,11 @@
|
|||||||
getCourseDescriptionData() {
|
getCourseDescriptionData() {
|
||||||
var data = {};
|
var data = {};
|
||||||
var that = this;
|
var that = this;
|
||||||
this.$http.request({
|
that.$http.request({
|
||||||
url: this.urlList.list,
|
url: that.urlList.list,
|
||||||
method: "POST",
|
method: "POST",
|
||||||
data: {
|
data: {
|
||||||
id: this.options.id,
|
id: that.options.id,
|
||||||
},
|
},
|
||||||
header: {
|
header: {
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
@@ -550,21 +662,28 @@
|
|||||||
.then(async (res) => {
|
.then(async (res) => {
|
||||||
that.curriculumData = res.data.course;
|
that.curriculumData = res.data.course;
|
||||||
that.cateList = [...res.data.catalogues];
|
that.cateList = [...res.data.catalogues];
|
||||||
for (let i = 0; i < that.cateList.length; i++) {
|
|
||||||
var list = await that.getChapterList(that.cateList[i]);
|
|
||||||
|
|
||||||
that.allDataList[i] = {
|
for (let i = 0; i < that.cateList.length; i++) {
|
||||||
...that.cateList[i],
|
that.showNewPayBtn[i] = {status:false};
|
||||||
courseList: [...list],
|
var list = await that.getChapterList(that.cateList[i]);
|
||||||
};
|
if (that.cateList[i].isBuy == 0 && that.userVip == null) {
|
||||||
|
that.showNewPayBtn[i].status = await that.checkRenewPayment(that.cateList[i].id);
|
||||||
|
console.log("可以复读吗?", that.showNewPayBtn);
|
||||||
|
}
|
||||||
|
|
||||||
|
that.allDataList[i] = {
|
||||||
|
...that.cateList[i],
|
||||||
|
courseList: [...list],
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
//获取的数据解析
|
//获取的数据解析
|
||||||
this.removeImagesFromHTML();
|
that.removeImagesFromHTML();
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
that.$refs.commonAnchorLink.getDistanceArr();
|
that.$refs.commonAnchorLink.getDistanceArr();
|
||||||
}, 200);
|
}, 200);
|
||||||
this.$forceUpdate();
|
that.$forceUpdate();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -783,11 +902,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/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;
|
background-color: transparent !important;
|
||||||
}
|
}
|
||||||
@@ -1216,6 +1330,7 @@
|
|||||||
|
|
||||||
.not_purchased {
|
.not_purchased {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
margin-left: 20rpx;
|
||||||
|
|
||||||
.spot {
|
.spot {
|
||||||
width: 8rpx;
|
width: 8rpx;
|
||||||
@@ -1228,7 +1343,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
color: #33435d;
|
color: #33435d;
|
||||||
margin-left: 20rpx;
|
|
||||||
font-size: 24rpx;
|
font-size: 24rpx;
|
||||||
border-bottom: 2rpx dotted #33435d;
|
border-bottom: 2rpx dotted #33435d;
|
||||||
|
|
||||||
|
|||||||
@@ -70,76 +70,121 @@
|
|||||||
class="orderState orderState5"
|
class="orderState orderState5"
|
||||||
v-if="orderContet.orderStatus == 5">已超时</text>
|
v-if="orderContet.orderStatus == 5">已超时</text>
|
||||||
</view>
|
</view>
|
||||||
<view
|
|
||||||
class="orderContent"
|
|
||||||
v-for="(item, index) in goodsList"
|
|
||||||
:key="index"
|
|
||||||
@click="goDetail(item.productId, item)"
|
|
||||||
v-if="goodsList.length > 0"
|
|
||||||
style=" display: flex; align-items: center; justify-content: center;"
|
|
||||||
>
|
|
||||||
<view class="feng" style="position: relative">
|
|
||||||
<view v-if="item.delFlag == -1" class="delisted">已下架</view>
|
|
||||||
<image
|
|
||||||
style="width: 100%; height: 100%"
|
|
||||||
v-if="item.productImages"
|
|
||||||
:src="item.productImages"
|
|
||||||
mode="aspectFit"
|
|
||||||
></image>
|
|
||||||
<view
|
|
||||||
v-else style="
|
|
||||||
color: #c0c4cc;
|
|
||||||
font-size: 22rpx;
|
|
||||||
line-height: 140rpx;
|
|
||||||
text-align: center;">暂无封面图</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="goods_info">
|
<view class="order_block">
|
||||||
<view class="flexbox itemJian">
|
<view
|
||||||
<view class="booknameleft">
|
class="orderContent"
|
||||||
<text :style="`${item.delFlag == -1 ? 'color:#c0c4cc;' : ''}`">{{ item.productName }}</text>
|
v-for="(item, index) in goodsList"
|
||||||
</view>
|
:key="index"
|
||||||
<view style="color: #c0c4cc; font-size: 26rpx; font-weight: 700">
|
@click="goDetail(item.productId, item)"
|
||||||
×{{ item.quantity ? item.quantity : "" }}
|
v-if="goodsList.length > 0"
|
||||||
</view>
|
style=" display: flex; align-items: center; justify-content: center;"
|
||||||
</view>
|
>
|
||||||
</view>
|
<view class="feng" style="position: relative">
|
||||||
|
<view v-if="item.delFlag == -1" class="delisted">已下架</view>
|
||||||
|
<image
|
||||||
|
style="width: 100%; height: 100%"
|
||||||
|
v-if="item.productImages"
|
||||||
|
:src="item.productImages"
|
||||||
|
mode="aspectFit"
|
||||||
|
></image>
|
||||||
|
<view
|
||||||
|
v-else style="
|
||||||
|
color: #c0c4cc;
|
||||||
|
font-size: 22rpx;
|
||||||
|
line-height: 140rpx;
|
||||||
|
text-align: center;">暂无封面图</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
<br clear="both" />
|
<view class="goods_info">
|
||||||
</view>
|
<view class="flexbox itemJian">
|
||||||
<view class="orderContent" v-if="orderContet.orderType == 'vip'" style=" display: flex; align-items: center; justify-content: center;">
|
<view class="booknameleft">
|
||||||
<image
|
<text :style="`${item.delFlag == -1 ? 'color:#c0c4cc;' : ''}`">{{ item.productName }}</text>
|
||||||
src="/static/icon/vip.png"
|
</view>
|
||||||
mode="aspectFill"
|
<view style="color: #c0c4cc; font-size: 26rpx; font-weight: 700">
|
||||||
style="width: 100rpx; height: 100rpx;"
|
×{{ item.quantity ? item.quantity : "" }}
|
||||||
></image>
|
</view>
|
||||||
<view class="itemJian">
|
</view>
|
||||||
<view class="orderTitle" style="line-height: 46rpx; margin-bottom: 0;">
|
</view>
|
||||||
{{ orderContet.vipBuyConfigEntity.title }}
|
<br clear="both" />
|
||||||
<text class="vip_year" v-if="orderContet.vipBuyConfigEntity.year">({{ orderContet.vipBuyConfigEntity.year }}年)</text>
|
</view>
|
||||||
</view>
|
|
||||||
<br clear="both" />
|
|
||||||
</view>
|
|
||||||
<br clear="both" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view
|
<view class="orderContent" v-if="orderContet.orderType == 'trainingClass'">
|
||||||
class="orderContent" v-else-if="orderContet.orderType == 'point'">
|
<image
|
||||||
<image
|
src="/static/icon/icon_pxb.png"
|
||||||
src="/static/icon/pay_3.png"
|
mode="aspectFill"
|
||||||
mode="aspectFill"
|
style="width: 100rpx; height: 100rpx"
|
||||||
style="width: 100rpx; height: 100rpx"
|
></image>
|
||||||
></image>
|
<view class="itemJian">
|
||||||
<view class="itemJian">
|
<view class="orderTitle" style="line-height: 100rpx">
|
||||||
<view class="orderTitle" style="line-height: 100rpx">
|
<text>{{orderContet.remark}}</text>
|
||||||
<text>充值 {{ orderContet.bookBuyConfigEntity.money }}天医币</text>
|
</view>
|
||||||
</view>
|
|
||||||
<br clear="both" />
|
|
||||||
</view>
|
|
||||||
<br clear="both" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="order_item" style="">
|
<br clear="both" />
|
||||||
|
</view>
|
||||||
|
<br clear="both" />
|
||||||
|
</view>
|
||||||
|
<view class="orderContent" v-if="orderContet.orderType == 'relearn'">
|
||||||
|
<image
|
||||||
|
src="/static/icon/fugou.png"
|
||||||
|
mode="aspectFill"
|
||||||
|
style="width: 100rpx; height: 100rpx"
|
||||||
|
></image>
|
||||||
|
<view class="itemJian">
|
||||||
|
<view class="orderTitle" style="line-height: 60rpx">
|
||||||
|
<text>{{ orderContet.remark }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="orderPrice">
|
||||||
|
<text style="font-weight: bold"> </text>
|
||||||
|
</view>
|
||||||
|
<br clear="both" />
|
||||||
|
</view>
|
||||||
|
<br clear="both" />
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="orderContent" v-if="orderContet.orderType == 'vip'" style=" display: flex; align-items: center; justify-content: center;">
|
||||||
|
<image
|
||||||
|
src="/static/icon/vip.png"
|
||||||
|
mode="aspectFill"
|
||||||
|
style="width: 100rpx; height: 100rpx;"
|
||||||
|
></image>
|
||||||
|
<view class="itemJian">
|
||||||
|
<view class="orderTitle" style="line-height: 46rpx; margin-bottom: 0;">
|
||||||
|
{{ orderContet.vipBuyConfigEntity.title }}
|
||||||
|
<text class="vip_year" v-if="orderContet.vipBuyConfigEntity.year">({{ orderContet.vipBuyConfigEntity.year }}年)</text>
|
||||||
|
</view>
|
||||||
|
<br clear="both" />
|
||||||
|
</view>
|
||||||
|
<br clear="both" />
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="orderContent" v-if="orderContet.orderType == 'aiVip'||orderContet.orderType == 'upgradeAiVip'" style=" display: flex; align-items: center; justify-content: center;">
|
||||||
|
<image src="/static/icon/order_vip.png" mode="aspectFill" style="width: 100rpx; height: 100rpx; flex-shrink: 0;"></image>
|
||||||
|
<view class="itemJian">
|
||||||
|
<view class="orderTitle" style="line-height: 46rpx; margin-bottom: 0;">
|
||||||
|
{{ orderContet.aiBuyConfig.title }}<span style=" color: red;">({{ orderContet.aiBuyConfig.count }}次)<span v-if="orderContet.orderType=='upgradeAiVip'">(VIP升级)</span></span>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view
|
||||||
|
class="orderContent" v-if="orderContet.orderType == 'point'">
|
||||||
|
<image
|
||||||
|
src="/static/icon/pay_3.png"
|
||||||
|
mode="aspectFill"
|
||||||
|
style="width: 100rpx; height: 100rpx"
|
||||||
|
></image>
|
||||||
|
<view class="itemJian">
|
||||||
|
<view class="orderTitle" style="line-height: 100rpx">
|
||||||
|
<text>充值 {{ orderContet.bookBuyConfigEntity.money }}天医币</text>
|
||||||
|
</view>
|
||||||
|
<br clear="both" />
|
||||||
|
</view>
|
||||||
|
<br clear="both" />
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="order_item">
|
||||||
<view class="orderallpri">
|
<view class="orderallpri">
|
||||||
<span style="color: #666; margin-right: 10rpx; float: left">商品总价 :
|
<span style="color: #666; margin-right: 10rpx; float: left">商品总价 :
|
||||||
</span>
|
</span>
|
||||||
@@ -271,7 +316,6 @@
|
|||||||
<text style="font-size: 24rpx; color: #666">{{orderContet.paymentDate}}</text>
|
<text style="font-size: 24rpx; color: #666">{{orderContet.paymentDate}}</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class=""></view>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -534,7 +578,7 @@ export default {
|
|||||||
console.log(item, "item");
|
console.log(item, "item");
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url:
|
url:
|
||||||
"./deliverDetail?orderSn=" +
|
"/pages/order/deliverDetail?orderSn=" +
|
||||||
this.orderContet.orderSn +
|
this.orderContet.orderSn +
|
||||||
"&expressOrderSn=" +
|
"&expressOrderSn=" +
|
||||||
item.expressOrderSn +
|
item.expressOrderSn +
|
||||||
@@ -713,7 +757,7 @@ export default {
|
|||||||
// 直接展示详情
|
// 直接展示详情
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url:
|
url:
|
||||||
"./deliverDetail?orderSn=" +
|
"/pages/order/deliverDetail?orderSn=" +
|
||||||
item.orderSn +
|
item.orderSn +
|
||||||
"&expressOrderSn=" +
|
"&expressOrderSn=" +
|
||||||
this.sheetList[0].expressOrderSn,
|
this.sheetList[0].expressOrderSn,
|
||||||
@@ -725,7 +769,7 @@ export default {
|
|||||||
},
|
},
|
||||||
onPageJump(item) {
|
onPageJump(item) {
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: "./deliverDetail?objId=" + item,
|
url: "/pages/order/deliverDetail?objId=" + item,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
OverOrder() {
|
OverOrder() {
|
||||||
@@ -1195,16 +1239,15 @@ view,uni-view {
|
|||||||
.orderList {
|
.orderList {
|
||||||
padding: 20rpx;
|
padding: 20rpx;
|
||||||
padding-top: 0;
|
padding-top: 0;
|
||||||
|
margin-bottom: 120rpx;
|
||||||
|
|
||||||
.orderItem {
|
.orderItem {
|
||||||
padding: 30rpx 0rpx;
|
padding-top: 30rpx;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
border-radius: 10rpx;
|
border-radius: 10rpx;
|
||||||
margin-bottom: 30rpx;
|
|
||||||
|
|
||||||
.orderContent {
|
.orderContent {
|
||||||
padding: 20rpx;
|
padding: 20rpx;
|
||||||
margin-bottom: 20rpx;
|
|
||||||
|
|
||||||
image {
|
image {
|
||||||
width: 150rpx;
|
width: 150rpx;
|
||||||
@@ -1287,6 +1330,9 @@ view,uni-view {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.order_block .orderContent:last-child{
|
||||||
|
padding-bottom: 30rpx;
|
||||||
|
}
|
||||||
.copyCode {
|
.copyCode {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
margin-left: 20rpx;
|
margin-left: 20rpx;
|
||||||
|
|||||||
@@ -234,7 +234,7 @@
|
|||||||
</view>
|
</view>
|
||||||
<view class="goods_nav_box" v-if="!this.$store.state.loadingShow">
|
<view class="goods_nav_box" v-if="!this.$store.state.loadingShow">
|
||||||
<uni-goods-nav :fill="true" :options="buyOptions" :button-group="customButtonGroup1"
|
<uni-goods-nav :fill="true" :options="buyOptions" :button-group="customButtonGroup1"
|
||||||
@click="onHandleClickBuy" @buttonClick="onHandleClickBuy1" />
|
@click="onHandleClick" @buttonClick="onHandleClickBuy1" />
|
||||||
</view>
|
</view>
|
||||||
<common-select-goods ref="commonSelectGoods" :selectGoodsData="selectGoodsData" :goodsList="goodsList"
|
<common-select-goods ref="commonSelectGoods" :selectGoodsData="selectGoodsData" :goodsList="goodsList"
|
||||||
:buyOptions="buyOptions" :customButtonGroup1="customButtonGroup1" @selectGoods="selectGoods"
|
:buyOptions="buyOptions" :customButtonGroup1="customButtonGroup1" @selectGoods="selectGoods"
|
||||||
@@ -303,7 +303,10 @@
|
|||||||
parameterList: [],
|
parameterList: [],
|
||||||
booksList: [],
|
booksList: [],
|
||||||
coursesList: [],
|
coursesList: [],
|
||||||
buyOptions: [],
|
buyOptions: [{
|
||||||
|
icon: "cart",
|
||||||
|
text: "购物车",
|
||||||
|
}],
|
||||||
|
|
||||||
swiperList: [],
|
swiperList: [],
|
||||||
goodsList: [],
|
goodsList: [],
|
||||||
@@ -347,12 +350,20 @@
|
|||||||
|
|
||||||
goodsList: "book/shopproduct/getGlProductList",
|
goodsList: "book/shopproduct/getGlProductList",
|
||||||
},
|
},
|
||||||
customButtonGroup1: [{
|
customButtonGroup1: [
|
||||||
with: 200,
|
{
|
||||||
|
text: "加入购物车",
|
||||||
|
backgroundColor: "linear-gradient(90deg, #FFCD1E, #FF8A18)",
|
||||||
|
color: "#fff",
|
||||||
|
},
|
||||||
|
{
|
||||||
text: "立即购买",
|
text: "立即购买",
|
||||||
backgroundColor: "linear-gradient(90deg, #FE6035, #EF1224)",
|
backgroundColor: "linear-gradient(90deg, #FE6035, #EF1224)",
|
||||||
color: "#fff",
|
color: "#fff",
|
||||||
}, ],
|
}, ],
|
||||||
|
buttonType: '', //点击的是加入购物车还是购买
|
||||||
|
cartList: [], // 购物车列表
|
||||||
|
productAmount: 1, // 商品数量
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
onLoad(options) {
|
onLoad(options) {
|
||||||
@@ -414,7 +425,16 @@
|
|||||||
this.$forceUpdate();
|
this.$forceUpdate();
|
||||||
},
|
},
|
||||||
|
|
||||||
onHandleClickBuy1() {
|
//点击购物车
|
||||||
|
onHandleClick(){
|
||||||
|
console.log('点击购物车')
|
||||||
|
uni.navigateTo({
|
||||||
|
url: "/pages/goods/shopping",
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//点击筛选商品
|
||||||
|
onHandleClickBuy1(e) {
|
||||||
|
this.buttonType = e.index;
|
||||||
if (this.options.type == "visitor") {
|
if (this.options.type == "visitor") {
|
||||||
uni.showModal({
|
uni.showModal({
|
||||||
content: "登陆后可购买本商品",
|
content: "登陆后可购买本商品",
|
||||||
@@ -433,22 +453,115 @@
|
|||||||
}
|
}
|
||||||
this.$refs.commonSelectGoods.open();
|
this.$refs.commonSelectGoods.open();
|
||||||
},
|
},
|
||||||
|
//点击下单按钮
|
||||||
onHandleClickBuy() {
|
onHandleClickBuy() {
|
||||||
var mynavData = {
|
if(this.buttonType==0){ //如果是加入购物车
|
||||||
goods: [{
|
console.log('剩余', this.selectGoodsData.productStock)
|
||||||
productImages: this.selectGoodsData.productImages,
|
if(this.selectGoodsData.productStock==0){
|
||||||
productId: this.selectGoodsData.productId,
|
uni.showToast({
|
||||||
productName: this.selectGoodsData.productName,
|
title: "商品库存不足",
|
||||||
goodsType: this.selectGoodsData.goodsType,
|
icon: "none",
|
||||||
}],
|
duration: 1000,
|
||||||
navTitle: this.options.navTitle,
|
});
|
||||||
title: this.options.title,
|
}else{
|
||||||
typeId: 0
|
this.$http.post(`book/ordercart/getCartList?userId=${this.userInfo.id}`)
|
||||||
};
|
.then((res) => {
|
||||||
uni.setStorageSync('mynavData', mynavData);
|
this.cartList = res.cartList;
|
||||||
uni.navigateTo({
|
this.isAddLink(this.selectGoodsData);
|
||||||
url: '/pages/goods/order',
|
});
|
||||||
});
|
}
|
||||||
|
}else{ //如果是正常下单
|
||||||
|
var mynavData = JSON.stringify({
|
||||||
|
goods: [{
|
||||||
|
productImages: this.selectGoodsData.productImages,
|
||||||
|
productId: this.selectGoodsData.productId,
|
||||||
|
productName: this.selectGoodsData.productName,
|
||||||
|
goodsType: this.selectGoodsData.goodsType,
|
||||||
|
}],
|
||||||
|
typeId: 0
|
||||||
|
});
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/goods/order?data=${mynavData}`,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//统计商品信息
|
||||||
|
isAddLink(item) {
|
||||||
|
let data = {
|
||||||
|
userId: this.userInfo.id,
|
||||||
|
productId: item.productId,
|
||||||
|
productAmount: this.productAmount,
|
||||||
|
price: item.price,
|
||||||
|
};
|
||||||
|
// 判断列表是否为空
|
||||||
|
if (this.cartList.length > 0) {
|
||||||
|
let flag = "";
|
||||||
|
let shagnpin = {};
|
||||||
|
// 循环购物车列表
|
||||||
|
flag = this.cartList.some((item, index) => {
|
||||||
|
if (item.productId == data.productId) {
|
||||||
|
shagnpin = item;
|
||||||
|
shagnpin.productAmount = item.productAmount + 1;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (flag) {
|
||||||
|
// 已在购物车中添加
|
||||||
|
$http.request({
|
||||||
|
url: "book/ordercart/update",
|
||||||
|
method: "POST",
|
||||||
|
data: shagnpin,
|
||||||
|
header: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
uni.showToast({
|
||||||
|
title: "加入购物车成功",
|
||||||
|
duration: 1000,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// 加入购物车
|
||||||
|
$http.request({
|
||||||
|
url: "book/ordercart/save",
|
||||||
|
method: "POST",
|
||||||
|
data,
|
||||||
|
header: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
uni.showToast({
|
||||||
|
title: "加入购物车成功",
|
||||||
|
duration: 1000,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 购物车列表为空时直接加入购物车
|
||||||
|
$http.request({
|
||||||
|
url: "book/ordercart/save",
|
||||||
|
method: "POST",
|
||||||
|
data,
|
||||||
|
header: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
uni.showToast({
|
||||||
|
title: "加入购物车成功",
|
||||||
|
duration: 1000,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this.$refs.commonSelectGoods.close();
|
||||||
},
|
},
|
||||||
buttonClick(e) {
|
buttonClick(e) {
|
||||||
console.log(e);
|
console.log(e);
|
||||||
@@ -1276,4 +1389,9 @@
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/deep/.uni-tab__text{
|
||||||
|
font-size: 26rpx;
|
||||||
|
line-height: 28rpx;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
File diff suppressed because it is too large
Load Diff
384
pages/goods/shopping.vue
Normal file
384
pages/goods/shopping.vue
Normal file
@@ -0,0 +1,384 @@
|
|||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<z-nav-bar title="购物车"></z-nav-bar>
|
||||||
|
<view class="shopCarContent">
|
||||||
|
<scroll-view scroll-y="true" v-if="cartList.length>0">
|
||||||
|
<view class="cartItem" v-for="(item,index) in cartList" :key="index">
|
||||||
|
<view class="select">
|
||||||
|
<checkbox style="transform:scale(0.8)" :checked="item.checked" @click="checkboxGroupChange(index,item)" class="round checkedItem" />
|
||||||
|
</view>
|
||||||
|
<view class="cartContent" style="position: relative;">
|
||||||
|
<span v-if="item.isVipPrice==1&&item.vipPrice!=0&&item.vipPrice!=null"
|
||||||
|
style="position: absolute;z-index: 10;top: 4px;left: 0px; text-align: center;font-size: 18rpx;background-color: #f94f04;color: #fff; border-radius:4px; padding:2px 4px;line-height: 14px;">VIP优惠</span>
|
||||||
|
|
||||||
|
<image :src="item.image" mode="" @click="goDetail(item.productId)"></image>
|
||||||
|
<view class="itemCenter">
|
||||||
|
<view class="cartTitle" @click="goDetail(item.productId)" style="display: flex;align-items: center;">
|
||||||
|
<text>{{item.productName}}</text>
|
||||||
|
</view>
|
||||||
|
<view class="itemPrice">
|
||||||
|
<text v-if="item.isVipPrice==1&&item.vipPrice!=0&&item.vipPrice!=null">
|
||||||
|
<text style="color: #e97512;font-size: 16px;font-weight: bold;">¥{{(item.vipPrice).toFixed(2)}}</text>
|
||||||
|
<text style="color: #8a8a8a;font-size: 14px;margin-left: 4px;font-weight: bold;text-decoration: line-through;">¥{{(item.price).toFixed(2)}}</text>
|
||||||
|
</text>
|
||||||
|
|
||||||
|
<text
|
||||||
|
v-else-if="item.activityPrice && item.activityPrice > 0">
|
||||||
|
<text style="color: #e97512;font-size: 16px;font-weight: bold;">¥{{(item.activityPrice).toFixed(2)}}</text>
|
||||||
|
<text style="color: #8a8a8a;font-size: 14px;margin-left: 4px;font-weight: bold;text-decoration: line-through;">¥{{(item.price).toFixed(2)}}</text>
|
||||||
|
</text>
|
||||||
|
|
||||||
|
<text v-else style="color: #e97512;font-size: 16px;font-weight: bold;">¥{{item.price}}</text>
|
||||||
|
<u-number-box button-size="20" v-model="item.productAmount" @change="valChange($event,item)"
|
||||||
|
:input-width="25" :input-height="10" :min="1" :max="item.productStock" integer
|
||||||
|
@overlimit='overlimit'></u-number-box>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</scroll-view>
|
||||||
|
<view v-else style=" font-size: 28rpx; text-align: center; padding-top: 100rpx; color: #999;">暂无数据</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 底部操作区 -->
|
||||||
|
<view class="shopCarFooter">
|
||||||
|
<view class="selectAll">
|
||||||
|
<checkbox :checked="all" style="transform:scale(0.8)" @click="isSelectAll()" class="round checkedItem" />
|
||||||
|
<text class="cartCho">全选</text>
|
||||||
|
<button class="mini-btn"
|
||||||
|
style="border-radius: 10rpx; font-size: 26rpx; line-height: 30rpx; padding: 10rpx 25rpx; margin-left: 20rpx;"
|
||||||
|
v-if="isCartDelShow" @click="delCart()" type="warn" size="mini">删除</button>
|
||||||
|
</view>
|
||||||
|
<view class="exhibition">
|
||||||
|
<view class="total">合计: <b>¥{{totalPrice}}</b>
|
||||||
|
</view>
|
||||||
|
<view class="settlement" @click="setTment()">
|
||||||
|
结算
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import $http from '@/config/requestConfig.js';
|
||||||
|
import {
|
||||||
|
mapState
|
||||||
|
} from 'vuex';
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
playData: {},
|
||||||
|
totalPrice: 0, // 总价
|
||||||
|
all: false, // 是否全选
|
||||||
|
isCartDelShow: false, // 是否展示删除按钮
|
||||||
|
cartList: [] // 购物车列表
|
||||||
|
};
|
||||||
|
},
|
||||||
|
//第一次加载
|
||||||
|
onLoad(e) {
|
||||||
|
this.getCartList()
|
||||||
|
},
|
||||||
|
//页面显示
|
||||||
|
onShow() {
|
||||||
|
this.getCartList();
|
||||||
|
this.all = false;
|
||||||
|
this.isCartDelShow = false
|
||||||
|
this.totalPrice = 0
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapState(['userInfo']),
|
||||||
|
},
|
||||||
|
//方法
|
||||||
|
methods: {
|
||||||
|
// 获取购物车列表
|
||||||
|
getCartList() {
|
||||||
|
this.$http.post(`book/ordercart/getCartList?userId=${this.userInfo.id}`).then(res => {
|
||||||
|
this.cartList = res.cartList
|
||||||
|
if (res.cartList.length > 0) {
|
||||||
|
res.cartList.forEach((item, index) => {
|
||||||
|
item.checked = false
|
||||||
|
})
|
||||||
|
this.cartList = res.cartList
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 是否全选
|
||||||
|
isSelectAll(e) {
|
||||||
|
if (this.cartList.length > 0) {
|
||||||
|
this.all = !this.all
|
||||||
|
this.cartList.forEach((item, index) => {
|
||||||
|
item.checked = this.all
|
||||||
|
})
|
||||||
|
this.isCartDelShow = this.all
|
||||||
|
this.total()
|
||||||
|
} else {
|
||||||
|
this.all = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 选中单独商品
|
||||||
|
checkboxGroupChange(index, item) {
|
||||||
|
// 修改当前item的checked
|
||||||
|
this.cartList[index].checked = !item.checked
|
||||||
|
// 判断是否全选
|
||||||
|
this.all = this.cartList.every((item, index) => {
|
||||||
|
return item.checked == true
|
||||||
|
})
|
||||||
|
// 判断是否展示删除按钮
|
||||||
|
this.isCartDelShow = this.cartList.some((item, index) => {
|
||||||
|
return item.checked == true
|
||||||
|
})
|
||||||
|
// 计算总价
|
||||||
|
this.total()
|
||||||
|
},
|
||||||
|
// 计算总价
|
||||||
|
total() {
|
||||||
|
let allprice = 0;
|
||||||
|
this.cartList.forEach((item, index) => {
|
||||||
|
let price = 0;
|
||||||
|
if (item.checked) {
|
||||||
|
if (item.isVipPrice == 1 && item.vipPrice != 0) {
|
||||||
|
price = (item.productAmount * item.vipPrice).toFixed(2);
|
||||||
|
} else {
|
||||||
|
if (item.activityPrice && item.activityPrice > 0) {
|
||||||
|
price = (item.productAmount * item.activityPrice).toFixed(2);
|
||||||
|
} else {
|
||||||
|
price = (item.productAmount * item.price).toFixed(2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
allprice += Number(price)
|
||||||
|
})
|
||||||
|
this.totalPrice = allprice.toFixed(2)
|
||||||
|
},
|
||||||
|
// 超出阈值时
|
||||||
|
overlimit() {
|
||||||
|
uni.showToast({
|
||||||
|
title: '超出商品数量',
|
||||||
|
icon: 'error',
|
||||||
|
duration: 1000
|
||||||
|
})
|
||||||
|
},
|
||||||
|
valChange(e, item) {
|
||||||
|
console.log(e)
|
||||||
|
let productItem = {}
|
||||||
|
productItem = item
|
||||||
|
productItem.productAmount = e.value
|
||||||
|
this.updateCart(productItem)
|
||||||
|
setTimeout(() => {
|
||||||
|
this.total()
|
||||||
|
}, 300)
|
||||||
|
},
|
||||||
|
// 更新购物车
|
||||||
|
updateCart(shagnpin) {
|
||||||
|
// 已在购物车中添加
|
||||||
|
$http.request({
|
||||||
|
url: "book/ordercart/update",
|
||||||
|
method: "POST",
|
||||||
|
data: shagnpin,
|
||||||
|
header: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
}
|
||||||
|
}).then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
// 删除购物车
|
||||||
|
delCart() {
|
||||||
|
let cartIdArr = [];
|
||||||
|
this.cartList.forEach((item, index) => {
|
||||||
|
if (item.checked) {
|
||||||
|
cartIdArr.push(item.cartId)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
uni.showModal({
|
||||||
|
title: '提示',
|
||||||
|
content: '是否删除这个商品',
|
||||||
|
confirmText: '确定',
|
||||||
|
success: (res) => {
|
||||||
|
if (res.confirm) {
|
||||||
|
uni.showLoading({
|
||||||
|
title: '加载中',
|
||||||
|
mask: true
|
||||||
|
})
|
||||||
|
console.log(cartIdArr)
|
||||||
|
$http.request({
|
||||||
|
url: "book/ordercart/delete",
|
||||||
|
method: "POST",
|
||||||
|
data: cartIdArr,
|
||||||
|
header: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
}).then(res => {
|
||||||
|
this.isCartDelShow = false
|
||||||
|
this.totalPrice = 0
|
||||||
|
this.getCartList()
|
||||||
|
uni.hideLoading();
|
||||||
|
this.all = false;
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
console.log('cancel') //点击取消之后执行的代码
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 跳转结算页面
|
||||||
|
setTment() {
|
||||||
|
let goods = []
|
||||||
|
this.cartList.forEach((item, index) => {
|
||||||
|
if (item.checked) {
|
||||||
|
goods.push({
|
||||||
|
productImages: item.productImages,
|
||||||
|
productId: item.productId,
|
||||||
|
productName: item.productName,
|
||||||
|
goodsType: item.goodsType,
|
||||||
|
productAmount: item.productAmount,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
let mynavData = JSON.stringify({
|
||||||
|
goods: goods,
|
||||||
|
typeId: 1
|
||||||
|
})
|
||||||
|
// 如果没有勾选
|
||||||
|
if (goods.length == 0) {
|
||||||
|
uni.showToast({
|
||||||
|
title: "请先勾选商品",
|
||||||
|
icon: 'error',
|
||||||
|
duration: 1000,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/goods/order?data='+ mynavData
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//商品内容跳转
|
||||||
|
goDetail(id) {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/goods/index?isMiaosha=1&id='+id
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
@import '@/static/mixin.scss';
|
||||||
|
|
||||||
|
.shopCarContent {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
padding-bottom: 104rpx;
|
||||||
|
padding-top: 20rpx;
|
||||||
|
|
||||||
|
.cartItem {
|
||||||
|
padding: 10rpx 10rpx 10rpx 10rpx;
|
||||||
|
margin-bottom: 20rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
background-color: #fff;
|
||||||
|
|
||||||
|
.cartContent {
|
||||||
|
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
image {
|
||||||
|
width: 130rpx;
|
||||||
|
height: 150rpx;
|
||||||
|
border-radius: 10rpx;
|
||||||
|
padding: 10rpx;
|
||||||
|
margin-right: 15rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.itemCenter {
|
||||||
|
flex: 1;
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: space-around;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cartTitle {
|
||||||
|
font-size: 30rpx;
|
||||||
|
margin: 35rpx 0 20rpx 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.itemPrice {
|
||||||
|
font-size: 28rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.shopCarFooter {
|
||||||
|
width: 100%;
|
||||||
|
height: 100rpx;
|
||||||
|
padding: 20rpx;
|
||||||
|
background-color: #fff;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
position: fixed;
|
||||||
|
bottom: 0;
|
||||||
|
|
||||||
|
.selectAll {
|
||||||
|
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
|
||||||
|
.cartCho {
|
||||||
|
font-size: 26rpx;
|
||||||
|
color: #888;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cartDel {
|
||||||
|
font-weight: bold;
|
||||||
|
color: #bf0c0c;
|
||||||
|
font-size: 14px;
|
||||||
|
margin: 12rpx 0 0 20rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.exhibition {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.total {
|
||||||
|
font-size: 15px;
|
||||||
|
padding: 0 40rpx 0 0;
|
||||||
|
color: #888;
|
||||||
|
|
||||||
|
b {
|
||||||
|
margin-left: 10rpx;
|
||||||
|
color: #ef1224;
|
||||||
|
font-size: 35rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.settlement {
|
||||||
|
font-size: 28rpx;
|
||||||
|
font-weight: 700;
|
||||||
|
padding: 10rpx 50rpx;
|
||||||
|
background-image: linear-gradient(90deg, rgb(254, 96, 53), rgb(239, 18, 36));
|
||||||
|
color: #fff;
|
||||||
|
border-radius: 40rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/deep/.uni-checkbox-input{
|
||||||
|
border-radius: 50rpx;
|
||||||
|
}
|
||||||
|
.shopCarFooter .selectAll{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
/deep/uni-checkbox .uni-checkbox-input.uni-checkbox-input-checked{
|
||||||
|
color: $themeColor !important;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -175,6 +175,16 @@ export default {
|
|||||||
url: "/pages/order/index",
|
url: "/pages/order/index",
|
||||||
type: "switchTab",
|
type: "switchTab",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "我的购物车",
|
||||||
|
url: "/pages/goods/shopping",
|
||||||
|
type: "pageJump",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "培训班管理",
|
||||||
|
url: "/pages/trainingCourse/index",
|
||||||
|
type: "pageJump",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "个人资料",
|
name: "个人资料",
|
||||||
url: "/pages/my/persData",
|
url: "/pages/my/persData",
|
||||||
|
|||||||
@@ -290,7 +290,7 @@
|
|||||||
methods: {
|
methods: {
|
||||||
|
|
||||||
async checkPermision() {
|
async checkPermision() {
|
||||||
var result = await permission.premissionCheck("CAMERA_EXTERNAL_STORAGE")
|
var result = await permission.premissionCheck("CAMERA")
|
||||||
if (result != 1) {
|
if (result != 1) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,6 +45,54 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
<view v-if="slotProps.row.orderType == 'trainingClass'" class="bookinfolist">
|
||||||
|
<image
|
||||||
|
class="feng fengPoint"
|
||||||
|
src="/static/icon/icon_pxb.png"
|
||||||
|
mode="aspectFill"
|
||||||
|
>
|
||||||
|
</image>
|
||||||
|
<view class="btns flexbox">
|
||||||
|
<view class="booknameleft">{{ slotProps.row.remark }}</view>
|
||||||
|
|
||||||
|
<view style="
|
||||||
|
line-height: 58rpx;
|
||||||
|
color: #333;
|
||||||
|
font-size: 26rpx;
|
||||||
|
font-weight: 700;
|
||||||
|
">
|
||||||
|
<text style="font-size: 20rpx"></text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="btns flexbox"
|
||||||
|
style="color: #9f9f9f; font-size: 24rpx">
|
||||||
|
下单时间:{{ slotProps.row.createTime }}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view v-if="slotProps.row.orderType == 'relearn'" class="bookinfolist" style=" display: flex; align-items: center;">
|
||||||
|
<image
|
||||||
|
class="feng fengPoint"
|
||||||
|
src="/static/icon/fugou.png"
|
||||||
|
mode="aspectFill"
|
||||||
|
>
|
||||||
|
</image>
|
||||||
|
<view class="btns flexbox">
|
||||||
|
<view class="booknameleft">
|
||||||
|
{{ slotProps.row.remark }}
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view
|
||||||
|
style="
|
||||||
|
line-height: 58rpx;
|
||||||
|
color: #333;
|
||||||
|
font-size: 26rpx;
|
||||||
|
font-weight: 700;
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<text style="font-size: 20rpx"></text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
<view v-if="slotProps.row.orderType == 'vip'" class="bookinfolist">
|
<view v-if="slotProps.row.orderType == 'vip'" class="bookinfolist">
|
||||||
<image class="feng fengPoint" src="../../static/icon/vip.png" mode="aspectFill"></image>
|
<image class="feng fengPoint" src="../../static/icon/vip.png" mode="aspectFill"></image>
|
||||||
<view class="btns flexbox">
|
<view class="btns flexbox">
|
||||||
@@ -63,7 +111,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="btns flexbox"
|
<view class="btns flexbox"
|
||||||
style="color: #9f9f9f; margin-top: 10rpx; font-size: 24rpx">
|
style="color: #9f9f9f; font-size: 24rpx">
|
||||||
下单时间:{{ slotProps.row.createTime }}
|
下单时间:{{ slotProps.row.createTime }}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -84,7 +132,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="btns flexbox"
|
<view class="btns flexbox"
|
||||||
style="color: #9f9f9f; margin-top: 10rpx; font-size: 24rpx">
|
style="color: #9f9f9f; font-size: 24rpx">
|
||||||
下单时间:{{ slotProps.row.createTime }}
|
下单时间:{{ slotProps.row.createTime }}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@@ -203,11 +251,10 @@
|
|||||||
<view v-if="slotProps.row.orderStatus == 0"
|
<view v-if="slotProps.row.orderStatus == 0"
|
||||||
@click.stop="canceOrder(slotProps.row)">取消订单</view>
|
@click.stop="canceOrder(slotProps.row)">取消订单</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="btns flexbox" style="margin-top: 10rpx">
|
<view class="btns flexbox" style="margin-top: 10rpx">
|
||||||
<view class="left" style="color: #c0c4cc"
|
<view class="left" style="color: #c0c4cc"
|
||||||
v-if="slotProps.row.orderStatus != 3"
|
|
||||||
@click.stop="openMore(slotProps.row, slotProps.rowIndex)">更多</view>
|
@click.stop="openMore(slotProps.row, slotProps.rowIndex)">更多</view>
|
||||||
<view class="left" v-if="slotProps.row.orderStatus == 3"></view>
|
|
||||||
<view class="right flexbox opbtns">
|
<view class="right flexbox opbtns">
|
||||||
<view class="orderstatusbtn orderstatusbtn_success"
|
<view class="orderstatusbtn orderstatusbtn_success"
|
||||||
v-if="slotProps.row.orderStatus == 0"
|
v-if="slotProps.row.orderStatus == 0"
|
||||||
@@ -220,7 +267,6 @@
|
|||||||
<view class="orderstatusbtn" v-if="slotProps.row.orderStatus == 3">申请售后</view>
|
<view class="orderstatusbtn" v-if="slotProps.row.orderStatus == 3">申请售后</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view style="border-bottom: 2rpx solid #e9e9e9; height: 50rpx"
|
<view style="border-bottom: 2rpx solid #e9e9e9; height: 50rpx"
|
||||||
v-if="slotProps.rowIndex < slotProps.row.length - 1"></view>
|
v-if="slotProps.rowIndex < slotProps.row.length - 1"></view>
|
||||||
</view>
|
</view>
|
||||||
|
|||||||
@@ -304,7 +304,7 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//如果是延期的
|
//如果是延期的
|
||||||
if(this.yanqiStatus){
|
if(this.yanqiStatus||this.orderType=='pxb'){
|
||||||
this.priceBreakdownList.push({
|
this.priceBreakdownList.push({
|
||||||
type: 2,
|
type: 2,
|
||||||
imgUrl: require("@/static/icon/jifen.png"),
|
imgUrl: require("@/static/icon/jifen.png"),
|
||||||
@@ -327,7 +327,7 @@ export default {
|
|||||||
if (this.userInfo.id != undefined) {
|
if (this.userInfo.id != undefined) {
|
||||||
await this.$http.post("book/user/info/" + this.userInfo.id).then(async(res) => {
|
await this.$http.post("book/user/info/" + this.userInfo.id).then(async(res) => {
|
||||||
this.user = res.user;
|
this.user = res.user;
|
||||||
if(this.yanqiStatus){
|
if(this.yanqiStatus||this.orderType=='pxb'){
|
||||||
await this.getTotalPrice(res.user);
|
await this.getTotalPrice(res.user);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -447,25 +447,32 @@ export default {
|
|||||||
//培训班的购买
|
//培训班的购买
|
||||||
async submitPxb() {
|
async submitPxb() {
|
||||||
debounce(async () => {
|
debounce(async () => {
|
||||||
uni.showLoading({
|
|
||||||
title: '加载中'
|
|
||||||
});
|
|
||||||
if(!this.name){
|
if(!this.name){
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: "培训姓名不能为空",
|
title: "培训姓名不能为空",
|
||||||
icon: 'none'
|
icon: 'none'
|
||||||
});
|
});
|
||||||
uni.hideLoading()
|
return false;
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
if(this.buyStatus){
|
||||||
|
uni.showToast({
|
||||||
|
title: "请勿重复下单",
|
||||||
|
icon: "none",
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
uni.showLoading({
|
||||||
|
title: '加载中'
|
||||||
|
});
|
||||||
|
//下单状态
|
||||||
|
this.buyStatus = true;
|
||||||
var that = this;
|
var that = this;
|
||||||
let data = {
|
let data = {
|
||||||
paymentMethod: that.payType,
|
paymentMethod: that.payType,
|
||||||
orderMoney: that.options.price,
|
orderMoney: that.options.price,
|
||||||
jfDeduction: that.jfNumber,
|
jfDeduction: that.jfNumber,
|
||||||
realMoney: that.actualPayment,
|
realMoney: that.actualPayment,
|
||||||
come: '2',
|
come: '3',
|
||||||
remark: that.options.title,
|
remark: that.options.title,
|
||||||
trainingClassId: that.options.id,
|
trainingClassId: that.options.id,
|
||||||
trainingClassIdentity: that.options.identity +':'+that.options.price,
|
trainingClassIdentity: that.options.identity +':'+that.options.price,
|
||||||
@@ -488,6 +495,7 @@ export default {
|
|||||||
title: "失败,请重新下单",
|
title: "失败,请重新下单",
|
||||||
icon: "none"
|
icon: "none"
|
||||||
});
|
});
|
||||||
|
that.buyStatus = false;
|
||||||
} else {
|
} else {
|
||||||
if (that.payType == 2) {
|
if (that.payType == 2) {
|
||||||
// 常规支付
|
// 常规支付
|
||||||
@@ -519,6 +527,7 @@ export default {
|
|||||||
}, 1000);
|
}, 1000);
|
||||||
} else {
|
} else {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
that.buyStatus = false;
|
||||||
console.log("延迟调用 失败提示");
|
console.log("延迟调用 失败提示");
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: "支付失败"
|
title: "支付失败"
|
||||||
@@ -545,8 +554,7 @@ export default {
|
|||||||
})
|
})
|
||||||
}, 1000);
|
}, 1000);
|
||||||
} else {
|
} else {
|
||||||
if (res.data.errMsg.indexOf(
|
if (res.data.errMsg.indexOf("User canceled") != -1) {
|
||||||
"User canceled") != -1) {
|
|
||||||
uni.showToast({
|
uni.showToast({
|
||||||
title: "用户取消支付",
|
title: "用户取消支付",
|
||||||
icon: "none"
|
icon: "none"
|
||||||
@@ -557,6 +565,7 @@ export default {
|
|||||||
icon: "none"
|
icon: "none"
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
that.buyStatus = false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else if (that.payType == 4) {
|
} else if (that.payType == 4) {
|
||||||
@@ -573,12 +582,12 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
uni.removeStorageSync('mynavData');
|
|
||||||
})
|
})
|
||||||
.catch(()=>{
|
.catch(()=>{
|
||||||
uni.hideLoading()
|
uni.hideLoading();
|
||||||
|
that.buyStatus = false;
|
||||||
});
|
});
|
||||||
}, 400);
|
}, 1000);
|
||||||
},
|
},
|
||||||
|
|
||||||
//vip的购买
|
//vip的购买
|
||||||
@@ -733,7 +742,7 @@ export default {
|
|||||||
|
|
||||||
this.xieyi = data;
|
this.xieyi = data;
|
||||||
this.xieyiShow = true;
|
this.xieyiShow = true;
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
69
pages/trainingCourse/detail.vue
Normal file
69
pages/trainingCourse/detail.vue
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
<template>
|
||||||
|
<view class="page" style=" height:100vh; background: #f6f6f8;">
|
||||||
|
<z-nav-bar title="培训班管理"></z-nav-bar>
|
||||||
|
<view v-if="image&&image.length>0">
|
||||||
|
<image v-for="(item,index) in image" :key="index" :src="item" mode="aspectFit" class="image"></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import $http from '@/config/requestConfig.js';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
image: [],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(e) {
|
||||||
|
this.image = e.image.split(',');
|
||||||
|
console.log(this.image)
|
||||||
|
},
|
||||||
|
onShow() {
|
||||||
|
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
//获取数据
|
||||||
|
getData(){
|
||||||
|
uni.showLoading({
|
||||||
|
title: '加载中'
|
||||||
|
})
|
||||||
|
$http.request({
|
||||||
|
url: "common/trainingClass/trainingClassList",
|
||||||
|
method: "POST",
|
||||||
|
data: {
|
||||||
|
year: this.year
|
||||||
|
},
|
||||||
|
header: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.then(res => {
|
||||||
|
uni.hideLoading();
|
||||||
|
if (res.code == 0) {
|
||||||
|
if(res.trainingClassList&&res.trainingClassList.length>0){
|
||||||
|
this.list = res.trainingClassList;
|
||||||
|
}else{
|
||||||
|
this.list = [];
|
||||||
|
this.nullStatus = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).catch(e => {
|
||||||
|
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.image{
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
/deep/.image img{
|
||||||
|
position: initial;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
238
pages/trainingCourse/index.vue
Normal file
238
pages/trainingCourse/index.vue
Normal file
@@ -0,0 +1,238 @@
|
|||||||
|
<template>
|
||||||
|
<view class="page" style=" height:100vh; background: #f6f6f8;">
|
||||||
|
<z-nav-bar title="培训班管理" :backToMyPage="true">
|
||||||
|
<view slot="right">
|
||||||
|
<picker mode="date" fields="year" @change="handleYearChange">
|
||||||
|
<view class="picker">
|
||||||
|
<uni-icons type="info" size="16"></uni-icons>{{ year || '请选择年份' }}
|
||||||
|
</view>
|
||||||
|
</picker>
|
||||||
|
</view>
|
||||||
|
</z-nav-bar>
|
||||||
|
<view class="list_block" v-if="!nullStatus">
|
||||||
|
<view class="list_item" v-for="(item,index) in list" :key="index">
|
||||||
|
<view class="list_item_right">
|
||||||
|
<text class="list_item_title">{{item.title}}</text>
|
||||||
|
<text class="list_item_text">活动类型:<span v-if="item.type==1">线上</span><span v-else>线下</span></text>
|
||||||
|
<text class="list_item_text">活动年份:{{item.year}}</text>
|
||||||
|
<text class="list_item_text">培训日期:{{item.trainingDate}}至{{item.endDate}}</text>
|
||||||
|
<text class="list_item_text">培训价格:
|
||||||
|
<span style="color: red; font-size: 32rpx; font-weight: bold;">¥{{item.finalFee}}</span>
|
||||||
|
<span style="text-decoration: line-through; padding-left: 15rpx;" v-if="Number(item.finalFee)!=item.fee">¥{{item.fee}}</span>
|
||||||
|
</text>
|
||||||
|
<text class="list_item_text" style=" font-size: 24rpx;" v-if="Number(item.finalFee)!=item.fee">{{item.identity}}身份报名享优惠折扣</text>
|
||||||
|
<view style=" display: flex; align-items: center;">
|
||||||
|
<uni-button class="list_item_btn" @click="goToDetail(item)">了解详情</uni-button>
|
||||||
|
<uni-button class="list_item_btn list_item_btn_bm" @click="goToBuy(item)" v-if="item.isJoin!=1&&item.singupFlag!=0">立即报名</uni-button>
|
||||||
|
<uni-button class="list_item_btn list_item_btn_ybm" @click="goToContact(item)" v-if="item.isJoin==1&&item.singupFlag!=0">已报名联系客服</uni-button>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="statusBg" v-if="item.isJoin==1">已报名</view>
|
||||||
|
<view class="statusBg statusBg2" :class="item.isJoin==1?'statusBg_top':''" v-if="item.singupFlag==0">已关闭</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="zanwu" v-if="nullStatus">暂无数据</view>
|
||||||
|
<u-popup key="1" v-if="showCodeImg" :show="showCodeImg" :round="10" @close="closePup">
|
||||||
|
<view class="box6">
|
||||||
|
<text>非常感谢您报名我们的培训班,<br/>您可以添加客服微信,我们会邀请您进培训群。</text>
|
||||||
|
<image @click="previewImage('/static/qiyeWx.jpg')" src="/static/qiyeWx.jpg" mode="widthFix" style="width: 100px; height: 100px; margin: 0 auto;"></image>
|
||||||
|
</view>
|
||||||
|
</u-popup>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import $http from '@/config/requestConfig.js';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
list: [],
|
||||||
|
nullStatus: false,
|
||||||
|
year: '',
|
||||||
|
showCodeImg: false,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(e) {
|
||||||
|
|
||||||
|
},
|
||||||
|
onShow() {
|
||||||
|
this.getData();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
//获取数据
|
||||||
|
getData(){
|
||||||
|
uni.showLoading({
|
||||||
|
title: '加载中'
|
||||||
|
})
|
||||||
|
$http.request({
|
||||||
|
url: "common/trainingClass/trainingClassList",
|
||||||
|
method: "POST",
|
||||||
|
data: {
|
||||||
|
year: this.year
|
||||||
|
},
|
||||||
|
header: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.then(res => {
|
||||||
|
uni.hideLoading();
|
||||||
|
if (res.code == 0) {
|
||||||
|
if(res.trainingClassList&&res.trainingClassList.length>0){
|
||||||
|
this.list = res.trainingClassList;
|
||||||
|
}else{
|
||||||
|
this.list = [];
|
||||||
|
this.nullStatus = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).catch(e => {
|
||||||
|
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//选择年份
|
||||||
|
handleYearChange(event){
|
||||||
|
this.year = event.detail.value;
|
||||||
|
this.list = [];
|
||||||
|
this.nullStatus = false;
|
||||||
|
this.getData();
|
||||||
|
},
|
||||||
|
//了解详情
|
||||||
|
goToDetail(item){
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/pages/trainingCourse/detail?image=${item.icon}`,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//立即报名
|
||||||
|
goToBuy(item){
|
||||||
|
var data = {
|
||||||
|
id: item.id,
|
||||||
|
title: item.title,
|
||||||
|
price: item.finalFee,
|
||||||
|
identity: item.identity,
|
||||||
|
orderType: 'pxb',
|
||||||
|
}
|
||||||
|
uni.navigateTo({
|
||||||
|
url: '/pages/place/order?data='+JSON.stringify(data)
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//联系客服
|
||||||
|
goToContact(item){
|
||||||
|
this.showCodeImg = true;
|
||||||
|
},
|
||||||
|
//关闭弹窗
|
||||||
|
closePup(){
|
||||||
|
this.showCodeImg = false;
|
||||||
|
},
|
||||||
|
//放大图片
|
||||||
|
previewImage(url) {
|
||||||
|
this.showCodeImg = false
|
||||||
|
uni.previewImage({
|
||||||
|
urls: [url],
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
onBackPress(){
|
||||||
|
uni.reLaunch({
|
||||||
|
url:'/pages/my/index'
|
||||||
|
})
|
||||||
|
return true; //阻止默认返回行为
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.zanwu{
|
||||||
|
font-style: 26rpx;
|
||||||
|
line-height: 30rpx;
|
||||||
|
padding-top: 100rpx;
|
||||||
|
text-align: center;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
.list_block{
|
||||||
|
padding: 20rpx;
|
||||||
|
}
|
||||||
|
.list_item{
|
||||||
|
margin-bottom: 20rpx;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 15rpx;
|
||||||
|
padding: 20rpx;
|
||||||
|
box-shadow: 0px 0px 6px 0px #a7bbe4;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.list_item_right{
|
||||||
|
margin-left: 20rpx;
|
||||||
|
}
|
||||||
|
.list_item_right text{
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
.list_item_title{
|
||||||
|
font-size: 32rpx;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #333;
|
||||||
|
line-height: 40rpx;
|
||||||
|
padding-bottom: 10rpx;
|
||||||
|
}
|
||||||
|
.list_item_text{
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #666;
|
||||||
|
line-height: 42rpx;
|
||||||
|
}
|
||||||
|
.list_item_btn{
|
||||||
|
margin-top: 15rpx;
|
||||||
|
width: 150rpx;
|
||||||
|
height: 50rpx;
|
||||||
|
text-align: center;
|
||||||
|
line-height: 50rpx;
|
||||||
|
border-radius: 15rpx;
|
||||||
|
background-image: linear-gradient(90deg, #258feb 0%, #00e1ec 100%);
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.list_item_btn_bm{
|
||||||
|
margin-left: 10rpx;
|
||||||
|
background-image: linear-gradient(90deg, #ff1f00 0%, #fa9f93 100%);
|
||||||
|
}
|
||||||
|
.list_item_btn_ybm{
|
||||||
|
width: 200rpx;
|
||||||
|
margin-left: 10rpx;
|
||||||
|
background-image: linear-gradient(90deg, #ff8d00 0%, #f5c350 100%);
|
||||||
|
}
|
||||||
|
.statusBg{
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
top: 20rpx;
|
||||||
|
width: 100rpx;
|
||||||
|
height: 44rpx;
|
||||||
|
line-height: 44rpx;
|
||||||
|
background: #ff1f00;
|
||||||
|
opacity: 0.8;
|
||||||
|
border-radius: 50rpx 0 0 50rpx;
|
||||||
|
font-size: 22rpx;
|
||||||
|
color: #fff;
|
||||||
|
padding-left: 20rpx;
|
||||||
|
}
|
||||||
|
.statusBg2{
|
||||||
|
background: #999;
|
||||||
|
}
|
||||||
|
.statusBg_top{
|
||||||
|
top: 70rpx;
|
||||||
|
}
|
||||||
|
.picker{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
font-size: 26rpx;
|
||||||
|
padding-right: 20rpx;
|
||||||
|
}
|
||||||
|
.box6{
|
||||||
|
padding: 20rpx;
|
||||||
|
}
|
||||||
|
.box6 text{
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
color: #999;
|
||||||
|
margin-bottom: 20rpx;
|
||||||
|
font-size: 28rpx;
|
||||||
|
line-height: 36rpx;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -197,7 +197,7 @@ export default {
|
|||||||
this.telError = false
|
this.telError = false
|
||||||
},
|
},
|
||||||
async checkPermision() {
|
async checkPermision() {
|
||||||
var result = await permission.premissionCheck("CAMERA_EXTERNAL_STORAGE")
|
var result = await permission.premissionCheck("CAMERA")
|
||||||
if (result != 1) {
|
if (result != 1) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
static/icon/fugou.png
Normal file
BIN
static/icon/fugou.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.2 KiB |
BIN
static/icon/icon_pxb.png
Normal file
BIN
static/icon/icon_pxb.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 635 B |
BIN
static/icon/order_vip.png
Normal file
BIN
static/icon/order_vip.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
@@ -306,6 +306,7 @@ export default {
|
|||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
backToMyPage: Boolean
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -416,6 +417,11 @@ export default {
|
|||||||
if (this.backState == 3000) {
|
if (this.backState == 3000) {
|
||||||
this.$emit("backClick");
|
this.$emit("backClick");
|
||||||
} else {
|
} else {
|
||||||
|
if (this.backToMyPage) {
|
||||||
|
uni.switchTab({ url: '/pages/my/index' });
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
this.$emit('back');
|
this.$emit('back');
|
||||||
uni.navigateBack();
|
uni.navigateBack();
|
||||||
}
|
}
|
||||||
@@ -426,7 +432,7 @@ export default {
|
|||||||
this.$emit("homeClick");
|
this.$emit("homeClick");
|
||||||
} else {
|
} else {
|
||||||
uni.switchTab({
|
uni.switchTab({
|
||||||
url: '/pages/homePage/index/index',
|
url: '/pages/home/index',
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user