From 8f2c9b43741ca3004587c6c8dd30260f29647997 Mon Sep 17 00:00:00 2001 From: cuijiaming <1410452759@qq.com> Date: Thu, 23 Mar 2023 10:58:41 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=BA=93-=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=BA=93=E8=AF=A6=E6=83=85-=E5=90=88=E8=A7=84?= =?UTF-8?q?=E8=AE=A4=E8=AF=81=E8=AE=A1=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jero-boot/db/蔚来标准sql/dev_2nd_period.sql | 12 ++++++++++- .../project/entity/ProjectTaskPlanning.java | 6 ++++++ .../enums/ProjectTaskPlanningNameEnum.java | 2 ++ .../impl/ProjectTaskPlanningServiceImpl.java | 21 +++++++++++++++++++ 4 files changed, 40 insertions(+), 1 deletion(-) diff --git a/jero-boot/db/蔚来标准sql/dev_2nd_period.sql b/jero-boot/db/蔚来标准sql/dev_2nd_period.sql index 8ad35e0cf..079c40133 100644 --- a/jero-boot/db/蔚来标准sql/dev_2nd_period.sql +++ b/jero-boot/db/蔚来标准sql/dev_2nd_period.sql @@ -423,4 +423,14 @@ ALTER TABLE `laws_weilai`.`params_report_config_data` -- 流程历史表,增加字段 附件id 2023-3-20 未同步生产环境 ALTER TABLE `process_history` - ADD COLUMN `approval_file` varchar(2000) NULL COMMENT '附件id,多个之间使用英文逗号分隔' AFTER `project_laws_inventory_id`; \ No newline at end of file + ADD COLUMN `approval_file` varchar(2000) NULL COMMENT '附件id,多个之间使用英文逗号分隔' AFTER `project_laws_inventory_id`; + +-- 项目库-相关人员维护表,增加字段 工程接口人法规工程师设置,工程接口人认证工程师设置 2023-3-22 未同步生产环境 +ALTER TABLE `project_related_personnel` + ADD COLUMN `engineer_law_set` varchar(500) NULL COMMENT '工程接口人法规工程师设置' AFTER `law_engineer`; + ADD COLUMN `engineer_att_set` varchar(500) NULL COMMENT '工程接口人认证工程师设置' AFTER `certification_engineer`; + +-- 项目库-法规/认证任务计划 (各阶段确认进度) 表,增加字段 认证提交 2023-3-23 未同步生产环境 +ALTER TABLE `project_task_planning` + ADD COLUMN `certification_submission` datetime(0) NULL COMMENT '认证提交' AFTER `attestation_start_time`; + diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectTaskPlanning.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectTaskPlanning.java index 3bcf71247..30dd70050 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectTaskPlanning.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/entity/ProjectTaskPlanning.java @@ -67,6 +67,12 @@ public class ProjectTaskPlanning implements Serializable { @DateTimeFormat(pattern="yyyy-MM-dd") private Date attestationEndTime; + /**认证提交*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + private Date certificationSubmission; + + /**验证符合性确认截止时间*/ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") @DateTimeFormat(pattern="yyyy-MM-dd") diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ProjectTaskPlanningNameEnum.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ProjectTaskPlanningNameEnum.java index 4d7cbc3ac..6d2563696 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ProjectTaskPlanningNameEnum.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/enums/ProjectTaskPlanningNameEnum.java @@ -18,6 +18,8 @@ public enum ProjectTaskPlanningNameEnum { PREHOMO_DEADLINE("摸底开始","Get Started"), // name:Pre-Homo value:Pre-Homo ATTESTATION_START_TIME("认证开始","Certification Start"),// name:认证开始 value:Certification begins VERIFY_DEADLINE("验证核查","Verification And Verification"), + CERTIFICATION_SUBMISSION("认证提交","Certification Submission"), + ; String name; String value; diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskPlanningServiceImpl.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskPlanningServiceImpl.java index 6de8959a8..9302162bf 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskPlanningServiceImpl.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/service/impl/ProjectTaskPlanningServiceImpl.java @@ -270,6 +270,27 @@ public class ProjectTaskPlanningServiceImpl extends ServiceImpl Date: Thu, 23 Mar 2023 11:02:11 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=B3=95=E8=A7=84=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4-=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E5=8F=91=E9=80=81=E6=B6=88=E6=81=AF=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/project/job/TaskAffirmJob.java | 240 +++++++++++++++++- 1 file changed, 239 insertions(+), 1 deletion(-) diff --git a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/TaskAffirmJob.java b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/TaskAffirmJob.java index a0dc66fd9..d1befe3d5 100644 --- a/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/TaskAffirmJob.java +++ b/jero-boot/jero-boot-modules/src/main/java/com/jero/modules/project/job/TaskAffirmJob.java @@ -4,23 +4,28 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.jero.common.constant.enums.MessageType2Enum; import com.jero.common.constant.enums.MessageTypeEnum; import com.jero.common.constant.enums.MsgColorEnum; +import com.jero.common.util.DateUtils; import com.jero.modules.document.entity.BussDocumentLibraryEO; import com.jero.modules.document.service.IBussDocumentLibraryEOService; +import com.jero.modules.feishu.enums.TemplateInfoEnum2; import com.jero.modules.feishu.service.IFeishuService; import com.jero.modules.feishu.vo.FeishuMsg2Vo; import com.jero.modules.project.entity.ProjectLawsInventoryEO; import com.jero.modules.project.entity.ProjectLibraryBase; import com.jero.modules.project.entity.ProjectNameInfoEO; import com.jero.modules.project.entity.ProjectYearNameInfoEO; +import com.jero.modules.project.enums.ComplianceFlowStatusEnum; import com.jero.modules.project.enums.InventoryAffirmStatusEnum; import com.jero.modules.project.enums.JumpLinkEnum; import com.jero.modules.project.mapper.ProjectLawsInventoryEOMapper; import com.jero.modules.project.mapper.ProjectLibraryBaseMapper; import com.jero.modules.project.mapper.ProjectNameInfoEOMapper; import com.jero.modules.project.mapper.ProjectYearNameInfoEOMapper; +import com.jero.modules.project.service.IProjectLawsInventoryEOService; import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.service.ISysUserService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.quartz.Job; @@ -60,6 +65,11 @@ public class TaskAffirmJob implements Job { @Autowired private IBussDocumentLibraryEOService bussDocumentLibraryEOService; + @Autowired + private IProjectLawsInventoryEOService projectLawsInventoryEOService; + + private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + /** * 任务确认流程定时 @@ -71,6 +81,183 @@ public class TaskAffirmJob implements Job { log.info("任务确认流程,定时任务开启 ====================================================="); QueryWrapper queryWrapperInventory = new QueryWrapper<>(); + // 获取出 任务待确认 的数据(这个状态的数据任务在责任人上) + queryWrapperInventory.and(queryWrapper -> { + queryWrapper.lambda().eq(ProjectLawsInventoryEO::getDesignFlowStatus, ComplianceFlowStatusEnum.TASK_TO_BE_CONFIRMED.getValue()); + }); + List projectLawsInventoryEOList = projectLawsInventoryEOMapper.selectList(queryWrapperInventory); + + if(CollectionUtils.isNotEmpty(projectLawsInventoryEOList)) { + // 根据项目进行分组 + Map> lawsInventoryByProjectLibraryIdGroupMap = projectLawsInventoryEOList.stream().collect(Collectors.groupingBy(ProjectLawsInventoryEO::getProjectLibraryId)); + + for (Map.Entry> lawsInventoryByProjectLibraryIdGroup : lawsInventoryByProjectLibraryIdGroupMap.entrySet()) { + String projectLibraryId = lawsInventoryByProjectLibraryIdGroup.getKey(); + List lawsInventoryListByProjectLibraryId = lawsInventoryByProjectLibraryIdGroup.getValue(); + if(StringUtils.isEmpty(projectLibraryId) || CollectionUtils.isEmpty(lawsInventoryListByProjectLibraryId)){ + continue; + } + + // 设计符合性 + Map> lawsInventoryByDesignDutyIdGroupMap = lawsInventoryListByProjectLibraryId.stream().collect(Collectors.groupingBy(ProjectLawsInventoryEO::getDesignDutyId)); + for (Map.Entry> lawsInventoryByDesignDutyIdGroup : lawsInventoryByDesignDutyIdGroupMap.entrySet()) { + String designDutyId = lawsInventoryByDesignDutyIdGroup.getKey(); + List designDutyDataList = lawsInventoryByDesignDutyIdGroup.getValue(); + if(StringUtils.isEmpty(designDutyId) || CollectionUtils.isEmpty(designDutyDataList)){ + continue; + } + + List userIdList = Arrays.asList(designDutyId.split(",")); + + Map sendMsgDataListMap = this.disposeSendMsgDataList(designDutyDataList); + + // 三条后结束的 + List threeDaysList = (List) sendMsgDataListMap.get("threeDaysList"); + if(CollectionUtils.isNotEmpty(threeDaysList)){ + Date designDueDate = threeDaysList.get(0).getDesignDueDate(); + String endTime = ""; + if(designDueDate != null){ + endTime = DateUtils.formatDate(designDueDate); + } + String serialNumbers = threeDaysList.stream().map(ProjectLawsInventoryEO::getSerialNumber).distinct().collect(Collectors.joining(",")); + // 给责任人发消息 + Map params = new HashMap<>(); + params.put("contentCn","您好,以下待办任务距离截止日期仅剩3天,请及时查看处理。"); + params.put("contentEn","Hello! This task will expire in 3 days. Please check and address it in a timely manner. Thank you!"); + params.put("projectLibraryId",projectLibraryId); + params.put("endTime",endTime); + params.put("userIdList",userIdList); + params.put("serialNumbers",serialNumbers); + params.put("flowTypeCn","设计符合性流程"); + params.put("flowTypeEn","Design Compliance Process"); + this.projectLawsInventoryEOService.sendMessageByTemplateId(TemplateInfoEnum2.REGULATION_TASK_CONFIRMATION4.getValue(),params); + } + // 当天结束的 + List currentDaysList = (List) sendMsgDataListMap.get("currentDaysList"); + if(CollectionUtils.isNotEmpty(currentDaysList)){ + Date designDueDate = currentDaysList.get(0).getDesignDueDate(); + String endTime = ""; + if(designDueDate != null){ + endTime = DateUtils.formatDate(designDueDate); + } + String serialNumbers = currentDaysList.stream().map(ProjectLawsInventoryEO::getSerialNumber).distinct().collect(Collectors.joining(",")); + // 给责任人发消息 + Map params = new HashMap<>(); + params.put("contentCn","您好,以下待办任务已到截止日期,请尽快查看处理。"); + params.put("contentEn","Hello! This task will expire today. Please check and address it ASAP. Thank you!"); + params.put("projectLibraryId",projectLibraryId); + params.put("endTime",endTime); + params.put("userIdList",userIdList); + params.put("serialNumbers",serialNumbers); + params.put("flowTypeCn","设计符合性流程"); + params.put("flowTypeEn","Design Compliance Process"); + this.projectLawsInventoryEOService.sendMessageByTemplateId(TemplateInfoEnum2.REGULATION_TASK_CONFIRMATION4.getValue(),params); + } + // 逾期的 + List overdueList = (List) sendMsgDataListMap.get("overdueList"); + if(CollectionUtils.isNotEmpty(overdueList)){ + Date designDueDate = overdueList.get(0).getDesignDueDate(); + String endTime = ""; + if(designDueDate != null){ + endTime = DateUtils.formatDate(designDueDate); + } + String serialNumbers = overdueList.stream().map(ProjectLawsInventoryEO::getSerialNumber).distinct().collect(Collectors.joining(",")); + // 给责任人发消息 + Map params = new HashMap<>(); + params.put("contentCn","您好,以下待办任务已逾期,请尽快处理。"); + params.put("contentEn","Hello! This task is overdue. Please address it ASAP. Thank you!"); + params.put("projectLibraryId",projectLibraryId); + params.put("endTime",endTime); + params.put("userIdList",userIdList); + params.put("serialNumbers",serialNumbers); + params.put("flowTypeCn","设计符合性流程"); + params.put("flowTypeEn","Design Compliance Process"); + this.projectLawsInventoryEOService.sendMessageByTemplateId(TemplateInfoEnum2.REGULATION_TASK_CONFIRMATION5.getValue(),params); + } + } + // 验证符合性 + Map> lawsInventoryByVerifyDutyIdGroupMap = lawsInventoryListByProjectLibraryId.stream().collect(Collectors.groupingBy(ProjectLawsInventoryEO::getVerifyDutyId)); + + for (Map.Entry> lawsInventoryByVerifyDutyIdGroup : lawsInventoryByVerifyDutyIdGroupMap.entrySet()) { + String verifyDutyId = lawsInventoryByVerifyDutyIdGroup.getKey(); + List verifyDutyDataList = lawsInventoryByVerifyDutyIdGroup.getValue(); + if(StringUtils.isEmpty(verifyDutyId) || CollectionUtils.isEmpty(verifyDutyDataList)){ + continue; + } + + List userIdList = Arrays.asList(verifyDutyId.split(",")); + + Map sendMsgDataListMap = this.disposeSendMsgDataList(verifyDutyDataList); + + // 三条后结束的 + List threeDaysList = (List) sendMsgDataListMap.get("threeDaysList"); + if(CollectionUtils.isNotEmpty(threeDaysList)){ + Date verifyDueDate = threeDaysList.get(0).getVerifyDueDate(); + String endTime = ""; + if(verifyDueDate != null){ + endTime = DateUtils.formatDate(verifyDueDate); + } + String serialNumbers = threeDaysList.stream().map(ProjectLawsInventoryEO::getSerialNumber).distinct().collect(Collectors.joining(",")); + // 给责任人发消息 + Map params = new HashMap<>(); + params.put("contentCn","您好,以下待办任务距离截止日期仅剩3天,请及时查看处理。"); + params.put("contentEn","Hello! This task will expire in 3 days. Please check and address it in a timely manner. Thank you!"); + params.put("projectLibraryId",projectLibraryId); + params.put("endTime",endTime); + params.put("userIdList",userIdList); + params.put("serialNumbers",serialNumbers); + params.put("flowTypeCn","验证符合性流程"); + params.put("flowTypeEn","Validation Compliance Process"); + this.projectLawsInventoryEOService.sendMessageByTemplateId(TemplateInfoEnum2.REGULATION_TASK_CONFIRMATION4.getValue(),params); + } + // 当天结束的 + List currentDaysList = (List) sendMsgDataListMap.get("currentDaysList"); + if(CollectionUtils.isNotEmpty(currentDaysList)){ + Date verifyDueDate = currentDaysList.get(0).getVerifyDueDate(); + String endTime = ""; + if(verifyDueDate != null){ + endTime = DateUtils.formatDate(verifyDueDate); + } + String serialNumbers = currentDaysList.stream().map(ProjectLawsInventoryEO::getSerialNumber).distinct().collect(Collectors.joining(",")); + // 给责任人发消息 + Map params = new HashMap<>(); + params.put("contentCn","您好,以下待办任务已到截止日期,请尽快查看处理。"); + params.put("contentEn","Hello! This task will expire today. Please check and address it ASAP. Thank you!"); + params.put("projectLibraryId",projectLibraryId); + params.put("endTime",endTime); + params.put("userIdList",userIdList); + params.put("serialNumbers",serialNumbers); + params.put("flowTypeCn","验证符合性流程"); + params.put("flowTypeEn","Validation Compliance Process"); + this.projectLawsInventoryEOService.sendMessageByTemplateId(TemplateInfoEnum2.REGULATION_TASK_CONFIRMATION4.getValue(),params); + } + // 逾期的 + List overdueList = (List) sendMsgDataListMap.get("overdueList"); + if(CollectionUtils.isNotEmpty(overdueList)){ + Date verifyDueDate = overdueList.get(0).getVerifyDueDate(); + String endTime = ""; + if(verifyDueDate != null){ + endTime = DateUtils.formatDate(verifyDueDate); + } + String serialNumbers = overdueList.stream().map(ProjectLawsInventoryEO::getSerialNumber).distinct().collect(Collectors.joining(",")); + // 给责任人发消息 + Map params = new HashMap<>(); + params.put("contentCn","您好,以下待办任务已逾期,请尽快处理。"); + params.put("contentEn","Hello! This task is overdue. Please address it ASAP. Thank you!"); + params.put("projectLibraryId",projectLibraryId); + params.put("endTime",endTime); + params.put("userIdList",userIdList); + params.put("serialNumbers",serialNumbers); + params.put("flowTypeCn","验证符合性流程"); + params.put("flowTypeEn","Validation Compliance Process"); + this.projectLawsInventoryEOService.sendMessageByTemplateId(TemplateInfoEnum2.REGULATION_TASK_CONFIRMATION5.getValue(),params); + } + } + } + + } + + /*QueryWrapper queryWrapperInventory = new QueryWrapper<>(); queryWrapperInventory.lambda().eq(ProjectLawsInventoryEO::getTaskAffirmStatus, InventoryAffirmStatusEnum.LIST_TO_CONFIRM.getValue()); List projectLawsInventoryEOList = projectLawsInventoryEOMapper.selectList(queryWrapperInventory); if (ObjectUtils.isNotEmpty(projectLawsInventoryEOList)) { @@ -290,8 +477,59 @@ public class TaskAffirmJob implements Job { } } } - } + }*/ log.info("任务确认流程,定时任务结束 ====================================================="); } + + private Map disposeSendMsgDataList(List projectLawsInventoryEOList) { + Map result = new HashMap<>(); + Date currentDate = new Date(); + String currentDateStr = sdf.format(currentDate); + + //获取后三天的时间 + Calendar calendar=new GregorianCalendar(); + calendar.setTime(new Date()); + calendar.add(Calendar.DATE,3); + Date threeDays = calendar.getTime(); + String threeDaysStr = sdf.format(threeDays); + + // 当天结束的 + List currentDaysList = projectLawsInventoryEOList.stream().filter(data -> { + boolean flag = false; + //结束日期是当前日期 + if(data.getInventoryAffirmDueDate() != null){ + if (StringUtils.equals(currentDateStr, sdf.format(data.getInventoryAffirmDueDate()))) { + flag = true; + } + } + return flag; + }).collect(Collectors.toList()); + + // 三天后结束的 + List threeDaysList = projectLawsInventoryEOList.stream().filter(data -> { + boolean flag = false; + if(data.getInventoryAffirmDueDate() != null){ + if (StringUtils.equals(threeDaysStr, sdf.format(data.getInventoryAffirmDueDate()))) { + flag = true; + } + } + return flag; + }).collect(Collectors.toList()); + + // 逾期的 + List overdueList = projectLawsInventoryEOList.stream().filter(data -> { + // 只要早于当前日期都算逾期 不算当天。 + boolean flag = false; + if(data.getInventoryAffirmDueDate() != null){ + flag = (data.getInventoryAffirmDueDate().before(currentDate) && !StringUtils.equals(currentDateStr, sdf.format(data.getInventoryAffirmDueDate()))); + } + return flag; + }).collect(Collectors.toList()); + + result.put("currentDaysList",currentDaysList); + result.put("threeDaysList",threeDaysList); + result.put("overdueList",overdueList); + return result; + } } From baf53ed07a93900c2c6b58e5561f5791e9c97a99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=83=E5=BC=BA=E5=BC=BA?= <787203167> Date: Thu, 23 Mar 2023 11:29:47 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E7=AC=A6=E5=90=88=E6=80=A7=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E6=89=B9=E9=87=8F=E5=A4=84=E7=90=86\=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=B4=A3=E4=BB=BB=E7=A1=AE=E8=AE=A4=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jero-web/src/common/lang/en-us.js | 15 ++--- jero-web/src/common/lang/zh-cn.js | 16 ++--- .../components/listOfRegulations.vue | 41 ++++++++++--- .../components/settingList.vue | 19 ++++++ .../components/confirmationDrawer.vue | 58 ++++++++++++------- .../reviewedByThePersonInCharge.vue | 3 +- 6 files changed, 107 insertions(+), 45 deletions(-) diff --git a/jero-web/src/common/lang/en-us.js b/jero-web/src/common/lang/en-us.js index dc512c442..b419bea40 100644 --- a/jero-web/src/common/lang/en-us.js +++ b/jero-web/src/common/lang/en-us.js @@ -600,7 +600,7 @@ module.exports = { selectSplitListDisplay: 'Please select whether to split the document list for display', selectDisplayList: 'Please select whether to display in list', documentSplitDisplay: 'Document splitting module display', - VirtualListName: 'Virtual List Name', + VirtualListName: 'Market List Name', CertificationListName:'Certification List Name', listStatus: 'List Status', creater: 'Creater', @@ -857,7 +857,7 @@ module.exports = { cannotExceed: 'Cannot Exceed', Characters: 'Characters', standardInformation: 'Standard Information', - VirtualList: 'VirtualList', + VirtualList: 'MarketList', importTemplate: 'Import Template', verificationConfirmationDeadline: 'Verification compliance confirmation deadline', technicalEvaluationResults: 'Technical Evaluation Results', @@ -875,7 +875,7 @@ module.exports = { reminder: 'Reminder', adopt: 'Adopt', reviewedByThePersonInCharge: 'Reviewed by the person in charge', - onlyDeleted: 'Only data whose list confirmation status is not initiated or rejected can be deleted', + onlyDeleted: 'Only data that has not started or ended the process can be deleted', experimentPassed: 'Test Passed', experimentFailed: 'Test Failed', toBeStarted: 'Not Start', @@ -897,10 +897,10 @@ module.exports = { pleaseDesignConformityConfirmation: 'Please complete the data of design conformity confirmation', pleaseConfirmedByPrehomo: 'Please complete the data confirmed by Pre-Homo', pleaseConformityVerification: 'Please complete the data of Conformity verification', - virtualListDetails: 'Virtual List Details', + virtualListDetails: 'Market List Details', virtualAuthenticationListDetails: 'Virtual Authentication List Details', VirtualAuthenticationList: 'Virtual Authentication List', - maintainVirtualList: 'Maintain Virtual List', + maintainVirtualList: 'Maintain Market List', certificationListMaintenance: 'Certification List Maintenance', reasonsForRejection: 'Reasons For Rejection', inconformity: 'Non-Compliance', @@ -950,7 +950,7 @@ module.exports = { pleaseSubmitStatus: 'Please confirm all engineer data before submission.', modelName: 'Model Name', modelYear: 'Model Year', - NoteConfirmTheChange: 'Note: after the change, the list will be in the status of not being reviewed, which will start from the internal review, and the historical data will be discarded Confirm the change', + NoteConfirmTheChange: 'Note: After resetting, the selected item data will change to a list pending release status, and the historical data will disappear. Please confirm whether to perform a process reset', onlyDataChanged: 'Only data whose task confirmation status is accepted can be changed', inquiry: 'Inquiry', ConfirmationDeadline: 'Confirmation Deadline', @@ -1699,6 +1699,7 @@ module.exports = { hardwaremanufacturer:'Hardware manufacturer', softwareversion:'Software version', returntofill:'Return to fill', - + thereAreCurrentlyNoRegulationsToHandle:'There are currently no regulations to handle', + certificationSubmission:'Certification Submission', } \ No newline at end of file diff --git a/jero-web/src/common/lang/zh-cn.js b/jero-web/src/common/lang/zh-cn.js index 8d7024f75..3552ba9c8 100644 --- a/jero-web/src/common/lang/zh-cn.js +++ b/jero-web/src/common/lang/zh-cn.js @@ -608,9 +608,9 @@ module.exports = { selectSplitListDisplay: '请选择是否文档拆分列表展示', selectDisplayList: '请选择是否列表展示', documentSplitDisplay: '文档拆分模块展示', - VirtualListName: '虚拟清单名称', + VirtualListName: '市场清单名称', CertificationListName:'认证清单名称', - VirtualList: '虚拟清单', + VirtualList: '市场清单', listStatus: '清单状态', creater: '创建人', withdraw: '撤回', @@ -890,7 +890,7 @@ module.exports = { reminder: '提醒', adopt: '通过', reviewedByThePersonInCharge: '负责人审核', - onlyDeleted: '只能删除清单确认状态为未发起或拒绝的数据', + onlyDeleted: '只能删除流程未开始和流程结束的数据', experimentPassed: '实验通过', experimentFailed: '实验失败', toBeStarted: '待开始', @@ -901,7 +901,7 @@ module.exports = { blue: '蓝', yellow: '黄', resultReported: '结果报告', - TheDoesNotContainData: '该虚拟清单的维护清单中没有数据,是否需要添加', + TheDoesNotContainData: '该市场清单的维护清单中没有数据,是否需要添加', number: '序号', Deadline: '截止时间', designComplianceReview: '设计符合性确认', @@ -910,10 +910,10 @@ module.exports = { pleaseDesignConformityConfirmation: '请补全设计符合性确认的数据', pleaseConfirmedByPrehomo: '请补全 Pre-Homo确认的数据', pleaseConformityVerification: '请补全验证符合性确认的数据', - virtualListDetails: '虚拟清单详情', + virtualListDetails: '市场清单详情', virtualAuthenticationListDetails: '虚拟认证清单详情', VirtualAuthenticationList: '虚拟认证清单', - maintainVirtualList: '维护虚拟清单', + maintainVirtualList: '维护市场清单', certificationListMaintenance: '认证清单维护', reasonsForRejection: '驳回原因', inconformity: '不符合', @@ -962,7 +962,7 @@ module.exports = { pleaseSubmitStatus: '请把工程确认的数据都点为确认状态进行提交', modelName: '车型名称', modelYear: '年款', - NoteConfirmTheChange: '注意:变更后该条清单变为未审查状态,将从内部审查工作开始从头进行,历史数据都将丢弃是否确认变更', + NoteConfirmTheChange: '注意:重置后所选条目数据将变为清单待发布状态,历史数据将消失,请确认是否进行流程重置', onlyDataChanged: '只能变更任务确认状态为接受的数据', inquiry: '询问', ConfirmationDeadline: '确认截止时间', @@ -1799,4 +1799,6 @@ module.exports = { returntofill:'返回填写', onlyDataInTheReminderProcessBanBeProcessed:'只能催办流程中的数据', expeditionProcess:'催办流程', + thereAreCurrentlyNoRegulationsToHandle:'当前没有可处理的法规', + certificationSubmission:'认证提交', } \ No newline at end of file diff --git a/jero-web/src/views/projectManagement/components/listOfRegulations.vue b/jero-web/src/views/projectManagement/components/listOfRegulations.vue index 3da734972..333a2acdb 100644 --- a/jero-web/src/views/projectManagement/components/listOfRegulations.vue +++ b/jero-web/src/views/projectManagement/components/listOfRegulations.vue @@ -274,9 +274,18 @@ {{ $t('deleteLib') }} @@ -1220,7 +1229,11 @@ TaskKey = 'zrrqr' } else if (row.designFlowStatus == 'Results to be submitted') { TaskKey = 'zrrtjjfw' - } else if (row.designFlowStatus == 'Results to be reviewed') { + } else if (row.designFlowStatus == 'Results to be reviewed' || + row.designFlowStatus == 'Compliance' || + row.designFlowStatus == 'Non-Compliance' || + row.designFlowStatus == 'To be tracked' || + row.designFlowStatus == 'NA') { TaskKey = 'fggcssh' } query = { @@ -1246,7 +1259,11 @@ TaskKey = 'zrrqr' } else if (row.verifyFlowStatus == 'Results to be submitted') { TaskKey = 'zrrtjjfw' - } else if (row.verifyFlowStatus == 'Results to be reviewed') { + } else if (row.verifyFlowStatus == 'Results to be reviewed' || + row.verifyFlowStatus == 'Compliance' || + row.verifyFlowStatus == 'Non-Compliance' || + row.verifyFlowStatus == 'To be tracked' || + row.verifyFlowStatus == 'NA') { TaskKey = 'fggcssh' } query = { @@ -1711,8 +1728,18 @@ for (let i = 0; i < this.dataSource.length; i++) { for (let j = 0; j < selectedRowKeys.length; j++) { if (this.dataSource[i].id == selectedRowKeys[j]) { - if (this.dataSource[i].verifyFlowStatus == 'List to be released' || - this.dataSource[i].designFlowStatus == 'List to be released') { + if ( + (this.dataSource[i].verifyFlowStatus == 'List to be released' || + this.dataSource[i].verifyFlowStatus == 'Compliance' || + this.dataSource[i].verifyFlowStatus == 'Non-Compliance' || + this.dataSource[i].verifyFlowStatus == 'To be tracked' || + this.dataSource[i].verifyFlowStatus == 'NA') + && + (this.dataSource[i].designFlowStatus == 'List to be released' || + this.dataSource[i].designFlowStatus == 'Compliance' || + this.dataSource[i].designFlowStatus == 'Non-Compliance' || + this.dataSource[i].designFlowStatus == 'To be tracked' || + this.dataSource[i].designFlowStatus == 'NA')) { isTrue = true } else { isTrue = false diff --git a/jero-web/src/views/projectManagement/components/settingList.vue b/jero-web/src/views/projectManagement/components/settingList.vue index 1fa78f812..e06252266 100644 --- a/jero-web/src/views/projectManagement/components/settingList.vue +++ b/jero-web/src/views/projectManagement/components/settingList.vue @@ -109,6 +109,25 @@
+ + + {{$t('certificationSubmission')}} +
+ + + +
+
+ +
+
{{$t('certificationEnd')}} diff --git a/jero-web/src/views/toDoCenter/projectRegulationTasks/components/confirmationDrawer.vue b/jero-web/src/views/toDoCenter/projectRegulationTasks/components/confirmationDrawer.vue index 9b060963e..8d89b4242 100644 --- a/jero-web/src/views/toDoCenter/projectRegulationTasks/components/confirmationDrawer.vue +++ b/jero-web/src/views/toDoCenter/projectRegulationTasks/components/confirmationDrawer.vue @@ -56,9 +56,9 @@ {{$t('resultofhandling')}}
- + + v-model="formInline.flag"> {{$t('accept')}} @@ -130,6 +130,7 @@ import uploadFile from '@/components/uploadFile/file' import { getAction, postAction, putAction, deleteAction } from '@/api/manage' import { mapGetters } from 'vuex' + import moment from 'moment' export default { name: 'confirmationDrawer', @@ -226,12 +227,12 @@ ], processableList: [], noProcessableList: [], - loading:false, + loading: false, rules: { - disposeResult: [ + flag: [ { required: true, - message: this.$t('reviewResults') + this.$t('cannotEmpty'), + message: this.$t('resultofhandling') + this.$t('cannotEmpty'), trigger: 'change' } ], @@ -296,24 +297,37 @@ this.visible = false }, determineClick() { - this.$refs.ruleForm.validate(valid => { - if (valid) { - let query = { - userid: this.userInfo().id, - taskId: this.queryData.taskId || this.queryData.taskIds, - } - postAction('/workFlow/completeTask', query).then((res) => { - if (res.success) { - this.$message.success(this.$t('OperationSuccessful')) - this.visible = false - this.$emit('confirmationdrawerList') - } else { - this.loading = false - this.$message.warning(res.message) + if (this.processableList && this.processableList.length > 0) { + this.$refs.ruleForm.validate(valid => { + if (valid) { + this.loading = true + let taskIds = [] + this.processableList.forEach(res => { + taskIds.push(res.taskId) + }) + let handlingTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss') + let query = { + ...this.formInline, + taskIds: taskIds.join(','), + userId: this.userInfo().id, + handlingTime: handlingTime } - }) - } - }) + postAction('/workFlow/completeTaskBatch', query).then((res) => { + if (res.success) { + this.$message.success(this.$t('OperationSuccessful')) + this.visible = false + this.loading = false + this.$emit('confirmationdrawerList') + } else { + this.loading = false + this.$message.warning(this.$t('operationFailed')) + } + }) + } + }) + } else { + this.$message.warning(this.$t('thereAreCurrentlyNoRegulationsToHandle')) + } }, clickButtonToUpload(item) { this.$refs.uploadFile.perentHandleFunc() diff --git a/jero-web/src/views/toDoCenter/projectRegulationTasks/components/reviewedByThePersonInCharge.vue b/jero-web/src/views/toDoCenter/projectRegulationTasks/components/reviewedByThePersonInCharge.vue index c5972a464..230759ce6 100644 --- a/jero-web/src/views/toDoCenter/projectRegulationTasks/components/reviewedByThePersonInCharge.vue +++ b/jero-web/src/views/toDoCenter/projectRegulationTasks/components/reviewedByThePersonInCharge.vue @@ -120,7 +120,7 @@ disposeResult: [ { required: true, - message: this.$t('reviewResults') + this.$t('cannotEmpty'), + message: this.$t('resultofhandling') + this.$t('cannotEmpty'), trigger: 'change' } ], @@ -159,7 +159,6 @@ } }, mounted() { - console.log(this.query) this.formInline.approvalOpinion = '' this.formInline = { ...this.formInline } // this.query.isDisplay = JSON.parse(this.query.isDisplay) From 84724c555353b3b3b16a1fca5670ce25a6a66da4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=83=E5=BC=BA=E5=BC=BA?= <787203167> Date: Thu, 23 Mar 2023 11:41:45 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=AE=9A=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- jero-web/src/common/lang/en-us.js | 2 +- jero-web/src/common/lang/zh-cn.js | 2 +- .../components/listOfRegulations.vue | 21 +++++++++++++++---- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/jero-web/src/common/lang/en-us.js b/jero-web/src/common/lang/en-us.js index b419bea40..535dd71ce 100644 --- a/jero-web/src/common/lang/en-us.js +++ b/jero-web/src/common/lang/en-us.js @@ -852,7 +852,7 @@ module.exports = { record: 'Record', replyToComments: 'Reply To Comments', noComment: 'No Comment', - theReceived: 'The final version can be made only when the list confirmation status and task confirmation status of All data are received', + theReceived: 'Finalize all process data only after completing the task responsibility confirmation node', notEvaluated: 'Not Evaluated', cannotExceed: 'Cannot Exceed', Characters: 'Characters', diff --git a/jero-web/src/common/lang/zh-cn.js b/jero-web/src/common/lang/zh-cn.js index 3552ba9c8..4c9c614cb 100644 --- a/jero-web/src/common/lang/zh-cn.js +++ b/jero-web/src/common/lang/zh-cn.js @@ -868,7 +868,7 @@ module.exports = { record: '记录', replyToComments: '回复评论', noComment: '暂无评论', - theReceived: '所有数据的清单确认状态和任务确认状态都为接受才可以定版', + theReceived: '所有流程数据均完成任务责任确认节点后才能进行定版操作', notEvaluated: '未评估', cannotExceed: '不能超出', Characters: '个字符', diff --git a/jero-web/src/views/projectManagement/components/listOfRegulations.vue b/jero-web/src/views/projectManagement/components/listOfRegulations.vue index 333a2acdb..d37e2fa21 100644 --- a/jero-web/src/views/projectManagement/components/listOfRegulations.vue +++ b/jero-web/src/views/projectManagement/components/listOfRegulations.vue @@ -1608,7 +1608,20 @@ if (this.dataSource && this.dataSource.length > 0) { let isTrue for (let i = 0; i < this.dataSource.length; i++) { - if (this.dataSource[i].taskAffirmStatus == 'Accepted' && this.dataSource[i].inventoryAffirmStatus == 'Accepted') { + if ((this.dataSource[i].verifyFlowStatus == 'Results to be submitted' || + this.dataSource[i].verifyFlowStatus == 'Results to be reviewed' || + this.dataSource[i].verifyFlowStatus == 'Compliance' || + this.dataSource[i].verifyFlowStatus == 'Non-Compliance' || + this.dataSource[i].verifyFlowStatus == 'To be tracked' || + this.dataSource[i].verifyFlowStatus == 'NA' + ) && + (this.dataSource[i].designFlowStatus == 'Results to be submitted' || + this.dataSource[i].designFlowStatus == 'Results to be reviewed' || + this.dataSource[i].designFlowStatus == 'Compliance' || + this.dataSource[i].designFlowStatus == 'Non-Compliance' || + this.dataSource[i].designFlowStatus == 'To be tracked' || + this.dataSource[i].designFlowStatus == 'NA' + )) { isTrue = true } else { isTrue = false @@ -1729,13 +1742,13 @@ for (let j = 0; j < selectedRowKeys.length; j++) { if (this.dataSource[i].id == selectedRowKeys[j]) { if ( - (this.dataSource[i].verifyFlowStatus == 'List to be released' || + (this.dataSource[i].verifyFlowStatus == 'List to be released' || this.dataSource[i].verifyFlowStatus == 'Compliance' || this.dataSource[i].verifyFlowStatus == 'Non-Compliance' || this.dataSource[i].verifyFlowStatus == 'To be tracked' || this.dataSource[i].verifyFlowStatus == 'NA') - && - (this.dataSource[i].designFlowStatus == 'List to be released' || + && + (this.dataSource[i].designFlowStatus == 'List to be released' || this.dataSource[i].designFlowStatus == 'Compliance' || this.dataSource[i].designFlowStatus == 'Non-Compliance' || this.dataSource[i].designFlowStatus == 'To be tracked' ||