首次提交:初始化项目代码
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
// admin-portfolio.js - 作品集管理页面功能
|
||||
|
||||
function openAddPortfolioModal() {
|
||||
document.getElementById('portfolioId').value = '';
|
||||
document.getElementById('portfolioName').value = '';
|
||||
document.getElementById('portfolioDescription').value = '';
|
||||
document.getElementById('portfolioTechStack').value = '';
|
||||
document.getElementById('portfolioURL').value = '';
|
||||
document.getElementById('portfolioStartDate').value = '';
|
||||
document.getElementById('portfolioEndDate').value = '';
|
||||
document.getElementById('portfolioModalTitle').textContent = '添加项目';
|
||||
document.getElementById('portfolioModal').style.display = 'flex';
|
||||
}
|
||||
|
||||
function closePortfolioModal() {
|
||||
document.getElementById('portfolioModal').style.display = 'none';
|
||||
}
|
||||
|
||||
function editPortfolio(id) {
|
||||
fetch(`/api/admin/portfolio/${id}`)
|
||||
.then(response => response.json())
|
||||
.then(item => {
|
||||
document.getElementById('portfolioId').value = item.id;
|
||||
document.getElementById('portfolioName').value = item.name;
|
||||
document.getElementById('portfolioDescription').value = item.description;
|
||||
document.getElementById('portfolioTechStack').value = item.tech_stack ? item.tech_stack.join(', ') : '';
|
||||
document.getElementById('portfolioURL').value = item.url || '';
|
||||
document.getElementById('portfolioStartDate').value = item.start_date || '';
|
||||
document.getElementById('portfolioEndDate').value = item.end_date || '';
|
||||
document.getElementById('portfolioModalTitle').textContent = '编辑项目';
|
||||
document.getElementById('portfolioModal').style.display = 'flex';
|
||||
})
|
||||
.catch(error => {
|
||||
showCustomAlert('error', '获取失败', '获取项目信息失败');
|
||||
});
|
||||
}
|
||||
|
||||
function savePortfolio(event) {
|
||||
event.preventDefault();
|
||||
|
||||
const portfolioId = document.getElementById('portfolioId').value;
|
||||
const userId = document.getElementById('portfolioUserId').value;
|
||||
const techStack = document.getElementById('portfolioTechStack').value
|
||||
.split(',')
|
||||
.map(s => s.trim())
|
||||
.filter(s => s);
|
||||
|
||||
const data = {
|
||||
user_id: userId,
|
||||
name: document.getElementById('portfolioName').value,
|
||||
description: document.getElementById('portfolioDescription').value,
|
||||
tech_stack: techStack,
|
||||
url: document.getElementById('portfolioURL').value,
|
||||
start_date: document.getElementById('portfolioStartDate').value,
|
||||
end_date: document.getElementById('portfolioEndDate').value
|
||||
};
|
||||
|
||||
const url = portfolioId ? `/api/admin/portfolio/${portfolioId}` : '/api/admin/portfolio';
|
||||
const method = portfolioId ? 'PUT' : 'POST';
|
||||
|
||||
fetch(url, {
|
||||
method: method,
|
||||
headers: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify(data)
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(result => {
|
||||
if (result.success) {
|
||||
showCustomAlert('success', '保存成功', portfolioId ? '项目更新成功' : '项目添加成功');
|
||||
closePortfolioModal();
|
||||
window.location.reload();
|
||||
} else {
|
||||
showCustomAlert('error', '保存失败', result.message || '操作失败');
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
showCustomAlert('error', '保存失败', '网络请求失败');
|
||||
});
|
||||
}
|
||||
|
||||
function deletePortfolio(id) {
|
||||
if (!confirm('确定要删除该项目吗?')) return;
|
||||
|
||||
fetch(`/api/admin/portfolio/${id}`, {
|
||||
method: 'DELETE'
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(result => {
|
||||
if (result.success) {
|
||||
showCustomAlert('success', '删除成功', '项目删除成功');
|
||||
window.location.reload();
|
||||
} else {
|
||||
showCustomAlert('error', '删除失败', result.message || '操作失败');
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
showCustomAlert('error', '删除失败', '网络请求失败');
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user