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

This commit is contained in:
高嵩
2023-10-10 14:31:52 +08:00
39 changed files with 1775 additions and 463 deletions
@@ -1249,7 +1249,7 @@ MODIFY COLUMN `lot` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_c
MODIFY COLUMN `detection_report_location` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '检测报告位置' AFTER `experiment_file`,
MODIFY COLUMN `explain_info` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '说明' AFTER `detection_report_location`;
--添加平台件项目库字段2023-09-28
--添加平台件项目库字段2023-10-09
ALTER TABLE `project_library_base`
ADD COLUMN `power` varchar(255) NULL COMMENT '功率' AFTER `platform`,
ADD COLUMN `producer` varchar(255) NULL COMMENT '生产商' AFTER `power`,
@@ -1269,13 +1269,17 @@ ADD COLUMN `battery_type_code` varchar(255) NULL COMMENT '电池类型代码' AF
ADD COLUMN `specification_code` varchar(255) NULL COMMENT '规格代码' AFTER `battery_type_code`,
ADD COLUMN `traceability_code` varchar(255) NULL COMMENT '追溯代码' AFTER `specification_code`,
ADD COLUMN `ymd_number` varchar(255) NULL COMMENT '生产也月日序列号' AFTER `traceability_code`,
ADD COLUMN `size` double(255, 0) NULL COMMENT '尺寸' AFTER `ymd_number`,
ADD COLUMN `size` varchar(255) NULL COMMENT '尺寸' AFTER `ymd_number`,
ADD COLUMN `rated_capacity` varchar(255) NULL COMMENT '额定容量' AFTER `size`,
ADD COLUMN `nominal_voltage` varchar(255) NULL COMMENT '标称电压' AFTER `rated_capacity`,
ADD COLUMN `rated_mass` varchar(255) NULL COMMENT '额定质量' AFTER `nominal_voltage`,
ADD COLUMN `module_number` varchar(0) NULL COMMENT '包含模块个数' AFTER `rated_mass`,
ADD COLUMN `module_number` varchar(255) NULL COMMENT '包含模块个数' AFTER `rated_mass`,
ADD COLUMN `connection_type` varchar(255) NULL COMMENT '模块串并联方式' AFTER `module_number`,
ADD COLUMN `module_specification_code` varchar(255) NULL COMMENT '所用模块或单体规格代码' AFTER `connection_type`,
ADD COLUMN `cooling_method` varchar(255) NULL COMMENT '冷却方式' AFTER `module_specification_code`,
ADD COLUMN `filing_completion_time` datetime(0) NULL COMMENT '备案完成时间' AFTER `cooling_method`,
ADD COLUMN `remark` varchar(1000) NULL COMMENT '备注' AFTER `filing_completion_time`;
--平台件合规认证计划添加标识字段2023-10-09
ALTER TABLE `platform_task_planning`
ADD COLUMN `flag` varchar(255) NULL COMMENT '位置标识(用来区分上下两部分数据,up->上,down->下)' AFTER `project_id`,
@@ -161,4 +161,9 @@ public class AuthDummyInventoryInfoEO implements Serializable {
/**认证类型*/
@ApiModelProperty(value = "认证类型")
private String attestationType;
/**备注*/
@ApiModelProperty(value = "备注")
@Excel(name = "备注", width = 50)
private String remark;
}
@@ -961,9 +961,9 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
if(CollectionUtils.isNotEmpty(baseList)){
String title = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
title = "*类别,*检验项目,*配置项,*认证类型,*WVTA ID,*编号,*责任领域,*交付物类型,交付物模板";
title = "*类别,*检验项目,*配置项,*认证类型,*WVTA ID,*编号,*责任领域,*交付物类型,交付物模板,备注";
}else{
title = "*Category,*Inspection Items,*Configuration Item,*Certification Type,*WVTA ID,*Number,*Responsible Field,*Deliverable Type,Deliverable Template";
title = "*Category,*Inspection Items,*Configuration Item,*Certification Type,*WVTA ID,*Number,*Responsible Field,*Deliverable Type,Deliverable Template,Remark";
}
int pos = file.getOriginalFilename().lastIndexOf(".");
@@ -1081,7 +1081,7 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
if (i == 0) {
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
headerSb.append(cell.getStringCellValue() + ",");
if(j == 8){
if(j == 9){
break;
}
} else if(i > 1){
@@ -1623,10 +1623,12 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
}else{
for (AuthDummyInventoryInfoEO authDummyInventoryInfoEO : datas) {
List<BussDocumentLibraryEO> collect = bussDocumentLibraryEOList.stream()
.filter(e -> e.getSerialNumber().equals(authDummyInventoryInfoEO.getSerialNumber())).collect(Collectors.toList());
.filter(e -> e.getSerialNumber().trim().equals(authDummyInventoryInfoEO.getSerialNumber().trim())).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(collect)){
authDummyInventoryInfoEO.setBussDocumentLibraryId(collect.get(0).getId());
}
}
}
// //2. 验证标准号在法规清单中是否添加过
// LambdaQueryWrapper<ProjectCertificationInventoryEO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
// lambdaQueryWrapper.in(ProjectCertificationInventoryEO::getSerialNumber,serialNumberList).in(ProjectCertificationInventoryEO::getProjectLibraryId,projectCertificationInventoryEOTemp.getProjectLibraryId());
@@ -1705,6 +1707,7 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
case "*责任领域": return "dutyTerritoryName";
case "交付物模板": return "deliverableTemplateName";
case "*交付物类型" : return "deliverableTypeName";
case "备注" : return "remark";
case "*Category" : return "Category";
case "*Inspection Items" : return"inspectionItem";
@@ -1715,6 +1718,7 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
case "*Responsible Field" : return "dutyTerritoryName";
case "Deliverable Template" : return "deliverableTemplateName";
case "*Deliverable Type" : return "deliverableTypeNameEn";
case "Remark" : return "remark";
default: return null;
@@ -1797,17 +1801,17 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
String title = "";
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
title = "*类别,*检验项目,*配置项,*认证类型,*WVTA ID," +
"*编号,*责任领域,*交付物类型,交付物模板,";
"*编号,*责任领域,*交付物类型,交付物模板,备注,";
}else{
title = "*Category,*Inspection Items,*Configuration Item,*Certification Type,*WVTA ID," +
"*Number,*Responsible Field,*Deliverable Type,Deliverable Template,";
"*Number,*Responsible Field,*Deliverable Type,Deliverable Template,Remark,";
}
List<String> list = Arrays.asList(title.split(","));
int index = 0;
if(CutEnum.CN.getValue().equals(authDummyInventoryInfoEO.getCut())){
index = list.indexOf("交付物模板") + 1;
index = list.indexOf("备注") + 1;
}else{
index = list.indexOf("Deliverable Template") + 1;
index = list.indexOf("Remark") + 1;
}
//创建临时文件夹
@@ -133,7 +133,7 @@
left join project_name_info as pni on plb.project_name_id = pni.id
left join project_year_name_info as pyni on plb.year_name_id=pyni.id
) tmp_tb
where 1=1 and state = #{state} and plb.platform is null
where 1=1 and state = #{state}
<if test="projectName !=null and projectName !=''">
AND project_name LIKE CONCAT(CONCAT('%',#{projectName}),'%')
</if>
@@ -153,7 +153,7 @@
left join project_name_info as pni on plb.project_name_id = pni.id
left join project_year_name_info as pyni on plb.year_name_id=pyni.id
) tmp_tb
where 1=1 and plb.platform is null and id in
where 1=1 and id in
<foreach collection="idList" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
@@ -175,7 +175,7 @@
left join project_name_info as pni on plb.project_name_id = pni.id
left join project_year_name_info as pyni on plb.year_name_id=pyni.id
) tmp_tb
where 1=1 and plb.platform is null and state = #{state}
where 1=1 and state = #{state}
and id in(
SELECT pm.id AS pm FROM params_manifest pm
JOIN ( SELECT id FROM
@@ -183,7 +183,7 @@
FROM
project_library_base a
JOIN mysql.help_topic b ON b.help_topic_id &lt; ( length( a.certification_engineer ) - length( REPLACE ( a.certification_engineer, ',', '' ) ) + 1 )) temp
WHERE user_id = #{userId} and platform is null) a ON pm.project_id = a.id
WHERE user_id = #{userId}) a ON pm.project_id = a.id
UNION
SELECT DISTINCT pcm.params_manifest_id AS pm FROM params_collect_manifest pcm WHERE sdt = #{userName} and state in('2','5')
@@ -211,7 +211,7 @@
left join project_name_info as pni on plb.project_name_id = pni.id
left join project_year_name_info as pyni on plb.year_name_id = pyni.id
) tmp_tb
where project_id = #{projectId} and plb.platform is null
where project_id = #{projectId}
</select>
<select id="labelListForProjectDetails" resultType="java.util.LinkedHashMap">
@@ -232,7 +232,7 @@
FROM
project_library_base a
JOIN mysql.help_topic b ON b.help_topic_id &lt; ( length( a.certification_engineer ) - length( REPLACE ( a.certification_engineer, ',', '' ) ) + 1 )) temp
WHERE user_id = #{userId} and platform is null) a ON pm.project_id = a.id
WHERE user_id = #{userId}) a ON pm.project_id = a.id
where pm.state = #{state}
</select>
</mapper>
@@ -619,6 +619,7 @@ public class ParamsManifestEOServiceImpl extends ServiceImpl<ParamsManifestEOMap
for (ParamsCollectManifestEO oldCollectManifestEO : diffList) {
ParamsCollectManifestEO updateCollectManifestEO = new ParamsCollectManifestEO();
updateCollectManifestEO.setId(oldCollectManifestEO.getId());
updateCollectManifestEO.setNioNumber(oldCollectManifestEO.getNioNumber());
updateCollectManifestEO.setState(CollectManifestStateEnum.CHANGE.getValue());
updateCollectManifestEO.setChangeFlag(CollectManifestChangeFlagEnum.CHANGE_BEFORE.getValue()); // 标记为变更前参数项
updateCollectManifestEO.setDelFlag(CollectManifestChangeFlagEnum.DELETE_AFTER.getValue()); // 因新发布模板中没有该参数项,标记为变更时已删除参数项
@@ -78,9 +78,9 @@ public class PlatformTaskPlanningEOController extends JeroController<PlatformTas
@AutoLog(value = "平台件合规认证计划-列表查询")
@ApiOperation(value="平台件合规认证计划-列表查询", notes="平台件合规认证计划-列表查询")
@GetMapping(value = "/list")
public Result<List<PlatformTaskPlanningEO>> queryList(String projectId) {
List<PlatformTaskPlanningEO> list = platformTaskPlanningEOService.queryList(projectId);
return Result.OK(list);
public Result<?> queryList(String projectId) {
Map<String,Object> result = platformTaskPlanningEOService.queryList(projectId);
return Result.OK(result);
}
/**
@@ -106,9 +106,17 @@ public class PlatformTaskPlanningEOController extends JeroController<PlatformTas
@ApiOperation(value="平台件合规认证计划-批量添加", notes="平台件合规认证计划-批量添加")
@PostMapping(value = "/addBatch")
public Result<?> addBatch(@RequestBody Map<String,Object> data) {
JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(data.get("list")));
List<PlatformTaskPlanningEO> platformTaskPlanningEOList = jsonArray.toJavaList(PlatformTaskPlanningEO.class);
platformTaskPlanningEOService.addBatch(platformTaskPlanningEOList);
// JSONArray jsonArray = JSONArray.parseArray(JSON.toJSONString(data.get("list")));
// JSONArray jsonArrayUp = JSONArray.parseArray(JSON.toJSONString(data.get("listUp")));
// JSONArray jsonArrayDown = JSONArray.parseArray(JSON.toJSONString(data.get("listDown")));
// List<PlatformTaskPlanningEO> platformTaskPlanningEOListUp = jsonArray.toJavaList(PlatformTaskPlanningEO.class);
// List<PlatformTaskPlanningEO> platformTaskPlanningEOListDown = jsonArray.toJavaList(PlatformTaskPlanningEO.class);
// platformTaskPlanningEOService.addBatch(platformTaskPlanningEOListUp,platformTaskPlanningEOListDown);
JSONArray jsonArrayUp = JSONArray.parseArray(JSON.toJSONString(data.get("listUp")));
JSONArray jsonArrayDown = JSONArray.parseArray(JSON.toJSONString(data.get("listDown")));
List<PlatformTaskPlanningEO> platformTaskPlanningEOListUp = jsonArrayUp.toJavaList(PlatformTaskPlanningEO.class);
List<PlatformTaskPlanningEO> platformTaskPlanningEOListDown = jsonArrayDown.toJavaList(PlatformTaskPlanningEO.class);
platformTaskPlanningEOService.addBatch(platformTaskPlanningEOListUp,platformTaskPlanningEOListDown);
return Result.OK("添加成功!");
}
@@ -93,4 +93,7 @@ public class PlatformTaskPlanningEO implements Serializable {
@TableField(exist = false)
private boolean isG;
//标识(用来区分上下两部分数据,up->上,down->下)
private String Flag;
}
@@ -0,0 +1,45 @@
package com.jero.modules.platform.enums;
/**
* 任务状态枚举类
*/
public enum UpAndDownEnum {
UP("上部分","up"),
DOWN("下部分","down"),
;
String name;
String value;
private UpAndDownEnum(String name, String value) {
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public static String getTextByValue(String value) {
UpAndDownEnum[] values = values();
for (UpAndDownEnum taskStatusEnum : values) {
if (taskStatusEnum.value.equals(value)) {
return taskStatusEnum.name;
}
}
return null;
}
}
@@ -52,6 +52,34 @@
plb.sort,
plb.flag,
plb.brand,
plb.power,
plb.producer,
plb.duty_depart,
plb.regulation_owner_id,
plb.engineering_interface_person,
plb.brand_label,
plb.product_model,
plb.cell_enterprise,
plb.assembly_enterprise,
plb.part_number_cn,
plb.part_number_en,
plb.filing_code,
plb.supplier_code,
plb.product_type_code,
plb.battery_type_code,
plb.specification_code,
plb.traceability_code,
plb.ymd_number,
plb.size,
plb.rated_capacity,
plb.nominal_voltage,
plb.rated_mass,
plb.module_number,
plb.connection_type,
plb.module_specification_code,
plb.cooling_method,
plb.filing_completion_time,
plb.remark,
sdi.item_text brandText,
sdi.en_name brandTextEn
from project_library_base as plb
@@ -3,6 +3,7 @@ package com.jero.modules.platform.service;
import com.jero.modules.platform.entity.PlatformTaskPlanningEO;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
import java.util.Map;
/**
* @Description: 平台件合规认证计划
@@ -22,9 +23,10 @@ public interface IPlatformTaskPlanningEOService extends IService<PlatformTaskPla
/**
* 平台件合规认证计划-批量添加
* @param platformTaskPlanningEOList
* @param platformTaskPlanningEOListUp
* @param platformTaskPlanningEOListDown
*/
void addBatch(List<PlatformTaskPlanningEO> platformTaskPlanningEOList);
void addBatch(List<PlatformTaskPlanningEO> platformTaskPlanningEOListUp,List<PlatformTaskPlanningEO> platformTaskPlanningEOListDown);
/**
* 更新
@@ -63,5 +65,5 @@ public interface IPlatformTaskPlanningEOService extends IService<PlatformTaskPla
*
* @return
*/
List<PlatformTaskPlanningEO> queryList(String projectId);
Map<String,Object> queryList(String projectId);
}
@@ -4555,11 +4555,11 @@ public class PlatformProjectCertificationInventoryEOServiceImpl extends ServiceI
if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){
title = "*类别,*检验项目,*认证类型,*WVTA ID," +
"*标准编号,*责任领域,*工程接口人,*责任人," +
"交付物模板,*交付物类型,*截止日期,报告编号,产品型号,生产企业名称";
"交付物模板,*交付物类型,*截止日期,报告编号,产品型号,生产企业名称,备注";
}else {
title = "*Category,*Inspection Items,*Certification Type,*WVTA ID," +
"*Standard No,*Responsible Field,*Eng. Interface,*Assignee," +
"Deliverable Template,*Deliverable Type,*Due Date,Report No,Product Model,Name Of Manufacturer";
"Deliverable Template,*Deliverable Type,*Due Date,Report No,Product Model,Name Of Manufacturer,Remark";
}
int pos = file.getOriginalFilename().lastIndexOf(".");
@@ -4675,7 +4675,7 @@ public class PlatformProjectCertificationInventoryEOServiceImpl extends ServiceI
if (i == 0) {
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
headerSb.append(cell.getStringCellValue() + ",");
if(j == 14){
if(j == 15){
break;
}
} else if(i > 1){
@@ -5823,6 +5823,7 @@ public class PlatformProjectCertificationInventoryEOServiceImpl extends ServiceI
case "产品型号": return "productModel";
case "生产企业名称": return "productionEnterpriseName";
case "认证进度": return "certificationProgress";
case "备注": return "remark";
case "*Category": return "category";
case "*Inspection Items": return "inspectionItem";
@@ -5842,6 +5843,7 @@ public class PlatformProjectCertificationInventoryEOServiceImpl extends ServiceI
case "Product Model": return "productModel";
case "Name Of Manufacturer": return "productionEnterpriseName";
case "Homologation Progress": return "certificationProgress";
case "Remark": return "remark";
default: return null;
//"Deliverable Type,Deliverable Template,initiator,Assignee,Due Date," +
@@ -5866,19 +5868,19 @@ public class PlatformProjectCertificationInventoryEOServiceImpl extends ServiceI
if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){
title = "*类别,*检验项目,*认证类型,*WVTA ID," +
"*标准编号,*责任领域,*工程接口人,*责任人," +
"交付物模板,*交付物类型,*截止日期,报告编号,产品型号,生产企业名称";
"交付物模板,*交付物类型,*截止日期,报告编号,产品型号,生产企业名称,备注";
}else {
title = "*Category,*Inspection Items,*Certification Type,*WVTA ID," +
"*Standard No,*Responsible Field,*Eng. Interface,*Assignee," +
"Deliverable Template,*Deliverable Type,*Due Date,Report No,Product Model,Name Of Manufacturer";
"Deliverable Template,*Deliverable Type,*Due Date,Report No,Product Model,Name Of Manufacturer,Remark";
}
List<String> list = Arrays.asList(title.split(","));
int index = 0;
if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){
index = list.indexOf("生产企业名称") + 1;
index = list.indexOf("备注") + 1;
}else{
index = list.indexOf("Name Of Manufacturer") + 1;
index = list.indexOf("Remark") + 1;
}
//创建临时文件夹
@@ -5902,7 +5904,7 @@ public class PlatformProjectCertificationInventoryEOServiceImpl extends ServiceI
cellStyleTemp.setWrapText(true);//自动换行
CellRangeAddress region =
new CellRangeAddress(1, 1, 0, 13); //参数1起始行 参数2终止行 参数3起始列 参数4终止列
new CellRangeAddress(1, 1, 0, 14); //参数1起始行 参数2终止行 参数3起始列 参数4终止列
sheet.addMergedRegion(region);
String explain= "";
if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){
@@ -6071,8 +6073,10 @@ public class PlatformProjectCertificationInventoryEOServiceImpl extends ServiceI
String projectLibraryId = pciList.get(0).getProjectLibraryId();
ProjectLibraryBase projectLibraryBase = this.platformProjectLibraryBaseService.selectById(projectLibraryId);
if(ObjectUtils.isNotEmpty(projectLibraryBase)){
List<SysUser> studioEngineerUserInfo = this.sysUserService.querySysUserListByIdList(Arrays.asList(projectLibraryBase.getStudioEngineer().split(",")));
List<SysUser> studioEngineerUserInfo = new ArrayList<>();
if(StringUtils.isNotBlank(projectLibraryBase.getStudioEngineer())){
studioEngineerUserInfo = this.sysUserService.querySysUserListByIdList(Arrays.asList(projectLibraryBase.getStudioEngineer().split(",")));
}
String certificationEngineerUserNames = "";
if(StringUtils.isNotBlank(projectLibraryBase.getCertificationEngineer())){
List<String> certificationEngineerIdList = Arrays.asList(projectLibraryBase.getCertificationEngineer().split(","));
@@ -569,7 +569,7 @@ public class PlatformProjectLawsInventoryEOServiceImpl extends ServiceImpl<Platf
@Override
public void editById(ProjectLawsInventoryEO projectLawsInventoryEO) {
this.editService.editById(projectLawsInventoryEO);
this.editService.editByIdPlatform(projectLawsInventoryEO);
}
/**
@@ -23,6 +23,8 @@ import com.jero.modules.cert.template.enums.ControlTypeEnum;
import com.jero.modules.dummy.enums.OrderEnum;
import com.jero.modules.enums.DictCodeEnum;
import com.jero.modules.feishu.enums.TemplateInfoEnum2;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.ota.service.impl.OtaManageApplyEOServiceImpl;
import com.jero.modules.platform.mapper.PlatformProjectLawsInventoryEOMapper;
import com.jero.modules.platform.mapper.PlatformProjectLibraryBaseMapper;
@@ -45,6 +47,7 @@ import com.jero.modules.project.enums.DesignComplianceStatusEnum;
import com.jero.modules.project.enums.HSStatisticalNodesEnum;
import com.jero.modules.project.enums.OperatorTypeEnum;
import com.jero.modules.project.enums.PermissionDescriptionEnum;
import com.jero.modules.project.enums.ProjectInventoryFieldEnum;
import com.jero.modules.project.enums.ProjectRoleEnum;
import com.jero.modules.project.enums.ProjectTaskPlanningNameEnum;
import com.jero.modules.project.enums.ProjectUserLocationEnum;
@@ -194,6 +197,8 @@ public class PlatformProjectLibraryBaseServiceImpl extends ServiceImpl<PlatformP
private OtaManageApplyEOServiceImpl otaManageApplyEOService;
@Autowired
private SysDictItemMapper sysDictItemMapper;
@Autowired
private IOSSFileService iOSSFileService;
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
private static DecimalFormat df = new DecimalFormat("#.00");
@@ -217,7 +222,21 @@ public class PlatformProjectLibraryBaseServiceImpl extends ServiceImpl<PlatformP
projectLibraryBase.setCreateBy(sysUser.getUsername());
projectLibraryBase.setUpdateBy(sysUser.getUsername());
checkExitData(projectLibraryBase);
// checkExitData(projectLibraryBase);
if(StringUtils.isNotBlank(projectLibraryBase.getBrandLabel())){
String valueTemp = UUID.randomUUID().toString().replace("-", "");
List<OSSFile> oSSFileList = new ArrayList<>();
for (String fileId : projectLibraryBase.getBrandLabel().split(",")) {
OSSFile ossFile = new OSSFile();
ossFile.setId(fileId);
ossFile.setConnectId(valueTemp);
oSSFileList.add(ossFile);
}
iOSSFileService.updateFileInfo(oSSFileList);
projectLibraryBase.setBrandLabel(valueTemp);
}
save(projectLibraryBase);
//创建任务计划时间轴
@@ -1057,7 +1076,6 @@ public class PlatformProjectLibraryBaseServiceImpl extends ServiceImpl<PlatformP
List<ProjectLibraryBase> result = this.list(queryWrapper);
LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
List<SysDictItem> dictItemList = sysDictItemMapper.selectItemsByDictCode(DictCodeEnum.BRAND.getValue());
//置顶
@@ -1068,9 +1086,29 @@ public class PlatformProjectLibraryBaseServiceImpl extends ServiceImpl<PlatformP
wrapper.in(TopProjectEO::getCreateBy,loginUser.getUsername()).in(TopProjectEO::getProjectLibraryBaseId,idList).orderByDesc(TopProjectEO::getSort);
topProjectEOList = iTopProjectEOService.list(wrapper);
}
//列表中的法规工程师和工程接口人
List<SysUser> sysUserList = getSysUserList(result);
//目标市场数据字典
// List<DictModel> targetMarketList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode());
List<DictModel> targetMarketList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode());
for(ProjectLibraryBase projectLibraryBase: result){
if(ObjectUtils.isNotEmpty(sysUserList)){
//法规工程师
if(StringUtils.isNotBlank(projectLibraryBase.getRegulationOwnerId())){
List<SysUser> collect = sysUserList.stream()
.filter(e -> e.getId().equals(projectLibraryBase.getRegulationOwnerId())).collect(Collectors.toList());
if(ObjectUtils.isNotEmpty(collect)){
projectLibraryBase.setRegulationOwnerIdName(collect.get(0).getUsername());
}
}
//工程接口人
if(StringUtils.isNotBlank(projectLibraryBase.getEngineeringInterfacePerson())){
List<SysUser> collect = sysUserList.stream()
.filter(e -> e.getId().equals(projectLibraryBase.getEngineeringInterfacePerson())).collect(Collectors.toList());
if(ObjectUtils.isNotEmpty(collect)){
projectLibraryBase.setEngineeringInterfacePersonName(collect.get(0).getUsername());
}
}
}
//处理品牌
List<SysDictItem> sysDictItemList = dictItemList.stream()
.filter(e -> e.getItemValue().equals(projectLibraryBase.getBrand())).collect(Collectors.toList());
@@ -1098,14 +1136,14 @@ public class PlatformProjectLibraryBaseServiceImpl extends ServiceImpl<PlatformP
}
//目标市场
// Map<String,Object> param = new HashMap<>();
// param.put("cut",cut);
// String targetMarket = getMarket(param, targetMarketList, projectLibraryBase);
// //项目名称(功率-生产商-目标市场)
// String projectName = projectLibraryBase.getPower() + "-" + projectLibraryBase.getProducer() + "-" + targetMarket;
// projectLibraryBase.setProjectNameId(projectName);//原设计平台件项目名称去这个字段值
// //平台件项目名称改为拼接的形式,projectNameId不在存数据,如果这个变更影响其他的地方,项目名称取值可以取projectName的值
// projectLibraryBase.setProjectName(projectName);
Map<String,Object> param = new HashMap<>();
param.put("cut",cut);
String targetMarket = getMarket(param, targetMarketList, projectLibraryBase);
//项目名称(功率-生产商-目标市场)
String projectName = projectLibraryBase.getPower() + "-" + projectLibraryBase.getProducer() + "-" + targetMarket;
projectLibraryBase.setProjectNameId(projectName);//原设计平台件项目名称去这个字段值
//平台件项目名称改为拼接的形式,projectNameId不在存数据,如果这个变更影响其他的地方,项目名称取值可以取projectName的值
projectLibraryBase.setProjectName(projectName);
}
if(ObjectUtils.isEmpty(params.get("orderByField"))){
@@ -1121,6 +1159,25 @@ public class PlatformProjectLibraryBaseServiceImpl extends ServiceImpl<PlatformP
return result;
}
private List<SysUser> getSysUserList(List<ProjectLibraryBase> result) {
List<String> RegulationOwnerIdList = result.stream().map(ProjectLibraryBase::getRegulationOwnerId).distinct().collect(Collectors.toList());
List<String> EngineeringInterfacePersonList = result.stream().map(ProjectLibraryBase::getEngineeringInterfacePerson).distinct().collect(Collectors.toList());
List<String> userIdList = new ArrayList<>();
if(ObjectUtils.isNotEmpty(RegulationOwnerIdList)){
userIdList.addAll(RegulationOwnerIdList);
}
if(ObjectUtils.isNotEmpty(EngineeringInterfacePersonList)){
userIdList.addAll(EngineeringInterfacePersonList);
}
List<SysUser> sysUserList = new ArrayList<>();
if(ObjectUtils.isNotEmpty(userIdList)){
QueryWrapper<SysUser> userqueryWrapper = new QueryWrapper<>();
userqueryWrapper.in("id ", userIdList);
sysUserList = sysUserMapper.selectList(userqueryWrapper);
}
return sysUserList;
}
private void hearSort(Map<String, Object> params, List<ProjectLibraryBase> resultList) {
if(ObjectUtils.isNotEmpty(params.get("orderByField"))){
Collator comparator = Collator.getInstance(Locale.CHINESE);
@@ -1418,6 +1475,7 @@ public class PlatformProjectLibraryBaseServiceImpl extends ServiceImpl<PlatformP
@Override
public void disposeData(List<ProjectLibraryBase> records,String cut,boolean disposeTargetMarketFlag) {
List<DictModel> targetMarketList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode());
List<SysUser> sysUserList = getSysUserList(records);
for (ProjectLibraryBase projectLibraryBase : records) {
List<SysUser> sysUsers = new ArrayList<>();
//认证工程师多个id查询
@@ -1448,6 +1506,36 @@ public class PlatformProjectLibraryBaseServiceImpl extends ServiceImpl<PlatformP
}
}
}
//法规工程师
if(StringUtils.isNotBlank(projectLibraryBase.getRegulationOwnerId())){
List<SysUser> collect = sysUserList.stream()
.filter(e -> e.getId().equals(projectLibraryBase.getRegulationOwnerId())).collect(Collectors.toList());
if(ObjectUtils.isNotEmpty(collect)){
projectLibraryBase.setRegulationOwnerIdName(collect.get(0).getUsername());
}
}
//工程接口人
if(StringUtils.isNotBlank(projectLibraryBase.getEngineeringInterfacePerson())){
List<SysUser> collect = sysUserList.stream()
.filter(e -> e.getId().equals(projectLibraryBase.getEngineeringInterfacePerson())).collect(Collectors.toList());
if(ObjectUtils.isNotEmpty(collect)){
projectLibraryBase.setEngineeringInterfacePersonName(collect.get(0).getUsername());
}
}
//责任部门
if(StringUtils.isNotBlank(projectLibraryBase.getDutyDepart())){
List<SysDictItem> sysDictItems = sysDictItemServiceImpl.getBaseMapper().selectItemsAll();
String dutyDepartName = platformProjectLawsInventoryEOService.disposeShowDictItemValue(sysDictItems, projectLibraryBase.getDutyDepart(), cut, ProjectInventoryFieldEnum.DUTY_TERRITORY.getValue());
projectLibraryBase.setDutyDepartName(dutyDepartName);
}
//名牌标签
if(StringUtils.isNotBlank(projectLibraryBase.getBrandLabel())){
List<OSSFile> fileList = iOSSFileService.getFileInfosByConnectId(projectLibraryBase.getBrandLabel());
if(ObjectUtils.isNotEmpty(fileList)){
List<String> urlList = fileList.stream().map(OSSFile::getUrl).collect(Collectors.toList());
projectLibraryBase.setUrlList(urlList);
}
}
if(disposeTargetMarketFlag){
if(StringUtils.isNotEmpty(projectLibraryBase.getTargetMarket())){
@@ -3,16 +3,20 @@ package com.jero.modules.platform.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.modules.platform.entity.PlatformTaskPlanningEO;
import com.jero.modules.platform.enums.UpAndDownEnum;
import com.jero.modules.platform.mapper.PlatformTaskPlanningEOMapper;
import com.jero.modules.platform.service.IPlatformTaskPlanningEOService;
import com.jero.modules.project.enums.PlanStatusEnum;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -40,23 +44,33 @@ public class PlatformTaskPlanningEOServiceImpl extends ServiceImpl<PlatformTaskP
/**
* 平台件合规认证计划-批量添加
* @param platformTaskPlanningEOList
* @param platformTaskPlanningEOListUp
* @param platformTaskPlanningEOListDown
*/
@Override
public void addBatch(List<PlatformTaskPlanningEO> platformTaskPlanningEOList) {
if(!platformTaskPlanningEOList.isEmpty()){
public void addBatch(List<PlatformTaskPlanningEO> platformTaskPlanningEOListUp,List<PlatformTaskPlanningEO> platformTaskPlanningEOListDown) {
if(!platformTaskPlanningEOListUp.isEmpty()){
//先删除在新增
// LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
LambdaQueryWrapper<PlatformTaskPlanningEO> wrapper = new LambdaQueryWrapper<>();
// wrapper.eq(PlatformTaskPlanningEO::getCreateBy,loginUser.getUsername());
wrapper.eq(PlatformTaskPlanningEO::getProjectId,platformTaskPlanningEOList.get(0).getProjectId());
wrapper.eq(PlatformTaskPlanningEO::getProjectId,platformTaskPlanningEOListUp.get(0).getProjectId());
this.remove(wrapper);
for (PlatformTaskPlanningEO platformTaskPlanningEO : platformTaskPlanningEOList) {
for (PlatformTaskPlanningEO platformTaskPlanningEO : platformTaskPlanningEOListUp) {
Date now = new Date();
platformTaskPlanningEO.setCreateTime(now);
platformTaskPlanningEO.setUpdateTime(now);
platformTaskPlanningEO.setFlag("up");
}
saveBatch(platformTaskPlanningEOList);
for (PlatformTaskPlanningEO platformTaskPlanningEO : platformTaskPlanningEOListDown) {
Date now = new Date();
platformTaskPlanningEO.setCreateTime(now);
platformTaskPlanningEO.setUpdateTime(now);
platformTaskPlanningEO.setFlag("down");
}
saveBatch(platformTaskPlanningEOListUp);
saveBatch(platformTaskPlanningEOListDown);
}
}
@@ -112,7 +126,7 @@ public class PlatformTaskPlanningEOServiceImpl extends ServiceImpl<PlatformTaskP
* @return
*/
@Override
public List<PlatformTaskPlanningEO> queryList(String projectId) {
public Map<String,Object> queryList(String projectId) {
SimpleDateFormat sdf = new SimpleDateFormat("yyy-MM-dd");
Date date = null;
try {
@@ -124,6 +138,21 @@ public class PlatformTaskPlanningEOServiceImpl extends ServiceImpl<PlatformTaskP
wrapper.eq(PlatformTaskPlanningEO::getProjectId,projectId);
wrapper.orderByAsc(PlatformTaskPlanningEO::getNodeTime);
List<PlatformTaskPlanningEO> taskPlanningEOList = list(wrapper);
Map<String,Object> result = new HashMap<>();
if(ObjectUtils.isEmpty(taskPlanningEOList)){
LambdaQueryWrapper<PlatformTaskPlanningEO> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.isNull(PlatformTaskPlanningEO::getProjectId);
List<PlatformTaskPlanningEO> list = list(queryWrapper);
List<PlatformTaskPlanningEO> up = list.stream()
.filter(e -> StringUtils.isNotBlank(e.getFlag()) && UpAndDownEnum.UP.getValue().equals(e.getFlag())).collect(Collectors.toList());
List<PlatformTaskPlanningEO> down = list.stream()
.filter(e -> StringUtils.isNotBlank(e.getFlag()) && UpAndDownEnum.DOWN.getValue().equals(e.getFlag())).collect(Collectors.toList());
result.put("listUp",up);
result.put("listDown",down);
}else{
for (PlatformTaskPlanningEO platformTaskPlanningEO : taskPlanningEOList) {
platformTaskPlanningEO.setName(platformTaskPlanningEO.getNodeName());
platformTaskPlanningEO.setTime(platformTaskPlanningEO.getNodeTime());
@@ -139,6 +168,15 @@ public class PlatformTaskPlanningEOServiceImpl extends ServiceImpl<PlatformTaskP
}
}
taskPlanningEOList = taskPlanningEOList.stream().filter(e->ObjectUtils.isNotEmpty(e.getNodeTime())).collect(Collectors.toList());
return taskPlanningEOList;
List<PlatformTaskPlanningEO> up = taskPlanningEOList.stream()
.filter(e -> StringUtils.isNotBlank(e.getFlag()) && UpAndDownEnum.UP.getValue().equals(e.getFlag())).collect(Collectors.toList());
List<PlatformTaskPlanningEO> down = taskPlanningEOList.stream()
.filter(e -> StringUtils.isNotBlank(e.getFlag()) && UpAndDownEnum.DOWN.getValue().equals(e.getFlag())).collect(Collectors.toList());
result.put("listUp",up);
result.put("listDown",down);
}
return result;
}
}
@@ -216,4 +216,8 @@ public class ProjectCertificationInventoryDutyEnginnerEO implements Serializable
// @Excel(name = "*截止日期", width = 20, format = "yyyy-MM-dd")
@TableField(exist = false)
private String endTimeStr;
@ApiModelProperty(value = "备注")
// @Excel(name = "备注", width = 50)
private String remark;
}
@@ -215,4 +215,8 @@ public class ProjectCertificationInventoryDutyEnginnerEOEnPlatform implements Se
// @Excel(name = "截止日期", width = 20, format = "yyyy-MM-dd")
@TableField(exist = false)
private String endTimeStr;
@ApiModelProperty(value = "备注")
@Excel(name = "Remark", width = 50)
private String remark;
}
@@ -192,6 +192,7 @@ public class ProjectCertificationInventoryDutyEnginnerEOPlatform implements Seri
@ApiModelProperty(value = "认证进度备注")
private String certificationProgressRemark;
/**项目库id*/
@ApiModelProperty(value = "项目库id")
private String projectLibraryId;
@@ -215,4 +216,8 @@ public class ProjectCertificationInventoryDutyEnginnerEOPlatform implements Seri
// @Excel(name = "*截止日期", width = 20, format = "yyyy-MM-dd")
@TableField(exist = false)
private String endTimeStr;
@ApiModelProperty(value = "备注")
@Excel(name = "备注", width = 50)
private String remark;
}
@@ -256,6 +256,11 @@ public class ProjectCertificationInventoryEO implements Serializable {
@ApiModelProperty(value = "认证类型")
private String attestationType;
/**备注*/
@ApiModelProperty(value = "备注")
@Excel(name = "备注", width = 50)
private String remark;
/**一级责任领域**/
@TableField(exist = false)
private String firstLevelDutyTerritory;
@@ -221,4 +221,8 @@ public class ProjectCertificationInventoryEOEnPlatform implements Serializable {
@TableField(exist = false)
private String endTimeStr;
@ApiModelProperty(value = "备注")
@Excel(name = "Remark", width = 50)
private String remark;
}
@@ -261,4 +261,8 @@ public class ProjectCertificationInventoryEOPlatform implements Serializable {
@ApiModelProperty(value = "关联平台件数据")
@TableField(exist = false)
private List<ProjectCertificationInventoryEOPlatform> projectCertificationInventoryEOS;
@ApiModelProperty(value = "备注")
@Excel(name = "备注", width = 50)
private String remark;
}
@@ -166,89 +166,105 @@ public class ProjectLibraryBase implements Comparable<ProjectLibraryBase> {
//平台件项目库字段--------------------------------------------------------------------------------------------------------------
// @ApiModelProperty(value = "功率")
// private String power;
//
// @ApiModelProperty(value = "生产商")
// private String producer;
//
// @ApiModelProperty(value = "责任部门")
// private String dutyDepart;
//
// @ApiModelProperty(value = "法规工程师")
// private String regulationOwnerId;
//
// @ApiModelProperty(value = "工程接口人")
// private String engineeringInterfacePerson;
//
// @ApiModelProperty(value = "名牌标签")
// private String brandLabel;
//
// @ApiModelProperty(value = "产品型号")
// private String productModel;
//
// @ApiModelProperty(value = "电芯生产企业")
// private String cellEnterprise;
//
// @ApiModelProperty(value = "总成生产企业")
// private String assemblyEnterprise;
//
// @ApiModelProperty(value = "零件号(国内)")
// private String partNumberCn;
//
// @ApiModelProperty(value = "零件号(国外)")
// private String part_numberEn;
//
// @ApiModelProperty(value = "24位备案码")
// private String filingCode;
//
// @ApiModelProperty(value = "供应商代码(1-3")
// private String supplierCode;
//
// @ApiModelProperty(value = "产品类型代码(4")
// private String productTypeCode;
//
// @ApiModelProperty(value = "电池类型代码(5")
// private String batteryTypeCode;
//
// @ApiModelProperty(value = "规格代码(6-7")
// private String specificationCode;
//
// @ApiModelProperty(value = "追溯代码(8")
// private String traceabilityCode;
//
// @ApiModelProperty(value = "生产也月日序列号")
// private String ymdNumber;
//
// @ApiModelProperty(value = "尺寸")
// private String size;
//
// @ApiModelProperty(value = "额定容量")
// private String ratedCapacity;
//
// @ApiModelProperty(value = "标称电压")
// private String nominalVoltage;
//
// @ApiModelProperty(value = "额定质量")
// private String ratedMass;
//
// @ApiModelProperty(value = "包含模块个数")
// private String moduleNumber;
//
// @ApiModelProperty(value = "模块串并联方式")
// private String connectionType;
//
// @ApiModelProperty(value = "所用模块或单体规格代码")
// private String moduleSpecificationCode;
//
// @ApiModelProperty(value = "冷却方式")
// private String coolingMethod;
//
// @ApiModelProperty(value = "备案完成时间")
// private String filingCompletionTime;
//
// @ApiModelProperty(value = "备注")
// private String remark;
@ApiModelProperty(value = "功率")
private String power;
@ApiModelProperty(value = "生产商")
private String producer;
@ApiModelProperty(value = "责任部门")
private String dutyDepart;
@TableField(exist = false)
private String dutyDepartName;
@ApiModelProperty(value = "法规工程师")
private String regulationOwnerId;
@TableField(exist = false)
@ApiModelProperty(value = "法规工程师回显")
private String regulationOwnerIdName;
@ApiModelProperty(value = "工程接口人")
private String engineeringInterfacePerson;
@TableField(exist = false)
@ApiModelProperty(value = "工程接口人回显")
private String engineeringInterfacePersonName;
@ApiModelProperty(value = "名牌标签")
private String brandLabel;
@ApiModelProperty(value = "产品型号")
private String productModel;
@ApiModelProperty(value = "电芯生产企业")
private String cellEnterprise;
@ApiModelProperty(value = "总成生产企业")
private String assemblyEnterprise;
@ApiModelProperty(value = "零件号(国内)")
private String partNumberCn;
@ApiModelProperty(value = "零件号(国外)")
private String partNumberEn;
@ApiModelProperty(value = "24位备案码")
private String filingCode;
@ApiModelProperty(value = "供应商代码(1-3")
private String supplierCode;
@ApiModelProperty(value = "产品类型代码(4")
private String productTypeCode;
@ApiModelProperty(value = "电池类型代码(5")
private String batteryTypeCode;
@ApiModelProperty(value = "规格代码(6-7")
private String specificationCode;
@ApiModelProperty(value = "追溯代码(8")
private String traceabilityCode;
@ApiModelProperty(value = "生产也月日序列号")
private String ymdNumber;
@ApiModelProperty(value = "尺寸")
private String size;
@ApiModelProperty(value = "额定容量")
private String ratedCapacity;
@ApiModelProperty(value = "标称电压")
private String nominalVoltage;
@ApiModelProperty(value = "额定质量")
private String ratedMass;
@ApiModelProperty(value = "包含模块个数")
private String moduleNumber;
@ApiModelProperty(value = "模块串并联方式")
private String connectionType;
@ApiModelProperty(value = "所用模块或单体规格代码")
private String moduleSpecificationCode;
@ApiModelProperty(value = "冷却方式")
private String coolingMethod;
@ApiModelProperty(value = "备案完成时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
private java.util.Date filingCompletionTime;
@ApiModelProperty(value = "备注")
private String remark;
@TableField(exist = false)
private List<String> urlList;
@Override
@@ -73,7 +73,7 @@ public class PrehomoJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
log.info("prehomo流程,定时任务开启 =====================================================");
/*
//查询出已经启动了prehomo流程的数据 并且流程没有结束
QueryWrapper<ProjectTaskInventoryEO> queryProjectTaskInventoryWrapper = new QueryWrapper<>();
queryProjectTaskInventoryWrapper.isNotNull("prehomo_p_id");
@@ -367,5 +367,7 @@ public class PrehomoJob implements Job {
}
}
log.info("prehomo流程,定时任务结束 =====================================================");
*/
}
}
@@ -14,8 +14,21 @@ import com.jero.modules.dummy.util.ListDiff;
import com.jero.modules.feishu.enums.TemplateInfoEnum2;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.project.entity.*;
import com.jero.modules.project.enums.*;
import com.jero.modules.project.entity.ProjectLawsInventoryEO;
import com.jero.modules.project.entity.ProjectLibraryBase;
import com.jero.modules.project.entity.ProjectLibraryRoleRelEO;
import com.jero.modules.project.entity.ProjectRelatedPersonnel;
import com.jero.modules.project.entity.ProjectUserPermission;
import com.jero.modules.project.enums.ComplianceFlowStatusEnum;
import com.jero.modules.project.enums.InventoryAffirmNodeEnum;
import com.jero.modules.project.enums.JumpLinkEnum;
import com.jero.modules.project.enums.PermissionDescriptionEnum;
import com.jero.modules.project.enums.ProjectInventoryFieldEnum;
import com.jero.modules.project.enums.ProjectMessageEnum;
import com.jero.modules.project.enums.ProjectRoleEnum;
import com.jero.modules.project.enums.ProjectUserLocationEnum;
import com.jero.modules.project.enums.RoleRelModelTypeEnum;
import com.jero.modules.project.enums.TaskStatusEnum;
import com.jero.modules.project.service.IProjectLawsInventoryEOService;
import com.jero.modules.project.service.IProjectLibraryRoleRelEOService;
import com.jero.modules.project.service.IProjectUserPermissionService;
@@ -43,14 +56,20 @@ import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.SerializationUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.xmlbeans.impl.xb.xsdschema.Public;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
@@ -1248,6 +1267,243 @@ public class ProjectLawsInventoryEOEditServiceImpl {
throw new JeroBootException("该用户没有权限操作该数据!");
}
}
public void editByIdPlatform(ProjectLawsInventoryEO projectLawsInventoryEO) {
Date now = new Date();
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// boolean checkResult = checkData(projectLawsInventoryEO.getProjectLibraryId(), currentUser.getId(), projectLawsInventoryEO.getId());
// if (checkResult) {
QueryWrapper<ProjectLawsInventoryEO> oldPliQueryWrap = new QueryWrapper<>();
oldPliQueryWrap.lambda().eq(ProjectLawsInventoryEO::getId, projectLawsInventoryEO.getId());
List<ProjectLawsInventoryEO> oldPliEoList = projectLawsInventoryEOService.list(oldPliQueryWrap);
this.updateProjectLawsInventorySendMessage(projectLawsInventoryEO);
// 根据法规清单id获取该法规清单在待办中心的任务明细
List<String> oldPliEoIdList = oldPliEoList.stream().map(ProjectLawsInventoryEO::getId).distinct().collect(Collectors.toList());
QueryWrapper<ProcessInfoDetailEO> pidEoQueryWrap = new QueryWrapper<>();
pidEoQueryWrap.lambda().in(ProcessInfoDetailEO::getProjectLawsInventoryId, oldPliEoIdList);
List<ProcessInfoDetailEO> pidEoList = this.processInfoDetailEOService.list(pidEoQueryWrap);
if (CollectionUtils.isNotEmpty(pidEoList)) {
// 处理编辑法规工程师的逻辑
this.updateRegulationOwner(projectLawsInventoryEO, oldPliEoList, pidEoList);
// 处理编辑责任人的逻辑
this.updateDutyPerson(projectLawsInventoryEO, oldPliEoList, pidEoList);
}
// 处理修改设计或验证符合性截止日期的逻辑
this.updateDesignOrVerifyEndTime(projectLawsInventoryEO, oldPliEoList);
projectLawsInventoryEO.setUpdateTime(now);
ProjectLawsInventoryEO projectLawsInventoryEOCopy = SerializationUtils.clone(projectLawsInventoryEO);//复制
//更新log
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
String username = sysUser.getUsername();
String contentLog = username + "编辑了清单中的“" + projectLawsInventoryEO.getSerialNumber() + "”:</br>";
String enContentLog = username + " edited the “" + projectLawsInventoryEO.getSerialNumber() + "” in the list:</br>";
List<ProjectLawsInventoryEO> infoEOList = new ArrayList<>();
infoEOList.add(projectLawsInventoryEO);
List<ProjectLawsInventoryEO> infoEOListCopy = new ArrayList<>();
infoEOListCopy.add(projectLawsInventoryEOCopy);
//查询数据库里原来的数据
QueryWrapper<ProjectLawsInventoryEO> queryWrapper = new QueryWrapper<>();
List<ProjectLawsInventoryEO> dataList = projectLawsInventoryEOService.list(queryWrapper.eq("id", projectLawsInventoryEO.getId()));
List<ProjectLawsInventoryEO> dataListCopy = DeepCopyListUtil.depCopy(dataList);
LambdaUpdateWrapper<ProjectLawsInventoryEO> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.in(ProjectLawsInventoryEO::getId, projectLawsInventoryEO.getId());
setDateNull(projectLawsInventoryEO, updateWrapper);
//保存
projectLawsInventoryEOService.update(projectLawsInventoryEO, updateWrapper);
// saveOrUpdate(projectLawsInventoryEO);
//获取编辑中的责任领域
List<String> dutyTerritoryList = new ArrayList<>();
dutyTerritoryList = Arrays.asList(projectLawsInventoryEO.getDutyTerritory().split(","));
dutyTerritoryList = dutyTerritoryList.stream().distinct().collect(Collectors.toList());
//获取当前的projectLibrartId
String projectLibrartId = projectLawsInventoryEO.getProjectLibraryId();
String cut = projectLawsInventoryEO.getCut();
Map<String, Object> params = new HashMap<>();
params.put("projectLibraryId", projectLibrartId);
params.put("userId", currentUser.getId());
params.put("modelType", RoleRelModelTypeEnum.LAWS_INVENTORY.getValue());
ProjectLibraryRoleRelEO projectLibraryRoleRelEO = projectLibraryRoleRelEOService.queryByProjectLibraryIdAndUserId(params);
String roleCode1 = projectLibraryRoleRelEO.getRoleCode();
//分别获取当前编辑中的设计符合性和认证符合性责任人
List<String> designDutyIdList = new ArrayList<>();
designDutyIdList = Arrays.asList(projectLawsInventoryEO.getDesignDutyId().split(","));
List<String> verifyDutyIdList = new ArrayList<>();
verifyDutyIdList = Arrays.asList(projectLawsInventoryEO.getVerifyDutyId().split(","));
//allDutyList 为法规工程师中验证符合性和确认符合中的责任人
List<String> allDutyList = new ArrayList<>();
allDutyList.addAll(designDutyIdList);
allDutyList.addAll(verifyDutyIdList);
allDutyList = allDutyList.stream().distinct().collect(Collectors.toList());
//获取相关责任领域下的和projectLibrartId的相关人员名单的信息
List<ProjectRelatedPersonnel> projectRelatedPersonnelList = projectRelatedPersonnelService.queryByProjectIdAndDutyTerritoy(projectLibrartId, dutyTerritoryList);
List<String> allList = new ArrayList<>();
List<String> enginnerList = new ArrayList<>();
List<String> lawEnginnerList = new ArrayList<>();
List<String> enginnerLawSetList = new ArrayList<>();
List<String> enginnerAttSetList = new ArrayList<>();
//根据相关人员名单获取的工程接口人
for (ProjectRelatedPersonnel relatedPersonnel : projectRelatedPersonnelList) {
String enginneringInterfacePerson = relatedPersonnel.getEngineeringInterfacePerson();
if (!StringUtils.isEmpty(enginneringInterfacePerson)) {
enginnerList = Arrays.stream(enginneringInterfacePerson.split(",")).collect(Collectors.toList());
allList.addAll(enginnerList);
}
}
//获取相关人员名单中的法规工程师
for (ProjectRelatedPersonnel relatedPersonnel : projectRelatedPersonnelList) {
String lawEngineer = relatedPersonnel.getLawEngineer();
if (!StringUtils.isEmpty(lawEngineer)) {
lawEnginnerList = Arrays.stream(lawEngineer.split(",")).collect(Collectors.toList());
allList.addAll(lawEnginnerList);
}
}
//获取相关人员名单中的工程接口-法规工程师设置
for (ProjectRelatedPersonnel relatedPersonnel : projectRelatedPersonnelList) {
String engineerLawSet = relatedPersonnel.getEngineerLawSet();
if (!StringUtils.isEmpty(engineerLawSet)) {
enginnerLawSetList = Arrays.stream(engineerLawSet.split(",")).collect(Collectors.toList());
allList.addAll(enginnerLawSetList);
}
}
//获取相关人员名单中的工程接口-认证工程师设置
for (ProjectRelatedPersonnel relatedPersonnel : projectRelatedPersonnelList) {
String engineerAttSet = relatedPersonnel.getEngineerAttSet();
if (!StringUtils.isEmpty(engineerAttSet)) {
enginnerAttSetList = Arrays.stream(engineerAttSet.split(",")).collect(Collectors.toList());
allList.addAll(enginnerAttSetList);
}
}
//获取当前项目库id的studio工程师和认证工程师
List<String> studionList = new ArrayList<>();
List<String> certificationEngineerList = new ArrayList<>();
List<ProjectLibraryBase> projectLibraryBases = projectLibraryBaseService.queryById(projectLibrartId, cut);
for (ProjectLibraryBase projectLibraryBase : projectLibraryBases) {
studionList.add(projectLibraryBase.getStudioEngineer());
String certificationEngineer = projectLibraryBase.getCertificationEngineer();
if (!StringUtils.isEmpty(certificationEngineer)) {
certificationEngineerList = Arrays.stream(certificationEngineer.split(",")).collect(Collectors.toList());
allList.addAll(certificationEngineerList);
}
}
allList = allList.stream().filter(all -> {
return StringUtils.isNotBlank(all);
}).distinct().collect(Collectors.toList());
/*
for(String all : allList){
if(all.equals("")){
allList.remove(all);
}
}
*/
//遍历所有人alllist中是否包含责任人,如果包含不用操作
//-------如果不包含,再去判断当前用户的角色是studio法规还是认证
for (ProjectRelatedPersonnel relatedPersonnel : projectRelatedPersonnelList) {
if (allList.size() > 0) {
for (String allDuty : allDutyList) {
String dutyPerson = allDuty;
if (StringUtils.isNotEmpty(dutyPerson) && !allList.contains(dutyPerson) && StringUtils.isNotEmpty(roleCode1)) {
if (roleCode1.equals(com.jero.modules.project.enums.ProjectRoleEnum.STUDIO_ENGINEER.getValue())) {
if (relatedPersonnel.getEngineeringInterfacePerson() != null) {
String engineeringInterfacePerson = dutyPerson + "," + relatedPersonnel.getEngineeringInterfacePerson();
relatedPersonnel.setEngineeringInterfacePerson(engineeringInterfacePerson);
} else {
relatedPersonnel.setEngineeringInterfacePerson(dutyPerson);
}
} else if (roleCode1.equals(com.jero.modules.project.enums.ProjectRoleEnum.REGULATI_ENGINEER.getValue())) {
if (relatedPersonnel.getEngineerLawSet() != null) {
String engineerLawSet = dutyPerson + "," + relatedPersonnel.getEngineerLawSet();
relatedPersonnel.setEngineerLawSet(engineerLawSet);
} else {
relatedPersonnel.setEngineerLawSet(dutyPerson);
}
} else if (roleCode1.equals(com.jero.modules.project.enums.ProjectRoleEnum.HOMOLOGATION_ENGINEER.getValue())) {
if (relatedPersonnel.getEngineerAttSet() != null) {
String engineerAttSet = dutyPerson + "," + relatedPersonnel.getEngineerAttSet();
relatedPersonnel.setEngineerAttSet(engineerAttSet);
} else {
relatedPersonnel.setEngineerAttSet(dutyPerson);
}
}
}
}
}
}
this.projectRelatedPersonnelService.updateBatchById(projectRelatedPersonnelList);
//翻译-中文
translateData(infoEOList);
translateData(dataList);
//翻译-英文
translateDataToEn(infoEOListCopy);
translateDataToEn(dataListCopy);
//比对不同字段
Map<String, String> infoDiff = ListDiff.compareObject(dataList.get(0), projectLawsInventoryEO);
Map<String, String> infoDiffEn = ListDiff.compareObject(dataListCopy.get(0), projectLawsInventoryEOCopy);
//设置更新log
setContentLog(infoDiff, contentLog, infoDiffEn, enContentLog, projectLawsInventoryEO.getProjectLibraryId());
//验证用户是否是该法规上级 项目库的studio 如果是则同步更新流程
int roleCode = projectLawsInventoryEOService.checkUserRole(projectLawsInventoryEO.getProjectLibraryId(), currentUser.getId(), "");
if (StringUtils.equals(String.valueOf(roleCode), ProjectRoleEnum.STUDIO_ENGINEER.getValue())) {
//更新流程信息
projectLawsInventoryEOService.updateFlowInfo(projectLawsInventoryEO);
}
//设置权限 先删后加
List<ProjectUserPermission> adds = new ArrayList<>();
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getRegulationOwnerId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getRegulationOwnerId(), projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_REGULATION.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getHomologationEngineerId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getHomologationEngineerId(), projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_HOMOLOGATION.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getEngineeringInterfacePerson())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getEngineeringInterfacePerson(), projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_INTERFACE.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getDesignInitiatorId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getDesignInitiatorId(), projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_DESIGN_INITIATOR.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getDesignDutyId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getDesignDutyId(), projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_DESIGN_DUTY.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoInitiatorId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getPrehomoInitiatorId(), projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_PREHOMO_INITIATOR.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getPrehomoDutyId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getPrehomoDutyId(), projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_PREHOMO_DUTY.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getVerifyInitiatorId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getVerifyInitiatorId(), projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_VERIFY_INITIATOR.getValue());
}
if (ObjectUtils.isNotEmpty(projectLawsInventoryEO.getVerifyDutyId())) {
setProjectLawsInventoryPermission(projectLawsInventoryEO.getVerifyDutyId(), projectLawsInventoryEO.getProjectLibraryId(), projectLawsInventoryEO.getId(), now, adds, ProjectUserLocationEnum.PROJECT_LAWS_INVENTORY_VERIFY_DUTY.getValue());
}
if (ObjectUtils.isNotEmpty(adds)) {
projectUserPermissionService.saveBatch(adds);
}
// }
// else {
// throw new JeroBootException("该用户没有权限操作该数据!");
// }
}
/**
* 发送消息
@@ -4459,11 +4459,11 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){
title = "*类别,*检验项目,*配置项,*认证类型,*WVTA ID," +
"*标准编号,*责任领域,*工程接口人,*责任人," +
"交付物模板,*交付物类型,*截止日期,报告编号,产品型号,生产企业名称";
"交付物模板,*交付物类型,*截止日期,报告编号,产品型号,生产企业名称,备注";
}else {
title = "*Category,*Inspection Items,*Configuration Item,*Certification Type,*WVTA ID," +
"*Standard No,*Responsible Field,*Eng. Interface,*Assignee," +
"Deliverable Template,*Deliverable Type,*Due Date,Report No,Product Model,Name Of Manufacturer";
"Deliverable Template,*Deliverable Type,*Due Date,Report No,Product Model,Name Of Manufacturer,Remark";
}
int pos = file.getOriginalFilename().lastIndexOf(".");
@@ -4579,7 +4579,7 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
if (i == 0) {
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
headerSb.append(cell.getStringCellValue() + ",");
if(j == 15){
if(j == 16){
break;
}
} else if(i > 1){
@@ -4817,6 +4817,8 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
// 认证类型
String attestationTypeName = projectCertificationInventoryEO.getAttestationTypeName();
// 备注
String remark = projectCertificationInventoryEO.getRemark();
@@ -4989,6 +4991,18 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
}
}
if(StringUtils.isNotBlank(remark)){
if(remark.length() > 500){
String message = "";
if(CutEnum.CN.getValue().equals(projectCertificationInventoryEOTemp.getCut())){
message = errorMsg + "备注不能超过500个字符";
}else{
message = errorMsg + " The Remark cannot contain more than 200 characters";
}
msgList.add(message);
}
}
}
return msgList;
}
@@ -5659,6 +5673,7 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
case "产品型号": return "productModel";
case "生产企业名称": return "productionEnterpriseName";
case "认证进度": return "certificationProgress";
case "备注": return "remark";
case "*Category": return "category";
case "*Inspection Items": return "inspectionItem";
@@ -5678,6 +5693,7 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
case "Product Model": return "productModel";
case "Name Of Manufacturer": return "productionEnterpriseName";
case "Homologation Progress": return "certificationProgress";
case "Remark": return "remark";
default: return null;
//"Deliverable Type,Deliverable Template,initiator,Assignee,Due Date," +
@@ -5702,19 +5718,19 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){
title = "*类别,*检验项目,*配置项,*认证类型,*WVTA ID," +
"*标准编号,*责任领域,*工程接口人,*责任人," +
"交付物模板,*交付物类型,*截止日期,报告编号,产品型号,生产企业名称";
"交付物模板,*交付物类型,*截止日期,报告编号,产品型号,生产企业名称,备注";
}else {
title = "*Category,*Inspection Items,*Configuration Item,*Certification Type,*WVTA ID," +
"*Standard No,*Responsible Field,*Eng. Interface,*Assignee," +
"Deliverable Template,*Deliverable Type,*Due Date,Report No,Product Model,Name Of Manufacturer";
"Deliverable Template,*Deliverable Type,*Due Date,Report No,Product Model,Name Of Manufacturer,Remark";
}
List<String> list = Arrays.asList(title.split(","));
int index = 0;
if(CutEnum.CN.getValue().equals(projectCertificationInventoryEO.getCut())){
index = list.indexOf("生产企业名称") + 1;
index = list.indexOf("备注") + 1;
}else{
index = list.indexOf("Name Of Manufacturer") + 1;
index = list.indexOf("Remark") + 1;
}
//创建临时文件夹
@@ -543,19 +543,19 @@ public class ProjectTaskInventoryDetailEOServiceImpl extends ServiceImpl<Project
if(CollectionUtils.isNotEmpty(sysUsers)){
thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
}
try {
FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
feishuMsgVo.setTitle(msgTitle);
feishuMsgVo.setCnContentUpper(cnContentUpper);
feishuMsgVo.setCnContentLower(cnContentLower);
feishuMsgVo.setEnContentUpper(enContentUpper);
feishuMsgVo.setEnContentLower(enContentLower);
feishuMsgVo.setUrl(hrefFeishu);
feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
} catch (IOException e) {
log.error("飞书消息推送失败");
}
// try {
// FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
// feishuMsgVo.setTitle(msgTitle);
// feishuMsgVo.setCnContentUpper(cnContentUpper);
// feishuMsgVo.setCnContentLower(cnContentLower);
// feishuMsgVo.setEnContentUpper(enContentUpper);
// feishuMsgVo.setEnContentLower(enContentLower);
// feishuMsgVo.setUrl(hrefFeishu);
// feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
//// feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
// } catch (IOException e) {
// log.error("飞书消息推送失败");
// }
}
}
}
@@ -800,22 +800,22 @@ public class ProjectTaskInventoryEOServiceImpl extends ServiceImpl<ProjectTaskIn
if(CollectionUtils.isNotEmpty(sysUsers)){
thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
}
try {
FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
feishuMsgVo.setTitle(msgTitle);
feishuMsgVo.setCnContentUpper(cnContentUpper);
feishuMsgVo.setCnContentLower(cnContentLower);
feishuMsgVo.setEnContentUpper(enContentUpper);
feishuMsgVo.setEnContentLower(enContentLower);
feishuMsgVo.setUrl(hrefFeishu);
feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
} catch (IOException e) {
log.error("飞书消息推送失败");
}
//
//系统内部跳转链接
//String href = "<a href='"
// + JumpLinkEnum.INVENTORY_AFFIRM_LINK.getLink() + projectLibraryBase.getId() + JumpLinkEnum.DESIGN_AFFIRM_LINK.getType()
// + JumpLinkEnum.INVENTORtry {
//// FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
//// feishuMsgVo.setTitle(msgTitle);
//// feishuMsgVo.setCnContentUpper(cnContentUpper);
//// feishuMsgVo.setCnContentLower(cnContentLower);
//// feishuMsgVo.setEnContentUpper(enContentUpper);
//// feishuMsgVo.setEnContentLower(enContentLower);
//// feishuMsgVo.setUrl(hrefFeishu);
//// feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
////// feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
//// } catch (IOException e) {
//// log.error("飞书消息推送失败");
//// }Y_AFFIRM_LINK.getLink() + projectLibraryBase.getId() + JumpLinkEnum.DESIGN_AFFIRM_LINK.getType()
// + "&projectName=" + projectNameInfoEO.getProjectName() + "-"
// + projectYearNameInfoEO.getYearName()
// + "&targetMarket=" + projectLibraryBase.getTargetMarket()
@@ -1510,19 +1510,19 @@ public class ProjectTaskInventoryEOServiceImpl extends ServiceImpl<ProjectTaskIn
if(CollectionUtils.isNotEmpty(sysUsers)){
thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
}
try {
FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
feishuMsgVo.setTitle(msgTitle);
feishuMsgVo.setCnContentUpper(cnContentUpper);
feishuMsgVo.setCnContentLower(cnContentLower);
feishuMsgVo.setEnContentUpper(enContentUpper);
feishuMsgVo.setEnContentLower(enContentLower);
feishuMsgVo.setUrl(hrefFeishu);
feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
} catch (IOException e) {
log.error("飞书消息推送失败");
}
// try {
// FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
// feishuMsgVo.setTitle(msgTitle);
// feishuMsgVo.setCnContentUpper(cnContentUpper);
// feishuMsgVo.setCnContentLower(cnContentLower);
// feishuMsgVo.setEnContentUpper(enContentUpper);
// feishuMsgVo.setEnContentLower(enContentLower);
// feishuMsgVo.setUrl(hrefFeishu);
// feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
//// feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
// } catch (IOException e) {
// log.error("飞书消息推送失败");
// }
//系统内部跳转链接
//String href = "<a href='"
// + JumpLinkEnum.DESIGN_AFFIRM_LINK.getLink() + projectLibraryBase.getId() + JumpLinkEnum.DESIGN_AFFIRM_LINK.getType()
@@ -290,19 +290,19 @@ public class ProjectTaskInventoryFeedbackEOServiceImpl extends ServiceImpl<Proje
if(CollectionUtils.isNotEmpty(sysUsers)){
thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
}
try {
FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
feishuMsgVo.setTitle(msgTitle);
feishuMsgVo.setCnContentUpper(cnContentUpper);
feishuMsgVo.setCnContentLower(cnContentLower);
feishuMsgVo.setEnContentUpper(enContentUpper);
feishuMsgVo.setEnContentLower(enContentLower);
feishuMsgVo.setUrl(hrefFeishu);
feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
} catch (IOException e) {
log.error("飞书消息推送失败");
}
// try {
// FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
// feishuMsgVo.setTitle(msgTitle);
// feishuMsgVo.setCnContentUpper(cnContentUpper);
// feishuMsgVo.setCnContentLower(cnContentLower);
// feishuMsgVo.setEnContentUpper(enContentUpper);
// feishuMsgVo.setEnContentLower(enContentLower);
// feishuMsgVo.setUrl(hrefFeishu);
// feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
//// feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
// } catch (IOException e) {
// log.error("飞书消息推送失败");
// }
//系统内部跳转链接
//String href = "<a href='"
// + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getLink() + projectLibraryBaseInfo.getId() + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getType()
@@ -610,19 +610,19 @@ public class ProjectTaskInventoryFeedbackEOServiceImpl extends ServiceImpl<Proje
if(CollectionUtils.isNotEmpty(sysUsers)){
thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
}
try {
FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
feishuMsgVo.setTitle(msgTitle);
feishuMsgVo.setCnContentUpper(cnContentUpper);
feishuMsgVo.setCnContentLower(cnContentLower);
feishuMsgVo.setEnContentUpper(enContentUpper);
feishuMsgVo.setEnContentLower(enContentLower);
feishuMsgVo.setUrl(hrefFeishu);
feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
} catch (IOException e) {
log.error("飞书消息推送失败");
}
// try {
// FeishuMsg2Vo feishuMsgVo = new FeishuMsg2Vo();
// feishuMsgVo.setTitle(msgTitle);
// feishuMsgVo.setCnContentUpper(cnContentUpper);
// feishuMsgVo.setCnContentLower(cnContentLower);
// feishuMsgVo.setEnContentUpper(enContentUpper);
// feishuMsgVo.setEnContentLower(enContentLower);
// feishuMsgVo.setUrl(hrefFeishu);
// feishuMsgVo.setColor(MsgColorEnum.GREEN.getValue()); // 颜色
//// feishuService.sendCard(thirdIdList.toArray(new String[thirdIdList.size()]), feishuMsgVo);
// } catch (IOException e) {
// log.error("飞书消息推送失败");
// }
//系统内部跳转链接
//String href = "<a href='"
// + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getLink() + projectLibraryBaseInfo.getId() + JumpLinkEnum.PREHOMO_AFFIRM_LINK.getType()
+29
View File
@@ -1988,4 +1988,33 @@ module.exports = {
matchempty:'The match is empty',
onlyDataProcessStatusDeleted:'Data can only be deleted if the process status is task ready, approved, or rejected by the responsible person',
platformitemhasbeenassociated:'A platform item has been associated',
power:'power',
producer:'producer',
Nameplatelabel:'Nameplate label',
Batteryfilingrecord:'Battery filing record',
Modelinformation:'Model information',
Batterynationalcode:'Battery national code',
Recordnformation:'Record information',
Electriccellproductionenterprises:'Electric cell production enterprises',
Assemblymanufacturer:'Assembly manufacturer',
PartNumberCN:'Part Number (Domestic)',
PartNumberEU:'Part Number (Foreign)',
bitfilecode:'24-bit file code',
Vendorcode:'Vendor code',
Productclasscode:'Product class code',
Batterytypecode:'Battery type code',
Specificationcode:'Specification code',
Traceinformationcode:'Trace information code',
Productionyearmonthdateserialnumber:'Production year month date serial number',
dimension:'dimension(mm)',
Ratedcapacity:'Rated capacity(Ah)',
Nominalvoltage:'Nominal voltage(V)',
Ratedmass:'Rated mass(kg)',
Numbercontainedmodules:'Number of contained modules',
Moduleseriesparallelmode:'Module series parallel mode',
modulspecificationcodeused:'The module or monomer specification code used',
Coolingmode:'Cooling mode',
Filingcompletiontime:'Filing completion time',
Platformdevelopmentvalvepoint:'Platform development valve point',
Compliancemanagementvalvepoint:'Compliance management valve point',
}
+31 -2
View File
@@ -1863,7 +1863,7 @@ module.exports = {
NA: '不涉及',
reviewAndPass: '审查通过',
reviewAndReturn: '审查退回',
electroniccontrollerparameter: '电子控制器参数',
electroniccontrollerparameter: '控制器参数',
marketRegulationListDetails: '市场法规清单详情',
marketRegulationList: '市场法规清单',
onlyDataWithTheCurrentCanBeManipulated: '仅能操作责任人为当前用户的数据',
@@ -3769,7 +3769,7 @@ module.exports = {
NA: '不涉及',
reviewAndPass: '审查通过',
reviewAndReturn: '审查退回',
electroniccontrollerparameter: '电子控制器参数',
electroniccontrollerparameter: '控制器参数',
marketRegulationListDetails: '市场法规清单详情',
marketRegulationList: '市场法规清单',
onlyDataWithTheCurrentCanBeManipulated: '仅能操作责任人为当前用户的数据',
@@ -3944,4 +3944,33 @@ module.exports = {
Processdetails:'流程详情',
matchempty:'匹配项为空',
platformitemhasbeenassociated:'已关联平台件项目',
power:'功率',
producer:'生产商',
Nameplatelabel:'铭牌标签',
Batteryfilingrecord:'电池备案记录',
Modelinformation:'型号信息',
Batterynationalcode:'电池国标码',
Recordnformation:'备案信息',
Electriccellproductionenterprises:'电芯生产企业',
Assemblymanufacturer:'总成生产企业',
PartNumberCN:'零件号国内',
PartNumberEU:'零件号国外',
bitfilecode:'24位备案码',
Vendorcode:'供应商代码',
Productclasscode:'产品类型代码',
Batterytypecode:'电池类型代码',
Specificationcode:'规格代码',
Traceinformationcode:'追溯信息代码',
Productionyearmonthdateserialnumber:'生产年月日序列号',
dimension:'尺寸(mm)',
Ratedcapacity:'额定容量(Ah)',
Nominalvoltage:'标称电压(V)',
Ratedmass:'额定质量(kg)',
Numbercontainedmodules:'包含模块个数',
Moduleseriesparallelmode:'模块串并联方式',
modulspecificationcodeused:'所用模块或单体规格代码',
Coolingmode:'冷却方式',
Filingcompletiontime:'备案完成时间',
Platformdevelopmentvalvepoint:'平台件开发阀点',
Compliancemanagementvalvepoint:'合规管理阀点',
}
@@ -321,7 +321,24 @@
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('remarks')">{{$t('remarks')}}</span>
</div>
<a-form-model-item class="itemModel-text" :prop="'dataList.'+index+'.remark'"
:rules="[{max: 500,message: $t('remarks') + $t('cannotExceed') + 500 + $t('Characters'),trigger: 'blur'
}]">
<a-textarea
style="width: 100%"
:placeholder="$t('PleaseEnter')+$t('remarks')"
v-model="item.remark" :rows="4"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<!-- <a-row :gutter="24">-->
<!-- <a-col :span="12">-->
<!-- <div class="box-title-text">-->
@@ -638,6 +655,22 @@
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('remarks')">{{$t('remarks')}}</span>
</div>
<a-form-model-item class="itemModel-text" :prop="'remark'">
<a-textarea
style="width: 100%"
:placeholder="$t('PleaseEnter')+$t('remarks')"
v-model="formInline.remark" :rows="4"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12" v-if="formInline.taskConfirmEndTime">
<div class="box-title-text">
@@ -770,7 +803,14 @@
message: this.$t('configurationItem') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
trigger: 'blur'
}
]
],
remark:[
{
max: 500,
message: this.$t('remarks') + this.$t('cannotExceed') + 500 + this.$t('Characters'),
trigger: 'blur'
}
],
},
disabled: false,
flowdisabled: false,
@@ -1259,6 +1299,11 @@
::v-deep .ant-form-item-with-help {
margin-bottom: 25px;
}
.itemModel-text {
width: calc(100% - 130px);
display: inline-block;
margin-top: 2px;
}
</style>
<style>
.ant-input-disabled {
@@ -891,6 +891,13 @@
ellipsis: true,
scopedSlots: { customRender: 'CertificationProgress' }
},
{
title: this.$t('remarks'),
align: 'left',
dataIndex: 'remark',
width: 210,
ellipsis: true,
},
{
title: this.$t('operation'),
align: 'left',
@@ -23,15 +23,15 @@
:triggerChange="false" :dictCode="'brand'"/>
</div>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('configurationItem')">
<span>{{$t('configurationItem')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('configurationItem')"
v-model="queryParam.ipdInfo"></a-input>
</div>
</a-col>
<!-- <a-col :md="6" :sm="8">-->
<!-- <div class="box-title-text">-->
<!-- <div class="title-text" :title="$t('configurationItem')">-->
<!-- <span>{{$t('configurationItem')}}</span>-->
<!-- </div>-->
<!-- <a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('configurationItem')"-->
<!-- v-model="queryParam.ipdInfo"></a-input>-->
<!-- </div>-->
<!-- </a-col>-->
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
@@ -161,14 +161,14 @@
ellipsis: true,
dataIndex: 'brandText'
},
{
title: this.$t('configurationItem'),
align: 'left',
width: 180,
sorter:true,
ellipsis: true,
dataIndex: 'ipdInfo'
},
// {
// title: this.$t('configurationItem'),
// align: 'left',
// width: 180,
// sorter:true,
// ellipsis: true,
// dataIndex: 'ipdInfo'
// },
{
title: this.$t('explain'),
align: 'left',
@@ -15,42 +15,52 @@
<div class="content-text">
<div class="text-field">
<span class="text-field-left" :title="$t('entryName')">{{$t('entryName')}}</span>
<span class="text-field-right" :title="queryForm.projectNameId"
>{{queryForm.projectNameId}}</span>
<span class="text-field-left" :title="$t('power')">{{$t('power')}}</span>
<span class="text-field-right" :title="queryForm.power"
>{{queryForm.power}}</span>
</div>
<div class="text-field">
<span class="text-field-left" :title="$t('producer')">{{$t('producer')}}</span>
<span class="text-field-right" :title="queryForm.producer"
>{{queryForm.producer}}</span>
</div>
<div class="text-field">
<span class="text-field-left" :title="$t('targetMarket')">{{$t('targetMarket')}}</span>
<span class="text-field-right"
:title="queryForm.targetMarket_dictText"
>{{queryForm.targetMarket_dictText}}</span>
</div>
</div>
<div class="content-text">
<div class="text-field">
<span class="text-field-left" :title="$t('brand')">{{$t('brand')}}</span>
<span class="text-field-right" :title="queryForm.brandText"
>{{queryForm.brandText}}</span>
</div>
<div class="text-field">
<span class="text-field-left" :title="$t('configurationItem')">{{$t('configurationItem')}}</span>
<span class="text-field-right text-field-right-color"
:title="queryForm.ipdInfo"
@click="urlClick(queryForm.ipdInfo)"
>{{queryForm.ipdInfo}}</span>
<span class="text-field-left" :title="$t('projectStatus')">{{$t('projectStatus')}}</span>
<span class="text-field-right"
:title="queryForm.projectStatus_dictText"
>{{queryForm.projectStatus_dictText}}</span>
</div>
<div class="text-field">
<span class="text-field-left" :title="$t('statisticalNodes')">{{$t('statisticalNodes')}}</span>
<span class="text-field-right"
:title="queryForm.dutyDepart"
>{{queryForm.dutyDepart}}</span>
</div>
</div>
<div class="content-text">
<div class="text-field">
<span class="text-field-left" :title="$t('regulatoryEngineer')">{{$t('regulatoryEngineer')}}</span>
<span class="text-field-right" :title="queryForm.createBy"
>{{queryForm.createBy}}</span>
<span class="text-field-right" :title="queryForm.regulationOwnerIdName"
>{{queryForm.regulationOwnerIdName}}</span>
</div>
<div class="text-field">
<span class="text-field-left" :title="$t('dehicleDevelopmentPlan')">{{$t('dehicleDevelopmentPlan')}}</span>
<span class="text-field-right text-field-right-color"
:title="queryForm.vehicleDevelopmentPlan"
@click="urlClick(queryForm.vehicleDevelopmentPlan)"
>{{queryForm.vehicleDevelopmentPlan}}</span>
</div>
<div class="text-field">
<span class="text-field-left" :title="$t('certificationProgram')">{{$t('certificationProgram')}}</span>
<span class="text-field-right text-field-right-color"
:title="queryForm.attestationPlan"
@click="urlClick(queryForm.attestationPlan)"
>{{queryForm.attestationPlan}}</span>
<span class="text-field-left" :title="$t('engineeringInterfacePerson')">{{$t('engineeringInterfacePerson')}}</span>
<span class="text-field-right"
:title="queryForm.engineeringInterfacePersonName"
>{{queryForm.engineeringInterfacePersonName}}</span>
</div>
</div>
<div class="content-text">
@@ -60,6 +70,32 @@
>{{queryForm.explanation}}</span>
</div>
</div>
<div class="content-text">
<div class="text-field">
<span class="text-field-left" :title="$t('Nameplatelabel')">{{$t('Nameplatelabel')}}</span>
<div>
<!-- brandLabel-->
<a-upload
:action="uploadAction+'?cut='+cut"
list-type="picture-card"
:file-list="fileList"
:disabled='true'
@preview="handlePreview"
@change="handleChange"
>
<!-- <div v-if="fileList.length">-->
<!-- <a-icon type="plus" />-->
<!-- <div class="ant-upload-text">-->
<!-- &lt;!&ndash; Upload&ndash;&gt;-->
<!-- </div>-->
<!-- </div>-->
</a-upload>
<a-modal :visible="previewVisible" :footer="null" @cancel="handleCancelimg">
<img alt="example" style="width: 100%" :src="previewImage" />
</a-modal>
</div>
</div>
</div>
<div class="box-text" style="margin-top: 10px;margin-bottom: 10px">
<div class="header-text">
{{$t('complianceCertificationProgram')}}
@@ -136,12 +172,31 @@
},
selectedRowKeys: [],
idList: [],
previewVisible: false,
previewImage: '',
fileList: [],
projectNameList: [],
firstLevelDutyTerritoryList:[],
title: '',
uploadAction: window._CONFIG['domianURL'] + '/sys/common/upload',
state: undefined,
myuploadAction: window._CONFIG['domianURL'] + this.thisFileUploadUrl,
upDataList: [],
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
downLoadImgUrl: window._CONFIG['domianWebImgURL'] + '/sys/common/download',
regulatoryCertificationTaskPlanList: []
}
},
mounted() {
this.getForm()
this.administrators = false
let long = localStorage.getItem('language')
this.cut = ''
if (long && long == 'zh-cn') {
this.cut = 'cn'
} else if (long && long == 'en-us') {
this.cut = 'en'
}
this.activeKey = this.$t('regulatoryComplianceManagement')
if (this.userInfo().userRoleList && this.userInfo().userRoleList.length > 0) {
this.userInfo().userRoleList.forEach(res => {
@@ -163,6 +218,23 @@
} else {
this.queryForm.brandText = this.queryForm.brandText
}
let file = []
getAction('sys/common/getFileInfos', { id: this.queryForm.brandLabel }).then((res) => {
if (res.success) {
console.log(res.result)
res.result.forEach((item =>{
file.push({
name : item.fileName,
uid : item.id,
url : item.url
})
}))
console.log(file)
this.fileList = file
} else {
// this.$refs.uploadFile.perentHandleFunc()
}
})
} else {
this.queryForm = {}
}
@@ -201,7 +273,20 @@
downloadFile('/platform/projectLibraryBase/exportProjectProgressStatisticsXls',
this.queryForm.projectNameId+'-'+this.queryForm.projectVersion+'-'+this.$t('projectProgressStatistics') + '.xls', query)
},
handleCancelimg() {
this.previewVisible = false;
},
async handlePreview(file) {
if (!file.url && !file.preview) {
file.preview = await getBase64(file.originFileObj);
}
this.previewImage = file.url || file.preview;
this.previewVisible = true;
},
handleChange({ fileList }) {
this.fileList = fileList;
console.log(this.fileList)
},
versionStatisticsClick() {
this.$refs.versionStatisticsRef.addModel(JSON.parse(JSON.stringify(this.selectedRowKeys)))
},
@@ -11,16 +11,49 @@
style="height: 100%;overflow: auto;padding-bottom: 53px;">
<a-spin :spinning="confirmLoading">
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
<!-- 项目基本信息-->
<div class="header-text">
{{$t('basicInformationOfParameters')}}
</div>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('entryName')">{{$t('entryName')}}</span>
<span class="title-text-text" :title="$t('power')">{{$t('power')}}</span>
</div>
<a-form-model-item class="itemModel" prop="projectNameId">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('entryName')"
v-model="formInline.projectNameId"></a-input>
<a-form-model-item class="itemModel" prop="power">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('power')"
v-model="formInline.power"></a-input>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('producer')">{{$t('producer')}}</span>
</div>
<a-form-model-item class="itemModel" prop="producer">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('producer')"
v-model="formInline.producer"></a-input>
</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="Required">*</span>
<span class="title-text-text" :title="$t('targetMarket')">{{$t('targetMarket')}}</span>
</div>
<a-form-model-item class="itemModel-multi" prop="targetMarket">
<j-multi-select-tag class="box-input" v-model="formInline.targetMarket"
:disabled="disabled"
:placeholder="$t('PleaseSelect')+$t('targetMarket')"
:type="'select'"
:triggerChange="false" :dictCode="'region'"/>
</a-form-model-item>
</div>
</a-col>
@@ -44,26 +77,41 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('configurationItem')">{{$t('configurationItem')}}</span>
<span class="Required">*</span>
<span class="title-text-text" :title="$t('projectStatus')">{{$t('projectStatus')}}</span>
</div>
<a-form-model-item class="itemModel" prop="ipdInfo">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('configurationItem')"
v-model="formInline.ipdInfo"></a-input>
<a-form-model-item class="itemModel-multi" prop="projectStatus">
<j-multi-select-tag class="box-input" v-model="formInline.projectStatus"
:disabled="disabled"
:placeholder="$t('PleaseSelect')+$t('projectStatus')"
:type="'select'"
:triggerChange="false" :dictCode="'project_status'"/>
</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('certificationProgram')">{{$t('certificationProgram')}}</span>
<span class="Required">*</span>
<span class="title-text-text" :title="$t('statisticalNodes')">{{$t('statisticalNodes')}}</span>
</div>
<a-form-model-item class="itemModel" prop="attestationPlan">
<a-input class="box-input"
:disabled="disabled"
:maxLength="200"
v-model="formInline.attestationPlan"
:placeholder="$t('PleaseEnter')+$t('certificationProgram')"/>
<a-form-model-item class="itemModel" prop="dutyDepart">
<a-select :placeholder="$t('PleaseSelect')+$t('statisticalNodes')"
allowClear
show-search
mode="multiple"
optionFilterProp="label"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
v-model="formInline.dutyDepart">
<a-select-option v-for="(item, key) in firstLevelDutyTerritoryList"
:key="key"
:label="item.key"
:value="item.key">
<span style="display: inline-block;width: 100%" :title=" item.key ">
{{ item.key }}
</span>
</a-select-option>
</a-select>
</a-form-model-item>
</div>
</a-col>
@@ -72,19 +120,68 @@
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('dehicleDevelopmentPlan')">{{$t('dehicleDevelopmentPlan')}}</span>
<span class="Required">*</span>
<span class="title-text-text" :title="$t('regulatoryEngineer')">{{$t('regulatoryEngineer')}}</span>
</div>
<a-form-model-item class="itemModel" :prop="'vehicleDevelopmentPlan'">
<a-input class="box-input"
:disabled="disabled"
:maxLength="200"
v-model="formInline.vehicleDevelopmentPlan"
:placeholder="$t('PleaseEnter')+$t('dehicleDevelopmentPlan')"/>
<a-form-model-item class="itemModel" :prop="'regulationOwnerIdName'">
<PersonnelSelection :query="{db_field_name:'regulationOwnerId',db_field_txt:$t('regulatoryEngineer')}"
:isSingleChoice="true"
:personneQuery="formInline"
@change="PersonnelSelectionChange"
v-model="formInline.regulationOwnerIdName"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('engineeringInterfacePerson')">{{$t('engineeringInterfacePerson')}}</span>
</div>
<a-form-model-item class="itemModel" prop="engineeringInterfacePersonName">
<PersonnelSelection :query="{db_field_name:'engineeringInterfacePerson',db_field_txt:$t('regulatoryEngineer')}"
:isSingleChoice="true"
:personneQuery="formInline"
@change="PersonnelSelectionChange"
v-model="formInline.engineeringInterfacePersonName"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('Nameplatelabel')">{{$t('Nameplatelabel')}}</span>
</div>
<a-form-model-item class="itemModelimg" prop="explanation">
<div>
<!-- brandLabel-->
<a-upload
:action="uploadAction+'?state='+state+'&cut='+cut"
list-type="picture-card"
:file-list="fileList"
@preview="handlePreview"
@change="handleChange"
:headers="headers"
>
<div v-if="fileList.length < 20">
<a-icon type="plus" />
<div class="ant-upload-text">
<!-- Upload-->
</div>
</div>
</a-upload>
<a-modal :visible="previewVisible" :footer="null" @cancel="handleCancelimg">
<img alt="example" style="width: 100%" :src="previewImage" />
</a-modal>
</div>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('explain')">{{$t('explain')}}</span>
@@ -98,146 +195,301 @@
</div>
</a-col>
</a-row>
<!-- <a-row :gutter="24">-->
<!-- <a-col :span="12">-->
<!-- <div class="box-title-text">-->
<!-- <div class="title-text">-->
<!-- <span class="Required">*</span>-->
<!-- <span class="title-text-text" :title="$t('projectStatus')">{{$t('projectStatus')}}</span>-->
<!-- </div>-->
<!-- <a-form-model-item class="itemModel" prop="projectStatus">-->
<!-- <j-dict-select-tag class="box-input" v-model="formInline.projectStatus"-->
<!-- :disabled="disabled"-->
<!-- @input="handleInput('projectStatus')"-->
<!-- :placeholder="$t('PleaseSelect')+$t('projectStatus')"-->
<!-- :type="'select'"-->
<!-- :triggerChange="false" :dictCode="'project_status'"/>-->
<!-- </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('brand')">{{$t('brand')}}</span>-->
<!-- </div>-->
<!-- <a-form-model-item class="itemModel" :prop="'brand'">-->
<!-- <j-dict-select-tag v-model="formInline.brand"-->
<!-- :placeholder="$t('PleaseSelect')+$t('brand')"-->
<!-- :type="'select'"-->
<!-- :triggerChange="false" :dictCode="'brand'"/>-->
<!-- </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="Required">*</span>-->
<!-- <span class="title-text-text" :title="$t('StudioEngineer')">{{$t('StudioEngineer')}}</span>-->
<!-- </div>-->
<!-- <a-form-model-item class="itemModel-multi" :prop="'studioEngineerName'">-->
<!-- <PersonnelSelection :query="{db_field_name:'studioEngineer',db_field_txt:$t('StudioEngineer')}"-->
<!-- :isSingleChoice="true"-->
<!-- :personneQuery="formInline"-->
<!-- v-if="visible"-->
<!-- @change="PersonnelSelectionChange"-->
<!-- :disabled="disabled"-->
<!-- v-model="formInline.studioEngineerName"/>-->
<!-- </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('certifiedEngineer')">{{$t('certifiedEngineer')}}</span>-->
<!-- </div>-->
<!-- <a-form-model-item class="itemModel-multi" :prop="'certificationEngineerName'">-->
<!-- <PersonnelSelection-->
<!-- :query="{db_field_name:'certificationEngineer',db_field_txt:$t('certifiedEngineer')}"-->
<!-- :personneQuery="formInline"-->
<!-- v-if="visible"-->
<!-- @change="PersonnelSelectionChange"-->
<!-- :disabled="disabled"-->
<!-- v-model="formInline.certificationEngineerName"/>-->
<!-- </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('DigitalPlatform')">{{$t('DigitalPlatform')}}</span>-->
<!-- </div>-->
<!-- <a-form-model-item class="itemModel" :prop="'digitalPlatform'">-->
<!-- <a-input class="box-input"-->
<!-- :disabled="disabled"-->
<!-- v-model="formInline.digitalPlatform"-->
<!-- :placeholder="$t('PleaseEnter')+$t('DigitalPlatform')"/>-->
<!-- </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('ModelPlatform')">{{$t('ModelPlatform')}}</span>-->
<!-- </div>-->
<!-- <a-form-model-item class="itemModel" prop="vehiclePlatform">-->
<!-- <a-input class="box-input"-->
<!-- :disabled="disabled"-->
<!-- v-model="formInline.vehiclePlatform"-->
<!-- :placeholder="$t('PleaseEnter')+$t('ModelPlatform')"/>-->
<!-- </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('certificationProgram')">{{$t('certificationProgram')}}</span>-->
<!-- </div>-->
<!-- <a-form-model-item class="itemModel" prop="attestationPlan">-->
<!-- <a-input class="box-input"-->
<!-- :disabled="disabled"-->
<!-- v-model="formInline.attestationPlan"-->
<!-- :placeholder="$t('PleaseEnter')+$t('certificationProgram')"/>-->
<!-- </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('configurationInformation')">{{$t('configurationInformation')}}</span>-->
<!-- </div>-->
<!-- <a-form-model-item class="itemModel" prop="ipdInfo">-->
<!-- <a-input class="box-input"-->
<!-- :disabled="disabled"-->
<!-- v-model="formInline.ipdInfo"-->
<!-- :placeholder="$t('PleaseEnter')+$t('configurationInformation')"/>-->
<!-- </a-form-model-item>-->
<!-- </div>-->
<!-- &lt;!&ndash; ^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&amp;%\$#_]*)?$-->
<!-- &ndash;&gt;-->
<!-- </a-col>-->
<!-- </a-row>-->
<!-- <a-row :gutter="24">-->
<!-- <a-col :span="24">-->
<!-- <div class="box-title-text">-->
<!-- <div class="title-text">-->
<!-- <span class="title-text-text" :title="$t('explain')">{{$t('explain')}}</span>-->
<!-- </div>-->
<!-- <a-form-model-item class="itemModel" prop="explanation">-->
<!-- <a-textarea :placeholder="$t('pleaseEnter')+$t('explain')"-->
<!-- v-model="formInline.explanation"-->
<!-- :rows="4"/>-->
<!-- </a-form-model-item>-->
<!-- </div>-->
<!-- </a-col>-->
<!-- </a-row>-->
<!-- 电池备案记录-->
<div class="header-text">
{{$t('Batteryfilingrecord')}}
</div>
<!-- 型号信息-->
<div class='header-title'>
<span class='header-title-text'>{{$t('Modelinformation')}}</span>
</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('productModel')">{{$t('productModel')}}</span>
</div>
<a-form-model-item class="itemModel" prop="productModel">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('productModel')"
v-model="formInline.productModel"></a-input>
</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('Electriccellproductionenterprises')">{{$t('Electriccellproductionenterprises')}}</span>
</div>
<a-form-model-item class="itemModel" prop="Electriccellproductionenterprises">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Electriccellproductionenterprises')"
v-model="formInline.cellEnterprise"></a-input>
</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('Assemblymanufacturer')">{{$t('Assemblymanufacturer')}}</span>
</div>
<a-form-model-item class="itemModel-multi" prop="Assemblymanufacturer">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Assemblymanufacturer')"
v-model="formInline.assemblyEnterprise"></a-input>
</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('PartNumberCN')">{{$t('PartNumberCN')}}</span>
</div>
<a-form-model-item class="itemModel" prop="PartNumberCN">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('PartNumberCN')"
v-model="formInline.partNumberCn"></a-input>
</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('PartNumberEU')">{{$t('PartNumberEU')}}</span>
</div>
<a-form-model-item class="itemModel-multi" prop="PartNumberEU">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('PartNumberEU')"
v-model="formInline.partNumberEn"></a-input>
</a-form-model-item>
</div>
</a-col>
</a-row>
<!-- 电池国标码-->
<div class='header-title'>
<span class='header-title-text'>{{$t('Batterynationalcode')}}</span>
</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('bitfilecode')">{{$t('bitfilecode')}}</span>
</div>
<a-form-model-item class="itemModel" prop="bitfilecode">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('bitfilecode')"
v-model="formInline.filingCode"></a-input>
</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('Vendorcode') + '(13)'">{{$t('Vendorcode') + '(13)'}}</span>
</div>
<a-form-model-item class="itemModel" prop="endorcode">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Vendorcode') + '(13)'"
v-model="formInline.supplierCode"></a-input>
</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('Productclasscode') + '(4)'">{{$t('Productclasscode') + '(4)'}}</span>
</div>
<a-form-model-item class="itemModel" prop="Productclasscode">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Productclasscode') + '(4)'"
v-model="formInline.productTypeCode"></a-input>
</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('Batterytypecode') + '(5)'">{{$t('Batterytypecode') + '(5)'}}</span>
</div>
<a-form-model-item class="itemModel" prop="Batterytypecode">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Batterytypecode') + '(5)'"
v-model="formInline.batteryTypeCode"></a-input>
</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('Specificationcode') + '(67)'">{{$t('Specificationcode') + '(67)'}}</span>
</div>
<a-form-model-item class="itemModel-multi" prop="Specificationcode">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Specificationcode') + '(67)'"
v-model="formInline.specificationCode"></a-input>
</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('Traceinformationcode') + '(814)'">{{$t('Traceinformationcode') + '(814)'}}</span>
</div>
<a-form-model-item class="itemModel-multi" prop="Traceinformationcode">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Traceinformationcode') + '(814)'"
v-model="formInline.traceabilityCode"></a-input>
</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('Productionyearmonthdateserialnumber') + '(1520)'">{{$t('Productionyearmonthdateserialnumber') + '(1520)'}}</span>
</div>
<a-form-model-item class="itemModel-multi" prop="Productionyearmonthdateserialnumber">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Productionyearmonthdateserialnumber') + '(1520)'"
v-model="formInline.ymdNumber"></a-input>
</a-form-model-item>
</div>
</a-col>
</a-row>
<!-- 备案信息-->
<div class='header-title'>
<span class='header-title-text'>{{$t('Recordnformation')}}</span>
</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('dimension')">{{$t('dimension')}}</span>
</div>
<a-form-model-item class="itemModel" prop="dimension">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('dimension')"
v-model="formInline.size"></a-input>
</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('Ratedcapacity')">{{$t('Ratedcapacity')}}</span>
</div>
<a-form-model-item class="itemModel" prop="Ratedcapacity">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Ratedcapacity')"
v-model="formInline.ratedCapacity"></a-input>
</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('Nominalvoltage')">{{$t('Nominalvoltage')}}</span>
</div>
<a-form-model-item class="itemModel" prop="Nominalvoltage">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Nominalvoltage')"
v-model="formInline.nominalVoltage"></a-input>
</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('Ratedmass')">{{$t('Ratedmass')}}</span>
</div>
<a-form-model-item class="itemModel" prop="Ratedmass">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Ratedmass')"
v-model="formInline.ratedMass"></a-input>
</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('Numbercontainedmodules')">{{$t('Numbercontainedmodules')}}</span>
</div>
<a-form-model-item class="itemModel" prop="Numbercontainedmodules">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Numbercontainedmodules')"
v-model="formInline.moduleNumber"></a-input>
</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('Moduleseriesparallelmode')">{{$t('Moduleseriesparallelmode')}}</span>
</div>
<a-form-model-item class="itemModel" prop="Moduleseriesparallelmode">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Moduleseriesparallelmode')"
v-model="formInline.connectionType"></a-input>
</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('modulspecificationcodeused')">{{$t('modulspecificationcodeused')}}</span>
</div>
<a-form-model-item class="itemModel" prop="modulspecificationcodeused">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('modulspecificationcodeused')"
v-model="formInline.moduleSpecificationCode"></a-input>
</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('Coolingmode')">{{$t('Coolingmode')}}</span>
</div>
<a-form-model-item class="itemModel" prop="dimension">
<a-input class="box-input" :maxLength="200" :placeholder="$t('PleaseEnter')+$t('Coolingmode')"
v-model="formInline.coolingMethod"></a-input>
</a-form-model-item>
</div>
</a-col>
</a-row>
<!-- 备注-->
<div class='header-title'>
<span class='header-title-text'>{{$t('remarks')}}</span>
</div>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('Filingcompletiontime')">{{$t('Filingcompletiontime')}}</span>
</div>
<a-form-model-item class="itemModel" prop="designDueDate">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('Filingcompletiontime')"
@change="dateChange({db_field_name:'filingCompletionTime'})"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="formInline.filingCompletionTime"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('remarks')">{{$t('remarks')}}</span>
</div>
<a-form-model-item class="itemModel" prop="remarks">
<a-textarea
:placeholder="$t('remarks')"
:maxLength="500"
v-model="formInline.remark" :rows="2"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model>
</a-spin>
<div class="drawer-bootom-button">
@@ -249,8 +501,20 @@
<script>
import PersonnelSelection from '@/components/PersonnelSelection/index'
import { ACCESS_TOKEN } from '@/store/mutation-types'
import { getAction, postAction, downloadFile, putAction } from '@/api/manage'
import { mapGetters } from 'vuex'
import moment from 'moment'
import Vue from 'vue'
function getBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader()
reader.readAsDataURL(file)
reader.onload = () => resolve(reader.result)
reader.onerror = (error) => reject(error)
})
}
export default {
name: 'addModel',
@@ -324,6 +588,30 @@
trigger: 'blur'
}
],
power:[
{
required: true,
message: this.$t('power') + this.$t('cannotEmpty'),
trigger: 'blur'
},
{
max: 200,
message: this.$t('DigitalPlatform') + this.$t('cannotExceed') + 200 + this.$t('Characters'),
trigger: 'blur'
}
],
producer:[
{
required: true,
message: this.$t('producer') + this.$t('cannotEmpty'),
trigger: 'blur'
},
{
max: 200,
message: this.$t('DigitalPlatform') + this.$t('cannotExceed') + 200 + this.$t('Characters'),
trigger: 'blur'
}
],
digitalPlatform: [
{
max: 200,
@@ -345,6 +633,13 @@
trigger: 'change'
}
],
targetMarket: [
{
required: true,
message: this.$t('targetMarket') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
brand: [
{
required: true,
@@ -371,24 +666,97 @@
trigger: 'change'
}
],
certificationEngineerName: [
dutyDepart: [
{
max: 100,
message: this.$t('certifiedEngineer') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
required: true,
message: this.$t('statisticalNodes') + this.$t('cannotEmpty'),
trigger: 'change'
}
]
],
regulationOwnerIdName: [
{
required: true,
message: this.$t('regulatoryEngineer') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
engineeringInterfacePersonName: [
{
required: true,
message: this.$t('engineeringInterfacePerson') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
},
disabled: false,
previewVisible: false,
previewImage: '',
cut: '',
fileList: [],
projectNameList: [],
title: ''
firstLevelDutyTerritoryList:[],
title: '',
headers: {},
uploadAction: window._CONFIG['domianURL'] + '/sys/common/upload',
state: undefined,
myuploadAction: window._CONFIG['domianURL'] + this.thisFileUploadUrl,
upDataList: [],
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
downLoadImgUrl: window._CONFIG['domianWebImgURL'] + '/sys/common/download',
}
},
created() {
this.containerId = 'container-ty-' + new Date().getTime()
},
mounted() {
this.getNameList()
let long = localStorage.getItem('language')
this.cut = ''
if (long && long == 'zh-cn') {
this.cut = 'cn'
} else if (long && long == 'en-us') {
this.cut = 'en'
}
},
methods: {
...mapGetters(['userInfo']),
handleCancelimg() {
this.previewVisible = false;
},
async handlePreview(file) {
if (!file.url && !file.preview) {
file.preview = await getBase64(file.originFileObj);
}
this.previewImage = file.url || file.preview;
this.previewVisible = true;
},
handleChange({ fileList }) {
this.fileList = fileList;
console.log(this.fileList)
let filelist = []
let filelistId = []
this.fileList.forEach((item => {
filelist.push(item.response)
}))
console.log(filelist,'111')
filelist.forEach((item => {
filelistId.push(item.result.id)
}))
this.formInline.brandLabel = filelistId.join(',')
this.formInline = { ...this.formInline }
},
getFirstLevelDutyTerritory() {
getAction('/sys/dictItem/getFirstLevelDutyTerritory', {}).then((res) => {
if (res.success) {
this.firstLevelDutyTerritoryList = res.result
} else {
this.firstLevelDutyTerritoryList = []
}
})
},
dateChange(item) {
this.formInline[item.db_field_name] = this.formInline[item.db_field_name] ? moment(this.formInline[item.db_field_name]).format('YYYY-MM-DD') : ''
},
getNameList(value) {
getAction('project/projectNameInfoEO/list', {}).then((res) => {
if (res.success) {
@@ -397,9 +765,32 @@
let content = this.projectNameList.filter(res => {
return res.id == value.projectNameId
})
if(value.dutyDepart){
value.dutyDepart = value.dutyDepart.split(',')
}
let file = []
getAction('sys/common/getFileInfos', { id: value.brandLabel }).then((res) => {
if (res.success) {
console.log(res.result)
res.result.forEach((item =>{
file.push({
name : item.fileName,
uid : item.id,
url : item.url
})
}))
console.log(file)
this.fileList = file
} else {
// this.$refs.uploadFile.perentHandleFunc()
}
})
this.formInline = value
console.log(this.formInline)
this.formInline.engineeringInterfacePersonName = this.formInline.engineeringInterfacePersonName
this.formInline.regulationOwnerIdName = this.formInline.regulationOwnerIdName
this.formInline = { ...this.formInline }
this.$forceUpdate()
}
} else {
this.projectNameList = []
@@ -411,8 +802,12 @@
this.title = this.$t('add')
this.formInline = {}
this.getNameList()
this.formInline.studioEngineerName = this.userInfo().username
this.formInline.studioEngineer = this.userInfo().id
this.getFirstLevelDutyTerritory()
const token = Vue.ls.get(ACCESS_TOKEN)
this.headers = { 'X-Access-Token': token }
console.log(this.headers)
this.formInline.regulationOwnerIdName = this.userInfo().username
this.formInline.regulationOwnerId = this.userInfo().id
this.formInline.projectVersion = '00'
this.formInline = { ...this.formInline }
this.$nextTick(() => {
@@ -422,6 +817,9 @@
editModel(value) {
this.visible = true
this.title = this.$t('edit')
const token = Vue.ls.get(ACCESS_TOKEN)
this.headers = { 'X-Access-Token': token }
console.log(this.headers)
this.getNameList(value)
this.$nextTick(() => {
this.$refs.ruleForm.clearValidate()
@@ -443,6 +841,7 @@
Action = postAction
}
let query = JSON.parse(JSON.stringify(this.formInline))
delete query.urlList
Object.keys(query).forEach(res => {
if (query[res] && query[res] instanceof Array) {
query[res] = query[res].join(',')
@@ -582,7 +981,31 @@
height: 40px;
margin-bottom: 24px;
}
.itemModelimg {
width: calc(100% - 130px);
display: inline-block;
margin-top: 2px;
margin-bottom: 24px;
}
.header-text {
font-size: 16px;
color: #000000;
font-weight: bold;
}
.header-title-text{
font-size: 16px;
color: #000000;
line-height: 50px;
margin: 0 19px;
}
.header-title{
background: #F5F6F7;
width: 100%;
height: 50px;
margin-top: 10px;
margin-bottom: 10px;
}
.Required {
color: red;
margin-right: 4px;
@@ -820,6 +820,13 @@
ellipsis: true,
scopedSlots: { customRender: 'nameOfManufacturer' }
},
{
title: this.$t('remarks'),
align: 'left',
dataIndex: 'remark',
width: 180,
ellipsis: true,
},
{
title: this.$t('operation'),
align: 'left',
@@ -11,7 +11,10 @@
style="height: 100%;overflow: auto;padding-bottom: 53px;">
<a-spin :spinning="confirmLoading">
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
<div v-for="(item,index) in formInline.list" :key="index">
<div class="header-text">
{{$t('Platformdevelopmentvalvepoint')}}
</div>
<div v-for="(item,index) in formInline.listUp" :key="index">
<div style='margin-left: 25px'>
<a-row :gutter="24">
<a-col :span="12">
@@ -21,7 +24,7 @@
<span class="title-text-text" :title="$t('Nodename')">{{$t('Nodename')}}</span>
</div>
<a-form-model-item class="itemModel"
:prop="'list.'+index+'.nodeName'"
:prop="'listUp.'+index+'.nodeName'"
:rules="[{ required:true,
message: $t('Nodename') + $t('cannotEmpty'), trigger: 'blur'}]"
>
@@ -50,7 +53,55 @@
</div>
</a-col>
<a-icon class="icon-text" style='font-size: 20px;margin-top: 10px;' @click="addClick(index)" type="plus"/>
<a-icon class="icon-text" style='font-size: 20px;margin-top: 10px;' v-if="formInline.list.length > 1" @click="deleteClick(index)"
<a-icon class="icon-text" style='font-size: 20px;margin-top: 10px;' v-if="formInline.listUp.length > 1" @click="deleteClick(index)"
type="minus" />
</a-row>
</div>
</div>
<div class="header-text">
{{$t('Compliancemanagementvalvepoint')}}
</div>
<div v-for="(item,index) in formInline.listDown" :key="index">
<div style='margin-left: 25px'>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('Nodename')">{{$t('Nodename')}}</span>
</div>
<a-form-model-item class="itemModel"
:prop="'listDown.'+index+'.nodeName'"
:rules="[{ required:true,
message: $t('Nodename') + $t('cannotEmpty'), trigger: 'blur'}]"
>
<a-input class="box-input"
v-model="item.nodeName"
:maxLength="200"
:placeholder="$t('PleaseEnter')+$t('Nodename')"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12" style='margin-left: -49px'>
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('Nodedate')">{{$t('Nodedate')}}</span>
</div>
<a-form-model-item class="itemModel">
<a-date-picker class="box-input"
:placeholder="$t('PleaseSelect')+$t('Nodedate')"
@change="dateChange(item,index)"
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="item.nodeTime"
:disabled="false"
style="width: 100%"/>
</a-form-model-item>
</div>
</a-col>
<a-icon class="icon-text" style='font-size: 20px;margin-top: 10px;' @click="addClickdown(index)" type="plus"/>
<a-icon class="icon-text" style='font-size: 20px;margin-top: 10px;' v-if="formInline.listDown.length > 1" @click="deleteClickdown(index)"
type="minus" />
</a-row>
</div>
@@ -77,7 +128,8 @@
visible: false,
confirmLoading: false,
formInline: {
list:[{}]
listUp:[{}],
listDown:[{}],
},
rules: {
},
@@ -88,15 +140,27 @@
},
methods: {
addClick(index){
if(this.formInline.list.length > 19){
if(this.formInline.listUp.length > 19){
this.$message.warning(this.$t('maximum'))
}else{
this.formInline.list.splice(index + 1, 0, {})
this.formInline.listUp.splice(index + 1, 0, {})
}
this.formInline = { ...this.formInline }
},
deleteClick(index) {
this.formInline.list.splice(index, 1)
this.formInline.listUp.splice(index, 1)
this.formInline = { ...this.formInline }
},
addClickdown(index){
if(this.formInline.listDown.length > 19){
this.$message.warning(this.$t('maximum'))
}else{
this.formInline.listDown.splice(index + 1, 0, {})
}
this.formInline = { ...this.formInline }
},
deleteClickdown(index) {
this.formInline.listDown.splice(index, 1)
this.formInline = { ...this.formInline }
},
edit() {
@@ -107,13 +171,14 @@
this.settingQueryForm()
},
settingQueryForm() {
getAction(this.url.settingQueryForm, { projectId: this.$route.query.id }).then((res) => {
getAction('platform/platformTaskPlanningEO/queryListUpdate', { projectId: this.$route.query.id }).then((res) => {
if (res.success) {
this.formInline.list = res.result ? res.result : [{}]
this.formInline.listUp = res.result.listUp ? res.result.listUp : [{}]
this.formInline.listDown = res.result.listDown ? res.result.listDown : [{}]
if(res.result==null ||res.result.length == 0){
this.formInline.list=[{}]
this.formInline.listUp=[{}]
this.formInline.listDown=[{}]
}
console.log(this.formInline.list)
}
})
@@ -121,14 +186,23 @@
handleOk() {
this.$refs.ruleForm.validate(valid => {
if (valid) {
if(this.formInline.list){
this.formInline.list.forEach((item,index) => {
if(this.formInline.listUp){
this.formInline.listUp.forEach((item,index) => {
item.projectId = this.$route.query.id
if((item.nodeName == '' || item.nodeName == undefined) && (item.nodeTime == ''| item.nodeTime == undefined)){
this.formInline.list.splice(index, 1) // 调用splice方法删除指定的对象
this.formInline.listUp.splice(index, 1) // 调用splice方法删除指定的对象
}
})
this.formInline.list = this.formInline.list
this.formInline.listUp = this.formInline.listUp
}
if(this.formInline.listDown){
this.formInline.listDown.forEach((item,index) => {
item.projectId = this.$route.query.id
if((item.nodeName == '' || item.nodeName == undefined) && (item.nodeTime == ''| item.nodeTime == undefined)){
this.formInline.listDown.splice(index, 1) // 调用splice方法删除指定的对象
}
})
this.formInline.listDown = this.formInline.listDown
}
let query = {
...this.formInline,
@@ -160,12 +234,14 @@
},
handleCancel() {
this.formInline = {
list:[{}]
listUp:[{}],
listDown:[{}],
}
this.visible = false
},
dateChange(item,index) {
this.formInline.list[index].danodeTimete = this.formInline.list[index].nodeTime ? moment(this.formInline.list[index].nodeTime).format('YYYY-MM-DD') : ''
this.formInline.listUp[index].danodeTimete = this.formInline.listUp[index].nodeTime ? moment(this.formInline.listUp[index].nodeTime).format('YYYY-MM-DD') : ''
this.formInline.listDown[index].danodeTimete = this.formInline.listDown[index].nodeTime ? moment(this.formInline.listDown[index].nodeTime).format('YYYY-MM-DD') : ''
}
}
}
@@ -184,7 +260,12 @@
/*.formAdd .ant-form-item {*/
/* margin-bottom: 20px;*/
/*}*/
.header-text {
font-size: 16px;
color: #000000;
font-weight: bold;
}
.itemModel .ant-form-item-control-wrapper {
width: 100%;
}
@@ -226,6 +226,24 @@
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('remarks')">{{$t('remarks')}}</span>
</div>
<a-form-model-item class="itemModel-text" :prop="'dataList.'+index+'.remark'"
:rules="[{max: 500,message: $t('remarks') + $t('cannotExceed') + 500 + $t('Characters'),trigger: 'blur'
}]">
<a-textarea
style="width: 100%"
:placeholder="$t('PleaseEnter')+$t('remarks')"
v-model="item.remark" :rows="4"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
</div>
</a-form-model>
</a-spin>
@@ -548,4 +566,10 @@
::v-deep .ant-form-item-with-help {
margin-bottom: 25px;
}
.itemModel-text {
width: calc(100% - 130px);
display: inline-block;
margin-top: 2px;
}
</style>
@@ -222,6 +222,22 @@
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('remarks')">{{$t('remarks')}}</span>
</div>
<a-form-model-item class="itemModel-text" :prop="'remark'">
<a-textarea
style="width: 100%"
:placeholder="$t('PleaseEnter')+$t('remarks')"
v-model="formInline.remark" :rows="4"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model>
</a-spin>
<div class="drawer-bootom-button" v-if="button">
@@ -325,7 +341,14 @@
message: this.$t('Deliverables') + this.$t('cannotEmpty'),
trigger: 'change'
}
]
],
remark:[
{
max: 500,
message: this.$t('remarks') + this.$t('cannotExceed') + 500 + this.$t('Characters'),
trigger: 'blur'
}
],
}
}
},
@@ -560,4 +583,10 @@
::v-deep .ant-form-item-with-help {
margin-bottom: 25px;
}
.itemModel-text {
width: calc(100% - 130px);
display: inline-block;
margin-top: 2px;
}
</style>
@@ -429,6 +429,13 @@
ellipsis: true,
scopedSlots: { customRender: 'deliverableTemplate' }
},
{
title: this.$t('remarks'),
align: 'left',
dataIndex: 'remark',
width: 330,
ellipsis: true
},
{
title: this.$t('operation'),
align: 'left',