Merge remote-tracking branch 'origin/dev_2nd_LCYH' into dev_2nd_LCYH

This commit is contained in:
cuijiaming
2023-03-09 11:57:59 +08:00
14 changed files with 1300 additions and 532 deletions
@@ -15,6 +15,8 @@ public enum CertificationFlowNodeEnum {
ZRRJJRW ("zrrjjrw","责任人拒绝任务","The person in charge refused the assignment"), ZRRJJRW ("zrrjjrw","责任人拒绝任务","The person in charge refused the assignment"),
ZRRTJRW ("zrrtjrw","责任人提交任务","The responsible person submits the task"), ZRRTJRW ("zrrtjrw","责任人提交任务","The responsible person submits the task"),
RZGCSSC ("rzgcssc","认证工程师审查","Certified engineer review"), RZGCSSC ("rzgcssc","认证工程师审查","Certified engineer review"),
RZGCSSC_TG ("rzgcssc_tg","认证工程师审查-通过","Certified engineer review through"),
RZGCSSC_TH ("rzgcssc_th","认证工程师审查-退回","Certified engineer review returned"),
; ;
String key; String key;
@@ -17,7 +17,7 @@ public enum CertificationInventoryFlowStatusEnum {
* 任务待确认 认证工程师发起责任人待确认 * 任务待确认 认证工程师发起责任人待确认
* 责任人拒绝 责任人拒绝 * 责任人拒绝 责任人拒绝
* 结果待提交 责任人接受后 未提交交付物 * 结果待提交 责任人接受后 未提交交付物
* 工程师退回 责任人分发后被第二位责任人退回 * 工程师退回 责任人分发后被第二位责任人退回 (没有该状态。)
* 结果待审查 责任人提交后认证工程师未审查 * 结果待审查 责任人提交后认证工程师未审查
* 审查通过 责任人提交后认证工程师审查通过 * 审查通过 责任人提交后认证工程师审查通过
* 审查退回 责任人提交后认证工程师审查退回 * 审查退回 责任人提交后认证工程师审查退回
@@ -131,7 +131,7 @@ public interface IProjectCertificationInventoryEOService extends IService<Projec
/** /**
* 批量保存 * 批量保存
* @param projectCertificationInventoryEOList * @param json
* @return * @return
*/ */
Result<?> saveBatch(JSONObject json); Result<?> saveBatch(JSONObject json);
@@ -301,17 +301,27 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
throw new JeroBootException("至少选择一条数据进行发布!"); throw new JeroBootException("至少选择一条数据进行发布!");
} }
String endTime = json.getString("endTime"); String endTime = json.getString("endTime");
String cut = json.getString("cut");
List<String> idList = Arrays.asList(ids.split(",")); List<String> idList = Arrays.asList(ids.split(","));
List<String> flowStatusList = new ArrayList<>();
flowStatusList.add(CertificationInventoryFlowStatusEnum.LIST_TO_BE_RELEASED.getValue());
flowStatusList.add(CertificationInventoryFlowStatusEnum.CERTIFICATION_RETURNED.getValue());
// 根据页面选择的认证清单数据id,查询出状态为’清单待发布‘的数据,进行发布处理 // 根据页面选择的认证清单数据id,查询出状态为’清单待发布‘的数据,进行发布处理
QueryWrapper<ProjectCertificationInventoryEO> certificationQueryWrap = new QueryWrapper<>(); QueryWrapper<ProjectCertificationInventoryEO> certificationQueryWrap = new QueryWrapper<>();
certificationQueryWrap.lambda().in(ProjectCertificationInventoryEO::getId,idList); certificationQueryWrap.lambda().in(ProjectCertificationInventoryEO::getId,idList);
certificationQueryWrap.lambda().in(ProjectCertificationInventoryEO::getFlowStatus,CertificationInventoryFlowStatusEnum.LIST_TO_BE_RELEASED.getValue()); certificationQueryWrap.lambda().in(ProjectCertificationInventoryEO::getFlowStatus,flowStatusList);
List<ProjectCertificationInventoryEO> projectCertificationInventoryEOList = this.list(certificationQueryWrap); List<ProjectCertificationInventoryEO> projectCertificationInventoryEOList = this.list(certificationQueryWrap);
if(CollectionUtils.isEmpty(projectCertificationInventoryEOList)){ if(CollectionUtils.isEmpty(projectCertificationInventoryEOList)){
throw new JeroBootException("无法获取要发布的数据,请重新选择!"); if(StringUtils.equals(cut,CutEnum.EN.getValue())){
throw new JeroBootException("Select at least one data flow whose status is' List to be released or Certification returned '!");
}else {
throw new JeroBootException("至少选择一条数据流程状态为'清单待发布 或 认证退回'的数据!");
}
} }
List<ProcessInfoDetailEO> processInfoDetailEOList = new ArrayList<>(); List<ProcessInfoDetailEO> processInfoDetailEOList = new ArrayList<>();
@@ -338,7 +348,6 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
ProcessInfoDetailEO processInfoDetailEO = new ProcessInfoDetailEO(); ProcessInfoDetailEO processInfoDetailEO = new ProcessInfoDetailEO();
processInfoDetailEO.setUserId(userId); processInfoDetailEO.setUserId(userId);
processInfoDetailEO.setTaskDefinitionKey(CertificationFlowNodeEnum.RZGCSJSRW.getKey()); processInfoDetailEO.setTaskDefinitionKey(CertificationFlowNodeEnum.RZGCSJSRW.getKey());
processInfoDetailEO.setEndTime(DateUtils.str2Date(endTime,DateUtils.date_sdf.get()));
processInfoDetailEO.setCreateTime(new Date()); processInfoDetailEO.setCreateTime(new Date());
processInfoDetailEO.setStatus(TaskStatusEnum.NOT_DONE.getValue()); processInfoDetailEO.setStatus(TaskStatusEnum.NOT_DONE.getValue());
processInfoDetailEO.setProcessInfoId(projectLibraryId); processInfoDetailEO.setProcessInfoId(projectLibraryId);
@@ -373,7 +382,7 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
processInfoEO.setProjectLibraryId(projectLibraryId); processInfoEO.setProjectLibraryId(projectLibraryId);
processInfoEO.setActiProcInstId(projectLibraryId); processInfoEO.setActiProcInstId(projectLibraryId);
processInfoEO.setFlowType(FlowTypeEnum.CERTIFICATION_LC.getValue()); processInfoEO.setFlowType(FlowTypeEnum.CERTIFICATION_LC.getValue());
processInfoEO.setStatus(TodoCenterStatusEnum.LIST_TO_CONFIRM.getValue()); // processInfoEO.setStatus(TodoCenterStatusEnum.LIST_TO_CONFIRM.getValue());
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
processInfoEO.setCreateBy(currentUser.getId()); processInfoEO.setCreateBy(currentUser.getId());
@@ -397,7 +406,6 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
detail.setFlowType(FlowTypeEnum.CERTIFICATION_LC.getValue()); detail.setFlowType(FlowTypeEnum.CERTIFICATION_LC.getValue());
detail.setTaskDefinitionKey(taskDefinitionKey); detail.setTaskDefinitionKey(taskDefinitionKey);
detail.setStatus(TaskStatusEnum.NOT_DONE.getValue()); detail.setStatus(TaskStatusEnum.NOT_DONE.getValue());
// detail.setEndTime(DateUtils.str2Date(endTime,DateUtils.date_sdf.get()));
detail.setCreateTime(new Date()); detail.setCreateTime(new Date());
detail.setStatus(TaskStatusEnum.NOT_DONE.getValue()); detail.setStatus(TaskStatusEnum.NOT_DONE.getValue());
}); });
@@ -406,6 +414,7 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
QueryWrapper<ProcessInfoDetailEO> removeWrap = new QueryWrapper<>(); QueryWrapper<ProcessInfoDetailEO> removeWrap = new QueryWrapper<>();
removeWrap.lambda().eq(ProcessInfoDetailEO::getProcessInfoId,processInfoId); removeWrap.lambda().eq(ProcessInfoDetailEO::getProcessInfoId,processInfoId);
removeWrap.lambda().in(ProcessInfoDetailEO::getUserId,userIdList); removeWrap.lambda().in(ProcessInfoDetailEO::getUserId,userIdList);
removeWrap.lambda().eq(ProcessInfoDetailEO::getTaskDefinitionKey,taskDefinitionKey);
// 删除用户在这个认证清单流程中其它的待办任务 // 删除用户在这个认证清单流程中其它的待办任务
this.processInfoDetailEOService.remove(removeWrap); this.processInfoDetailEOService.remove(removeWrap);
@@ -680,14 +689,18 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
case RZGCSTHRW: case RZGCSTHRW:
return this.certificationReturnedStudioTask(json); return this.certificationReturnedStudioTask(json);
case ZRRJSRW: case ZRRJSRW:
return this.dutyPersonAcceptTask(json);
break; case ZRRJJRW:
return this.dutyPersonRejectTask(json);
case ZRRTJRW: case ZRRTJRW:
return this.dutyPersonSubmitTask(json);
break;
case RZGCSSC: case RZGCSSC:
break; break;
case RZGCSSC_TG:
return this.certificationReviewThrough(json);
case RZGCSSC_TH:
return this.certificationReviewReturned(json);
default: default:
throw new JeroBootException(nodeKey + " 的操作节点传递有误,请联系管理员!"); throw new JeroBootException(nodeKey + " 的操作节点传递有误,请联系管理员!");
} }
@@ -695,6 +708,361 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
return Result.OK("提交任务成功!"); return Result.OK("提交任务成功!");
} }
/**
* 认证工程师审查退回
* @param json
* @return
*/
private Result<?> certificationReviewReturned(JSONObject json) {
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String ids = json.getString("ids");
if(StringUtils.isEmpty(ids)){
throw new JeroBootException("至少选择一条数据进行操作!");
}
List<String> idList = Arrays.asList(ids.split(","));
List<String> flowStatusList = new ArrayList<>();
flowStatusList.add(CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_REVIEWED.getValue());
QueryWrapper<ProjectCertificationInventoryEO> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().in(ProjectCertificationInventoryEO::getId,idList);
queryWrapper.lambda().in(ProjectCertificationInventoryEO::getFlowStatus,flowStatusList);
List<ProjectCertificationInventoryEO> projectCertificationInventoryEOList = this.list(queryWrapper);
if(CollectionUtils.isEmpty(projectCertificationInventoryEOList)){
throw new JeroBootException("至少选择一条数据流程状态为'结果待审查'的数据!");
}
for (ProjectCertificationInventoryEO projectCertificationInventoryEO : projectCertificationInventoryEOList) {
projectCertificationInventoryEO.setFlowStatus(CertificationInventoryFlowStatusEnum.REVIEW_AND_RETURN.getValue());
}
ProjectLibraryBase projectLibraryBase = JSONObject.parseObject(JSONObject.toJSONString(json.get("projectLibraryBase")), ProjectLibraryBase.class);
try {
// 更新数据状态为 审查退回
this.updateBatchById(projectCertificationInventoryEOList);
List<String> flowStatus = new ArrayList<>();
flowStatus.add(CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_REVIEWED.getValue());
// 更新该项目认证流程中,认证工程师的任务状态。
// 如果还有 结果待审查 的数据,不做操作,如果没有 将这个项目认证流程的所有认证工程师待办任务转为已办 flowStatus
this.updateProcessInfoDetailStatus(projectLibraryBase,CertificationFlowNodeEnum.RZGCSSC.getKey(),flowStatus);
}catch (Exception ex){
ex.printStackTrace();
log.error("认证工程师-审批退回失败:" + ex.getMessage());
throw new JeroBootException("审批退回失败!");
}
return Result.OK("审批退回成功!");
}
/**
* 认证工程师审查通过
* @param json
* @return
*/
private Result<?> certificationReviewThrough(JSONObject json) {
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String ids = json.getString("ids");
if(StringUtils.isEmpty(ids)){
throw new JeroBootException("至少选择一条数据进行操作!");
}
List<String> idList = Arrays.asList(ids.split(","));
List<String> flowStatusList = new ArrayList<>();
flowStatusList.add(CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_REVIEWED.getValue());
QueryWrapper<ProjectCertificationInventoryEO> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().in(ProjectCertificationInventoryEO::getId,idList);
queryWrapper.lambda().in(ProjectCertificationInventoryEO::getFlowStatus,flowStatusList);
List<ProjectCertificationInventoryEO> projectCertificationInventoryEOList = this.list(queryWrapper);
if(CollectionUtils.isEmpty(projectCertificationInventoryEOList)){
throw new JeroBootException("至少选择一条数据流程状态为'结果待审查'的数据!");
}
for (ProjectCertificationInventoryEO projectCertificationInventoryEO : projectCertificationInventoryEOList) {
projectCertificationInventoryEO.setFlowStatus(CertificationInventoryFlowStatusEnum.REVIEW_AND_PASS.getValue());
}
ProjectLibraryBase projectLibraryBase = JSONObject.parseObject(JSONObject.toJSONString(json.get("projectLibraryBase")), ProjectLibraryBase.class);
try {
// 更新数据状态为 审查通过
this.updateBatchById(projectCertificationInventoryEOList);
List<String> flowStatus = new ArrayList<>();
flowStatus.add(CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_REVIEWED.getValue());
// 更新该项目认证流程中,认证工程师的任务状态。
// 如果还有 结果待审查 的数据,不做操作,如果没有 将这个项目认证流程的所有认证工程师待办任务转为已办 flowStatus
this.updateProcessInfoDetailStatus(projectLibraryBase,CertificationFlowNodeEnum.RZGCSSC.getKey(),flowStatus);
}catch (Exception ex){
ex.printStackTrace();
log.error("认证工程师-审批通过失败:" + ex.getMessage());
throw new JeroBootException("审批通过失败!");
}
return Result.OK("审批通过成功!");
}
/**
* 更新任务状态为已办
* @param projectLibraryBase
*/
private void updateProcessInfoDetailStatus(ProjectLibraryBase projectLibraryBase,String taskDefinitionKey,List<String> flowStatusList) {
QueryWrapper<ProjectCertificationInventoryEO> queryCountWrap = new QueryWrapper<>();
queryCountWrap.lambda().eq(ProjectCertificationInventoryEO::getProjectLibraryId, projectLibraryBase.getId());
queryCountWrap.lambda().in(ProjectCertificationInventoryEO::getFlowStatus,flowStatusList);
int notDoneCount = this.count(queryCountWrap);
if(notDoneCount == 0){
QueryWrapper<ProcessInfoDetailEO> detailQueryWrapper = new QueryWrapper<>();
detailQueryWrapper.lambda().eq(ProcessInfoDetailEO::getProcessInfoId, projectLibraryBase.getId());
detailQueryWrapper.lambda().eq(ProcessInfoDetailEO::getTaskDefinitionKey,taskDefinitionKey);
List<ProcessInfoDetailEO> detailEOList = this.processInfoDetailEOService.list(detailQueryWrapper);
for (ProcessInfoDetailEO processInfoDetailEO : detailEOList) {
processInfoDetailEO.setStatus(TaskStatusEnum.HAVE_DONE.getValue());
}
this.processInfoDetailEOService.updateBatchById(detailEOList);
}
}
/**
* 责任人提交任务
* @param json
* @return
*/
private Result<?> dutyPersonSubmitTask(JSONObject json) {
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String ids = json.getString("ids");
if(StringUtils.isEmpty(ids)){
throw new JeroBootException("至少选择一条数据进行操作!");
}
List<String> idList = Arrays.asList(ids.split(","));
List<String> flowStatusList = new ArrayList<>();
flowStatusList.add(CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_SUBMITTED.getValue());
QueryWrapper<ProjectCertificationInventoryEO> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().in(ProjectCertificationInventoryEO::getId,idList);
queryWrapper.lambda().in(ProjectCertificationInventoryEO::getFlowStatus,flowStatusList);
List<ProjectCertificationInventoryEO> projectCertificationInventoryEOList = this.list(queryWrapper);
if(CollectionUtils.isEmpty(projectCertificationInventoryEOList)){
throw new JeroBootException("至少选择一条数据流程状态为'结果待提交'的数据!");
}
ProjectLibraryBase projectLibraryBase = JSONObject.parseObject(JSONObject.toJSONString(json.get("projectLibraryBase")), ProjectLibraryBase.class);
// 给认证工程师分配待办中心的任务
String certificationEngineer = projectLibraryBase.getCertificationEngineer();
if(StringUtils.isEmpty(certificationEngineer)){
throw new JeroBootException("该项目中认证工程师为空,请先维护认证工程师!");
}
List<ProcessInfoDetailEO> processInfoDetailEOList = new ArrayList<>();
List<String> certificationEngineerList = Arrays.asList(certificationEngineer.split(","));
// 给认证工程师分配任务
for (String userId : certificationEngineerList) {
ProcessInfoDetailEO processInfoDetailEO = new ProcessInfoDetailEO();
processInfoDetailEO.setUserId(userId);
processInfoDetailEO.setTaskDefinitionKey(CertificationFlowNodeEnum.RZGCSSC.getKey());
processInfoDetailEO.setCreateTime(new Date());
processInfoDetailEO.setStatus(TaskStatusEnum.NOT_DONE.getValue());
processInfoDetailEO.setProcessInfoId(projectLibraryBase.getId());
processInfoDetailEO.setActiProcInstId(projectLibraryBase.getId());
processInfoDetailEO.setFlowType(FlowTypeEnum.CERTIFICATION_LC.getValue());
processInfoDetailEOList.add(processInfoDetailEO);
}
// 数据更新为结果待审查
for (ProjectCertificationInventoryEO projectCertificationInventoryEO : projectCertificationInventoryEOList) {
projectCertificationInventoryEO.setFlowStatus(CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_REVIEWED.getValue());
}
try {
this.updateBatchById(projectCertificationInventoryEOList);
List<String> certificationIdList = projectCertificationInventoryEOList.stream().map(ProjectCertificationInventoryEO::getId).distinct().collect(Collectors.toList());
// 将当前责任人的待办任务转为已办
LambdaUpdateWrapper<ProcessInfoDetailEO> detailUpdateWrap = new LambdaUpdateWrapper<>();
detailUpdateWrap.eq(ProcessInfoDetailEO::getProcessInfoId,projectLibraryBase.getId());
detailUpdateWrap.eq(ProcessInfoDetailEO::getUserId,currentUser.getId());
detailUpdateWrap.eq(ProcessInfoDetailEO::getTaskDefinitionKey,CertificationFlowNodeEnum.ZRRTJRW.getKey());
detailUpdateWrap.eq(ProcessInfoDetailEO::getProjectLawsInventoryId,certificationIdList);
detailUpdateWrap.set(ProcessInfoDetailEO::getStatus,TaskStatusEnum.HAVE_DONE.getValue());
this.processInfoDetailEOService.update(detailUpdateWrap);
// 给认证工程师分配待办中心的任务 认证工程师审查
this.addProcessInfoDetailEO(processInfoDetailEOList,projectLibraryBase.getId(),CertificationFlowNodeEnum.RZGCSSC.getKey());
}catch (Exception ex){
ex.printStackTrace();
log.error("责任人-提交任务失败:" + ex.getMessage());
throw new JeroBootException("提交任务失败!");
}
return Result.OK("提交任务成功!");
}
/**
* 责任人接受任务
* @param json
* @return
*/
private Result<?> dutyPersonAcceptTask(JSONObject json) {
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String ids = json.getString("ids");
if(StringUtils.isEmpty(ids)){
throw new JeroBootException("至少选择一条数据进行操作!");
}
List<String> idList = Arrays.asList(ids.split(","));
List<String> flowStatusList = new ArrayList<>();
flowStatusList.add(CertificationInventoryFlowStatusEnum.TASK_TO_BE_CONFIRMED.getValue());
QueryWrapper<ProjectCertificationInventoryEO> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().in(ProjectCertificationInventoryEO::getId,idList);
queryWrapper.lambda().in(ProjectCertificationInventoryEO::getFlowStatus,flowStatusList);
List<ProjectCertificationInventoryEO> projectCertificationInventoryEOList = this.list(queryWrapper);
if(CollectionUtils.isEmpty(projectCertificationInventoryEOList)){
throw new JeroBootException("至少选择一条数据流程状态为'任务待确认'的数据!");
}
ProjectLibraryBase projectLibraryBase = JSONObject.parseObject(JSONObject.toJSONString(json.get("projectLibraryBase")), ProjectLibraryBase.class);
List<ProcessInfoDetailEO> processInfoDetailEOList = new ArrayList<>();
for (ProjectCertificationInventoryEO projectCertificationInventoryEO : projectCertificationInventoryEOList) {
projectCertificationInventoryEO.setFlowStatus(CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_SUBMITTED.getValue());
ProcessInfoDetailEO processInfoDetailEO = new ProcessInfoDetailEO();
processInfoDetailEO.setUserId(projectCertificationInventoryEO.getDutyPerson());
processInfoDetailEO.setEndTime(projectCertificationInventoryEO.getEndTime());
processInfoDetailEO.setProjectLawsInventoryId(projectCertificationInventoryEO.getId());
processInfoDetailEOList.add(processInfoDetailEO);
}
try {
List<String> certificationIdList = projectCertificationInventoryEOList.stream().map(ProjectCertificationInventoryEO::getId).distinct().collect(Collectors.toList());
// 将当前责任人的待办任务转为已办
LambdaUpdateWrapper<ProcessInfoDetailEO> detailUpdateWrap = new LambdaUpdateWrapper<>();
detailUpdateWrap.eq(ProcessInfoDetailEO::getProcessInfoId,projectLibraryBase.getId());
detailUpdateWrap.eq(ProcessInfoDetailEO::getUserId,currentUser.getId());
detailUpdateWrap.eq(ProcessInfoDetailEO::getTaskDefinitionKey,CertificationFlowNodeEnum.ZRRJSRW.getKey());
detailUpdateWrap.eq(ProcessInfoDetailEO::getProjectLawsInventoryId,certificationIdList);
detailUpdateWrap.set(ProcessInfoDetailEO::getStatus,TaskStatusEnum.HAVE_DONE.getValue());
this.processInfoDetailEOService.update(detailUpdateWrap);
// 给责任人分配待办中心的任务 (待提交)
this.addProcessInfoDetailEO(processInfoDetailEOList,projectLibraryBase.getId(),CertificationFlowNodeEnum.ZRRTJRW.getKey());
// 责任人接受任务,将数据的状态更新为 结果待提交。
this.updateBatchById(projectCertificationInventoryEOList);
}catch (Exception ex){
ex.printStackTrace();
log.error("责任人-接受任务失败:" + ex.getMessage());
throw new JeroBootException("接受任务失败!");
}
return Result.OK("接受任务成功!");
}
/**
* 责任人拒绝任务
* @param json
* @return
*/
private Result<?> dutyPersonRejectTask(JSONObject json) {
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String ids = json.getString("ids");
if(StringUtils.isEmpty(ids)){
throw new JeroBootException("至少选择一条数据进行操作!");
}
List<String> idList = Arrays.asList(ids.split(","));
List<String> flowStatusList = new ArrayList<>();
flowStatusList.add(CertificationInventoryFlowStatusEnum.TASK_TO_BE_CONFIRMED.getValue());
QueryWrapper<ProjectCertificationInventoryEO> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().in(ProjectCertificationInventoryEO::getId,idList);
queryWrapper.lambda().in(ProjectCertificationInventoryEO::getFlowStatus,flowStatusList);
List<ProjectCertificationInventoryEO> projectCertificationInventoryEOList = this.list(queryWrapper);
if(CollectionUtils.isEmpty(projectCertificationInventoryEOList)){
throw new JeroBootException("至少选择一条数据流程状态为'任务待确认'的数据!");
}
ProjectLibraryBase projectLibraryBase = JSONObject.parseObject(JSONObject.toJSONString(json.get("projectLibraryBase")), ProjectLibraryBase.class);
// 给认证工程师分配待办中心的任务
String certificationEngineer = projectLibraryBase.getCertificationEngineer();
if(StringUtils.isEmpty(certificationEngineer)){
throw new JeroBootException("该项目中认证工程师为空,请先维护认证工程师!");
}
for (ProjectCertificationInventoryEO projectCertificationInventoryEO : projectCertificationInventoryEOList) {
projectCertificationInventoryEO.setFlowStatus(CertificationInventoryFlowStatusEnum.REFUSAL_OF_RESPONSIBLE_PERSON.getValue());
}
try {
// 将当前责任人的待办任务转为已办
LambdaUpdateWrapper<ProcessInfoDetailEO> detailUpdateWrap = new LambdaUpdateWrapper<>();
detailUpdateWrap.eq(ProcessInfoDetailEO::getProcessInfoId,projectLibraryBase.getId());
detailUpdateWrap.eq(ProcessInfoDetailEO::getUserId,currentUser.getId());
detailUpdateWrap.eq(ProcessInfoDetailEO::getTaskDefinitionKey,CertificationFlowNodeEnum.ZRRJSRW.getKey());
detailUpdateWrap.set(ProcessInfoDetailEO::getStatus,TaskStatusEnum.HAVE_DONE.getValue());
this.processInfoDetailEOService.update(detailUpdateWrap);
List<ProcessInfoDetailEO> processInfoDetailEOList = new ArrayList<>();
List<String> certificationEngineerList = Arrays.asList(certificationEngineer.split(","));
// 给认证工程师分配任务
for (String userId : certificationEngineerList) {
ProcessInfoDetailEO processInfoDetailEO = new ProcessInfoDetailEO();
processInfoDetailEO.setUserId(userId);
processInfoDetailEO.setTaskDefinitionKey(CertificationFlowNodeEnum.RZGCSJSRW.getKey());
processInfoDetailEO.setCreateTime(new Date());
processInfoDetailEO.setStatus(TaskStatusEnum.NOT_DONE.getValue());
processInfoDetailEO.setProcessInfoId(projectLibraryBase.getId());
processInfoDetailEO.setActiProcInstId(projectLibraryBase.getId());
processInfoDetailEO.setFlowType(FlowTypeEnum.CERTIFICATION_LC.getValue());
processInfoDetailEOList.add(processInfoDetailEO);
}
// 删除该项目数据的待办任务,key为 认证工程师接受任务的数据
QueryWrapper<ProcessInfoDetailEO> deleteDetailWrap = new QueryWrapper<>();
deleteDetailWrap.lambda().eq(ProcessInfoDetailEO::getProcessInfoId,projectLibraryBase.getId());
deleteDetailWrap.lambda().eq(ProcessInfoDetailEO::getTaskDefinitionKey,CertificationFlowNodeEnum.RZGCSJSRW.getKey());
deleteDetailWrap.lambda().eq(ProcessInfoDetailEO::getFlowType,FlowTypeEnum.CERTIFICATION_LC.getValue());
this.processInfoDetailEOService.remove(deleteDetailWrap);
this.processInfoDetailEOService.saveBatch(processInfoDetailEOList);
// 责任人接受任务,将数据的状态更新为 结果待提交。
this.updateBatchById(projectCertificationInventoryEOList);
}catch (Exception ex){
ex.printStackTrace();
log.error("责任人-拒绝任务失败:" + ex.getMessage());
throw new JeroBootException("拒绝任务失败!");
}
return Result.OK("拒绝任务成功!");
}
/**
* 认证工程师退回至studio任务
* @param json
* @return
*/
private Result<?> certificationReturnedStudioTask(JSONObject json) { private Result<?> certificationReturnedStudioTask(JSONObject json) {
String ids = json.getString("ids"); String ids = json.getString("ids");
if(StringUtils.isEmpty(ids)){ if(StringUtils.isEmpty(ids)){
@@ -720,18 +1088,23 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
} }
// 给studio分配待办中心任务 // 给studio分配待办中心任务
List<ProcessInfoDetailEO> processInfoDetailEOList = new ArrayList<>(); /*List<ProcessInfoDetailEO> processInfoDetailEOList = new ArrayList<>();
ProcessInfoDetailEO processInfoDetailEO = new ProcessInfoDetailEO(); ProcessInfoDetailEO processInfoDetailEO = new ProcessInfoDetailEO();
processInfoDetailEO.setUserId(projectLibraryBase.getStudioEngineer()); processInfoDetailEO.setUserId(projectLibraryBase.getStudioEngineer());
processInfoDetailEOList.add(processInfoDetailEO); processInfoDetailEOList.add(processInfoDetailEO);
this.addProcessInfoDetailEO(processInfoDetailEOList,projectLibraryBase.getId(),CertificationFlowNodeEnum.STUDIOFQ.getKey()); this.addProcessInfoDetailEO(processInfoDetailEOList,projectLibraryBase.getId(),CertificationFlowNodeEnum.STUDIOFQ.getKey());*/
try { try {
for (ProjectCertificationInventoryEO projectCertificationInventoryEO : projectCertificationInventoryEOList) { for (ProjectCertificationInventoryEO projectCertificationInventoryEO : projectCertificationInventoryEOList) {
projectCertificationInventoryEO.setFlowStatus(CertificationInventoryFlowStatusEnum.CERTIFICATION_RETURNED.getValue()); projectCertificationInventoryEO.setFlowStatus(CertificationInventoryFlowStatusEnum.CERTIFICATION_RETURNED.getValue());
} }
// 认证工程师发起任务,将数据的状态更新为 任务待确认。
// 认证工程师退回任务到studio,将数据的状态更新为 认证退回
this.updateBatchById(projectCertificationInventoryEOList); this.updateBatchById(projectCertificationInventoryEOList);
// 更新该项目认证流程中,认证工程师的任务状态。
// 如果还有 清单待校核、责任人拒绝 状态的数据,不做操作,如果没有 将这个项目认证流程的所有认证工程师待办任务转为已办
this.updateProcessInfoDetailStatus(projectLibraryBase,CertificationFlowNodeEnum.RZGCSJSRW.getKey(),flowStatusList);
}catch (Exception ex){ }catch (Exception ex){
ex.printStackTrace(); ex.printStackTrace();
log.error("认证工程师-退回认证清单任务失败:" + ex.getMessage()); log.error("认证工程师-退回认证清单任务失败:" + ex.getMessage());
@@ -773,41 +1146,26 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
} }
try { try {
// 给责任人分配待办中心的任务
List<ProcessInfoDetailEO> processInfoDetailEOList = new ArrayList<>();
for (ProjectCertificationInventoryEO projectCertificationInventoryEO : projectCertificationInventoryEOList) { for (ProjectCertificationInventoryEO projectCertificationInventoryEO : projectCertificationInventoryEOList) {
projectCertificationInventoryEO.setFlowStatus(CertificationInventoryFlowStatusEnum.TASK_TO_BE_CONFIRMED.getValue()); projectCertificationInventoryEO.setFlowStatus(CertificationInventoryFlowStatusEnum.TASK_TO_BE_CONFIRMED.getValue());
}
// 给责任人分配待办中心的任务
List<String> dutyPersonList = projectCertificationInventoryEOList.stream().map(ProjectCertificationInventoryEO::getDutyPerson).distinct().collect(Collectors.toList());
List<ProcessInfoDetailEO> processInfoDetailEOList = new ArrayList<>();
for (String dutyPerson : dutyPersonList) {
ProcessInfoDetailEO processInfoDetailEO = new ProcessInfoDetailEO(); ProcessInfoDetailEO processInfoDetailEO = new ProcessInfoDetailEO();
processInfoDetailEO.setUserId(dutyPerson); processInfoDetailEO.setUserId(projectCertificationInventoryEO.getDutyPerson());
processInfoDetailEO.setEndTime(projectCertificationInventoryEO.getEndTime());
processInfoDetailEO.setProjectLawsInventoryId(projectCertificationInventoryEO.getId());
processInfoDetailEOList.add(processInfoDetailEO); processInfoDetailEOList.add(processInfoDetailEO);
} }
this.addProcessInfoDetailEO(processInfoDetailEOList,projectLibraryBase.getId(),CertificationFlowNodeEnum.ZRRJSRW.getKey()); this.addProcessInfoDetailEO(processInfoDetailEOList,projectLibraryBase.getId(),CertificationFlowNodeEnum.ZRRJSRW.getKey());
// 更新该项目认证流程中,认证工程师的任务状态。
QueryWrapper<ProjectCertificationInventoryEO> queryCountWrap = new QueryWrapper<>();
queryCountWrap.lambda().eq(ProjectCertificationInventoryEO::getProjectLibraryId,projectLibraryBase.getId());
queryCountWrap.lambda().in(ProjectCertificationInventoryEO::getFlowStatus,flowStatusList);
int notDoneCount = this.count(queryCountWrap);
// 如果还有 清单待校核、责任人拒绝 状态的数据,不做操作,如果没有 将这个项目认证流程的所有认证工程师待办任务转为已办
if(notDoneCount == 0){
QueryWrapper<ProcessInfoDetailEO> detailQueryWrapper = new QueryWrapper<>();
detailQueryWrapper.lambda().eq(ProcessInfoDetailEO::getProcessInfoId,projectLibraryBase.getId());
detailQueryWrapper.lambda().eq(ProcessInfoDetailEO::getTaskDefinitionKey,CertificationFlowNodeEnum.RZGCSJSRW.getKey());
List<ProcessInfoDetailEO> detailEOList = this.processInfoDetailEOService.list(detailQueryWrapper);
for (ProcessInfoDetailEO processInfoDetailEO : detailEOList) {
processInfoDetailEO.setStatus(TaskStatusEnum.HAVE_DONE.getValue());
}
this.processInfoDetailEOService.updateBatchById(detailEOList);
}
// 认证工程师发起任务,将数据的状态更新为 任务待确认。 // 认证工程师发起任务,将数据的状态更新为 任务待确认。
this.updateBatchById(projectCertificationInventoryEOList); this.updateBatchById(projectCertificationInventoryEOList);
// 更新该项目认证流程中,认证工程师的任务状态。
// 如果还有 清单待校核、责任人拒绝 状态的数据,不做操作,如果没有 将这个项目认证流程的所有认证工程师待办任务转为已办
this.updateProcessInfoDetailStatus(projectLibraryBase,CertificationFlowNodeEnum.RZGCSJSRW.getKey(),flowStatusList);
}catch (Exception ex){ }catch (Exception ex){
ex.printStackTrace(); ex.printStackTrace();
log.error("认证工程师-发起认证清单任务失败:" + ex.getMessage()); log.error("认证工程师-发起认证清单任务失败:" + ex.getMessage());
@@ -179,6 +179,34 @@
process_info_detail pid process_info_detail pid
where pid.process_info_id = pi.id and pid.STATUS = 'NotDone' order by pid.end_time asc limit 1 where pid.process_info_id = pi.id and pid.STATUS = 'NotDone' order by pid.end_time asc limit 1
) as end_time, ) as end_time,
<!--(
case when flow_type = '21' then
(
SELECT
pci.end_time
FROM
project_certification_inventory pci
WHERE
pci.project_library_id = pi.id
AND ( pci.flow_status = 'List to be checked' OR pci.flow_status = 'Refusal of responsible person' )
ORDER BY
pci.end_time ASC
LIMIT 1
)
when flow_type = '10' then
(
SELECT
pid.end_time
FROM
process_info_detail pid
WHERE
pid.process_info_id = pi.id
AND pid.STATUS = 'NotDone'
ORDER BY
pid.end_time ASC
LIMIT 1
) end
)AS end_time,-->
pi.STATUS, pi.STATUS,
pi.prc_num, pi.prc_num,
pi.prc_name, pi.prc_name,
+18
View File
@@ -1406,4 +1406,22 @@ module.exports = {
missionRejection:'Mission Rejection', missionRejection:'Mission Rejection',
turnToDo:'Turn To Do', turnToDo:'Turn To Do',
initiateTask:'Initiate a Task', initiateTask:'Initiate a Task',
compliancereport:'Generate compliance report',
todocenter:'To-do center',
areYouReturnToStudio:'Are you sure to return to studio?',
confirmLaunchTask:'Confirm launch task ?',
conditionsNotMet:'Conditions not met',
onlyProcessStatusReturned:'Only the data whose process status is list to be checked and rejected by the responsible person can be returned',
onlyProcessReturned:'Only data with process status of list to be checked and rejected by responsible person can be initiated',
confirmToAcceptTheTask:'Confirm to accept the task ?',
confirmRejectTask:'Confirm Reject Task ?',
onlyDataStatusConfirmedSelected:'Only data with process status of task to be confirmed can be selected',
onlyDataStatusSubmittedCanBeSelected:'Only data with process status of result to be submitted can be selected',
operationWithoutPermission:'Operation without permission',
data:"'s data",
confirmApproval:'Confirm approval?',
confirmReturnForApproval:'Confirm return for approval ?',
onlyDataStatusResultReviewedCanBeSelected:'Only data with process status of result to be reviewed can be selected',
confirmResetProcess:'Confirm reset process?',
confirmUrging:'Confirm urging ?',
} }
+18
View File
@@ -1507,4 +1507,22 @@ module.exports = {
missionRejection:'任务拒绝', missionRejection:'任务拒绝',
turnToDo:'转办', turnToDo:'转办',
initiateTask:'发起任务', initiateTask:'发起任务',
areYouReturnToStudio:'确认退回至studio吗?',
confirmLaunchTask:'确认发起任务?',
conditionsNotMet:'不满足条件',
onlyProcessStatusReturned:'只能退回流程状态为清单待校核和责任人拒绝的数据',
onlyProcessReturned:'只能发起流程状态为清单待校核和责任人拒绝的数据',
confirmToAcceptTheTask:'确认接受任务?',
confirmRejectTask:'确认拒绝任务?',
onlyDataStatusConfirmedSelected:'只能选择流程状态为任务待确认的数据',
onlyDataStatusSubmittedCanBeSelected:'只能选择流程状态为结果待提交的数据',
operationWithoutPermission:'没有权限操作',
data:"的数据",
compliancereport:'生成合规报告',
todocenter:'待办中心',
confirmApproval:'确认通过审批',
confirmReturnForApproval:'确认退回审批',
onlyDataStatusResultReviewedCanBeSelected:'只能选择流程状态为结果待审查的数据',
confirmResetProcess:'确认重置流程?',
confirmUrging:'确认催办',
} }
@@ -11,18 +11,19 @@
</span> </span>
</div> </div>
<div class="Virtual-detail-text-right"> <div class="Virtual-detail-text-right">
<!-- <div class="operator-text"-->
<!-- v-if="textTitle === $t('listOfRegulations')"-->
<!-- v-has="'projectComment:list'"-->
<!-- @click="commentClick">-->
<!-- <a-icon type="message"/>-->
<!-- {{$t('comment')}}-->
<!-- </div>-->
<div class="operator-text" <div class="operator-text"
v-if="textTitle === $t('listOfRegulations')" v-if="textTitle === $t('listOfRegulations')"
v-has="'projectComment:list'" v-has="'projectComment:list'"
@click="commentClick"> @click="todocenterClick">
<a-icon type="message"/> <a-icon type="qrcode"/>
{{$t('comment')}} {{$t('todocenter')}}
</div>
<div class="operator-text" v-has="'projectHistoryVersions:list'"
v-if="textTitle === $t('listOfRegulations')"
@click="historicalVersionClick">
<a-icon type="clock-circle"/>
{{$t('historicalVersion')}}
</div> </div>
<div class="operator-text" v-has="'projectLawsInventoryLog:page'" <div class="operator-text" v-has="'projectLawsInventoryLog:page'"
v-if="textTitle === $t('listOfRegulations')" v-if="textTitle === $t('listOfRegulations')"
@@ -30,6 +31,12 @@
<a-icon type="reload"/> <a-icon type="reload"/>
{{$t('UpdateLog')}} {{$t('UpdateLog')}}
</div> </div>
<div class="operator-text" v-has="'projectHistoryVersions:list'"
v-if="textTitle === $t('listOfRegulations')"
@click="historicalVersionClick">
<a-icon type="clock-circle"/>
{{$t('historicalVersion')}}
</div>
<div class="operator-text" v-has="'projectLawsInventoryLog:page'" <div class="operator-text" v-has="'projectLawsInventoryLog:page'"
v-if="textTitle === $t('certificationList') || textTitle === $t('listOfRegulations')" v-if="textTitle === $t('certificationList') || textTitle === $t('listOfRegulations')"
@click="roleSwitchingClick"> @click="roleSwitchingClick">
@@ -241,6 +248,9 @@
} else if (this.$route.query.type == '105') { } else if (this.$route.query.type == '105') {
this.textColor(this.$t('TaskParameterCollection')) this.textColor(this.$t('TaskParameterCollection'))
this.textTitle = this.$t('TaskParameterCollection') this.textTitle = this.$t('TaskParameterCollection')
}else if (this.$route.query.type == '106') {
this.textColor(this.$t('certificationList'))
this.textTitle = this.$t('certificationList')
} }
} else { } else {
if (this.userInfo().userRoleList && this.userInfo().userRoleList.length > 0) { if (this.userInfo().userRoleList && this.userInfo().userRoleList.length > 0) {
@@ -308,6 +318,10 @@
text[i].classList.add('Virtual-detail-left-text-color') text[i].classList.add('Virtual-detail-left-text-color')
} }
} }
},
//待办中心跳转
todocenterClick(){
}, },
UpdateLogClick() { UpdateLogClick() {
this.$refs.updateLogRef.getList({ projectLibraryId: this.$route.query.id }) this.$refs.updateLogRef.getList({ projectLibraryId: this.$route.query.id })
@@ -117,7 +117,7 @@
<a-popconfirm overlayClassName="popconfirm" placement="bottomRight"> <a-popconfirm overlayClassName="popconfirm" placement="bottomRight">
<template slot="title" id="popconfirm"> <template slot="title" id="popconfirm">
<div style="height:320px;overflow:scroll;overflow-x: auto;"> <div>
<!-- 添加--> <!-- 添加-->
<div @click="handleAdd" <div @click="handleAdd"
v-if="roleSwitchingCode == 0 || roleSwitchingCode == 2" v-if="roleSwitchingCode == 0 || roleSwitchingCode == 2"
@@ -186,45 +186,52 @@
</div> </div>
<!-- 发起任务--> <!-- 发起任务-->
<div @click="initiatingProcessClick" v-if="roleSwitchingCode == 2" class="operator-text"> <div @click="initiatingProcessClick('rzgcsjsrw',$t('confirmLaunchTask'))"
v-if="roleSwitchingCode == 2" class="operator-text">
<a-icon type="check-circle"/> <a-icon type="check-circle"/>
{{ $t('initiateTask') }} {{ $t('initiateTask') }}
</div> </div>
<!-- 退回至Studio--> <!-- 退回至Studio-->
<div @click="returnToStudioClick" v-if="roleSwitchingCode == 2" class="operator-text"> <div @click="returnToStudioClick('rzgcsthrw',$t('areYouReturnToStudio'))"
v-if="roleSwitchingCode == 2" class="operator-text">
<a-icon type="close-circle"/> <a-icon type="close-circle"/>
{{ $t('returnToStudio') }} {{ $t('returnToStudio') }}
</div> </div>
<!-- 审批通过--> <!-- 审批通过-->
<div @click="ApprovedClick" v-if="roleSwitchingCode == 2" class="operator-text"> <div @click="ApprovedClick('rzgcssc_tg',$t('confirmApproval'))" v-if="roleSwitchingCode == 2"
class="operator-text">
<a-icon type="check-circle"/> <a-icon type="check-circle"/>
{{ $t('Approved') }} {{ $t('Approved') }}
</div> </div>
<!-- 审批退回--> <!-- 审批退回-->
<div @click="returnedForApprovalClick" v-if="roleSwitchingCode == 2" class="operator-text"> <div @click="ApprovedClick('rzgcssc_th',$t('confirmReturnForApproval'))" v-if="roleSwitchingCode == 2"
class="operator-text">
<a-icon type="close-circle"/> <a-icon type="close-circle"/>
{{ $t('returnedForApproval') }} {{ $t('returnedForApproval') }}
</div> </div>
<!-- 任务接受--> <!-- 任务接受-->
<div @click="missionAcceptedClick" v-if="roleSwitchingCode == 20 || roleSwitchingCode == 21" <div @click="missionAcceptedClick('zrrjsrw',$t('confirmToAcceptTheTask'))"
v-if="roleSwitchingCode == 20 || roleSwitchingCode == 21"
class="operator-text"> class="operator-text">
<a-icon type="check-circle"/> <a-icon type="check-circle"/>
{{ $t('missionAccepted') }} {{ $t('missionAccepted') }}
</div> </div>
<!-- 任务退回--> <!-- 任务退回-->
<div @click="missionRejectionClick" v-if="roleSwitchingCode == 20 || roleSwitchingCode == 21" <div @click="missionAcceptedClick('zrrjjrw',$t('confirmRejectTask'))"
v-if="roleSwitchingCode == 20 || roleSwitchingCode == 21"
class="operator-text"> class="operator-text">
<a-icon type="close-circle"/> <a-icon type="close-circle"/>
{{ $t('missionRejection') }} {{ $t('missionRejection') }}
</div> </div>
<!-- 提交--> <!-- 提交-->
<div @click="submitClick" v-if="roleSwitchingCode == 20 || roleSwitchingCode == 21" class="operator-text"> <div @click="submitClick('zrrtjrw',$t('confirmSubmit'))"
v-if="roleSwitchingCode == 20 || roleSwitchingCode == 21" class="operator-text">
<a-icon type="check-circle"/> <a-icon type="check-circle"/>
{{ $t('submit') }} {{ $t('submit') }}
</div> </div>
@@ -342,9 +349,10 @@
<batSetting :url="url" ref="batSettingRef" @batSettingForm="batSettingForm"/> <batSetting :url="url" ref="batSettingRef" @batSettingForm="batSettingForm"/>
<addModel ref="addModelRef" @addModelForm="addModelForm"/> <addModel ref="addModelRef" @addModelForm="addModelForm"/>
<modifyHistory ref="modifyHistoryRef"/> <modifyHistory ref="modifyHistoryRef"/>
<uploadFile ref="uploadFile" :disabled="disabled" @uploadSuccess="uploadSuccess"></uploadFile> <uploadFile ref="uploadFile" :isMultiple="true" :disabled="disabled" @uploadSuccess="uploadSuccess"></uploadFile>
<TaskListModel @TaskListModelList="transferListForm" ref="TaskListModelRef"/> <TaskListModel @TaskListModelList="transferListForm" ref="TaskListModelRef"/>
<referenceDeliverablesList ref="referenceDeliverablesListRef" @referenceDeliverablesListForm="transferListForm"/> <referenceDeliverablesList ref="referenceDeliverablesListRef" @referenceDeliverablesListForm="transferListForm"/>
<SelectedBy ref="SelectedByRef" :title="$t('turnToDo')" @SelectedByForm="SelectedByForm"></SelectedBy>
<a-modal <a-modal
:title="listTitle" :title="listTitle"
:width="500" :width="500"
@@ -427,6 +435,7 @@
import batSetting from './components/batSetting' import batSetting from './components/batSetting'
import modifyHistory from './components/modifyHistoryList' import modifyHistory from './components/modifyHistoryList'
import TaskListModel from '../TaskListModel' import TaskListModel from '../TaskListModel'
import SelectedBy from '@/components/SelectedBy/index'
import referenceDeliverablesList from './components/referenceDeliverablesList' import referenceDeliverablesList from './components/referenceDeliverablesList'
import { getAction, postAction, downloadFile, deleteAction } from '@/api/manage' import { getAction, postAction, downloadFile, deleteAction } from '@/api/manage'
import moment from 'moment' import moment from 'moment'
@@ -444,7 +453,8 @@
modifyHistory, modifyHistory,
uploadFile, uploadFile,
TaskListModel, TaskListModel,
referenceDeliverablesList referenceDeliverablesList,
SelectedBy
}, },
data() { data() {
return { return {
@@ -486,7 +496,8 @@
deleteOne: '/project/projectCertificationInventoryEO/delete', deleteOne: '/project/projectCertificationInventoryEO/delete',
AndUserId: '/project/projectLibraryRoleRelEO/queryByProjectLibraryIdAndUserId', AndUserId: '/project/projectLibraryRoleRelEO/queryByProjectLibraryIdAndUserId',
AndUserIdEdit: '/project/projectLibraryRoleRelEO/edit', AndUserIdEdit: '/project/projectLibraryRoleRelEO/edit',
saveBatch: '/project/projectCertificationInventoryEO/saveBatch' saveBatch: '/project/projectCertificationInventoryEO/saveBatch',
questionUrl: ''
}, },
dataSource: [], dataSource: [],
roleSwitchingCode: '', roleSwitchingCode: '',
@@ -698,11 +709,17 @@
}, },
onChange(page, pageSize) { onChange(page, pageSize) {
this.pageNo = page this.pageNo = page
if (this.roleSwitchingCode == 2) {
this.preservationClick()
}
this.replacePage() this.replacePage()
}, },
SizeChange(page, pageSize) { SizeChange(page, pageSize) {
this.pageNo = 1 this.pageNo = 1
this.pageSize = pageSize this.pageSize = pageSize
if (this.roleSwitchingCode == 2) {
this.preservationClick()
}
this.replacePage() this.replacePage()
}, },
searchQuery() { searchQuery() {
@@ -839,9 +856,33 @@
this.$message.warning(this.$t('selectLeastOne')) this.$message.warning(this.$t('selectLeastOne'))
} }
}, },
//流程重置
processResetClick() { processResetClick() {
let _this = this
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
this.$confirm({
content: _this.$t('confirmResetProcess'),
onOk() {
let idList = JSON.parse(JSON.stringify(_this.selectedRowKeys))
postAction(_this.url.deleteBatch, {
ids: idList.join(','),
projectLibraryId: _this.$route.query.id
}).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.selectedRowKeys = []
_this.getList()
} else {
_this.$message.warning(res.message)
}
})
}
})
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
}, },
//添加
handleAdd() { handleAdd() {
this.$refs.addModelRef.addModel() this.$refs.addModelRef.addModel()
}, },
@@ -877,7 +918,7 @@
this.confirmLoading = false this.confirmLoading = false
this.getList() this.getList()
} else { } else {
this.$message.warning(this.$t('operationFailed')) this.$message.warning(res.message)
this.confirmLoading = false this.confirmLoading = false
} }
this.detailedSuccessList = [] this.detailedSuccessList = []
@@ -889,16 +930,43 @@
this.formInline = {} this.formInline = {}
this.visible = false this.visible = false
}, },
//撤回
withdrawClick() { withdrawClick() {
}, },
//催办 //催办
questionClick() { questionClick() {
let _this = this
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
this.$confirm({
content: _this.$t('confirmUrging'),
onOk() {
let idList = JSON.parse(JSON.stringify(_this.selectedRowKeys))
postAction(_this.url.questionUrl, {
ids: idList.join(','),
projectLibraryId: _this.$route.query.id
}).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.selectedRowKeys = []
_this.getList()
} else {
_this.$message.warning(res.message)
}
})
}
})
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
}, },
transferListForm() { transferListForm() {
this.pageNo = 1 this.pageNo = 1
this.getList() this.getList()
this.selectedRowKeys = []
}, },
batSettingForm() { batSettingForm() {
this.pageNo = 1 this.pageNo = 1
@@ -908,6 +976,7 @@
addModelForm() { addModelForm() {
this.pageNo = 1 this.pageNo = 1
this.getList() this.getList()
this.selectedRowKeys = []
}, },
edit(item) { edit(item) {
this.$refs.addModelRef.editModel(JSON.parse(JSON.stringify(item))) this.$refs.addModelRef.editModel(JSON.parse(JSON.stringify(item)))
@@ -1032,39 +1101,36 @@
} else { } else {
this.$message.warning(this.$t('selectLeastOne')) this.$message.warning(this.$t('selectLeastOne'))
} }
},
//发起流程
initiatingProcessClick() {
},
//退回至Studio
returnToStudioClick() {
},
//审批通过
ApprovedClick() {
},
//审批退回
returnedForApprovalClick() {
},
//任务接受
missionAcceptedClick() {
},
//任务退回
missionRejectionClick() {
},
//提交
submitClick() {
}, },
//转办 //转办
turnToDoClick() { turnToDoClick() {
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
this.$refs.SelectedByRef.getPush()
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
}, },
SelectedByForm(userIds) {
let ids = JSON.parse(JSON.stringify(this.selectedRowKeys))
let query = {
userIds: userIds,
'projectLibraryId': this.$route.query.id,
'ids': ids.join(',')
}
postAction('/problemKnowledgeBase/problemKnowledgeBaseEO/forward', query).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.$refs.SelectedByRef.visible = false
this.$refs.SelectedByRef.submitLoading = false
this.getList()
} else {
this.$message.warning(this.$t('operationFailed'))
this.$refs.SelectedByRef.submitLoading = false
}
})
},
clickButtonToUpload(item, index) { clickButtonToUpload(item, index) {
this.$refs.uploadFile.perentHandleFunc() this.$refs.uploadFile.perentHandleFunc()
this.$refs.uploadFile.visible = true this.$refs.uploadFile.visible = true
@@ -1089,30 +1155,231 @@
/** 赋值给当前对应的表单文件 */ /** 赋值给当前对应的表单文件 */
this.dataSource[this.uploadIndex][this.uploadName] = attIdList.join(',') this.dataSource[this.uploadIndex][this.uploadName] = attIdList.join(',')
this.dataSource = [...this.dataSource] this.dataSource = [...this.dataSource]
this.preservationClick()
}, },
CertificationProgressClick(val) { CertificationProgressClick(val) {
let item = JSON.parse(JSON.stringify(val)) let item = JSON.parse(JSON.stringify(val))
item.roleCode = this.roleSwitchingCode item.roleCode = this.roleSwitchingCode
this.$refs.TaskListModelRef.getData(item, this.$t('CertificationProgress')) this.$refs.TaskListModelRef.getData(item, this.$t('CertificationProgress'))
}, },
submitTask(value) { //发起流程
initiatingProcessClick(value, prompt) {
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) { if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
let selectedRowKeys = JSON.parse(JSON.stringify(this.selectedRowKeys)) let ids = []
let query = { let notConditions = []
'nodeKey': value, for (let i = 0; i < this.selectedRowKeysList.length; i++) {
'projectLibraryId': this.$route.query.id, if (this.selectedRowKeysList[i].flowStatus == 'List to be checked' ||
'ids': selectedRowKeys.join(',') this.selectedRowKeysList[i].flowStatus == 'Refusal of responsible person') {
} ids.push(this.selectedRowKeysList[i].id)
postAction('/project/projectCertificationInventoryEO/submitTask', query).then((res) => {
if (res.success) {
} else { } else {
notConditions.push(this.selectedRowKeysList[i].inspectionItem)
} }
}) }
let data = ''
if (notConditions && notConditions.length > 0) {
data = this.$t('inspectionItems') + '"' + notConditions.join('、') + '"' + this.$t('conditionsNotMet') + ',' + this.$t('onlyProcessReturned')
}
if (ids && ids.length > 0) {
this.submitTask(value, prompt, ids, notConditions, data)
} else {
this.failedMessage(data)
}
} else { } else {
this.$message.warning(this.$t('selectLeastOne')) this.$message.warning(this.$t('selectLeastOne'))
} }
},
//退回至Studio
returnToStudioClick(value, prompt) {
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
let ids = []
let notConditions = []
for (let i = 0; i < this.selectedRowKeysList.length; i++) {
if (this.selectedRowKeysList[i].flowStatus == 'List to be checked' ||
this.selectedRowKeysList[i].flowStatus == 'Refusal of responsible person') {
ids.push(this.selectedRowKeysList[i].id)
} else {
notConditions.push(this.selectedRowKeysList[i].inspectionItem)
}
}
let data = ''
if (notConditions && notConditions.length > 0) {
data = this.$t('inspectionItems') + '"' + notConditions.join('、') + '"' + this.$t('conditionsNotMet') + ',' + this.$t('onlyProcessStatusReturned')
}
if (ids && ids.length > 0) {
this.submitTask(value, prompt, ids, notConditions, data)
} else {
this.failedMessage(data)
}
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
},
//责任人任务接受\拒绝
missionAcceptedClick(value, prompt) {
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
if (this.roleSwitchingCode == 20) {
this.missionAcceptedClickJC(value, prompt)
return
}
let ids = []
let notConditions = []
for (let i = 0; i < this.selectedRowKeysList.length; i++) {
if (this.selectedRowKeysList[i].flowStatus == 'Task to be confirmed') {
ids.push(this.selectedRowKeysList[i].id)
} else {
notConditions.push(this.selectedRowKeysList[i].inspectionItem)
}
}
let data = ''
if (notConditions && notConditions.length > 0) {
data = this.$t('inspectionItems') + '"' + notConditions.join('、') + '"' + this.$t('conditionsNotMet') + ',' + this.$t('onlyDataStatusConfirmedSelected')
}
if (ids && ids.length > 0) {
this.submitTask(value, prompt, ids, notConditions, data)
} else {
this.failedMessage(data)
}
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
},
missionAcceptedClickJC(value, prompt) {
let ids = []
let notConditions = []
for (let i = 0; i < this.selectedRowKeysList.length; i++) {
if (this.selectedRowKeysList[i].flowStatus == 'Task to be confirmed' &&
this.selectedRowKeysList[i].dutyPersonName == this.userInfo().username) {
ids.push(this.selectedRowKeysList[i].id)
} else {
notConditions.push(this.selectedRowKeysList[i].inspectionItem)
}
}
let data = ''
if (notConditions && notConditions.length > 0) {
data = this.$t('operationWithoutPermission') + this.$t('inspectionItems') + '"' + notConditions.join('、') + '"' + this.$t('data')
}
if (ids && ids.length > 0) {
this.submitTask(value, prompt, ids, notConditions, data)
} else {
this.failedMessage(data)
}
},
//责任人提交
submitClick(value, prompt) {
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
let ids = []
let notConditions = []
if (this.roleSwitchingCode == 20) {
this.submitClickJC(value, prompt)
return
}
for (let i = 0; i < this.selectedRowKeysList.length; i++) {
if (this.selectedRowKeysList[i].flowStatus == 'Results to be submitted' ||
this.selectedRowKeysList[i].flowStatus == 'Review and return') {
ids.push(this.selectedRowKeysList[i].id)
} else {
notConditions.push(this.selectedRowKeysList[i].inspectionItem)
}
}
let data = ''
if (notConditions && notConditions.length > 0) {
data = this.$t('inspectionItems') + '"' + notConditions.join('、') + '"' + this.$t('conditionsNotMet') + ',' + this.$t('onlyDataStatusSubmittedCanBeSelected')
}
if (ids && ids.length > 0) {
this.submitTask(value, prompt, ids, notConditions, data)
} else {
this.failedMessage(data)
}
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
},
//接口人提交
submitClickJC(value, prompt) {
let ids = []
let notConditions = []
for (let i = 0; i < this.selectedRowKeysList.length; i++) {
if ((this.selectedRowKeysList[i].flowStatus == 'Results to be submitted' ||
this.selectedRowKeysList[i].flowStatus == 'Review and return') &&
this.selectedRowKeysList[i].dutyPersonName == this.userInfo().username) {
ids.push(this.selectedRowKeysList[i].id)
} else {
notConditions.push(this.selectedRowKeysList[i].inspectionItem)
}
}
let data = ''
if (notConditions && notConditions.length > 0) {
data = this.$t('operationWithoutPermission') + this.$t('inspectionItems') + '"' + notConditions.join('、') + '"' + this.$t('data')
}
if (ids && ids.length > 0) {
this.submitTask(value, prompt, ids, notConditions, data)
} else {
this.failedMessage(data)
}
},
//审批通过/退回
ApprovedClick(value, prompt) {
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
let ids = []
let notConditions = []
for (let i = 0; i < this.selectedRowKeysList.length; i++) {
if (this.selectedRowKeysList[i].flowStatus == 'Results to be reviewed') {
ids.push(this.selectedRowKeysList[i].id)
} else {
notConditions.push(this.selectedRowKeysList[i].inspectionItem)
}
}
let data = ''
if (notConditions && notConditions.length > 0) {
data = this.$t('inspectionItems') + '"' + notConditions.join('、') + '"' + this.$t('conditionsNotMet') + ',' + this.$t('onlyDataStatusResultReviewedCanBeSelected')
}
if (ids && ids.length > 0) {
this.submitTask(value, prompt, ids, notConditions, data)
} else {
this.failedMessage(data)
}
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
},
failedMessage(data) {
let detailedWarningList = []
detailedWarningList.push(data)
this.$warning({
content: ( < div > { detailedWarningList } < /div>)
})
},
submitTask(value, prompt, ids, notConditions, data) {
let _this = this
this.$confirm({
content: prompt,
onOk() {
let query = {
'nodeKey': value,
'projectLibraryId': _this.$route.query.id,
'ids': ids.join(',')
}
postAction('/project/projectCertificationInventoryEO/submitTask', query).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.getList()
_this.selectedRowKeys = []
_this.selectedRowKeysList = []
if (notConditions && notConditions.length > 0) {
_this.failedMessage(data)
}
} else {
_this.$message.warning(_this.$t('operationFailed'))
}
})
}
})
} }
} }
} }
@@ -228,30 +228,30 @@
</a-col> </a-col>
</a-row> </a-row>
<a-row :gutter="24" v-if="formInline.roleCodeIndex == 0"> <a-row :gutter="24" v-if="formInline.roleCodeIndex == 0">
<a-col :span="12"> <!-- <a-col :span="12">-->
<div class="box-title-text"> <!-- <div class="box-title-text">-->
<div class="title-text"> <!-- <div class="title-text">-->
<span class="Required" v-if="formInline.roleCodeIndex == 0">*</span> <!-- <span class="Required" v-if="formInline.roleCodeIndex == 0">*</span>-->
<span class="title-text-text" :title="$t('certifiedEngineer')">{{$t('certifiedEngineer')}}</span> <!-- <span class="title-text-text" :title="$t('certifiedEngineer')">{{$t('certifiedEngineer')}}</span>-->
</div> <!-- </div>-->
<a-form-model-item class="itemModel" :prop="'homologationEngineerId'"> <!-- <a-form-model-item class="itemModel" :prop="'homologationEngineerId'">-->
<a-select :placeholder="$t('PleaseSelect')+$t('certifiedEngineer')" <!-- <a-select :placeholder="$t('PleaseSelect')+$t('certifiedEngineer')"-->
class="box-input" <!-- class="box-input"-->
allowClear <!-- allowClear-->
:getPopupContainer="triggerNode=> triggerNode.parentNode" <!-- :getPopupContainer="triggerNode=> triggerNode.parentNode"-->
:disabled="formInline.roleCodeIndex == 0 ? false : true" <!-- :disabled="formInline.roleCodeIndex == 0 ? false : true"-->
v-model="formInline.homologationEngineerId"> <!-- v-model="formInline.homologationEngineerId">-->
<a-select-option v-for="(item, key) in certificationEngineerList" <!-- <a-select-option v-for="(item, key) in certificationEngineerList"-->
:key="key" <!-- :key="key"-->
:value="item.value"> <!-- :value="item.value">-->
<span style="display: inline-block;width: 100%" :title=" item.name "> <!-- <span style="display: inline-block;width: 100%" :title=" item.name ">-->
{{ item.name}} <!-- {{ item.name}}-->
</span> <!-- </span>-->
</a-select-option> <!-- </a-select-option>-->
</a-select> <!-- </a-select>-->
</a-form-model-item> <!-- </a-form-model-item>-->
</div> <!-- </div>-->
</a-col> <!-- </a-col>-->
<a-col :span="12"> <a-col :span="12">
<div class="box-title-text"> <div class="box-title-text">
<div class="title-text"> <div class="title-text">
@@ -277,7 +277,7 @@
</div> </div>
</a-col> </a-col>
</a-row> </a-row>
<a-row :gutter="24"> <!-- <a-row :gutter="24">-->
<!-- <a-col :span="12">--> <!-- <a-col :span="12">-->
<!-- <div class="box-title-text">--> <!-- <div class="box-title-text">-->
<!-- <div class="title-text">--> <!-- <div class="title-text">-->
@@ -295,23 +295,23 @@
<!-- </a-form-model-item>--> <!-- </a-form-model-item>-->
<!-- </div>--> <!-- </div>-->
<!-- </a-col>--> <!-- </a-col>-->
</a-row> <!-- </a-row>-->
<!-- <a-row :gutter="24">--> <a-row :gutter="24">
<!-- <a-col :span="24">--> <a-col :span="24">
<!-- <div class="box-title-text">--> <div class="box-title-text">
<!-- <div class="title-text">--> <div class="title-text">
<!-- <span class="title-text-text" :title="$t('remarks')">{{$t('remarks')}}</span>--> <span class="title-text-text" :title="$t('remarks')">{{$t('remarks')}}</span>
<!-- </div>--> </div>
<!-- <a-form-model-item class="itemModel-text" :prop="'remarks'">--> <a-form-model-item class="itemModel-text" :prop="'remarks'">
<!-- <a-textarea--> <a-textarea
<!-- style="width: 100%"--> style="width: 100%"
<!-- :placeholder="$t('PleaseEnter')+$t('remarks')"--> :placeholder="$t('PleaseEnter')+$t('remarks')"
<!-- :disabled="false"--> :disabled="false"
<!-- v-model="formInline.remark" :rows="4"/>--> v-model="formInline.remark" :rows="4"/>
<!-- </a-form-model-item>--> </a-form-model-item>
<!-- </div>--> </div>
<!-- </a-col>--> </a-col>
<!-- </a-row>--> </a-row>
<div class="header-text" v-if="formInline.roleCodeIndex == 0 || <div class="header-text" v-if="formInline.roleCodeIndex == 0 ||
(formInline.roleCodeIndex == 4 && formInline.designInitiatorId == formInline.homologationEngineerId && (formInline.roleCodeIndex == 4 && formInline.designInitiatorId == formInline.homologationEngineerId &&
formInline.homologationEngineerId == userInfoQuery.id) || formInline.homologationEngineerId == userInfoQuery.id) ||
@@ -324,36 +324,6 @@
formInline.homologationEngineerId == userInfoQuery.id) || formInline.homologationEngineerId == userInfoQuery.id) ||
(formInline.roleCodeIndex == 4 && formInline.designInitiatorId == formInline.regulationOwnerId && (formInline.roleCodeIndex == 4 && formInline.designInitiatorId == formInline.regulationOwnerId &&
formInline.regulationOwnerId == userInfoQuery.id)"> formInline.regulationOwnerId == userInfoQuery.id)">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('Sponsor')">{{$t('Sponsor')}}</span>
</div>
<a-form-model-item class="itemModel" prop="designInitiatorId">
<a-select :placeholder="$t('PleaseSelect')+$t('Sponsor')"
:disabled="formInline.roleCodeIndex == 0 ? false : true"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
class="box-input"
allowClear
v-model="formInline.designInitiatorId">
<a-select-option v-for="(item, key) in designInitiatorList"
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.name ">
{{ item.name }}
</span>
</a-select-option>
</a-select>
<!-- <j-dict-select-tag class="box-input" v-model="formInline.designInitiator"-->
<!-- :disabled="formInline.roleCode == 0 ? false : true"-->
<!-- @input="handleInput('designInitiator')"-->
<!-- :placeholder="$t('PleaseSelect')+$t('Sponsor')"-->
<!-- :type="'select'"-->
<!-- :triggerChange="false" :dictCode="'fa1_qi3_ren2'"/>-->
</a-form-model-item>
</div>
</a-col>
<a-col :span="12"> <a-col :span="12">
<div class="box-title-text"> <div class="box-title-text">
<div class="title-text"> <div class="title-text">
@@ -383,30 +353,77 @@
</a-form-model-item> </a-form-model-item>
</div> </div>
</a-col> </a-col>
</a-row>
<a-row :gutter="24" v-if="formInline.roleCodeIndex == 0 ||
(formInline.roleCodeIndex == 4 && formInline.designInitiatorId == formInline.homologationEngineerId &&
formInline.homologationEngineerId == userInfoQuery.id) ||
(formInline.roleCodeIndex == 4 && formInline.designInitiatorId == formInline.regulationOwnerId &&
formInline.regulationOwnerId == userInfoQuery.id)">
<a-col :span="12"> <a-col :span="12">
<div class="box-title-text"> <div class="box-title-text">
<div class="title-text"> <div class="title-text">
<span class="title-text-text" <span class="title-text-text"
:title="$t('cutoffTime')">{{$t('cutoffTime')}}</span> :title="$t('cutoffTime')">{{$t('cutoffTime')}}</span>
</div> </div>
<a-form-model-item class="itemModel" :prop="'designDueDate'"> <a-form-model-item class="itemModel" :prop="'verifyDueDate'">
<a-date-picker class="box-input" <a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('cutoffTime')" :placeholder="$t('PleaseSelect')+$t('cutoffTime')"
@change="dateChange({db_field_name:'designDueDate'})" @change="dateChange({db_field_name:'verifyDueDate'})"
format="YYYY-MM-DD" format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode" :getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.designDueDate" v-model="formInline.verifyDueDate"
style="width: 100%"/> style="width: 100%"/>
</a-form-model-item> </a-form-model-item>
</div> </div>
</a-col> </a-col>
<!-- <a-col :span="12">-->
<!-- <div class="box-title-text">-->
<!-- <div class="title-text">-->
<!-- <span class="title-text-text"-->
<!-- :title="$t('Sponsor')">{{$t('Sponsor')}}</span>-->
<!-- </div>-->
<!-- <a-form-model-item class="itemModel" prop="designInitiatorId">-->
<!-- <a-select :placeholder="$t('PleaseSelect')+$t('Sponsor')"-->
<!-- :disabled="formInline.roleCodeIndex == 0 ? false : true"-->
<!-- :getPopupContainer="triggerNode=> triggerNode.parentNode"-->
<!-- class="box-input"-->
<!-- allowClear-->
<!-- v-model="formInline.designInitiatorId">-->
<!-- <a-select-option v-for="(item, key) in designInitiatorList"-->
<!-- :key="key"-->
<!-- :value="item.value">-->
<!-- <span style="display: inline-block;width: 100%" :title=" item.name ">-->
<!-- {{ item.name }}-->
<!-- </span>-->
<!-- </a-select-option>-->
<!-- </a-select>-->
<!-- &lt;!&ndash; <j-dict-select-tag class="box-input" v-model="formInline.designInitiator"&ndash;&gt;-->
<!-- &lt;!&ndash; :disabled="formInline.roleCode == 0 ? false : true"&ndash;&gt;-->
<!-- &lt;!&ndash; @input="handleInput('designInitiator')"&ndash;&gt;-->
<!-- &lt;!&ndash; :placeholder="$t('PleaseSelect')+$t('Sponsor')"&ndash;&gt;-->
<!-- &lt;!&ndash; :type="'select'"&ndash;&gt;-->
<!-- &lt;!&ndash; :triggerChange="false" :dictCode="'fa1_qi3_ren2'"/>&ndash;&gt;-->
<!-- </a-form-model-item>-->
<!-- </div>-->
<!-- </a-col>-->
</a-row> </a-row>
<!-- <a-row :gutter="24" v-if="formInline.roleCodeIndex == 0 ||-->
<!-- (formInline.roleCodeIndex == 4 && formInline.designInitiatorId == formInline.homologationEngineerId &&-->
<!-- formInline.homologationEngineerId == userInfoQuery.id) ||-->
<!-- (formInline.roleCodeIndex == 4 && formInline.designInitiatorId == formInline.regulationOwnerId &&-->
<!-- formInline.regulationOwnerId == userInfoQuery.id)">-->
<!-- <a-col :span="12">-->
<!-- <div class="box-title-text">-->
<!-- <div class="title-text">-->
<!-- <span class="title-text-text"-->
<!-- :title="$t('cutoffTime')">{{$t('cutoffTime')}}</span>-->
<!-- </div>-->
<!-- <a-form-model-item class="itemModel" :prop="'designDueDate'">-->
<!-- <a-date-picker class="box-input"-->
<!-- :placeholder="$t('PleaseSelect')+$t('cutoffTime')"-->
<!-- @change="dateChange({db_field_name:'designDueDate'})"-->
<!-- format="YYYY-MM-DD"-->
<!-- :getCalendarContainer="(trigger) => trigger.parentNode"-->
<!-- v-model="formInline.designDueDate"-->
<!-- style="width: 100%"/>-->
<!-- </a-form-model-item>-->
<!-- </div>-->
<!-- </a-col>-->
<!-- </a-row>-->
<a-row :gutter="24" v-if="formInline.roleCodeIndex == 0 || <a-row :gutter="24" v-if="formInline.roleCodeIndex == 0 ||
(formInline.roleCodeIndex == 4 && formInline.designInitiatorId == formInline.homologationEngineerId && (formInline.roleCodeIndex == 4 && formInline.designInitiatorId == formInline.homologationEngineerId &&
formInline.homologationEngineerId == userInfoQuery.id) || formInline.homologationEngineerId == userInfoQuery.id) ||
@@ -475,171 +492,171 @@
</div> </div>
</a-col> </a-col>
</a-row> </a-row>
<div class="header-text" v-if="formInline.roleCodeIndex == 0 || <!-- <div class="header-text" v-if="formInline.roleCodeIndex == 0 ||-->
(formInline.roleCodeIndex == 4 && formInline.prehomoInitiatorId == formInline.homologationEngineerId && <!-- (formInline.roleCodeIndex == 4 && formInline.prehomoInitiatorId == formInline.homologationEngineerId &&-->
formInline.homologationEngineerId == userInfoQuery.id) || <!-- formInline.homologationEngineerId == userInfoQuery.id) ||-->
(formInline.roleCodeIndex == 4 && formInline.prehomoInitiatorId == formInline.regulationOwnerId && <!-- (formInline.roleCodeIndex == 4 && formInline.prehomoInitiatorId == formInline.regulationOwnerId &&-->
formInline.regulationOwnerId == userInfoQuery.id)"> <!-- formInline.regulationOwnerId == userInfoQuery.id)">-->
&nbsp;{{$t('PrehomoConfirmation')}} <!-- &nbsp;{{$t('PrehomoConfirmation')}}-->
</div> <!-- </div>-->
<a-row :gutter="24" v-if="formInline.roleCodeIndex == 0 || <!-- <a-row :gutter="24" v-if="formInline.roleCodeIndex == 0 ||-->
(formInline.roleCodeIndex == 4 && formInline.prehomoInitiatorId == formInline.homologationEngineerId && <!-- (formInline.roleCodeIndex == 4 && formInline.prehomoInitiatorId == formInline.homologationEngineerId &&-->
formInline.homologationEngineerId == userInfoQuery.id) || <!-- formInline.homologationEngineerId == userInfoQuery.id) ||-->
(formInline.roleCodeIndex == 4 && formInline.prehomoInitiatorId == formInline.regulationOwnerId && <!-- (formInline.roleCodeIndex == 4 && formInline.prehomoInitiatorId == formInline.regulationOwnerId &&-->
formInline.regulationOwnerId == userInfoQuery.id)"> <!-- formInline.regulationOwnerId == userInfoQuery.id)">-->
<a-col :span="12"> <!-- <a-col :span="12">-->
<div class="box-title-text"> <!-- <div class="box-title-text">-->
<div class="title-text"> <!-- <div class="title-text">-->
<span class="title-text-text" <!-- <span class="title-text-text"-->
:title="$t('Sponsor')">{{$t('Sponsor')}}</span> <!-- :title="$t('Sponsor')">{{$t('Sponsor')}}</span>-->
</div> <!-- </div>-->
<a-form-model-item class="itemModel" prop="prehomoInitiatorId"> <!-- <a-form-model-item class="itemModel" prop="prehomoInitiatorId">-->
<a-select :placeholder="$t('PleaseSelect')+$t('Sponsor')" <!-- <a-select :placeholder="$t('PleaseSelect')+$t('Sponsor')"-->
:disabled="formInline.roleCodeIndex == 0 ? false : true" <!-- :disabled="formInline.roleCodeIndex == 0 ? false : true"-->
class="box-input" <!-- class="box-input"-->
:getPopupContainer="triggerNode=> triggerNode.parentNode" <!-- :getPopupContainer="triggerNode=> triggerNode.parentNode"-->
allowClear <!-- allowClear-->
v-model="formInline.prehomoInitiatorId"> <!-- v-model="formInline.prehomoInitiatorId">-->
<a-select-option v-for="(item, key) in prehomoInitiatorList" <!-- <a-select-option v-for="(item, key) in prehomoInitiatorList"-->
:key="key" <!-- :key="key"-->
:value="item.value"> <!-- :value="item.value">-->
<span style="display: inline-block;width: 100%" :title=" item.name "> <!-- <span style="display: inline-block;width: 100%" :title=" item.name ">-->
{{ item.name }} <!-- {{ item.name }}-->
</span> <!-- </span>-->
</a-select-option> <!-- </a-select-option>-->
</a-select> <!-- </a-select>-->
<!-- <j-dict-select-tag class="box-input" v-model="formInline.prehomoInitiator"--> <!-- &lt;!&ndash; <j-dict-select-tag class="box-input" v-model="formInline.prehomoInitiator"&ndash;&gt;-->
<!-- :disabled="formInline.roleCode == 0 ? false : true"--> <!-- &lt;!&ndash; :disabled="formInline.roleCode == 0 ? false : true"&ndash;&gt;-->
<!-- @input="handleInput('prehomoInitiator')"--> <!-- &lt;!&ndash; @input="handleInput('prehomoInitiator')"&ndash;&gt;-->
<!-- :placeholder="$t('PleaseSelect')+$t('Sponsor')"--> <!-- &lt;!&ndash; :placeholder="$t('PleaseSelect')+$t('Sponsor')"&ndash;&gt;-->
<!-- :type="'select'"--> <!-- &lt;!&ndash; :type="'select'"&ndash;&gt;-->
<!-- :triggerChange="false" :dictCode="'fa1_qi3_ren2'"/>--> <!-- &lt;!&ndash; :triggerChange="false" :dictCode="'fa1_qi3_ren2'"/>&ndash;&gt;-->
</a-form-model-item> <!-- </a-form-model-item>-->
</div> <!-- </div>-->
</a-col> <!-- </a-col>-->
<a-col :span="12"> <!-- <a-col :span="12">-->
<div class="box-title-text"> <!-- <div class="box-title-text">-->
<div class="title-text"> <!-- <div class="title-text">-->
<span class="title-text-text" <!-- <span class="title-text-text"-->
:title="$t('personLiable')">{{$t('personLiable')}}</span> <!-- :title="$t('personLiable')">{{$t('personLiable')}}</span>-->
</div> <!-- </div>-->
<a-form-model-item class="itemModel" prop="prehomoDutyId"> <!-- <a-form-model-item class="itemModel" prop="prehomoDutyId">-->
<a-select :placeholder="$t('PleaseSelect')+$t('personLiable')" <!-- <a-select :placeholder="$t('PleaseSelect')+$t('personLiable')"-->
class="box-input" <!-- class="box-input"-->
allowClear <!-- allowClear-->
:getPopupContainer="triggerNode=> triggerNode.parentNode" <!-- :getPopupContainer="triggerNode=> triggerNode.parentNode"-->
v-model="formInline.prehomoDutyId"> <!-- v-model="formInline.prehomoDutyId">-->
<a-select-option v-for="(item, key) in prehomoDutyList" <!-- <a-select-option v-for="(item, key) in prehomoDutyList"-->
:key="key" <!-- :key="key"-->
:value="item.value"> <!-- :value="item.value">-->
<span style="display: inline-block;width: 100%" :title=" item.name "> <!-- <span style="display: inline-block;width: 100%" :title=" item.name ">-->
{{ item.name }} <!-- {{ item.name }}-->
</span> <!-- </span>-->
</a-select-option> <!-- </a-select-option>-->
</a-select> <!-- </a-select>-->
<!-- <j-dict-select-tag class="box-input" v-model="formInline.prehomoDuty"--> <!-- &lt;!&ndash; <j-dict-select-tag class="box-input" v-model="formInline.prehomoDuty"&ndash;&gt;-->
<!-- :disabled="formInline.roleCode == 0 ? false : true"--> <!-- &lt;!&ndash; :disabled="formInline.roleCode == 0 ? false : true"&ndash;&gt;-->
<!-- @input="handleInput('prehomoDuty')"--> <!-- &lt;!&ndash; @input="handleInput('prehomoDuty')"&ndash;&gt;-->
<!-- :placeholder="$t('PleaseSelect')+$t('personLiable')"--> <!-- &lt;!&ndash; :placeholder="$t('PleaseSelect')+$t('personLiable')"&ndash;&gt;-->
<!-- :type="'select'"--> <!-- &lt;!&ndash; :type="'select'"&ndash;&gt;-->
<!-- :triggerChange="false" :dictCode="'ze2_ren4_ren2'"/>--> <!-- &lt;!&ndash; :triggerChange="false" :dictCode="'ze2_ren4_ren2'"/>&ndash;&gt;-->
</a-form-model-item> <!-- </a-form-model-item>-->
</div> <!-- </div>-->
</a-col> <!-- </a-col>-->
</a-row> <!-- </a-row>-->
<a-row :gutter="24" v-if="formInline.roleCodeIndex == 0 || <!-- <a-row :gutter="24" v-if="formInline.roleCodeIndex == 0 ||-->
(formInline.roleCodeIndex == 4 && formInline.prehomoInitiatorId == formInline.homologationEngineerId && <!-- (formInline.roleCodeIndex == 4 && formInline.prehomoInitiatorId == formInline.homologationEngineerId &&-->
formInline.homologationEngineerId == userInfoQuery.id) || <!-- formInline.homologationEngineerId == userInfoQuery.id) ||-->
(formInline.roleCodeIndex == 4 && formInline.prehomoInitiatorId == formInline.regulationOwnerId && <!-- (formInline.roleCodeIndex == 4 && formInline.prehomoInitiatorId == formInline.regulationOwnerId &&-->
formInline.regulationOwnerId == userInfoQuery.id)"> <!-- formInline.regulationOwnerId == userInfoQuery.id)">-->
<a-col :span="12"> <!-- <a-col :span="12">-->
<div class="box-title-text"> <!-- <div class="box-title-text">-->
<div class="title-text"> <!-- <div class="title-text">-->
<span class="title-text-text" <!-- <span class="title-text-text"-->
:title="$t('cutoffTime')">{{$t('cutoffTime')}}</span> <!-- :title="$t('cutoffTime')">{{$t('cutoffTime')}}</span>-->
</div> <!-- </div>-->
<a-form-model-item class="itemModel" :prop="'prehomoDueDate'"> <!-- <a-form-model-item class="itemModel" :prop="'prehomoDueDate'">-->
<a-date-picker class="box-input" <!-- <a-date-picker class="box-input"-->
:placeholder="$t('PleaseSelect')+$t('cutoffTime')" <!-- :placeholder="$t('PleaseSelect')+$t('cutoffTime')"-->
@change="dateChange({db_field_name:'prehomoDueDate'})" <!-- @change="dateChange({db_field_name:'prehomoDueDate'})"-->
format="YYYY-MM-DD" <!-- format="YYYY-MM-DD"-->
:getCalendarContainer="(trigger) => trigger.parentNode" <!-- :getCalendarContainer="(trigger) => trigger.parentNode"-->
v-model="formInline.prehomoDueDate" <!-- v-model="formInline.prehomoDueDate"-->
style="width: 100%"/> <!-- style="width: 100%"/>-->
</a-form-model-item> <!-- </a-form-model-item>-->
</div> <!-- </div>-->
</a-col> <!-- </a-col>-->
</a-row> <!-- </a-row>-->
<a-row :gutter="24" v-if="formInline.roleCodeIndex == 0 || <!-- <a-row :gutter="24" v-if="formInline.roleCodeIndex == 0 ||-->
(formInline.roleCodeIndex == 4 && formInline.prehomoInitiatorId == formInline.homologationEngineerId && <!-- (formInline.roleCodeIndex == 4 && formInline.prehomoInitiatorId == formInline.homologationEngineerId &&-->
formInline.homologationEngineerId == userInfoQuery.id) || <!-- formInline.homologationEngineerId == userInfoQuery.id) ||-->
(formInline.roleCodeIndex == 4 && formInline.prehomoInitiatorId == formInline.regulationOwnerId && <!-- (formInline.roleCodeIndex == 4 && formInline.prehomoInitiatorId == formInline.regulationOwnerId &&-->
formInline.regulationOwnerId == userInfoQuery.id)"> <!-- formInline.regulationOwnerId == userInfoQuery.id)">-->
<a-col :span="12"> <!-- <a-col :span="12">-->
<div class="box-title-text"> <!-- <div class="box-title-text">-->
<div class="title-text"> <!-- <div class="title-text">-->
<span class="title-text-text" <!-- <span class="title-text-text"-->
:title="$t('typeOfDeliverables')">{{$t('typeOfDeliverables')}}</span> <!-- :title="$t('typeOfDeliverables')">{{$t('typeOfDeliverables')}}</span>-->
</div> <!-- </div>-->
<a-form-model-item class="itemModel" prop="prehomoDeliverableType"> <!-- <a-form-model-item class="itemModel" prop="prehomoDeliverableType">-->
<a-tree-select <!-- <a-tree-select-->
tree-node-filter-prop="title" <!-- tree-node-filter-prop="title"-->
v-model="formInline.prehomoDeliverableType" <!-- v-model="formInline.prehomoDeliverableType"-->
:maxTagCount="1" <!-- :maxTagCount="1"-->
:getPopupContainer="triggerNode=> triggerNode.parentNode" <!-- :getPopupContainer="triggerNode=> triggerNode.parentNode"-->
class="box-input" <!-- class="box-input"-->
style="width: 100%" <!-- style="width: 100%"-->
:tree-data="DeliverableTreeList" <!-- :tree-data="DeliverableTreeList"-->
tree-checkable <!-- tree-checkable-->
:placeholder="$t('PleaseSelect')+$t('typeOfDeliverables')" <!-- :placeholder="$t('PleaseSelect')+$t('typeOfDeliverables')"-->
/> <!-- />-->
<!-- <j-dict-select-tag class="box-input" v-model="formInline.prehomoDeliverableType"--> <!-- &lt;!&ndash; <j-dict-select-tag class="box-input" v-model="formInline.prehomoDeliverableType"&ndash;&gt;-->
<!-- :disabled="formInline.taskAffirmStatus != 'Not started' && !formInline.prehomoDeliverableType ? true : false"--> <!-- &lt;!&ndash; :disabled="formInline.taskAffirmStatus != 'Not started' && !formInline.prehomoDeliverableType ? true : false"&ndash;&gt;-->
<!-- @input="handleInput('prehomoDeliverableType')"--> <!-- &lt;!&ndash; @input="handleInput('prehomoDeliverableType')"&ndash;&gt;-->
<!-- :placeholder="$t('PleaseSelect')+$t('typeOfDeliverables')"--> <!-- &lt;!&ndash; :placeholder="$t('PleaseSelect')+$t('typeOfDeliverables')"&ndash;&gt;-->
<!-- :type="'select'"--> <!-- &lt;!&ndash; :type="'select'"&ndash;&gt;-->
<!-- :triggerChange="false" :dictCode="'deliverable_template'"/>--> <!-- &lt;!&ndash; :triggerChange="false" :dictCode="'deliverable_template'"/>&ndash;&gt;-->
</a-form-model-item> <!-- </a-form-model-item>-->
</div> <!-- </div>-->
</a-col> <!-- </a-col>-->
<a-col :span="12"> <!-- <a-col :span="12">-->
<div class="box-title-text"> <!-- <div class="box-title-text">-->
<div class="title-text"> <!-- <div class="title-text">-->
<span class="title-text-text" <!-- <span class="title-text-text"-->
:title="$t('deliverableTemplate')">{{$t('deliverableTemplate')}}</span> <!-- :title="$t('deliverableTemplate')">{{$t('deliverableTemplate')}}</span>-->
</div> <!-- </div>-->
<a-form-model-item class="itemModel" prop="prehomoDeliverableTemplate"> <!-- <a-form-model-item class="itemModel" prop="prehomoDeliverableTemplate">-->
<a-button type="primary" class="button-text" <!-- <a-button type="primary" class="button-text"-->
@click="clickButtonToUpload('prehomoDeliverableTemplate')"> <!-- @click="clickButtonToUpload('prehomoDeliverableTemplate')">-->
{{ (formInline.prehomoDeliverableTemplate === 'null' || formInline.prehomoDeliverableTemplate === '' <!-- {{ (formInline.prehomoDeliverableTemplate === 'null' || formInline.prehomoDeliverableTemplate === ''-->
|| <!-- ||-->
formInline.prehomoDeliverableTemplate == null) ? $t('clickUpload') : $t('viewUploadedFiles') <!-- formInline.prehomoDeliverableTemplate == null) ? $t('clickUpload') : $t('viewUploadedFiles')-->
}} <!-- }}-->
</a-button> <!-- </a-button>-->
</a-form-model-item> <!-- </a-form-model-item>-->
</div> <!-- </div>-->
</a-col> <!-- </a-col>-->
</a-row> <!-- </a-row>-->
<a-row :gutter="24" v-if="formInline.roleCodeIndex == 0 || <!-- <a-row :gutter="24" v-if="formInline.roleCodeIndex == 0 ||-->
(formInline.roleCodeIndex == 4 && formInline.prehomoInitiatorId == formInline.homologationEngineerId && <!-- (formInline.roleCodeIndex == 4 && formInline.prehomoInitiatorId == formInline.homologationEngineerId &&-->
formInline.homologationEngineerId == userInfoQuery.id) || <!-- formInline.homologationEngineerId == userInfoQuery.id) ||-->
(formInline.roleCodeIndex == 4 && formInline.prehomoInitiatorId == formInline.regulationOwnerId && <!-- (formInline.roleCodeIndex == 4 && formInline.prehomoInitiatorId == formInline.regulationOwnerId &&-->
formInline.regulationOwnerId == userInfoQuery.id)"> <!-- formInline.regulationOwnerId == userInfoQuery.id)">-->
<a-col :span="24"> <!-- <a-col :span="24">-->
<div class="box-title-text"> <!-- <div class="box-title-text">-->
<div class="title-text"> <!-- <div class="title-text">-->
<span class="title-text-text" <!-- <span class="title-text-text"-->
:title="$t('descriptionDeliverables')">{{$t('descriptionDeliverables')}}</span> <!-- :title="$t('descriptionDeliverables')">{{$t('descriptionDeliverables')}}</span>-->
</div> <!-- </div>-->
<a-form-model-item class="itemModel-text" :prop="'prehomoRemark'"> <!-- <a-form-model-item class="itemModel-text" :prop="'prehomoRemark'">-->
<a-textarea <!-- <a-textarea-->
style="width: 100%" <!-- style="width: 100%"-->
:placeholder="$t('PleaseEnter')+$t('descriptionDeliverables')" <!-- :placeholder="$t('PleaseEnter')+$t('descriptionDeliverables')"-->
v-model="formInline.prehomoRemark" :rows="4"/> <!-- v-model="formInline.prehomoRemark" :rows="4"/>-->
</a-form-model-item> <!-- </a-form-model-item>-->
</div> <!-- </div>-->
</a-col> <!-- </a-col>-->
</a-row> <!-- </a-row>-->
<div class="header-text" v-if="formInline.roleCodeIndex == 0 || <div class="header-text" v-if="formInline.roleCodeIndex == 0 ||
(formInline.roleCodeIndex == 4 && formInline.verifyInitiatorId == formInline.homologationEngineerId && (formInline.roleCodeIndex == 4 && formInline.verifyInitiatorId == formInline.homologationEngineerId &&
formInline.homologationEngineerId == userInfoQuery.id) || formInline.homologationEngineerId == userInfoQuery.id) ||
@@ -652,36 +669,6 @@
formInline.homologationEngineerId == userInfoQuery.id) || formInline.homologationEngineerId == userInfoQuery.id) ||
(formInline.roleCodeIndex == 4 && formInline.verifyInitiatorId == formInline.regulationOwnerId && (formInline.roleCodeIndex == 4 && formInline.verifyInitiatorId == formInline.regulationOwnerId &&
formInline.regulationOwnerId == userInfoQuery.id)"> formInline.regulationOwnerId == userInfoQuery.id)">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('Sponsor')">{{$t('Sponsor')}}</span>
</div>
<a-form-model-item class="itemModel" prop="verifyInitiatorId">
<a-select :placeholder="$t('PleaseSelect')+$t('Sponsor')"
class="box-input"
allowClear
:getPopupContainer="triggerNode=> triggerNode.parentNode"
:disabled="formInline.roleCodeIndex == 0 ? false : true"
v-model="formInline.verifyInitiatorId">
<a-select-option v-for="(item, key) in verifyInitiatorList"
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.name ">
{{ item.name }}
</span>
</a-select-option>
</a-select>
<!-- <j-dict-select-tag class="box-input" v-model="formInline.verifyInitiator"-->
<!-- :disabled="formInline.roleCode == 0 ? false : true"-->
<!-- @input="handleInput('verifyInitiator')"-->
<!-- :placeholder="$t('PleaseSelect')+$t('Sponsor')"-->
<!-- :type="'select'"-->
<!-- :triggerChange="false" :dictCode="'fa1_qi3_ren2'"/>-->
</a-form-model-item>
</div>
</a-col>
<a-col :span="12"> <a-col :span="12">
<div class="box-title-text"> <div class="box-title-text">
<div class="title-text"> <div class="title-text">
@@ -711,12 +698,6 @@
</a-form-model-item> </a-form-model-item>
</div> </div>
</a-col> </a-col>
</a-row>
<a-row :gutter="24" v-if="formInline.roleCodeIndex == 0 ||
(formInline.roleCodeIndex == 4 && formInline.verifyInitiatorId == formInline.homologationEngineerId &&
formInline.homologationEngineerId == userInfoQuery.id) ||
(formInline.roleCodeIndex == 4 && formInline.verifyInitiatorId == formInline.regulationOwnerId &&
formInline.regulationOwnerId == userInfoQuery.id)">
<a-col :span="12"> <a-col :span="12">
<div class="box-title-text"> <div class="box-title-text">
<div class="title-text"> <div class="title-text">
@@ -734,7 +715,44 @@
</a-form-model-item> </a-form-model-item>
</div> </div>
</a-col> </a-col>
<!-- <a-col :span="12">-->
<!-- <div class="box-title-text">-->
<!-- <div class="title-text">-->
<!-- <span class="title-text-text"-->
<!-- :title="$t('Sponsor')">{{$t('Sponsor')}}</span>-->
<!-- </div>-->
<!-- <a-form-model-item class="itemModel" prop="verifyInitiatorId">-->
<!-- <a-select :placeholder="$t('PleaseSelect')+$t('Sponsor')"-->
<!-- class="box-input"-->
<!-- allowClear-->
<!-- :getPopupContainer="triggerNode=> triggerNode.parentNode"-->
<!-- :disabled="formInline.roleCodeIndex == 0 ? false : true"-->
<!-- v-model="formInline.verifyInitiatorId">-->
<!-- <a-select-option v-for="(item, key) in verifyInitiatorList"-->
<!-- :key="key"-->
<!-- :value="item.value">-->
<!-- <span style="display: inline-block;width: 100%" :title=" item.name ">-->
<!-- {{ item.name }}-->
<!-- </span>-->
<!-- </a-select-option>-->
<!-- </a-select>-->
<!-- &lt;!&ndash; <j-dict-select-tag class="box-input" v-model="formInline.verifyInitiator"&ndash;&gt;-->
<!-- &lt;!&ndash; :disabled="formInline.roleCode == 0 ? false : true"&ndash;&gt;-->
<!-- &lt;!&ndash; @input="handleInput('verifyInitiator')"&ndash;&gt;-->
<!-- &lt;!&ndash; :placeholder="$t('PleaseSelect')+$t('Sponsor')"&ndash;&gt;-->
<!-- &lt;!&ndash; :type="'select'"&ndash;&gt;-->
<!-- &lt;!&ndash; :triggerChange="false" :dictCode="'fa1_qi3_ren2'"/>&ndash;&gt;-->
<!-- </a-form-model-item>-->
<!-- </div>-->
<!-- </a-col>-->
</a-row> </a-row>
<!-- <a-row :gutter="24" v-if="formInline.roleCodeIndex == 0 ||-->
<!-- (formInline.roleCodeIndex == 4 && formInline.verifyInitiatorId == formInline.homologationEngineerId &&-->
<!-- formInline.homologationEngineerId == userInfoQuery.id) ||-->
<!-- (formInline.roleCodeIndex == 4 && formInline.verifyInitiatorId == formInline.regulationOwnerId &&-->
<!-- formInline.regulationOwnerId == userInfoQuery.id)">-->
<!-- -->
<!-- </a-row>-->
<a-row :gutter="24" v-if="formInline.roleCodeIndex == 0 || <a-row :gutter="24" v-if="formInline.roleCodeIndex == 0 ||
(formInline.roleCodeIndex == 4 && formInline.verifyInitiatorId == formInline.homologationEngineerId && (formInline.roleCodeIndex == 4 && formInline.verifyInitiatorId == formInline.homologationEngineerId &&
formInline.homologationEngineerId == userInfoQuery.id) || formInline.homologationEngineerId == userInfoQuery.id) ||
@@ -804,95 +822,95 @@
</div> </div>
</a-col> </a-col>
</a-row> </a-row>
<div class="header-text" v-if="rejectCauseList && rejectCauseList.length > 0"> <!-- <div class="header-text" v-if="rejectCauseList && rejectCauseList.length > 0">-->
{{$t('listConfirmationRejectionReason')}} <!-- {{$t('listConfirmationRejectionReason')}}-->
</div> <!-- </div>-->
<div v-if="rejectCauseList && rejectCauseList.length > 0" <!-- <div v-if="rejectCauseList && rejectCauseList.length > 0"-->
v-for="(item,index) in rejectCauseList"> <!-- v-for="(item,index) in rejectCauseList">-->
<a-row :gutter="24"> <!-- <a-row :gutter="24">-->
<a-col :span="12"> <!-- <a-col :span="12">-->
<div class="box-title-text"> <!-- <div class="box-title-text">-->
<div class="title-text"> <!-- <div class="title-text">-->
<span class="title-text-text" <!-- <span class="title-text-text"-->
:title="$t('rejectedBy')">{{$t('rejectedBy')}}</span> <!-- :title="$t('rejectedBy')">{{$t('rejectedBy')}}</span>-->
</div> <!-- </div>-->
<div class="itemModel-reject"> <!-- <div class="itemModel-reject">-->
{{item.createBy ? item.createBy : '--'}} <!-- {{item.createBy ? item.createBy : '&#45;&#45;'}}-->
</div> <!-- </div>-->
</div> <!-- </div>-->
</a-col> <!-- </a-col>-->
<a-col :span="12"> <!-- <a-col :span="12">-->
<div class="box-title-text"> <!-- <div class="box-title-text">-->
<div class="title-text"> <!-- <div class="title-text">-->
<span class="title-text-text" <!-- <span class="title-text-text"-->
:title="$t('rejectionTime')">{{$t('rejectionTime')}}</span> <!-- :title="$t('rejectionTime')">{{$t('rejectionTime')}}</span>-->
</div> <!-- </div>-->
<div class="itemModel-reject"> <!-- <div class="itemModel-reject">-->
{{item.rejectTime ? item.rejectTime : '--'}} <!-- {{item.rejectTime ? item.rejectTime : '&#45;&#45;'}}-->
</div> <!-- </div>-->
</div> <!-- </div>-->
</a-col> <!-- </a-col>-->
</a-row> <!-- </a-row>-->
<a-row :gutter="24"> <!-- <a-row :gutter="24">-->
<a-col :span="24"> <!-- <a-col :span="24">-->
<div class="box-title-text"> <!-- <div class="box-title-text">-->
<div class="title-text"> <!-- <div class="title-text">-->
<span class="title-text-text" <!-- <span class="title-text-text"-->
:title="$t('rejectReason')">{{$t('rejectReason')}}</span> <!-- :title="$t('rejectReason')">{{$t('rejectReason')}}</span>-->
</div> <!-- </div>-->
<div class="itemModel-reject"> <!-- <div class="itemModel-reject">-->
{{item.rejectCause ? item.rejectCause : '--'}} <!-- {{item.rejectCause ? item.rejectCause : '&#45;&#45;'}}-->
</div> <!-- </div>-->
</div> <!-- </div>-->
</a-col> <!-- </a-col>-->
</a-row> <!-- </a-row>-->
</div> <!-- </div>-->
<div class="header-text" v-if="rejectCauseListOne && rejectCauseListOne.length > 0"> <!-- <div class="header-text" v-if="rejectCauseListOne && rejectCauseListOne.length > 0">-->
{{$t('taskConfirmationRejectionReason')}} <!-- {{$t('taskConfirmationRejectionReason')}}-->
</div> <!-- </div>-->
<div v-if="rejectCauseListOne && rejectCauseListOne.length > 0" <!-- <div v-if="rejectCauseListOne && rejectCauseListOne.length > 0"-->
v-for="(item,index) in rejectCauseListOne"> <!-- v-for="(item,index) in rejectCauseListOne">-->
<a-row :gutter="24"> <!-- <a-row :gutter="24">-->
<a-col :span="12"> <!-- <a-col :span="12">-->
<div class="box-title-text"> <!-- <div class="box-title-text">-->
<div class="title-text"> <!-- <div class="title-text">-->
<span class="title-text-text" <!-- <span class="title-text-text"-->
:title="$t('rejectedBy')">{{$t('rejectedBy')}}</span> <!-- :title="$t('rejectedBy')">{{$t('rejectedBy')}}</span>-->
</div> <!-- </div>-->
<div class="itemModel-reject"> <!-- <div class="itemModel-reject">-->
{{item.createBy ? item.createBy : '--'}} <!-- {{item.createBy ? item.createBy : '&#45;&#45;'}}-->
</div> <!-- </div>-->
</div> <!-- </div>-->
</a-col> <!-- </a-col>-->
<a-col :span="12"> <!-- <a-col :span="12">-->
<div class="box-title-text"> <!-- <div class="box-title-text">-->
<div class="title-text"> <!-- <div class="title-text">-->
<span class="title-text-text" <!-- <span class="title-text-text"-->
:title="$t('rejectionTime')">{{$t('rejectionTime')}}</span> <!-- :title="$t('rejectionTime')">{{$t('rejectionTime')}}</span>-->
</div> <!-- </div>-->
<div class="itemModel-reject"> <!-- <div class="itemModel-reject">-->
{{item.rejectTime ? item.rejectTime : '--'}} <!-- {{item.rejectTime ? item.rejectTime : '&#45;&#45;'}}-->
</div> <!-- </div>-->
</div> <!-- </div>-->
</a-col> <!-- </a-col>-->
</a-row> <!-- </a-row>-->
<a-row :gutter="24"> <!-- <a-row :gutter="24">-->
<a-col :span="24"> <!-- <a-col :span="24">-->
<div class="box-title-text"> <!-- <div class="box-title-text">-->
<div class="title-text"> <!-- <div class="title-text">-->
<span class="title-text-text" <!-- <span class="title-text-text"-->
:title="$t('rejectReason')">{{$t('rejectReason')}}</span> <!-- :title="$t('rejectReason')">{{$t('rejectReason')}}</span>-->
</div> <!-- </div>-->
<div class="itemModel-reject"> <!-- <div class="itemModel-reject">-->
{{item.rejectCause ? item.rejectCause : '--'}} <!-- {{item.rejectCause ? item.rejectCause : '&#45;&#45;'}}-->
</div> <!-- </div>-->
</div> <!-- </div>-->
</a-col> <!-- </a-col>-->
</a-row> <!-- </a-row>-->
</div> <!-- </div>-->
</a-form-model> </a-form-model>
</a-spin> </a-spin>
<div class="drawer-bootom-button"> <div class="drawer-bootom-button">
@@ -97,7 +97,19 @@
<!-- v-if="(isRoleSwitching && !isDisplay) || (!isDisplay && roleSwitchingList.length > 1) || isDisplay"--> <!-- v-if="(isRoleSwitching && !isDisplay) || (!isDisplay && roleSwitchingList.length > 1) || isDisplay"-->
<div class="table-operator" <div class="table-operator"
style="overflow:hidden;margin-bottom: 20px"> style="overflow:hidden;margin-bottom: 20px">
<div style="float: right;margin-top: 1px; margin-left: 20px"> <div style="float: left;margin-bottom: 0px;margin-left: 20px" v-if="isDisplay">
<div @click="transferClick" class="operator-text">
<a-icon type="profile" />
{{ $t('Transfer') }}
</div>
<div class="operator-text" @click="bringInRelevantPersonnelClick">
<a-icon type="user" />
{{ $t('bringInRelevantPersonnel') }}
</div>
<div class="operator-text" @click="batSettingClick">
<a-icon type="setting" />
{{ $t('BatchSetting') }}
</div>
<a-popconfirm :visible="customizevisible" overlayClassName="popconfirmmize" placement="bottomRight"> <a-popconfirm :visible="customizevisible" overlayClassName="popconfirmmize" placement="bottomRight">
<template slot="title" id="popconfirmmize"> <template slot="title" id="popconfirmmize">
<div style="height:320px;overflow:scroll;overflow-x: auto;"> <div style="height:320px;overflow:scroll;overflow-x: auto;">
@@ -126,64 +138,52 @@
{{ $t('customize') }} {{ $t('customize') }}
</div> </div>
</a-popconfirm> </a-popconfirm>
</div>
<div style="float: left;margin-bottom: 0px;margin-left: 20px" v-if="isDisplay">
<div class="operator-text" @click="initiateListConfirmationcClick('清单')">
<a-icon type="solution" />
{{ $t('initiateListConfirmation') }}
</div>
<div class="operator-text" @click="initiateTaskConfirmationClick('任务')">
<a-icon type="file-protect" />
{{ $t('initiateTaskConfirmation') }}
</div>
</div>
<div style="float: right;margin-top: 1px;;margin-right: 20px" v-if="isDisplay">
<a-popconfirm overlayClassName="popconfirm" placement="bottomRight"> <a-popconfirm overlayClassName="popconfirm" placement="bottomRight">
<template slot="title" id="popconfirm"> <template slot="title" id="popconfirm">
<div style="height:320px;overflow:scroll;overflow-x: auto;"> <div style="height:320px;overflow:scroll;overflow-x: auto;">
<div class="operator-text-title"> <div @click="handleAdd" class="operator-text-title">
<ImportFile :url="url" :projectLibraryId=$route.query.id :isTrue="true" :accept="'.zip'" <a-icon type="plus" />
@getList="getPersonnelList" /> {{ $t('add') }}
</div> </div>
<div @click="handleModule" class="operator-text-title"> <div @click="copyClick" class="operator-text-title">
<a-icon type="download" /> <a-icon type="copy" />
{{ $t('templateDownload') }} {{ $t('copy') }}
</div>
<div @click="handleExport" v-has="'projectLawsInventory:exportData'" class="operator-text-title">
<a-icon type="export" :rotate="-90" />
{{ $t('export') }}
</div> </div>
<div @click="handleDel" class="operator-text-title"> <div @click="handleDel" class="operator-text-title">
<a-icon type="delete" /> <a-icon type="delete" />
{{ $t('BatchDelete') }} {{ $t('BatchDelete') }}
</div> </div>
<div class="operator-text-title" @click="ExportReportClick"> <div @click="handleModule" class="operator-text-title">
<a-icon type="download" />
{{ $t('templateDownload') }}
</div>
<div class="operator-text-title">
<ImportFile :url="url" :projectLibraryId=$route.query.id :isTrue="true" :accept="'.zip'"
@getList="getPersonnelList" />
</div>
<div @click="handleExport" v-has="'projectLawsInventory:exportData'" class="operator-text-title">
<a-icon type="export" :rotate="-90" /> <a-icon type="export" :rotate="-90" />
{{ $t('ExportReport') }} {{ $t('export') }}
</div>
<div class="operator-text-title" @click="batSettingClick">
<a-icon type="setting" />
{{ $t('batchSettingInformation') }}
</div>
<div class="operator-text-title" @click="batchSettingPersonnelClick">
<a-icon type="setting" />
{{ $t('batchSettingPersonnel') }}
</div>
<div class="operator-text-title" @click="questionClick">
<a-icon type="sound" />
{{ $t('question') }}
</div>
<div class="operator-text-title" @click="alterationClick">
<a-icon type="file-search" />
{{ $t('alteration') }}
</div> </div>
<div class="operator-text-title" @click="fixedPlateClick"> <div class="operator-text-title" @click="fixedPlateClick">
<a-icon type="pushpin" /> <a-icon type="pushpin" />
{{ $t('fixedPlate') }} {{ $t('fixedPlate') }}
</div> </div>
<div @click="copyClick" class="operator-text-title"> <div class="operator-text-title" @click="ExportReportClick">
<a-icon type="copy" /> <a-icon type="export" :rotate="-90" />
{{ $t('copy') }} {{ $t('compliancereport') }}
</div>
<!-- <div class="operator-text-title" @click="batSettingClick">-->
<!-- <a-icon type="setting" />-->
<!-- {{ $t('batchSettingInformation') }}-->
<!-- </div>-->
<!-- <div class="operator-text-title" @click="batchSettingPersonnelClick">-->
<!-- <a-icon type="setting" />-->
<!-- {{ $t('batchSettingPersonnel') }}-->
<!-- </div>-->
<div class="operator-text-title" @click="alterationClick">
<a-icon type="file-search" />
{{ $t('processReset') }}
</div> </div>
</div> </div>
</template> </template>
@@ -191,21 +191,28 @@
<span style="position: absolute;left: -13px;top: -4px">...</span>{{ $t('more') }} <span style="position: absolute;left: -13px;top: -4px">...</span>{{ $t('more') }}
</div> </div>
</a-popconfirm> </a-popconfirm>
<!-- <div class="operator-text" @click="initiateTaskConfirmationClick('任务')">-->
<!-- <a-icon type="file-protect" />-->
<!-- {{ $t('initiateTaskConfirmation') }}-->
<!-- </div>-->
</div>
<div style="float: right;margin-top: 1px;;margin-right: 20px" v-if="isDisplay">
<!-- <div class="operator-text" @click="customizeClick">--> <!-- <div class="operator-text" @click="customizeClick">-->
<!-- <a-icon type="setting"/>--> <!-- <a-icon type="setting"/>-->
<!-- {{ $t('customize') }}--> <!-- {{ $t('customize') }}-->
<!-- </div>--> <!-- </div>-->
<div class="operator-text" @click="bringInRelevantPersonnelClick"> <div class="operator-text" @click="initiateListConfirmationcClick('清单')">
<a-icon type="user" /> <a-icon type="solution" />
{{ $t('bringInRelevantPersonnel') }} {{ $t('release') }}
</div> </div>
<div @click="transferClick" class="operator-text"> <div class="operator-text" @click="withdrawnClick">
<a-icon type="profile" /> <a-icon type="rollback" />
{{ $t('Transfer') }} {{ $t('withdraw') }}
</div> </div>
<div @click="handleAdd" class="operator-text"> <div class="operator-text" @click="questionClick">
<a-icon type="plus" /> <a-icon type="sound" />
{{ $t('add') }} {{ $t('question') }}
</div> </div>
<!-- <div class="operator-text"--> <!-- <div class="operator-text"-->
<!-- v-if="roleSwitchingList.length > 1"--> <!-- v-if="roleSwitchingList.length > 1"-->
@@ -229,10 +236,7 @@
<a-icon type="close-circle" /> <a-icon type="close-circle" />
{{ $t('overrule') }} {{ $t('overrule') }}
</div> </div>
<div class="operator-text" @click="batSettingClick" v-if="isRoleSwitching">
<a-icon type="setting" />
{{ $t('batchSettingInformation') }}
</div>
<!-- <div class="operator-text"--> <!-- <div class="operator-text"-->
<!-- v-if="roleSwitchingList.length > 1"--> <!-- v-if="roleSwitchingList.length > 1"-->
<!-- @click="roleSwitchingClick">--> <!-- @click="roleSwitchingClick">-->
@@ -1545,7 +1549,7 @@ export default {
this.$message.warning(this.$t('OnlyOneSelected')) this.$message.warning(this.$t('OnlyOneSelected'))
} else { } else {
let serialNumber = this.selectedRowKeysList[0].serialNumber let serialNumber = this.selectedRowKeysList[0].serialNumber
downloadFile(this.url.ExportReportUrl, this.$t('listOfRegulations') + this.$t('ExportReport') + '-' + serialNumber + '.docx', { id: selectedRowKeys.join(',') }) downloadFile(this.url.ExportReportUrl, this.$t('listOfRegulations') + this.$t('compliancereport') + '-' + serialNumber + '.docx', { id: selectedRowKeys.join(',') })
} }
}, },
handleExport() { handleExport() {
@@ -1645,6 +1649,10 @@ export default {
} else { } else {
this.$message.warning(this.$t('selectLeastOne')) this.$message.warning(this.$t('selectLeastOne'))
} }
},
// 撤回
withdrawnClick(){
}, },
questionClick() { questionClick() {
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) { if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
@@ -28,6 +28,9 @@
</a> </a>
<span v-else>--</span> <span v-else>--</span>
</span> </span>
<span slot="taskStatus" slot-scope="text,record">
<span>{{text ? text : '--'}}</span>
</span>
</a-table> </a-table>
<div class="page" v-if="dataSource && dataSource.length > 0"> <div class="page" v-if="dataSource && dataSource.length > 0">
<a-pagination <a-pagination
@@ -99,7 +102,8 @@
align: 'left', align: 'left',
dataIndex: 'statusShow', dataIndex: 'statusShow',
ellipsis: true, ellipsis: true,
width: 170 width: 170,
scopedSlots: { customRender: 'taskStatus' }
}, },
{ {
title: this.$t('operation'), title: this.$t('operation'),
@@ -174,6 +178,19 @@
} }
}) })
window.open(newUrl.href, '_blank') window.open(newUrl.href, '_blank')
}else if (row.flowType == '21') {
let newUrl = this.$router.resolve({
path: '/ProjectDetails',
query: {
id: row.projectLibraryId,
projectName: row.projectName,
projectNameId: row.projectNameId,
targetMarket: row.targetMarket,
studioEngineer: row.studioEngineer,
type: '106'
}
})
window.open(newUrl.href, '_blank')
} else if (row.flowType == '2') { } else if (row.flowType == '2') {
row.taskId = row.taskId + '' row.taskId = row.taskId + ''
if (row.taskId.length > 30) { if (row.taskId.length > 30) {
@@ -316,7 +316,7 @@ export default {
item.state = 2 item.state = 2
content = this.$t('confirmWithdraw') content = this.$t('confirmWithdraw')
} }
item.id = val.id item.ids = val.id
let _this = this let _this = this
this.$confirm({ this.$confirm({
content: content, content: content,
@@ -187,6 +187,7 @@
:scroll="{x: '100%',y:'calc(100vh - 356px)'}" :scroll="{x: '100%',y:'calc(100vh - 356px)'}"
rowKey="id" rowKey="id"
:data-source="dataSource" :data-source="dataSource"
@change="tableOnChange"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:columns="columns"> :columns="columns">
<span slot="item" slot-scope="text,record"> <span slot="item" slot-scope="text,record">
@@ -520,13 +521,32 @@ export default {
editModelList() { editModelList() {
this.getList() this.getList()
}, },
tableOnChange(pagination, filters, sorter) {
this.orderBy = sorter.order == 'ascend' ? '1' : '2'
if(sorter.columnKey == 'shi4Yong4Fan4Wei2_dictText'){
this.orderByField = 'shi4Yong4Fan4Wei2'
} else if(sorter.columnKey == 'state_dictText') {
this.orderByField = 'state'
} else if(sorter.columnKey == 'xin1Che1Xing2Shi2Shi1Ri4Qi1') {
this.orderByField = 'xin1_che1_xing2_shi2_shi1_ri4_qi1'
} else if(sorter.columnKey == 'implementTime') {
this.orderByField = 'implement_time'
} else if(sorter.columnKey == 'dutyTerritory_dictText') {
this.orderByField = 'dutyTerritory'
} else if(sorter.columnKey == 'attestationRank_dictText') {
this.orderByField = 'attestationRank'
} else{
this.orderByField = sorter.columnKey
}
this.getList()
},
getList() { getList() {
let query = { let query = {
...this.queryParam, ...this.queryParam,
...this.queryParamQuery, ...this.queryParamQuery,
orderBy: this.orderBy, orderBy: this.orderBy,
orderByField: this.orderByField, orderByField: this.orderByField,
dummyInventoryBaseId: this.$route.query.id authDummyInventoryBaseId: this.$route.query.id
} }
this.loading = true this.loading = true
getAction(this.url.list,query).then((res) => { getAction(this.url.list,query).then((res) => {