Files
MBTI_wang/miniprogram/pages/gaokao/task-center.js
Ghost a411bf7b21 高考版优化
审核模式优化
2026-04-29 18:01:26 +08:00

117 lines
3.8 KiB
JavaScript

const gaokaoApi = require('../../utils/gaokao')
Page({
data: {
loading: false,
tasks: {
mbti: { code: 'mbti', status: 'todo', resultText: '', testResultId: 0, id: 0, testType: 'mbti', typeName: 'MBTI性格', emoji: '🧠', testTime: '' },
pdp: { code: 'pdp', status: 'todo', resultText: '', testResultId: 0, id: 0, testType: 'pdp', typeName: 'PDP行为', emoji: '🦁', testTime: '' },
disc: { code: 'disc', status: 'todo', resultText: '', testResultId: 0, id: 0, testType: 'disc', typeName: 'DISC测评', emoji: '📊', testTime: '' },
face: { code: 'face', status: 'todo', resultText: '', testResultId: 0, id: 0, testType: 'ai', typeName: '拍照面相', emoji: '📷', testTime: '', recordTestType: 'ai' },
form: { code: 'form', status: 'todo', resultText: '', testResultId: 0, id: 0, testType: 'form', typeName: '高考信息表单', emoji: '📝', testTime: '' }
},
canAnalyze: false,
missingItems: [],
analyzing: false
},
onShow() {
try {
const app = getApp()
app.globalData.appScope = 'gaokao'
app.globalData.selectedHomeVersion = 'gaokao'
} catch (e) {}
this.refreshStatus()
},
refreshStatus() {
this.setData({ loading: true })
gaokaoApi
.getTaskStatus({ scene: 'gaokao_hub' })
.then((res) => {
this.setData({
tasks: res.tasks || this.data.tasks,
canAnalyze: !!res.canAnalyze,
missingItems: res.missingItems || []
})
})
.catch((e) => {
wx.showToast({ title: e.message || '加载失败', icon: 'none' })
})
.finally(() => this.setData({ loading: false }))
},
goTask(e) {
const code = e.currentTarget.dataset.code
const resultId = Number(e.currentTarget.dataset.resultId || 0)
const done = (e.currentTarget.dataset.status || '') === 'done'
if (code === 'mbti') {
if (done && resultId > 0) {
wx.navigateTo({ url: `/pages/result/mbti?id=${resultId}&type=mbti&vscope=gaokao` })
} else {
wx.navigateTo({ url: '/pages/test/mbti' })
}
return
}
if (code === 'pdp') {
if (done && resultId > 0) {
wx.navigateTo({ url: `/pages/result/pdp?id=${resultId}&type=pdp&vscope=gaokao` })
} else {
wx.navigateTo({ url: '/pages/test/pdp' })
}
return
}
if (code === 'disc') {
if (done && resultId > 0) {
wx.navigateTo({ url: `/pages/result/disc?id=${resultId}&type=disc&vscope=gaokao` })
} else {
wx.navigateTo({ url: '/pages/test/disc' })
}
return
}
if (code === 'face') {
const recType = String(e.currentTarget.dataset.recordType || 'ai').toLowerCase()
const typeParam = recType === 'face' ? 'face' : 'ai'
if (done && resultId > 0) {
wx.navigateTo({ url: `/pages/index/result?id=${resultId}&type=${typeParam}&vscope=gaokao` })
} else {
wx.switchTab({ url: '/pages/index/camera' })
}
return
}
if (code === 'form') {
wx.navigateTo({ url: '/pages/gaokao/form' })
}
},
onAnalyzeTap() {
if (!this.data.canAnalyze) {
const nameMap = {
mbti: 'MBTI测试',
pdp: 'PDP测试',
disc: 'DISC测试',
face: '拍照面相',
form: '高考信息表单'
}
const msg = (this.data.missingItems || []).map((k) => nameMap[k] || k).join('、')
wx.showToast({
title: msg ? `请先完成:${msg}` : '请先完成全部任务',
icon: 'none',
duration: 2500
})
return
}
this.setData({ analyzing: true })
wx.navigateTo({
url: '/pages/gaokao/report?pendingAnalyze=1',
complete: () => {
this.setData({ analyzing: false })
}
})
},
goHistoryTests() {
wx.navigateTo({ url: '/pages/history/index?gaokaoOnly=1' })
}
})