Parcourir la source

bug_fix:
1. 计划变更审核过程中,应该不能继续任务的审核申请和任务草稿修改,因为计划变更会带来状态变化,如已过期的状态变为未过期,如果允许审核,则如果审核通过任务将变为已完成,此时任务变更审核通过后,状态会被复制到正本中,导致状态错误。

eyes4 il y a 5 mois
Parent
commit
6623b01a7f

+ 37 - 2
pmr-biz-manager/bpmn/任务审核流程.bpmn

@@ -53,6 +53,7 @@
           <camunda:script scriptFormat="JavaScript">
 (async function () {
     try {
+        // 检查是否已配置了审核成员    
         let handlers = await this.environment.services.get_handlers('task_checker');
         let outcome_count = await this.environment.services.get_outcome_count();
         this.environment.Logger('work').error(handlers);
@@ -63,7 +64,7 @@
                 message: '任务申请审核前,请先配置任务审核成员,否则无法执行审核任务。'
             }
         } 
-
+        // 检查需要审核的文档是否都已经上传
         let outcome_all_uploaded = await this.environment.services.check_all_outcome_uploaded();
         this.environment.Logger('work').error(outcome_all_uploaded);
         if (!outcome_all_uploaded) {
@@ -72,6 +73,40 @@
                 message: '任务审核前,请确保此任务的所有交付物文档都已上传。'
             }
         }
+
+        // 检查当前的项目状态是否允许提交任务审核
+        let phase_id = await this.environment.services.get_prj_phase();
+        switch(phase_id) {
+            case 'doing':
+            case 'reject_plan_alt':
+                break;
+            case 'apply_plan_alt':
+            case 'review_plan_alt':
+                return {
+                    result: false,
+                    message: '当前处于计划变更审核状态,不允许提交任务审核。'
+                }
+            case 'checking':
+                return {
+                    result: false,
+                    message: '项目验收中,不允许提交任务审核。'
+                }
+            case 'deprecated':
+                return {
+                    result: false,
+                    message: '项目已作废,不允许提交任务审核。'
+                }
+            case 'done':
+                return {
+                    result: false,
+                    message: '项目已完成,不允许提交任务审核。'
+                }
+            default:
+                return {
+                    result: false,
+                    message: '流程异常,当前项目状态下不允许提交任务审核。'
+                }
+        }
         return {
             result: true,
             message: 'OK'
@@ -664,4 +699,4 @@ this.environment.variables.pass = passed;
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
-</bpmn2:definitions>
+</bpmn2:definitions>

+ 3 - 7
pmr-biz-manager/bpmn/立项流程.bpmn

@@ -209,7 +209,7 @@
     <bpmn2:sequenceFlow id="Flow_0nzbvpg" sourceRef="Event_catch_withdraw" targetRef="task_modify">
       <bpmn2:extensionElements>
         <camunda:properties>
-          <camunda:property name="prj_phase" value="reject_create" />
+          <camunda:property name="prj_phase" value="new" />
           <camunda:property name="prj_phase_name" value="立项申请已撤回" />
         </camunda:properties>
       </bpmn2:extensionElements>
@@ -223,11 +223,7 @@
       <bpmn2:extensionElements />
     </bpmn2:sequenceFlow>
     <bpmn2:manualTask id="task_modify" name="修改项目信息">
-      <bpmn2:extensionElements>
-        <camunda:executionListener event="start">
-          <camunda:script scriptFormat="JavaScript">console.log("test");</camunda:script>
-        </camunda:executionListener>
-      </bpmn2:extensionElements>
+      <bpmn2:extensionElements />
       <bpmn2:incoming>Flow_0nzbvpg</bpmn2:incoming>
       <bpmn2:incoming>Flow_01n3edp</bpmn2:incoming>
       <bpmn2:incoming>Flow_0sb2avy</bpmn2:incoming>
@@ -503,4 +499,4 @@ next();
       </bpmndi:BPMNEdge>
     </bpmndi:BPMNPlane>
   </bpmndi:BPMNDiagram>
-</bpmn2:definitions>
+</bpmn2:definitions>

+ 1 - 1
pmr-biz-manager/bpmn/计划变更审核流程.bpmn

@@ -47,7 +47,7 @@
         <camunda:executionListener event="start">
           <camunda:script scriptFormat="JavaScript">(async function () {
     try {
-        let handlers = this.environment.services.get_handlers('project_checker');
+        let handlers = await this.environment.services.get_handlers('project_checker');
         let result = handlers.length &gt; 0 ? true: false; 
         if (!result) {
             return {

+ 1 - 1
pmr-biz-manager/src/app.ts

@@ -138,7 +138,7 @@ new ServiceApp().start(new MyRouter('@src/routes', guards), Models).then(async (
     });
 
     // 每天8:30检查任务和工作项是否有临近过期的,有的话生成提醒工作
-    schedule.scheduleJob('*/20 * * * * *', async function () {
+    schedule.scheduleJob('30 8 * * *', async function () {
         let config = await Config.findOne({where: {id: '1'}});
         let task_remind_day_in_advance = config?.config.remind?.task ? config.config.remind.task : 2;
         let work_remind_day_in_advance = config?.config.remind?.work ? config.config.remind.work : 1;

+ 9 - 1
pmr-biz-manager/src/bpmn/flow_engine.ts

@@ -249,6 +249,14 @@ export class FlowEngine extends EventEmitter {
                         desc: detail
                     })
                 },
+                get_prj_phase: async () => {
+                    let prj = await PrjInfo.findOne({
+                        where: {id: self._prj_id},
+                        raw: true
+                    });
+                    if (!prj) return 'deprecated';
+                    return prj.phase_id;
+                },
                 set_prj_phase: async (phase_id: string) => {
                     await PrjInfo.update({phase_id: phase_id}, {
                         where: {id: self._prj_id},
@@ -825,7 +833,7 @@ export class FlowEngine extends EventEmitter {
                 }
                 break;
             default:///其它标记,均通过角色获得
-                let users = await AcsUserInfo.sequelize!.query(`
+                let users: any = await AcsUserInfo.sequelize!.query(`
                     select u.id, u.name from
                         ${AcsUserInfo.table_name} u,
                         ${AcsUserRole.table_name} user_role

+ 13 - 3
pmr-biz-manager/src/routes/api/prj/outcome/add.ts

@@ -56,7 +56,17 @@ function statusGuard(json: IRequest, cached_data: ICachedData): Promise<void> {
         if (!phase) return reject(Resp.gen_err(Resp.ResourceNotFound, '项目状态信息出错,id: ' + prj_info.id));
 
         if (phase.order_index < 20) return reject(Resp.gen_err(Resp.InvalidFlow, '需要先对项目进行立项,立项后才可制订计划。'));
-        if (phase.order_index >= 80) return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许添加交付物。'));
+        // if (phase.order_index >= 80) return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许添加交付物。'));
+
+        if (phase.order_index === 80) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目验收中,不允许添加交付物。'));
+        }
+        if (phase.order_index === 90) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目已作废,不允许添加交付物。'));
+        }
+        if (phase.order_index === 100) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目已完成,不允许添加交付物。'));
+        }
 
         // if (data.draft == true) {
         if (phase.order_index >= 60 && phase.order_index <= 65) {
@@ -66,8 +76,8 @@ function statusGuard(json: IRequest, cached_data: ICachedData): Promise<void> {
         if (data.draft === false) {
             if (phase.order_index >= 30 && phase.order_index <= 40)
                 return reject(Resp.gen_err(Resp.InvalidFlow, '项目计划审核中,当前阶段不允许添加。'));
-            if (phase.order_index === 70)
-                return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许直接添加交付物,应在草稿中添加后重新提交计划变更审核。'));
+            // if (phase.order_index === 70)
+            //     return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许直接添加交付物,应在草稿中添加后重新提交计划变更审核。'));
         }
         if (task.status >= TaskStatus.apply_for_review) {
             return reject(Resp.gen_err(Resp.InvalidFlow, '当前任务阶段不允许添加交付物。'));

+ 12 - 3
pmr-biz-manager/src/routes/api/prj/outcome/modify.ts

@@ -91,7 +91,16 @@ function statusGuard(json: IRequest, cached_data: ICachedData): Promise<void> {
         if (!phase) return reject(Resp.gen_err(Resp.ResourceNotFound, '项目状态信息出错,id: ' + prj_info.id));
 
         if (phase.order_index < 20) return reject(Resp.gen_err(Resp.InvalidFlow, '需要先对项目进行立项,立项后才可制订计划。'));
-        if (phase.order_index >= 80) return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许修改交付物。'));
+        // if (phase.order_index >= 80) return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许修改交付物。'));
+        if (phase.order_index === 80) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目验收中,不允许修改交付物。'));
+        }
+        if (phase.order_index === 90) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目已作废,不允许修改交付物。'));
+        }
+        if (phase.order_index === 100) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目已完成,不允许修改交付物。'));
+        }
 
         // if (data.draft == true) {
             if (phase.order_index >= 60 && phase.order_index <= 65) {
@@ -101,8 +110,8 @@ function statusGuard(json: IRequest, cached_data: ICachedData): Promise<void> {
         if (!data.draft) {
             if (phase.order_index >=30 && phase.order_index <= 40)
                 return reject(Resp.gen_err(Resp.InvalidFlow, '项目计划审核中,当前阶段不允许修改。'));
-            if (phase.order_index === 70)
-                return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许直接修改交付物,应在草稿中修改后重新提交计划变更审核。'));
+            // if (phase.order_index === 70)
+            //     return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许直接修改交付物,应在草稿中修改后重新提交计划变更审核。'));
         }
         if (task.status >= TaskStatus.apply_for_review) {
             return reject(Resp.gen_err(Resp.InvalidFlow, '当前任务阶段不允许修改交付物。'));

+ 12 - 4
pmr-biz-manager/src/routes/api/prj/outcome/remove.ts

@@ -103,8 +103,16 @@ function statusGuard(json: IRequest, cached_data: ICachedData): Promise<void> {
         if (!phase) return reject(Resp.gen_err(Resp.ResourceNotFound, '项目状态信息出错,id: ' + prj_info.id));
 
         if (phase.order_index < 20) return reject(Resp.gen_err(Resp.InvalidFlow, '需要先对项目进行立项,立项后才可制订计划。'));
-        if (phase.order_index >= 80) return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许删除交付物。'));
-
+        // if (phase.order_index >= 80) return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许删除交付物。'));
+        if (phase.order_index === 80) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目验收中,不允许删除交付物。'));
+        }
+        if (phase.order_index === 90) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目已作废,不允许删除交付物。'));
+        }
+        if (phase.order_index === 100) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目已完成,不允许删除交付物。'));
+        }
         // if (data.draft == true) {
             if (phase.order_index >= 60 && phase.order_index <= 65) {
                 return reject(Resp.gen_err(Resp.InvalidFlow, '计划变更审核中,现阶段不允许删除交付物。'));
@@ -113,8 +121,8 @@ function statusGuard(json: IRequest, cached_data: ICachedData): Promise<void> {
         if (!data.draft) {
             if (phase.order_index >=30 && phase.order_index <= 40)
                 return reject(Resp.gen_err(Resp.InvalidFlow, '项目计划审核中,当前阶段不允许删除。'));
-            if (phase.order_index === 70)
-                return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许直接删除交付物,应在草稿中修改后重新提交计划变更审核。'));
+            // if (phase.order_index === 70)
+            //     return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许直接删除交付物,应在草稿中修改后重新提交计划变更审核。'));
         }
         if (task.status >= TaskStatus.apply_for_review) {
             return reject(Resp.gen_err(Resp.InvalidFlow, '当前任务阶段不允许删除交付物。'));

+ 15 - 5
pmr-biz-manager/src/routes/api/prj/outcome/remove_file.ts

@@ -44,15 +44,25 @@ function statusGuard(json: IRequest, cached_data: ICachedData): Promise<void> {
         if (!phase) return reject(Resp.gen_err(Resp.ResourceNotFound, '项目状态信息出错,id: ' + prj_info.id));
 
         if (phase.order_index < 20) return reject(Resp.gen_err(Resp.InvalidFlow, '需要先对项目进行立项。'));
-        if (phase.order_index >= 80) return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许删除交付物。'));
-
+        // if (phase.order_index >= 80) return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许删除交付物。'));
+        if (phase.order_index === 80) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目验收中,不允许删除交付文档。'));
+        }
+        if (phase.order_index === 90) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目已作废,不允许删除交付文档。'));
+        }
+        if (phase.order_index === 100) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目已完成,不允许删除交付文档。'));
+        }
 
         if (phase.order_index >=30 && phase.order_index <= 40)
-            return reject(Resp.gen_err(Resp.InvalidFlow, '项目计划审核中,当前阶段不允许删除交付物。'));
-
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目计划审核中,当前阶段不允许删除交付文档。'));
+        if (phase.order_index >= 60 && phase.order_index <= 65) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '计划变更审核中,当前阶段不允许删除交付文档。'));
+        }
 
         if (task.status >= TaskStatus.apply_for_review) {
-            return reject(Resp.gen_err(Resp.InvalidFlow, '当前任务阶段不允许删除交付物。'));
+            return reject(Resp.gen_err(Resp.InvalidFlow, '当前任务阶段不允许删除交付文档。'));
         }
 
 

+ 16 - 8
pmr-biz-manager/src/routes/api/prj/outcome/upload.ts

@@ -45,18 +45,26 @@ function statusGuard(json: IRequest, cached_data: ICachedData): Promise<void> {
 
         if (phase.order_index < 20) return reject(Resp.gen_err(Resp.InvalidFlow, '需要先对项目进行立项。'));
         if (phase.order_index >= 20 && phase.order_index <= 40)
-            return reject(Resp.gen_err(Resp.InvalidFlow, '项目计划制订或审核中,当前阶段不允许上传交付。'));
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目计划制订或审核中,当前阶段不允许上传交付文档。'));
         if (phase.order_index >= 60 && phase.order_index <= 65)
-            return reject(Resp.gen_err(Resp.InvalidFlow, '项目计划变更正在审核中,当前阶段不允许上传交付物。'));
-        if (phase.order_index >= 80) return reject(Resp.gen_err(Resp.InvalidFlow, '项目收尾阶段不允许上传交付物。'));
-
-
-        if (phase.order_index >=30 && phase.order_index <= 40)
-            return reject(Resp.gen_err(Resp.InvalidFlow, '项目计划审核中,当前阶段不允许上传交付物。'));
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目计划变更正在审核中,当前阶段不允许上传交付文档。'));
+        // if (phase.order_index >= 80) return reject(Resp.gen_err(Resp.InvalidFlow, '项目收尾阶段不允许上传交付文档。'));
+        if (phase.order_index === 80) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目验收中,不允许上传交付文档。'));
+        }
+        if (phase.order_index === 90) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目已作废,不允许上传交付文档。'));
+        }
+        if (phase.order_index === 100) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目已完成,不允许上传交付文档。'));
+        }
 
+        // if (phase.order_index >= 60 && phase.order_index <= 65) {
+        //     return reject(Resp.gen_err(Resp.InvalidFlow, '计划变更审核中,当前阶段不允许上传交付文档。'));
+        // }
 
         if (task.status >= TaskStatus.apply_for_review) {
-            return reject(Resp.gen_err(Resp.InvalidFlow, '当前任务阶段不允许上传交付物。'));
+            return reject(Resp.gen_err(Resp.InvalidFlow, '当前任务阶段不允许上传交付文档。'));
         }
 
 

+ 14 - 4
pmr-biz-manager/src/routes/api/prj/plan/add_task.ts

@@ -87,10 +87,20 @@ function guard(json: IRequest, cached_data: ICachedData): Promise<void> {
         if (phase.order_index < 20) return reject(Resp.gen_err(Resp.InvalidFlow, '需要先对项目进行立项,立项后才可制订计划。'));
         if (phase.order_index >= 30 && phase.order_index <= 40 && !data.draft)
             return reject(Resp.gen_err(Resp.InvalidFlow, '项目计划审核中,当前阶段不允许添加。'));
-        if (phase.order_index >= 60 && phase.order_index <= 70 && !data.draft)
-            return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许直接添加计划,应在草稿中修改后重新提交审核。'));
-        if (phase.order_index >= 80) return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许添加计划。'));
-
+        // if (phase.order_index >= 60 && phase.order_index <= 65 && !data.draft)
+        //     return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许直接添加计划,应在草稿中修改后重新提交审核。'));
+        // if (phase.order_index >= 80) return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许添加计划。'));
+        if (phase.order_index >= 60 && phase.order_index <= 65)
+            return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目处于计划变更审核过程中,不允许添加计划。'));
+        if (phase.order_index === 80) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目验收中,不允许添加计划。'));
+        }
+        if (phase.order_index === 90) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目已作废,不允许添加计划。'));
+        }
+        if (phase.order_index === 100) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目已完成,不允许添加计划。'));
+        }
         resolve();
     });
 }

+ 12 - 4
pmr-biz-manager/src/routes/api/prj/plan/modify_task.ts

@@ -91,16 +91,24 @@ function guard(json: IRequest, cached_data: ICachedData): Promise<void> {
         if (task.status === TaskStatus.completed || task.status === TaskStatus.cancelled) {
             return reject(Resp.gen_err(Resp.InvalidFlow, '任务已完成或已取消,不允许修改。'));
         }
-        if (data.draft) return resolve();/// 草稿允许随意修改
+        // if (data.draft) return resolve();/// 草稿允许随意修改
 
         let phase = await PrjPhaseDefine.findOne({where: {id: prj_info.phase_id}, raw: true});
         if (!phase) return reject(Resp.gen_err(Resp.ResourceNotFound, '项目状态信息出错,id: ' + prj_info.id));
         if (phase.order_index < 20) return reject(Resp.gen_err(Resp.InvalidFlow, '需要先对项目进行立项,立项后才可制订计划。'));
         if (phase.order_index >= 30 && phase.order_index <= 40 && !data.draft)
             return reject(Resp.gen_err(Resp.InvalidFlow, '项目计划审核中,当前阶段不允许修改。'));
-        if (phase.order_index >= 60 && phase.order_index <= 70 && !data.draft)
-            return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许直接修改计划,应在草稿中修改后重新提交审核。'));
-        if (phase.order_index >= 80) return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许修改计划。'));
+        if (phase.order_index >= 60 && phase.order_index <= 65)
+            return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目处于计划变更审核过程中,不允许修改计划。'));
+        if (phase.order_index === 80) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目验收中,不允许修改计划。'));
+        }
+        if (phase.order_index === 90) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目已作废,不允许修改计划。'));
+        }
+        if (phase.order_index === 100) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目已完成,不允许修改计划。'));
+        }
 
         resolve();
     });

+ 16 - 7
pmr-biz-manager/src/routes/api/prj/plan/remove_task.ts

@@ -54,17 +54,26 @@ function statusGuard(json: IRequest, cached_data: ICachedData): Promise<void> {
         let outcome = await outcome_model.findOne({where: {uploaded: true, task_id: data.task_id}, raw: true});
         if (task.progress > 0 || outcome) return reject(Resp.gen_err(Resp.InvalidFlow, '任务已启动,不允许删除。'));
 
-        if (data.draft) {
-            if (phase.order_index >= 60 && phase.order_index <= 65) return reject(Resp.gen_err(Resp.InvalidFlow, '计划变更已提交审核,当前阶段不允许删除。'));
-            return resolve();/// 其它情况下草稿允许随意删除
-        }
+        // if (data.draft) {
+        //     if (phase.order_index >= 60 && phase.order_index <= 65) return reject(Resp.gen_err(Resp.InvalidFlow, '计划变更已提交审核,当前阶段不允许删除。'));
+        //     return resolve();/// 其它情况下草稿允许随意删除
+        // }
 
         if (phase.order_index < 20) return reject(Resp.gen_err(Resp.InvalidFlow, '需要先对项目进行立项,立项后才可制订计划。'));
         if (phase.order_index >= 30 && phase.order_index <= 40 && !data.draft)
             return reject(Resp.gen_err(Resp.InvalidFlow, '项目计划审核中,当前阶段不允许删除。'));
-        if (phase.order_index >= 60 && phase.order_index <= 70 && !data.draft)
-            return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许直接删除计划,应在草稿中删除后重新提交审核。'));
-        if (phase.order_index >= 80) return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许删除计划。'));
+        if (phase.order_index >= 60 && phase.order_index <= 65)
+            return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目处于计划变更审核过程中,不允许删除计划。'));
+
+        if (phase.order_index === 80) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目验收中,不允许删除计划。'));
+        }
+        if (phase.order_index === 90) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目已作废,不允许删除计划。'));
+        }
+        if (phase.order_index === 100) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目已完成,不允许删除计划。'));
+        }
         resolve();
     });
 }

+ 14 - 4
pmr-biz-manager/src/routes/api/prj/plan/set_check_flow.ts

@@ -52,7 +52,7 @@ function statusGuard(json: IRequest, cached_data: ICachedData): Promise<void> {
             return reject(Resp.gen_err(Resp.ResourceNotFound, '计划任务项不存在。'));
 
 
-        if (data.draft) return resolve();/// 草稿允许随意修改
+        // if (data.draft) return resolve();/// 草稿允许随意修改
         let prj_info = await PrjInfo.findOne({where: {id: task.prj_id}, raw: true});
         if (!prj_info) return reject(Resp.gen_err(Resp.ResourceNotFound));
 
@@ -67,9 +67,19 @@ function statusGuard(json: IRequest, cached_data: ICachedData): Promise<void> {
         if (phase.order_index < 20) return reject(Resp.gen_err(Resp.InvalidFlow, '需要先对项目进行立项,立项后才可制订计划。'));
         if (phase.order_index >= 30 && phase.order_index <= 40 && data.draft === false)
             return reject(Resp.gen_err(Resp.InvalidFlow, '项目计划审核中,当前阶段不允许修改。'));
-        if (phase.order_index >= 60 && phase.order_index <= 70 && data.draft === false) return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许直接修改计划,应在草稿中修改后重新提交审核。'));
-        if (phase.order_index >= 80) return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许修改计划。'));
-
+        // if (phase.order_index >= 60 && phase.order_index <= 65 && data.draft === false) return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许直接修改计划,应在草稿中修改后重新提交审核。'));
+        // if (phase.order_index >= 80) return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许修改计划。'));
+        if (phase.order_index >= 60 && phase.order_index <= 65)
+            return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目处于计划变更审核过程中,不允许修改计划。'));
+        if (phase.order_index === 80) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目验收中,不允许修改计划。'));
+        }
+        if (phase.order_index === 90) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目已作废,不允许修改计划。'));
+        }
+        if (phase.order_index === 100) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目已完成,不允许修改计划。'));
+        }
         resolve();
     });
 }

+ 15 - 4
pmr-biz-manager/src/routes/api/prj/plan/sort_task.ts

@@ -1,4 +1,4 @@
-import {ADMINISTRATOR, IApiProcessor, ICachedData, IMethodParams, IRequest} from "@core/Defined";
+import {IApiProcessor, ICachedData, IMethodParams, IRequest} from "@core/Defined";
 import {QueryTypes} from "sequelize";
 import {PrjInfo} from "@core-models/PrjInfo";
 import {Resp} from "@util/Resp";
@@ -37,7 +37,7 @@ function statusGuard(json: IRequest, cached_data: ICachedData): Promise<void> {
         let user = cached_data.user_id;
         let data = <IData>json.data;
         if (!user) return reject(Resp.gen_err(Resp.Forbidden));
-        if (user === ADMINISTRATOR) return resolve();
+        // if (user === ADMINISTRATOR) return resolve();
         let prj_info = await PrjInfo.findOne({where: {id: data.prj_id}, raw: true});
         if (!prj_info) return reject(Resp.gen_err(Resp.ResourceNotFound));
         // 检查用户是否是项目负责人,只有项目负责人才可以对任务进行排序
@@ -50,8 +50,19 @@ function statusGuard(json: IRequest, cached_data: ICachedData): Promise<void> {
         // if (phase.order_index < 20) return reject(Resp.gen_err(Resp.InvalidFlow, '需要先对项目进行立项,立项后才可制订计划。'));
         if (phase.order_index >=30 && phase.order_index <= 40 && !data.draft)
             return reject(Resp.gen_err(Resp.InvalidFlow, '项目计划审核中,当前阶段不允许修改。'));
-        if (phase.order_index >= 60 && phase.order_index <=70 && !data.draft) return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许直接修改计划,应在草稿中修改后重新提交审核。'));
-        if (phase.order_index >= 80) return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许修改计划。'));
+        // if (phase.order_index >= 60 && phase.order_index <=65 && !data.draft) return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许直接修改计划,应在草稿中修改后重新提交审核。'));
+        // if (phase.order_index >= 80) return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目阶段不允许修改计划。'));
+        if (phase.order_index >= 60 && phase.order_index <= 65)
+            return reject(Resp.gen_err(Resp.InvalidFlow, '当前项目处于计划变更审核过程中,不允许修改计划。'));
+        if (phase.order_index === 80) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目验收中,不允许修改计划。'));
+        }
+        if (phase.order_index === 90) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目已作废,不允许修改计划。'));
+        }
+        if (phase.order_index === 100) {
+            return reject(Resp.gen_err(Resp.InvalidFlow, '项目已完成,不允许修改计划。'));
+        }
         resolve();
     });
 }