1年级语文上册课课练课时练习.pdf
2026-03-04
2 次
PDF
2元/次
您当前为游客身份,每日免费限额1次,超出后需付费下载。
文件大小
10.76 MB
文件格式
PDF
分类
未分类
版本
通用版
复制成功
已复制到剪贴板
${priceDisplay}
${nameDisplay}
有效期: ${level.expire_days}天
${descDisplay}
${level.status_tip ? `${level.status_tip}
` : ''}
正在加载VIP等级数据...
';
fetch('/wpan-api/v1/members/levels')
.then(res => {
if (!res.ok) {
throw new Error(`HTTP error! status: ${res.status}`);
}
return res.json();
})
.then(res => {
if (res.code === 0) {
if (res.data && res.data.length > 0) {
renderVipLevels(res.data);
} else {
container.innerHTML = '暂无VIP等级数据
';
}
} else {
console.error('加载会员等级失败:', res.msg);
const errorDiv = document.createElement('div');
errorDiv.className = 'error-state';
errorDiv.textContent = '加载失败:' + (res.msg || '未知错误');
container.appendChild(errorDiv);
}
})
.catch(error => {
console.error('加载会员等级出错:', error);
const errorDiv = document.createElement('div');
errorDiv.className = 'error-state';
errorDiv.textContent = '加载失败,请稍后重试。错误:' + (error.message || '未知错误');
container.appendChild(errorDiv);
});
}
// 购买VIP等级
function buyVipLevel(levelId, priceType) {
// 检查用户登录状态
const isLoggedIn = document.getElementById('userLoginStatus') ?
document.getElementById('userLoginStatus').getAttribute('data-logged-in') === 'true' : false;
if (!isLoggedIn) {
showLoginModal();
return;
}
const csrfToken = document.querySelector('meta[name="csrf-token"]').content;
fetch('/wpan-payment/create', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRF-TOKEN': csrfToken
},
body: JSON.stringify({
level_id: levelId,
payment_method: 'wxpay',
type: priceType
})
})
.then(response => response.json())
.then(data => {
if (data.code === 0) {
if (data.data.has_existing_order) {
showExistingOrderModal(data.data);
} else {
window.location.href = data.data.pay_url;
}
} else {
showErrorModal(data.msg || '创建订单失败');
}
})
.catch(error => {
showErrorModal('网络错误,请重试');
console.error('Error:', error);
});
}
// 加载学期VIP数据
function loadTermVip() {
const container = document.getElementById('term-grid');
if (!container) return;
fetch('/wpan-api/v1/members/me/terms')
.then(res => res.json())
.then(res => {
if(res.code === 0 && res.data && res.data.terms && res.data.terms.length > 0){
container.innerHTML = '';
const terms = res.data.terms || [];
terms.forEach(term => {
let btnClass = 'term-btn';
let disabled = '';
let text = term.name;
if ((res.data && res.data.is_site_vip) || term.is_bought) {
btnClass += ' disabled';
disabled = 'disabled';
if (term.is_bought) {
text = `${term.name}`;
}
}
const btn = document.createElement('button');
btn.className = btnClass;
btn.setAttribute('data-term', term.id);
btn.setAttribute('data-term-data', JSON.stringify(term));
btn.disabled = disabled === 'disabled';
btn.innerHTML = text;
if (!btn.disabled) {
btn.addEventListener('click', function() {
document.querySelectorAll('.term-btn').forEach(b => {
b.classList.remove('selected');
});
this.classList.add('selected');
selectedTerm = this.dataset.term;
const selectedTip = document.querySelector('.selected-tip');
const selectedTermSpan = document.querySelector('.selected-term');
const countdownSpan = document.querySelector('.countdown');
selectedTip.style.display = 'flex';
selectedTermSpan.textContent = term.name;
countdownSpan.textContent = `¥${term.price}`;
const vipInfoCard = document.querySelector('.vip-info-card');
vipInfoCard.style.display = 'block';
vipInfoCard.innerHTML = `
¥${term.price}
有效期: ${term.expire_days || 365}天
${term.desc || '会员特权: 免费下载当前类目下的所有资料'}
`;
const activateBtn = document.querySelector('.activate-btn');
activateBtn.style.display = 'block';
});
}
container.appendChild(btn);
});
} else {
container.innerHTML = '暂无分类VIP数据
';
}
})
.catch(error => {
console.error('加载学期VIP失败:', error);
container.innerHTML = '加载失败,请稍后重试
';
});
}
// 分类VIP选择
let selectedTerm = null;
// 分类VIP激活
function activateCategoryVip() {
if (!selectedTerm) {
showErrorModal('请先选择要激活的学期');
return;
}
const isLoggedIn = document.getElementById('userLoginStatus') ?
document.getElementById('userLoginStatus').getAttribute('data-logged-in') === 'true' : false;
if (!isLoggedIn) {
showLoginModal();
return;
}
const csrfToken = document.querySelector('meta[name="csrf-token"]').content;
fetch('/term-vip/create-order', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRF-TOKEN': csrfToken
},
body: JSON.stringify({term_code: selectedTerm, payment_method: 'wxpay'})
})
.then(res => res.json())
.then(res => {
if (res.code === 0) {
if (res.data.has_existing_order) {
showExistingOrderModal(res.data);
} else {
window.location.href = res.data.pay_url;
}
} else {
showErrorModal(res.msg || '创建订单失败');
}
})
.catch(error => {
console.error('创建学期VIP订单失败:', error);
showErrorModal('创建订单失败,请重试');
});
}
// 显示重复订单弹窗
function showExistingOrderModal(orderData) {
document.getElementById('existing-order-no').textContent = orderData.order_no;
document.getElementById('existing-order-amount').textContent = `¥${orderData.amount}`;
// 计算剩余时间
const expireTime = new Date(orderData.expire_time);
const now = new Date();
const remainingTime = Math.max(0, Math.floor((expireTime - now) / 1000));
const minutes = Math.floor(remainingTime / 60);
const seconds = remainingTime % 60;
const timeStr = `${minutes}:${seconds.toString().padStart(2, '0')}`;
document.getElementById('existing-order-time').textContent = timeStr;
// 存储订单数据用于后续操作
window.existingOrderData = orderData;
document.getElementById('existingOrderModal').style.display = 'flex';
}
// 关闭重复订单弹窗
function closeExistingOrderModal() {
document.getElementById('existingOrderModal').style.display = 'none';
window.existingOrderData = null;
}
// 取消重复订单
function cancelExistingOrder() {
if (!window.existingOrderData) {
closeExistingOrderModal();
return;
}
const csrfToken = document.querySelector('meta[name="csrf-token"]').content;
// 显示加载提示
const loadingText = '正在取消订单...';
const loadingElement = document.createElement('div');
loadingElement.style.cssText = `
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background: rgba(0,0,0,0.8);
color: white;
padding: 20px;
border-radius: 8px;
z-index: 10003;
font-size: 14px;
`;
loadingElement.textContent = loadingText;
document.body.appendChild(loadingElement);
fetch('/wpan-payment/cancel-order', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRF-TOKEN': csrfToken
},
body: JSON.stringify({
order_no: window.existingOrderData.order_no
})
})
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
})
.then(data => {
document.body.removeChild(loadingElement);
if (data.code === 0) {
showErrorModal('订单已取消,可以重新下单');
closeExistingOrderModal();
} else {
showErrorModal(data.msg || '取消订单失败');
}
})
.catch(error => {
document.body.removeChild(loadingElement);
showErrorModal('网络错误,请重试');
console.error('Error:', error);
});
}
// 点击弹窗外部关闭弹窗
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('loginModal').addEventListener('click', function(e) {
if (e.target === this) {
closeLoginModal();
}
});
document.getElementById('errorModal').addEventListener('click', function(e) {
if (e.target === this) {
closeErrorModal();
}
});
document.getElementById('existingOrderModal').addEventListener('click', function(e) {
if (e.target === this) {
closeExistingOrderModal();
}
});
// 监听ESC键关闭侧边栏
document.addEventListener('keydown', function(e) {
if (e.key === 'Escape') {
const sidebar = document.getElementById('sidebar');
if (sidebar.classList.contains('open')) {
toggleSidebar();
}
}
});
// 点击弹窗外部关闭弹窗
document.getElementById('loginModal').addEventListener('click', function(e) {
if (e.target === this) {
closeLoginModal();
}
});
document.getElementById('errorModal').addEventListener('click', function(e) {
if (e.target === this) {
closeErrorModal();
}
});
});