合并分支 'dev_third_stage' 到 'master'

Dev third stage

查看合并请求 laws-nio/laws-weilai!135
This commit is contained in:
李雪涛
2022-08-10 20:10:46 +08:00
66 changed files with 812 additions and 318 deletions
@@ -855,18 +855,17 @@ CREATE TABLE `laws_weilai`.`country_national_flag` (
`national_flag_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '国旗url', `national_flag_url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '国旗url',
PRIMARY KEY (`id`) USING BTREE PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '国家与国旗中间表' ROW_FORMAT = Dynamic; ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '国家与国旗中间表' ROW_FORMAT = Dynamic;
-- 初始化数据 2022-08-09 -- 初始化数据 2022-08-10
INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('11', NULL, NULL, NULL, NULL, NULL, '澳大利亚', 'Australia', NULL, '澳大利亚.jpg'); INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('1', NULL, NULL, NULL, NULL, NULL, '欧盟', 'EU', NULL, '/jero-boot/nationalFlag/EU.png');
INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('12', NULL, NULL, NULL, NULL, NULL, '新西兰', 'New Zealand', NULL, '新西兰.jpg'); INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('10', NULL, NULL, NULL, NULL, NULL, '美国', 'US', NULL, '/jero-boot/nationalFlag/US.png');
INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('13', NULL, NULL, NULL, NULL, NULL, '英国', 'UK', NULL, '英国.jpg'); INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('11', NULL, NULL, NULL, NULL, NULL, '澳大利亚', 'Australia', NULL, '/jero-boot/nationalFlag/Australia.png');
INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('2', NULL, NULL, NULL, NULL, NULL, '中国', 'China', NULL, '中国.jpg'); INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('12', NULL, NULL, NULL, NULL, NULL, '新西兰', 'New Zealand', NULL, '/jero-boot/nationalFlag/NewZealand.png');
INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('3', NULL, NULL, NULL, NULL, NULL, '中国香港', 'Hong Kong China', NULL, '中国香港.jpg'); INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('13', NULL, NULL, NULL, NULL, NULL, '英国', 'UK', NULL, '/jero-boot/nationalFlag/UK.png');
INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('4', NULL, NULL, NULL, NULL, NULL, '', 'South Korea', NULL, '韩国.jpg'); INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('2', NULL, NULL, NULL, NULL, NULL, '', 'China', NULL, '/jero-boot/nationalFlag/China.png');
INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('5', NULL, NULL, NULL, NULL, NULL, '日本', 'Japan', NULL, '日本.jpg'); INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('3', NULL, NULL, NULL, NULL, NULL, '中国香港', 'Hong Kong China', NULL, '/jero-boot/nationalFlag/China.png');
INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('6', NULL, NULL, NULL, NULL, NULL, '新加坡', 'Singapore', NULL, '新加坡.jpg'); INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('4', NULL, NULL, NULL, NULL, NULL, '韩国', 'South Korea', NULL, '/jero-boot/nationalFlag/SouthKorea.png');
INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('7', NULL, NULL, NULL, NULL, NULL, '马来西亚', 'Malaysia', NULL, '马来西亚.jpg'); INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('5', NULL, NULL, NULL, NULL, NULL, '日本', 'Japan', NULL, '/jero-boot/nationalFlag/Japan.png');
INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('6', NULL, NULL, NULL, NULL, NULL, '新加坡', 'Singapore', NULL, '/jero-boot/nationalFlag/Singapore.png');
INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('7', NULL, NULL, NULL, NULL, NULL, '马来西亚', 'Malaysia', NULL, '/jero-boot/nationalFlag/Malaysia.png');
INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('8', NULL, NULL, NULL, NULL, NULL, '海湾地区', 'GCC', NULL, '海湾地区.jpg'); INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('8', NULL, NULL, NULL, NULL, NULL, '海湾地区', 'GCC', NULL, '海湾地区.jpg');
INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('9', NULL, NULL, NULL, NULL, NULL, '阿联酋', 'UAE', NULL, '阿联酋.jpg'); INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('9', NULL, NULL, NULL, NULL, NULL, '阿联酋', 'UAE', NULL, '/jero-boot/nationalFlag/UAE.png');
INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('1', NULL, NULL, NULL, NULL, NULL, '欧盟', 'EU', NULL, '欧盟.jpg');
INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `country_name_cn`, `country_name_en`, `national_flag_id`, `national_flag_url`) VALUES ('10', NULL, NULL, NULL, NULL, NULL, '美国', 'US', NULL, '美国.jpg');
@@ -85,11 +85,11 @@ public class JeroBootExceptionHandler {
/** /**
* spring默认上传大小100MB 超出大小捕获异常MaxUploadSizeExceededException * spring默认上传大小100MB 超出大小捕获异常MaxUploadSizeExceededException
*/ */
@ExceptionHandler(MaxUploadSizeExceededException.class) // @ExceptionHandler(MaxUploadSizeExceededException.class)
public Result<?> handleMaxUploadSizeExceededException(MaxUploadSizeExceededException e) { // public Result<?> handleMaxUploadSizeExceededException(MaxUploadSizeExceededException e) {
log.error(e.getMessage(), e); // log.error(e.getMessage(), e);
return Result.error("文件大小超出10MB限制, 请压缩或降低文件质量! "); // return Result.error("文件大小超出100MB限制, 请压缩或降低文件质量! ");
} // }
@ExceptionHandler(DataIntegrityViolationException.class) @ExceptionHandler(DataIntegrityViolationException.class)
public Result<?> handleDataIntegrityViolationException(DataIntegrityViolationException e) { public Result<?> handleDataIntegrityViolationException(DataIntegrityViolationException e) {
@@ -72,15 +72,15 @@ public class OSSFileServiceImpl extends ServiceImpl<OSSFileMapper, OSSFile> impl
public OSSFile uploadLocal(MultipartFile mf, String bizPath, String state, String cut) { public OSSFile uploadLocal(MultipartFile mf, String bizPath, String state, String cut) {
//处理文件大小,大于100M抛出异常 //处理文件大小,大于100M抛出异常
long fileSize = mf.getSize() / 1024 / 1024; // long fileSize = mf.getSize() / 1024 / 1024;
String originalFilename = mf.getOriginalFilename(); // String originalFilename = mf.getOriginalFilename();
if (fileSize >= 100) { // if (fileSize >= 100) {
if (cut.equals(CutEnum.CN.getValue())) { // if (cut.equals(CutEnum.CN.getValue())) {
throw new JeroBootException(originalFilename + "文件大小超出100MB, 请压缩或降低文件质量!"); // throw new JeroBootException(originalFilename + "文件大小超出100MB, 请压缩或降低文件质量!");
} else { // } else {
throw new JeroBootException(originalFilename + "File size out 100MB, Please compress or reduce file quality!"); // throw new JeroBootException(originalFilename + "File size out 100MB, Please compress or reduce file quality!");
} // }
} // }
OSSFile oSSFile = new OSSFile(); OSSFile oSSFile = new OSSFile();
try { try {
@@ -191,15 +191,15 @@ public class OSSFileServiceImpl extends ServiceImpl<OSSFileMapper, OSSFile> impl
public OSSFile uploadLocalOfCos(MultipartFile mf, String bizPath, String state, String cut) { public OSSFile uploadLocalOfCos(MultipartFile mf, String bizPath, String state, String cut) {
//处理文件大小,大于100M抛出异常 //处理文件大小,大于100M抛出异常
long fileSize = mf.getSize() / 1024 / 1024; // long fileSize = mf.getSize() / 1024 / 1024;
String originalFilename = mf.getOriginalFilename(); // String originalFilename = mf.getOriginalFilename();
if (fileSize >= 100) { // if (fileSize >= 100) {
if (cut.equals(CutEnum.CN.getValue())) { // if (cut.equals(CutEnum.CN.getValue())) {
throw new JeroBootException(originalFilename + "文件大小超出100MB, 请压缩或降低文件质量!"); // throw new JeroBootException(originalFilename + "文件大小超出100MB, 请压缩或降低文件质量!");
} else { // } else {
throw new JeroBootException(originalFilename + "File size out 100MB, Please compress or reduce file quality!"); // throw new JeroBootException(originalFilename + "File size out 100MB, Please compress or reduce file quality!");
} // }
} // }
OSSFile oSSFile = new OSSFile(); OSSFile oSSFile = new OSSFile();
String ctxPath = uploadCospath; String ctxPath = uploadCospath;
@@ -296,15 +296,15 @@ public class OSSFileServiceImpl extends ServiceImpl<OSSFileMapper, OSSFile> impl
public OSSFile uploadLocalForSplit(MultipartFile mf, String bizPath, String state, String cut) { public OSSFile uploadLocalForSplit(MultipartFile mf, String bizPath, String state, String cut) {
//处理文件大小,大于100M抛出异常 //处理文件大小,大于100M抛出异常
long fileSize = mf.getSize() / 1024 / 1024; // long fileSize = mf.getSize() / 1024 / 1024;
String originalFilename = mf.getOriginalFilename(); // String originalFilename = mf.getOriginalFilename();
if (fileSize >= 100) { // if (fileSize >= 100) {
if (cut.equals(CutEnum.CN.getValue())) { // if (cut.equals(CutEnum.CN.getValue())) {
throw new JeroBootException(originalFilename + "文件大小超出100MB, 请压缩或降低文件质量!"); // throw new JeroBootException(originalFilename + "文件大小超出100MB, 请压缩或降低文件质量!");
} else { // } else {
throw new JeroBootException(originalFilename + "File size out 100MB, Please compress or reduce file quality!"); // throw new JeroBootException(originalFilename + "File size out 100MB, Please compress or reduce file quality!");
} // }
} // }
OSSFile oSSFile = new OSSFile(); OSSFile oSSFile = new OSSFile();
String ctxPath = uploadCospath; String ctxPath = uploadCospath;
@@ -293,7 +293,11 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
//文档动态信息添加 //文档动态信息添加
if(StringUtils.isNotBlank(sbTemp)){ if(StringUtils.isNotBlank(sbTemp)){
HomeDocumentDynamicEO homeDocumentDynamicEO = new HomeDocumentDynamicEO(); HomeDocumentDynamicEO homeDocumentDynamicEO = new HomeDocumentDynamicEO();
String msgContent = "The " + StringUtils.join(serialNumberListTemp,",") + " has been deleted from the document library."; String msgEndStr = " has been deleted from the document library.";
if (serialNumberListTemp.size() > 1) {
msgEndStr = " have been deleted from the document library.";
}
String msgContent = "The standard " + StringUtils.join(serialNumberListTemp,",") + msgEndStr;
homeDocumentDynamicEO.setMsgContent(msgContent); homeDocumentDynamicEO.setMsgContent(msgContent);
homeDocumentDynamicEO.setMsgContentInfo(msgContent); homeDocumentDynamicEO.setMsgContentInfo(msgContent);
homeDocumentDynamicEOService.save(homeDocumentDynamicEO); homeDocumentDynamicEOService.save(homeDocumentDynamicEO);
@@ -2143,8 +2147,8 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
//文档动态, 文档库中新增了标准XXXX homeDocumentDynamicEOService //文档动态, 文档库中新增了标准XXXX homeDocumentDynamicEOService
//The standard GB 7258-2017 Technical specifications has been added to the document library. //The standard GB 7258-2017 Technical specifications has been added to the document library.
HomeDocumentDynamicEO homeDocumentDynamicEO = new HomeDocumentDynamicEO(); HomeDocumentDynamicEO homeDocumentDynamicEO = new HomeDocumentDynamicEO();
homeDocumentDynamicEO.setMsgContent("The " + category + " " + serialNumber + " " + titleEn + " has been added to the document library."); homeDocumentDynamicEO.setMsgContent("The standard " + category + " " + serialNumber + " " + titleEn + " has been added to the document library.");
homeDocumentDynamicEO.setMsgContentInfo("The " + href + " has been added to the document library."); homeDocumentDynamicEO.setMsgContentInfo("The standard " + href + " has been added to the document library.");
homeDocumentDynamicEOService.save(homeDocumentDynamicEO); homeDocumentDynamicEOService.save(homeDocumentDynamicEO);
@@ -2596,11 +2600,11 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
StringBuilder msgContentSb = new StringBuilder(); StringBuilder msgContentSb = new StringBuilder();
StringBuilder msgContentInfoSb = new StringBuilder(); StringBuilder msgContentInfoSb = new StringBuilder();
//适用车型 //适用车型
StringBuilder msgContentSbCarType = new StringBuilder("Vehicle Type of the " + category + " " + serialNumber + " " + titleEn); StringBuilder msgContentSbCarType = new StringBuilder("Vehicle Type of the standard " + category + " " + serialNumber + " " + titleEn);
StringBuilder msgContentInfoSbCarType = new StringBuilder("Vehicle Type of the " + category + " " + href); StringBuilder msgContentInfoSbCarType = new StringBuilder("Vehicle Type of the standard " + category + " " + href);
//状态 //状态
StringBuilder msgContentSbStatus = new StringBuilder("The Status of the " + category + " " + serialNumber + " " + titleEn); StringBuilder msgContentSbStatus = new StringBuilder("The Status of the standard " + category + " " + serialNumber + " " + titleEn);
StringBuilder msgContentInfoSbStatus = new StringBuilder("The Status of the " + category + " " + href); StringBuilder msgContentInfoSbStatus = new StringBuilder("The Status of the standard " + category + " " + href);
List<String> fileIdLIstTemp = new ArrayList<>(); List<String> fileIdLIstTemp = new ArrayList<>();
@@ -2634,8 +2638,8 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
} }
// //
if(StringUtils.isBlank(value)){ if(StringUtils.isBlank(value)){
msgContentSbStatus.append(" has been modified to be null ,"); msgContentSbStatus.append(" has been modified to be null,");
msgContentInfoSbStatus.append(" has been modified to be null ,"); msgContentInfoSbStatus.append(" has been modified to be null,");
msgContentSb.append(msgContentSbStatus); msgContentSb.append(msgContentSbStatus);
msgContentInfoSb.append(msgContentInfoSbStatus); msgContentInfoSb.append(msgContentInfoSbStatus);
}else{ }else{
@@ -2670,8 +2674,8 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
value = substring; value = substring;
} }
if(StringUtils.isBlank(value)){ if(StringUtils.isBlank(value)){
msgContentSbCarType.append(" has been modified to be null ,"); msgContentSbCarType.append(" has been modified to be null,");
msgContentInfoSbCarType.append(" has been modified to be null ,"); msgContentInfoSbCarType.append(" has been modified to be null,");
msgContentSb.append(msgContentSbCarType); msgContentSb.append(msgContentSbCarType);
msgContentInfoSb.append(msgContentInfoSbCarType); msgContentInfoSb.append(msgContentInfoSbCarType);
}else{ }else{
@@ -2691,8 +2695,8 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
msgContentInfoSb.append(contentInfoFile); msgContentInfoSb.append(contentInfoFile);
} }
if(count > 0){ if(count > 0){
String msgContent = msgContentSb.substring(0, msgContentSb.length() - 1); String msgContent = msgContentSb.substring(0, msgContentSb.length() - 1) + ".";
String msgContentInfo = msgContentInfoSb.substring(0, msgContentInfoSb.length() - 1); String msgContentInfo = msgContentInfoSb.substring(0, msgContentInfoSb.length() - 1) + ".";
HomeDocumentDynamicEO homeDocumentDynamicEO = new HomeDocumentDynamicEO(); HomeDocumentDynamicEO homeDocumentDynamicEO = new HomeDocumentDynamicEO();
homeDocumentDynamicEO.setMsgContent(msgContent); homeDocumentDynamicEO.setMsgContent(msgContent);
homeDocumentDynamicEO.setMsgContentInfo(msgContentInfo); homeDocumentDynamicEO.setMsgContentInfo(msgContentInfo);
@@ -74,11 +74,13 @@ public class ExtRepoDataController extends JeroController<ExtRepoData, IExtRepoD
// 文件名称模糊查询 // 文件名称模糊查询
String fileName = req.getParameter("fileName"); String fileName = req.getParameter("fileName");
if (StringUtils.isNotBlank(fileName)) { if (StringUtils.isNotBlank(fileName)) {
fileName = fileName.replace("%","\\%");
queryWrapper.like(ExtRepoData::getFileName, fileName); queryWrapper.like(ExtRepoData::getFileName, fileName);
} }
// 上传人模糊查询 // 上传人模糊查询
String createBy = req.getParameter("createBy"); String createBy = req.getParameter("createBy");
if (StringUtils.isNotBlank(createBy)) { if (StringUtils.isNotBlank(createBy)) {
createBy = createBy.replace("%","\\%");
queryWrapper.like(ExtRepoData::getCreateBy, createBy); queryWrapper.like(ExtRepoData::getCreateBy, createBy);
} }
// 更新时间查询 // 更新时间查询
@@ -185,7 +187,7 @@ public class ExtRepoDataController extends JeroController<ExtRepoData, IExtRepoD
ExtRepoData erd = extRepoDataService.queryById(id); ExtRepoData erd = extRepoDataService.queryById(id);
if (null != erd) { if (null != erd) {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if (extRepoFolderService.isManager() || sysUser.getUsername().equals(erd.getCreateBy())) { if (sysUser.getUsername().equals(erd.getCreateBy())) {
extRepoDataService.deleteById(id); extRepoDataService.deleteById(id);
CosBootUtil.delete(erd.getFileKey()); CosBootUtil.delete(erd.getFileKey());
if (CutEnum.CN.getValue().equals(cut)) { if (CutEnum.CN.getValue().equals(cut)) {
@@ -359,7 +359,7 @@ public class ExtRepoFolderServiceImpl extends ServiceImpl<ExtRepoFolderMapper, E
res = res || getStringList(erf.getAuthManageIds()).contains(sysUser.getId()) res = res || getStringList(erf.getAuthManageIds()).contains(sysUser.getId())
|| getStringList(erf.getAuthViewIds()).contains(sysUser.getId()); || getStringList(erf.getAuthViewIds()).contains(sysUser.getId());
} }
return false; return res;
} }
@@ -84,6 +84,10 @@ public class CountryCardManageReleaseDetailEO implements Serializable {
@ApiModelProperty(value = "内容") @ApiModelProperty(value = "内容")
private java.lang.String content; private java.lang.String content;
/**如果是下拉选的话,把翻译后的值放到此字段中。*/
@TableField(exist = false)
private java.lang.String contentDropDownValue;
@TableField(exist = false) @TableField(exist = false)
private String cut; private String cut;
@@ -72,12 +72,19 @@ public class ProblemKnowledgeBaseEO implements Serializable {
/**问题分类展示名称*/ /**问题分类展示名称*/
@TableField(exist = false) @TableField(exist = false)
private java.lang.String problemTypeName; private java.lang.String problemTypeName;
/**问题分类查询条件字段 多个*/
@TableField(exist = false)
private java.lang.String problemTypes;
/**市场*/
@Dict(dicCode = "region") /**市场*/
//@Dict(dicCode = "region")
@Excel(name = "市场", width = 15) @Excel(name = "市场", width = 15)
@ApiModelProperty(value = "市场") @ApiModelProperty(value = "市场")
private java.lang.String targetMarket; private java.lang.String targetMarket;
/**市场展示字段**/
@TableField(exist = false)
private java.lang.String targetMarket_dicText;
/**文档库id*/ /**文档库id*/
@Excel(name = "文档库id", width = 15) @Excel(name = "文档库id", width = 15)
@@ -148,6 +148,19 @@ public class CountryCardManageReleaseDetailEOServiceImpl extends ServiceImpl<Cou
}).collect(Collectors.toList()); }).collect(Collectors.toList());
data.setCountryCardTempItemEOList(collect); data.setCountryCardTempItemEOList(collect);
if(StringUtils.isNotEmpty(data.getContent())){
String contentDropDownValue = countryCardTempItemEOList.stream().filter(countryCardTempItemEO -> {
boolean flag = false;
if (StringUtils.equals(data.getContent(), countryCardTempItemEO.getId())) {
flag = true;
}
return flag;
}).map(CountryCardTempItemEO::getItemText).collect(Collectors.joining(","));
//设置下拉框的value
data.setContentDropDownValue(contentDropDownValue);
}
} }
}); });
@@ -235,7 +235,8 @@ public class CountryCardManageReleaseEOServiceImpl extends ServiceImpl<CountryCa
for (DictModel dictModel : dictModelList) { for (DictModel dictModel : dictModelList) {
boolean flag = false; boolean flag = false;
for (CountryCardManageReleaseEO countryCardManageReleaseEO : countryCardManageReleaseEOList) { for (CountryCardManageReleaseEO countryCardManageReleaseEO : countryCardManageReleaseEOList) {
if(StringUtils.equals(dictModel.getValue(),countryCardManageReleaseEO.getApplyMarket())){ if(StringUtils.equals(dictModel.getValue(),countryCardManageReleaseEO.getApplyMarket())
&&StringUtils.equals(countryCardManageReleaseEO.getReleaseStatus(),ReleaseStatusEnum.HAVE_RELEASED.getValue())){
flag = true; flag = true;
break; break;
} }
@@ -70,6 +70,7 @@ public class CountryCardTempEOServiceImpl extends ServiceImpl<CountryCardTempEOM
CountryCardManageReleaseDetailEO countryCardManageReleaseDetailEO = new CountryCardManageReleaseDetailEO(); CountryCardManageReleaseDetailEO countryCardManageReleaseDetailEO = new CountryCardManageReleaseDetailEO();
countryCardManageReleaseDetailEO.setCountryCardTempId(countryCardTempEO.getId()); countryCardManageReleaseDetailEO.setCountryCardTempId(countryCardTempEO.getId());
countryCardManageReleaseDetailEO.setCountryCardManageReleaseId(manageReleaseEO.getId()); countryCardManageReleaseDetailEO.setCountryCardManageReleaseId(manageReleaseEO.getId());
releaseDetailEOList.add(countryCardManageReleaseDetailEO);
}); });
this.countryCardManageReleaseDetailEOService.saveBatch(releaseDetailEOList); this.countryCardManageReleaseDetailEOService.saveBatch(releaseDetailEOList);
} }
@@ -1,7 +1,9 @@
package com.jero.modules.problemKnowledgeBase.service.impl; package com.jero.modules.problemKnowledgeBase.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.constant.enums.CutEnum;
import com.jero.common.system.query.QueryGenerator; import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.DictModel;
import com.jero.common.system.vo.LoginUser; import com.jero.common.system.vo.LoginUser;
import com.jero.modules.problemKnowledgeBase.entity.*; import com.jero.modules.problemKnowledgeBase.entity.*;
import com.jero.modules.problemKnowledgeBase.enums.CollectStatusEnum; import com.jero.modules.problemKnowledgeBase.enums.CollectStatusEnum;
@@ -9,6 +11,8 @@ import com.jero.modules.problemKnowledgeBase.enums.PraiseStatusEnum;
import com.jero.modules.problemKnowledgeBase.enums.ShowPermissionsEnum; import com.jero.modules.problemKnowledgeBase.enums.ShowPermissionsEnum;
import com.jero.modules.problemKnowledgeBase.mapper.ProblemKnowledgeBaseEOMapper; import com.jero.modules.problemKnowledgeBase.mapper.ProblemKnowledgeBaseEOMapper;
import com.jero.modules.problemKnowledgeBase.service.*; import com.jero.modules.problemKnowledgeBase.service.*;
import com.jero.modules.system.enums.DicCodeEnum;
import com.jero.modules.system.service.ISysDictService;
import com.jero.modules.system.util.StringUtils; import com.jero.modules.system.util.StringUtils;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
@@ -44,6 +48,8 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
private IProblemKnowledgeBaseBrowsingHistoryEOService problemKnowledgeBaseBrowsingHistoryEOService; private IProblemKnowledgeBaseBrowsingHistoryEOService problemKnowledgeBaseBrowsingHistoryEOService;
@Autowired @Autowired
private IProblemKnowledgeBaseClassifyEOService problemKnowledgeBaseClassifyEOService; private IProblemKnowledgeBaseClassifyEOService problemKnowledgeBaseClassifyEOService;
@Autowired
private ISysDictService sysDictService;
/** /**
* 保存 * 保存
@@ -209,6 +215,7 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
problemKnowledgeBaseClassifyEOList = this.problemKnowledgeBaseClassifyEOService.list(classifyEOQueryWrapper); problemKnowledgeBaseClassifyEOList = this.problemKnowledgeBaseClassifyEOService.list(classifyEOQueryWrapper);
} }
List<DictModel> regionList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode());
List<ProblemKnowledgeBaseClassifyEO> finalProblemKnowledgeBaseClassifyEOList = problemKnowledgeBaseClassifyEOList; List<ProblemKnowledgeBaseClassifyEO> finalProblemKnowledgeBaseClassifyEOList = problemKnowledgeBaseClassifyEOList;
datas.forEach(data -> { datas.forEach(data -> {
@@ -298,6 +305,30 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
data.setProblemTypeName(problemTypeName); data.setProblemTypeName(problemTypeName);
} }
String targetMarket = data.getTargetMarket();
if(StringUtils.isNotEmpty(targetMarket) && CollectionUtils.isNotEmpty(regionList)){
String targetMarket_dicText = "";
if(StringUtils.equals(cut, CutEnum.CN.getValue())){
targetMarket_dicText = regionList.stream().filter(region -> {
boolean flag = false;
if (StringUtils.equals(targetMarket, region.getValue())) {
flag = true;
}
return flag;
}).map(DictModel::getText).collect(Collectors.joining(","));
}else if(StringUtils.equals(cut, CutEnum.EN.getValue())){
targetMarket_dicText = regionList.stream().filter(region -> {
boolean flag = false;
if (StringUtils.equals(targetMarket, region.getValue())) {
flag = true;
}
return flag;
}).map(DictModel::getTextEn).collect(Collectors.joining(","));
}
data.setTargetMarket_dicText(targetMarket_dicText);
}
}); });
} }
} }
@@ -335,5 +366,21 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
query.or().like(ProblemKnowledgeBaseEO::getContent,searchStr); query.or().like(ProblemKnowledgeBaseEO::getContent,searchStr);
}); });
} }
//根据分类查询 ,包含就查出来。
String problemTypes = problemKnowledgeBaseEO.getProblemTypes();
if(StringUtils.isNotEmpty(problemTypes)){
List<String> problemTypeList = Arrays.asList(problemTypes.split(","));
queryWrapper.and(query -> {
query.lambda().like(ProblemKnowledgeBaseEO::getProblemType,problemTypes);
if(CollectionUtils.isNotEmpty(problemTypeList)){
problemTypeList.forEach(type -> {
query.or(q -> {
q.lambda().like(ProblemKnowledgeBaseEO::getProblemType,type);
});
});
}
});
}
} }
} }
@@ -19,6 +19,9 @@ public enum JumpLinkEnum {
DESIGN_AFFIRM_LINK("设计符合性确认链接","4","/ProjectDetails?id=","&type=103"), DESIGN_AFFIRM_LINK("设计符合性确认链接","4","/ProjectDetails?id=","&type=103"),
TASK_AFFIRM_LINK("任务确认链接","2","/ProcessCenter",""), TASK_AFFIRM_LINK("任务确认链接","2","/ProcessCenter",""),
COMPLIANCE_PROCESS_DETAIL_LINK("符合性流程明细页路由","2","/taskListProcess",""), COMPLIANCE_PROCESS_DETAIL_LINK("符合性流程明细页路由","2","/taskListProcess",""),
PROBLEM_KNOWLEDGE_BASE_DETAIL("问题知识库,详情页","","/problemKnowledgeBaseView",""),
PROBLEM_KNOWLEDGE_BASE("问题知识库,列表页","","/problemknowledgeBase",""),
; ;
@@ -138,17 +138,17 @@ public class InventoryAffirmJob implements Job {
/*String msgContentCN = "您" + projectLibraryBase.getProjectName() + "(项目名称)法规清单的任务确认剩余处理时间还有3天,请及时查看处理";*/ /*String msgContentCN = "您" + projectLibraryBase.getProjectName() + "(项目名称)法规清单的任务确认剩余处理时间还有3天,请及时查看处理";*/
// XXX . // XXX .
String msgContentEN = "The remaining processing time for the regulation list confirmation for " String msgContentEN = "The remaining processing time for the regulation task confirmation for "
+ projectNameInfoEO.getProjectName() + "-" + projectNameInfoEO.getProjectName() + "-"
+ projectYearNameInfoEO.getYearName()+ " " + projectYearNameInfoEO.getYearName()+ " "
+ projectLibraryBase.getTargetMarket() + projectLibraryBase.getTargetMarket()
+ " are 3 days. Please check and handle it in time."; + " are 3 days. Please check and address it in a timely manner.";
String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName()+ " " + projectLibraryBase.getTargetMarket() String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName()+ " " + projectLibraryBase.getTargetMarket()
+ ": You have a regulation list confirmation task to complete"; + ": You have a regulation task confirmation to complete";
FeishuMsgVo feishuMsgVo = new FeishuMsgVo(); FeishuMsgVo feishuMsgVo = new FeishuMsgVo();
feishuMsgVo.setContent("Hello! The remaining processing time for the task are 3 days. Please check and address it in a timely manner."); feishuMsgVo.setContent("Hello! The remaining processing time for the task are 3 days. Please check and address it in a timely manner.");
feishuMsgVo.setTaskType("Regulation List Confirmation"); feishuMsgVo.setTaskType("Regulation Task Confirmation");
feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()); feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket());
//飞书跳转链接 //飞书跳转链接
@@ -172,22 +172,22 @@ public class InventoryAffirmJob implements Job {
sendMessageMap.put("contentInfo",contentInfo); sendMessageMap.put("contentInfo",contentInfo);
//发送消息 //发送消息
projectLawsInventoryEOService.sendMessage(msgTitle, msgContentEN, threeDaysUserIdList, projectLibraryBase.getId(), sendMessageMap, feishuMsgVo, MessageTypeEnum.LIST_CONFIRMATION,MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName()); projectLawsInventoryEOService.sendMessage(msgTitle, msgContentEN, threeDaysUserIdList, projectLibraryBase.getId(), sendMessageMap, feishuMsgVo, MessageTypeEnum.TASK_CONFIRMATION,MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName());
} }
if(CollectionUtils.isNotEmpty(currentDaysUserIdList)){ if(CollectionUtils.isNotEmpty(currentDaysUserIdList)){
currentDaysUserIdList = currentDaysUserIdList.stream().distinct().collect(Collectors.toList()); currentDaysUserIdList = currentDaysUserIdList.stream().distinct().collect(Collectors.toList());
/*String msgContentCN = "您" + projectLibraryBase.getProjectName() + "(项目名称)法规清单的任务今天即将结束,请及时查看处理*/ /*String msgContentCN = "您" + projectLibraryBase.getProjectName() + "(项目名称)法规清单的任务今天即将结束,请及时查看处理*/
String msgContentEN = "The regulation list confirmation for " String msgContentEN = "The regulation task confirmation for "
+ projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket() + projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()
+ " will expire today. Please check and address it in a timely manner."; + " will expire today. Please check and address it in a timely manner.";
String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName()+ " " + projectLibraryBase.getTargetMarket() String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName()+ " " + projectLibraryBase.getTargetMarket()
+ ": You have a regulation list confirmation task to complete"; + ": You have a regulation task confirmation to complete";
FeishuMsgVo feishuMsgVo = new FeishuMsgVo(); FeishuMsgVo feishuMsgVo = new FeishuMsgVo();
feishuMsgVo.setContent("Hello! The task will expire today. Please check and address it in a timely manner."); feishuMsgVo.setContent("Hello! The task will expire today. Please check and address it in a timely manner.");
feishuMsgVo.setTaskType("Regulation List Confirmation"); feishuMsgVo.setTaskType("Regulation Task Confirmation");
feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()); feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket());
//飞书跳转链接 //飞书跳转链接
@@ -210,7 +210,7 @@ public class InventoryAffirmJob implements Job {
sendMessageMap.put("hrefFeishu",hrefFeishu); sendMessageMap.put("hrefFeishu",hrefFeishu);
sendMessageMap.put("contentInfo",contentInfo); sendMessageMap.put("contentInfo",contentInfo);
//发送消息 //发送消息
projectLawsInventoryEOService.sendMessage(msgTitle, msgContentEN, currentDaysUserIdList, projectLibraryBase.getId(), sendMessageMap, feishuMsgVo, MessageTypeEnum.LIST_CONFIRMATION,MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName()); projectLawsInventoryEOService.sendMessage(msgTitle, msgContentEN, currentDaysUserIdList, projectLibraryBase.getId(), sendMessageMap, feishuMsgVo, MessageTypeEnum.TASK_CONFIRMATION,MessageTypeEnum.SYSTEMATIC_NOTIFICATION.getName());
} }
} }
} }
@@ -1350,7 +1350,7 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
//消息内容 //消息内容
String msgContentEN = currentUser.getUsername() + " initiated the regulation list confirmation for " String msgContentEN = currentUser.getUsername() + " initiated the regulation list confirmation for "
+ projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket() + projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()
+ ". The due date is" +inventoryAffirmDueDate+ " .Please check and address it in a timely manner."; + ". The due date is " + inventoryAffirmDueDate+ ". Please check and address it in a timely manner.";
String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket() String msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()
+ ": You have a regulation list confirmation task to complete"; + ": You have a regulation list confirmation task to complete";
@@ -2117,11 +2117,12 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
String taskType = ""; String taskType = "";
String initiator = ""; String initiator = "";
String initiatorLark = ""; String initiatorLark = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if (StringUtils.equals(msgType, MsgTypeEnum.TASK_AFFIRM_START_MSG.getValue())) { if (StringUtils.equals(msgType, MsgTypeEnum.TASK_AFFIRM_START_MSG.getValue())) {
userIdList.add(engineeringInterfacePerson); userIdList.add(engineeringInterfacePerson);
msgContentEN = sysUser.getUsername() + " initiated the regulation task confirmation of " + projectNameInfoEO.getProjectName() msgContentEN = sysUser.getUsername() + " initiated the regulation task confirmation of " + projectNameInfoEO.getProjectName()
+ ".The due date is" +taskAffirmDueDate+ " Please check and address it in a timely manner."; + ". The due date is " + taskAffirmDueDate + ". Please check and address it in a timely manner.";
msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket() msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()
+ ": You have a regulation task confirmation to complete"; + ": You have a regulation task confirmation to complete";
@@ -2136,7 +2137,7 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
String dreUserId = jsonObject.getString("dreUserId"); //dre用户id String dreUserId = jsonObject.getString("dreUserId"); //dre用户id
userIdList.add(dreUserId); userIdList.add(dreUserId);
msgContentEN = sysUser.getUsername() + " has assigned the regulation task confirmation of " + serialNumber + " in "+ projectNameInfoEO.getProjectName() msgContentEN = sysUser.getUsername() + " has assigned the regulation task confirmation of " + serialNumber + " in "+ projectNameInfoEO.getProjectName()
+ ".to you. the due date is " +taskAffirmDueDate+ " Please check and handle it in time."; + " to you. The due date is " +taskAffirmDueDate+ ". Please check and handle it in time.";
msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket() msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()
+ ": You have a regulation task confirmation to complete"; + ": You have a regulation task confirmation to complete";
@@ -2150,7 +2151,7 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
} else if (StringUtils.equals(msgType, MsgTypeEnum.TASK_AFFIRM_DRE_REJECTED.getValue())) { } else if (StringUtils.equals(msgType, MsgTypeEnum.TASK_AFFIRM_DRE_REJECTED.getValue())) {
userIdList.add(engineeringInterfacePerson); userIdList.add(engineeringInterfacePerson);
msgContentEN = sysUser.getUsername() + " has rejected the regulation task confirmation of " + serialNumber +" in "+ projectNameInfoEO.getProjectName() msgContentEN = sysUser.getUsername() + " has rejected the regulation task confirmation of " + serialNumber +" in "+ projectNameInfoEO.getProjectName()
+ ".The due date is " +taskAffirmDueDate+ " Please check and handle it in time."; + ". The due date is " +taskAffirmDueDate+ ". Please check and handle it in time.";
msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket() msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()
+ ": You have a regulation task confirmation to complete"; + ": You have a regulation task confirmation to complete";
@@ -2164,7 +2165,7 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
} else if (StringUtils.equals(msgType, MsgTypeEnum.TASK_AFFIRM_DRE_ACCEPTED.getValue())) { } else if (StringUtils.equals(msgType, MsgTypeEnum.TASK_AFFIRM_DRE_ACCEPTED.getValue())) {
userIdList.add(engineeringInterfacePerson); userIdList.add(engineeringInterfacePerson);
msgContentEN = sysUser.getUsername() + " has submitted the regulation task confirmation of " + serialNumber +" in "+ projectNameInfoEO.getProjectName() msgContentEN = sysUser.getUsername() + " has submitted the regulation task confirmation of " + serialNumber +" in "+ projectNameInfoEO.getProjectName()
+ ".The due date is " +taskAffirmDueDate+ " Please check and handle it in time."; + ". The due date is " +taskAffirmDueDate+ ". Please check and handle it in time.";
msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket() msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()
+ ": You have a regulation task confirmation to complete"; + ": You have a regulation task confirmation to complete";
@@ -2207,7 +2208,7 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
String designDutyId = jsonObject.getString("designDutyId"); //设计符合性责任人id String designDutyId = jsonObject.getString("designDutyId"); //设计符合性责任人id
userIdList.add(designDutyId); userIdList.add(designDutyId);
msgContentEN = "You recieved the design compliance task of " + serialNumber +" in "+ projectNameInfoEO.getProjectName() msgContentEN = "You recieved the design compliance task of " + serialNumber +" in "+ projectNameInfoEO.getProjectName()
+ ". The due date is XXXX. Please check and address it in a timely manner."; + ". The due date is " + sdf.format(projectLawsInventoryEO.getDesignDueDate()) + ". Please check and address it in a timely manner.";
msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket() msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()
+ ": You have a design compliance task to complete"; + ": You have a design compliance task to complete";
@@ -2225,7 +2226,7 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
String prehomoDutyId = jsonObject.getString("prehomoDutyId"); //pre-Home责任人id String prehomoDutyId = jsonObject.getString("prehomoDutyId"); //pre-Home责任人id
userIdList.add(prehomoDutyId); userIdList.add(prehomoDutyId);
msgContentEN = "You recieved the Pre-Homo task of " + serialNumber +" in "+ projectNameInfoEO.getProjectName() msgContentEN = "You recieved the Pre-Homo task of " + serialNumber +" in "+ projectNameInfoEO.getProjectName()
+ ". The due date is XXXX. Please check and address it in a timely manner."; + ". The due date is " + sdf.format(projectLawsInventoryEO.getPrehomoDueDate()) + ". Please check and address it in a timely manner.";
msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket() msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()
+ ": You have a Pre-Homo task to complete"; + ": You have a Pre-Homo task to complete";
@@ -2244,7 +2245,7 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
String verifyDutyId = jsonObject.getString("verifyDutyId"); //验证符合性责任人id String verifyDutyId = jsonObject.getString("verifyDutyId"); //验证符合性责任人id
userIdList.add(verifyDutyId); userIdList.add(verifyDutyId);
msgContentEN = "You recieved the validation compliance task of " + serialNumber +" in "+ projectNameInfoEO.getProjectName() msgContentEN = "You recieved the validation compliance task of " + serialNumber +" in "+ projectNameInfoEO.getProjectName()
+ ". The due date is XXXX. Please check and address it in a timely manner."; + ". The due date is " + sdf.format(projectLawsInventoryEO.getVerifyDueDate()) + ". Please check and address it in a timely manner.";
msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket() msgTitle = projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()
+ ": You have a validation compliance task to complete"; + ": You have a validation compliance task to complete";
@@ -251,6 +251,10 @@ public class WordUtil {
paragraph.setAlignment(ParagraphAlignment.CENTER); paragraph.setAlignment(ParagraphAlignment.CENTER);
XWPFRun run = paragraph.createRun(); XWPFRun run = paragraph.createRun();
run.setText("NIO Internal"); run.setText("NIO Internal");
run.setFontSize(18);
run.setFontFamily("Blue Sky Standard Regular");
// run.setFontFamily("Blue Sky Noto Regular");
run.setBold(true);
CTSectPr sectPr = document.getDocument().getBody().getSectPr(); CTSectPr sectPr = document.getDocument().getBody().getSectPr();
@@ -214,4 +214,11 @@ public class workFlowController {
public Result startTaskToConfirmProcess(@RequestBody JSONObject jsonObject){ public Result startTaskToConfirmProcess(@RequestBody JSONObject jsonObject){
return workFlowFeignClient.startTaskToConfirmProcess(jsonObject); return workFlowFeignClient.startTaskToConfirmProcess(jsonObject);
} }
@AutoLog(value = "根据taskId删除流程")
@ApiOperation(value="根据taskId删除流程", notes="根据taskId删除流程")
@GetMapping("/deleteProcessInstanceByTaskId")
public Result<String> deleteProcessInstanceByTaskId(@RequestParam("taskId")String taskId){
return workFlowFeignClient.deleteProcessInstance(taskId);
}
} }
@@ -156,4 +156,12 @@ public interface WorkFlowFeignClient {
@RequestMapping(value = "/bat-wkflow/task/completeLawsTechnologyEvaluationTaskByPids",method = RequestMethod.GET) @RequestMapping(value = "/bat-wkflow/task/completeLawsTechnologyEvaluationTaskByPids",method = RequestMethod.GET)
Result<String> completeLawsTechnologyEvaluationTaskByPids(@RequestParam("actiProcInstIds") String actiProcInstIds); Result<String> completeLawsTechnologyEvaluationTaskByPids(@RequestParam("actiProcInstIds") String actiProcInstIds);
/**
* 根据待办id删除流程
* @param taskId
* @return
*/
@RequestMapping(value = "/bat-wkflow/deleteProcessInstanceByTaskId",method = RequestMethod.GET)
Result<String> deleteProcessInstanceByTaskId(@RequestParam("taskId") String taskId);
} }
@@ -177,4 +177,13 @@ public class WorkFlowFeignClientImpl{
Result<String> stringWrapper = workFlowFeignClient.startTaskToConfirmProcess(jsonObject.toString()); Result<String> stringWrapper = workFlowFeignClient.startTaskToConfirmProcess(jsonObject.toString());
return Result.OK(stringWrapper.getResult()); return Result.OK(stringWrapper.getResult());
} }
/**
* 根据待办id删除流程
* @param taskId
* @return
*/
public Result<String> deleteProcessInstanceByTaskId(@RequestParam("taskId")String taskId){
return workFlowFeignClient.deleteProcessInstance(taskId);
}
} }
@@ -92,7 +92,7 @@ spring:
mvc: mvc:
static-path-pattern: /** static-path-pattern: /**
resource: resource:
static-locations: classpath:/static/,classpath:/public/,classpath:/home/ static-locations: classpath:/static/,classpath:/public/,classpath:/home,/classpath:/nationalFlag/
autoconfigure: autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
datasource: datasource:
Binary file not shown.

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

+2 -1
View File
@@ -1252,7 +1252,8 @@ module.exports = {
optionDropDownBox:'Option drop - down box', optionDropDownBox:'Option drop - down box',
attachmentUpload:'file', attachmentUpload:'file',
textInput:'Text Input', textInput:'Text Input',
deleteNode:'If any file information exists, it will be deleted', deleteNode:'If there is any file information, the file will be deleted. Are you sure to delete this data?',
HaveReleased:'Have released', HaveReleased:'Have released',
forward:'Forward', forward:'Forward',
issuedBy:'Issued by',
} }
+2 -1
View File
@@ -1355,7 +1355,8 @@ module.exports = {
Paraname: '参数名称', Paraname: '参数名称',
Parabatch: '参数批次', Parabatch: '参数批次',
freeze:'请选择冻结配置', freeze:'请选择冻结配置',
deleteNode:'若有文件信息将同步删除', deleteNode:'若有文件信息将同步删除确认删除该条数据',
HaveReleased:'已发布', HaveReleased:'已发布',
forward:'转发', forward:'转发',
issuedBy:'发布人',
} }
@@ -40,7 +40,7 @@
:dataSource='areaTable' :dataSource='areaTable'
:pagination='false' :pagination='false'
:loading='loading' :loading='loading'
:scroll="{x: '100%',y:'calc(100vh - 130px)'}" :scroll="{x: '100%',y:600}"
:rowSelection='{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}' :rowSelection='{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}'
@change='handleTableChange'> @change='handleTableChange'>
@@ -350,13 +350,23 @@
} }
postAction('/workFlow/startProcess', query).then((res) => { postAction('/workFlow/startProcess', query).then((res) => {
if (res.success) { if (res.success) {
this.completeTask(value, res.result) this.completeTask(value, res.result, true)
} else { } else {
this.JLoading = false this.JLoading = false
} }
}) })
}, },
completeTask(value, taskId) { deleteProcessInstanceByTask(taskId) {
getAction('/workFlow/deleteProcessInstanceByTaskId', { taskId: taskId }).then((res) => {
})
},
completeTask(value, taskId, isTrue) {
Object.keys(value).forEach(res => {
if (value[res] && value[res] instanceof String) {
value[res] = value[res].replace(/\"/g, '“')
value[res] = value[res].replace(/\'/g, '')
}
})
let query = { let query = {
userid: this.userInfo().id, userid: this.userInfo().id,
taskId: taskId, taskId: taskId,
@@ -375,6 +385,9 @@
} else { } else {
this.JLoading = false this.JLoading = false
this.$message.warning(this.$t('operationFailed')) this.$message.warning(this.$t('operationFailed'))
if (isTrue) {
this.deleteProcessInstanceByTask(taskId)
}
} }
}) })
} }
@@ -37,55 +37,26 @@
</div> </div>
</div> </div>
<div class="content-box"> <div class="content-box">
<div class="content-box-box" @click="contentClick()"> <div class="content-box-box" v-for="(item,index) in conList" :key="index" @click="contentClick(item)">
<img src="../../../../assets/mobileHome.png" class="content-box-box-img" alt=""> <img :src="item.countryNationalFlag" class="content-box-box-img" alt="">
<span class="content-box-box-text"> <span class="content-box-box-text">
中国 {{item.applyMarket_dictText}}
</span> </span>
</div> </div>
<div class="content-box-box">
<img src="../../../../assets/mobileHome.png" class="content-box-box-img" alt="">
<span class="content-box-box-text">
中国
</span>
</div>
<div class="content-box-box">
<img src="../../../../assets/mobileHome.png" class="content-box-box-img" alt="">
<span class="content-box-box-text">
中国
</span>
</div>
<div class="content-box-box">
<img src="../../../../assets/mobileHome.png" class="content-box-box-img" alt="">
<span class="content-box-box-text">
中国
</span>
</div>
<div class="content-box-box">
<img src="../../../../assets/mobileHome.png" class="content-box-box-img" alt="">
<span class="content-box-box-text">
中国
</span>
</div>
<div class="content-box-box">
<img src="../../../../assets/mobileHome.png" class="content-box-box-img" alt="">
<span class="content-box-box-text">
中国
</span>
</div>
<div class="page">
<a-pagination
:show-total="total => $t('total')+` ${total} `+$t('strip')"
show-quick-jumper
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
</div>
</div> </div>
<div class="page">
<a-pagination
:show-total="total => $t('total')+` ${total} `+$t('strip')"
show-quick-jumper
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="pageOnChange"
@showSizeChange="SizeChange"
/>
</div>
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
</div> </div>
</template> </template>
@@ -101,11 +72,16 @@
applyMarketList: [], applyMarketList: [],
pageSize: 10, pageSize: 10,
total: 0, total: 0,
pageNo: 1 pageNo: 1,
loading: false,
url: {
getInfoList: '/problemKnowledgeBase/countryCardManageReleaseEO/page'
}
} }
}, },
mounted() { mounted() {
this.getApplyMarketList() this.getApplyMarketList()
this.getList()
}, },
methods: { methods: {
getApplyMarketList() { getApplyMarketList() {
@@ -118,10 +94,15 @@
}) })
}, },
searchQuery() { searchQuery() {
this.pageNo = 1
this.getApplyMarketList()
this.getList()
}, },
searchReset() { searchReset() {
this.pageNo = 1
this.getApplyMarketList()
this.queryParam = {}
this.getList()
}, },
pageOnChange(page, pageSize) { pageOnChange(page, pageSize) {
this.pageNo = page this.pageNo = page
@@ -135,14 +116,19 @@
getList() { getList() {
let query = { let query = {
pageNo: this.pageNo, pageNo: this.pageNo,
pageSize: this.pageSize pageSize: this.pageSize,
releaseStatus: 'Have released',
...this.queryParam
} }
postAction(this.url.getInfoList, query).then((res) => { this.loading = true
getAction(this.url.getInfoList, query).then((res) => {
if (res.success) { if (res.success) {
this.conList = res.result.records this.conList = res.result.records
this.total = res.result.total this.total = res.result.total
this.loading = false
} else { } else {
this.conList = [] this.conList = []
this.loading = false
} }
}) })
}, },
@@ -153,10 +139,13 @@
}) })
window.open(newUrl.href, '_blank') window.open(newUrl.href, '_blank')
}, },
contentClick() { contentClick(row) {
let newUrl = this.$router.resolve({ let newUrl = this.$router.resolve({
path: '/countryCardView', path: '/countryCardView',
query: {} query: {
applyMarket: row.applyMarket,
id: row.id
}
}) })
window.open(newUrl.href, '_blank') window.open(newUrl.href, '_blank')
} }
@@ -208,6 +197,7 @@
.content-box { .content-box {
width: 100%; width: 100%;
overflow: hidden;
} }
.content-box-box { .content-box-box {
@@ -226,14 +216,14 @@
} }
.content-box-box-img { .content-box-box-img {
width: 70%; width: 238px;
height: 100%; height: 100%;
border-right: 1px #d9d9d9 solid; border-right: 1px #d9d9d9 solid;
} }
.content-box-box-text { .content-box-box-text {
width: calc(100% - 238px);
display: inline-block; display: inline-block;
width: 30%;
text-align: center; text-align: center;
font-size: 18px; font-size: 18px;
font-weight: 500; font-weight: 500;
@@ -244,6 +234,7 @@
width: 100%; width: 100%;
text-align: right; text-align: right;
margin-top: 20px; margin-top: 20px;
margin-bottom: 20px;
} }
.operator-text { .operator-text {
@@ -234,7 +234,7 @@
url = this.url.edit url = this.url.edit
this.dataList.forEach(res => { this.dataList.forEach(res => {
content.push({ content.push({
countryCardTempId: res.id, countryCardTempId: res.countryCardTempId,
description: res.description, description: res.description,
content: res.content, content: res.content,
id: res.id id: res.id
@@ -23,19 +23,37 @@
</div> </div>
<div style="overflow: auto;height: calc(100vh - 160px);"> <div style="overflow: auto;height: calc(100vh - 160px);">
<div class="content-box" :style="{'width':clientWidth}" v-if="isTrue"> <div class="content-box" :style="{'width':clientWidth}" v-if="isTrue">
<div style="width: 100%" v-for="(item1,index) in 14" class="content-box-top"> <div style="width: 100%" v-for="(item1,index) in contentList" class="content-box-top">
<div v-for="(item2,index2) in 16" style="width: 340px;display: inline-block" class="content-box-left"> <div v-for="(item2,index2) in item1.list" style="width: 340px;display: inline-block"
class="content-box-left">
<div class="content-box-box-top" v-if="index == 0"> <div class="content-box-box-top" v-if="index == 0">
<img src="../../../../assets/mobileHome.png" class="content-box-box-img" alt=""> <img class="content-box-box-img" style="display: inline-block;width: auto" v-if="index2 == 0">
<span class="content-box-box-text"> <img :src="item2.img" v-else class="content-box-box-img" alt="">
中国 <span v-if="index2 == 0" class="content-box-box-text"></span>
</span> <span v-else class="content-box-box-text">
{{item2.applyMarket_dictText}}
</span>
</div> </div>
<div class="content-box-box" v-else> <div class="content-box-box" v-else>
<img src="../../../../assets/mobileHome.png" class="content-box-box-img" alt=""> <span style="color: #21c9cc"
<span class="content-box-box-text"> :class="{'content-box-box-text-admin':!item2.lableName || item2.lableName == 'null' || item2.lableName == 'undefined'? true : false}"
中国 class="content-box-box-text content-box-box-text-index"
</span> @click="viewFileClick(item2.lableName)"
v-if="item2.lableType == 7 && item2.lableName && index2 != 0">
{{$t('viewFile')}}
</span>
<span class="content-box-box-text content-box-box-text-index"
v-else
:title="item2.lableName"
:class="{'content-box-box-text-admin':!item2.lableName || item2.lableName == 'null' || item2.lableName == 'undefined'? true : false}">
{{item2.lableName}}
</span>
<!-- <img src="../../../../assets/mobileHome.png" class="content-box-box-img" alt="">-->
<!-- <span class="content-box-box-text">-->
<!-- 中国-->
<!-- </span>-->
</div> </div>
</div> </div>
</div> </div>
@@ -44,8 +62,11 @@
</div> </div>
</div> </div>
</div> </div>
<displayInformationModel ref="displayInformationModelRef"/> <displayInformationModel ref="displayInformationModelRef"
@displayInformationModelForm="displayInformationModelForm"/>
<countryCardViewAdd ref="countryCardViewAddRef" @countryCardViewAddForm="countryCardViewAddForm"/> <countryCardViewAdd ref="countryCardViewAddRef" @countryCardViewAddForm="countryCardViewAddForm"/>
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
<viewFileModel ref="viewFileModelRef"/>
</div> </div>
</template> </template>
@@ -53,35 +74,154 @@
import { getAction, postAction, downloadFile } from '@/api/manage' import { getAction, postAction, downloadFile } from '@/api/manage'
import displayInformationModel from './displayInformationModel' import displayInformationModel from './displayInformationModel'
import countryCardViewAdd from './countryCardViewAdd' import countryCardViewAdd from './countryCardViewAdd'
import viewFileModel from '@/components/viewFileModel/index'
export default { export default {
name: 'countryCardView', name: 'countryCardView',
components: { components: {
displayInformationModel, displayInformationModel,
countryCardViewAdd countryCardViewAdd,
viewFileModel
}, },
data() { data() {
return { return {
clientWidth: '', clientWidth: '',
isTrue: false isTrue: false,
loading: false,
dataList: [],
contentList: [],
displayList: [],
queryCountryList: [],
countryCardViewList:[],
applyMarkets: '',
url: {
list: '/problemKnowledgeBase/countryCardTempEO/list',
deleteOne: ''
},
list: '/problemKnowledgeBase/countryCardManageReleaseEO/queryCountryCardManageReleaseByApplyMarkets'
} }
}, },
mounted() { mounted() {
this.isTrue = false this.queryCountry(() => {
this.$nextTick(() => { this.replacePage()
this.clientWidth = 340 * 14 + 'px'
this.isTrue = true
}) })
}, },
methods: { methods: {
displayInformationClick() { displayInformationClick() {
this.$refs.displayInformationModelRef.getData() this.$refs.displayInformationModelRef.getData(JSON.parse(JSON.stringify(this.displayList)))
},
displayInformationModelForm(data) {
this.displayList = data
this.displayList = [...this.displayList]
this.consolidateData()
}, },
newlyAddedClick() { newlyAddedClick() {
this.$refs.countryCardViewAddRef.add() this.$refs.countryCardViewAddRef.add(this.countryCardViewList)
}, },
countryCardViewAddForm() { countryCardViewAddForm(val) {
this.countryCardViewList = JSON.parse(JSON.stringify(val))
let content = []
if (val && val.length > 0) {
val.forEach(res => {
if (res.applyMarket) {
content.push(res.applyMarket)
}
})
}
this.applyMarkets = content.join(',')
this.queryCountry()
},
replacePage() {
getAction(this.url.list, {}).then((res) => {
if (res.success) {
this.displayList = res.result || []
this.displayList.forEach(val => {
val.showOrNot = true
})
this.consolidateData()
this.loading = false
} else {
this.displayList = []
this.loading = false
}
})
},
consolidateData() {
let content = []
this.contentList = []
this.contentList.push({})
if (this.displayList && this.displayList.length > 0) {
this.displayList.forEach(res => {
if (res.showOrNot) {
content.push(res)
}
})
}
if (this.queryCountryList && this.queryCountryList.length > 0) {
this.contentList[0].list = []
this.contentList[0].list.push({})
this.queryCountryList.forEach(val => {
this.contentList[0].name = 'tou'
this.contentList[0].list.push({
applyMarket_dictText: val.applyMarket_dictText,
img: val.countryNationalFlag
})
})
}
if (content && content.length > 0) {
content.forEach((res, index) => {
this.contentList[index + 1] = { name: res.lableName }
this.contentList[index + 1].list = []
this.contentList[index + 1].list.push({
lableName: res.lableName,
lableType: res.lableType
})
})
}
this.queryCountryList.forEach((res, index) => {
res.countryCardManageReleaseDetailEOList.forEach((val, index1) => {
this.contentList.forEach(res1 => {
if (res1.name == val.lableName) {
res1.list.push({
lableName: val.content,
lableType: val.lableType
})
}
})
})
})
},
queryCountry(callback) {
this.loading = true
let applyMarkets = this.$route.query.applyMarket
if (this.applyMarkets) {
applyMarkets = applyMarkets + ',' + this.applyMarkets
}
let query = {
applyMarkets: applyMarkets
}
postAction(this.list, query).then((res) => {
if (res.success) {
this.queryCountryList = res.result || []
this.isTrue = false
this.$nextTick(() => {
this.clientWidth = 340 * (this.queryCountryList.length + 1) + 'px'
this.isTrue = true
})
callback && callback()
if (!callback) {
this.consolidateData()
this.loading = false
}
} else {
callback && callback()
this.contentList = []
this.loading = false
}
})
},
viewFileClick(item) {
this.$refs.viewFileModelRef.clickButtonToUpload(item)
} }
} }
} }
@@ -201,6 +341,8 @@
width: 340px; width: 340px;
display: inline-block; display: inline-block;
height: 80px; height: 80px;
line-height: 80px;
text-align: center;
background: #fff; background: #fff;
border-right: 1px #d9d9d9 solid; border-right: 1px #d9d9d9 solid;
border-bottom: 1px #d9d9d9 solid; border-bottom: 1px #d9d9d9 solid;
@@ -232,10 +374,28 @@
background: #fff; background: #fff;
} }
.content-box-top {
height: 80px;
}
.content-box-top:first-child { .content-box-top:first-child {
position: sticky; position: sticky;
top: 0; top: 0;
height: 160px;
z-index: 111; z-index: 111;
background: #fff; background: #fff;
} }
.content-box-box-text-index {
width: 100% !important;
padding: 0 12px;
box-sizing: border-box;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.content-box-box-text-admin {
height: 80px !important;
}
</style> </style>
@@ -14,14 +14,15 @@
<a-col :span="24"> <a-col :span="24">
<div class="box-title-text"> <div class="box-title-text">
<div class="title-text"> <div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" <span class="title-text-text"
:title="$t('applicableMarket')">{{$t('applicableMarket')}}</span> :title="$t('applicableMarket')">{{$t('applicableMarket')}}</span>
</div> </div>
<a-form-model-item class="itemModel" prop="applicableMarket"> <a-form-model-item class="itemModel" prop="applicableMarket">
<a-input class="box-input" <j-dict-select-tag class="box-input" v-model="formInline.applyMarket"
v-model="formInline.applicableMarket" :disabled="true"
:placeholder="$t('PleaseEnter')+$t('applicableMarket')"/> :placeholder="$t('PleaseSelect')+$t('applicableMarket')"
:type="'select'"
:triggerChange="false" :dictCode="'region'"/>
</a-form-model-item> </a-form-model-item>
</div> </div>
</a-col> </a-col>
@@ -30,19 +31,27 @@
<a-col :span="24"> <a-col :span="24">
<div class="box-title-text"> <div class="box-title-text">
<div class="title-text"> <div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('comparisonMarket')+(index+1)">{{$t('comparisonMarket')+(index+1)}}</span> <span class="title-text-text" :title="$t('comparisonMarket')+(index+1)">{{$t('comparisonMarket')+(index+1)}}</span>
</div> </div>
<a-form-model-item class="itemModel" style="width: calc(100% - 220px)" prop="comparisonMarket"> <a-form-model-item class="itemModel" style="width: calc(100% - 220px)" prop="comparisonMarket">
<a-input class="box-input" <a-select :placeholder="$t('PleaseSelect')+$t('applicableMarket')"
v-model="formInline.comparisonMarket" :disabled="false"
:placeholder="$t('PleaseEnter')+$t('comparisonMarket')"/> @change="applyMarketChange"
v-model="item.applyMarket">
<a-select-option v-for="(item, key) in item.applyMarketList"
:key="key"
:value="item.applyMarket">
<span style="display: inline-block;width: 100%" :title=" item.applyMarket_dictText ">
{{ item.applyMarket_dictText}}
</span>
</a-select-option>
</a-select>
</a-form-model-item> </a-form-model-item>
<a-icon class="icon-size" <a-icon class="icon-size"
style="margin-left: 8px" style="margin-left: 8px"
@click="addData" @click="addData"
v-if="(formInline.dataList.length-1) == index" v-if="(formInline.dataList.length-1) == index && formInline.dataList.length < 5"
type="plus-circle"/> type="plus-circle"/>
<a-icon class="icon-size" <a-icon class="icon-size"
@click="deleteData" @click="deleteData"
@@ -65,6 +74,10 @@
visible: false, visible: false,
confirmLoading: false, confirmLoading: false,
formInline: {}, formInline: {},
applyMarketList: [],
url: {
getInfoList: '/problemKnowledgeBase/countryCardManageReleaseEO/list'
},
rules: { rules: {
personChargeName: [ personChargeName: [
{ {
@@ -97,13 +110,20 @@
mounted() { mounted() {
}, },
methods: { methods: {
add() { add(data) {
this.visible = true this.visible = true
console.log(data)
this.$nextTick(() => { this.$nextTick(() => {
this.formInline = {} this.formInline = {}
this.formInline.dataList = [{ this.formInline.applyMarket = this.$route.query.applyMarket
relatedSection: '' if (data && data.length > 0) {
}] this.formInline.dataList = JSON.parse(JSON.stringify(data))
} else {
this.formInline.dataList = [{
applyMarket: ''
}]
}
this.getList()
this.formInline = { ...this.formInline } this.formInline = { ...this.formInline }
this.$refs.ruleForm.clearValidate() this.$refs.ruleForm.clearValidate()
}) })
@@ -113,29 +133,77 @@
this.formInline = { ...this.formInline } this.formInline = { ...this.formInline }
}, },
handleOk() { handleOk() {
this.$refs.ruleForm.validate(valid => { this.$emit('countryCardViewAddForm', JSON.parse(JSON.stringify(this.formInline.dataList)))
if (valid) { this.visible = false
}
})
}, },
handleCancel() { handleCancel() {
this.visible = false this.visible = false
}, },
addData() { addData() {
this.formInline.dataList.push({ this.formInline.dataList.push({
relatedSection: '' applyMarket: ''
}) })
this.consolidateData()
this.formInline = { ...this.formInline } this.formInline = { ...this.formInline }
}, },
deleteData() { deleteData() {
this.formInline.dataList.pop() this.formInline.dataList.pop()
this.consolidateData()
this.formInline = { ...this.formInline } this.formInline = { ...this.formInline }
},
getList() {
let query = {
releaseStatus: 'Have released'
}
getAction(this.url.getInfoList, query).then((res) => {
if (res.success) {
this.applyMarketList = res.result
this.consolidateData()
} else {
this.applyMarketList = []
}
})
},
consolidateData() {
let content = []
content.push(this.$route.query.applyMarket)
content = content.join(',')
this.applyMarketList = this.applyMarketList.filter(res => {
return !content.includes(res.applyMarket)
})
let contentIndex = []
if (this.formInline.dataList && this.formInline.dataList.length > 0) {
this.formInline.dataList.forEach(res => {
contentIndex.push(res.applyMarket)
res.applyMarketList = []
this.applyMarketList.forEach(val => {
res.applyMarketList.push(val)
})
})
}
contentIndex = contentIndex.join(',')
for (let i = 0; i < this.formInline.dataList.length; i++) {
for (let j = 0; j < this.formInline.dataList[i].applyMarketList.length; j++) {
if (contentIndex.includes(this.formInline.dataList[i].applyMarketList[j].applyMarket)
&& this.formInline.dataList[i].applyMarket != this.formInline.dataList[i].applyMarketList[j].applyMarket) {
this.formInline.dataList[i].applyMarketList.splice(j, 1)
j--
}
}
}
this.formInline = { ...this.formInline }
},
applyMarketChange() {
this.consolidateData()
} }
} }
} }
</script> </script>
<style>
.ant-select-disabled {
color: rgba(0, 0, 0, 0.65) !important;
}
</style>
<style scoped> <style scoped>
.box-title-text { .box-title-text {
line-height: 1.4; line-height: 1.4;
@@ -11,27 +11,17 @@
style="height: 100%;overflow: auto;padding-bottom: 53px;"> style="height: 100%;overflow: auto;padding-bottom: 53px;">
<div style="margin-bottom: 60px"> <div style="margin-bottom: 60px">
<a-table <a-table
v-if="this.visible"
:key="'id'"
:columns="columns" :columns="columns"
:scroll="{x: '100%',y:'calc(100vh - 300px)'}" :scroll="{x: '100%',y:'calc(100vh - 200px)'}"
:data-source="dataList" :data-source="dataList"
:pagination="false" :pagination="false"
:loading="loading"> :loading="loading">
<span slot="showOrNot" slot-scope="text,record"> <span slot="showOrNot" slot-scope="text,record,index">
<a-checkbox :value="text"></a-checkbox> <a-checkbox :checked="record.showOrNot" @change="onCheckAllChange(index)"></a-checkbox>
</span> </span>
</a-table> </a-table>
<div class="page" v-if="dataList.length > 0">
<a-pagination
:show-total="total => $t('total')+`${total}`+$t('strip')"
show-quick-jumper
show-size-changer
:page-size.sync="pageSize"
:total="total"
:current="pageNo"
@change="onChange"
@showSizeChange="SizeChange"
/>
</div>
</div> </div>
<div class="drawer-bootom-button"> <div class="drawer-bootom-button">
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button> <a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
@@ -49,21 +39,18 @@
data() { data() {
return { return {
url: { url: {
list: '', list: '/problemKnowledgeBase/countryCardTempEO/list',
deleteOne: '' deleteOne: ''
}, },
visible: false, visible: false,
selectedRowKeys: [], selectedRowKeys: [],
dataList: [{}], dataList: [],
loading: false, loading: false,
pageNo: 1, confirmLoading: false,
pageSize: 10,
confirmLoading:false,
total: 0,
columns: [ columns: [
{ {
title: this.$t('LabelName'), title: this.$t('LabelName'),
dataIndex: 'LabelName', dataIndex: 'lableName',
align: 'center', align: 'center',
ellipsis: true ellipsis: true
}, },
@@ -80,41 +67,22 @@
mounted() { mounted() {
}, },
methods: { methods: {
getData() { getData(data) {
this.visible = true this.visible = true
this.$nextTick(() => {
this.dataList = data
this.dataList = [...this.dataList]
})
}, },
handleCancel() { handleCancel() {
this.visible = false this.visible = false
}, },
handleSubmit(){ handleSubmit() {
this.$emit('displayInformationModelForm', this.dataList)
this.visible = false
}, },
onChange(page, pageSize) { onCheckAllChange(index) {
this.pageNo = page this.dataList[index].showOrNot = !this.dataList[index].showOrNot
this.replacePage()
},
SizeChange(page, pageSize) {
this.pageNo = 1
this.pageSize = pageSize
this.replacePage()
},
replacePage() {
let query = {
pageNo: this.pageNo,
pageSize: this.pageSize
}
this.loading = true
postAction(this.url.list, query).then((res) => {
if (res.success) {
this.dataList = res.result.records || []
this.total = res.result.total
this.loading = false
} else {
this.dataList = []
this.total = 0
this.loading = false
}
})
} }
} }
} }
@@ -92,12 +92,11 @@
<span class="title-text-text" :title="$t('market')">{{$t('market')}}</span> <span class="title-text-text" :title="$t('market')">{{$t('market')}}</span>
</div> </div>
<a-form-model-item class="itemModel" prop="targetMarket"> <a-form-model-item class="itemModel" prop="targetMarket">
<j-dict-select-tag class="box-input" v-model="formInline.targetMarket" <j-multi-select-tag class="box-input" v-model="formInline.targetMarket"
:disabled="disabled" :disabled="disabled"
@input="handleInput('targetMarket')" :placeholder="$t('PleaseSelect')+$t('market')"
:placeholder="$t('PleaseSelect')+$t('market')" :type="'select'"
:type="'select'" :triggerChange="false" :dictCode="'region'"/>
:triggerChange="false" :dictCode="'region'"/>
</a-form-model-item> </a-form-model-item>
</div> </div>
</a-col> </a-col>
@@ -110,6 +109,7 @@
</div> </div>
<a-form-model-item class="itemModel" prop="standNumber"> <a-form-model-item class="itemModel" prop="standNumber">
<a-input class="box-input" <a-input class="box-input"
:title="formInline.standNumber"
:disabled="true" :disabled="true"
v-model="formInline.standNumber" v-model="formInline.standNumber"
:placeholder="$t('PleaseEnter')+$t('standardNo')"/> :placeholder="$t('PleaseEnter')+$t('standardNo')"/>
@@ -133,11 +133,12 @@
<div class="title-text"> <div class="title-text">
<span class="title-text-text">{{$t('content')}}</span> <span class="title-text-text">{{$t('content')}}</span>
</div> </div>
<a-form-model-item class="itemModel" prop="vehiclePlatform"> <a-form-model-item style="height: 300px" class="itemModel" prop="content">
<quill-editor <quill-editor
style="height: 300px" style="height: 300px"
:content="formInline.content" :content="formInline.content"
:options="editorOption" :options="editorOption"
@blur="quilleditorBlur"
@change="onEditorChange($event)" @change="onEditorChange($event)"
/> />
</a-form-model-item> </a-form-model-item>
@@ -239,6 +240,13 @@
message: this.$t('market') + this.$t('cannotEmpty'), message: this.$t('market') + this.$t('cannotEmpty'),
trigger: 'change' trigger: 'change'
} }
],
content: [
{
max: 5000,
message: this.$t('content') + this.$t('cannotExceed') + 5000 + this.$t('Characters'),
trigger: 'change'
}
] ]
}, },
url: { url: {
@@ -276,6 +284,9 @@
} }
}, },
methods: { methods: {
quilleditorBlur() {
this.$refs.ruleForm.validateField('content')
},
getBase() { getBase() {
getAction('/problemKnowledgeBase/problemKnowledgeBaseClassifyEO/list', {}).then((res) => { getAction('/problemKnowledgeBase/problemKnowledgeBaseClassifyEO/list', {}).then((res) => {
if (res.success) { if (res.success) {
@@ -340,7 +351,6 @@
} }
, ,
onEditorChange({ quill, html, text }) { onEditorChange({ quill, html, text }) {
console.log('editor change!', quill, html, text)
this.formInline.content = html this.formInline.content = html
} }
, ,
@@ -13,13 +13,15 @@
</div> </div>
<div class="box-content"> <div class="box-content">
<div class="box-content-left"> <div class="box-content-left">
<span class="box-content-left-text">{{$t('recentHotSpots')}}</span> <template v-for="tag in tagList">
<span class="box-content-left-text">{{$t('disseminationMaterials')}}</span> <a-checkable-tag
<span class="box-content-left-text">{{$t('informationSafety')}}</span> :key="tag.id"
<span class="box-content-left-text">{{$t('blueBook')}}</span> :checked="selectedTags.indexOf(tag.id) > -1"
<span class="box-content-left-text">{{$t('invoiceCollection')}}</span> @change="checked => handleChange(tag.id, checked)"
<span class="box-content-left-text">{{$t('productHighlights')}}</span> >
<span class="box-content-left-text">{{$t('financialReimbursement')}}</span> {{ tag.problemLabel }}
</a-checkable-tag>
</template>
</div> </div>
<div class="box-content-right"> <div class="box-content-right">
<div @click="classificationClick" class="operator-text" v-has="'virtual:set:creater'"> <div @click="classificationClick" class="operator-text" v-has="'virtual:set:creater'">
@@ -50,14 +52,15 @@
<span class="text-header-text" style="cursor: pointer" v-html="item.title"></span> <span class="text-header-text" style="cursor: pointer" v-html="item.title"></span>
</a-tooltip> </a-tooltip>
</div> </div>
<div class="text-content" v-html="item.content"> <div class="text-content">
</div> {{item.contentOne}}
</div>
</div> </div>
</div> </div>
</li> </li>
</div> </div>
<div class="noData" v-else> <div class="noData" v-else>
暂无数据 {{$t('noData')}}
</div> </div>
<div class="page" v-if="conList.length > 0"> <div class="page" v-if="conList.length > 0">
<a-pagination <a-pagination
@@ -90,9 +93,12 @@
searchContent: '', searchContent: '',
checkboxText: [], checkboxText: [],
conList: [], conList: [],
searchStr: '',
total: 0, total: 0,
selectedTags: [],
loading: false, loading: false,
pageSize: 10, pageSize: 10,
tagList: [],
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download', downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
pageNo: 1, pageNo: 1,
url: { url: {
@@ -102,12 +108,30 @@
}, },
mounted() { mounted() {
this.getList() this.getList()
this.replacePage()
}, },
methods: { methods: {
replacePage() {
getAction('/problemKnowledgeBase/problemKnowledgeBaseClassifyEO/list', {}).then((res) => {
if (res.success) {
this.tagList = res.result
} else {
this.tagList = []
}
})
},
onSearch() { onSearch() {
this.pageNo = 1 this.pageNo = 1
this.getList() this.getList()
}, },
handleChange(tag, checked) {
const { selectedTags } = this
const nextSelectedTags = checked
? [...selectedTags, tag]
: selectedTags.filter(t => t !== tag)
this.selectedTags = nextSelectedTags
this.getList()
},
ResetSearch() { ResetSearch() {
this.searchStr = '' this.searchStr = ''
this.pageNo = 1 this.pageNo = 1
@@ -127,11 +151,6 @@
this.$router.push({ this.$router.push({
path: '/problemKnowledgeBaseAdd' path: '/problemKnowledgeBaseAdd'
}) })
// let newUrl = this.$router.resolve({
// path: '/problemKnowledgeBaseAdd',
// query: {}
// })
// window.open(newUrl.href, '_blank')
}, },
pageOnChange(page, pageSize) { pageOnChange(page, pageSize) {
this.pageNo = page this.pageNo = page
@@ -142,16 +161,29 @@
this.pageSize = pageSize this.pageSize = pageSize
this.getList() this.getList()
}, },
getText(str) {
let words = str.replace(/<[^<>]+>/g, '').replace(/&nbsp;/gi, '') //这里是去除标签
return words.replace(/\s/g, '') //这里是去除空格
},
getList() { getList() {
let selectedTags = JSON.parse(JSON.stringify(this.selectedTags))
let query = { let query = {
pageNo: this.pageNo, pageNo: this.pageNo,
pageSize: this.pageSize, pageSize: this.pageSize,
searchStr: this.searchStr searchStr: this.searchStr,
problemTypes: selectedTags.join(',')
} }
this.loading = true this.loading = true
getAction(this.url.getInfoList, query).then((res) => { getAction(this.url.getInfoList, query).then((res) => {
if (res.success) { if (res.success) {
this.conList = res.result.records this.conList = res.result.records
if (this.conList && this.conList.length > 0) {
this.conList.forEach(val => {
if (val.content) {
val.contentOne = this.getText(val.content)
}
})
}
this.total = res.result.total this.total = res.result.total
this.loading = false this.loading = false
} else { } else {
@@ -308,6 +340,8 @@
font-weight: 400; font-weight: 400;
color: #040B29; color: #040B29;
opacity: 0.7; opacity: 0.7;
white-space: pre-wrap;
word-wrap: break-word;
} }
.page { .page {
@@ -321,3 +355,18 @@
line-height: 10; line-height: 10;
} }
</style> </style>
<style>
.box-content-left .ant-tag {
font-size: 14px;
font-weight: 400;
color: #040B29;
}
.box-content-left .ant-tag-checkable {
padding: 3px 8px;
}
.box-content-left .ant-tag-checkable-checked {
color: #fff;
}
</style>
@@ -3,7 +3,7 @@
<div class="doc-detail-wrap"> <div class="doc-detail-wrap">
<div class="doc-detail-header" style="position: fixed;top: 0"> <div class="doc-detail-header" style="position: fixed;top: 0">
<div class="doc-detail-title"> <div class="doc-detail-title">
<span style="line-height: 66px;display: inline-block;float: left"> <span style="line-height: 66px;display: inline-block;float: left" @click="backClick">
<a-icon type="arrow-left" style="margin-right: 6px;"/> <a-icon type="arrow-left" style="margin-right: 6px;"/>
</span> </span>
{{$t('managePublishing')}} {{$t('managePublishing')}}
@@ -22,7 +22,7 @@
<a-button class="box-button" style="margin-left: 8px" @click="ResetSearch">{{$t('reset')}}</a-button> <a-button class="box-button" style="margin-left: 8px" @click="ResetSearch">{{$t('reset')}}</a-button>
</div> </div>
</div> </div>
<div v-if="conList.length > 0" style="height: calc(100vh - 180px);overflow:auto;"> <div v-if="conList.length > 0" style="height: calc(100vh - 240px);overflow:auto;">
<div v-for="(item,index) in conList" :key="item.id"> <div v-for="(item,index) in conList" :key="item.id">
<div style="margin-bottom: 10px;position: relative;overflow: hidden"> <div style="margin-bottom: 10px;position: relative;overflow: hidden">
<!-- <a-checkbox :value="item.id" class="checkbox-left"></a-checkbox>--> <!-- <a-checkbox :value="item.id" class="checkbox-left"></a-checkbox>-->
@@ -36,7 +36,8 @@
<span class="text-header-text" style="cursor: pointer" v-html="item.title"></span> <span class="text-header-text" style="cursor: pointer" v-html="item.title"></span>
</a-tooltip> </a-tooltip>
</div> </div>
<div class="text-content" v-html="item.content"> <div class="text-content">
{{item.contentOne}}
</div> </div>
<div class="text-text-right-text"> <div class="text-text-right-text">
<a style="margin-right: 10px" @click="edit(item)">{{$t('edit')}}</a> <a style="margin-right: 10px" @click="edit(item)">{{$t('edit')}}</a>
@@ -46,26 +47,26 @@
</div> </div>
</div> </div>
</div> </div>
<div class="noData" v-else> <div class="noData" v-else>
暂无数据 {{$t('noData')}}
</div> </div>
<div class="page" v-if="conList.length > 0"> <div class="page" v-if="conList.length > 0">
<a-pagination <a-pagination
:show-total="total => $t('total')+` ${total} `+$t('strip')" :show-total="total => $t('total')+` ${total} `+$t('strip')"
show-quick-jumper show-quick-jumper
show-size-changer show-size-changer
:page-size.sync="pageSize" :page-size.sync="pageSize"
:total="total" :total="total"
:current="pageNo" :current="pageNo"
@change="pageOnChange" @change="pageOnChange"
@showSizeChange="SizeChange" @showSizeChange="SizeChange"
/> />
</div>
</div> </div>
</div> </div>
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
</div> </div>
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
</div> </div>
</div>
</template> </template>
<script> <script>
@@ -113,6 +114,10 @@
this.pageNo = 1 this.pageNo = 1
this.getList() this.getList()
}, },
getText(str) {
let words = str.replace(/<[^<>]+>/g, '').replace(/&nbsp;/gi, '') //这里是去除标签
return words.replace(/\s/g, '') //这里是去除空格
},
getList() { getList() {
let query = { let query = {
pageNo: this.pageNo, pageNo: this.pageNo,
@@ -124,6 +129,13 @@
getAction(this.url.getInfoList, query).then((res) => { getAction(this.url.getInfoList, query).then((res) => {
if (res.success) { if (res.success) {
this.conList = res.result.records this.conList = res.result.records
if (this.conList && this.conList.length > 0) {
this.conList.forEach(val => {
if (val.content) {
val.contentOne = this.getText(val.content)
}
})
}
this.total = res.result.total this.total = res.result.total
this.loading = false this.loading = false
} else { } else {
@@ -132,13 +144,16 @@
} }
}) })
}, },
backClick() {
this.$router.push({
path: '/problemknowledgeBase'
})
},
titleClick(item) { titleClick(item) {
let newUrl = this.$router.resolve({ let newUrl = this.$router.resolve({
path: '/docManage/library/detail', path: '/problemKnowledgeBaseView',
query: { query: {
id: item.id.slice(0, 32), id: item.id
title: item.title,
serial_number: item.serial_number
} }
}) })
window.open(newUrl.href, '_blank') window.open(newUrl.href, '_blank')
@@ -17,6 +17,14 @@
</div> </div>
<div style="padding-top: 68px;background: #fff"> <div style="padding-top: 68px;background: #fff">
<div class="detail-content" style="padding: 24px"> <div class="detail-content" style="padding: 24px">
<div class="content-text-top">
<span style="margin-right: 10px">
{{$t('issuedBy')}}:{{this.queryForm.createBy}}
</span>
<span>
{{$t('releaseDate')}}:{{this.queryForm.createTime}}
</span>
</div>
<div class="content-text"> <div class="content-text">
<div class="text-field" v-for="(item,index) in standardContentList" :key="index"> <div class="text-field" v-for="(item,index) in standardContentList" :key="index">
<span class="text-field-left" :title="item.title">{{item.title}}</span> <span class="text-field-left" :title="item.title">{{item.title}}</span>
@@ -104,11 +112,11 @@
standardContentList: [ standardContentList: [
{ {
title: this.$t('problemClassification'), title: this.$t('problemClassification'),
value: 'problemType' value: 'problemTypeName'
}, },
{ {
title: this.$t('market'), title: this.$t('market'),
value: 'targetMarket' value: 'targetMarket_dicText'
}, },
{ {
title: this.$t('standardNo'), title: this.$t('standardNo'),
@@ -493,4 +501,13 @@
overflow: hidden; overflow: hidden;
text-align: right; text-align: right;
} }
.content-text-top {
width: 100%;
text-align: right;
color: #040B29;
font-weight: 400;
font-size: 16px;
margin-bottom: 20px;
}
</style> </style>
@@ -52,6 +52,7 @@
:getPopupContainer="triggerNode=> triggerNode.parentNode" :getPopupContainer="triggerNode=> triggerNode.parentNode"
allowClear allowClear
:disabled="isParentId" :disabled="isParentId"
style='z-index: 99'
v-model="formInline.parentId"> v-model="formInline.parentId">
<a-select-option v-for="(item, key) in ParentList" <a-select-option v-for="(item, key) in ParentList"
:key="item.id" :key="item.id"
@@ -564,6 +564,12 @@
}) })
}, },
completeTask(value, taskId) { completeTask(value, taskId) {
Object.keys(value).forEach(res => {
if (value[res] && value[res] instanceof String) {
value[res] = value[res].replace(/\"/g, '“')
value[res] = value[res].replace(/\'/g, '')
}
})
let query = { let query = {
userid: this.userInfo().id, userid: this.userInfo().id,
taskId: taskId, taskId: taskId,
@@ -86,7 +86,7 @@
size="middle" size="middle"
:loading="loading" :loading="loading"
:pagination="false" :pagination="false"
:scroll="{x: '100%',y:'calc(100vh)'}" :scroll="{x: '100%',y:'calc(100vh - 130px)'}"
rowKey="id" rowKey="id"
:data-source="dataSource" :data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
@@ -91,7 +91,7 @@
</div> </div>
<div class="drawer-bootom-button"> <div class="drawer-bootom-button">
<a-button @click="handleCancel" type="danger" style="margin-right: 16px">{{$t('cancel')}}</a-button> <a-button @click="handleCancel" style="margin-right: 16px">{{$t('cancel')}}</a-button>
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button> <a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
</div> </div>
</a-drawer> </a-drawer>
@@ -78,7 +78,7 @@
size="middle" size="middle"
:loading="loading" :loading="loading"
:pagination="false" :pagination="false"
:scroll="{x: '100%'}" :scroll="{x: '100%',y:'calc(100vh - 140px)'}"
rowKey="id" rowKey="id"
:data-source="dataSource" :data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
@@ -100,6 +100,9 @@
v-if="record.createBy == userInfoQuery.username && record.releaseCondition == 'draft'" v-if="record.createBy == userInfoQuery.username && record.releaseCondition == 'draft'"
@click="deleteData(record)">{{$t('delete')}}</a> @click="deleteData(record)">{{$t('delete')}}</a>
</span> </span>
<span slot="title" slot-scope="text,record" :title="text">
{{ text && text.length > 15 ? text.slice(0, 14) + '...' : text }}
</span>
<span slot="translationLanguage" slot-scope="text,record" <span slot="translationLanguage" slot-scope="text,record"
:title="record.sourceLanguage_dictText +' -- '+record.targetLanguage_dictText"> :title="record.sourceLanguage_dictText +' -- '+record.targetLanguage_dictText">
<span class="translationLanguageText" style="margin-top: -2px">{{record.sourceLanguage_dictText}}</span> <span class="translationLanguageText" style="margin-top: -2px">{{record.sourceLanguage_dictText}}</span>
@@ -160,13 +163,15 @@
title: this.$t('standard'), title: this.$t('standard'),
align: 'center', align: 'center',
dataIndex: 'serialNumber', dataIndex: 'serialNumber',
width: 170 width: 170,
scopedSlots: { customRender: 'title' }
}, },
{ {
title: this.$t('title'), title: this.$t('title'),
align: 'center', align: 'center',
dataIndex: 'title', dataIndex: 'title',
width: 170 width: 170,
scopedSlots: { customRender: 'title' }
}, },
{ {
title: this.$t('TextStatus'), title: this.$t('TextStatus'),
@@ -3,7 +3,7 @@
<a-modal <a-modal
:title="title" :title="title"
:maskClosable="false" :maskClosable="false"
:width="800" :width="600"
placement="right" placement="right"
:closable="true" :closable="true"
@cancel="handleCancel" @cancel="handleCancel"
+15 -10
View File
@@ -40,13 +40,12 @@
<span v-else :title="title"> <span v-else :title="title">
{{title && title.length > 18?title.slice(0,17)+'...':title}} {{title && title.length > 18?title.slice(0,17)+'...':title}}
</span> </span>
<template #overlay> <template #overlay >
<a-menu v-has="'externalReports:folder'" <a-menu @click="({ key: menuKey }) => onContextMenuClick(treeKey, menuKey, record)">
@click="({ key: menuKey }) => onContextMenuClick(treeKey, menuKey, record)"> <a-menu-item key="1" @click="orgAdd" v-has="'externalReports:folder'">{{$t('Addingfolder')}}</a-menu-item>
<a-menu-item key="1" @click="orgAdd" >{{$t('Addingfolder')}}</a-menu-item> <a-menu-item key="4" @click="orgAdds" v-has="'externalReports:folder'" v-if="deleteNode">{{$t('Addingsubfolders')}}</a-menu-item>
<a-menu-item key="4" @click="orgAdds" v-if="deleteNode">{{$t('Addingsubfolders')}}</a-menu-item> <a-menu-item key="2" @click="orgEdit" v-has="'externalReports:folder'">{{$t('Editfolder')}}</a-menu-item>
<a-menu-item key="2" @click="orgEdit">{{$t('Editfolder')}}</a-menu-item> <a-menu-item key="3" @click="orgDelete" v-has="'externalReports:folder'">{{$t('Deletefolders')}}</a-menu-item>
<a-menu-item key="3" @click="orgDelete" >{{$t('Deletefolders')}}</a-menu-item>
</a-menu> </a-menu>
</template> </template>
@@ -85,8 +84,9 @@
</div> </div>
<!-- :placeholder="$t('PleaseSelect')+$t('uploadTime')"--> <!-- :placeholder="$t('PleaseSelect')+$t('uploadTime')"-->
<a-range-picker <a-range-picker
style='width: 264px' class="box-input"
@change="onChange" @change="onChange"
style='margin-left: -1px'
format="YYYY-MM-DD" format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode" :getCalendarContainer="(trigger) => trigger.parentNode"
v-model="queryParams.time" v-model="queryParams.time"
@@ -127,7 +127,7 @@
:loading="loading" :loading="loading"
:pagination="false" :pagination="false"
rowKey="id" rowKey="id"
:scroll="{x: 10}" :scroll="{x: '100%',y:'calc(100vh - 180px)'}"
:data-source="dataSource" :data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:columns="columns" :columns="columns"
@@ -135,6 +135,10 @@
<span slot="projectName" slot-scope="text,record" :title="text"> <span slot="projectName" slot-scope="text,record" :title="text">
{{ text && text.length > 15 ? text.slice(0, 14) + '...' : text }} {{ text && text.length > 15 ? text.slice(0, 14) + '...' : text }}
</span> </span>
<span slot="fileName" slot-scope="text,record" :title="text">
{{ text && text.length > 15 ? text.slice(0, 14) + '...' : text }}
</span>
<span slot="operation" slot-scope="text,record"> <span slot="operation" slot-scope="text,record">
<!-- <a class="text-operation" @click="handlelist(record)">{{$t('view')}}</a>--> <!-- <a class="text-operation" @click="handlelist(record)">{{$t('view')}}</a>-->
<a class="text-operation" @click="download(record)">{{$t('download')}}</a> <a class="text-operation" @click="download(record)">{{$t('download')}}</a>
@@ -353,6 +357,7 @@ export default {
title: this.$t('fileName'), title: this.$t('fileName'),
align: 'center', align: 'center',
dataIndex: 'fileName', dataIndex: 'fileName',
scopedSlots: { customRender: 'fileName' },
width: 200 width: 200
}, },
{ {
@@ -733,7 +738,7 @@ export default {
} }
}, },
pageOnChange(page, pageSize) { pageOnChange(page, pageSize) {
this.pageNo = page this.queryParams.pageNo = page
this.loadData() this.loadData()
}, },
addModelList() { addModelList() {
@@ -296,6 +296,7 @@ export default {
this.confirmLoading = true this.confirmLoading = true
downloadFile('report/detail/exportNormal', query.exportName+'.zip', query) downloadFile('report/detail/exportNormal', query.exportName+'.zip', query)
this.confirmLoading = false this.confirmLoading = false
this.visible = false
} }
}) })
}, },
@@ -252,6 +252,7 @@ export default {
this.confirmLoading = true this.confirmLoading = true
downloadFile('report/detail/exportCustom', query.exportName+'.zip', query) downloadFile('report/detail/exportCustom', query.exportName+'.zip', query)
this.confirmLoading = false this.confirmLoading = false
this.visible = false
} }
}) })
}, },
@@ -217,7 +217,7 @@ export default {
this.visible = false this.visible = false
this.$emit('addModelList') this.$emit('addModelList')
} else { } else {
this.$message.warning(this.$t('operationFailed')) this.$message.warning(res.message)
this.confirmLoading = false this.confirmLoading = false
} }
}) })
@@ -37,7 +37,7 @@
size="middle" size="middle"
:loading="loading" :loading="loading"
:pagination="false" :pagination="false"
:scroll="{x: '100%',y:'calc(100vh - 130px)'}" :scroll="{x: '100%',y:'calc(100vh - 140px)'}"
rowKey="id" rowKey="id"
:data-source="dataSource" :data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
@@ -736,6 +736,12 @@ export default {
}) })
let querycontentList = JSON.parse(JSON.stringify(this.contentList)) let querycontentList = JSON.parse(JSON.stringify(this.contentList))
query.certCategoryParamsInfoEOList = querycontentList query.certCategoryParamsInfoEOList = querycontentList
if(this.formInline.controlType == 11){
query.certCategoryParamsInfoEOList = []
query.certCategory = ''
}else{
query.titleDefaultValue = ''
}
this.confirmLoading = true this.confirmLoading = true
Action(url, query).then((res) => { Action(url, query).then((res) => {
if (res.success) { if (res.success) {
@@ -307,11 +307,18 @@
} }
}, },
completeTask() { completeTask() {
let value = JSON.parse(JSON.stringify(this.queryProject))
Object.keys(value).forEach(res => {
if (value[res] && value[res] instanceof String) {
value[res] = value[res].replace(/\"/g, '“')
value[res] = value[res].replace(/\'/g, '')
}
})
let query = { let query = {
userid: this.userInfo().id, userid: this.userInfo().id,
taskId: this.$route.query.taskIds, taskId: this.$route.query.taskIds,
flag: this.queryProject.flag, flag: this.queryProject.flag,
json: JSON.stringify(this.queryProject).replace(/\"/g, '\'') json: JSON.stringify(value).replace(/\"/g, '\'')
} }
postAction('/workFlow/completeTask', query).then((res) => { postAction('/workFlow/completeTask', query).then((res) => {
if (res.success) { if (res.success) {
@@ -186,6 +186,12 @@
completeTask(value, handlingTime) { completeTask(value, handlingTime) {
let json = Object.assign(this.queryBy, { handlingTime: handlingTime }, value) let json = Object.assign(this.queryBy, { handlingTime: handlingTime }, value)
let data = JSON.stringify(json).replace(/\"/g, '\'') let data = JSON.stringify(json).replace(/\"/g, '\'')
Object.keys(data).forEach(res => {
if (data[res] && data[res] instanceof String) {
data[res] = data[res].replace(/\"/g, '“')
data[res] = data[res].replace(/\'/g, '')
}
})
let query = { let query = {
userid: this.userInfo().id, userid: this.userInfo().id,
taskId: this.$route.query.taskId || this.$route.query.taskIds, taskId: this.$route.query.taskId || this.$route.query.taskIds,
@@ -248,15 +254,24 @@
} }
postAction('/workFlow/startProcess', query).then((res) => { postAction('/workFlow/startProcess', query).then((res) => {
if (res.success) { if (res.success) {
this.completeTaskDesign(value, res.result) this.completeTaskDesign(value, res.result,true)
} }
}) })
}, },
deleteProcessInstanceByTask(taskId) {
completeTaskDesign(value, taskId) { getAction('/workFlow/deleteProcessInstanceByTaskId', { taskId: taskId }).then((res) => {
})
},
completeTaskDesign(value, taskId,isTrue) {
value.reviewResult = 'launch' value.reviewResult = 'launch'
let operatorTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss') let operatorTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
value.operatorTime = operatorTime value.operatorTime = operatorTime
Object.keys(value).forEach(res => {
if (value[res] && value[res] instanceof String) {
value[res] = value[res].replace(/\"/g, '“')
value[res] = value[res].replace(/\'/g, '')
}
})
let query = { let query = {
userid: this.userInfo().id, userid: this.userInfo().id,
taskId: taskId, taskId: taskId,
@@ -272,6 +287,10 @@
// this.$router.push({ // this.$router.push({
// path: '/ProcessCenter' // path: '/ProcessCenter'
// }) // })
}else{
if (isTrue) {
this.deleteProcessInstanceByTask(taskId)
}
} }
}) })
}, },
@@ -171,10 +171,17 @@
// this.insertBatch(dataList, 2) // this.insertBatch(dataList, 2)
}, },
completeTask() { completeTask() {
let value = JSON.parse(JSON.stringify(this.queryProject))
Object.keys(value).forEach(res => {
if (value[res] && value[res] instanceof String) {
value[res] = value[res].replace(/\"/g, '“')
value[res] = value[res].replace(/\'/g, '')
}
})
let query = { let query = {
userid: this.userInfo().id, userid: this.userInfo().id,
taskId: this.$route.query.taskIds, taskId: this.$route.query.taskIds,
json: JSON.stringify(this.queryProject).replace(/\"/g, '\'') json: JSON.stringify(value).replace(/\"/g, '\'')
} }
postAction('/workFlow/completeTask', query).then((res) => { postAction('/workFlow/completeTask', query).then((res) => {
if (res.success) { if (res.success) {
@@ -342,6 +342,12 @@
completeTask(value) { completeTask(value) {
let json = Object.assign(this.queryBy, value) let json = Object.assign(this.queryBy, value)
let data = JSON.stringify(json).replace(/\"/g, '\'') let data = JSON.stringify(json).replace(/\"/g, '\'')
Object.keys(value).forEach(res => {
if (value[res] && value[res] instanceof String) {
value[res] = value[res].replace(/\"/g, '“')
value[res] = value[res].replace(/\'/g, '')
}
})
let query = { let query = {
userid: this.userInfo().id, userid: this.userInfo().id,
taskId: this.$route.query.taskId || this.$route.query.taskIds, taskId: this.$route.query.taskId || this.$route.query.taskIds,
@@ -5,7 +5,7 @@
<a-row :gutter="24"> <a-row :gutter="24">
<a-col :md="6" :sm="10"> <a-col :md="6" :sm="10">
<a-form-item :label="$t('Collectlist')"> <a-form-item :label="$t('Collectlist')">
<a-select v-model="queryParam.ctype" @change="getonChange"> <a-select v-model="queryParam.ctype" @change="getonChange" :getPopupContainer="triggerNode => triggerNode.parentNode">
<a-select-option v-for="d in options" :key="d.value" :value="d.value" >{{ d.label }}</a-select-option> <a-select-option v-for="d in options" :key="d.value" :value="d.value" >{{ d.label }}</a-select-option>
</a-select> </a-select>
</a-form-item> </a-form-item>
@@ -1697,6 +1697,12 @@
completeTask(value, taskId, index) { completeTask(value, taskId, index) {
let handlingTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss') let handlingTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
value.handlingTime = handlingTime value.handlingTime = handlingTime
Object.keys(value).forEach(res => {
if (value[res] && value[res] instanceof String) {
value[res] = value[res].replace(/\"/g, '“')
value[res] = value[res].replace(/\'/g, '')
}
})
let query = { let query = {
userid: this.userInfo().id, userid: this.userInfo().id,
taskId: taskId, taskId: taskId,
@@ -1,12 +1,11 @@
<template> <template>
<div> <div>
<a-modal <a-drawer
:title="$t('ListOfRelevantPersonnel')" :title="$t('ListOfRelevantPersonnel')"
:width="1000" :width="1000"
:visible="visible" :visible="visible"
:maskClosable="false" :maskClosable="false"
@ok="visible = false" @close="handleCancel"
@cancel="visible = false"
> >
<a-form layout="inline" @keyup.enter.native="searchQuery"> <a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24"> <a-row :gutter="24">
@@ -104,7 +103,7 @@
rowKey="id" rowKey="id"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:pagination="false" :pagination="false"
:scroll="{x:800,y: 400}" :scroll="{x:800,y: 500}"
:data-source="dataSource" :data-source="dataSource"
:loading="loading" :loading="loading"
> >
@@ -136,7 +135,11 @@
<!-- @showSizeChange="SizeChange"--> <!-- @showSizeChange="SizeChange"-->
<!-- />--> <!-- />-->
<!-- </div>--> <!-- </div>-->
</a-modal> <div class="drawer-bootom-button">
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('determine')}}</a-button>
</div>
</a-drawer>
<a-modal <a-modal
:title="$t('ListOfRelevantPersonnel')" :title="$t('ListOfRelevantPersonnel')"
:width="600" :width="600"
@@ -414,6 +417,12 @@
this.selectedRowKeys = [] this.selectedRowKeys = []
this.getList() this.getList()
}, },
handleCancel(){
this.visible = false
},
handleSubmit(){
this.visible = false
},
batSettingClick() { batSettingClick() {
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) { if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
let selectedRowKeys = JSON.parse(JSON.stringify(this.selectedRowKeys)) let selectedRowKeys = JSON.parse(JSON.stringify(this.selectedRowKeys))
@@ -633,4 +642,16 @@
height: 38px; height: 38px;
/*margin-top: 2px;*/ /*margin-top: 2px;*/
} }
.drawer-bootom-button {
position: absolute;
bottom: 0;
width: 100%;
z-index:100;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
background: #fff;
border-radius: 0 0 2px 2px;
}
</style> </style>
@@ -373,8 +373,7 @@ export default {
} }
.title-text { .title-text {
width: 20%; width: 110px;
min-width: 110px;
color: #000F16; color: #000F16;
display: inline-block; display: inline-block;
font-weight: 500; font-weight: 500;
@@ -29,7 +29,7 @@
size="middle" size="middle"
:loading="loading" :loading="loading"
:pagination="false" :pagination="false"
:scroll="{x: '100%'}" :scroll="{x: '100%',y:'calc(100vh - 180px)'}"
rowKey="id" rowKey="id"
:data-source="dataSource" :data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
@@ -42,9 +42,10 @@
树操作 <a-icon type="up" /> 树操作 <a-icon type="up" />
</a-button> </a-button>
</a-dropdown> </a-dropdown>
<a-popconfirm title="确定放弃编辑?" @confirm="close" okText="确定" cancelText="取消"> <!-- <a-popconfirm title="确定放弃编辑?" @confirm="close" okText="确定" cancelText="取消">-->
<a-button style="margin-right: .8rem">取消</a-button> <!-- <a-button style="margin-right: .8rem">取消</a-button>-->
</a-popconfirm> <!-- </a-popconfirm>-->
<a-button @click="close()" type="primary" :loading="loading" ghost style="margin-right: 0.8rem">取消</a-button>
<a-button @click="handleSubmit(false)" type="primary" :loading="loading" ghost style="margin-right: 0.8rem">仅保存</a-button> <a-button @click="handleSubmit(false)" type="primary" :loading="loading" ghost style="margin-right: 0.8rem">仅保存</a-button>
<a-button @click="handleSubmit(true)" type="primary" :loading="loading">保存并关闭</a-button> <a-button @click="handleSubmit(true)" type="primary" :loading="loading">保存并关闭</a-button>
</div> </div>