Files
nxxmdata/government-backend/controllers/approvalProcessController.js
2025-10-09 18:01:06 +08:00

287 lines
5.9 KiB
JavaScript

const ApprovalProcess = require('../models/ApprovalProcess');
const { Op } = require('sequelize');
// 获取审批流程列表
const getApprovalProcesses = async (req, res) => {
try {
const {
page = 1,
pageSize = 9,
status,
applicant,
type
} = req.query;
const offset = (page - 1) * pageSize;
const where = {};
// 构建查询条件
if (status) {
where.status = status;
}
if (applicant) {
where.applicant = {
[Op.like]: `%${applicant}%`
};
}
if (type) {
where.type = type;
}
const { count, rows } = await ApprovalProcess.findAndCountAll({
where,
limit: parseInt(pageSize),
offset: parseInt(offset),
order: [['createdAt', 'DESC']]
});
res.json({
code: 200,
message: '获取成功',
data: {
list: rows,
total: count,
page: parseInt(page),
pageSize: parseInt(pageSize)
}
});
} catch (error) {
console.error('获取审批流程列表失败:', error);
res.status(500).json({
code: 500,
message: '服务器内部错误',
error: error.message
});
}
};
// 根据ID获取审批流程详情
const getApprovalProcessById = async (req, res) => {
try {
const { id } = req.params;
const approvalProcess = await ApprovalProcess.findByPk(id);
if (!approvalProcess) {
return res.status(404).json({
code: 404,
message: '审批流程不存在'
});
}
res.json({
code: 200,
message: '获取成功',
data: approvalProcess
});
} catch (error) {
console.error('获取审批流程详情失败:', error);
res.status(500).json({
code: 500,
message: '服务器内部错误',
error: error.message
});
}
};
// 创建审批流程
const createApprovalProcess = async (req, res) => {
try {
const {
title,
type,
applicant,
phone,
farmName,
quantity,
description,
files,
remarks
} = req.body;
const approvalProcess = await ApprovalProcess.create({
title,
type,
applicant,
phone,
farmName,
quantity,
description,
files,
remarks,
status: 'pending'
});
res.status(201).json({
code: 201,
message: '创建成功',
data: approvalProcess
});
} catch (error) {
console.error('创建审批流程失败:', error);
res.status(500).json({
code: 500,
message: '服务器内部错误',
error: error.message
});
}
};
// 更新审批流程
const updateApprovalProcess = async (req, res) => {
try {
const { id } = req.params;
const {
title,
type,
applicant,
phone,
farmName,
quantity,
description,
files,
remarks
} = req.body;
const approvalProcess = await ApprovalProcess.findByPk(id);
if (!approvalProcess) {
return res.status(404).json({
code: 404,
message: '审批流程不存在'
});
}
await approvalProcess.update({
title,
type,
applicant,
phone,
farmName,
quantity,
description,
files,
remarks
});
res.json({
code: 200,
message: '更新成功',
data: approvalProcess
});
} catch (error) {
console.error('更新审批流程失败:', error);
res.status(500).json({
code: 500,
message: '服务器内部错误',
error: error.message
});
}
};
// 删除审批流程
const deleteApprovalProcess = async (req, res) => {
try {
const { id } = req.params;
const approvalProcess = await ApprovalProcess.findByPk(id);
if (!approvalProcess) {
return res.status(404).json({
code: 404,
message: '审批流程不存在'
});
}
await approvalProcess.destroy();
res.json({
code: 200,
message: '删除成功'
});
} catch (error) {
console.error('删除审批流程失败:', error);
res.status(500).json({
code: 500,
message: '服务器内部错误',
error: error.message
});
}
};
// 审批操作(通过/拒绝)
const processApproval = async (req, res) => {
try {
const { id } = req.params;
const { action, approvalComment, approver } = req.body;
const approvalProcess = await ApprovalProcess.findByPk(id);
if (!approvalProcess) {
return res.status(404).json({
code: 404,
message: '审批流程不存在'
});
}
const status = action === 'approve' ? 'approved' : 'rejected';
await approvalProcess.update({
status,
approvalComment,
approver,
approvalTime: new Date()
});
res.json({
code: 200,
message: action === 'approve' ? '审批通过' : '审批拒绝',
data: approvalProcess
});
} catch (error) {
console.error('审批操作失败:', error);
res.status(500).json({
code: 500,
message: '服务器内部错误',
error: error.message
});
}
};
// 更新审批状态
const updateApprovalStatus = async (req, res) => {
try {
const { id } = req.params;
const { status } = req.body;
const approvalProcess = await ApprovalProcess.findByPk(id);
if (!approvalProcess) {
return res.status(404).json({
code: 404,
message: '审批流程不存在'
});
}
await approvalProcess.update({ status });
res.json({
code: 200,
message: '状态更新成功',
data: approvalProcess
});
} catch (error) {
console.error('更新审批状态失败:', error);
res.status(500).json({
code: 500,
message: '服务器内部错误',
error: error.message
});
}
};
module.exports = {
getApprovalProcesses,
getApprovalProcessById,
createApprovalProcess,
updateApprovalProcess,
deleteApprovalProcess,
processApproval,
updateApprovalStatus
};