hookehuyr

fix: 修复支付组件和学校选择逻辑

修复支付组件中微信支付API调用错误,将wx.requestPayment改为Taro.requestPayment
重构学校选择逻辑,从静态数据改为动态加载,并修复学校名称显示问题
<!--
* @Date: 2023-12-20 14:11:11
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-07-09 12:16:16
* @LastEditTime: 2025-07-15 14:18:38
* @FilePath: /jgdl/src/components/payCard.vue
* @Description: 文件描述
-->
......@@ -106,9 +106,9 @@ const goToPay = async () => {
// 获取支付参数
const { code, data } = await payAPI({ order_id: id.value });
if (code) {
let pay = data;
let pay = data.payargs;
// 触发微信支付操作
wx.requestPayment({
Taro.requestPayment({
timeStamp: pay.timeStamp,
nonceStr: pay.nonceStr,
package: pay.package,
......
......@@ -56,7 +56,7 @@
<!-- 所在学校 -->
<nut-form-item label="所在学校" prop="school">
<view class="school-item" @click="showSchoolPicker">
<text class="school-value">{{ formData.school || '请选择学校' }}</text>
<text class="school-value">{{ formData.school_name || '请选择学校' }}</text>
<Right class="arrow-icon" />
</view>
</nut-form-item>
......@@ -176,7 +176,9 @@ import Taro from '@tarojs/taro'
import './index.less'
import { Right } from '@nutui/icons-vue-taro'
import BASE_URL from '@/utils/config';
// 导入接口
import { updateProfileAPI, sendSmsCodeAPI, getProfileAPI } from '@/api/index';
import { getSchoolsAPI } from '@/api/other';
// 主题配置
const themeVars = {
......@@ -194,7 +196,7 @@ const formData = reactive({
sms_code: '',
gender: '',
// birthday: '',
school: '',
school_name: '',
school_id: '',
wechat_id: ''
})
......@@ -224,18 +226,7 @@ const codeCountdown = ref(0)
// 学校选择
const schoolValue = ref([])
const schoolOptions = ref([
[
{ text: '上海理工大学', value: '上海理工大学' },
{ text: '上海大学', value: '上海大学' },
{ text: '华东理工大学', value: '华东理工大学' },
{ text: '上海交通大学', value: '上海交通大学' },
{ text: '复旦大学', value: '复旦大学' },
{ text: '同济大学', value: '同济大学' },
{ text: '华东师范大学', value: '华东师范大学' },
{ text: '上海财经大学', value: '上海财经大学' }
]
])
const schoolOptions = ref([])
// 返回上一页
const goBack = () => {
......@@ -478,8 +469,9 @@ const showSchoolPicker = () => {
}
// 确认学校选择
const onSchoolConfirm = ({ selectedOptions }) => {
formData.school = selectedOptions[0].text
const onSchoolConfirm = ({ selectedValue, selectedOptions }) => {
formData.school_id = selectedValue[0]
formData.school_name = selectedOptions[0].text
schoolPickerVisible.value = false
}
......@@ -510,8 +502,26 @@ const handleSave = async () => {
}
}
/**
* 加载学校列表
*/
const loadSchools = async () => {
try {
const { code, data } = await getSchoolsAPI()
if (code && data) {
schoolOptions.value = data.map(school => ({
text: school.name,
value: school.id
}))
}
} catch (error) {
console.error('加载学校列表失败:', error)
}
}
// 初始化
onMounted(async () => {
await loadSchools();
// 获取用户信息
const user = await getProfileAPI()
if (user.code) {
......@@ -519,9 +529,11 @@ onMounted(async () => {
formData.nickname = user.data.nickname
formData.phone = user.data.phone
formData.gender = user.data.gender
formData.school = user.data.school
formData.school_id = user.data.school_id
formData.wechat_id = user.data.wechat_id
// 学校名称
formData.school_name = schoolOptions.value.find(school => school.value === user.data.school_id)?.text || ''
}
})
</script>
......