明树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
4f029b6c
Commit
4f029b6c
authored
Jan 07, 2026
by
zfp1
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
0c867a64
Pipeline
#105767
passed with stage
in 3 seconds
Changes
3
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
124 additions
and
11 deletions
+124
-11
projectController.js
controller/projectController.js
+112
-10
userModule.js
module/userModule.js
+9
-0
projectRouter.js
router/projectRouter.js
+3
-1
No files found.
controller/projectController.js
View file @
4f029b6c
...
@@ -290,7 +290,25 @@ async function startLixiang(req, res, next) {
...
@@ -290,7 +290,25 @@ async function startLixiang(req, res, next) {
});
});
//更新信息和状态
//更新信息和状态
let
ret
=
await
xiangmulixianggengxin
(
req
.
body
,
3
);
//状态 3 -- 显示立项审批中
let
ret
=
await
xiangmulixianggengxin
(
req
.
body
,
3
);
//状态 3 -- 立项审批中
// 给审批人员发消息
await
DB
.
FlowRecord
.
create
({
userId
:
req
.
user
.
id
,
actionName
:
'发起项目立项'
,
projectId
:
project
.
id
,
});
let
approvers
=
await
userModule
.
getProjectApprover
(
req
.
user
.
id
,
'xmlx_sp'
);
if
(
!
(
approvers
&&
approvers
.
length
>
0
))
{
return
res
.
sendError
({
code
:
'60001'
,
msg
:
'项目已保存,请联系管理员为本公司添加【项目立项】角色人员'
});
}
await
DB
.
Message
.
create
({
projectId
:
project
.
id
,
creator
:
req
.
user
.
id
,
receivers
:
approvers
.
map
(
o
=>
o
.
id
),
type
:
2
,
title
:
`项目【
${
project
.
name
}
】已发起立项,请尽快处理!`
,
content
:
`项目【
${
project
.
name
}
】已发起立项,请尽快处理!`
});
return
res
.
sendData
(
ret
);
return
res
.
sendData
(
ret
);
}
catch
(
error
)
{
}
catch
(
error
)
{
...
@@ -325,6 +343,40 @@ async function queryLixiangResult(req, res, next) {
...
@@ -325,6 +343,40 @@ async function queryLixiangResult(req, res, next) {
}
}
}
}
/**
* 立项审批
* @param {*} body
* @param {*} projectLzType
* @returns
*/
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
}
});
//2. 存储快照 关联关系太多 全部建立快照表工程过大,暂时存储形式
proInfo
.
projectLzType
=
5
;
await
DB
.
ProjectLixiang
.
create
({
lixiang
:
proInfo
,
projectId
:
proInfo
.
id
});
await
DB
.
FlowRecord
.
create
({
userId
:
req
.
user
.
id
,
actionName
:
'立项审批通过'
,
projectId
:
project
.
id
,
});
}
else
{
//待立项
await
DB
.
Project
.
update
({
projectLzType
:
1
},
{
where
:
{
id
:
req
.
body
.
id
}
});
await
DB
.
FlowRecord
.
create
({
userId
:
req
.
user
.
id
,
actionName
:
'立项审批未通过'
,
projectId
:
project
.
id
,
});
}
return
res
.
sendData
(
proInfo
);
}
catch
(
error
)
{
next
(
error
);
}
}
...
@@ -492,12 +544,27 @@ async function startJuece(req, res, next) {
...
@@ -492,12 +544,27 @@ async function startJuece(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
,
8
);
//决策审批中
// 给审批人员发消息
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
,
});
});
let
ret
=
await
xiangmujuecegengxin
(
req
.
body
,
8
);
//决策审批中
let
approvers
=
await
userModule
.
getProjectApprover
(
req
.
user
.
id
,
'xmjc_sp'
);
if
(
!
(
approvers
&&
approvers
.
length
>
0
))
{
return
res
.
sendError
({
code
:
'60002'
,
msg
:
'项目已保存,请联系管理员为本公司添加【项目决策】角色人员'
});
}
await
DB
.
Message
.
create
({
projectId
:
project
.
id
,
creator
:
req
.
user
.
id
,
receivers
:
approvers
.
map
(
o
=>
o
.
id
),
type
:
2
,
title
:
`项目【
${
project
.
name
}
】已发起项目决策,请尽快处理!`
,
content
:
`项目【
${
project
.
name
}
】已发起项目决策,请尽快处理!`
});
return
res
.
sendData
(
ret
);
return
res
.
sendData
(
ret
);
}
catch
(
error
)
{
}
catch
(
error
)
{
next
(
error
);
next
(
error
);
...
@@ -528,6 +595,39 @@ async function queryJueceResult(req, res, next) {
...
@@ -528,6 +595,39 @@ async function queryJueceResult(req, res, next) {
}
}
/**
* 决策审批
*/
async
function
approvalJuece
(
req
,
res
,
next
)
{
try
{
let
proInfo
=
await
projectModule
.
getProjectInfoByLixiang
(
req
.
body
);
if
(
req
.
body
.
approvalResult
)
{
//1. 更新项目状态--已决策
await
DB
.
Project
.
update
({
projectLzType
:
9
},
{
where
:
{
id
:
req
.
body
.
id
}
});
//2. 存储快照 关联关系太多 全部建立快照表工程过大,暂时存储形式
proInfo
.
projectLzType
=
9
;
await
DB
.
ProjectLixiang
.
create
({
lixiang
:
proInfo
,
projectId
:
proInfo
.
id
});
await
DB
.
FlowRecord
.
create
({
userId
:
req
.
user
.
id
,
actionName
:
'决策审批通过'
,
projectId
:
project
.
id
,
});
}
else
{
//回到 已立项
await
DB
.
Project
.
update
({
projectLzType
:
5
},
{
where
:
{
id
:
req
.
body
.
id
}
});
await
DB
.
FlowRecord
.
create
({
userId
:
req
.
user
.
id
,
actionName
:
'决策审批未通过'
,
projectId
:
project
.
id
,
});
}
return
res
.
sendData
(
proInfo
);
}
catch
(
error
)
{
next
(
error
);
}
}
/**
/**
* 更新提交 更新
* 更新提交 更新
* @param {*} req
* @param {*} req
...
@@ -820,7 +920,7 @@ async function getProjectInfo(req, res, next) {
...
@@ -820,7 +920,7 @@ async function getProjectInfo(req, res, next) {
order
:
[[
'createdAt'
,
'DESC'
]],
order
:
[[
'createdAt'
,
'DESC'
]],
where
:
{
projectId
:
req
.
body
.
id
},
where
:
{
projectId
:
req
.
body
.
id
},
});
});
if
(
!
(
ret
&&
ret
.
id
))
{
if
(
!
(
ret
&&
ret
.
id
))
{
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
return
res
.
sendError
(
errorMessage
.
resourceNotFound
);
}
}
let
obj
=
{};
let
obj
=
{};
...
@@ -1051,4 +1151,6 @@ module.exports = {
...
@@ -1051,4 +1151,6 @@ module.exports = {
queryLixiangResult
,
queryLixiangResult
,
queryJueceResult
,
queryJueceResult
,
getProjectCwpj
,
getProjectCwpj
,
approvalLixiang
,
approvalJuece
,
}
}
\ No newline at end of file
module/userModule.js
View file @
4f029b6c
...
@@ -133,6 +133,15 @@ async function setRoleMenu(roleId, menuIds, rolemenus) {
...
@@ -133,6 +133,15 @@ async function setRoleMenu(roleId, menuIds, rolemenus) {
async
function
getProjectApprover
(
userId
,
roleCode
)
{
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});
// let users = await DB.User.findAll({ where: { id: {[Op.in]: userIds} } });
// return users;
let
user
=
await
DB
.
User
.
findOne
({
where
:
{
id
:
userId
}
});
let
user
=
await
DB
.
User
.
findOne
({
where
:
{
id
:
userId
}
});
return
[
user
];
return
[
user
];
...
...
router/projectRouter.js
View file @
4f029b6c
...
@@ -20,12 +20,14 @@ router.post('/saveProjectPreLixiang', projectController.saveProjectPreLixiang);
...
@@ -20,12 +20,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
(
'/queryLixiangResult'
,
projectController
.
queryLixiangResult
);
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
(
'/queryJueceResult'
,
projectController
.
queryJueceResult
);
//查询决策审批结果
router
.
post
(
'/approvalJuece'
,
projectController
.
approvalJuece
);
// 财务评价
// 财务评价
router
.
post
(
'/getProjectCwpj'
,
projectController
.
getProjectCwpj
);
router
.
post
(
'/getProjectCwpj'
,
projectController
.
getProjectCwpj
);
...
...
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