From b4cc90d2d378f828622ae8431b9e3241511d64ec Mon Sep 17 00:00:00 2001 From: Kyaru Date: Thu, 25 Jun 2026 21:52:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0API=E8=AF=B4=E6=98=8E?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routes/contracts.js | 9 +++++++-- routes/employees.js | 21 ++++++++++++++++++++- server.js | 1 + 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/routes/contracts.js b/routes/contracts.js index b8dc0ac..18d035b 100644 --- a/routes/contracts.js +++ b/routes/contracts.js @@ -27,17 +27,20 @@ function pagination(query) { return { page, pageSize, offset } } -// 列表查询时 JOIN 客户名、供应商名和员工名 +// 列表查询时 JOIN 客户名、供应商名、员工名和负责人姓名 const LIST_SELECT = ` SELECT c.*, cu.name AS customer_name, s.name AS supplier_name, - e.name AS employee_name + e.name AS employee_name, + ru.name AS responsible_user_name FROM contracts c LEFT JOIN customers cu ON c.customer_id = cu.id LEFT JOIN suppliers s ON c.supplier_id = s.id LEFT JOIN employees e ON c.employee_id = e.id + LEFT JOIN users u ON c.responsible_user_id = u.id + LEFT JOIN employees ru ON u.employee_id = ru.id ` // 单条查询时用同样的 JOIN @@ -102,6 +105,8 @@ async function list(req, res) { LEFT JOIN customers cu ON c.customer_id = cu.id LEFT JOIN suppliers s ON c.supplier_id = s.id LEFT JOIN employees e ON c.employee_id = e.id + LEFT JOIN users u ON c.responsible_user_id = u.id + LEFT JOIN employees ru ON u.employee_id = ru.id ${where}`, params ) diff --git a/routes/employees.js b/routes/employees.js index 73b3960..992d43f 100644 --- a/routes/employees.js +++ b/routes/employees.js @@ -246,4 +246,23 @@ async function remove(req, res) { } } -module.exports = { list, detail, create, update, remove } +// GET /api/employees/simple —— 简易员工列表(无数据范围限制,用于下拉选择) +async function simpleList(req, res) { + try { + const { department } = req.query + let sql = 'SELECT id, name, department, position FROM employees WHERE status = 1' + const params = [] + if (department) { + sql += ' AND department = ?' + params.push(department) + } + sql += ' ORDER BY id' + const [rows] = await pool.query(sql, params) + res.json({ code: 0, message: 'ok', data: rows }) + } catch (e) { + console.error('[employees simpleList] error:', e) + res.status(500).json({ code: 500, message: e.message }) + } +} + +module.exports = { list, detail, create, update, remove, simpleList } diff --git a/server.js b/server.js index a14d0fe..3c52322 100644 --- a/server.js +++ b/server.js @@ -54,6 +54,7 @@ app.put('/api/customers/:id', auth, checkPermission('customer', 'update'), app.delete('/api/customers/:id', auth, checkPermission('customer', 'delete'), customers.remove) // ============ 员工管理 /api/employees ============ +app.get('/api/employees/simple', auth, employees.simpleList) app.get('/api/employees', auth, checkPermission('employee', 'read'), employees.list) app.get('/api/employees/:id', auth, checkPermission('employee', 'read'), employees.detail) app.post('/api/employees', auth, checkPermission('employee', 'create'), employees.create)