明树Git Lab

Commit 56ab2b08 authored by zfp1's avatar zfp1

update

parent 193df050
Pipeline #111159 passed with stage
in 4 seconds
......@@ -102,9 +102,9 @@ async function deleteDepart(req, res, next) {
return res.sendError(errorMessage.resourceNotFound);
}
//查验部门下是否有用户
let depIds = curNode.parentIds ? curNode.parentIds.split(',') : [];
depIds.push(curNode.id);
let count = await DB.UserDepart.count({where: {departId: {[Op.in]: depIds}}});
// let depIds = curNode.parentIds ? curNode.parentIds.split(',') : [];
// depIds.push(curNode.id);
let count = await DB.UserDepart.count({where: {parentIds: {[Op.startsWith]: curNode.parentIds + curNode.id}}});
if(count && count > 0) {
return res.sendError(errorMessage.departHasUser);
}
......
......@@ -277,6 +277,7 @@ async function saveProjectPreLixiang(req, res, next) {
/**
* 发起立项
* 当前1 提交2
*/
async function startLixiang(req, res, next) {
try {
......@@ -284,38 +285,144 @@ async function startLixiang(req, res, next) {
return res.sendError(errorMessage.resourceNotFound)
}
//记录操作
await DB.FlowRecord.create({
userId: req.user.id,
actionName: '发起项目立项审批',
projectId: req.body.id,
projectName: req.body.projectName,
projectCode: req.body.projectCode,
});
/**
* 此处需要判断当前项目是从哪一个节点回来的,依次往下
* 1. 初审退回
* 2. 核准退回
* 3. 首次提交
*/
if (req.body.projectLxjbrUser) {
//更新信息和状态
let ret = await xiangmulixianggengxin(req.body, "3"); //状态 2 -- 立项核准中
// 如果有经办人则是 初审退回,提交后直接到投管部经办人即可
await DB.Message.create({
projectId: req.body.id,
creator: req.user.id,
receivers: [req.body.projectLxjbrUser],
type: 2,
title: `项目【${req.body.projectName}】已重新提交立项初审,请尽快处理!`,
content: `项目【${req.body.projectName}】已重新提交立项初审,请尽快处理!`,
});
await DB.FlowRecord.create({
userId: req.user.id,
actionName: '重新提交立项初审',
projectId: req.body.id,
projectName: req.body.projectName,
projectCode: req.body.projectCode,
});
return res.sendData();
} else if (req.body.projectHzUser) {
//更新信息和状态
let ret = await xiangmulixianggengxin(req.body, "2"); //状态 2 -- 立项核准中
// 如果有部门长则是 核准退回,提交后直接到部门长即可
await DB.Message.create({
projectId: req.body.id,
creator: req.user.id,
receivers: [req.body.projectHzUser],
type: 2,
title: `项目【${req.body.projectName}】已重新提交立项核准审批,请尽快处理!`,
content: `项目【${req.body.projectName}】已重新提交立项核准审批,请尽快处理!`,
});
await DB.FlowRecord.create({
userId: req.user.id,
actionName: '重新提交立项核准',
projectId: req.body.id,
projectName: req.body.projectName,
projectCode: req.body.projectCode,
});
return res.sendData();
} else {
//更新信息和状态
let ret = await xiangmulixianggengxin(req.body, "2"); //状态 2 -- 立项核准中
// 记录流程节点操作
await DB.FlowRecord.create({
userId: req.user.id,
actionName: '发起项目立项核准',
projectId: req.body.id,
projectName: req.body.projectName,
projectCode: req.body.projectCode,
});
// 项目公司所属单位员工发起,发送消息给项目单位部门长核准
let approvers = await userModule.getCompanyProjectApprover(req.user.id);
if (!(approvers && approvers.length > 0)) {
return res.sendError({ code: '60001', msg: '项目已保存,请联系管理员为本公司添加【项目立项核准】角色人员' });
}
await DB.Message.create({
projectId: req.body.id,
creator: req.user.id,
receivers: approvers.map(o => o.id),
type: 2,
title: `项目【${req.body.projectName}】已发起立项核准,请尽快处理!`,
content: `项目【${req.body.projectName}】已发起立项核准,请尽快处理!`
});
//更新信息和状态
let ret = await xiangmulixianggengxin(req.body, 3); //状态 3 -- 立项审批中
// 给审批人员发消息
await DB.FlowRecord.create({
userId: req.user.id,
actionName: '发起项目立项',
projectId: req.body.id,
projectName: req.body.projectName,
projectCode: req.body.projectCode,
});
let approvers = await userModule.getProjectApprover(req.user.id, 'xmlx_sp');
if (!(approvers && approvers.length > 0)) {
return res.sendError({ code: '60001', msg: '项目已保存,请联系管理员为本公司添加【项目立项】角色人员' });
return res.sendData(ret);
}
await DB.Message.create({
projectId: req.body.id,
creator: req.user.id,
receivers: approvers.map(o => o.id),
type: 2,
title: `项目【${req.body.projectName}】已发起立项,请尽快处理!`,
content: `项目【${req.body.projectName}】已发起立项,请尽快处理!`
});
} catch (error) {
next(error);
}
}
/**
* 项目公司所属单位部门长,核准项目公司员工发过来的立项审批消息,通过则发送消息给投管部经办人,不通过则改变项目状态退回到项目所属单位员工
* 当前2 通过3 不通过1
*/
async function approvalLixiangByDepartHeader(req, res, next) {
try {
let body = req.body; //有可能会部门长进行修改后提交
body.projectHzUser = req.user.id;
if (!body.id) {
return res.sendError(errorMessage.resourceNotFound)
}
let ret;
if (body.approvalResult) {
//部门长核准通过,更新项目信息和状态--立项初审
ret = await xiangmulixianggengxin(body, "3");
// 给投管部经办人发消息
let approvers = await userModule.getTouGuanJbrProjectApprover(req.user.id);
if (!(approvers && approvers.length > 0)) {
return res.sendError({ code: '60001', msg: '项目已保存,请联系管理员添加【投管部经办人】角色人员' });
}
await DB.Message.create({
projectId: body.id,
creator: req.user.id,
receivers: approvers.map(o => o.id),
type: 5,
title: `项目【${body.projectName}】已通过部门长核准,请投管部经办人尽快处理!`,
content: req.body.approvalMessage || `项目【${body.projectName}】已通过部门长核准,请投管部经办人尽快处理!`
});
// 记录流程节点操作
await DB.FlowRecord.create({
userId: req.user.id,
actionName: '项目核准通过',
projectId: req.body.id,
projectName: req.body.projectName,
projectCode: req.body.projectCode,
});
}
else {
//部门长核准不通过,更新项目信息和状态--退回到草稿
ret = await xiangmulixianggengxin(body, "1");
//记录操作
await DB.FlowRecord.create({
userId: req.user.id,
actionName: '项目核准未通过',
projectId: body.id,
projectName: body.projectName,
projectCode: body.projectCode,
content: body.approvalMessage,
});
await DB.Message.create({
projectId: body.id,
creator: req.user.id,
receivers: [body.projectCreator],
type: 6,
title: `项目【${body.projectName}】未通过部门长核准,请检查后重新提交!`,
content: req.body.approvalMessage || `项目【${body.projectName}】未通过部门长核准,请检查后重新提交!`
});
}
return res.sendData(ret);
} catch (error) {
next(error);
......@@ -323,47 +430,95 @@ async function startLixiang(req, res, next) {
}
/**
* 主动查询立项结果、或者能建调用我方接口
* 投管部经办人进行立项审批,不改变项目状态,如果通过则记录操作节点,并给投管部正副职发送消息
* 如果不通过,则给项目提交人发送消息
* 当前3 通过4 不通过1
*/
async function queryLixiangResult(req, res, next) {
async function approvalLixiangByTouGuanJbr(req, res, next) {
try {
if (!req.body.id) {
let body = req.body; //有可能会投管部经办人进行修改后提交
body.projectLxjbrUser = req.user.id;
if (!body.id) {
return res.sendError(errorMessage.resourceNotFound)
}
//请求能建提供接口
let result = { success: true };
//成功
if (result.success) {
let proInfo = await projectModule.getProjectInfoByLixiang(req.body);
//1. 更新项目状态
await DB.Project.update({ projectLzType: "5" }, { where: { id: req.body.id } });
//2. 存储快照 关联关系太多 全部建立快照表工程过大,暂时存储形式
proInfo.projectLzType = "5";
// await DB.ProjectLixiang.create({ lixiang: proInfo, type: 1, projectId: proInfo.id });
return res.sendData(proInfo);
} else {
return res.sendError(errorMessage.resourceNotFound); //暂时
let ret;
if (body.approvalResult) {
//投管部经办人审批通过,更新项目信息和状态为--立项终审
ret = await xiangmulixianggengxin(body, "4");
// 给投管部正副职发消息
let approvers = await userModule.getTouGuanZfzProjectApprover(req.user.id);
if (!(approvers && approvers.length > 0)) {
return res.sendError({ code: '60001', msg: '项目已保存,请联系管理员添加【投管部正副职】角色人员' });
}
await DB.Message.create({
projectId: body.id,
creator: req.user.id,
receivers: approvers.map(o => o.id),
type: 7,//初审通过消息
title: `项目【${body.projectName}】已通过投管部经办人审批,请您尽快处理!`,
content: req.body.approvalMessage || `项目【${body.projectName}】已通过投管部经办人审批,请您尽快处理!`
});
// 记录流程节点操作
await DB.FlowRecord.create({
userId: req.user.id,
actionName: '项目立项初审通过',
projectId: req.body.id,
projectName: req.body.projectName,
projectCode: req.body.projectCode,
content: req.body.approvalMessage,
});
}
else {
//投管部经办人审批不通过,更新项目信息和状态--直接回到项目提交人
ret = await xiangmulixianggengxin(body, "1");
// 给项目提交人发消息
await DB.Message.create({
projectId: body.id,
creator: req.user.id,
receivers: [body.projectCreator],
type: 8, // 初审不通过消息
title: `项目【${body.projectName}】未通过投管部经办人审批,请检查后重新提交!`,
content: req.body.approvalMessage || `项目【${body.projectName}】未通过投管部经办人审批,请检查后重新提交!`
});
// 记录流程节点操作
await DB.FlowRecord.create({
userId: req.user.id,
actionName: '项目立项初审未通过',
projectId: req.body.id,
projectName: req.body.projectName,
projectCode: req.body.projectCode,
content: body.approvalMessage,
});
}
return res.sendData(ret);
} catch (error) {
next(error);
}
}
/**
* 立项审批
* @param {*} body
* @param {*} projectLzType
* @returns
* 当前4 通过5 不通过3
*/
async function approvalLixiang(req, res, next) {
try {
let proInfo = await projectModule.getProjectInfoByLixiang(req.body);
if (req.body.approvalResult) {
//1. 更新项目状态--已立项
await DB.Project.update({ projectLzType: "5" }, { where: { id: req.body.id } });
await DB.Project.update({ projectLzType: "5", projectLxzsUser: req.user.id }, { where: { id: req.body.id } });
//2. 存储快照 关联关系太多 全部建立快照表工程过大,暂时存储形式
proInfo.projectLzType = "5";
await DB.ProjectLixiang.create({ lixiang: proInfo, type: 1, projectId: proInfo.id });
await DB.Message.create({
projectId: proInfo.id,
creator: req.user.id,
receivers: [proInfo.projectLxjbrUser],
type: 9, // 立项审批通过消息
title: `项目【${proInfo.projectName}】已通过立项终审。`,
content: req.body.approvalMessage || `项目【${proInfo.projectName}】已通过立项终审。`
});
await DB.FlowRecord.create({
userId: req.user.id,
actionName: '立项审批通过',
......@@ -373,8 +528,16 @@ async function approvalLixiang(req, res, next) {
content: req.body.approvalMessage,
});
} else {
//待立项
await DB.Project.update({ projectLzType: "1" }, { where: { id: req.body.id } });
//立项终审 未通过 则回到投管部经办人,项目状态变为立项审批中,
await DB.Project.update({ projectLzType: "3", projectLxzsUser: req.user.id }, { where: { id: req.body.id } });
await DB.Message.create({
projectId: proInfo.id,
creator: req.user.id,
receivers: [proInfo.projectLxjbrUser],
type: 10, // 立项终审不通过消息
title: `项目【${proInfo.projectName}】未通过立项终审,请检查后重新提交!`,
content: req.body.approvalMessage || `项目【${proInfo.projectName}】未通过立项终审,审批意见:${req.body.approvalMessage},请检查后重新提交!`
});
await DB.FlowRecord.create({
userId: req.user.id,
actionName: '立项审批未通过',
......@@ -544,6 +707,7 @@ async function saveJuece(req, res, next) {
if (!req.body.id) {
return res.sendError(errorMessage.resourceNotFound)
}
body.projectFqJueceUser = req.user.id;//记录一下项目决策发起人
let ret = await xiangmujuecegengxin(req.body, 7); //决策填报中
return res.sendData(ret);
} catch (error) {
......@@ -556,6 +720,7 @@ async function startJuece(req, res, next) {
if (!req.body.id) {
return res.sendError(errorMessage.resourceNotFound)
}
body.projectFqJueceUser = req.user.id;//记录一下项目决策发起人
let ret = await xiangmujuecegengxin(req.body, 8); //决策审批中
// 给审批人员发消息
......@@ -566,7 +731,7 @@ async function startJuece(req, res, next) {
projectName: req.body.projectName,
projectCode: req.body.projectCode,
});
let approvers = await userModule.getProjectApprover(req.user.id, 'xmjc_sp');
let approvers = await userModule.getTouGuanZfzProjectApprover(req.user.id);
if (!(approvers && approvers.length > 0)) {
return res.sendError({ code: '60002', msg: '项目已保存,请联系管理员为本公司添加【项目决策】角色人员' });
}
......@@ -585,30 +750,6 @@ async function startJuece(req, res, next) {
}
}
/**
* 主动查询决策审批结果
*/
async function queryJueceResult(req, res, next) {
try {
if (!req.body.id) {
return res.sendError(errorMessage.resourceNotFound)
}
//请求能建提供接口
let result = { success: true };
//成功
if (result.success) {
//1. 更新项目状态
await DB.Project.update({ projectLzType: "9" }, { where: { id: req.body.id } }); //已经决策成功
return res.sendData();
} else {
return res.sendError(errorMessage.resourceNotFound); //暂时
}
} catch (error) {
next(error);
}
}
/**
* 决策审批
*/
......@@ -617,7 +758,7 @@ async function approvalJuece(req, res, next) {
let proInfo = await projectModule.getProjectInfo(req.body);
if (req.body.approvalResult) {
//1. 更新项目状态--已决策
await DB.Project.update({ projectLzType: "9" }, { where: { id: req.body.id } });
await DB.Project.update({ projectLzType: "9", projectJueceSpUser: req.user.id }, { where: { id: req.body.id } });
//2. 存储快照 关联关系太多 全部建立快照表工程过大,暂时存储形式
proInfo.projectLzType = "9";
await DB.ProjectLixiang.create({ juece: proInfo, type: 2, projectId: proInfo.id });
......@@ -629,9 +770,17 @@ async function approvalJuece(req, res, next) {
projectCode: proInfo.projectCode,
content: req.body.approvalMessage,
});
await DB.Message.create({
projectId: proInfo.id,
creator: req.user.id,
receivers: [proInfo.projectLxjbrUser],
type: 11,// 决策审批通过消息
title: `项目【${proInfo.projectName}】已通过项目决策审批。`,
content: req.body.approvalMessage || `项目【${proInfo.projectName}】已通过项目决策审批。`
});
} else {
//回到 已立项
await DB.Project.update({ projectLzType: "7" }, { where: { id: req.body.id } });
await DB.Project.update({ projectLzType: "7", projectJueceSpUser: req.user.id }, { where: { id: req.body.id } });
await DB.FlowRecord.create({
userId: req.user.id,
actionName: '决策审批未通过',
......@@ -640,6 +789,14 @@ async function approvalJuece(req, res, next) {
projectCode: proInfo.projectCode,
content: req.body.approvalMessage,
});
await DB.Message.create({
projectId: proInfo.id,
creator: req.user.id,
receivers: [proInfo.projectFqJueceUser || proInfo.projectLxjbrUser],
type: 12, // 决策审批未通过消息
title: `项目【${proInfo.projectName}】未通过项目决策审批,请检查后重新提交!`,
content: req.body.approvalMessage || `项目【${proInfo.projectName}】未通过项目决策审批,请检查后重新提交!`
});
}
return res.sendData(proInfo);
} catch (error) {
......@@ -1011,28 +1168,28 @@ async function listProject(req, res, next) {
let search = {};
let where = { del: 0 };
//处理筛选条件
let projectLzTypes = [1];
let projectLzTypes = ["1"];
switch (req.body.menuType) {
case "xmlingxuan":
projectLzTypes = [1];
projectLzTypes = ["1","2"];
break;
case "xmlx":
projectLzTypes = [3, 5];
projectLzTypes = ["3", "4", "5"];
break;
case "xmjc":
projectLzTypes = [8, 9, 13];
projectLzTypes = ["8", "9", "13"];
break;
case "xmzjc":
projectLzTypes = [8, 9, 11, 12, 13];
projectLzTypes = ["8", "9", "11", "12", "13"];
break;
case "xmlz":
projectLzTypes = [7];
projectLzTypes = ["7"];
break;
case "xmdak":
projectLzTypes = [5, 7, 8, 9, 11, 12, 13];
projectLzTypes = ["5", "7", "8", "9", "11", "12", "13"];
break;
default:
projectLzTypes = [5, 7, 8, 9, 11, 12, 13];
projectLzTypes = ["5", "7", "8", "9", "11", "12", "13"];
break;
}
if (req.body.menuType) {
......@@ -1046,26 +1203,26 @@ async function listProject(req, res, next) {
if (req.body.attributes && req.body.attributes.length) {
search.attributes = req.body.attributes;
}
if(req.body.projectName) {
if (req.body.projectName) {
search.where.projectName = { [Op.like]: `%${req.body.projectName}%` };
}
if(req.body.projectCode) {
if (req.body.projectCode) {
search.where.projectCode = { [Op.like]: `%${req.body.projectCode}%` };
}
if(req.body.glzt) {
if (req.body.glzt) {
search.where.glzt = { [Op.like]: `%${req.body.glzt}%` };
}
if(req.body.zsqy) {
if (req.body.zsqy) {
search.where.zsqy = { [Op.like]: `%${req.body.zsqy}%` };
}
if(req.body.xmjd) {
search.where.xmjd =req.body.xmjd;
if (req.body.xmjd) {
search.where.xmjd = req.body.xmjd;
}
if(req.body.xmqy) {
search.where.xmqy = req.body.xmqy ;
if (req.body.xmqy) {
search.where.xmqy = req.body.xmqy;
}
if(req.body.projectId) {
search.where.id = req.body.projectId ;
if (req.body.projectId) {
search.where.id = req.body.projectId;
}
console.log(search)
search.raw = true
......@@ -1231,7 +1388,8 @@ async function saveZaiJuece(req, res, next) {
if (!req.body.id) {
return res.sendError(errorMessage.resourceNotFound)
}
let ret = await xiangmujuecegengxin(req.body, 11); //再决策填报中
req.body.projectFqZaiJueceUser = req.user.id; //发起人
let ret = await xiangmujuecegengxin(req.body, "11"); //再决策填报中
return res.sendData(ret);
} catch (error) {
next(error);
......@@ -1243,7 +1401,8 @@ async function startZaiJuece(req, res, next) {
if (!req.body.id) {
return res.sendError(errorMessage.resourceNotFound)
}
let ret = await xiangmujuecegengxin(req.body, 12); //再决策审批中
req.body.projectFqZaiJueceUser = req.user.id; //发起人
let ret = await xiangmujuecegengxin(req.body, "12"); //再决策审批中
// 给审批人员发消息
await DB.FlowRecord.create({
......@@ -1253,7 +1412,7 @@ async function startZaiJuece(req, res, next) {
projectName: req.body.projectName,
projectCode: req.body.projectCode,
});
let approvers = await userModule.getProjectApprover(req.user.id, 'xmjc_sp');
let approvers = await userModule.getTouGuanZfzProjectApprover(req.user.id);
if (!(approvers && approvers.length > 0)) {
return res.sendError({ code: '60002', msg: '项目已保存,请联系管理员为本公司添加【项目再决策】角色人员' });
}
......@@ -1277,7 +1436,7 @@ async function approvalZaiJuece(req, res, next) {
let proInfo = await projectModule.getProjectInfo(req.body);
if (req.body.approvalResult) {
//1. 更新项目状态--已决策
await DB.Project.update({ projectLzType: 13 }, { where: { id: req.body.id } });
await DB.Project.update({ projectLzType: "13" }, { where: { id: req.body.id } });
//2. 存储快照 关联关系太多 全部建立快照表工程过大,暂时存储形式
proInfo.projectLzType = "13";
await DB.ProjectLixiang.create({ zaijuece: proInfo, type: 3, projectId: proInfo.id });
......@@ -1289,10 +1448,18 @@ async function approvalZaiJuece(req, res, next) {
projectCode: proInfo.projectCode,
content: req.body.approvalMessage,
});
await DB.Message.create({
projectId: proInfo.id,
creator: req.user.id,
receivers: [proInfo.projectFqZaiJueceUser || proInfo.projectFqJueceUser || proInfo.projectLxjbrUser], //大概率是同一个人
type: 13, // 决策审批通过消息
title: `项目【${proInfo.projectName}】已通过项目再决策审批!`,
content: req.body.approvalMessage || `项目【${proInfo.projectName}】已通过项目再决策审批!`
});
} else {
//TODO:不确定
// //回到 已立项
await DB.Project.update({ projectLzType: 9 }, { where: { id: req.body.id } });
await DB.Project.update({ projectLzType: "9" }, { where: { id: req.body.id } });
await DB.FlowRecord.create({
userId: req.user.id,
actionName: '再决策审批未通过',
......@@ -1301,6 +1468,15 @@ async function approvalZaiJuece(req, res, next) {
projectCode: proInfo.projectCode,
content: req.body.approvalMessage,
});
await DB.Message.create({
projectId: proInfo.id,
creator: req.user.id,
receivers: [proInfo.projectFqZaiJueceUser || proInfo.projectFqJueceUser || proInfo.projectLxjbrUser],
type: 14, // 决策审批未通过消息
title: `项目【${proInfo.projectName}】未通过项目再决策审批,请检查后重新提交!`,
content: req.body.approvalMessage || `项目【${proInfo.projectName}】未通过项目再决策审批,请检查后重新提交!`
});
}
return res.sendData(proInfo);
} catch (error) {
......@@ -1320,11 +1496,11 @@ module.exports = {
finalJugProject,
getOwnProjects,
startLixiang,
approvalLixiangByDepartHeader,
approvalLixiangByTouGuanJbr,
saveJuece,
startJuece,
saveProjectPreLixiang,
queryLixiangResult,
queryJueceResult,
getProjectCwpj,
approvalLixiang,
approvalJuece,
......
......@@ -25,7 +25,7 @@ const Project = sequelize.define('Project', {
},
projectLzType: {
type: DataTypes.STRING(10),
comment: "项目流转状态: 1待立项 3立项审批中 5 已立项 7决策填报中 8 决策审批中 9 已决策 ( 待定 11 再决策填报中 12 再决策审批中 13 再决策审批通过 15再决策审批不通过)",
comment: "项目流转状态: 1待立项 2.立项核准中 3立项初审 4.立项终审 5 已立项 7决策填报中 8 决策审批中 9 已决策 ( 待定 11 再决策填报中 12 再决策审批中 13 再决策审批通过 15再决策审批不通过)",
},
xmjd: {
type: DataTypes.STRING(10),
......@@ -36,7 +36,34 @@ const Project = sequelize.define('Project', {
defaultValue: 0,
comment1: "0 正常 1 删除",
},
projectHzUser: {
type: DataTypes.INTEGER,
comment: "项目核准人ID",
},
projectLxjbrUser: {
type: DataTypes.INTEGER,
comment: "项目立项经办人ID",
},
projectLxzsUser: {
type: DataTypes.INTEGER,
comment: "项目立项终审人ID",
},
projectFqJueceUser: {
type: DataTypes.INTEGER,
comment: "项目决策发起人ID",
},
projectJueceSpUser: {
type: DataTypes.INTEGER,
comment: "项目决策审批人ID",
},
projectFqZaiJueceUser: {
type: DataTypes.INTEGER,
comment: "项目再决策发起人ID",
},
projectZaiJueceSpUser: {
type: DataTypes.INTEGER,
comment: "项目再决策审批人ID",
},
/**
* 立项字段
*/
......
......@@ -18,7 +18,7 @@ const projectBjtj = sequelize.define('projectBjtj', {
comment: "单位工程造价数值"
},
dwgczjDw: {
type: DataTypes.INTEGER,
type: DataTypes.STRING(10),
comment: "单位工程造价单位"
},
xsfwnlSz: {
......
......@@ -17,6 +17,11 @@ const Depart = sequelize.define('Depart', {
type: DataTypes.INTEGER,
},
type: {
type: DataTypes.INTEGER,
defaultValue: 0,
comment: "0 集团及内部部门 1 项目公司及内部部门"
},
parentIds: {
type: DataTypes.STRING(500),
},
......
......@@ -37,7 +37,12 @@ const Message = sequelize.define('Message', {
type: {
type: DataTypes.INTEGER,
allowNull: true,
comment: "消息类型 1 系统消息 2 项目立项审批 3.项目决策审批 4. 项目再决策审批"
comment: `消息类型 1 系统消息
2 项目公司所属员工发起立项
5. 项目所属单位部门长核准通过 6.项目所属单位部门长核准不通过
7. 投管部经办人初审通过 8. 投管部经办人初审不通过
9. 投管部正副职复审通过 10. 投管部正副职复审不通过
3.发起项目决策审批 11.决策审批通过 12 决策审批未通过 4. 项目再决策审批 13.再决策审批通过 14.再决策审批未通过`
},
/**
* 其他待存字段
......
......@@ -131,20 +131,46 @@ async function setRoleMenu(roleId, menuIds, rolemenus) {
}
async function getProjectApprover(userId, roleCode) {
// 获取当前用户公司的 具体角色 的用户列表
// let role = await DB.Role.findOne({where: {key: roleCode}, raw: true});
// if(!(role && role.id)) {
// return [];
// }
// let userIds = await DB.UserRole.findAll({where: {roleId: role.id}, raw: true});
// userIds = (userIds || []).map(o => {return o.userId});
async function getCompanyProjectApprover(userId, roleCode) {
roleCode = roleCode || "xmssdwbmz"; //暂时
// 获取投管部正副职tgbzfz的用户列表
let role = await DB.Role.findOne({where: {key: roleCode}, raw: true});
if(!(role && role.id)) {
return [];
}
let userIds = await DB.UserRole.findAll({where: {roleId: role.id}, raw: true});
userIds = (userIds || []).map(o => {return o.userId});
// let users = await DB.User.findAll({ where: { id: {[Op.in]: userIds} } });
// return users;
let user = await DB.User.findOne({ where: { id: userId } });
return [user];
let users = await DB.User.findAll({ where: { id: {[Op.in]: userIds} } });
return users;
}
async function getTouGuanJbrProjectApprover(userId, roleCode) {
roleCode = roleCode || "tgbjbr";
// 获取投管部正副职tgbzfz的用户列表
let role = await DB.Role.findOne({where: {key: roleCode}, raw: true});
if(!(role && role.id)) {
return [];
}
let userIds = await DB.UserRole.findAll({where: {roleId: role.id}, raw: true});
userIds = (userIds || []).map(o => {return o.userId});
let users = await DB.User.findAll({ where: { id: {[Op.in]: userIds} } });
return users;
}
async function getTouGuanZfzProjectApprover(userId, roleCode) {
roleCode = roleCode || "tgbzfz";
// 获取投管部正副职tgbzfz的用户列表
let role = await DB.Role.findOne({where: {key: roleCode}, raw: true});
if(!(role && role.id)) {
return [];
}
let userIds = await DB.UserRole.findAll({where: {roleId: role.id}, raw: true});
userIds = (userIds || []).map(o => {return o.userId});
let users = await DB.User.findAll({ where: { id: {[Op.in]: userIds} } });
return users;
}
module.exports = {
......@@ -152,5 +178,7 @@ module.exports = {
setUserDepart,
setUserPosition,
setRoleMenu,
getProjectApprover,
getCompanyProjectApprover,
getTouGuanJbrProjectApprover,
getTouGuanZfzProjectApprover,
}
\ No newline at end of file
......@@ -21,15 +21,14 @@ router.post('/saveProjectPreLixiang', projectController.saveProjectPreLixiang);
router.post('/startLixiang', projectController.startLixiang);//发起立项审批----TODO:待完成与能建对接
router.post('/queryLixiangResult', projectController.queryLixiangResult);
router.post('/approvalLixiang', projectController.approvalLixiang);
router.post('/approvalLixiang', projectController.approvalLixiangByDepartHeader); //部门长核准立项审批
router.post('/approvalLixiang', projectController.approvalLixiangByTouGuanJbr);//投管部经办人审批立项审批
router.post('/approvalLixiang', projectController.approvalLixiang);//立项审批---投管部正副职审批
// -----------------------接收能建立项结果信息,更新立项批复信息等字段------------------------------------------
router.post('/saveJuece', projectController.saveJuece); //决策保存
router.post('/startJuece', projectController.startJuece); //发起决策
router.post('/queryJueceResult', projectController.queryJueceResult); //查询决策审批结果
router.post('/approvalJuece', projectController.approvalJuece);
// 财务评价
......@@ -104,7 +103,7 @@ router.post('/getZdsxspInfo', projectTzController.getZdsxspInfo);
router.post('/saveZaiJuece', projectController.saveZaiJuece); //决策保存
router.post('/startZaiJuece', projectController.startZaiJuece); //发起决策
router.post('/approvalZaiJuece', projectController.approvalZaiJuece);
// router.post('/queryJueceResult', projectController.queryJueceResult); //查询决策审批结果
//2.8 项目退出 ***
router.post('/createXmtc', projectTzController.createXmtc);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment