修复支付成功页面的课程不匹配的问题
This commit is contained in:
parent
4cd7abfc9c
commit
b9e009e945
@ -93,3 +93,7 @@ export const xkxkbmInfoApi = async (params: any) => {
|
|||||||
export const xkqddeleteApi = async (params: any) => {
|
export const xkqddeleteApi = async (params: any) => {
|
||||||
return await post("/api/xkqd/delete?ids=" + params.ids);
|
return await post("/api/xkqd/delete?ids=" + params.ids);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const xkkclxFindAllApi = async () => {
|
||||||
|
return await get("/api/xkkclx/findByXkkclx");
|
||||||
|
};
|
||||||
|
|||||||
121
src/pages/base/components/XkPaySuccessXkkc/index.vue
Normal file
121
src/pages/base/components/XkPaySuccessXkkc/index.vue
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
<template>
|
||||||
|
<view class="xkqd-list">
|
||||||
|
<!-- 课程信息卡片 -->
|
||||||
|
<view class="info-card" v-for="(xkkc, index) in xkkcList" :key="index">
|
||||||
|
<view class="card-title">课程信息</view>
|
||||||
|
<view class="divider"></view>
|
||||||
|
|
||||||
|
<view class="course-info">
|
||||||
|
<image
|
||||||
|
class="course-image"
|
||||||
|
:src="xkkc.lxtp ? imagUrl(xkkc.lxtp) : '/static/base/home/11222.png'"
|
||||||
|
mode="aspectFill"
|
||||||
|
></image>
|
||||||
|
<view class="course-details">
|
||||||
|
<view class="course-name">{{ xkkc.kcmc }}</view>
|
||||||
|
<view class="course-teacher">开课老师:{{ xkkc.jsName }}</view>
|
||||||
|
<view class="course-location">上课地点:{{ xkkc.kcdd }}</view>
|
||||||
|
<view class="course-price"
|
||||||
|
>金额:<text class="price-value">¥{{ xkkc.kcje }}</text></view
|
||||||
|
>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { imagUrl } from "@/utils";
|
||||||
|
import { useCommonStore } from "@/store/modules/common";
|
||||||
|
const { getAllXkkcLx } = useCommonStore();
|
||||||
|
|
||||||
|
// 接收外部传入属性
|
||||||
|
const props = defineProps<{
|
||||||
|
xk: any
|
||||||
|
}>();
|
||||||
|
|
||||||
|
const xkkcLxList = ref<any>([]);
|
||||||
|
|
||||||
|
// 课程信息
|
||||||
|
const xkkcList = computed(() => {
|
||||||
|
const xk = props.xk || {};
|
||||||
|
const xkkcs = xk.xkkcs || [];
|
||||||
|
return xkkcs.map((xkkc:any) => {
|
||||||
|
const lx = xkkcLxList.value.find((item: any) => item.id === xkkc.lxId) || {};
|
||||||
|
return {
|
||||||
|
...xkkc,
|
||||||
|
lxtp: lx.lxtp || '',
|
||||||
|
lxmc: lx.lxmc || ''
|
||||||
|
};
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
onMounted(async () => {
|
||||||
|
const res = await getAllXkkcLx();
|
||||||
|
xkkcLxList.value = res.result;
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.info-card {
|
||||||
|
margin: 15px;
|
||||||
|
background-color: #fff;
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: 15px;
|
||||||
|
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.05);
|
||||||
|
|
||||||
|
.card-title {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #333;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.divider {
|
||||||
|
height: 1px;
|
||||||
|
background-color: #eee;
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.course-info {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
.course-image {
|
||||||
|
width: 120px;
|
||||||
|
height: 120px;
|
||||||
|
border-radius: 8px;
|
||||||
|
margin-right: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.course-details {
|
||||||
|
flex: 1;
|
||||||
|
|
||||||
|
.course-name {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 500;
|
||||||
|
color: #333;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.course-teacher,
|
||||||
|
.course-location {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #666;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.course-price {
|
||||||
|
font-size: 14px;
|
||||||
|
color: #666;
|
||||||
|
|
||||||
|
.price-value {
|
||||||
|
color: #ff6b00;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
@ -21,7 +21,7 @@
|
|||||||
<XkPayXs />
|
<XkPayXs />
|
||||||
|
|
||||||
<!-- 课程信息卡片 -->
|
<!-- 课程信息卡片 -->
|
||||||
<XkPayXkqd />
|
<XkPaySuccessXkkc :xk="xk" />
|
||||||
|
|
||||||
</view>
|
</view>
|
||||||
<template #bottom>
|
<template #bottom>
|
||||||
@ -40,17 +40,37 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { onLoad } from "@dcloudio/uni-app";
|
||||||
import XkPayXs from "@/pages/base/components/XkPayXs/index.vue"
|
import XkPayXs from "@/pages/base/components/XkPayXs/index.vue"
|
||||||
import XkPayXkqd from "@/pages/base/components/XkPayXkqd/index.vue"
|
import XkPaySuccessXkkc from "@/pages/base/components/XkPaySuccessXkkc/index.vue"
|
||||||
|
import { xsYxListApi } from "@/api/base/xkApi";
|
||||||
|
import { useUserStore } from "@/store/modules/user";
|
||||||
|
import { useDataStore } from "@/store/modules/data";
|
||||||
|
|
||||||
|
const { getCurXs } = useUserStore();
|
||||||
|
const { setData } = useDataStore();
|
||||||
|
|
||||||
|
const xk = ref<any>({});
|
||||||
|
|
||||||
// 返回上一页
|
// 返回上一页
|
||||||
const goBack = () => {
|
const goBack = () => {
|
||||||
uni.navigateBack();
|
uni.navigateBack();
|
||||||
};
|
};
|
||||||
|
|
||||||
onMounted(() => {
|
const loadYxXkList = async (xklxId:string) => {
|
||||||
// 实际应用中,应从页面参数或缓存获取课程和学生信息
|
const res = await xsYxListApi({
|
||||||
|
xsId: getCurXs.id,
|
||||||
|
njmcId: getCurXs.njmcId,
|
||||||
|
xklxId: xklxId,
|
||||||
|
});
|
||||||
|
const xkList = res.result || [];
|
||||||
|
xk.value = xkList[0] || {};
|
||||||
|
};
|
||||||
|
|
||||||
|
onLoad((options:any) => {
|
||||||
|
loadYxXkList(options.xklxId);
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
|
|||||||
@ -157,7 +157,7 @@ const submit = async () => {
|
|||||||
} else {
|
} else {
|
||||||
// 不需要支付,直接跳转到支付成功页面
|
// 不需要支付,直接跳转到支付成功页面
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: "/pages/base/xk/pay/success",
|
url: "/pages/base/xk/pay/success?xklxId=816059832",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -42,7 +42,7 @@ import { useDataStore } from "@/store/modules/data";
|
|||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
|
|
||||||
const { getCurXs, getUser } = useUserStore();
|
const { getCurXs, getUser } = useUserStore();
|
||||||
const { setData, getData } = useDataStore();
|
const { setData, getData, setParams } = useDataStore();
|
||||||
const { sign_file } = getData;
|
const { sign_file } = getData;
|
||||||
|
|
||||||
const curXs = computed(() => getCurXs);
|
const curXs = computed(() => getCurXs);
|
||||||
@ -157,7 +157,7 @@ const submit = async () => {
|
|||||||
} else {
|
} else {
|
||||||
// 不需要支付,直接跳转到支付成功页面
|
// 不需要支付,直接跳转到支付成功页面
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: "/pages/base/xk/pay/success",
|
url: "/pages/base/xk/pay/success?xklxId=962488654",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import { defineStore } from "pinia";
|
import { defineStore } from "pinia";
|
||||||
import { jsFindByIdApi } from "@/api/base/jsApi";
|
import { jsFindByIdApi } from "@/api/base/jsApi";
|
||||||
|
import { xkkclxFindAllApi } from "@/api/base/xkApi";
|
||||||
|
|
||||||
interface CommonState {
|
interface CommonState {
|
||||||
data: any;
|
data: any;
|
||||||
@ -28,6 +29,12 @@ export const useCommonStore = defineStore({
|
|||||||
}
|
}
|
||||||
return Promise.resolve(this.data.js[params.id]);
|
return Promise.resolve(this.data.js[params.id]);
|
||||||
},
|
},
|
||||||
|
async getAllXkkcLx() : Promise<any> {
|
||||||
|
if (!this.data.xkkcLx) {
|
||||||
|
this.data.xkkcLx = await xkkclxFindAllApi();
|
||||||
|
}
|
||||||
|
return Promise.resolve(this.data.xkkcLx);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
persist: {
|
persist: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
|
|||||||
@ -8,6 +8,7 @@ export const useDataStore = defineStore({
|
|||||||
jcBzData: {},
|
jcBzData: {},
|
||||||
global: {},
|
global: {},
|
||||||
file: {},
|
file: {},
|
||||||
|
params: {},
|
||||||
appCode: "JZ"
|
appCode: "JZ"
|
||||||
}),
|
}),
|
||||||
getters: {
|
getters: {
|
||||||
@ -26,6 +27,9 @@ export const useDataStore = defineStore({
|
|||||||
getJcBzData(): any {
|
getJcBzData(): any {
|
||||||
return this.jcBzData;
|
return this.jcBzData;
|
||||||
},
|
},
|
||||||
|
getParams(): any {
|
||||||
|
return this.params;
|
||||||
|
},
|
||||||
getAppCode(): string {
|
getAppCode(): string {
|
||||||
return this.appCode;
|
return this.appCode;
|
||||||
},
|
},
|
||||||
@ -46,6 +50,9 @@ export const useDataStore = defineStore({
|
|||||||
setJcBzData(data: any) {
|
setJcBzData(data: any) {
|
||||||
this.jcBzData = data;
|
this.jcBzData = data;
|
||||||
},
|
},
|
||||||
|
setParams(data: any) {
|
||||||
|
this.params = data;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
persist: {
|
persist: {
|
||||||
enabled: true,
|
enabled: true,
|
||||||
|
|||||||
@ -345,7 +345,7 @@ export const useUserStore = defineStore({
|
|||||||
return;
|
return;
|
||||||
case 3: // 已支付 - 跳转到详情页
|
case 3: // 已支付 - 跳转到详情页
|
||||||
uni.reLaunch({
|
uni.reLaunch({
|
||||||
url: "/pages/base/xk/pay/success",
|
url: "/pages/base/xk/pay/success?xklxId=962488654",
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
@ -428,7 +428,7 @@ export const useUserStore = defineStore({
|
|||||||
return;
|
return;
|
||||||
case 3: // 已支付 - 跳转到详情页
|
case 3: // 已支付 - 跳转到详情页
|
||||||
uni.reLaunch({
|
uni.reLaunch({
|
||||||
url: "/pages/base/xk/pay/success",
|
url: "/pages/base/xk/pay/success?xklxId=816059832",
|
||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
default:
|
default:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user