修复支付成功页面的课程不匹配的问题

This commit is contained in:
ywyonui 2025-08-30 21:17:32 +08:00
parent 4cd7abfc9c
commit b9e009e945
8 changed files with 169 additions and 10 deletions

View File

@ -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");
};

View 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>

View File

@ -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>

View File

@ -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 {

View File

@ -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 {

View File

@ -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,

View File

@ -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,

View File

@ -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: