备份:修复前完整项目快照 2026-04-19
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
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 projectsResult = await db.query('SELECT id, name, contract_amount, status, created_at, updated_at FROM projects');
|
||||
const projects = projectsResult.rows;
|
||||
res.json({ success: true, data: projects, count: projects.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 projectResult = await db.query('SELECT id, name, contract_amount, status, created_at, updated_at FROM projects WHERE id = ?', [id]);
|
||||
|
||||
if (projectResult.rows.length === 0) {
|
||||
return res.status(404).json({ success: false, message: '项目不存在' });
|
||||
}
|
||||
|
||||
const project = projectResult.rows[0];
|
||||
res.json({ success: true, data: project });
|
||||
} 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: '删除项目失败' });
|
||||
}
|
||||
});
|
||||
|
||||
router.put('/:id', authenticate, async (req, res) => {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
const { name, contract_amount, status } = req.body;
|
||||
|
||||
await db.query(
|
||||
'UPDATE projects SET name = ?, contract_amount = ?, status = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?',
|
||||
[name, contract_amount, status, id]
|
||||
);
|
||||
|
||||
const updatedProjectResult = await db.query('SELECT id, name, contract_amount, status, created_at, updated_at FROM projects WHERE id = ?', [id]);
|
||||
const updatedProject = updatedProjectResult.rows[0];
|
||||
|
||||
res.json({ success: true, data: updatedProject });
|
||||
} catch (error) {
|
||||
console.error('更新项目信息失败:', error);
|
||||
res.status(500).json({ success: false, message: '更新项目信息失败' });
|
||||
}
|
||||
});
|
||||
|
||||
router.put('/:id/contract', authenticate, async (req, res) => {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
const { contract_amount } = req.body;
|
||||
|
||||
await db.query(
|
||||
'UPDATE projects SET contract_amount = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?',
|
||||
[contract_amount, id]
|
||||
);
|
||||
|
||||
const updatedProjectResult = await db.query('SELECT id, name, contract_amount, status, created_at, updated_at FROM projects WHERE id = ?', [id]);
|
||||
const updatedProject = updatedProjectResult.rows[0];
|
||||
|
||||
res.json({ success: true, data: updatedProject });
|
||||
} catch (error) {
|
||||
console.error('更新项目合同失败:', error);
|
||||
res.status(500).json({ success: false, message: '更新项目合同失败' });
|
||||
}
|
||||
});
|
||||
|
||||
app.use('/api/projects', router);
|
||||
};
|
||||
Reference in New Issue
Block a user