“我的”图标修改,解析二维码字节数组

This commit is contained in:
Yu 2026-03-20 16:17:49 +08:00
parent 9c3a6fc53c
commit b51ebcb128
4 changed files with 71 additions and 24 deletions

View File

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

View File

@ -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": "我的"
}

View File

@ -207,8 +207,8 @@ const formData = reactive({
shoeSize: '',
major: '',
majorId: 0,
teacher: '李四',
recruitmentTeacherId: 1
teacher: '',
recruitmentTeacherId: 0
})
const submitting = ref(false)

View File

@ -212,6 +212,7 @@ import cache from '@/utils/cache'
const qrcodeUrl = ref('')
const showQrcodeModal = ref(false)
const currentTeacherId = ref<number | undefined>(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) {
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)
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, 50) + '...')
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)