Merge remote-tracking branch 'origin/dev_2nd_LCYH' into dev_2nd_LCYH
This commit is contained in:
+2
-1
@@ -13,7 +13,8 @@ public enum MessageType2Enum {
|
|||||||
VALIDATION_COMPLIANCE_CONFIRMATION("Validation Compliance Confirmation","验证符合性确认"),
|
VALIDATION_COMPLIANCE_CONFIRMATION("Validation Compliance Confirmation","验证符合性确认"),
|
||||||
REGULATION_OPINION_COLLECTION("Regulation Opinion Collection","法规意见收集"),
|
REGULATION_OPINION_COLLECTION("Regulation Opinion Collection","法规意见收集"),
|
||||||
REGULATION_TECHNICAL_ASSESSMENT("Regulation Technical Assessment","法规技术评估"),
|
REGULATION_TECHNICAL_ASSESSMENT("Regulation Technical Assessment","法规技术评估"),
|
||||||
HOMO_PARAMETER_COLLECTION("Homo Parameter Collection","认证参数收集");
|
HOMO_PARAMETER_COLLECTION("Homo Parameter Collection","认证参数收集"),
|
||||||
|
CERTIFICATION_LIST_CONFIRMATION("Certification List Confirmation","认证清单确认");
|
||||||
|
|
||||||
String en;
|
String en;
|
||||||
String cn;
|
String cn;
|
||||||
|
|||||||
+129
@@ -0,0 +1,129 @@
|
|||||||
|
package com.jero.modules.feishu.enums;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 飞书消息模板枚举类 由于开发分支问题,此枚举只在认证清单流程中使用, 与 TemplateInfoEnum 作用一样
|
||||||
|
*/
|
||||||
|
public enum TemplateInfoEnum2 {
|
||||||
|
|
||||||
|
// 认证消息
|
||||||
|
CERTIFICATION_MESSAGE1("stuido催办,认证工程师收到消息","ctp_AAuDmU58lKqB"),
|
||||||
|
// HOME_PARAMETER_COLLECTION2("工程接口人下发参数,填写人接收任务","ctp_AAfv49aET4Rn"),
|
||||||
|
// HOME_PARAMETER_COLLECTION3("工程接口人退回,通知认证工程师","ctp_AAfvQy0bsb6Y"),
|
||||||
|
// HOME_PARAMETER_COLLECTION4("填写人退回,通知工程接口人","ctp_AAfK3TvbkTLq"),
|
||||||
|
// HOME_PARAMETER_COLLECTION5("您的参数收集任务还有7天到期,请及时查看处理","ctp_AAfvdg0Cx6yN"),
|
||||||
|
// HOME_PARAMETER_COLLECTION6("您的参数收集任务已被XXX重新分发给XXX","ctp_AAfvKkz192fn"),
|
||||||
|
// HOME_PARAMETER_COLLECTION7(" 您的参数收集任务已被XXX撤回","ctp_AAfK2oTpFn9M"),
|
||||||
|
// HOME_PARAMETER_COLLECTION8(" 您的参数收集任务还有3天到期,请及时查看处理","ctp_AAft9XcQbrlT"),
|
||||||
|
// HOME_PARAMETER_COLLECTION9(" 您的参数收集任务将于今天到期,请及时查看处理","ctp_AAfefHo8thrQ"),
|
||||||
|
//
|
||||||
|
// REGULATION_TECHNICAL_ASSESSMENT1("法规技术评估发起提醒评估人","ctp_AAf2qRfouGcc"),
|
||||||
|
// REGULATION_TECHNICAL_ASSESSMENT2("评估人提交通知发起人审批","ctp_AAfvKkz1xSd7"),
|
||||||
|
// REGULATION_TECHNICAL_ASSESSMENT3("发起人审查通过,通知评估人","ctp_AAfK2oTpRGSa"),
|
||||||
|
// REGULATION_TECHNICAL_ASSESSMENT4("发起人审查退回,评估人接收 - 任务","ctp_AAfK2oTp4Mir"),
|
||||||
|
// REGULATION_TECHNICAL_ASSESSMENT5("任务提醒,评估人接收-任务 到期前三天","ctp_AAfvKkz1bozO"),
|
||||||
|
// REGULATION_TECHNICAL_ASSESSMENT6("任务提醒,评估人接收-任务 当天","ctp_AAf2qRforjyP"),
|
||||||
|
//
|
||||||
|
// REGULATION_OPINION_COLLECTION1("法规意见收集发起提醒评估人","ctp_AAftzD2mN9jr"),
|
||||||
|
// REGULATION_OPINION_COLLECTION2("任务提醒,评估人接收-任务 到期前三天","ctp_AAfK2oTpzhDX"),
|
||||||
|
// REGULATION_OPINION_COLLECTION3("任务提醒,评估人接收-任务 当天","ctp_AAfefHo8XrBl"),
|
||||||
|
// REGULATION_OPINION_COLLECTION4("评估人提交通知发起人","ctp_AAft9XcQW1lV"),
|
||||||
|
// REGULATION_OPINION_COLLECTION5("任务完成当天通知发起人","ctp_AAftJ7q0YClP"),
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// SUBSCRIPTION_NOTIFICATION1("虚拟清单订阅更新","ctp_AAfRLrOqGiF9"),
|
||||||
|
// SUBSCRIPTION_NOTIFICATION2("法规领域订阅更新","ctp_AAfvdg0Cy90I"),
|
||||||
|
// SUBSCRIPTION_NOTIFICATION3("虚拟清单订阅更新","ctp_AAfRLrOqGiF9"),
|
||||||
|
//
|
||||||
|
// SHARE_FORWARD1("转发推送","ctp_AAfdBUtdLJog"),
|
||||||
|
// SHARE_FORWARD2("问题知识库转发推送","ctp_AAfvQy0brRtq"),
|
||||||
|
// SHARE_FORWARD3("问题知识库评论信息","ctp_AAf2qRfosO2P"),
|
||||||
|
//
|
||||||
|
// REGULATION_EARLY_WARNING1("订阅法规预警","ctp_AAfvQy0br1R7"),
|
||||||
|
// REGULATION_EARLY_WARNING2("预警信息分享","ctp_AAfK3TvbktC9"),
|
||||||
|
//
|
||||||
|
// REGULATION_LIST_CONFIRMATION1("Studio发起,法规/认证接收-任务","ctp_AAfdBUtdpKCX"),
|
||||||
|
// REGULATION_LIST_CONFIRMATION2("任务提醒,法规认证接收-任务","ctp_AAftzD2mK31z"),
|
||||||
|
// REGULATION_LIST_CONFIRMATION3("状态通知,Studio接收/法规拒绝","ctp_AAftzD2mK7e6"),
|
||||||
|
// REGULATION_LIST_CONFIRMATION4("状态通知,Studio接收/认证拒绝","ctp_AAfvdg0C4OXb"),
|
||||||
|
//
|
||||||
|
// REGULATION_TASK_CONFIRMATION1("发起,工程接口人接收-任务","ctp_AAfvdg0C4qSM"),
|
||||||
|
// REGULATION_TASK_CONFIRMATION2("询问工程师,工程师接收-任务","ctp_AAftJ7q0OgGw"),
|
||||||
|
// REGULATION_TASK_CONFIRMATION3("工程师退回,接口人接收消息-任务","ctp_AAftzD2meZ6I"),
|
||||||
|
// REGULATION_TASK_CONFIRMATION4("工程师提交,接口人接收消息-任务","ctp_AAftJ7q0O8yL"),
|
||||||
|
// REGULATION_TASK_CONFIRMATION5("任务提醒,工程接口人接收-任务 3天前","ctp_AAfvdg0CdIu8"),
|
||||||
|
// REGULATION_TASK_CONFIRMATION6("任务提醒,工程接口人接收-任务 当天","ctp_AAftzD2mtsoN"),
|
||||||
|
// REGULATION_TASK_CONFIRMATION7("任务提醒,工程接口人接收-任务 逾期之后 3天,7天,14天通知","ctp_AAfvKkz1QK9Z"),
|
||||||
|
// REGULATION_TASK_CONFIRMATION8("任务提醒,工程接口人接收-任务 催办","ctp_AAf2qRfog8ey"),
|
||||||
|
// REGULATION_TASK_CONFIRMATION9("状态提醒,Studio接收","ctp_AAfK2oTpd2de"),
|
||||||
|
//
|
||||||
|
// DESIGN_COMPLIANCE_CONFIRMATION1("设计符合性任务,责任人接收-任务","ctp_AAftJ7q0YuC7"),
|
||||||
|
// DESIGN_COMPLIANCE_CONFIRMATION2("责任人下发工程师,工程师接收-任务责任人下发工程师,工程师接收-任务","ctp_AAft9XcQP4Qi"),
|
||||||
|
// DESIGN_COMPLIANCE_CONFIRMATION3("责任人催办,工程师接收-任务","ctp_AAfvdg0Czw0L"),
|
||||||
|
// DESIGN_COMPLIANCE_CONFIRMATION4("工程师提交反馈,责任人接收-任务","ctp_AAft9XcQTO27"),
|
||||||
|
// DESIGN_COMPLIANCE_CONFIRMATION5("责任人回复工程师,工程师接收-任务","ctp_AAftJ7q0feyC"),
|
||||||
|
// DESIGN_COMPLIANCE_CONFIRMATION6("任务提醒,责任人接收-任务 发起人催办责任人","ctp_AAfefHo8XmE9"),
|
||||||
|
// DESIGN_COMPLIANCE_CONFIRMATION7("任务提醒,责任人接收-任务 两周通知","ctp_AAfvKkz1Ewe9"),
|
||||||
|
// DESIGN_COMPLIANCE_CONFIRMATION8("任务提醒,责任人接收-任务 一周通知","ctp_AAftJ7q0ur2Z"),
|
||||||
|
// DESIGN_COMPLIANCE_CONFIRMATION9("任务提醒,责任人接收-任务 当天","ctp_AAfefHo8vZzW"),
|
||||||
|
// DESIGN_COMPLIANCE_CONFIRMATION10("任务提醒,责任人接收-任务 逾期之后 3天,7天,14天通知","ctp_AAft9XcQW9xx"),
|
||||||
|
// DESIGN_COMPLIANCE_CONFIRMATION11("责任人提交,发起人接收审查任务-任务","ctp_AAftJ7q0Yym9"),
|
||||||
|
// DESIGN_COMPLIANCE_CONFIRMATION12("发起人审查退回,责任人接收-任务","ctp_AAfefHo8vR6w"),
|
||||||
|
// DESIGN_COMPLIANCE_CONFIRMATION13("发起人审查通过,责任人接收通知-通知","ctp_AAftJ7q0YF7H"),
|
||||||
|
//
|
||||||
|
// PRE_HOMO_CONFIRMATION1("Pre-Homo任务,责任人接收-任务","ctp_AAftJ7q0uXRs"),
|
||||||
|
// PRE_HOMO_CONFIRMATION2("责任人下发工程师,工程师接收-任务","ctp_AAfefHo8KU8o"),
|
||||||
|
// PRE_HOMO_CONFIRMATION3("责任人催办,工程师接收-任务","ctp_AAfvdg0C91Dv"),
|
||||||
|
// PRE_HOMO_CONFIRMATION4("工程师提交反馈,责任人接收-任务","ctp_AAftJ7q03tft"),
|
||||||
|
// PRE_HOMO_CONFIRMATION5("责任人回复工程师,工程师接收-任务","ctp_AAftJ7q03Xer"),
|
||||||
|
// PRE_HOMO_CONFIRMATION6("任务提醒,责任人接收-任务 发起人催办责任人","ctp_AAfvKkz1ETZU"),
|
||||||
|
// PRE_HOMO_CONFIRMATION7("任务提醒,责任人接收-任务 两周通知","ctp_AAft9XcQTFYa"),
|
||||||
|
// PRE_HOMO_CONFIRMATION8("任务提醒,责任人接收-任务 一周通知","ctp_AAfefHo8219e"),
|
||||||
|
// PRE_HOMO_CONFIRMATION9("任务提醒,责任人接收-任务 当天","ctp_AAftzD2mWof3"),
|
||||||
|
// PRE_HOMO_CONFIRMATION10("任务提醒,责任人接收-任务 逾期之后 每天通知","ctp_AAftJ7q0ul4M"),
|
||||||
|
// PRE_HOMO_CONFIRMATION11("责任人提交,发起人接收审查任务-任务","ctp_AAfvKkz1Evrr"),
|
||||||
|
// PRE_HOMO_CONFIRMATION12("发起人审查退回,责任人接收-任务","ctp_AAfvKkz1nMgY"),
|
||||||
|
// PRE_HOMO_CONFIRMATION13("发起人审查通过,责任人接收通知-通知","ctp_AAftJ7q0rtdn"),
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// VALIDATION_COMPLIANCE_CONFIRMATION1("验证符合性任务,责任人接收-任务","ctp_AAftJ7q0u3Je"),
|
||||||
|
// VALIDATION_COMPLIANCE_CONFIRMATION2("责任人下发工程师,工程师接收-任务","ctp_AAft9XcQLuty"),
|
||||||
|
// VALIDATION_COMPLIANCE_CONFIRMATION3("责任人催办,工程师接收-任务","ctp_AAfefHo8Kpsf"),
|
||||||
|
// VALIDATION_COMPLIANCE_CONFIRMATION4("工程师提交反馈,责任人接收-任务","ctp_AAfefHo8K9Qk"),
|
||||||
|
// VALIDATION_COMPLIANCE_CONFIRMATION5("责任人回复工程师,工程师接收-任务","ctp_AAft9XcQLkZO"),
|
||||||
|
// VALIDATION_COMPLIANCE_CONFIRMATION6("任务提醒,责任人接收-任务 发起人催办责任人","ctp_AAftzD2mPku1"),
|
||||||
|
// VALIDATION_COMPLIANCE_CONFIRMATION7("任务提醒,责任人接收-任务 两周通知(接口人提交之后停止消息发送)","ctp_AAftJ7q0Hv3C"),
|
||||||
|
// VALIDATION_COMPLIANCE_CONFIRMATION8("任务提醒,责任人接收-任务 一周通知(接口人提交之后停止消息发送)","ctp_AAftJ7q0HzZL"),
|
||||||
|
// VALIDATION_COMPLIANCE_CONFIRMATION9("任务提醒,责任人接收-任务 当天(接口人提交之后停止消息发送)","ctp_AAfefHo8edYl"),
|
||||||
|
// VALIDATION_COMPLIANCE_CONFIRMATION10("任务提醒,责任人接收-任务 逾期之后 每天通知(接口人提交之后停止消息发送)","ctp_AAfefHo8ef2S"),
|
||||||
|
// VALIDATION_COMPLIANCE_CONFIRMATION11("责任人提交,发起人接收审查任务-任务","ctp_AAftJ7q03z1d"),
|
||||||
|
// VALIDATION_COMPLIANCE_CONFIRMATION12("发起人审查退回,责任人接收-任务","ctp_AAfefHo8eOyG"),
|
||||||
|
// VALIDATION_COMPLIANCE_CONFIRMATION13("发起人审查通过,责任人接收通知-通知","ctp_AAfefHo8K6DT"),
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
|
String name;
|
||||||
|
String value;
|
||||||
|
|
||||||
|
private TemplateInfoEnum2(String name, String value) {
|
||||||
|
this.name = name;
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
public String getValue() {
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setValue(String value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
}
|
||||||
+8
@@ -122,4 +122,12 @@ public interface IFeishuService {
|
|||||||
* @param emailList
|
* @param emailList
|
||||||
*/
|
*/
|
||||||
JSONObject getUserInfoFromLarkByEmainList(List<String> emailList) throws IOException ;
|
JSONObject getUserInfoFromLarkByEmainList(List<String> emailList) throws IOException ;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据模板-批量发送飞书卡片消息 由于开发分支问题,此方法只在认证清单流程中使用, 与 batchSendLarkCardMsgByTemplate 作用一样
|
||||||
|
* @param json
|
||||||
|
* @return
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
|
Result<?> batchSendLarkCardMsgByTemplate2(JSONObject json) throws IOException;
|
||||||
}
|
}
|
||||||
|
|||||||
+37
@@ -1394,4 +1394,41 @@ public class FeishuServiceImpl implements IFeishuService {
|
|||||||
return responseJson;
|
return responseJson;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Result<?> batchSendLarkCardMsgByTemplate2(JSONObject json) throws IOException {
|
||||||
|
String token = this.getTenantAccessToken();
|
||||||
|
// 设置请求头
|
||||||
|
Map<String, String> headerMap = new HashMap<>();
|
||||||
|
headerMap.put("Authorization", "Bearer " + token);
|
||||||
|
headerMap.put("Content-Type", "application/json; charset=utf-8");
|
||||||
|
|
||||||
|
String template_id = json.getString("template_id");
|
||||||
|
String[] userIdArr = json.getString("userIds").split(",");
|
||||||
|
Map<String,Object> templateVariableMap = JSONObject.parseObject(JSONObject.toJSONString(json.get("templateVariableMap")),Map.class);
|
||||||
|
|
||||||
|
JSONObject templateJson = new JSONObject();
|
||||||
|
|
||||||
|
JSONObject data = new JSONObject();
|
||||||
|
data.put("template_id",template_id);
|
||||||
|
data.put("template_variable",templateVariableMap);
|
||||||
|
|
||||||
|
templateJson.put("type","template");
|
||||||
|
templateJson.put("data",data);
|
||||||
|
|
||||||
|
// 设置请求参数
|
||||||
|
JSONObject paramsMap = new JSONObject();
|
||||||
|
paramsMap.put("user_ids", userIdArr);
|
||||||
|
paramsMap.put("msg_type", "interactive");
|
||||||
|
paramsMap.put("card", templateJson);
|
||||||
|
|
||||||
|
// 发送请求给飞书
|
||||||
|
String response = HttpRequestUtil.getResponseOfPOST(batchSendMessageUrl, headerMap, paramsMap.toJSONString());
|
||||||
|
// 获取返回结果
|
||||||
|
JSONObject tokenJson = JSONObject.parseObject(response);
|
||||||
|
if(!tokenJson.get("code").toString().equals("0")) {
|
||||||
|
log.error("请求出现异常:" + tokenJson.get("msg") + " " + tokenJson);
|
||||||
|
}
|
||||||
|
return Result.OK();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+7
@@ -234,4 +234,11 @@ public class ProjectCertificationInventoryEOController extends JeroController<Pr
|
|||||||
public Result<?> transferTask(@RequestBody JSONObject json) {
|
public Result<?> transferTask(@RequestBody JSONObject json) {
|
||||||
return this.projectCertificationInventoryEOService.transferTask(json);
|
return this.projectCertificationInventoryEOService.transferTask(json);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@AutoLog(value = "项目库-认证清单表-催办")
|
||||||
|
@ApiOperation(value="项目库-认证清单表-催办", notes="项目库-认证清单表-催办")
|
||||||
|
@PostMapping(value = "/expediting")
|
||||||
|
public Result<?> expediting(@RequestBody JSONObject json) {
|
||||||
|
return this.projectCertificationInventoryEOService.expediting(json);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -12,11 +12,13 @@ public enum JumpLinkEnum {
|
|||||||
* 103:跳转 项目库 - 任务清单
|
* 103:跳转 项目库 - 任务清单
|
||||||
* 104:跳转 项目库 - 未符合项
|
* 104:跳转 项目库 - 未符合项
|
||||||
* 105:跳转 项目库 - 认证参数收集
|
* 105:跳转 项目库 - 认证参数收集
|
||||||
|
* 106:跳转 项目库 - 认证清单
|
||||||
*/
|
*/
|
||||||
INVENTORY_AFFIRM_LINK("清单确认链接","1","/ProjectDetails?id=","&type=102"),
|
INVENTORY_AFFIRM_LINK("清单确认链接","1","/ProjectDetails?id=","&type=102"),
|
||||||
PREHOMO_AFFIRM_LINK("prehomo确认链接","2","/ProjectDetails?id=","&type=103"),
|
PREHOMO_AFFIRM_LINK("prehomo确认链接","2","/ProjectDetails?id=","&type=103"),
|
||||||
VERIFY_AFFIRM_LINK("验证符合性确认链接","3","/ProjectDetails?id=","&type=103"),
|
VERIFY_AFFIRM_LINK("验证符合性确认链接","3","/ProjectDetails?id=","&type=103"),
|
||||||
DESIGN_AFFIRM_LINK("设计符合性确认链接","4","/ProjectDetails?id=","&type=103"),
|
DESIGN_AFFIRM_LINK("设计符合性确认链接","4","/ProjectDetails?id=","&type=103"),
|
||||||
|
CERTIFICATION_INVENTORY_LINK("认证清单链接","5","/ProjectDetails?id=","&type=106"),
|
||||||
TASK_AFFIRM_LINK("任务确认链接","2","/ProcessCenter",""),
|
TASK_AFFIRM_LINK("任务确认链接","2","/ProcessCenter",""),
|
||||||
FGPG_TODO_CENTER_LINK("法规评估任务待办中心链接","88","/regulatoryAssessmentTasks",""),
|
FGPG_TODO_CENTER_LINK("法规评估任务待办中心链接","88","/regulatoryAssessmentTasks",""),
|
||||||
XMCS_TODO_CENTER_LINK("项目参数任务待办中心链接","99","/projectParameterTasks",""),
|
XMCS_TODO_CENTER_LINK("项目参数任务待办中心链接","99","/projectParameterTasks",""),
|
||||||
|
|||||||
+7
@@ -46,6 +46,13 @@ public enum OperatorTypeEnum {
|
|||||||
* 流程信息明细表
|
* 流程信息明细表
|
||||||
*/
|
*/
|
||||||
UPDATE_PROCESS_INFO_DETAIL_BY_TASK_ID("根据taskId更新流程信息明细表","updateProcessInfoDetailByTaskId"),
|
UPDATE_PROCESS_INFO_DETAIL_BY_TASK_ID("根据taskId更新流程信息明细表","updateProcessInfoDetailByTaskId"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 项目库-认证清单
|
||||||
|
*/
|
||||||
|
CERTIFICATION_INVENTORY_STUDIO_EXPEDITING("认证清单-studio催办","certificationInventoryStudioExpediting"),
|
||||||
|
CERTIFICATION_INVENTORY_CERTIFICATION_ENGINEER_EXPEDITING("认证清单-认证工程师催办","certificationInventoryCertificationEngineerExpediting"),
|
||||||
|
CERTIFICATION_INVENTORY_SDT_EXPEDITING("认证清单-接口人催办","certificationInventorySdtExpediting"),
|
||||||
;
|
;
|
||||||
|
|
||||||
String name;
|
String name;
|
||||||
|
|||||||
+7
@@ -149,4 +149,11 @@ public interface IProjectCertificationInventoryEOService extends IService<Projec
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Result<?> transferTask(JSONObject json);
|
Result<?> transferTask(JSONObject json);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 催办任务
|
||||||
|
* @param json
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
Result<?> expediting(JSONObject json);
|
||||||
}
|
}
|
||||||
|
|||||||
+212
@@ -11,6 +11,8 @@ import com.jero.common.constant.enums.CutEnum;
|
|||||||
import com.jero.common.exception.JeroBootException;
|
import com.jero.common.exception.JeroBootException;
|
||||||
import com.jero.common.system.vo.LoginUser;
|
import com.jero.common.system.vo.LoginUser;
|
||||||
import com.jero.common.util.DateUtils;
|
import com.jero.common.util.DateUtils;
|
||||||
|
import com.jero.modules.feishu.enums.TemplateInfoEnum2;
|
||||||
|
import com.jero.modules.feishu.service.IFeishuService;
|
||||||
import com.jero.modules.project.entity.ProjectCertificationInventoryEO;
|
import com.jero.modules.project.entity.ProjectCertificationInventoryEO;
|
||||||
import com.jero.modules.project.entity.ProjectLibraryBase;
|
import com.jero.modules.project.entity.ProjectLibraryBase;
|
||||||
import com.jero.modules.project.entity.ProjectRelatedPersonnel;
|
import com.jero.modules.project.entity.ProjectRelatedPersonnel;
|
||||||
@@ -40,8 +42,10 @@ import org.springframework.beans.BeanUtils;
|
|||||||
import org.apache.commons.collections4.CollectionUtils;
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -78,6 +82,12 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
|
|||||||
private IProjectRelatedPersonnelService projectRelatedPersonnelService;
|
private IProjectRelatedPersonnelService projectRelatedPersonnelService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private SysRoleMapper sysRoleMapper;
|
private SysRoleMapper sysRoleMapper;
|
||||||
|
@Autowired
|
||||||
|
private IFeishuService feishuService;
|
||||||
|
|
||||||
|
|
||||||
|
@Value(value = "${jero.backUrl}")
|
||||||
|
private String backUrl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存
|
* 保存
|
||||||
@@ -1310,4 +1320,206 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
|
|||||||
return Result.OK("转办成功!");
|
return Result.OK("转办成功!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Result<?> expediting(JSONObject json) {
|
||||||
|
String ids = json.getString("ids");
|
||||||
|
if(StringUtils.isEmpty(ids)){
|
||||||
|
throw new JeroBootException("至少选择一条数据进行操作!");
|
||||||
|
}
|
||||||
|
|
||||||
|
String projectLibraryId = json.getString("projectLibraryId");
|
||||||
|
ProjectLibraryBase projectLibraryBase = projectLibraryBaseService.queryById(projectLibraryId, CutEnum.EN.getValue()).get(0);
|
||||||
|
String PRN_EN = projectLibraryBase.getProjectName();//项目名称
|
||||||
|
if(ObjectUtils.isEmpty(projectLibraryBase)){
|
||||||
|
throw new JeroBootException("无法获取项目库信息,项目库id为:" + projectLibraryId + " 请联系管理员!");
|
||||||
|
}
|
||||||
|
// ProjectLibraryBase projectLibraryBaseCn = projectLibraryBaseService.queryById(projectLibraryId, CutEnum.CN.getValue()).get(0);
|
||||||
|
// String PRN_CN = projectLibraryBase.getProjectName();//项目名称
|
||||||
|
|
||||||
|
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||||
|
List<String> idList = Arrays.asList(ids.split(","));
|
||||||
|
|
||||||
|
QueryWrapper<ProjectCertificationInventoryEO> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.lambda().in(ProjectCertificationInventoryEO::getId,idList);
|
||||||
|
queryWrapper.lambda().in(ProjectCertificationInventoryEO::getDutyPerson,currentUser.getId());
|
||||||
|
List<ProjectCertificationInventoryEO> projectCertificationInventoryEOList = this.list(queryWrapper);
|
||||||
|
|
||||||
|
if(CollectionUtils.isNotEmpty(projectCertificationInventoryEOList)){
|
||||||
|
//飞书跳转链接
|
||||||
|
String hrefFeishu_CN = backUrl
|
||||||
|
+ JumpLinkEnum.CERTIFICATION_INVENTORY_LINK.getLink()
|
||||||
|
+ projectLibraryId
|
||||||
|
+ JumpLinkEnum.CERTIFICATION_INVENTORY_LINK.getType()
|
||||||
|
+ "&projectName=" + PRN_EN;
|
||||||
|
|
||||||
|
//飞书跳转链接
|
||||||
|
String hrefFeishu_EN = backUrl
|
||||||
|
+ JumpLinkEnum.CERTIFICATION_INVENTORY_LINK.getLink()
|
||||||
|
+ projectLibraryId
|
||||||
|
+ JumpLinkEnum.CERTIFICATION_INVENTORY_LINK.getType()
|
||||||
|
+ "&projectName=" + PRN_EN;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* studio催办:除了 清单待发布、审查通过、认证退回 的 催办当前办理人
|
||||||
|
* 认证工程师催办:任务待确认、结果待提交、审查退回 的 催办当前办理人
|
||||||
|
* 接口人催办:任务待确认 、结果待提交、审查退回 的 催办当前办理人
|
||||||
|
*/
|
||||||
|
String operatorType = json.getString("operatorType");
|
||||||
|
if(StringUtils.equals(operatorType,OperatorTypeEnum.CERTIFICATION_INVENTORY_STUDIO_EXPEDITING.getValue())){
|
||||||
|
List<ProjectCertificationInventoryEO> certificationInventoryEOList = projectCertificationInventoryEOList.stream().filter(data -> {
|
||||||
|
return (StringUtils.equals(data.getFlowStatus(), CertificationInventoryFlowStatusEnum.LIST_TO_BE_CHECKED.getValue())
|
||||||
|
|| StringUtils.equals(data.getFlowStatus(), CertificationInventoryFlowStatusEnum.REFUSAL_OF_RESPONSIBLE_PERSON.getValue())
|
||||||
|
|| StringUtils.equals(data.getFlowStatus(), CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_REVIEWED.getValue()));
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
|
||||||
|
if(CollectionUtils.isNotEmpty(certificationInventoryEOList)){
|
||||||
|
String certificationEngineerIds = projectLibraryBase.getCertificationEngineer();
|
||||||
|
if(StringUtils.isNotEmpty(certificationEngineerIds)){
|
||||||
|
List<String> certificationEngineerIdList = Arrays.asList(certificationEngineerIds.split(","));
|
||||||
|
|
||||||
|
List<SysUser> certificationEngineerList = this.sysUserService.querySysUserListByIdList(certificationEngineerIdList);
|
||||||
|
StringBuilder standNameSb = new StringBuilder();
|
||||||
|
StringBuilder itemNameSb = new StringBuilder();
|
||||||
|
|
||||||
|
// 根据结束时间进行排序,获取最近的时间,发消息时使用。
|
||||||
|
Collections.sort(certificationInventoryEOList, new Comparator<ProjectCertificationInventoryEO>() {
|
||||||
|
@Override
|
||||||
|
public int compare(ProjectCertificationInventoryEO p1, ProjectCertificationInventoryEO p2) {
|
||||||
|
return p1.getEndTime().compareTo(p2.getEndTime());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Date endTime = certificationInventoryEOList.get(0).getEndTime();
|
||||||
|
|
||||||
|
for (ProjectCertificationInventoryEO projectCertificationInventoryEO : certificationInventoryEOList) {
|
||||||
|
if(StringUtils.isNotEmpty(projectCertificationInventoryEO.getInspectionItem())){
|
||||||
|
itemNameSb.append(projectCertificationInventoryEO.getInspectionItem()).append(",");
|
||||||
|
}
|
||||||
|
if(StringUtils.isNotEmpty(projectCertificationInventoryEO.getSerialNumber())){
|
||||||
|
standNameSb.append(projectCertificationInventoryEO.getSerialNumber()).append(",");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String standName = "";
|
||||||
|
if(StringUtils.isNotEmpty(standNameSb.toString())){
|
||||||
|
standName = standNameSb.toString().substring(0,standNameSb.toString().length()-1);
|
||||||
|
}
|
||||||
|
String itemName = "";
|
||||||
|
if(StringUtils.isNotEmpty(itemNameSb.toString())){
|
||||||
|
itemName = itemNameSb.toString().substring(0,itemNameSb.toString().length()-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(CollectionUtils.isNotEmpty(certificationEngineerList)){
|
||||||
|
for (String certificationEngineerId : certificationEngineerIdList) {
|
||||||
|
String thirdId = certificationEngineerList.stream().filter(certificationEngineer -> {
|
||||||
|
boolean flag = false;
|
||||||
|
if(StringUtils.equals(certificationEngineerId,certificationEngineer.getId())){
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}).collect(Collectors.toList()).get(0).getThirdId();
|
||||||
|
|
||||||
|
try {
|
||||||
|
JSONObject larkMesJson = new JSONObject();
|
||||||
|
larkMesJson.put("template_id", TemplateInfoEnum2.CERTIFICATION_MESSAGE1.getValue());
|
||||||
|
larkMesJson.put("userIds",thirdId);
|
||||||
|
|
||||||
|
Map<String,Object> templateVariableMap = new HashMap<>();
|
||||||
|
templateVariableMap.put("projectNameCn",PRN_EN);
|
||||||
|
templateVariableMap.put("projectNameEn",PRN_EN);
|
||||||
|
templateVariableMap.put("standName",standName);
|
||||||
|
templateVariableMap.put("itemName",itemName);
|
||||||
|
templateVariableMap.put("Initiator",projectLibraryBase.getStudioEngineerName());
|
||||||
|
templateVariableMap.put("endTime",DateUtils.formatDate(endTime));
|
||||||
|
templateVariableMap.put("viewBtnUrlCn",hrefFeishu_CN);
|
||||||
|
templateVariableMap.put("viewBtnUrlEn",hrefFeishu_EN);
|
||||||
|
|
||||||
|
larkMesJson.put("templateVariableMap",templateVariableMap);
|
||||||
|
this.feishuService.batchSendLarkCardMsgByTemplate2(larkMesJson);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("飞书消息推送失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<String> dutyPersonIdList = projectCertificationInventoryEOList.stream().map(ProjectCertificationInventoryEO::getDutyPerson).distinct().collect(Collectors.toList());
|
||||||
|
List<SysUser> dutyPersonList = this.sysUserService.querySysUserListByIdList(dutyPersonIdList);
|
||||||
|
|
||||||
|
Map<String, List<ProjectCertificationInventoryEO>> certifycationInventoryListByDutyPersonMap = projectCertificationInventoryEOList.stream().filter(data -> {
|
||||||
|
return (StringUtils.equals(data.getFlowStatus(), CertificationInventoryFlowStatusEnum.TASK_TO_BE_CONFIRMED.getValue())
|
||||||
|
|| StringUtils.equals(data.getFlowStatus(), CertificationInventoryFlowStatusEnum.RESULTS_TO_BE_SUBMITTED.getValue())
|
||||||
|
|| StringUtils.equals(data.getFlowStatus(), CertificationInventoryFlowStatusEnum.REVIEW_AND_RETURN.getValue()));
|
||||||
|
}).collect(Collectors.groupingBy(ProjectCertificationInventoryEO::getDutyPerson));
|
||||||
|
|
||||||
|
if(!ObjectUtils.isEmpty(certifycationInventoryListByDutyPersonMap) && CollectionUtils.isNotEmpty(dutyPersonList)){
|
||||||
|
for (Map.Entry<String, List<ProjectCertificationInventoryEO>> map : certifycationInventoryListByDutyPersonMap.entrySet()) {
|
||||||
|
String key = map.getKey();
|
||||||
|
List<ProjectCertificationInventoryEO> value = map.getValue();
|
||||||
|
|
||||||
|
String thirdId = dutyPersonList.stream().filter(dutyPersonInfo -> {
|
||||||
|
boolean flag = false;
|
||||||
|
if(StringUtils.equals(key,dutyPersonInfo.getId())){
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}).collect(Collectors.toList()).get(0).getThirdId();
|
||||||
|
|
||||||
|
// 根据结束时间进行排序,获取最近的时间,发消息时使用。
|
||||||
|
Collections.sort(value, new Comparator<ProjectCertificationInventoryEO>() {
|
||||||
|
@Override
|
||||||
|
public int compare(ProjectCertificationInventoryEO p1, ProjectCertificationInventoryEO p2) {
|
||||||
|
return p1.getEndTime().compareTo(p2.getEndTime());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Date endTime = value.get(0).getEndTime();
|
||||||
|
|
||||||
|
StringBuilder standNameSb = new StringBuilder();
|
||||||
|
StringBuilder itemNameSb = new StringBuilder();
|
||||||
|
for (ProjectCertificationInventoryEO projectCertificationInventoryEO : value) {
|
||||||
|
if(StringUtils.isNotEmpty(projectCertificationInventoryEO.getInspectionItem())){
|
||||||
|
itemNameSb.append(projectCertificationInventoryEO.getInspectionItem()).append(",");
|
||||||
|
}
|
||||||
|
if(StringUtils.isNotEmpty(projectCertificationInventoryEO.getSerialNumber())){
|
||||||
|
standNameSb.append(projectCertificationInventoryEO.getSerialNumber()).append(",");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String standName = "";
|
||||||
|
if(StringUtils.isNotEmpty(standNameSb.toString())){
|
||||||
|
standName = standNameSb.toString().substring(0,standNameSb.toString().length()-1);
|
||||||
|
}
|
||||||
|
String itemName = "";
|
||||||
|
if(StringUtils.isNotEmpty(itemNameSb.toString())){
|
||||||
|
itemName = itemNameSb.toString().substring(0,itemNameSb.toString().length()-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
JSONObject larkMesJson = new JSONObject();
|
||||||
|
larkMesJson.put("template_id", TemplateInfoEnum2.CERTIFICATION_MESSAGE1.getValue());
|
||||||
|
larkMesJson.put("userIds",thirdId);
|
||||||
|
|
||||||
|
Map<String,Object> templateVariableMap = new HashMap<>();
|
||||||
|
templateVariableMap.put("projectNameCn",PRN_EN);
|
||||||
|
templateVariableMap.put("projectNameEn",PRN_EN);
|
||||||
|
templateVariableMap.put("standName",standName);
|
||||||
|
templateVariableMap.put("itemName",itemName);
|
||||||
|
templateVariableMap.put("Initiator",projectLibraryBase.getStudioEngineerName());
|
||||||
|
templateVariableMap.put("endTime",DateUtils.formatDate(endTime));
|
||||||
|
templateVariableMap.put("viewBtnUrlCn",hrefFeishu_CN);
|
||||||
|
templateVariableMap.put("viewBtnUrlEn",hrefFeishu_EN);
|
||||||
|
|
||||||
|
larkMesJson.put("templateVariableMap",templateVariableMap);
|
||||||
|
this.feishuService.batchSendLarkCardMsgByTemplate2(larkMesJson);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("飞书消息推送失败");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Result.OK("催办成功!");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1430,4 +1430,5 @@ module.exports = {
|
|||||||
confirmreturn:'Confirm return ?',
|
confirmreturn:'Confirm return ?',
|
||||||
onlyDataSelected:'Only data with process status of task to be confirmed, result to be submitted and review to be returned can be selected',
|
onlyDataSelected:'Only data with process status of task to be confirmed, result to be submitted and review to be returned can be selected',
|
||||||
youCannotStatusListToBeReleasedAndApproved:'You cannot select data whose process status is list to be released and approved',
|
youCannotStatusListToBeReleasedAndApproved:'You cannot select data whose process status is list to be released and approved',
|
||||||
|
batchmodify:'Whether to batch modify',
|
||||||
}
|
}
|
||||||
@@ -1524,6 +1524,7 @@ module.exports = {
|
|||||||
confirmReturnForApproval:'确认退回审批?',
|
confirmReturnForApproval:'确认退回审批?',
|
||||||
onlyDataStatusResultReviewedCanBeSelected:'只能选择流程状态为结果待审查的数据',
|
onlyDataStatusResultReviewedCanBeSelected:'只能选择流程状态为结果待审查的数据',
|
||||||
confirmResetProcess:'确认重置流程?',
|
confirmResetProcess:'确认重置流程?',
|
||||||
|
confirmUrging:'确认催办',
|
||||||
statusthetasistobeconfirmed:'只有清单待校核状态或任务确认状态为待确认时才可以进行撤回',
|
statusthetasistobeconfirmed:'只有清单待校核状态或任务确认状态为待确认时才可以进行撤回',
|
||||||
confirmreturn:'确认退回?',
|
confirmreturn:'确认退回?',
|
||||||
confirmUrging:'确认催办?',
|
confirmUrging:'确认催办?',
|
||||||
@@ -1531,4 +1532,5 @@ module.exports = {
|
|||||||
onlyListCheckedCanRecalled:'只能撤回流程状态为清单待校核的数据',
|
onlyListCheckedCanRecalled:'只能撤回流程状态为清单待校核的数据',
|
||||||
onlyDataSelected:'只能选择流程状态为任务待确认、结果待提交、审查退回的数据',
|
onlyDataSelected:'只能选择流程状态为任务待确认、结果待提交、审查退回的数据',
|
||||||
youCannotStatusListToBeReleasedAndApproved:'不能选择流程状态为清单待发布、审查通过的数据',
|
youCannotStatusListToBeReleasedAndApproved:'不能选择流程状态为清单待发布、审查通过的数据',
|
||||||
|
batchmodify:'是否批量修改',
|
||||||
}
|
}
|
||||||
@@ -10,21 +10,6 @@
|
|||||||
>
|
>
|
||||||
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
|
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :span="12">
|
|
||||||
<div class="box-title-text">
|
|
||||||
<div class="title-text">
|
|
||||||
<span class="title-text-text"
|
|
||||||
:title="$t('implementationCategory')">{{$t('implementationCategory')}}</span>
|
|
||||||
</div>
|
|
||||||
<a-form-model-item class="itemModel">
|
|
||||||
<j-dict-select-tag class="box-input" v-model="formInline.implementType"
|
|
||||||
@input="handleInput('implementType')"
|
|
||||||
:placeholder="$t('PleaseSelect')+$t('implementationCategory')"
|
|
||||||
:type="'select'"
|
|
||||||
:triggerChange="false" dictCode="implement_type"/>
|
|
||||||
</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">
|
||||||
@@ -43,22 +28,6 @@
|
|||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
</div>
|
</div>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
|
||||||
<a-row :gutter="24">
|
|
||||||
<a-col :span="12">
|
|
||||||
<div class="box-title-text">
|
|
||||||
<div class="title-text">
|
|
||||||
<span class="title-text-text"
|
|
||||||
:title="$t('zoneOfApplication')">{{$t('zoneOfApplication')}}</span>
|
|
||||||
</div>
|
|
||||||
<a-form-model-item class="itemModel-multi" prop="region">
|
|
||||||
<j-multi-select-tag class="box-input" v-model="formInline.region"
|
|
||||||
:placeholder="$t('PleaseSelect')+$t('zoneOfApplication')"
|
|
||||||
:type="'select'"
|
|
||||||
:triggerChange="false" :dictCode="'region'"/>
|
|
||||||
</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">
|
||||||
@@ -96,93 +65,253 @@
|
|||||||
<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('vehicleInProductionDate')">{{$t('vehicleInProductionDate')}}</span>
|
:title="$t('engineeringInterfacePerson')">{{$t('engineeringInterfacePerson')}}</span>
|
||||||
</div>
|
</div>
|
||||||
<a-form-model-item class="itemModel" :prop="'implementTime'">
|
<a-form-model-item class="itemModel" prop="designDutyId">
|
||||||
<a-date-picker class="box-input"
|
<PersonnelSelection :query="{db_field_name:'engineeringInterfacePerson',db_field_txt:$t('engineeringInterfacePerson')}"
|
||||||
:placeholder="$t('PleaseSelect')+$t('vehicleInProductionDate')"
|
:isSingleChoice="true"
|
||||||
:getCalendarContainer="(trigger) => trigger.parentNode"
|
:personneQuery="formInline"
|
||||||
@change="dateChange({db_field_name:'implementTime'})"
|
v-if="visible"
|
||||||
format="YYYY-MM-DD"
|
@change="PersonnelSelectionChange"
|
||||||
v-model="formInline.implementTime"
|
v-model="formInline.engineeringInterfacePersonName"/>
|
||||||
style="width: 100%"/>
|
<!-- <j-dict-select-tag class="box-input" v-model="formInline.designDuty"-->
|
||||||
|
<!-- :disabled="formInline.roleCode == 0 ? false : true"-->
|
||||||
|
<!-- @input="handleInput('designDuty')"-->
|
||||||
|
<!-- :placeholder="$t('PleaseSelect')+$t('personLiable')"-->
|
||||||
|
<!-- :type="'select'"-->
|
||||||
|
<!-- :triggerChange="false" :dictCode="'ze2_ren4_ren2'"/>-->
|
||||||
</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="12">
|
<a-col :span="12" v-if="this.code != '1'">
|
||||||
<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('ImplementationDate')">{{$t('ImplementationDate')}}</span>
|
<span class="title-text-text"
|
||||||
|
:title="$t('regulatoryEngineer')">{{$t('regulatoryEngineer')}}</span>
|
||||||
</div>
|
</div>
|
||||||
<a-form-model-item class="itemModel">
|
<a-form-model-item class="itemModel" prop="designDutyId">
|
||||||
<a-date-picker class="box-input"
|
<PersonnelSelection :query="{db_field_name:'regulatoryEngineer',db_field_txt:$t('regulatoryEngineer')}"
|
||||||
:getCalendarContainer="(trigger) => trigger.parentNode"
|
:isSingleChoice="true"
|
||||||
:placeholder="$t('PleaseSelect')+$t('ImplementationDate')"
|
:personneQuery="formInline"
|
||||||
@change="dateChange({db_field_name:'xin1Che1Xing2Shi2Shi1Ri4Qi1'})"
|
v-if="visible"
|
||||||
format="YYYY-MM-DD"
|
@change="PersonnelSelectionChange"
|
||||||
v-model="formInline.xin1Che1Xing2Shi2Shi1Ri4Qi1"
|
v-model="formInline.regulatoryEngineerName"/>
|
||||||
style="width: 100%"/>
|
<!-- <j-dict-select-tag class="box-input" v-model="formInline.designDuty"-->
|
||||||
</a-form-model-item>
|
<!-- :disabled="formInline.roleCode == 0 ? false : true"-->
|
||||||
</div>
|
<!-- @input="handleInput('designDuty')"-->
|
||||||
</a-col>
|
<!-- :placeholder="$t('PleaseSelect')+$t('personLiable')"-->
|
||||||
<a-col :span="12">
|
<!-- :type="'select'"-->
|
||||||
<div class="box-title-text">
|
<!-- :triggerChange="false" :dictCode="'ze2_ren4_ren2'"/>-->
|
||||||
<div class="title-text">
|
|
||||||
<span class="title-text-text" :title="$t('deadlineForConfirmationOfDesignCompliance')">
|
|
||||||
{{$t('deadlineForConfirmationOfDesignCompliance')}}</span>
|
|
||||||
</div>
|
|
||||||
<a-form-model-item class="itemModel">
|
|
||||||
<a-date-picker class="box-input"
|
|
||||||
:placeholder="$t('PleaseSelect')+$t('deadlineForConfirmationOfDesignCompliance')"
|
|
||||||
@change="dateChange({db_field_name:'designDueDate'})"
|
|
||||||
format="YYYY-MM-DD"
|
|
||||||
:getCalendarContainer="(trigger) => trigger.parentNode"
|
|
||||||
v-model="formInline.designDueDate"
|
|
||||||
:disabled="false"
|
|
||||||
style="width: 100%"/>
|
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
</div>
|
</div>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
<div class="header-text">
|
||||||
|
{{$t('confirmationOfDesignConformity')}}
|
||||||
|
</div>
|
||||||
<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" :title="$t('prehomoConfirmationDeadline')">
|
<span class="title-text-text"
|
||||||
{{$t('prehomoConfirmationDeadline')}}</span>
|
:title="$t('personLiable')">{{$t('personLiable')}}</span>
|
||||||
</div>
|
</div>
|
||||||
<a-form-model-item class="itemModel">
|
<a-form-model-item class="itemModel" prop="designDutyId">
|
||||||
<a-date-picker class="box-input"
|
<PersonnelSelection :query="{db_field_name:'dutyPerson',db_field_txt:$t('personLiable')}"
|
||||||
:placeholder="$t('PleaseSelect')+$t('prehomoConfirmationDeadline')"
|
:isSingleChoice="true"
|
||||||
@change="dateChange({db_field_name:'prehomoDueDate'})"
|
:personneQuery="formInline"
|
||||||
format="YYYY-MM-DD"
|
v-if="visible"
|
||||||
:getCalendarContainer="(trigger) => trigger.parentNode"
|
@change="PersonnelSelectionChange"
|
||||||
v-model="formInline.prehomoDueDate"
|
v-model="formInline.dutyPersonName"/>
|
||||||
:disabled="false"
|
<!-- <j-dict-select-tag class="box-input" v-model="formInline.designDuty"-->
|
||||||
style="width: 100%"/>
|
<!-- :disabled="formInline.roleCode == 0 ? false : true"-->
|
||||||
|
<!-- @input="handleInput('designDuty')"-->
|
||||||
|
<!-- :placeholder="$t('PleaseSelect')+$t('personLiable')"-->
|
||||||
|
<!-- :type="'select'"-->
|
||||||
|
<!-- :triggerChange="false" :dictCode="'ze2_ren4_ren2'"/>-->
|
||||||
</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" :title="$t('verificationComplianceConfirmationDeadline')">
|
<span class="title-text-text"
|
||||||
{{$t('verificationComplianceConfirmationDeadline')}}</span>
|
:title="$t('cutoffTime')">{{$t('cutoffTime')}}</span>
|
||||||
</div>
|
</div>
|
||||||
<a-form-model-item class="itemModel">
|
<a-form-model-item class="itemModel" :prop="'verifyDueDate'">
|
||||||
<a-date-picker class="box-input"
|
<a-date-picker class="box-input"
|
||||||
:placeholder="$t('PleaseSelect')+$t('verificationComplianceConfirmationDeadline')"
|
:placeholder="$t('PleaseSelect')+$t('cutoffTime')"
|
||||||
@change="dateChange({db_field_name:'verifyDueDate'})"
|
@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.verifyDueDate"
|
v-model="formInline.verifyDueDate"
|
||||||
:disabled="false"
|
|
||||||
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>-->
|
||||||
|
<!-- <!– <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-row>
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :span="12">
|
||||||
|
<div class="box-title-text">
|
||||||
|
<div class="title-text">
|
||||||
|
<span class="title-text-text"
|
||||||
|
:title="$t('typeOfDeliverables')">{{$t('typeOfDeliverables')}}</span>
|
||||||
|
</div>
|
||||||
|
<a-form-model-item class="itemModel" prop="typeOfDeliverables">
|
||||||
|
<a-tree-select
|
||||||
|
tree-node-filter-prop="title"
|
||||||
|
v-model="formInline.designDeliverableType"
|
||||||
|
:maxTagCount="1"
|
||||||
|
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||||
|
class="box-input"
|
||||||
|
style="width: 100%"
|
||||||
|
:tree-data="DeliverableTreeList"
|
||||||
|
tree-checkable
|
||||||
|
:placeholder="$t('PleaseSelect')+$t('typeOfDeliverables')"
|
||||||
|
/>
|
||||||
|
<!-- <j-dict-select-tag class="box-input" v-model="formInline.designDeliverableType"-->
|
||||||
|
<!-- @input="handleInput('designDeliverableType')"-->
|
||||||
|
<!-- :placeholder="$t('PleaseSelect')+$t('typeOfDeliverables')"-->
|
||||||
|
<!-- :type="'select'"-->
|
||||||
|
<!-- :triggerChange="false" :dictCode="'deliverable_template'"/>-->
|
||||||
|
</a-form-model-item>
|
||||||
|
</div>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
<div class="header-text">
|
||||||
|
{{$t('verificationAndConformityconfirmation')}}
|
||||||
|
</div>
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :span="12">
|
||||||
|
<div class="box-title-text">
|
||||||
|
<div class="title-text">
|
||||||
|
<span class="title-text-text"
|
||||||
|
:title="$t('personLiable')">{{$t('personLiable')}}</span>
|
||||||
|
</div>
|
||||||
|
<a-form-model-item class="itemModel" prop="verifyDutyId">
|
||||||
|
<PersonnelSelection :query="{db_field_name:'dutyPerson',db_field_txt:$t('personLiable')}"
|
||||||
|
:isSingleChoice="true"
|
||||||
|
:personneQuery="formInline"
|
||||||
|
v-if="visible"
|
||||||
|
@change="PersonnelSelectionChange"
|
||||||
|
v-model="formInline.dutyPersonName"/>
|
||||||
|
<!-- <j-dict-select-tag class="box-input" v-model="formInline.verifyDuty"-->
|
||||||
|
<!-- :disabled="formInline.roleCode == 0 ? false : true"-->
|
||||||
|
<!-- @input="handleInput('verifyDuty')"-->
|
||||||
|
<!-- :placeholder="$t('PleaseSelect')+$t('personLiable')"-->
|
||||||
|
<!-- :type="'select'"-->
|
||||||
|
<!-- :triggerChange="false" :dictCode="'ze2_ren4_ren2'"/>-->
|
||||||
|
</a-form-model-item>
|
||||||
|
</div>
|
||||||
|
</a-col>
|
||||||
|
<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="'verifyDueDate'">
|
||||||
|
<a-date-picker class="box-input"
|
||||||
|
:placeholder="$t('PleaseSelect')+$t('cutoffTime')"
|
||||||
|
@change="dateChange({db_field_name:'verifyDueDate'})"
|
||||||
|
format="YYYY-MM-DD"
|
||||||
|
:getCalendarContainer="(trigger) => trigger.parentNode"
|
||||||
|
v-model="formInline.verifyDueDate"
|
||||||
|
style="width: 100%"/>
|
||||||
|
</a-form-model-item>
|
||||||
|
</div>
|
||||||
|
</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>-->
|
||||||
|
<!-- <!– <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-row>
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :span="12">
|
||||||
|
<div class="box-title-text">
|
||||||
|
<div class="title-text">
|
||||||
|
<span class="title-text-text"
|
||||||
|
:title="$t('typeOfDeliverables')">{{$t('typeOfDeliverables')}}</span>
|
||||||
|
</div>
|
||||||
|
<a-form-model-item class="itemModel" prop="verifyDeliverableType">
|
||||||
|
<a-tree-select
|
||||||
|
tree-node-filter-prop="title"
|
||||||
|
v-model="formInline.verifyDeliverableType"
|
||||||
|
:maxTagCount="1"
|
||||||
|
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||||
|
class="box-input"
|
||||||
|
style="width: 100%"
|
||||||
|
:tree-data="DeliverableTreeList"
|
||||||
|
tree-checkable
|
||||||
|
:placeholder="$t('PleaseSelect')+$t('typeOfDeliverables')"
|
||||||
|
/>
|
||||||
|
<!-- <j-dict-select-tag class="box-input" v-model="formInline.verifyDeliverableType"-->
|
||||||
|
<!-- :disabled="formInline.taskAffirmStatus != 'Not started' && !formInline.verifyDeliverableType ? true : false"-->
|
||||||
|
<!-- @input="handleInput('verifyDeliverableType')"-->
|
||||||
|
<!-- :placeholder="$t('PleaseSelect')+$t('typeOfDeliverables')"-->
|
||||||
|
<!-- :type="'select'"-->
|
||||||
|
<!-- :triggerChange="false" :dictCode="'deliverable_template'"/>-->
|
||||||
|
</a-form-model-item>
|
||||||
|
</div>
|
||||||
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
</a-form-model>
|
</a-form-model>
|
||||||
</a-modal>
|
</a-modal>
|
||||||
@@ -190,25 +319,39 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getAction, postAction } from '@/api/manage'
|
import { getAction, postAction } from '@/api/manage'
|
||||||
|
import PersonnelSelection from '@/components/PersonnelSelection/index'
|
||||||
import moment from 'moment'
|
import moment from 'moment'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'batSetting',
|
name: 'batSetting',
|
||||||
props: ['url'],
|
props: ['url'],
|
||||||
|
components: {
|
||||||
|
PersonnelSelection
|
||||||
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
visible: false,
|
visible: false,
|
||||||
confirmLoading: false,
|
confirmLoading: false,
|
||||||
|
designDutyList: [],
|
||||||
|
DeliverableTreeList: [],
|
||||||
formInline: {},
|
formInline: {},
|
||||||
rules: {},
|
rules: {},
|
||||||
ids: []
|
ids: [],
|
||||||
|
code:'',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
edit(data) {
|
PersonnelSelectionChange(value, id) {
|
||||||
|
this.formInline[value] = id
|
||||||
|
this.formInline = { ...this.formInline }
|
||||||
|
},
|
||||||
|
edit(data,code) {
|
||||||
this.visible = true
|
this.visible = true
|
||||||
|
this.getDeliverableTree()
|
||||||
|
this.code = code
|
||||||
|
console.log(this.code)
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
this.ids = data || []
|
this.ids = data || []
|
||||||
this.formInline = {}
|
this.formInline = {}
|
||||||
@@ -221,6 +364,15 @@
|
|||||||
this.handleOkOne()
|
this.handleOkOne()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
getDeliverableTree() {
|
||||||
|
getAction('/sys/category/getDeliverableTree', {}).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.DeliverableTreeList = res.result
|
||||||
|
} else {
|
||||||
|
this.DeliverableTreeList = []
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
handleOkOne() {
|
handleOkOne() {
|
||||||
let ids = JSON.parse(JSON.stringify(this.ids))
|
let ids = JSON.parse(JSON.stringify(this.ids))
|
||||||
let query = {
|
let query = {
|
||||||
|
|||||||
@@ -97,20 +97,24 @@
|
|||||||
<!-- 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: left;margin-bottom: 0px;margin-left: 20px" v-if="isDisplay">
|
<div style="float: left;margin-bottom: 0px;margin-left: 20px">
|
||||||
<div @click="transferClick" class="operator-text">
|
<!-- 调取-->
|
||||||
|
<div @click="transferClick" class="operator-text" v-if="this.formInlineRoleSwitching.roleSwitchingCode == '0'">
|
||||||
<a-icon type="profile" />
|
<a-icon type="profile" />
|
||||||
{{ $t('Transfer') }}
|
{{ $t('Transfer') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="operator-text" @click="bringInRelevantPersonnelClick">
|
<!-- 带入相关人员-->
|
||||||
|
<div class="operator-text" @click="bringInRelevantPersonnelClick" v-if="this.formInlineRoleSwitching.roleSwitchingCode == '0'">
|
||||||
<a-icon type="user" />
|
<a-icon type="user" />
|
||||||
{{ $t('bringInRelevantPersonnel') }}
|
{{ $t('bringInRelevantPersonnel') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="operator-text" @click="batSettingClick">
|
<!-- 批量设置-->
|
||||||
|
<div class="operator-text" @click="batSettingClick" v-if="this.formInlineRoleSwitching.roleSwitchingCode == '0' || this.formInlineRoleSwitching.roleSwitchingCode == '1'">
|
||||||
<a-icon type="setting" />
|
<a-icon type="setting" />
|
||||||
{{ $t('BatchSetting') }}
|
{{ $t('BatchSetting') }}
|
||||||
</div>
|
</div>
|
||||||
<a-popconfirm :visible="customizevisible" overlayClassName="popconfirmmize" placement="bottomRight">
|
<!-- 列表设置-->
|
||||||
|
<a-popconfirm :visible="customizevisible" overlayClassName="popconfirmmize" placement="bottomRight" v-if="this.formInlineRoleSwitching.roleSwitchingCode == '0' || this.formInlineRoleSwitching.roleSwitchingCode == '1'">
|
||||||
<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;">
|
||||||
<a-checkbox
|
<a-checkbox
|
||||||
@@ -137,38 +141,47 @@
|
|||||||
<a-icon type="setting" />
|
<a-icon type="setting" />
|
||||||
{{ $t('customize') }}
|
{{ $t('customize') }}
|
||||||
</div>
|
</div>
|
||||||
</a-popconfirm>
|
</a-popconfirm v-if="this.formInlineRoleSwitching.roleSwitchingCode == '0' || this.formInlineRoleSwitching.roleSwitchingCode == '1'">
|
||||||
<a-popconfirm overlayClassName="popconfirm" placement="bottomRight">
|
<!-- 更多-->
|
||||||
|
<a-popconfirm overlayClassName="popconfirm" placement="bottomRight" v-if="this.formInlineRoleSwitching.roleSwitchingCode == '0'">
|
||||||
<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 @click="handleAdd" class="operator-text-title">
|
<div @click="handleAdd" class="operator-text-title">
|
||||||
<a-icon type="plus" />
|
<a-icon type="plus" />
|
||||||
{{ $t('add') }}
|
{{ $t('add') }}
|
||||||
</div>
|
</div>
|
||||||
|
<!-- 复制-->
|
||||||
<div @click="copyClick" class="operator-text-title">
|
<div @click="copyClick" class="operator-text-title">
|
||||||
<a-icon type="copy" />
|
<a-icon type="copy" />
|
||||||
{{ $t('copy') }}
|
{{ $t('copy') }}
|
||||||
</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 @click="handleModule" class="operator-text-title">
|
<div @click="handleModule" class="operator-text-title">
|
||||||
<a-icon type="download" />
|
<a-icon type="download" />
|
||||||
{{ $t('templateDownload') }}
|
{{ $t('templateDownload') }}
|
||||||
</div>
|
</div>
|
||||||
|
<!-- 导入-->
|
||||||
<div class="operator-text-title">
|
<div class="operator-text-title">
|
||||||
<ImportFile :url="url" :projectLibraryId=$route.query.id :isTrue="true" :accept="'.zip'"
|
<ImportFile :url="url" :projectLibraryId=$route.query.id :isTrue="true" :accept="'.zip'"
|
||||||
@getList="getPersonnelList" />
|
@getList="getPersonnelList" />
|
||||||
</div>
|
</div>
|
||||||
|
<!-- 导出-->
|
||||||
<div @click="handleExport" v-has="'projectLawsInventory:exportData'" class="operator-text-title">
|
<div @click="handleExport" v-has="'projectLawsInventory:exportData'" class="operator-text-title">
|
||||||
<a-icon type="export" :rotate="-90" />
|
<a-icon type="export" :rotate="-90" />
|
||||||
{{ $t('export') }}
|
{{ $t('export') }}
|
||||||
</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 class="operator-text-title" @click="ExportReportClick">
|
<div class="operator-text-title" @click="ExportReportClick">
|
||||||
<a-icon type="export" :rotate="-90" />
|
<a-icon type="export" :rotate="-90" />
|
||||||
{{ $t('compliancereport') }}
|
{{ $t('compliancereport') }}
|
||||||
@@ -181,6 +194,7 @@
|
|||||||
<!-- <a-icon type="setting" />-->
|
<!-- <a-icon type="setting" />-->
|
||||||
<!-- {{ $t('batchSettingPersonnel') }}-->
|
<!-- {{ $t('batchSettingPersonnel') }}-->
|
||||||
<!-- </div>-->
|
<!-- </div>-->
|
||||||
|
<!-- 流程重置-->
|
||||||
<div class="operator-text-title" @click="alterationClick">
|
<div class="operator-text-title" @click="alterationClick">
|
||||||
<a-icon type="file-search" />
|
<a-icon type="file-search" />
|
||||||
{{ $t('processReset') }}
|
{{ $t('processReset') }}
|
||||||
@@ -196,47 +210,43 @@
|
|||||||
<!-- {{ $t('initiateTaskConfirmation') }}-->
|
<!-- {{ $t('initiateTaskConfirmation') }}-->
|
||||||
<!-- </div>-->
|
<!-- </div>-->
|
||||||
</div>
|
</div>
|
||||||
<div style="float: right;margin-top: 1px;;margin-right: 20px" v-if="isDisplay">
|
<div style="float: right;margin-top: 1px;;margin-right: 20px">
|
||||||
|
|
||||||
<!-- <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="initiateListConfirmationcClick('清单')">
|
|
||||||
<a-icon type="solution" />
|
|
||||||
{{ $t('release') }}
|
|
||||||
</div>
|
|
||||||
<div class="operator-text" @click="withdrawnClick">
|
|
||||||
<a-icon type="rollback" />
|
|
||||||
{{ $t('withdraw') }}
|
|
||||||
</div>
|
|
||||||
<div class="operator-text" @click="questionClick">
|
|
||||||
<a-icon type="sound" />
|
|
||||||
{{ $t('question') }}
|
|
||||||
</div>
|
|
||||||
<!-- <div class="operator-text"-->
|
|
||||||
<!-- v-if="roleSwitchingList.length > 1"-->
|
|
||||||
<!-- @click="roleSwitchingClick">-->
|
|
||||||
<!-- <a-icon type="select" />-->
|
|
||||||
<!-- {{ $t('roleSwitching') }}-->
|
|
||||||
<!-- </div>-->
|
|
||||||
</div>
|
|
||||||
<div v-if="!isDisplay" style="float: right;margin-top: 1px;margin-bottom: 0px;margin-right: 20px">
|
|
||||||
<div @click="handleExport" v-has="'projectLawsInventory:exportData'"
|
<div @click="handleExport" v-has="'projectLawsInventory:exportData'"
|
||||||
v-if="isRoleSwitching || formInlineRoleSwitching.roleSwitchingCode == '12'"
|
v-if="this.formInlineRoleSwitching.roleSwitchingCode == '1' || this.formInlineRoleSwitching.roleSwitchingCode == '2' || this.formInlineRoleSwitching.roleSwitchingCode == '30' || this.formInlineRoleSwitching.roleSwitchingCode == '31'"
|
||||||
class="operator-text">
|
class="operator-text">
|
||||||
<a-icon type="export" :rotate="-90" />
|
<a-icon type="export" :rotate="-90" />
|
||||||
{{ $t('export') }}
|
{{ $t('export') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="operator-text" @click="submitClick(0)" v-if="isRoleSwitching">
|
<!-- 发布-->
|
||||||
|
<div class="operator-text" @click="initiateListConfirmationcClick('清单')" v-if="this.formInlineRoleSwitching.roleSwitchingCode == '0'">
|
||||||
|
<a-icon type="solution" />
|
||||||
|
{{ $t('release') }}
|
||||||
|
</div>
|
||||||
|
<!-- 撤回-->
|
||||||
|
<div class="operator-text" @click="withdrawnClick" v-if="this.formInlineRoleSwitching.roleSwitchingCode == '0'">
|
||||||
|
<a-icon type="rollback" />
|
||||||
|
{{ $t('withdraw') }}
|
||||||
|
</div>
|
||||||
|
<!-- 发起任务-->
|
||||||
|
<div class="operator-text" @click="submitClick(0)" v-if="this.formInlineRoleSwitching.roleSwitchingCode == '1'">
|
||||||
<a-icon type="check-circle" />
|
<a-icon type="check-circle" />
|
||||||
{{ $t('submit') }}
|
{{ $t('initiateTask') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="operator-text" @click="submitClick(1)" v-if="isRoleSwitching">
|
<!-- 退回-->
|
||||||
|
<div class="operator-text" @click="submitClick(1)" v-if="this.formInlineRoleSwitching.roleSwitchingCode == '1'">
|
||||||
<a-icon type="close-circle" />
|
<a-icon type="close-circle" />
|
||||||
{{ $t('overrule') }}
|
{{ $t('sendBack') }}
|
||||||
|
</div>
|
||||||
|
<!-- 催办-->
|
||||||
|
<div class="operator-text" @click="questionClick" v-if="this.formInlineRoleSwitching.roleSwitchingCode == '0' || this.formInlineRoleSwitching.roleSwitchingCode == '1' || this.formInlineRoleSwitching.roleSwitchingCode == '30'">
|
||||||
|
<a-icon type="sound" />
|
||||||
|
{{ $t('question') }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- <div class="operator-text"-->
|
<!-- <div class="operator-text"-->
|
||||||
<!-- v-if="roleSwitchingList.length > 1"-->
|
<!-- v-if="roleSwitchingList.length > 1"-->
|
||||||
<!-- @click="roleSwitchingClick">-->
|
<!-- @click="roleSwitchingClick">-->
|
||||||
@@ -1603,8 +1613,9 @@ export default {
|
|||||||
this.$refs.transferListRef.transferModel()
|
this.$refs.transferListRef.transferModel()
|
||||||
},
|
},
|
||||||
batSettingClick() {
|
batSettingClick() {
|
||||||
|
let code = this.formInlineRoleSwitching.roleSwitchingCode
|
||||||
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
|
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
|
||||||
this.$refs.batSettingRef.edit(JSON.parse(JSON.stringify(this.selectedRowKeys)))
|
this.$refs.batSettingRef.edit(JSON.parse(JSON.stringify(this.selectedRowKeys)),code)
|
||||||
} else {
|
} else {
|
||||||
this.$message.warning(this.$t('selectLeastOne'))
|
this.$message.warning(this.$t('selectLeastOne'))
|
||||||
}
|
}
|
||||||
@@ -1652,7 +1663,47 @@ export default {
|
|||||||
},
|
},
|
||||||
// 撤回
|
// 撤回
|
||||||
withdrawnClick(){
|
withdrawnClick(){
|
||||||
|
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
|
||||||
|
let selectedRowKeys = JSON.parse(JSON.stringify(this.selectedRowKeys))
|
||||||
|
let isTrue
|
||||||
|
for (let i = 0; i < this.dataSource.length; i++) {
|
||||||
|
for (let j = 0; j < selectedRowKeys.length; j++) {
|
||||||
|
if (this.dataSource[i].id == selectedRowKeys[j]) {
|
||||||
|
if (this.dataSource[i].taskAffirmStatus == 'List to confirm' ||
|
||||||
|
this.dataSource[i].inventoryAffirmStatus == 'List to confirm') {
|
||||||
|
isTrue = true
|
||||||
|
} else {
|
||||||
|
isTrue = false
|
||||||
|
this.$message.warning(this.$t('statusthetasistobeconfirmed'))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (isTrue) {
|
||||||
|
let _this = this
|
||||||
|
this.$confirm({
|
||||||
|
content: _this.$t('confirmWithdraw'),
|
||||||
|
onOk() {
|
||||||
|
let query = {
|
||||||
|
ids: selectedRowKeys.join(','),
|
||||||
|
projectLibraryId: _this.$route.query.id
|
||||||
|
}
|
||||||
|
postAction('project/projectLawsInventoryEO/expediting', query).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
_this.$message.success(_this.$t('OperationSuccessful'))
|
||||||
|
_this.selectedRowKeys = []
|
||||||
|
_this.getList()
|
||||||
|
} else {
|
||||||
|
_this.$message.warning(_this.$t('operationFailed'))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.$message.warning(this.$t('selectLeastOne'))
|
||||||
|
}
|
||||||
},
|
},
|
||||||
questionClick() {
|
questionClick() {
|
||||||
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
|
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
|
||||||
@@ -1722,19 +1773,19 @@ export default {
|
|||||||
for (let i = 0; i < this.dataSource.length; i++) {
|
for (let i = 0; i < this.dataSource.length; i++) {
|
||||||
for (let j = 0; j < selectedRowKeys.length; j++) {
|
for (let j = 0; j < selectedRowKeys.length; j++) {
|
||||||
if (this.dataSource[i].id == selectedRowKeys[j]) {
|
if (this.dataSource[i].id == selectedRowKeys[j]) {
|
||||||
if (this.dataSource[i].taskAffirmStatus == 'Accepted' ||
|
// if (this.dataSource[i].taskAffirmStatus == 'Accepted' ||
|
||||||
(this.dataSource[i].inventoryAffirmStatus == 'Accepted' && this.dataSource[i].taskAffirmStatus == 'Accepted') ||
|
// (this.dataSource[i].inventoryAffirmStatus == 'Accepted' && this.dataSource[i].taskAffirmStatus == 'Accepted') ||
|
||||||
(this.dataSource[i].inventoryAffirmStatus == 'Rejected' && this.dataSource[i].taskAffirmStatus == 'Accepted') ||
|
// (this.dataSource[i].inventoryAffirmStatus == 'Rejected' && this.dataSource[i].taskAffirmStatus == 'Accepted') ||
|
||||||
(this.dataSource[i].inventoryAffirmStatus == 'Accepted' && this.dataSource[i].taskAffirmStatus == 'Rejected') ||
|
// (this.dataSource[i].inventoryAffirmStatus == 'Accepted' && this.dataSource[i].taskAffirmStatus == 'Rejected') ||
|
||||||
(this.dataSource[i].inventoryAffirmStatus == 'Rejected' && this.dataSource[i].taskAffirmStatus == 'Rejected') ||
|
// (this.dataSource[i].inventoryAffirmStatus == 'Rejected' && this.dataSource[i].taskAffirmStatus == 'Rejected') ||
|
||||||
(this.dataSource[i].inventoryAffirmStatus == 'Accepted' && this.dataSource[i].taskAffirmStatus == 'Not started') ||
|
// (this.dataSource[i].inventoryAffirmStatus == 'Accepted' && this.dataSource[i].taskAffirmStatus == 'Not started') ||
|
||||||
(this.dataSource[i].inventoryAffirmStatus == 'Rejected' && this.dataSource[i].taskAffirmStatus == 'Not started')) {
|
// (this.dataSource[i].inventoryAffirmStatus == 'Rejected' && this.dataSource[i].taskAffirmStatus == 'Not started')) {
|
||||||
isTrue = true
|
isTrue = true
|
||||||
} else {
|
// } else {
|
||||||
isTrue = false
|
// isTrue = false
|
||||||
this.$message.warning(this.$t('theTaskConfirmationStatusCannot'))
|
// this.$message.warning(this.$t('theTaskConfirmationStatusCannot'))
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2652,7 +2703,7 @@ export default {
|
|||||||
let _this = this
|
let _this = this
|
||||||
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
|
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
|
||||||
this.$confirm({
|
this.$confirm({
|
||||||
content: num == 0 ? _this.$t('confirmSubmit') : _this.$t('confirmOverrule'),
|
content: num == 0 ? _this.$t('confirmLaunchTask') : _this.$t('confirmreturn'),
|
||||||
onOk() {
|
onOk() {
|
||||||
if (num == 0) {
|
if (num == 0) {
|
||||||
let selectedRowKeys = JSON.parse(JSON.stringify(_this.selectedRowKeys))
|
let selectedRowKeys = JSON.parse(JSON.stringify(_this.selectedRowKeys))
|
||||||
|
|||||||
Reference in New Issue
Block a user