const express = require('express'); const db = require('../db-sqlite'); const { authenticate } = require('../middleware/auth'); module.exports = function(app) { const router = express.Router(); router.get('/', authenticate, async (req, res) => { try { const budgetProjectsResult = await db.query('SELECT id, name, contract_amount, status, created_at, updated_at FROM projects WHERE status = ? ORDER BY created_at DESC', ['budget']); const budgetProjects = budgetProjectsResult.rows; res.json({ success: true, data: budgetProjects, count: budgetProjects.length }); } catch (error) { console.error('获取预算项目列表失败:', error); res.status(500).json({ success: false, message: '获取预算项目列表失败' }); } }); router.get('/:id', authenticate, async (req, res) => { try { const { id } = req.params; const budgetProjectResult = await db.query('SELECT id, name, contract_amount, status, created_at, updated_at FROM projects WHERE id = ?', [id]); if (budgetProjectResult.rows.length === 0) { return res.status(404).json({ success: false, message: '预算项目不存在' }); } const budgetProject = budgetProjectResult.rows[0]; res.json({ success: true, data: budgetProject }); } catch (error) { console.error('获取预算项目详情失败:', error); res.status(500).json({ success: false, message: '获取预算项目详情失败' }); } }); router.post('/', authenticate, async (req, res) => { try { const { name, contract_amount } = req.body; if (!name) { return res.status(400).json({ success: false, message: '项目名称为必填项' }); } const result = await db.query( 'INSERT INTO projects (name, contract_amount, status, created_at, updated_at) VALUES (?, ?, ?, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)', [name, contract_amount, 'budget', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP] ); const newBudgetProjectResult = await db.query('SELECT id, name, contract_amount, status, created_at, updated_at FROM projects WHERE id = ?', [result.lastID]); const newBudgetProject = newBudgetProjectResult.rows[0]; console.log(`预算项目 ${name} 创建成功,由 ${req.user.username} 操作`); res.json({ success: true, data: newBudgetProject }); } catch (error) { console.error('创建预算项目失败:', error); res.status(500).json({ success: false, message: '创建预算项目失败' }); } }); router.delete('/:id', authenticate, async (req, res) => { try { const { id } = req.params; const existingProject = await db.query('SELECT id FROM projects WHERE id = ?', [id]); if (existingProject.rows.length === 0) { return res.status(404).json({ success: false, message: '预算项目不存在' }); } await db.query('DELETE FROM projects WHERE id = ?', [id]); res.json({ success: true, message: '预算项目删除成功' }); } catch (error) { console.error('删除预算项目失败:', error); res.status(500).json({ success: false, message: '删除预算项目失败' }); } }); app.use('/api/budget-projects', router); };