合并分支 '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',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '国家与国旗中间表' ROW_FORMAT = Dynamic;
-- 初始化数据 2022-08-09
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 ('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 ('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 ('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 ('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 ('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 ('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 ('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 ('7', NULL, NULL, NULL, NULL, NULL, '马来西亚', 'Malaysia', NULL, '马来西亚.jpg');
-- 初始化数据 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 ('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 ('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 ('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 ('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 ('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 ('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 ('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 ('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 ('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 ('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 ('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');
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');
@@ -85,11 +85,11 @@ public class JeroBootExceptionHandler {
/**
* spring默认上传大小100MB 超出大小捕获异常MaxUploadSizeExceededException
*/
@ExceptionHandler(MaxUploadSizeExceededException.class)
public Result<?> handleMaxUploadSizeExceededException(MaxUploadSizeExceededException e) {
log.error(e.getMessage(), e);
return Result.error("文件大小超出10MB限制, 请压缩或降低文件质量! ");
}
// @ExceptionHandler(MaxUploadSizeExceededException.class)
// public Result<?> handleMaxUploadSizeExceededException(MaxUploadSizeExceededException e) {
// log.error(e.getMessage(), e);
// return Result.error("文件大小超出100MB限制, 请压缩或降低文件质量! ");
// }
@ExceptionHandler(DataIntegrityViolationException.class)
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) {
//处理文件大小,大于100M抛出异常
long fileSize = mf.getSize() / 1024 / 1024;
String originalFilename = mf.getOriginalFilename();
if (fileSize >= 100) {
if (cut.equals(CutEnum.CN.getValue())) {
throw new JeroBootException(originalFilename + "文件大小超出100MB, 请压缩或降低文件质量!");
} else {
throw new JeroBootException(originalFilename + "File size out 100MB, Please compress or reduce file quality!");
}
}
// long fileSize = mf.getSize() / 1024 / 1024;
// String originalFilename = mf.getOriginalFilename();
// if (fileSize >= 100) {
// if (cut.equals(CutEnum.CN.getValue())) {
// throw new JeroBootException(originalFilename + "文件大小超出100MB, 请压缩或降低文件质量!");
// } else {
// throw new JeroBootException(originalFilename + "File size out 100MB, Please compress or reduce file quality!");
// }
// }
OSSFile oSSFile = new OSSFile();
try {
@@ -191,15 +191,15 @@ public class OSSFileServiceImpl extends ServiceImpl<OSSFileMapper, OSSFile> impl
public OSSFile uploadLocalOfCos(MultipartFile mf, String bizPath, String state, String cut) {
//处理文件大小,大于100M抛出异常
long fileSize = mf.getSize() / 1024 / 1024;
String originalFilename = mf.getOriginalFilename();
if (fileSize >= 100) {
if (cut.equals(CutEnum.CN.getValue())) {
throw new JeroBootException(originalFilename + "文件大小超出100MB, 请压缩或降低文件质量!");
} else {
throw new JeroBootException(originalFilename + "File size out 100MB, Please compress or reduce file quality!");
}
}
// long fileSize = mf.getSize() / 1024 / 1024;
// String originalFilename = mf.getOriginalFilename();
// if (fileSize >= 100) {
// if (cut.equals(CutEnum.CN.getValue())) {
// throw new JeroBootException(originalFilename + "文件大小超出100MB, 请压缩或降低文件质量!");
// } else {
// throw new JeroBootException(originalFilename + "File size out 100MB, Please compress or reduce file quality!");
// }
// }
OSSFile oSSFile = new OSSFile();
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) {
//处理文件大小,大于100M抛出异常
long fileSize = mf.getSize() / 1024 / 1024;
String originalFilename = mf.getOriginalFilename();
if (fileSize >= 100) {
if (cut.equals(CutEnum.CN.getValue())) {
throw new JeroBootException(originalFilename + "文件大小超出100MB, 请压缩或降低文件质量!");
} else {
throw new JeroBootException(originalFilename + "File size out 100MB, Please compress or reduce file quality!");
}
}
// long fileSize = mf.getSize() / 1024 / 1024;
// String originalFilename = mf.getOriginalFilename();
// if (fileSize >= 100) {
// if (cut.equals(CutEnum.CN.getValue())) {
// throw new JeroBootException(originalFilename + "文件大小超出100MB, 请压缩或降低文件质量!");
// } else {
// throw new JeroBootException(originalFilename + "File size out 100MB, Please compress or reduce file quality!");
// }
// }
OSSFile oSSFile = new OSSFile();
String ctxPath = uploadCospath;
@@ -293,7 +293,11 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
//文档动态信息添加
if(StringUtils.isNotBlank(sbTemp)){
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.setMsgContentInfo(msgContent);
homeDocumentDynamicEOService.save(homeDocumentDynamicEO);
@@ -2143,8 +2147,8 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
//文档动态, 文档库中新增了标准XXXX homeDocumentDynamicEOService
//The standard GB 7258-2017 Technical specifications has been added to the document library.
HomeDocumentDynamicEO homeDocumentDynamicEO = new HomeDocumentDynamicEO();
homeDocumentDynamicEO.setMsgContent("The " + category + " " + serialNumber + " " + titleEn + " has been added to the document library.");
homeDocumentDynamicEO.setMsgContentInfo("The " + href + " has been added to the document library.");
homeDocumentDynamicEO.setMsgContent("The standard " + category + " " + serialNumber + " " + titleEn + " has been added to the document library.");
homeDocumentDynamicEO.setMsgContentInfo("The standard " + href + " has been added to the document library.");
homeDocumentDynamicEOService.save(homeDocumentDynamicEO);
@@ -2596,11 +2600,11 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
StringBuilder msgContentSb = new StringBuilder();
StringBuilder msgContentInfoSb = new StringBuilder();
//适用车型
StringBuilder msgContentSbCarType = new StringBuilder("Vehicle Type of the " + category + " " + serialNumber + " " + titleEn);
StringBuilder msgContentInfoSbCarType = new StringBuilder("Vehicle Type of the " + category + " " + href);
StringBuilder msgContentSbCarType = new StringBuilder("Vehicle Type of the standard " + category + " " + serialNumber + " " + titleEn);
StringBuilder msgContentInfoSbCarType = new StringBuilder("Vehicle Type of the standard " + category + " " + href);
//状态
StringBuilder msgContentSbStatus = new StringBuilder("The Status of the " + category + " " + serialNumber + " " + titleEn);
StringBuilder msgContentInfoSbStatus = new StringBuilder("The Status of the " + category + " " + href);
StringBuilder msgContentSbStatus = new StringBuilder("The Status of the standard " + category + " " + serialNumber + " " + titleEn);
StringBuilder msgContentInfoSbStatus = new StringBuilder("The Status of the standard " + category + " " + href);
List<String> fileIdLIstTemp = new ArrayList<>();
@@ -2634,8 +2638,8 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
}
//
if(StringUtils.isBlank(value)){
msgContentSbStatus.append(" has been modified to be null ,");
msgContentInfoSbStatus.append(" has been modified to be null ,");
msgContentSbStatus.append(" has been modified to be null,");
msgContentInfoSbStatus.append(" has been modified to be null,");
msgContentSb.append(msgContentSbStatus);
msgContentInfoSb.append(msgContentInfoSbStatus);
}else{
@@ -2670,8 +2674,8 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
value = substring;
}
if(StringUtils.isBlank(value)){
msgContentSbCarType.append(" has been modified to be null ,");
msgContentInfoSbCarType.append(" has been modified to be null ,");
msgContentSbCarType.append(" has been modified to be null,");
msgContentInfoSbCarType.append(" has been modified to be null,");
msgContentSb.append(msgContentSbCarType);
msgContentInfoSb.append(msgContentInfoSbCarType);
}else{
@@ -2691,8 +2695,8 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
msgContentInfoSb.append(contentInfoFile);
}
if(count > 0){
String msgContent = msgContentSb.substring(0, msgContentSb.length() - 1);
String msgContentInfo = msgContentInfoSb.substring(0, msgContentInfoSb.length() - 1);
String msgContent = msgContentSb.substring(0, msgContentSb.length() - 1) + ".";
String msgContentInfo = msgContentInfoSb.substring(0, msgContentInfoSb.length() - 1) + ".";
HomeDocumentDynamicEO homeDocumentDynamicEO = new HomeDocumentDynamicEO();
homeDocumentDynamicEO.setMsgContent(msgContent);
homeDocumentDynamicEO.setMsgContentInfo(msgContentInfo);
@@ -74,11 +74,13 @@ public class ExtRepoDataController extends JeroController<ExtRepoData, IExtRepoD
// 文件名称模糊查询
String fileName = req.getParameter("fileName");
if (StringUtils.isNotBlank(fileName)) {
fileName = fileName.replace("%","\\%");
queryWrapper.like(ExtRepoData::getFileName, fileName);
}
// 上传人模糊查询
String createBy = req.getParameter("createBy");
if (StringUtils.isNotBlank(createBy)) {
createBy = createBy.replace("%","\\%");
queryWrapper.like(ExtRepoData::getCreateBy, createBy);
}
// 更新时间查询
@@ -185,7 +187,7 @@ public class ExtRepoDataController extends JeroController<ExtRepoData, IExtRepoD
ExtRepoData erd = extRepoDataService.queryById(id);
if (null != erd) {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
if (extRepoFolderService.isManager() || sysUser.getUsername().equals(erd.getCreateBy())) {
if (sysUser.getUsername().equals(erd.getCreateBy())) {
extRepoDataService.deleteById(id);
CosBootUtil.delete(erd.getFileKey());
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())
|| getStringList(erf.getAuthViewIds()).contains(sysUser.getId());
}
return false;
return res;
}
@@ -84,6 +84,10 @@ public class CountryCardManageReleaseDetailEO implements Serializable {
@ApiModelProperty(value = "内容")
private java.lang.String content;
/**如果是下拉选的话,把翻译后的值放到此字段中。*/
@TableField(exist = false)
private java.lang.String contentDropDownValue;
@TableField(exist = false)
private String cut;
@@ -72,12 +72,19 @@ public class ProblemKnowledgeBaseEO implements Serializable {
/**问题分类展示名称*/
@TableField(exist = false)
private java.lang.String problemTypeName;
/**问题分类查询条件字段 多个*/
@TableField(exist = false)
private java.lang.String problemTypes;
/**市场*/
@Dict(dicCode = "region")
/**市场*/
//@Dict(dicCode = "region")
@Excel(name = "市场", width = 15)
@ApiModelProperty(value = "市场")
private java.lang.String targetMarket;
/**市场展示字段**/
@TableField(exist = false)
private java.lang.String targetMarket_dicText;
/**文档库id*/
@Excel(name = "文档库id", width = 15)
@@ -148,6 +148,19 @@ public class CountryCardManageReleaseDetailEOServiceImpl extends ServiceImpl<Cou
}).collect(Collectors.toList());
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) {
boolean flag = false;
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;
break;
}
@@ -70,6 +70,7 @@ public class CountryCardTempEOServiceImpl extends ServiceImpl<CountryCardTempEOM
CountryCardManageReleaseDetailEO countryCardManageReleaseDetailEO = new CountryCardManageReleaseDetailEO();
countryCardManageReleaseDetailEO.setCountryCardTempId(countryCardTempEO.getId());
countryCardManageReleaseDetailEO.setCountryCardManageReleaseId(manageReleaseEO.getId());
releaseDetailEOList.add(countryCardManageReleaseDetailEO);
});
this.countryCardManageReleaseDetailEOService.saveBatch(releaseDetailEOList);
}
@@ -1,7 +1,9 @@
package com.jero.modules.problemKnowledgeBase.service.impl;
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.vo.DictModel;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.problemKnowledgeBase.entity.*;
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.mapper.ProblemKnowledgeBaseEOMapper;
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 org.apache.commons.collections4.CollectionUtils;
import org.apache.shiro.SecurityUtils;
@@ -44,6 +48,8 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
private IProblemKnowledgeBaseBrowsingHistoryEOService problemKnowledgeBaseBrowsingHistoryEOService;
@Autowired
private IProblemKnowledgeBaseClassifyEOService problemKnowledgeBaseClassifyEOService;
@Autowired
private ISysDictService sysDictService;
/**
* 保存
@@ -209,6 +215,7 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
problemKnowledgeBaseClassifyEOList = this.problemKnowledgeBaseClassifyEOService.list(classifyEOQueryWrapper);
}
List<DictModel> regionList = sysDictService.queryDictItemsByCode(DicCodeEnum.REGION.getCode());
List<ProblemKnowledgeBaseClassifyEO> finalProblemKnowledgeBaseClassifyEOList = problemKnowledgeBaseClassifyEOList;
datas.forEach(data -> {
@@ -298,6 +305,30 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
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);
});
}
//根据分类查询 ,包含就查出来。
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"),
TASK_AFFIRM_LINK("任务确认链接","2","/ProcessCenter",""),
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天,请及时查看处理";*/
// 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() + "-"
+ projectYearNameInfoEO.getYearName()+ " "
+ 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()
+ ": You have a regulation list confirmation task to complete";
+ ": You have a regulation task confirmation to complete";
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.setTaskType("Regulation List Confirmation");
feishuMsgVo.setTaskType("Regulation Task Confirmation");
feishuMsgVo.setProject(projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket());
//飞书跳转链接
@@ -172,22 +172,22 @@ public class InventoryAffirmJob implements Job {
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)){
currentDaysUserIdList = currentDaysUserIdList.stream().distinct().collect(Collectors.toList());
/*String msgContentCN = "您" + projectLibraryBase.getProjectName() + "(项目名称)法规清单的任务今天即将结束,请及时查看处理*/
String msgContentEN = "The regulation list confirmation for "
String msgContentEN = "The regulation task confirmation for "
+ projectNameInfoEO.getProjectName() + "-" + projectYearNameInfoEO.getYearName() + " " + projectLibraryBase.getTargetMarket()
+ " will expire today. Please check and address it in a timely manner.";
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.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());
//飞书跳转链接
@@ -210,7 +210,7 @@ public class InventoryAffirmJob implements Job {
sendMessageMap.put("hrefFeishu",hrefFeishu);
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 "
+ 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()
+ ": You have a regulation list confirmation task to complete";
@@ -2117,11 +2117,12 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
String taskType = "";
String initiator = "";
String initiatorLark = "";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
if (StringUtils.equals(msgType, MsgTypeEnum.TASK_AFFIRM_START_MSG.getValue())) {
userIdList.add(engineeringInterfacePerson);
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()
+ ": 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
userIdList.add(dreUserId);
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()
+ ": 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())) {
userIdList.add(engineeringInterfacePerson);
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()
+ ": 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())) {
userIdList.add(engineeringInterfacePerson);
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()
+ ": You have a regulation task confirmation to complete";
@@ -2207,7 +2208,7 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
String designDutyId = jsonObject.getString("designDutyId"); //设计符合性责任人id
userIdList.add(designDutyId);
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()
+ ": 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
userIdList.add(prehomoDutyId);
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()
+ ": You have a Pre-Homo task to complete";
@@ -2244,7 +2245,7 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
String verifyDutyId = jsonObject.getString("verifyDutyId"); //验证符合性责任人id
userIdList.add(verifyDutyId);
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()
+ ": You have a validation compliance task to complete";
@@ -251,6 +251,10 @@ public class WordUtil {
paragraph.setAlignment(ParagraphAlignment.CENTER);
XWPFRun run = paragraph.createRun();
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();
@@ -214,4 +214,11 @@ public class workFlowController {
public Result startTaskToConfirmProcess(@RequestBody JSONObject 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)
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());
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:
static-path-pattern: /**
resource:
static-locations: classpath:/static/,classpath:/public/,classpath:/home/
static-locations: classpath:/static/,classpath:/public/,classpath:/home,/classpath:/nationalFlag/
autoconfigure:
exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
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',
attachmentUpload:'file',
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',
forward:'Forward',
issuedBy:'Issued by',
}
+2 -1
View File
@@ -1355,7 +1355,8 @@ module.exports = {
Paraname: '参数名称',
Parabatch: '参数批次',
freeze:'请选择冻结配置',
deleteNode:'若有文件信息将同步删除',
deleteNode:'若有文件信息将同步删除确认删除该条数据',
HaveReleased:'已发布',
forward:'转发',
issuedBy:'发布人',
}
@@ -40,7 +40,7 @@
:dataSource='areaTable'
:pagination='false'
:loading='loading'
:scroll="{x: '100%',y:'calc(100vh - 130px)'}"
:scroll="{x: '100%',y:600}"
:rowSelection='{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}'
@change='handleTableChange'>
@@ -350,13 +350,23 @@
}
postAction('/workFlow/startProcess', query).then((res) => {
if (res.success) {
this.completeTask(value, res.result)
this.completeTask(value, res.result, true)
} else {
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 = {
userid: this.userInfo().id,
taskId: taskId,
@@ -375,6 +385,9 @@
} else {
this.JLoading = false
this.$message.warning(this.$t('operationFailed'))
if (isTrue) {
this.deleteProcessInstanceByTask(taskId)
}
}
})
}
@@ -37,55 +37,26 @@
</div>
</div>
<div class="content-box">
<div class="content-box-box" @click="contentClick()">
<img src="../../../../assets/mobileHome.png" class="content-box-box-img" alt="">
<div class="content-box-box" v-for="(item,index) in conList" :key="index" @click="contentClick(item)">
<img :src="item.countryNationalFlag" class="content-box-box-img" alt="">
<span class="content-box-box-text">
中国
{{item.applyMarket_dictText}}
</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="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 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>
</template>
@@ -101,11 +72,16 @@
applyMarketList: [],
pageSize: 10,
total: 0,
pageNo: 1
pageNo: 1,
loading: false,
url: {
getInfoList: '/problemKnowledgeBase/countryCardManageReleaseEO/page'
}
}
},
mounted() {
this.getApplyMarketList()
this.getList()
},
methods: {
getApplyMarketList() {
@@ -118,10 +94,15 @@
})
},
searchQuery() {
this.pageNo = 1
this.getApplyMarketList()
this.getList()
},
searchReset() {
this.pageNo = 1
this.getApplyMarketList()
this.queryParam = {}
this.getList()
},
pageOnChange(page, pageSize) {
this.pageNo = page
@@ -135,14 +116,19 @@
getList() {
let query = {
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) {
this.conList = res.result.records
this.total = res.result.total
this.loading = false
} else {
this.conList = []
this.loading = false
}
})
},
@@ -153,10 +139,13 @@
})
window.open(newUrl.href, '_blank')
},
contentClick() {
contentClick(row) {
let newUrl = this.$router.resolve({
path: '/countryCardView',
query: {}
query: {
applyMarket: row.applyMarket,
id: row.id
}
})
window.open(newUrl.href, '_blank')
}
@@ -208,6 +197,7 @@
.content-box {
width: 100%;
overflow: hidden;
}
.content-box-box {
@@ -226,14 +216,14 @@
}
.content-box-box-img {
width: 70%;
width: 238px;
height: 100%;
border-right: 1px #d9d9d9 solid;
}
.content-box-box-text {
width: calc(100% - 238px);
display: inline-block;
width: 30%;
text-align: center;
font-size: 18px;
font-weight: 500;
@@ -244,6 +234,7 @@
width: 100%;
text-align: right;
margin-top: 20px;
margin-bottom: 20px;
}
.operator-text {
@@ -234,7 +234,7 @@
url = this.url.edit
this.dataList.forEach(res => {
content.push({
countryCardTempId: res.id,
countryCardTempId: res.countryCardTempId,
description: res.description,
content: res.content,
id: res.id
@@ -23,19 +23,37 @@
</div>
<div style="overflow: auto;height: calc(100vh - 160px);">
<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 v-for="(item2,index2) in 16" style="width: 340px;display: inline-block" class="content-box-left">
<div style="width: 100%" v-for="(item1,index) in contentList" class="content-box-top">
<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">
<img src="../../../../assets/mobileHome.png" class="content-box-box-img" alt="">
<span class="content-box-box-text">
中国
</span>
<img class="content-box-box-img" style="display: inline-block;width: auto" v-if="index2 == 0">
<img :src="item2.img" v-else class="content-box-box-img" alt="">
<span v-if="index2 == 0" class="content-box-box-text"></span>
<span v-else class="content-box-box-text">
{{item2.applyMarket_dictText}}
</span>
</div>
<div class="content-box-box" v-else>
<img src="../../../../assets/mobileHome.png" class="content-box-box-img" alt="">
<span class="content-box-box-text">
中国
</span>
<span style="color: #21c9cc"
: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"
@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>
@@ -44,8 +62,11 @@
</div>
</div>
</div>
<displayInformationModel ref="displayInformationModelRef"/>
<displayInformationModel ref="displayInformationModelRef"
@displayInformationModelForm="displayInformationModelForm"/>
<countryCardViewAdd ref="countryCardViewAddRef" @countryCardViewAddForm="countryCardViewAddForm"/>
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
<viewFileModel ref="viewFileModelRef"/>
</div>
</template>
@@ -53,35 +74,154 @@
import { getAction, postAction, downloadFile } from '@/api/manage'
import displayInformationModel from './displayInformationModel'
import countryCardViewAdd from './countryCardViewAdd'
import viewFileModel from '@/components/viewFileModel/index'
export default {
name: 'countryCardView',
components: {
displayInformationModel,
countryCardViewAdd
countryCardViewAdd,
viewFileModel
},
data() {
return {
clientWidth: '',
isTrue: false
isTrue: false,
loading: false,
dataList: [],
contentList: [],
displayList: [],
queryCountryList: [],
countryCardViewList:[],
applyMarkets: '',
url: {
list: '/problemKnowledgeBase/countryCardTempEO/list',
deleteOne: ''
},
list: '/problemKnowledgeBase/countryCardManageReleaseEO/queryCountryCardManageReleaseByApplyMarkets'
}
},
mounted() {
this.isTrue = false
this.$nextTick(() => {
this.clientWidth = 340 * 14 + 'px'
this.isTrue = true
this.queryCountry(() => {
this.replacePage()
})
},
methods: {
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() {
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;
display: inline-block;
height: 80px;
line-height: 80px;
text-align: center;
background: #fff;
border-right: 1px #d9d9d9 solid;
border-bottom: 1px #d9d9d9 solid;
@@ -232,10 +374,28 @@
background: #fff;
}
.content-box-top {
height: 80px;
}
.content-box-top:first-child {
position: sticky;
top: 0;
height: 160px;
z-index: 111;
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>
@@ -14,14 +14,15 @@
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('applicableMarket')">{{$t('applicableMarket')}}</span>
</div>
<a-form-model-item class="itemModel" prop="applicableMarket">
<a-input class="box-input"
v-model="formInline.applicableMarket"
:placeholder="$t('PleaseEnter')+$t('applicableMarket')"/>
<j-dict-select-tag class="box-input" v-model="formInline.applyMarket"
:disabled="true"
:placeholder="$t('PleaseSelect')+$t('applicableMarket')"
:type="'select'"
:triggerChange="false" :dictCode="'region'"/>
</a-form-model-item>
</div>
</a-col>
@@ -30,19 +31,27 @@
<a-col :span="24">
<div class="box-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>
</div>
<a-form-model-item class="itemModel" style="width: calc(100% - 220px)" prop="comparisonMarket">
<a-input class="box-input"
v-model="formInline.comparisonMarket"
:placeholder="$t('PleaseEnter')+$t('comparisonMarket')"/>
<a-select :placeholder="$t('PleaseSelect')+$t('applicableMarket')"
:disabled="false"
@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-icon class="icon-size"
style="margin-left: 8px"
@click="addData"
v-if="(formInline.dataList.length-1) == index"
v-if="(formInline.dataList.length-1) == index && formInline.dataList.length < 5"
type="plus-circle"/>
<a-icon class="icon-size"
@click="deleteData"
@@ -65,6 +74,10 @@
visible: false,
confirmLoading: false,
formInline: {},
applyMarketList: [],
url: {
getInfoList: '/problemKnowledgeBase/countryCardManageReleaseEO/list'
},
rules: {
personChargeName: [
{
@@ -97,13 +110,20 @@
mounted() {
},
methods: {
add() {
add(data) {
this.visible = true
console.log(data)
this.$nextTick(() => {
this.formInline = {}
this.formInline.dataList = [{
relatedSection: ''
}]
this.formInline.applyMarket = this.$route.query.applyMarket
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.$refs.ruleForm.clearValidate()
})
@@ -113,29 +133,77 @@
this.formInline = { ...this.formInline }
},
handleOk() {
this.$refs.ruleForm.validate(valid => {
if (valid) {
}
})
this.$emit('countryCardViewAddForm', JSON.parse(JSON.stringify(this.formInline.dataList)))
this.visible = false
},
handleCancel() {
this.visible = false
},
addData() {
this.formInline.dataList.push({
relatedSection: ''
applyMarket: ''
})
this.consolidateData()
this.formInline = { ...this.formInline }
},
deleteData() {
this.formInline.dataList.pop()
this.consolidateData()
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>
<style>
.ant-select-disabled {
color: rgba(0, 0, 0, 0.65) !important;
}
</style>
<style scoped>
.box-title-text {
line-height: 1.4;
@@ -11,27 +11,17 @@
style="height: 100%;overflow: auto;padding-bottom: 53px;">
<div style="margin-bottom: 60px">
<a-table
v-if="this.visible"
:key="'id'"
:columns="columns"
:scroll="{x: '100%',y:'calc(100vh - 300px)'}"
:scroll="{x: '100%',y:'calc(100vh - 200px)'}"
:data-source="dataList"
:pagination="false"
:loading="loading">
<span slot="showOrNot" slot-scope="text,record">
<a-checkbox :value="text"></a-checkbox>
<span slot="showOrNot" slot-scope="text,record,index">
<a-checkbox :checked="record.showOrNot" @change="onCheckAllChange(index)"></a-checkbox>
</span>
</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 class="drawer-bootom-button">
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
@@ -49,21 +39,18 @@
data() {
return {
url: {
list: '',
list: '/problemKnowledgeBase/countryCardTempEO/list',
deleteOne: ''
},
visible: false,
selectedRowKeys: [],
dataList: [{}],
dataList: [],
loading: false,
pageNo: 1,
pageSize: 10,
confirmLoading:false,
total: 0,
confirmLoading: false,
columns: [
{
title: this.$t('LabelName'),
dataIndex: 'LabelName',
dataIndex: 'lableName',
align: 'center',
ellipsis: true
},
@@ -80,41 +67,22 @@
mounted() {
},
methods: {
getData() {
getData(data) {
this.visible = true
this.$nextTick(() => {
this.dataList = data
this.dataList = [...this.dataList]
})
},
handleCancel() {
this.visible = false
},
handleSubmit(){
handleSubmit() {
this.$emit('displayInformationModelForm', this.dataList)
this.visible = false
},
onChange(page, pageSize) {
this.pageNo = page
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
}
})
onCheckAllChange(index) {
this.dataList[index].showOrNot = !this.dataList[index].showOrNot
}
}
}
@@ -92,12 +92,11 @@
<span class="title-text-text" :title="$t('market')">{{$t('market')}}</span>
</div>
<a-form-model-item class="itemModel" prop="targetMarket">
<j-dict-select-tag class="box-input" v-model="formInline.targetMarket"
:disabled="disabled"
@input="handleInput('targetMarket')"
:placeholder="$t('PleaseSelect')+$t('market')"
:type="'select'"
:triggerChange="false" :dictCode="'region'"/>
<j-multi-select-tag class="box-input" v-model="formInline.targetMarket"
:disabled="disabled"
:placeholder="$t('PleaseSelect')+$t('market')"
:type="'select'"
:triggerChange="false" :dictCode="'region'"/>
</a-form-model-item>
</div>
</a-col>
@@ -110,6 +109,7 @@
</div>
<a-form-model-item class="itemModel" prop="standNumber">
<a-input class="box-input"
:title="formInline.standNumber"
:disabled="true"
v-model="formInline.standNumber"
:placeholder="$t('PleaseEnter')+$t('standardNo')"/>
@@ -133,11 +133,12 @@
<div class="title-text">
<span class="title-text-text">{{$t('content')}}</span>
</div>
<a-form-model-item class="itemModel" prop="vehiclePlatform">
<a-form-model-item style="height: 300px" class="itemModel" prop="content">
<quill-editor
style="height: 300px"
:content="formInline.content"
:options="editorOption"
@blur="quilleditorBlur"
@change="onEditorChange($event)"
/>
</a-form-model-item>
@@ -239,6 +240,13 @@
message: this.$t('market') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
content: [
{
max: 5000,
message: this.$t('content') + this.$t('cannotExceed') + 5000 + this.$t('Characters'),
trigger: 'change'
}
]
},
url: {
@@ -276,6 +284,9 @@
}
},
methods: {
quilleditorBlur() {
this.$refs.ruleForm.validateField('content')
},
getBase() {
getAction('/problemKnowledgeBase/problemKnowledgeBaseClassifyEO/list', {}).then((res) => {
if (res.success) {
@@ -340,7 +351,6 @@
}
,
onEditorChange({ quill, html, text }) {
console.log('editor change!', quill, html, text)
this.formInline.content = html
}
,
@@ -13,13 +13,15 @@
</div>
<div class="box-content">
<div class="box-content-left">
<span class="box-content-left-text">{{$t('recentHotSpots')}}</span>
<span class="box-content-left-text">{{$t('disseminationMaterials')}}</span>
<span class="box-content-left-text">{{$t('informationSafety')}}</span>
<span class="box-content-left-text">{{$t('blueBook')}}</span>
<span class="box-content-left-text">{{$t('invoiceCollection')}}</span>
<span class="box-content-left-text">{{$t('productHighlights')}}</span>
<span class="box-content-left-text">{{$t('financialReimbursement')}}</span>
<template v-for="tag in tagList">
<a-checkable-tag
:key="tag.id"
:checked="selectedTags.indexOf(tag.id) > -1"
@change="checked => handleChange(tag.id, checked)"
>
{{ tag.problemLabel }}
</a-checkable-tag>
</template>
</div>
<div class="box-content-right">
<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>
</a-tooltip>
</div>
<div class="text-content" v-html="item.content">
</div>
<div class="text-content">
{{item.contentOne}}
</div>
</div>
</div>
</li>
</div>
<div class="noData" v-else>
暂无数据
{{$t('noData')}}
</div>
<div class="page" v-if="conList.length > 0">
<a-pagination
@@ -90,9 +93,12 @@
searchContent: '',
checkboxText: [],
conList: [],
searchStr: '',
total: 0,
selectedTags: [],
loading: false,
pageSize: 10,
tagList: [],
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
pageNo: 1,
url: {
@@ -102,12 +108,30 @@
},
mounted() {
this.getList()
this.replacePage()
},
methods: {
replacePage() {
getAction('/problemKnowledgeBase/problemKnowledgeBaseClassifyEO/list', {}).then((res) => {
if (res.success) {
this.tagList = res.result
} else {
this.tagList = []
}
})
},
onSearch() {
this.pageNo = 1
this.getList()
},
handleChange(tag, checked) {
const { selectedTags } = this
const nextSelectedTags = checked
? [...selectedTags, tag]
: selectedTags.filter(t => t !== tag)
this.selectedTags = nextSelectedTags
this.getList()
},
ResetSearch() {
this.searchStr = ''
this.pageNo = 1
@@ -127,11 +151,6 @@
this.$router.push({
path: '/problemKnowledgeBaseAdd'
})
// let newUrl = this.$router.resolve({
// path: '/problemKnowledgeBaseAdd',
// query: {}
// })
// window.open(newUrl.href, '_blank')
},
pageOnChange(page, pageSize) {
this.pageNo = page
@@ -142,16 +161,29 @@
this.pageSize = pageSize
this.getList()
},
getText(str) {
let words = str.replace(/<[^<>]+>/g, '').replace(/&nbsp;/gi, '') //这里是去除标签
return words.replace(/\s/g, '') //这里是去除空格
},
getList() {
let selectedTags = JSON.parse(JSON.stringify(this.selectedTags))
let query = {
pageNo: this.pageNo,
pageSize: this.pageSize,
searchStr: this.searchStr
searchStr: this.searchStr,
problemTypes: selectedTags.join(',')
}
this.loading = true
getAction(this.url.getInfoList, query).then((res) => {
if (res.success) {
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.loading = false
} else {
@@ -308,6 +340,8 @@
font-weight: 400;
color: #040B29;
opacity: 0.7;
white-space: pre-wrap;
word-wrap: break-word;
}
.page {
@@ -320,4 +354,19 @@
text-align: center;
line-height: 10;
}
</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-header" style="position: fixed;top: 0">
<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;"/>
</span>
{{$t('managePublishing')}}
@@ -22,7 +22,7 @@
<a-button class="box-button" style="margin-left: 8px" @click="ResetSearch">{{$t('reset')}}</a-button>
</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 style="margin-bottom: 10px;position: relative;overflow: hidden">
<!-- <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>
</a-tooltip>
</div>
<div class="text-content" v-html="item.content">
<div class="text-content">
{{item.contentOne}}
</div>
<div class="text-text-right-text">
<a style="margin-right: 10px" @click="edit(item)">{{$t('edit')}}</a>
@@ -46,26 +47,26 @@
</div>
</div>
</div>
<div class="noData" v-else>
暂无数据
</div>
<div class="page" v-if="conList.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="pageOnChange"
@showSizeChange="SizeChange"
/>
</div>
<div class="noData" v-else>
{{$t('noData')}}
</div>
<div class="page" v-if="conList.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="pageOnChange"
@showSizeChange="SizeChange"
/>
</div>
</div>
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
</div>
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
</div>
</div>
</template>
<script>
@@ -113,6 +114,10 @@
this.pageNo = 1
this.getList()
},
getText(str) {
let words = str.replace(/<[^<>]+>/g, '').replace(/&nbsp;/gi, '') //这里是去除标签
return words.replace(/\s/g, '') //这里是去除空格
},
getList() {
let query = {
pageNo: this.pageNo,
@@ -124,6 +129,13 @@
getAction(this.url.getInfoList, query).then((res) => {
if (res.success) {
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.loading = false
} else {
@@ -132,13 +144,16 @@
}
})
},
backClick() {
this.$router.push({
path: '/problemknowledgeBase'
})
},
titleClick(item) {
let newUrl = this.$router.resolve({
path: '/docManage/library/detail',
path: '/problemKnowledgeBaseView',
query: {
id: item.id.slice(0, 32),
title: item.title,
serial_number: item.serial_number
id: item.id
}
})
window.open(newUrl.href, '_blank')
@@ -17,6 +17,14 @@
</div>
<div style="padding-top: 68px;background: #fff">
<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="text-field" v-for="(item,index) in standardContentList" :key="index">
<span class="text-field-left" :title="item.title">{{item.title}}</span>
@@ -104,11 +112,11 @@
standardContentList: [
{
title: this.$t('problemClassification'),
value: 'problemType'
value: 'problemTypeName'
},
{
title: this.$t('market'),
value: 'targetMarket'
value: 'targetMarket_dicText'
},
{
title: this.$t('standardNo'),
@@ -493,4 +501,13 @@
overflow: hidden;
text-align: right;
}
.content-text-top {
width: 100%;
text-align: right;
color: #040B29;
font-weight: 400;
font-size: 16px;
margin-bottom: 20px;
}
</style>
@@ -52,6 +52,7 @@
:getPopupContainer="triggerNode=> triggerNode.parentNode"
allowClear
:disabled="isParentId"
style='z-index: 99'
v-model="formInline.parentId">
<a-select-option v-for="(item, key) in ParentList"
:key="item.id"
@@ -564,6 +564,12 @@
})
},
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 = {
userid: this.userInfo().id,
taskId: taskId,
@@ -86,7 +86,7 @@
size="middle"
:loading="loading"
:pagination="false"
:scroll="{x: '100%',y:'calc(100vh)'}"
:scroll="{x: '100%',y:'calc(100vh - 130px)'}"
rowKey="id"
:data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
@@ -91,7 +91,7 @@
</div>
<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>
</div>
</a-drawer>
@@ -78,7 +78,7 @@
size="middle"
:loading="loading"
:pagination="false"
:scroll="{x: '100%'}"
:scroll="{x: '100%',y:'calc(100vh - 140px)'}"
rowKey="id"
:data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
@@ -100,6 +100,9 @@
v-if="record.createBy == userInfoQuery.username && record.releaseCondition == 'draft'"
@click="deleteData(record)">{{$t('delete')}}</a>
</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"
:title="record.sourceLanguage_dictText +' -- '+record.targetLanguage_dictText">
<span class="translationLanguageText" style="margin-top: -2px">{{record.sourceLanguage_dictText}}</span>
@@ -160,13 +163,15 @@
title: this.$t('standard'),
align: 'center',
dataIndex: 'serialNumber',
width: 170
width: 170,
scopedSlots: { customRender: 'title' }
},
{
title: this.$t('title'),
align: 'center',
dataIndex: 'title',
width: 170
width: 170,
scopedSlots: { customRender: 'title' }
},
{
title: this.$t('TextStatus'),
@@ -3,7 +3,7 @@
<a-modal
:title="title"
:maskClosable="false"
:width="800"
:width="600"
placement="right"
:closable="true"
@cancel="handleCancel"
+15 -10
View File
@@ -40,13 +40,12 @@
<span v-else :title="title">
{{title && title.length > 18?title.slice(0,17)+'...':title}}
</span>
<template #overlay>
<a-menu v-has="'externalReports:folder'"
@click="({ key: menuKey }) => onContextMenuClick(treeKey, menuKey, record)">
<a-menu-item key="1" @click="orgAdd" >{{$t('Addingfolder')}}</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">{{$t('Editfolder')}}</a-menu-item>
<a-menu-item key="3" @click="orgDelete" >{{$t('Deletefolders')}}</a-menu-item>
<template #overlay >
<a-menu @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="4" @click="orgAdds" v-has="'externalReports:folder'" 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="3" @click="orgDelete" v-has="'externalReports:folder'">{{$t('Deletefolders')}}</a-menu-item>
</a-menu>
</template>
@@ -85,8 +84,9 @@
</div>
<!-- :placeholder="$t('PleaseSelect')+$t('uploadTime')"-->
<a-range-picker
style='width: 264px'
class="box-input"
@change="onChange"
style='margin-left: -1px'
format="YYYY-MM-DD"
:getCalendarContainer="(trigger) => trigger.parentNode"
v-model="queryParams.time"
@@ -127,7 +127,7 @@
:loading="loading"
:pagination="false"
rowKey="id"
:scroll="{x: 10}"
:scroll="{x: '100%',y:'calc(100vh - 180px)'}"
:data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:columns="columns"
@@ -135,6 +135,10 @@
<span slot="projectName" slot-scope="text,record" :title="text">
{{ text && text.length > 15 ? text.slice(0, 14) + '...' : text }}
</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">
<!-- <a class="text-operation" @click="handlelist(record)">{{$t('view')}}</a>-->
<a class="text-operation" @click="download(record)">{{$t('download')}}</a>
@@ -353,6 +357,7 @@ export default {
title: this.$t('fileName'),
align: 'center',
dataIndex: 'fileName',
scopedSlots: { customRender: 'fileName' },
width: 200
},
{
@@ -733,7 +738,7 @@ export default {
}
},
pageOnChange(page, pageSize) {
this.pageNo = page
this.queryParams.pageNo = page
this.loadData()
},
addModelList() {
@@ -296,6 +296,7 @@ export default {
this.confirmLoading = true
downloadFile('report/detail/exportNormal', query.exportName+'.zip', query)
this.confirmLoading = false
this.visible = false
}
})
},
@@ -252,6 +252,7 @@ export default {
this.confirmLoading = true
downloadFile('report/detail/exportCustom', query.exportName+'.zip', query)
this.confirmLoading = false
this.visible = false
}
})
},
@@ -217,7 +217,7 @@ export default {
this.visible = false
this.$emit('addModelList')
} else {
this.$message.warning(this.$t('operationFailed'))
this.$message.warning(res.message)
this.confirmLoading = false
}
})
@@ -37,7 +37,7 @@
size="middle"
:loading="loading"
:pagination="false"
:scroll="{x: '100%',y:'calc(100vh - 130px)'}"
:scroll="{x: '100%',y:'calc(100vh - 140px)'}"
rowKey="id"
:data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
@@ -736,6 +736,12 @@ export default {
})
let querycontentList = JSON.parse(JSON.stringify(this.contentList))
query.certCategoryParamsInfoEOList = querycontentList
if(this.formInline.controlType == 11){
query.certCategoryParamsInfoEOList = []
query.certCategory = ''
}else{
query.titleDefaultValue = ''
}
this.confirmLoading = true
Action(url, query).then((res) => {
if (res.success) {
@@ -307,11 +307,18 @@
}
},
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 = {
userid: this.userInfo().id,
taskId: this.$route.query.taskIds,
flag: this.queryProject.flag,
json: JSON.stringify(this.queryProject).replace(/\"/g, '\'')
json: JSON.stringify(value).replace(/\"/g, '\'')
}
postAction('/workFlow/completeTask', query).then((res) => {
if (res.success) {
@@ -186,6 +186,12 @@
completeTask(value, handlingTime) {
let json = Object.assign(this.queryBy, { handlingTime: handlingTime }, value)
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 = {
userid: this.userInfo().id,
taskId: this.$route.query.taskId || this.$route.query.taskIds,
@@ -248,15 +254,24 @@
}
postAction('/workFlow/startProcess', query).then((res) => {
if (res.success) {
this.completeTaskDesign(value, res.result)
this.completeTaskDesign(value, res.result,true)
}
})
},
completeTaskDesign(value, taskId) {
deleteProcessInstanceByTask(taskId) {
getAction('/workFlow/deleteProcessInstanceByTaskId', { taskId: taskId }).then((res) => {
})
},
completeTaskDesign(value, taskId,isTrue) {
value.reviewResult = 'launch'
let operatorTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
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 = {
userid: this.userInfo().id,
taskId: taskId,
@@ -272,6 +287,10 @@
// this.$router.push({
// path: '/ProcessCenter'
// })
}else{
if (isTrue) {
this.deleteProcessInstanceByTask(taskId)
}
}
})
},
@@ -171,10 +171,17 @@
// this.insertBatch(dataList, 2)
},
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 = {
userid: this.userInfo().id,
taskId: this.$route.query.taskIds,
json: JSON.stringify(this.queryProject).replace(/\"/g, '\'')
json: JSON.stringify(value).replace(/\"/g, '\'')
}
postAction('/workFlow/completeTask', query).then((res) => {
if (res.success) {
@@ -342,6 +342,12 @@
completeTask(value) {
let json = Object.assign(this.queryBy, value)
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 = {
userid: this.userInfo().id,
taskId: this.$route.query.taskId || this.$route.query.taskIds,
@@ -5,7 +5,7 @@
<a-row :gutter="24">
<a-col :md="6" :sm="10">
<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>
</a-form-item>
@@ -1697,6 +1697,12 @@
completeTask(value, taskId, index) {
let handlingTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
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 = {
userid: this.userInfo().id,
taskId: taskId,
@@ -1,12 +1,11 @@
<template>
<div>
<a-modal
<a-drawer
:title="$t('ListOfRelevantPersonnel')"
:width="1000"
:visible="visible"
:maskClosable="false"
@ok="visible = false"
@cancel="visible = false"
@close="handleCancel"
>
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
@@ -104,7 +103,7 @@
rowKey="id"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:pagination="false"
:scroll="{x:800,y: 400}"
:scroll="{x:800,y: 500}"
:data-source="dataSource"
:loading="loading"
>
@@ -136,7 +135,11 @@
<!-- @showSizeChange="SizeChange"-->
<!-- />-->
<!-- </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
:title="$t('ListOfRelevantPersonnel')"
:width="600"
@@ -414,6 +417,12 @@
this.selectedRowKeys = []
this.getList()
},
handleCancel(){
this.visible = false
},
handleSubmit(){
this.visible = false
},
batSettingClick() {
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
let selectedRowKeys = JSON.parse(JSON.stringify(this.selectedRowKeys))
@@ -633,4 +642,16 @@
height: 38px;
/*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>
@@ -373,8 +373,7 @@ export default {
}
.title-text {
width: 20%;
min-width: 110px;
width: 110px;
color: #000F16;
display: inline-block;
font-weight: 500;
@@ -29,7 +29,7 @@
size="middle"
:loading="loading"
:pagination="false"
:scroll="{x: '100%'}"
:scroll="{x: '100%',y:'calc(100vh - 180px)'}"
rowKey="id"
:data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
@@ -42,9 +42,10 @@
树操作 <a-icon type="up" />
</a-button>
</a-dropdown>
<a-popconfirm title="确定放弃编辑?" @confirm="close" okText="确定" cancelText="取消">
<a-button style="margin-right: .8rem">取消</a-button>
</a-popconfirm>
<!-- <a-popconfirm title="确定放弃编辑?" @confirm="close" okText="确定" cancelText="取消">-->
<!-- <a-button style="margin-right: .8rem">取消</a-button>-->
<!-- </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(true)" type="primary" :loading="loading">保存并关闭</a-button>
</div>