diff --git a/uniapp/src/api/app.ts b/uniapp/src/api/app.ts index ec4f737b..3b83d7c4 100644 --- a/uniapp/src/api/app.ts +++ b/uniapp/src/api/app.ts @@ -34,7 +34,7 @@ export function getMajorList() { } export function getTeacherInfo(data: any) { - return request.post({ url: 'frontapi/teacher/getTeacherInfo', data: data }, { urlPrefix: '' }) + return request.post({ url: 'frontapi/teacher/getTeacherInfo', data: data }, { urlPrefix: '', isTransformResponse: false }) } export function addStudent(data: any) { @@ -50,7 +50,7 @@ export function getTeacherQrcode(data: any) { export function getTeacherQrcodeImage(teacherId: number) { return request.get( - { url: `frontapi/teacher/qrcode/image?id=${teacherId}` }, + { url: `frontapi/teacher/qrcode/image?id=${teacherId}`, responseType: 'arraybuffer' }, { urlPrefix: '', isReturnDefaultResponse: true } ) } diff --git a/uniapp/src/pages.json b/uniapp/src/pages.json index f551a8d8..29a2f61b 100644 --- a/uniapp/src/pages.json +++ b/uniapp/src/pages.json @@ -92,7 +92,7 @@ }, { "iconPath": "static/images/tabbar/user.png", - "selectedIconPath": "static/images/tabbar/user_s.png", + "selectedIconPath": "static/yubaoming/my_icon_active.png", "pagePath": "pages/user/user", "text": "我的" } diff --git a/uniapp/src/pages/pre_registration/pre_registration.vue b/uniapp/src/pages/pre_registration/pre_registration.vue index 5d4b4886..c005842c 100644 --- a/uniapp/src/pages/pre_registration/pre_registration.vue +++ b/uniapp/src/pages/pre_registration/pre_registration.vue @@ -207,8 +207,8 @@ const formData = reactive({ shoeSize: '', major: '', majorId: 0, - teacher: '李四', - recruitmentTeacherId: 1 + teacher: '', + recruitmentTeacherId: 0 }) const submitting = ref(false) diff --git a/uniapp/src/pages/user/user.vue b/uniapp/src/pages/user/user.vue index bf893ed2..f1c8230d 100644 --- a/uniapp/src/pages/user/user.vue +++ b/uniapp/src/pages/user/user.vue @@ -212,6 +212,7 @@ import cache from '@/utils/cache' const qrcodeUrl = ref('') const showQrcodeModal = ref(false) +const currentTeacherId = ref(undefined) const recruitmentStats = ref({ total: 0, today: 0, @@ -236,27 +237,52 @@ const progressPercent = computed(() => { return Math.min(Math.round((current / target) * 100), 100) }) -const getQrcode = async () => { +const getQrcode = async (teacherId?: number) => { console.log('=== getQrcode 开始执行 ===') + console.log('传入的 teacherId:', teacherId) console.log('userInfo:', userInfo.value) - console.log('teacherId:', userInfo.value?.teacherId) + console.log('userInfo 中的 teacherId:', userInfo.value?.teacherId) - if (userInfo.value?.teacherId) { + const finalTeacherId = teacherId || userInfo.value?.teacherId + console.log('最终使用的 teacherId:', finalTeacherId) + + if (finalTeacherId) { try { - console.log('正在调用 getTeacherQrcodeImage, teacherId:', userInfo.value.teacherId) - const response = await getTeacherQrcodeImage(userInfo.value.teacherId) + console.log('正在调用 getTeacherQrcodeImage, teacherId:', finalTeacherId) + const response = await getTeacherQrcodeImage(finalTeacherId) console.log('二维码接口返回:', response) console.log('statusCode:', response.statusCode) console.log('data类型:', typeof response.data) console.log('data长度:', response.data?.byteLength || response.data?.length) if (response.statusCode === 200) { - const arrayBuffer = response.data - console.log('arrayBuffer:', arrayBuffer) - const base64 = uni.arrayBufferToBase64(arrayBuffer) - console.log('base64长度:', base64.length) - qrcodeUrl.value = `data:image/png;base64,${base64}` - console.log('qrcodeUrl已设置:', qrcodeUrl.value.substring(0, 50) + '...') + console.log('response.data 类型:', typeof response.data) + console.log('response.data 内容:', response.data) + console.log('response.data 是否为 ArrayBuffer:', response.data instanceof ArrayBuffer) + + // 检查返回的是否是图片流(ArrayBuffer) + if (response.data instanceof ArrayBuffer) { + const arrayBuffer = response.data + console.log('arrayBuffer 长度:', arrayBuffer.byteLength) + const base64 = uni.arrayBufferToBase64(arrayBuffer) + console.log('base64 长度:', base64.length) + qrcodeUrl.value = `data:image/png;base64,${base64}` + console.log('qrcodeUrl 已设置:', qrcodeUrl.value.substring(0, 100) + '...') + } else if (typeof response.data === 'string') { + // 如果返回的是字符串(可能是 base64 或图片 URL) + console.log('返回的是字符串,长度:', response.data.length) + if (response.data.startsWith('data:image')) { + qrcodeUrl.value = response.data + } else if (response.data.startsWith('http')) { + qrcodeUrl.value = response.data + } else { + // 假设是 base64 + qrcodeUrl.value = `data:image/png;base64,${response.data}` + } + console.log('qrcodeUrl 已设置:', qrcodeUrl.value.substring(0, 100) + '...') + } else { + console.log('返回的数据格式不支持:', response.data) + } } else { console.log('接口返回非200状态码:', response.statusCode) } @@ -297,10 +323,12 @@ const getStats = async () => { console.log('=== getStats 执行结束 ===') } -const openQrcodeModal = () => { +const openQrcodeModal = async () => { showQrcodeModal.value = true if (!qrcodeUrl.value) { - getQrcode() + console.log('openQrcodeModal: 使用默认 teacherId = 8 获取二维码') + const defaultTeacherId = 8 + await getQrcode(defaultTeacherId) } } @@ -424,22 +452,41 @@ onShow(async () => { if (isLogin.value && userInfo.value) { console.log('条件满足,开始获取教师信息') + console.log('userInfo.value.id:', userInfo.value.id) // 获取教师信息 + let teacherIdForQrcode: number | undefined = undefined try { + console.log('准备调用 getTeacherInfo, 参数:', { id: userInfo.value.id }) const teacherRes = await getTeacherInfo({ id: userInfo.value.id }) console.log('getTeacherInfo 返回:', teacherRes) - if (teacherRes && teacherRes.id) { + console.log('teacherRes 类型:', typeof teacherRes) + console.log('teacherRes.code:', teacherRes?.code) + console.log('teacherRes.data:', teacherRes?.data) + // 后端返回格式: { code: 1, msg: '成功', data: { teacherId, teacherName, ... } } + if (teacherRes && teacherRes.code === 1 && teacherRes.data) { + const teacherData = teacherRes.data + console.log('teacherData:', teacherData) + console.log('teacherData.teacherId:', teacherData.teacherId) // 将教师信息合并到 userInfo - userInfo.value.teacherId = teacherRes.id - console.log('设置 teacherId:', teacherRes.id) + userInfo.value.teacherId = teacherData.teacherId + teacherIdForQrcode = teacherData.teacherId + currentTeacherId.value = teacherData.teacherId + console.log('设置 teacherId:', teacherData.teacherId) + console.log('教师姓名:', teacherData.teacherName) + console.log('学院:', teacherData.collegeName) + console.log('二维码URL:', teacherData.qrcodeUrl) + } else { + console.log('获取教师信息失败或返回格式异常:', teacherRes) } } catch (error) { console.error('获取教师信息失败:', error) } - console.log('开始调用 getQrcode 和 getStats') - getQrcode() - getStats() + console.log('开始调用 getQrcode 和 getStats, teacherIdForQrcode:', teacherIdForQrcode) + console.log('userInfo 中的 teacherId:', userInfo.value?.teacherId) + // 使用本地变量传递teacherId,避免响应式延迟问题 + await getQrcode(teacherIdForQrcode) + await getStats() } else { console.log('条件不满足,跳过数据获取') console.log('isLogin:', isLogin.value)