生成的测评链接

This commit is contained in:
朱潮 2025-11-16 23:32:09 +08:00
parent e22a116872
commit 63b004412a

View File

@ -2370,28 +2370,37 @@
generateBtn.querySelector('.button-text').textContent = '正在生成链接...';
generateBtn.disabled = true;
// 调用后端API创建会话和开始答题一样的逻辑
const response = await fetch('/api/create-session', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: studentName,
school: studentSchool,
grade: studentGrade,
phone: studentPhone,
selectedSubject: document.getElementById('subjectFilterSelect').value || '',
selectedSemester: document.getElementById('gradeFilterSelect').value || '',
selectedExamType: '',
selectedUnit: document.getElementById('unitFilterSelect').value || '',
selectedCategory: '',
selectedQuestionType: '',
selectedTag: this.selectedTag,
selectedTagsList: [],
questionsConfig: this.currentRules,
scoreRange: scoreRange
})
// iOS兼容性使用setTimeout确保请求是用户直接触发的
const response = await new Promise((resolve, reject) => {
setTimeout(async () => {
try {
const fetchResponse = await fetch('/api/create-session', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: studentName,
school: studentSchool,
grade: studentGrade,
phone: studentPhone,
selectedSubject: document.getElementById('subjectFilterSelect').value || '',
selectedSemester: document.getElementById('gradeFilterSelect').value || '',
selectedExamType: '',
selectedUnit: document.getElementById('unitFilterSelect').value || '',
selectedCategory: '',
selectedQuestionType: '',
selectedTag: this.selectedTag,
selectedTagsList: [],
questionsConfig: this.currentRules,
scoreRange: scoreRange
})
});
resolve(fetchResponse);
} catch (error) {
reject(error);
}
}, 0);
});
if (!response.ok) {
@ -2437,11 +2446,19 @@
} catch (error) {
console.error('生成测评链接失败:', error);
this.showErrorDialog('生成测评链接失败',
`创建测评链接时发生错误:<br><br>
const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent);
const errorMessage = error.message.includes('not allowed') && isIOS
? `iOS设备权限限制请确保<br><br>
• 在Safari设置中允许网页访问网络<br>
• 尝试在Safari中"重新加载页面"<br>
• 检查是否启用了"限制网页跟踪"<br>
• 如仍失败请尝试使用其他浏览器如Chrome<br><br>
技术细节:${error.message}`
: `创建测评链接时发生错误:<br><br>
错误信息:${error.message}<br><br>
请检查网络连接或联系技术支持。`
);
请检查网络连接或联系技术支持。`;
this.showErrorDialog('生成测评链接失败', errorMessage);
} finally {
// 恢复按钮状态
const generateBtn = document.getElementById('generateLinkBtn');
@ -2506,28 +2523,37 @@
startBtn.querySelector('.button-text').textContent = '正在创建答题会话...';
startBtn.disabled = true;
// 调用后端API创建会话
const response = await fetch('/api/create-session', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: studentName,
school: studentSchool,
grade: studentGrade,
phone: studentPhone,
selectedSubject: document.getElementById('subjectFilterSelect').value || '',
selectedSemester: document.getElementById('gradeFilterSelect').value || '',
selectedExamType: '',
selectedUnit: document.getElementById('unitFilterSelect').value || '',
selectedCategory: '',
selectedQuestionType: '',
selectedTag: this.selectedTag,
selectedTagsList: [],
questionsConfig: this.currentRules,
scoreRange: scoreRange
})
// iOS兼容性使用setTimeout确保请求是用户直接触发的
const response = await new Promise((resolve, reject) => {
setTimeout(async () => {
try {
const fetchResponse = await fetch('/api/create-session', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: studentName,
school: studentSchool,
grade: studentGrade,
phone: studentPhone,
selectedSubject: document.getElementById('subjectFilterSelect').value || '',
selectedSemester: document.getElementById('gradeFilterSelect').value || '',
selectedExamType: '',
selectedUnit: document.getElementById('unitFilterSelect').value || '',
selectedCategory: '',
selectedQuestionType: '',
selectedTag: this.selectedTag,
selectedTagsList: [],
questionsConfig: this.currentRules,
scoreRange: scoreRange
})
});
resolve(fetchResponse);
} catch (error) {
reject(error);
}
}, 0);
});
if (!response.ok) {
@ -2549,11 +2575,19 @@
} catch (error) {
console.error('开始答题失败:', error);
this.showErrorDialog('开始答题失败',
`创建答题会话时发生错误:<br><br>
const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent);
const errorMessage = error.message.includes('not allowed') && isIOS
? `iOS设备权限限制请确保<br><br>
• 在Safari设置中允许网页访问网络<br>
• 尝试在Safari中"重新加载页面"<br>
• 检查是否启用了"限制网页跟踪"<br>
• 如仍失败请尝试使用其他浏览器如Chrome<br><br>
技术细节:${error.message}`
: `创建答题会话时发生错误:<br><br>
错误信息:${error.message}<br><br>
请检查网络连接或联系技术支持。`
);
请检查网络连接或联系技术支持。`;
this.showErrorDialog('开始答题失败', errorMessage);
// 恢复按钮状态
const startBtn = document.getElementById('startSurvey');