hookehuyr

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

修复支付组件中微信支付API调用错误,将wx.requestPayment改为Taro.requestPayment
重构学校选择逻辑,从静态数据改为动态加载,并修复学校名称显示问题
1 <!-- 1 <!--
2 * @Date: 2023-12-20 14:11:11 2 * @Date: 2023-12-20 14:11:11
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2025-07-09 12:16:16 4 + * @LastEditTime: 2025-07-15 14:18:38
5 * @FilePath: /jgdl/src/components/payCard.vue 5 * @FilePath: /jgdl/src/components/payCard.vue
6 * @Description: 文件描述 6 * @Description: 文件描述
7 --> 7 -->
...@@ -106,9 +106,9 @@ const goToPay = async () => { ...@@ -106,9 +106,9 @@ const goToPay = async () => {
106 // 获取支付参数 106 // 获取支付参数
107 const { code, data } = await payAPI({ order_id: id.value }); 107 const { code, data } = await payAPI({ order_id: id.value });
108 if (code) { 108 if (code) {
109 - let pay = data; 109 + let pay = data.payargs;
110 // 触发微信支付操作 110 // 触发微信支付操作
111 - wx.requestPayment({ 111 + Taro.requestPayment({
112 timeStamp: pay.timeStamp, 112 timeStamp: pay.timeStamp,
113 nonceStr: pay.nonceStr, 113 nonceStr: pay.nonceStr,
114 package: pay.package, 114 package: pay.package,
......
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
56 <!-- 所在学校 --> 56 <!-- 所在学校 -->
57 <nut-form-item label="所在学校" prop="school"> 57 <nut-form-item label="所在学校" prop="school">
58 <view class="school-item" @click="showSchoolPicker"> 58 <view class="school-item" @click="showSchoolPicker">
59 - <text class="school-value">{{ formData.school || '请选择学校' }}</text> 59 + <text class="school-value">{{ formData.school_name || '请选择学校' }}</text>
60 <Right class="arrow-icon" /> 60 <Right class="arrow-icon" />
61 </view> 61 </view>
62 </nut-form-item> 62 </nut-form-item>
...@@ -176,7 +176,9 @@ import Taro from '@tarojs/taro' ...@@ -176,7 +176,9 @@ import Taro from '@tarojs/taro'
176 import './index.less' 176 import './index.less'
177 import { Right } from '@nutui/icons-vue-taro' 177 import { Right } from '@nutui/icons-vue-taro'
178 import BASE_URL from '@/utils/config'; 178 import BASE_URL from '@/utils/config';
179 +// 导入接口
179 import { updateProfileAPI, sendSmsCodeAPI, getProfileAPI } from '@/api/index'; 180 import { updateProfileAPI, sendSmsCodeAPI, getProfileAPI } from '@/api/index';
181 +import { getSchoolsAPI } from '@/api/other';
180 182
181 // 主题配置 183 // 主题配置
182 const themeVars = { 184 const themeVars = {
...@@ -194,7 +196,7 @@ const formData = reactive({ ...@@ -194,7 +196,7 @@ const formData = reactive({
194 sms_code: '', 196 sms_code: '',
195 gender: '', 197 gender: '',
196 // birthday: '', 198 // birthday: '',
197 - school: '', 199 + school_name: '',
198 school_id: '', 200 school_id: '',
199 wechat_id: '' 201 wechat_id: ''
200 }) 202 })
...@@ -224,18 +226,7 @@ const codeCountdown = ref(0) ...@@ -224,18 +226,7 @@ const codeCountdown = ref(0)
224 226
225 // 学校选择 227 // 学校选择
226 const schoolValue = ref([]) 228 const schoolValue = ref([])
227 -const schoolOptions = ref([ 229 +const schoolOptions = ref([])
228 - [
229 - { text: '上海理工大学', value: '上海理工大学' },
230 - { text: '上海大学', value: '上海大学' },
231 - { text: '华东理工大学', value: '华东理工大学' },
232 - { text: '上海交通大学', value: '上海交通大学' },
233 - { text: '复旦大学', value: '复旦大学' },
234 - { text: '同济大学', value: '同济大学' },
235 - { text: '华东师范大学', value: '华东师范大学' },
236 - { text: '上海财经大学', value: '上海财经大学' }
237 - ]
238 -])
239 230
240 // 返回上一页 231 // 返回上一页
241 const goBack = () => { 232 const goBack = () => {
...@@ -478,8 +469,9 @@ const showSchoolPicker = () => { ...@@ -478,8 +469,9 @@ const showSchoolPicker = () => {
478 } 469 }
479 470
480 // 确认学校选择 471 // 确认学校选择
481 -const onSchoolConfirm = ({ selectedOptions }) => { 472 +const onSchoolConfirm = ({ selectedValue, selectedOptions }) => {
482 - formData.school = selectedOptions[0].text 473 + formData.school_id = selectedValue[0]
474 + formData.school_name = selectedOptions[0].text
483 schoolPickerVisible.value = false 475 schoolPickerVisible.value = false
484 } 476 }
485 477
...@@ -510,8 +502,26 @@ const handleSave = async () => { ...@@ -510,8 +502,26 @@ const handleSave = async () => {
510 } 502 }
511 } 503 }
512 504
505 +/**
506 + * 加载学校列表
507 + */
508 +const loadSchools = async () => {
509 + try {
510 + const { code, data } = await getSchoolsAPI()
511 + if (code && data) {
512 + schoolOptions.value = data.map(school => ({
513 + text: school.name,
514 + value: school.id
515 + }))
516 + }
517 + } catch (error) {
518 + console.error('加载学校列表失败:', error)
519 + }
520 +}
521 +
513 // 初始化 522 // 初始化
514 onMounted(async () => { 523 onMounted(async () => {
524 + await loadSchools();
515 // 获取用户信息 525 // 获取用户信息
516 const user = await getProfileAPI() 526 const user = await getProfileAPI()
517 if (user.code) { 527 if (user.code) {
...@@ -519,9 +529,11 @@ onMounted(async () => { ...@@ -519,9 +529,11 @@ onMounted(async () => {
519 formData.nickname = user.data.nickname 529 formData.nickname = user.data.nickname
520 formData.phone = user.data.phone 530 formData.phone = user.data.phone
521 formData.gender = user.data.gender 531 formData.gender = user.data.gender
522 - formData.school = user.data.school
523 formData.school_id = user.data.school_id 532 formData.school_id = user.data.school_id
524 formData.wechat_id = user.data.wechat_id 533 formData.wechat_id = user.data.wechat_id
534 + // 学校名称
535 + formData.school_name = schoolOptions.value.find(school => school.value === user.data.school_id)?.text || ''
525 } 536 }
537 +
526 }) 538 })
527 </script> 539 </script>
......