fix: 修复支付组件和学校选择逻辑
修复支付组件中微信支付API调用错误,将wx.requestPayment改为Taro.requestPayment 重构学校选择逻辑,从静态数据改为动态加载,并修复学校名称显示问题
Showing
2 changed files
with
32 additions
and
20 deletions
| 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> | ... | ... |
-
Please register or login to post a comment