明树Git Lab
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
J
jt_backend
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zengfanpei
jt_backend
Commits
56ab2b08
Commit
56ab2b08
authored
May 12, 2026
by
zfp1
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
193df050
Pipeline
#111159
passed with stage
in 4 seconds
Changes
8
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
369 additions
and
129 deletions
+369
-129
departController.js
controller/departController.js
+3
-3
projectController.js
controller/projectController.js
+279
-103
project.js
db/model/jt/project.js
+29
-2
projectBjtj.js
db/model/jt/projectBjtj.js
+1
-1
depart.js
db/model/system/depart.js
+5
-0
message.js
db/model/system/message.js
+6
-1
userModule.js
module/userModule.js
+42
-14
projectRouter.js
router/projectRouter.js
+4
-5
No files found.
controller/departController.js
View file @
56ab2b08
...
@@ -102,9 +102,9 @@ async function deleteDepart(req, res, next) {
...
@@ -102,9 +102,9 @@ async function deleteDepart(req, res, next) {
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
}
}
//查验部门下是否有用户
//查验部门下是否有用户
let
depIds
=
curNode
.
parentIds
?
curNode
.
parentIds
.
split
(
','
)
:
[];
//
let depIds = curNode.parentIds ? curNode.parentIds.split(',') : [];
depIds
.
push
(
curNode
.
id
);
//
depIds.push(curNode.id);
let
count
=
await
DB
.
UserDepart
.
count
({
where
:
{
departId
:
{[
Op
.
in
]:
depIds
}}});
let
count
=
await
DB
.
UserDepart
.
count
({
where
:
{
parentIds
:
{[
Op
.
startsWith
]:
curNode
.
parentIds
+
curNode
.
id
}}});
if
(
count
&&
count
>
0
)
{
if
(
count
&&
count
>
0
)
{
return
res
.
sendError
(
errorMessage
.
departHasUser
);
return
res
.
sendError
(
errorMessage
.
departHasUser
);
}
}
...
...
controller/projectController.js
View file @
56ab2b08
...
@@ -277,6 +277,7 @@ async function saveProjectPreLixiang(req, res, next) {
...
@@ -277,6 +277,7 @@ async function saveProjectPreLixiang(req, res, next) {
/**
/**
* 发起立项
* 发起立项
* 当前1 提交2
*/
*/
async
function
startLixiang
(
req
,
res
,
next
)
{
async
function
startLixiang
(
req
,
res
,
next
)
{
try
{
try
{
...
@@ -284,86 +285,240 @@ async function startLixiang(req, res, next) {
...
@@ -284,86 +285,240 @@ async function startLixiang(req, res, next) {
return
res
.
sendError
(
errorMessage
.
resourceNotFound
)
return
res
.
sendError
(
errorMessage
.
resourceNotFound
)
}
}
//记录操作
/**
* 此处需要判断当前项目是从哪一个节点回来的,依次往下
* 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
({
await
DB
.
FlowRecord
.
create
({
userId
:
req
.
user
.
id
,
userId
:
req
.
user
.
id
,
actionName
:
'发起项目立项审批
'
,
actionName
:
'重新提交立项初审
'
,
projectId
:
req
.
body
.
id
,
projectId
:
req
.
body
.
id
,
projectName
:
req
.
body
.
projectName
,
projectName
:
req
.
body
.
projectName
,
projectCode
:
req
.
body
.
projectCode
,
projectCode
:
req
.
body
.
projectCode
,
});
});
return
res
.
sendData
();
}
else
if
(
req
.
body
.
projectHzUser
)
{
//更新信息和状态
//更新信息和状态
let
ret
=
await
xiangmulixianggengxin
(
req
.
body
,
3
);
//状态 3 -- 立项审批中
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
({
await
DB
.
FlowRecord
.
create
({
userId
:
req
.
user
.
id
,
userId
:
req
.
user
.
id
,
actionName
:
'发起项目立项
'
,
actionName
:
'重新提交立项核准
'
,
projectId
:
req
.
body
.
id
,
projectId
:
req
.
body
.
id
,
projectName
:
req
.
body
.
projectName
,
projectName
:
req
.
body
.
projectName
,
projectCode
:
req
.
body
.
projectCode
,
projectCode
:
req
.
body
.
projectCode
,
});
});
let
approvers
=
await
userModule
.
getProjectApprover
(
req
.
user
.
id
,
'xmlx_sp'
);
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
))
{
if
(
!
(
approvers
&&
approvers
.
length
>
0
))
{
return
res
.
sendError
({
code
:
'60001'
,
msg
:
'项目已保存,请联系管理员为本公司添加【项目立项
】角色人员'
});
return
res
.
sendError
({
code
:
'60001'
,
msg
:
'项目已保存,请联系管理员为本公司添加【项目立项核准
】角色人员'
});
}
}
await
DB
.
Message
.
create
({
await
DB
.
Message
.
create
({
projectId
:
req
.
body
.
id
,
projectId
:
req
.
body
.
id
,
creator
:
req
.
user
.
id
,
creator
:
req
.
user
.
id
,
receivers
:
approvers
.
map
(
o
=>
o
.
id
),
receivers
:
approvers
.
map
(
o
=>
o
.
id
),
type
:
2
,
type
:
2
,
title
:
`项目【
${
req
.
body
.
projectName
}
】已发起立项
,请尽快处理!`
,
title
:
`项目【
${
req
.
body
.
projectName
}
】已发起立项核准
,请尽快处理!`
,
content
:
`项目【
${
req
.
body
.
projectName
}
】已发起立项
,请尽快处理!`
content
:
`项目【
${
req
.
body
.
projectName
}
】已发起立项核准
,请尽快处理!`
});
});
return
res
.
sendData
(
ret
);
return
res
.
sendData
(
ret
);
}
}
catch
(
error
)
{
}
catch
(
error
)
{
next
(
error
);
next
(
error
);
}
}
}
}
/**
/**
* 主动查询立项结果、或者能建调用我方接口
* 项目公司所属单位部门长,核准项目公司员工发过来的立项审批消息,通过则发送消息给投管部经办人,不通过则改变项目状态退回到项目所属单位员工
* 当前2 通过3 不通过1
*/
*/
async
function
queryLixiangResult
(
req
,
res
,
next
)
{
async
function
approvalLixiangByDepartHeader
(
req
,
res
,
next
)
{
try
{
try
{
if
(
!
req
.
body
.
id
)
{
let
body
=
req
.
body
;
//有可能会部门长进行修改后提交
body
.
projectHzUser
=
req
.
user
.
id
;
if
(
!
body
.
id
)
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
)
return
res
.
sendError
(
errorMessage
.
resourceNotFound
)
}
}
//请求能建提供接口
let
ret
;
let
result
=
{
success
:
true
};
if
(
body
.
approvalResult
)
{
//成功
//部门长核准通过,更新项目信息和状态--立项初审
if
(
result
.
success
)
{
ret
=
await
xiangmulixianggengxin
(
body
,
"3"
);
let
proInfo
=
await
projectModule
.
getProjectInfoByLixiang
(
req
.
body
);
// 给投管部经办人发消息
//1. 更新项目状态
let
approvers
=
await
userModule
.
getTouGuanJbrProjectApprover
(
req
.
user
.
id
);
await
DB
.
Project
.
update
({
projectLzType
:
"5"
},
{
where
:
{
id
:
req
.
body
.
id
}
});
if
(
!
(
approvers
&&
approvers
.
length
>
0
))
{
//2. 存储快照 关联关系太多 全部建立快照表工程过大,暂时存储形式
return
res
.
sendError
({
code
:
'60001'
,
msg
:
'项目已保存,请联系管理员添加【投管部经办人】角色人员'
});
proInfo
.
projectLzType
=
"5"
;
}
// await DB.ProjectLixiang.create({ lixiang: proInfo, type: 1, projectId: proInfo.id });
await
DB
.
Message
.
create
({
return
res
.
sendData
(
proInfo
);
projectId
:
body
.
id
,
}
else
{
creator
:
req
.
user
.
id
,
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
//暂时
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
);
}
}
/**
* 投管部经办人进行立项审批,不改变项目状态,如果通过则记录操作节点,并给投管部正副职发送消息
* 如果不通过,则给项目提交人发送消息
* 当前3 通过4 不通过1
*/
async
function
approvalLixiangByTouGuanJbr
(
req
,
res
,
next
)
{
try
{
let
body
=
req
.
body
;
//有可能会投管部经办人进行修改后提交
body
.
projectLxjbrUser
=
req
.
user
.
id
;
if
(
!
body
.
id
)
{
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
)
{
}
catch
(
error
)
{
next
(
error
);
next
(
error
);
}
}
}
}
/**
/**
* 立项审批
* 立项审批
* @param {*} body
* 当前4 通过5 不通过3
* @param {*} projectLzType
* @returns
*/
*/
async
function
approvalLixiang
(
req
,
res
,
next
)
{
async
function
approvalLixiang
(
req
,
res
,
next
)
{
try
{
try
{
let
proInfo
=
await
projectModule
.
getProjectInfoByLixiang
(
req
.
body
);
let
proInfo
=
await
projectModule
.
getProjectInfoByLixiang
(
req
.
body
);
if
(
req
.
body
.
approvalResult
)
{
if
(
req
.
body
.
approvalResult
)
{
//1. 更新项目状态--已立项
//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. 存储快照 关联关系太多 全部建立快照表工程过大,暂时存储形式
//2. 存储快照 关联关系太多 全部建立快照表工程过大,暂时存储形式
proInfo
.
projectLzType
=
"5"
;
proInfo
.
projectLzType
=
"5"
;
await
DB
.
ProjectLixiang
.
create
({
lixiang
:
proInfo
,
type
:
1
,
projectId
:
proInfo
.
id
});
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
({
await
DB
.
FlowRecord
.
create
({
userId
:
req
.
user
.
id
,
userId
:
req
.
user
.
id
,
actionName
:
'立项审批通过'
,
actionName
:
'立项审批通过'
,
...
@@ -373,8 +528,16 @@ async function approvalLixiang(req, res, next) {
...
@@ -373,8 +528,16 @@ async function approvalLixiang(req, res, next) {
content
:
req
.
body
.
approvalMessage
,
content
:
req
.
body
.
approvalMessage
,
});
});
}
else
{
}
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
({
await
DB
.
FlowRecord
.
create
({
userId
:
req
.
user
.
id
,
userId
:
req
.
user
.
id
,
actionName
:
'立项审批未通过'
,
actionName
:
'立项审批未通过'
,
...
@@ -544,6 +707,7 @@ async function saveJuece(req, res, next) {
...
@@ -544,6 +707,7 @@ async function saveJuece(req, res, next) {
if
(
!
req
.
body
.
id
)
{
if
(
!
req
.
body
.
id
)
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
)
return
res
.
sendError
(
errorMessage
.
resourceNotFound
)
}
}
body
.
projectFqJueceUser
=
req
.
user
.
id
;
//记录一下项目决策发起人
let
ret
=
await
xiangmujuecegengxin
(
req
.
body
,
7
);
//决策填报中
let
ret
=
await
xiangmujuecegengxin
(
req
.
body
,
7
);
//决策填报中
return
res
.
sendData
(
ret
);
return
res
.
sendData
(
ret
);
}
catch
(
error
)
{
}
catch
(
error
)
{
...
@@ -556,6 +720,7 @@ async function startJuece(req, res, next) {
...
@@ -556,6 +720,7 @@ async function startJuece(req, res, next) {
if
(
!
req
.
body
.
id
)
{
if
(
!
req
.
body
.
id
)
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
)
return
res
.
sendError
(
errorMessage
.
resourceNotFound
)
}
}
body
.
projectFqJueceUser
=
req
.
user
.
id
;
//记录一下项目决策发起人
let
ret
=
await
xiangmujuecegengxin
(
req
.
body
,
8
);
//决策审批中
let
ret
=
await
xiangmujuecegengxin
(
req
.
body
,
8
);
//决策审批中
// 给审批人员发消息
// 给审批人员发消息
...
@@ -566,7 +731,7 @@ async function startJuece(req, res, next) {
...
@@ -566,7 +731,7 @@ async function startJuece(req, res, next) {
projectName
:
req
.
body
.
projectName
,
projectName
:
req
.
body
.
projectName
,
projectCode
:
req
.
body
.
projectCode
,
projectCode
:
req
.
body
.
projectCode
,
});
});
let
approvers
=
await
userModule
.
get
ProjectApprover
(
req
.
user
.
id
,
'xmjc_sp'
);
let
approvers
=
await
userModule
.
get
TouGuanZfzProjectApprover
(
req
.
user
.
id
);
if
(
!
(
approvers
&&
approvers
.
length
>
0
))
{
if
(
!
(
approvers
&&
approvers
.
length
>
0
))
{
return
res
.
sendError
({
code
:
'60002'
,
msg
:
'项目已保存,请联系管理员为本公司添加【项目决策】角色人员'
});
return
res
.
sendError
({
code
:
'60002'
,
msg
:
'项目已保存,请联系管理员为本公司添加【项目决策】角色人员'
});
}
}
...
@@ -585,30 +750,6 @@ async function startJuece(req, res, next) {
...
@@ -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) {
...
@@ -617,7 +758,7 @@ async function approvalJuece(req, res, next) {
let
proInfo
=
await
projectModule
.
getProjectInfo
(
req
.
body
);
let
proInfo
=
await
projectModule
.
getProjectInfo
(
req
.
body
);
if
(
req
.
body
.
approvalResult
)
{
if
(
req
.
body
.
approvalResult
)
{
//1. 更新项目状态--已决策
//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. 存储快照 关联关系太多 全部建立快照表工程过大,暂时存储形式
//2. 存储快照 关联关系太多 全部建立快照表工程过大,暂时存储形式
proInfo
.
projectLzType
=
"9"
;
proInfo
.
projectLzType
=
"9"
;
await
DB
.
ProjectLixiang
.
create
({
juece
:
proInfo
,
type
:
2
,
projectId
:
proInfo
.
id
});
await
DB
.
ProjectLixiang
.
create
({
juece
:
proInfo
,
type
:
2
,
projectId
:
proInfo
.
id
});
...
@@ -629,9 +770,17 @@ async function approvalJuece(req, res, next) {
...
@@ -629,9 +770,17 @@ async function approvalJuece(req, res, next) {
projectCode
:
proInfo
.
projectCode
,
projectCode
:
proInfo
.
projectCode
,
content
:
req
.
body
.
approvalMessage
,
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
{
}
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
({
await
DB
.
FlowRecord
.
create
({
userId
:
req
.
user
.
id
,
userId
:
req
.
user
.
id
,
actionName
:
'决策审批未通过'
,
actionName
:
'决策审批未通过'
,
...
@@ -640,6 +789,14 @@ async function approvalJuece(req, res, next) {
...
@@ -640,6 +789,14 @@ async function approvalJuece(req, res, next) {
projectCode
:
proInfo
.
projectCode
,
projectCode
:
proInfo
.
projectCode
,
content
:
req
.
body
.
approvalMessage
,
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
);
return
res
.
sendData
(
proInfo
);
}
catch
(
error
)
{
}
catch
(
error
)
{
...
@@ -1011,28 +1168,28 @@ async function listProject(req, res, next) {
...
@@ -1011,28 +1168,28 @@ async function listProject(req, res, next) {
let
search
=
{};
let
search
=
{};
let
where
=
{
del
:
0
};
let
where
=
{
del
:
0
};
//处理筛选条件
//处理筛选条件
let
projectLzTypes
=
[
1
];
let
projectLzTypes
=
[
"1"
];
switch
(
req
.
body
.
menuType
)
{
switch
(
req
.
body
.
menuType
)
{
case
"xmlingxuan"
:
case
"xmlingxuan"
:
projectLzTypes
=
[
1
];
projectLzTypes
=
[
"1"
,
"2"
];
break
;
break
;
case
"xmlx"
:
case
"xmlx"
:
projectLzTypes
=
[
3
,
5
];
projectLzTypes
=
[
"3"
,
"4"
,
"5"
];
break
;
break
;
case
"xmjc"
:
case
"xmjc"
:
projectLzTypes
=
[
8
,
9
,
13
];
projectLzTypes
=
[
"8"
,
"9"
,
"13"
];
break
;
break
;
case
"xmzjc"
:
case
"xmzjc"
:
projectLzTypes
=
[
8
,
9
,
11
,
12
,
13
];
projectLzTypes
=
[
"8"
,
"9"
,
"11"
,
"12"
,
"13"
];
break
;
break
;
case
"xmlz"
:
case
"xmlz"
:
projectLzTypes
=
[
7
];
projectLzTypes
=
[
"7"
];
break
;
break
;
case
"xmdak"
:
case
"xmdak"
:
projectLzTypes
=
[
5
,
7
,
8
,
9
,
11
,
12
,
13
];
projectLzTypes
=
[
"5"
,
"7"
,
"8"
,
"9"
,
"11"
,
"12"
,
"13"
];
break
;
break
;
default
:
default
:
projectLzTypes
=
[
5
,
7
,
8
,
9
,
11
,
12
,
13
];
projectLzTypes
=
[
"5"
,
"7"
,
"8"
,
"9"
,
"11"
,
"12"
,
"13"
];
break
;
break
;
}
}
if
(
req
.
body
.
menuType
)
{
if
(
req
.
body
.
menuType
)
{
...
@@ -1046,26 +1203,26 @@ async function listProject(req, res, next) {
...
@@ -1046,26 +1203,26 @@ async function listProject(req, res, next) {
if
(
req
.
body
.
attributes
&&
req
.
body
.
attributes
.
length
)
{
if
(
req
.
body
.
attributes
&&
req
.
body
.
attributes
.
length
)
{
search
.
attributes
=
req
.
body
.
attributes
;
search
.
attributes
=
req
.
body
.
attributes
;
}
}
if
(
req
.
body
.
projectName
)
{
if
(
req
.
body
.
projectName
)
{
search
.
where
.
projectName
=
{
[
Op
.
like
]:
`%
${
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
}
%`
};
search
.
where
.
projectCode
=
{
[
Op
.
like
]:
`%
${
req
.
body
.
projectCode
}
%`
};
}
}
if
(
req
.
body
.
glzt
)
{
if
(
req
.
body
.
glzt
)
{
search
.
where
.
glzt
=
{
[
Op
.
like
]:
`%
${
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
}
%`
};
search
.
where
.
zsqy
=
{
[
Op
.
like
]:
`%
${
req
.
body
.
zsqy
}
%`
};
}
}
if
(
req
.
body
.
xmjd
)
{
if
(
req
.
body
.
xmjd
)
{
search
.
where
.
xmjd
=
req
.
body
.
xmjd
;
search
.
where
.
xmjd
=
req
.
body
.
xmjd
;
}
}
if
(
req
.
body
.
xmqy
)
{
if
(
req
.
body
.
xmqy
)
{
search
.
where
.
xmqy
=
req
.
body
.
xmqy
;
search
.
where
.
xmqy
=
req
.
body
.
xmqy
;
}
}
if
(
req
.
body
.
projectId
)
{
if
(
req
.
body
.
projectId
)
{
search
.
where
.
id
=
req
.
body
.
projectId
;
search
.
where
.
id
=
req
.
body
.
projectId
;
}
}
console
.
log
(
search
)
console
.
log
(
search
)
search
.
raw
=
true
search
.
raw
=
true
...
@@ -1231,7 +1388,8 @@ async function saveZaiJuece(req, res, next) {
...
@@ -1231,7 +1388,8 @@ async function saveZaiJuece(req, res, next) {
if
(
!
req
.
body
.
id
)
{
if
(
!
req
.
body
.
id
)
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
)
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
);
return
res
.
sendData
(
ret
);
}
catch
(
error
)
{
}
catch
(
error
)
{
next
(
error
);
next
(
error
);
...
@@ -1243,7 +1401,8 @@ async function startZaiJuece(req, res, next) {
...
@@ -1243,7 +1401,8 @@ async function startZaiJuece(req, res, next) {
if
(
!
req
.
body
.
id
)
{
if
(
!
req
.
body
.
id
)
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
)
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
({
await
DB
.
FlowRecord
.
create
({
...
@@ -1253,7 +1412,7 @@ async function startZaiJuece(req, res, next) {
...
@@ -1253,7 +1412,7 @@ async function startZaiJuece(req, res, next) {
projectName
:
req
.
body
.
projectName
,
projectName
:
req
.
body
.
projectName
,
projectCode
:
req
.
body
.
projectCode
,
projectCode
:
req
.
body
.
projectCode
,
});
});
let
approvers
=
await
userModule
.
get
ProjectApprover
(
req
.
user
.
id
,
'xmjc_sp'
);
let
approvers
=
await
userModule
.
get
TouGuanZfzProjectApprover
(
req
.
user
.
id
);
if
(
!
(
approvers
&&
approvers
.
length
>
0
))
{
if
(
!
(
approvers
&&
approvers
.
length
>
0
))
{
return
res
.
sendError
({
code
:
'60002'
,
msg
:
'项目已保存,请联系管理员为本公司添加【项目再决策】角色人员'
});
return
res
.
sendError
({
code
:
'60002'
,
msg
:
'项目已保存,请联系管理员为本公司添加【项目再决策】角色人员'
});
}
}
...
@@ -1277,7 +1436,7 @@ async function approvalZaiJuece(req, res, next) {
...
@@ -1277,7 +1436,7 @@ async function approvalZaiJuece(req, res, next) {
let
proInfo
=
await
projectModule
.
getProjectInfo
(
req
.
body
);
let
proInfo
=
await
projectModule
.
getProjectInfo
(
req
.
body
);
if
(
req
.
body
.
approvalResult
)
{
if
(
req
.
body
.
approvalResult
)
{
//1. 更新项目状态--已决策
//1. 更新项目状态--已决策
await
DB
.
Project
.
update
({
projectLzType
:
13
},
{
where
:
{
id
:
req
.
body
.
id
}
});
await
DB
.
Project
.
update
({
projectLzType
:
"13"
},
{
where
:
{
id
:
req
.
body
.
id
}
});
//2. 存储快照 关联关系太多 全部建立快照表工程过大,暂时存储形式
//2. 存储快照 关联关系太多 全部建立快照表工程过大,暂时存储形式
proInfo
.
projectLzType
=
"13"
;
proInfo
.
projectLzType
=
"13"
;
await
DB
.
ProjectLixiang
.
create
({
zaijuece
:
proInfo
,
type
:
3
,
projectId
:
proInfo
.
id
});
await
DB
.
ProjectLixiang
.
create
({
zaijuece
:
proInfo
,
type
:
3
,
projectId
:
proInfo
.
id
});
...
@@ -1289,10 +1448,18 @@ async function approvalZaiJuece(req, res, next) {
...
@@ -1289,10 +1448,18 @@ async function approvalZaiJuece(req, res, next) {
projectCode
:
proInfo
.
projectCode
,
projectCode
:
proInfo
.
projectCode
,
content
:
req
.
body
.
approvalMessage
,
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
{
}
else
{
//TODO:不确定
//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
({
await
DB
.
FlowRecord
.
create
({
userId
:
req
.
user
.
id
,
userId
:
req
.
user
.
id
,
actionName
:
'再决策审批未通过'
,
actionName
:
'再决策审批未通过'
,
...
@@ -1301,6 +1468,15 @@ async function approvalZaiJuece(req, res, next) {
...
@@ -1301,6 +1468,15 @@ async function approvalZaiJuece(req, res, next) {
projectCode
:
proInfo
.
projectCode
,
projectCode
:
proInfo
.
projectCode
,
content
:
req
.
body
.
approvalMessage
,
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
);
return
res
.
sendData
(
proInfo
);
}
catch
(
error
)
{
}
catch
(
error
)
{
...
@@ -1320,11 +1496,11 @@ module.exports = {
...
@@ -1320,11 +1496,11 @@ module.exports = {
finalJugProject
,
finalJugProject
,
getOwnProjects
,
getOwnProjects
,
startLixiang
,
startLixiang
,
approvalLixiangByDepartHeader
,
approvalLixiangByTouGuanJbr
,
saveJuece
,
saveJuece
,
startJuece
,
startJuece
,
saveProjectPreLixiang
,
saveProjectPreLixiang
,
queryLixiangResult
,
queryJueceResult
,
getProjectCwpj
,
getProjectCwpj
,
approvalLixiang
,
approvalLixiang
,
approvalJuece
,
approvalJuece
,
...
...
db/model/jt/project.js
View file @
56ab2b08
...
@@ -25,7 +25,7 @@ const Project = sequelize.define('Project', {
...
@@ -25,7 +25,7 @@ const Project = sequelize.define('Project', {
},
},
projectLzType
:
{
projectLzType
:
{
type
:
DataTypes
.
STRING
(
10
),
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
:
{
xmjd
:
{
type
:
DataTypes
.
STRING
(
10
),
type
:
DataTypes
.
STRING
(
10
),
...
@@ -36,7 +36,34 @@ const Project = sequelize.define('Project', {
...
@@ -36,7 +36,34 @@ const Project = sequelize.define('Project', {
defaultValue
:
0
,
defaultValue
:
0
,
comment1
:
"0 正常 1 删除"
,
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"
,
},
/**
/**
* 立项字段
* 立项字段
*/
*/
...
...
db/model/jt/projectBjtj.js
View file @
56ab2b08
...
@@ -18,7 +18,7 @@ const projectBjtj = sequelize.define('projectBjtj', {
...
@@ -18,7 +18,7 @@ const projectBjtj = sequelize.define('projectBjtj', {
comment
:
"单位工程造价数值"
comment
:
"单位工程造价数值"
},
},
dwgczjDw
:
{
dwgczjDw
:
{
type
:
DataTypes
.
INTEGER
,
type
:
DataTypes
.
STRING
(
10
)
,
comment
:
"单位工程造价单位"
comment
:
"单位工程造价单位"
},
},
xsfwnlSz
:
{
xsfwnlSz
:
{
...
...
db/model/system/depart.js
View file @
56ab2b08
...
@@ -17,6 +17,11 @@ const Depart = sequelize.define('Depart', {
...
@@ -17,6 +17,11 @@ const Depart = sequelize.define('Depart', {
type
:
DataTypes
.
INTEGER
,
type
:
DataTypes
.
INTEGER
,
},
},
type
:
{
type
:
DataTypes
.
INTEGER
,
defaultValue
:
0
,
comment
:
"0 集团及内部部门 1 项目公司及内部部门"
},
parentIds
:
{
parentIds
:
{
type
:
DataTypes
.
STRING
(
500
),
type
:
DataTypes
.
STRING
(
500
),
},
},
...
...
db/model/system/message.js
View file @
56ab2b08
...
@@ -37,7 +37,12 @@ const Message = sequelize.define('Message', {
...
@@ -37,7 +37,12 @@ const Message = sequelize.define('Message', {
type
:
{
type
:
{
type
:
DataTypes
.
INTEGER
,
type
:
DataTypes
.
INTEGER
,
allowNull
:
true
,
allowNull
:
true
,
comment
:
"消息类型 1 系统消息 2 项目立项审批 3.项目决策审批 4. 项目再决策审批"
comment
:
`消息类型 1 系统消息
2 项目公司所属员工发起立项
5. 项目所属单位部门长核准通过 6.项目所属单位部门长核准不通过
7. 投管部经办人初审通过 8. 投管部经办人初审不通过
9. 投管部正副职复审通过 10. 投管部正副职复审不通过
3.发起项目决策审批 11.决策审批通过 12 决策审批未通过 4. 项目再决策审批 13.再决策审批通过 14.再决策审批未通过`
},
},
/**
/**
* 其他待存字段
* 其他待存字段
...
...
module/userModule.js
View file @
56ab2b08
...
@@ -131,20 +131,46 @@ async function setRoleMenu(roleId, menuIds, rolemenus) {
...
@@ -131,20 +131,46 @@ async function setRoleMenu(roleId, menuIds, rolemenus) {
}
}
async
function
getProjectApprover
(
userId
,
roleCode
)
{
async
function
getCompanyProjectApprover
(
userId
,
roleCode
)
{
// 获取当前用户公司的 具体角色 的用户列表
roleCode
=
roleCode
||
"xmssdwbmz"
;
//暂时
// let role = await DB.Role.findOne({where: {key: roleCode}, raw: true});
// 获取投管部正副职tgbzfz的用户列表
// if(!(role && role.id)) {
let
role
=
await
DB
.
Role
.
findOne
({
where
:
{
key
:
roleCode
},
raw
:
true
});
// return [];
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
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} } });
let
users
=
await
DB
.
User
.
findAll
({
where
:
{
id
:
{[
Op
.
in
]:
userIds
}
}
});
// return users;
return
users
;
let
user
=
await
DB
.
User
.
findOne
({
where
:
{
id
:
userId
}
});
}
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
});
return
[
user
];
let
users
=
await
DB
.
User
.
findAll
({
where
:
{
id
:
{[
Op
.
in
]:
userIds
}
}
});
return
users
;
}
}
module
.
exports
=
{
module
.
exports
=
{
...
@@ -152,5 +178,7 @@ module.exports = {
...
@@ -152,5 +178,7 @@ module.exports = {
setUserDepart
,
setUserDepart
,
setUserPosition
,
setUserPosition
,
setRoleMenu
,
setRoleMenu
,
getProjectApprover
,
getCompanyProjectApprover
,
getTouGuanJbrProjectApprover
,
getTouGuanZfzProjectApprover
,
}
}
\ No newline at end of file
router/projectRouter.js
View file @
56ab2b08
...
@@ -21,15 +21,14 @@ router.post('/saveProjectPreLixiang', projectController.saveProjectPreLixiang);
...
@@ -21,15 +21,14 @@ router.post('/saveProjectPreLixiang', projectController.saveProjectPreLixiang);
router
.
post
(
'/startLixiang'
,
projectController
.
startLixiang
);
//发起立项审批----TODO:待完成与能建对接
router
.
post
(
'/startLixiang'
,
projectController
.
startLixiang
);
//发起立项审批----TODO:待完成与能建对接
router
.
post
(
'/
queryLixiangResult'
,
projectController
.
queryLixiangResult
);
router
.
post
(
'/
approvalLixiang'
,
projectController
.
approvalLixiangByDepartHeader
);
//部门长核准立项审批
router
.
post
(
'/approvalLixiang'
,
projectController
.
approvalLixiangByTouGuanJbr
);
//投管部经办人审批立项审批
router
.
post
(
'/approvalLixiang'
,
projectController
.
approvalLixiang
);
router
.
post
(
'/approvalLixiang'
,
projectController
.
approvalLixiang
);
//立项审批---投管部正副职审批
// -----------------------接收能建立项结果信息,更新立项批复信息等字段------------------------------------------
// -----------------------接收能建立项结果信息,更新立项批复信息等字段------------------------------------------
router
.
post
(
'/saveJuece'
,
projectController
.
saveJuece
);
//决策保存
router
.
post
(
'/saveJuece'
,
projectController
.
saveJuece
);
//决策保存
router
.
post
(
'/startJuece'
,
projectController
.
startJuece
);
//发起决策
router
.
post
(
'/startJuece'
,
projectController
.
startJuece
);
//发起决策
router
.
post
(
'/queryJueceResult'
,
projectController
.
queryJueceResult
);
//查询决策审批结果
router
.
post
(
'/approvalJuece'
,
projectController
.
approvalJuece
);
router
.
post
(
'/approvalJuece'
,
projectController
.
approvalJuece
);
// 财务评价
// 财务评价
...
@@ -104,7 +103,7 @@ router.post('/getZdsxspInfo', projectTzController.getZdsxspInfo);
...
@@ -104,7 +103,7 @@ router.post('/getZdsxspInfo', projectTzController.getZdsxspInfo);
router
.
post
(
'/saveZaiJuece'
,
projectController
.
saveZaiJuece
);
//决策保存
router
.
post
(
'/saveZaiJuece'
,
projectController
.
saveZaiJuece
);
//决策保存
router
.
post
(
'/startZaiJuece'
,
projectController
.
startZaiJuece
);
//发起决策
router
.
post
(
'/startZaiJuece'
,
projectController
.
startZaiJuece
);
//发起决策
router
.
post
(
'/approvalZaiJuece'
,
projectController
.
approvalZaiJuece
);
router
.
post
(
'/approvalZaiJuece'
,
projectController
.
approvalZaiJuece
);
// router.post('/queryJueceResult', projectController.queryJueceResult); //查询决策审批结果
//2.8 项目退出 ***
//2.8 项目退出 ***
router
.
post
(
'/createXmtc'
,
projectTzController
.
createXmtc
);
router
.
post
(
'/createXmtc'
,
projectTzController
.
createXmtc
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment