合并分支 'dev_third_stage' 到 'master'

Dev third stage

查看合并请求 laws-nio/laws-weilai!177
This commit is contained in:
高嵩
2022-09-23 15:00:33 +08:00
58 changed files with 1193 additions and 338 deletions
@@ -1114,4 +1114,48 @@ INSERT INTO `laws_weilai`.`sys_permission`(`id`, `parent_id`, `name`, `url`, `co
-- 上报库 添加项目目标市场 2022-09-19
ALTER TABLE `laws_weilai`.`params_report`
ADD COLUMN `target_market` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '目标市场' AFTER `title`;
ADD COLUMN `target_market` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '目标市场' AFTER `title`;
-- 参数项清单 修改字段长度 2022-09-23
ALTER TABLE `laws_weilai`.`params_info`
MODIFY COLUMN `nio_number` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'nio编号' AFTER `sys_org_code`,
MODIFY COLUMN `params_name` varchar(350) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '参数名称' AFTER `is_must`;
ALTER TABLE `laws_weilai`.`params_info_publish`
MODIFY COLUMN `nio_number` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'nio编号' AFTER `sys_org_code`,
MODIFY COLUMN `params_name` varchar(350) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '参数名称' AFTER `is_must`;
ALTER TABLE `laws_weilai`.`cert_category_params_info`
MODIFY COLUMN `params_number` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '编号' AFTER `sys_org_code`,
MODIFY COLUMN `params_name` varchar(350) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '参数名称' AFTER `params_number`;
MODIFY COLUMN `nio_number` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'nio编号' AFTER `description`;
ALTER TABLE `laws_weilai`.`cert_category_params_info_publish`
MODIFY COLUMN `params_number` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '编号' AFTER `sys_org_code`,
MODIFY COLUMN `params_name` varchar(350) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '参数名称' AFTER `params_number`,
MODIFY COLUMN `nio_number` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'nio编号' AFTER `description`;
ALTER TABLE `laws_weilai`.`params_collect_manifest`
MODIFY COLUMN `nio_number` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'NIO编号' AFTER `sys_org_code`,
MODIFY COLUMN `params_name` varchar(350) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '参数名称' AFTER `is_must`;
ALTER TABLE `laws_weilai`.`params_collect_manifest_history`
MODIFY COLUMN `nio_number` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'NIO编号' AFTER `sys_org_code`,
MODIFY COLUMN `params_name` varchar(350) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '参数名称' AFTER `is_must`;
ALTER TABLE `laws_weilai`.`params_report_detail`
MODIFY COLUMN `nio_number` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'NIO编号' AFTER `sys_org_code`,
MODIFY COLUMN `params_name` varchar(350) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '参数名称' AFTER `is_must`;
ALTER TABLE `laws_weilai`.`report_cert_category_params_info`
MODIFY COLUMN `params_number` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '编号' AFTER `sys_org_code`,
MODIFY COLUMN `params_name` varchar(350) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '参数名称' AFTER `params_number`,
MODIFY COLUMN `nio_number` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'NIO编号' AFTER `description`;
-- 虚拟清单表修改备注字段长度由300改为1000 2022-09-23 未同步生产环境
ALTER TABLE `laws_weilai`.`dummy_inventory_info`
MODIFY COLUMN `remark` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注' AFTER `duty_territory`;
-- 法规清单表修改备注字段长度由300改为1000 2022-09-23 未同步生产环境
ALTER TABLE `laws_weilai`.`project_laws_inventory`
MODIFY COLUMN `remark` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注' AFTER `engineering_interface_person`;
@@ -1225,7 +1225,7 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
Map<String, Object> resultMap = new HashMap<>();
// nio编号
String nioNumber = dto.getNioNumber();
resultMap = validateMustAndLength(nioNumber, "NIO编号", "NIO Number", IsMustEnum.YES.getValue(),"15", false, cut);
resultMap = validateMustAndLength(nioNumber, "NIO编号", "NIO Number", IsMustEnum.YES.getValue(),"20", false, cut);
errorMsg += (String)resultMap.get("errorMsg");
countError += (int)resultMap.get("countError");
if (StringUtils.isNotEmpty(dto.getNioNumber())) {
@@ -1268,7 +1268,7 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
// 参数名称
String paramsName = dto.getParamsName();
resultMap = validateMustAndLength(paramsName, "参数名称", "Para Name", IsMustEnum.YES.getValue(), "100", false, cut);
resultMap = validateMustAndLength(paramsName, "参数名称", "Para Name", IsMustEnum.YES.getValue(), "350", false, cut);
errorMsg += (String)resultMap.get("errorMsg");
countError += (int)resultMap.get("countError");
@@ -1479,7 +1479,7 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
// nio编号
String nioNumber = ccDto.getNioNumber();
resultMap = validateMustAndLength(nioNumber, "NIO编号", "NIO number", IsMustEnum.YES.getValue(),"15", false, cut);
resultMap = validateMustAndLength(nioNumber, "NIO编号", "NIO number", IsMustEnum.YES.getValue(),"20", false, cut);
errorMsg += (String)resultMap.get("errorMsg");
countError += (int)resultMap.get("countError");
if (StringUtils.isNotEmpty(ccDto.getNioNumber())) {
@@ -1510,7 +1510,7 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
}
// 编号
String paramsNumber = ccDto.getParamsNumber();
resultMap = validateMustAndLength(paramsNumber, "编号", "Number", IsMustEnum.YES.getValue(),"15", false, cut);
resultMap = validateMustAndLength(paramsNumber, "编号", "Number", IsMustEnum.YES.getValue(),"20", false, cut);
errorMsg += (String)resultMap.get("errorMsg");
countError += (int)resultMap.get("countError");
if (StringUtils.isNotEmpty(ccDto.getParamsNumber())) {
@@ -1527,7 +1527,7 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
}
// 参数名称
String paramsName = ccDto.getParamsName();
resultMap = validateMustAndLength(paramsName, "参数名称", "Para Name", IsMustEnum.YES.getValue(),"100", false, cut);
resultMap = validateMustAndLength(paramsName, "参数名称", "Para Name", IsMustEnum.YES.getValue(),"350", false, cut);
errorMsg += (String)resultMap.get("errorMsg");
countError += (int)resultMap.get("countError");
// 参数说明
@@ -1037,6 +1037,8 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
String key = "";
if (row != null && !isBlank) {
int columNos = headerRow.getLastCellNum();// 表头总共的列数
//预防空格子报错
columNos = columNos > 24 ? 24 : columNos;
Map<String, String> rowList = new LinkedHashMap<>();
for (int j = 0; j < columNos; j++) {
Cell cell = row.getCell(j);
@@ -1275,12 +1277,12 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
}
//备注 remark
if(StringUtils.isNotBlank(remark)){
if(remark.length() > 300){
if(remark.length() > 1000){
String message = "";
if(CutEnum.CN.getValue().equals(dummyInventoryInfoEOTemp.getCut())){
message = errorMsg + "备注不能超过300个字符, ";
message = errorMsg + "备注不能超过1000个字符, ";
}else{
message = errorMsg + " Note The value cannot exceed 300 characters, ";
message = errorMsg + " Note The value cannot exceed 1000 characters, ";
}
msgList.add(message);
}
@@ -5199,12 +5199,12 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
}
//备注 remark
if(StringUtils.isNotBlank(remark)){
if(remark.length() > 300){
if(remark.length() > 1000){
String message = "";
if(CutEnum.CN.getValue().equals(projectLawsInventoryEOTemp.getCut())){
message = errorMsg + "备注不能超过300个字符, ";
message = errorMsg + "备注不能超过1000个字符, ";
}else{
message = errorMsg + " Note The value cannot exceed 300 characters, ";
message = errorMsg + " Note The value cannot exceed 1000 characters, ";
}
msgList.add(message);
}
@@ -5517,12 +5517,12 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
}
//备注 remark
if(StringUtils.isNotBlank(remark)){
if(remark.length() > 300){
if(remark.length() > 1000){
String message = "";
if(CutEnum.CN.getValue().equals(projectLawsInventoryEOTemp.getCut())){
message = errorMsg + "备注不能超过300个字符, ";
message = errorMsg + "备注不能超过1000个字符, ";
}else{
message = errorMsg + " Note The value cannot exceed 300 characters, ";
message = errorMsg + " Note The value cannot exceed 1000 characters, ";
}
msgList.add(message);
}
@@ -5824,12 +5824,12 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
// }
// //备注 remark
// if(StringUtils.isNotBlank(remark)){
// if(remark.length() > 300){
// if(remark.length() > 1000){
// String message = "";
// if(CutEnum.CN.getValue().equals(projectLawsInventoryEOTemp.getCut())){
// message = errorMsg + "备注不能超过300个字符, ";
// message = errorMsg + "备注不能超过1000个字符, ";
// }else{
// message = errorMsg + " Note The value cannot exceed 300 characters, ";
// message = errorMsg + " Note The value cannot exceed 1000 characters, ";
// }
// msgList.add(message);
// }
@@ -48,6 +48,7 @@ public class LawsMonthlyReportTitleTemplateEOServiceImpl extends ServiceImpl<Law
List<LawsMonthlyReportTitleTemplateEO> children = lawsMonthlyReportTitleTemplateEOS.stream().filter(e -> StringUtils.isNotBlank(e.getParentId())).collect(Collectors.toList());
int sort = 0;
if(StringUtils.isBlank(lawsMonthlyReportTitleTemplateEO.getParentId())){
//新增父级
if(parent.size() == 0){
lawsMonthlyReportTitleTemplateEO.setSort(0);
}else{
@@ -56,10 +57,15 @@ public class LawsMonthlyReportTitleTemplateEOServiceImpl extends ServiceImpl<Law
sort = sortList.get(sortList.size()-1) + 1;
}
}else{
if(children.size() == 0){
//判断该父级下是否有子级
List<LawsMonthlyReportTitleTemplateEO> childrenList = children.stream()
.filter(e -> lawsMonthlyReportTitleTemplateEO.getParentId().equals(e.getParentId()))
.collect(Collectors.toList());
if(childrenList.size() == 0){
lawsMonthlyReportTitleTemplateEO.setSort(0);
}else{
List<Integer> sortList = parent.stream().map(LawsMonthlyReportTitleTemplateEO::getSort).collect(Collectors.toList());
List<Integer> sortList = childrenList.stream().map(LawsMonthlyReportTitleTemplateEO::getSort).collect(Collectors.toList());
Collections.sort(sortList);
sort = sortList.get(sortList.size()-1) + 1;
}
@@ -112,6 +112,7 @@ public class FileSpiltService {
// if (sarFileSplitInfoEO.getStartNumber()<4){
//从第四个开始拆解
nowStart.add("3.1");
nowStart.add("4");
// } else {
// nowStart.add(String.valueOf(sarFileSplitInfoEO.getStartNumber()));
// }
@@ -153,6 +154,8 @@ public class FileSpiltService {
// 记录word自动生成的编号数据
Map numberMap = new HashMap<String, Integer>();
boolean menuCanAdd = false; // 判断当前目录下是否可以正常填写数据
boolean startFlag = false; // 判断开始拆分的起始段落,因为需要从标题:范围 开始拆,但会受目录的影响
int count = 0; // 记录标题:范围 出现的次数
for (IBodyElement element : elements) {
// 段落
if (element instanceof XWPFParagraph) {
@@ -160,6 +163,18 @@ public class FileSpiltService {
// 处理段落生成编号不识别问题
String paragraphString = p.getText();
if ("前言".equals(getChinese(paragraphString))) {
count++;
if (count > 1) {
startFlag = true;
}
continue;
} else {
if(!startFlag) {
continue;
}
}
if (StringUtils.isNotBlank(paragraphString)) {
paragraphString = paragraphString.replace((char) 12288, ' ');
paragraphString = paragraphString.trim();
@@ -168,7 +183,9 @@ public class FileSpiltService {
// 处理当前段落仅为图片的情况
List<String> imageBundleList = readImageInParagraph((XWPFParagraph) p);
if (CollectionUtils.isNotEmpty(imageBundleList)) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
if (messageList.size() > 0) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
}
}
continue;
}
@@ -179,7 +196,9 @@ public class FileSpiltService {
// 处理当前段落仅为图片的情况
List<String> imageBundleList = readImageInParagraph((XWPFParagraph) p);
if (CollectionUtils.isNotEmpty(imageBundleList)) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
if (messageList.size() > 0) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
}
}
continue;
}
@@ -200,7 +219,7 @@ public class FileSpiltService {
}
}
if (messageNumber == 0) {
ptest = Pattern.compile("^1\\s{0,3}范围");
ptest = Pattern.compile("^1\\s{0,50}范围");
matcher = ptest.matcher(paragraphString);
while (matcher.find()) {
List<String> clauseContent = new ArrayList<>();
@@ -227,7 +246,7 @@ public class FileSpiltService {
messageNumber++;
}
} else if (messageNumber == 1) {
ptest = Pattern.compile("^2\\s{0,3}规范性引用文件");
ptest = Pattern.compile("^2\\s{0,50}规范性引用文件");
matcher = ptest.matcher(paragraphString);
if (matcher.find()) {
List<String> clauseContent = new ArrayList<>();
@@ -261,7 +280,7 @@ public class FileSpiltService {
}
}
} else if (messageNumber == 2) {
ptest = Pattern.compile("^3\\s{0,3}术语(和|与)定义");
ptest = Pattern.compile("^3\\s{0,50}术语(和|与)定义");
matcher = ptest.matcher(paragraphString);
if (matcher.find()) {
List<String> clauseContent = new ArrayList<>();
@@ -695,7 +714,9 @@ public class FileSpiltService {
// 处理当前段落仅为图片的情况
List<String> imageBundleList = readImageInParagraph((XWPFParagraph) p);
if (CollectionUtils.isNotEmpty(imageBundleList)) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
if (messageList.size() > 0) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
}
}
continue;
}
@@ -706,7 +727,9 @@ public class FileSpiltService {
// 处理当前段落仅为图片的情况
List<String> imageBundleList = readImageInParagraph((XWPFParagraph) p);
if (CollectionUtils.isNotEmpty(imageBundleList)) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
if (messageList.size() > 0) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
}
}
continue;
}
@@ -887,7 +910,9 @@ public class FileSpiltService {
// 处理当前段落仅为图片的情况
List<String> imageBundleList = readImageInParagraph((XWPFParagraph) p);
if (CollectionUtils.isNotEmpty(imageBundleList)) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
if (messageList.size() > 0) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
}
}
continue;
}
@@ -898,7 +923,9 @@ public class FileSpiltService {
// 处理当前段落仅为图片的情况
List<String> imageBundleList = readImageInParagraph((XWPFParagraph) p);
if (CollectionUtils.isNotEmpty(imageBundleList)) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
if (messageList.size() > 0) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
}
}
continue;
}
@@ -1089,7 +1116,9 @@ public class FileSpiltService {
// 处理当前段落仅为图片的情况
List<String> imageBundleList = readImageInParagraph((XWPFParagraph) p);
if (CollectionUtils.isNotEmpty(imageBundleList)) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
if (messageList.size() > 0) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
}
}
continue;
}
@@ -1100,7 +1129,9 @@ public class FileSpiltService {
// 处理当前段落仅为图片的情况
List<String> imageBundleList = readImageInParagraph((XWPFParagraph) p);
if (CollectionUtils.isNotEmpty(imageBundleList)) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
if (messageList.size() > 0) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
}
}
continue;
}
@@ -1461,7 +1492,9 @@ public class FileSpiltService {
// 处理当前段落仅为图片的情况
List<String> imageBundleList = readImageInParagraph((XWPFParagraph) p);
if (CollectionUtils.isNotEmpty(imageBundleList)) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
if (messageList.size() > 0) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
}
}
continue;
}
@@ -1472,7 +1505,9 @@ public class FileSpiltService {
// 处理当前段落仅为图片的情况
List<String> imageBundleList = readImageInParagraph((XWPFParagraph) p);
if (CollectionUtils.isNotEmpty(imageBundleList)) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
if (messageList.size() > 0) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
}
}
continue;
}
@@ -1666,7 +1701,9 @@ public class FileSpiltService {
// 处理当前段落仅为图片的情况
List<String> imageBundleList = readImageInParagraph((XWPFParagraph) p);
if (CollectionUtils.isNotEmpty(imageBundleList)) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
if (messageList.size() > 0) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
}
}
continue;
}
@@ -1677,7 +1714,9 @@ public class FileSpiltService {
// 处理当前段落仅为图片的情况
List<String> imageBundleList = readImageInParagraph((XWPFParagraph) p);
if (CollectionUtils.isNotEmpty(imageBundleList)) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
if (messageList.size() > 0) {
addItermsConditionsImage(messageList.get(messageList.size() - 1), itemValList, p, imageBundleList);
}
}
continue;
}
@@ -3025,4 +3064,19 @@ public class FileSpiltService {
// }
// return personMsgEO;
// }
private String getChinese(String source) {
char[] chars = source.toCharArray();
StringBuilder stringBuilder = new StringBuilder();
for (char aChar : chars) {
int length = String.valueOf(aChar).getBytes().length;
if (length == 3) {
stringBuilder.append(aChar);
}
}
return stringBuilder.toString();
}
}
+12 -2
View File
@@ -1154,8 +1154,8 @@ module.exports = {
category: 'Category',
RegulatoryProcessEvaluationResults: 'Regulatory Process Evaluation Results',
ViewConformanceResults: 'View Conformance Results',
CommentsCollectionResultsForReference: 'Comments Collection Results For Reference',
TechnicalEvaluationResultsForReference: 'Technical Evaluation Results For Reference',
CommentsCollectionResultsForReference: 'Comments Collection Results For',
TechnicalEvaluationResultsForReference: 'Technical Evaluation Results For',
ComplianceConfirmationRecord: 'Compliance Confirmation Record',
complianceConfirmation: 'Compliance Confirmation',
noComparisonDocumentSelected: 'No comparison document selected',
@@ -1299,4 +1299,14 @@ module.exports = {
theResponsiblePersonTaskForTheSecondTime:'The responsible person receives the task for the second time',
processNodesAreInconsistentPleaseSelectConsistentData:'Process nodes are inconsistent; Please select consistent data',
exportFileName:'Export file name',
initiateSupplementaryProcess:'Initiate supplementary process',
whetherTheDisassemblySheetIncluded:'Whether the disassembly sheet is included',
inRecentMonths3:'In recent 3 months',
inRecentMonths6:'In recent 6 months',
inRecentYear1:'In recent 1 year',
inRecentYear2:'In recent 2 year',
selectAll:'Select All',
importLocalDisassemblyOrder:'Import local disassembly order',
notExport:'Not export',
hasBeenExport:'Has been export',
}
+12 -3
View File
@@ -1158,7 +1158,6 @@ module.exports = {
category: '类别',
RegulatoryProcessEvaluationResults: '法规流程评估结果',
ViewConformanceResults: '查看符合性结果',
CommentsCollectionResultsForReference: '意见收集结果参考',
TechnicalEvaluationResultsForReference: '技术评估结果参考',
ComplianceConfirmationRecord: '符合性确认记录',
complianceConfirmation: '符合性确认',
@@ -1259,8 +1258,8 @@ module.exports = {
category: '类别',
RegulatoryProcessEvaluationResults: '法规流程评估结果',
ViewConformanceResults: '查看符合性结果',
CommentsCollectionResultsForReference: '意见收集结果参考',
TechnicalEvaluationResultsForReference: '技术评估结果参考',
CommentsCollectionResultsForReference: '意见收集结果',
TechnicalEvaluationResultsForReference: '技术评估结果',
ComplianceConfirmationRecord: '符合性确认记录',
complianceConfirmation: '符合性确认',
Deriveconformanceresults: '导出符合性结果',
@@ -1401,4 +1400,14 @@ module.exports = {
theResponsiblePersonTaskForTheSecondTime:'责任人二次接收任务',
processNodesAreInconsistentPleaseSelectConsistentData:'流程节点不一致请选择一致的数据',
exportFileName:'导出文件名称',
initiateSupplementaryProcess:'发起补充流程',
whetherTheDisassemblySheetIncluded:'是否含有拆解单',
inRecentMonths3:'近3个月内',
inRecentMonths6:'近6个月内',
inRecentYear1:'近1年内',
inRecentYear2:'近2年内',
selectAll:'全选',
importLocalDisassemblyOrder:'导入本地拆解单',
notExport:'未导出',
hasBeenExport:'已导出',
}
@@ -98,6 +98,7 @@
this.$route.path == '/problemKnowledgeBaseRelease' ||
this.$route.path == '/problemKnowledgeBaseView' ||
this.$route.path == '/regulatoryInitiatingProcess' ||
this.$route.path == '/regulatoryEvaluationResults' ||
this.$route.path == '/regulatoryProcessReview' ||
this.$route.path == '/handshakeProcess' ||
this.$route.path == '/projectStatusAndProgress' ||
+75 -13
View File
@@ -67,6 +67,24 @@
:type="'select'"
:triggerChange="false" :dictCode="item.dict_field"/>
</div>
<div class="box-title-text" v-else-if="item.field_show_type == '12'">
<div class="title-text" :title="item.db_field_txt">
<span>{{item.db_field_txt}}</span>
</div>
<a-select :placeholder="$t('PleaseSelect')+item.db_field_txt"
class="box-input"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
allowClear
v-model="queryParam[item.db_field_name]">
<a-select-option v-for="(item, key) in item.option"
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.name">
{{ item.name }}
</span>
</a-select-option>
</a-select>
</div>
</template>
<template v-if="index >= 3 && toggleSearchStatus">
@@ -133,6 +151,24 @@
:type="'select'"
:triggerChange="false" :dictCode="item.dict_field"/>
</div>
<div class="box-title-text" v-else-if="item.field_show_type == '12'">
<div class="title-text" :title="item.db_field_txt">
<span>{{item.db_field_txt}}</span>
</div>
<a-select :placeholder="$t('PleaseSelect')+item.db_field_txt"
class="box-input"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
allowClear
v-model="queryParam[item.db_field_name]">
<a-select-option v-for="(item, key) in item.option"
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.name">
{{ item.name }}
</span>
</a-select-option>
</a-select>
</div>
</template>
</a-col>
@@ -190,11 +226,12 @@
methods: {
searchQuery() {
if (this.isDefault) {
if (!this.queryParam['WarnTimeText']) {
this.queryParam['WarnTimeText'] = '2'
}
let startTime = moment(new Date()).format('YYYY-MM-DD')
let endTime = this.getNowdate()
if (this.queryParam['WarnTime'].length == 0) {
this.queryParam['WarnTime'] = [startTime, endTime]
}
this.queryParam['WarnTime'] = [startTime, endTime]
this.queryParam = { ...this.queryParam }
}
eventBUs.$emit('searchQuery', JSON.parse(JSON.stringify(this.queryParam)))
@@ -203,8 +240,8 @@
this.queryParam = {}
if (this.isDefault) {
let startTime = moment(new Date()).format('YYYY-MM-DD')
this.queryParam['WarnTimeText'] = '2'
let endTime = this.getNowdate()
console.log(endTime)
this.queryParam['WarnTime'] = [startTime, endTime]
this.queryParam = { ...this.queryParam }
}
@@ -218,7 +255,17 @@
if (res.success) {
this.searchList = res.result
if (this.searchQueryList && this.searchQueryList.length > 0) {
this.searchList = this.searchList.concat(this.searchQueryList)
for (let i = 0; i < this.searchList.length; i++) {
if (this.searchList[i].db_field_name == 'issue_time') {
this.searchList.splice(i, 1)
i--
}
if (this.searchList[i].db_field_name == 'title') {
let data = this.searchList[i + 1]
this.searchList[i + 1] = this.searchQueryList[0]
this.searchList.push(data)
}
}
if (this.isDefault) {
this.searchReset()
}
@@ -226,26 +273,41 @@
}
})
},
getNowdate(){
getNowdate() {
let monthData
let yearData
if (this.queryParam['WarnTimeText'] == '1') {
monthData = 4
yearData = 1
} else if (this.queryParam['WarnTimeText'] == '2') {
monthData = 7
yearData = 1
} else if (this.queryParam['WarnTimeText'] == '3') {
monthData = 13
yearData = 1
} else if (this.queryParam['WarnTimeText'] == '4') {
monthData = 25
yearData = 2
}
var date_now = new Date()//获取当前时间
var year = date_now.getFullYear()//获取当前时间的年份
var month = date_now.getMonth()//获取当前时间的月份
var day = date_now.getDate()//获取当前时间的日
var days = new Date(year,month,0)//将获取到的年月赋值给days
var days = new Date(year, month, 0)//将获取到的年月赋值给days
days = days.getDate()//获取当前年月的日
var year2 = year
var month2 = parseInt(month+7)//获取当前月份的1一个月以后的月份
if(month2 > 12){
year2 = parseInt(year2) + 1
var month2 = parseInt(month + monthData)//获取当前月份的1一个月以后的月份
if (month2 > 12) {
year2 = parseInt(year2) + yearData
month2 = parseInt(month2) % 12
}//考虑到12月要是获取一个月以后就是一月年份需要加一 一年没有13月所以%12取得来年1月
var day2 = day
var days2 = new Date(year2,month2,0)
var days2 = new Date(year2, month2, 0)
days2 = days2.getDate()
if(day2>days2){
if (day2 > days2) {
day2 = days2
}//获取了当前年份的日和6个月以后的日为的就是判断如果前一个月是有31号后一个月没有就将一个月以后的日期取到赋值给day2
if(month2 < 10){
if (month2 < 10) {
month2 = '0' + month2
}
var time = year2 + '-' + month2 + '-' + day2
@@ -23,7 +23,8 @@
<span slot="fileOperation" slot-scope="record">
<a class="text" @click="pdfPreview(record)"
:disabled="record.fileSuffix == '.pdf' || record.fileSuffix == '.docx' || record.fileSuffix == '.doc'
|| record.fileSuffix == '.xlsx' || record.fileSuffix == '.xls' ? false : true">
|| record.fileSuffix == '.jpg' || record.fileSuffix == '.png' || record.fileSuffix == '.gif'
|| record.fileSuffix == '.jpeg' || record.fileSuffix == '.xlsx' || record.fileSuffix == '.xls' ? false : true">
{{$t('See')}}
</a>
<a class="text" @click="download(record)">
@@ -77,7 +78,8 @@
} else if (fileSuffix == '.docx' || fileSuffix == '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else {
+5
View File
@@ -342,6 +342,11 @@ export const constantRouterMap = [
name: 'initiatingProcess',
component: () => import(/* webpackChunkName: "user" */ '@/views/businessSupport/collectionOfRegulatoryOpinions/components/initiatingProcess')
},
{
path: '/regulatoryEvaluationResults',
name: 'evaluationResultsList',
component: () => import(/* webpackChunkName: "user" */ '@/views/businessSupport/collectionOfRegulatoryOpinions/components/evaluationResultsList')
},
{
path: '/evaluationInitiationProcess',
name: 'evaluationInitiationProcess',
@@ -1,64 +1,65 @@
<template>
<div>
<a-drawer
:title="$t('evaluationResults')"
:maskClosable="false"
:width="1080"
placement="right"
:closable="true"
@close="handleCancel"
:visible="visible"
style="height: 100%;overflow: auto;padding-bottom: 53px;">
<div class="table-operator-right">
<div @click="handleExport" v-if="formInline.createBy == userInfoQuery.username" class="operator-text">
<a-icon type="export" :rotate="-90"/>
{{$t('export')}}
<div class="doc-detail">
<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">-->
<!-- <a-icon type="home" style="margin-right: 6px;"/>-->
<!-- </span>-->
{{$route.query.serialNumber +' '+$t('evaluationResults')}}
</div>
</div>
<a-table
ref="table"
size="middle"
:loading="loading"
:pagination="false"
:scroll="{x: '100%',y:'calc(100vh - 320px)'}"
:data-source="dataSource"
:columns="columns"
>
<div style="padding-top: 68px;background: #fff">
<div class="detail-content" style="padding:12px 24px">
<div class="table-operator-right">
<div @click="handleExport" v-if="formInline.createBy == userInfoQuery.username" class="operator-text">
<a-icon type="export" :rotate="-90"/>
{{$t('export')}}
</div>
</div>
<a-table
ref="table"
size="middle"
:loading="loading"
:pagination="false"
:scroll="{x: '100%',y:'calc(100vh - 320px)'}"
:data-source="dataSource"
:columns="columns"
>
<span slot="accessoryFile" slot-scope="text,record">
<a @click="seeFileClick(text)" v-if="text">
{{$t('viewFile')}}
</a>
<span v-else>--</span>
</span>
</a-table>
<div class="page" v-if="dataSource && dataSource.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>
<span class="text">{{$t('filingExternalOpinions')}}:</span>
<div @click="clickButtonToUpload('opinionArchiveId')" style="color: #21c9cc"
v-if="formInline.createBy == this.userInfoQuery.username" class="operator-text">
<a-icon type="cloud-upload"/>
{{$t('clickUpload')}}
</div>
<div @click="seeFileClick(formInline.opinionArchiveId)" style="color: #21c9cc" class="operator-text">
<a-icon type="eye"/>
{{$t('viewFile')}}
</a-table>
<div class="page" v-if="dataSource && dataSource.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 style="margin-top: 20px">
<span class="text">{{$t('filingExternalOpinions')}}:</span>
<div @click="clickButtonToUpload('opinionArchiveId')" style="color: #21c9cc"
v-if="formInline.createBy == this.userInfoQuery.username" class="operator-text">
<a-icon type="cloud-upload"/>
{{$t('clickUpload')}}
</div>
<div @click="seeFileClick(formInline.opinionArchiveId)" style="color: #21c9cc" class="operator-text">
<a-icon type="eye"/>
{{$t('viewFile')}}
</div>
</div>
</div>
</div>
<div class="drawer-bootom-button">
<a-button @click="handleCancel">{{$t('cancel')}}</a-button>
</div>
</a-drawer>
</div>
<uploadFile ref="uploadFile" @uploadSuccess="uploadSuccess"></uploadFile>
<viewFileModel ref="viewFileModelRef"/>
</div>
@@ -78,8 +79,6 @@
},
data() {
return {
confirmLoading: false,
visible: false,
loading: false,
total: 0,
pageSize: 10,
@@ -109,6 +108,13 @@
ellipsis: true,
dataIndex: 'reason'
},
{
title: this.$t('clauseContent'),
align: 'center',
width: 180,
ellipsis: true,
dataIndex: 'clauseContent'
},
{
title: this.$t('enclosure'),
align: 'center',
@@ -136,6 +142,7 @@
},
mounted() {
this.userInfoQuery = this.userInfo()
this.getData()
},
methods: {
...mapGetters(['userInfo']),
@@ -186,12 +193,10 @@
downloadFile('/lawsOpinionGather/lawsOpinionAssessmentResultEO/exportXls',
this.$t('evaluationResults') + '.zip', query)
},
getData(row) {
this.visible = true
this.formInline = JSON.parse(JSON.stringify(row))
this.actiProcInstId = row.actiProcInstId
this.lawsOpinionGatherId = row.id
console.log(row)
getData() {
this.formInline = JSON.parse(JSON.stringify(this.$route.query))
this.actiProcInstId = this.$route.query.actiProcInstId
this.lawsOpinionGatherId = this.$route.query.id
this.getList()
},
handleCancel() {
@@ -232,19 +237,71 @@
}
</script>
<style scoped>
.drawer-bootom-button {
position: absolute;
bottom: 0;
z-index: 100;
width: 100%;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
<style scoped lang="less">
@import '~@assets/less/common.less';
.doc-detail {
background: #fff;
border-radius: 0 0 2px 2px;
height: 100%;
.doc-detail-wrap {
.doc-detail-header {
width: 100%;
height: 68px;
line-height: 68px;
padding: 0 0 0 32px;
box-sizing: border-box;
display: flex;
justify-content: space-between;
border-bottom: 2px #eff1f3 solid;
z-index: 1000;
background: #fff;
.doc-detail-title {
display: inline-block;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
font-size: 20px;
font-weight: 400;
color: #040B29;
line-height: 68px;
}
.doc-detail-right {
width: 800px;
line-height: 68px;
display: flex;
.doc-detail-btn {
margin-left: 10px;
}
}
}
.content-box {
padding: 0 32px;
box-sizing: border-box;
}
.header-text {
font-size: 16px;
font-weight: 400;
height: 80px;
color: #000F16;
line-height: 80px;
}
.processBackground-text {
font-size: 16px;
color: #000F16;
}
}
}
.box-button-top {
float: right;
margin-top: 28px;
height: 38px;
}
.table-operator-right {
@@ -263,12 +320,13 @@
color: #040B29;
margin-right: 4px;
}
::v-deep .ant-table-row:first-child {
background: #fff!important;
background: #fff !important;
opacity: 0.9;
}
::v-deep .ant-table-body {
background: transparent!important;
background: transparent !important;
}
</style>
@@ -91,7 +91,7 @@
size="middle"
:loading="loading"
:pagination="false"
:scroll="{x: '100%',y:'calc(100vh - 160px)'}"
:scroll="{x: '100%',y:'calc(100vh - 260px)'}"
rowKey="id"
:data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
@@ -101,8 +101,9 @@
<span>{{text}}</span>
</span>
<span slot="operation" slot-scope="text,record">
<a class="text-operation" @click="viewProcessClick(record)">{{$t('viewProcess')}}</a>
<a class="text-operation" v-if="record.gatherResult == 'Completed'"
<!-- <a class="text-operation" @click="viewProcessClick(record)">{{$t('viewProcess')}}</a>-->
<!-- v-if="record.gatherResult == 'Completed'"-->
<a class="text-operation"
@click="evaluationResultsClick(record)">{{$t('evaluationResults')}}</a>
<a class="text-operation"
v-if="(record.gatherResult == 'Completed' && userInfoQuery.username == record.createBy) || administrators"
@@ -123,20 +124,15 @@
/>
</div>
</div>
<evaluationResultsList ref="evaluationResultsListRef"/>
</a-card>
</template>
<script>
import evaluationResultsList from './components/evaluationResultsList'
import { getAction, postAction, deleteAction } from '@/api/manage'
import { mapGetters } from 'vuex'
export default {
name: 'index',
components: {
evaluationResultsList
},
data() {
return {
//url传参严格按照当前命名
@@ -181,7 +177,7 @@
align: 'center',
dataIndex: 'title',
ellipsis: true,
width: 170
width: 280
},
{
title: this.$t('technicalField'),
@@ -193,7 +189,7 @@
{
title: this.$t('collectResults'),
align: 'center',
width: 170,
width: 140,
ellipsis: true,
dataIndex: 'gatherResultShow'
},
@@ -201,21 +197,21 @@
title: this.$t('dateOfInitiation'),
align: 'center',
ellipsis: true,
width: 170,
width: 140,
dataIndex: 'startTime'
},
{
title: this.$t('closingDate'),
align: 'center',
ellipsis: true,
width: 170,
width: 140,
dataIndex: 'endTime'
},
{
title: this.$t('operation'),
align: 'center',
fixed: 'right',
width: 320,
width: 210,
scopedSlots: { customRender: 'operation' }
}
],
@@ -373,7 +369,12 @@
window.open(newUrl.href, '_blank')
},
evaluationResultsClick(row) {
this.$refs.evaluationResultsListRef.getData(JSON.parse(JSON.stringify(row)))
let newUrl = this.$router.resolve({
path: '/regulatoryEvaluationResults',
query:JSON.parse(JSON.stringify(row))
})
window.open(newUrl.href, '_blank')
// this.$refs.evaluationResultsListRef.getData(JSON.parse(JSON.stringify(row)))
}
}
}
@@ -10,11 +10,14 @@
</div>
<a-select :placeholder="$t('PleaseSelect')+$t('applicableMarket')"
:disabled="false"
show-search
optionFilterProp="label"
style="z-index: 100"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
v-model="queryParam.applyMarket">
<a-select-option v-for="(item, key) in applyMarketList"
:key="key"
:label="item.title"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.title ">
{{ item.title}}
@@ -20,12 +20,15 @@
<span>{{$t('applicableMarket')}}</span>
</div>
<a-select class="box-input"
show-search
optionFilterProp="label"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
:placeholder="$t('PleaseSelect')+$t('applicableMarket')"
style="width: 100%;"
v-model="queryParam.applyMarket">
<a-select-option v-for="(item, key) in applyMarketList"
:key="key"
:label="item.title"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.title ">
{{ item.title}}
@@ -20,10 +20,13 @@
</div>
<a-form-model-item class="itemModel" prop="applyMarket">
<a-select :placeholder="$t('PleaseSelect')+$t('applicableMarket')"
show-search
optionFilterProp="label"
:disabled="false"
v-model="formInline.applyMarket">
<a-select-option v-for="(item, key) in applyMarketList"
:key="key"
:label="item.title"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.title ">
{{ item.title}}
@@ -30,6 +30,12 @@
</a-row>
</a-form>
</div>
<div class="box-content-right">
<div @click="selectAllClick" class="operator-text">
<a-icon type="eye"/>
{{$t('selectAll')}}
</div>
</div>
<div style="margin-bottom: 60px">
<a-table
v-if="this.visible"
@@ -90,6 +96,16 @@
mounted() {
},
methods: {
selectAllClick() {
this.dataList.forEach(res => {
res.showOrNot = true
this.dataListOne.forEach(val => {
if (res.id == val.id) {
val.showOrNot = true
}
})
})
},
searchQuery() {
if (this.queryParam.labelName) {
this.dataList = this.dataList.filter(res => {
@@ -186,12 +202,28 @@
.text-operation {
margin-right: 8px;
}
::v-deep .ant-table-row:first-child {
background: #fff!important;
background: #fff !important;
opacity: 0.9;
}
::v-deep .ant-table-body {
background: transparent!important;
background: transparent !important;
}
.box-content-right {
width: 100%;
text-align: right;
margin-bottom: 20px;
}
.operator-text {
cursor: pointer;
margin-right: 13px;
font-size: 14px;
font-weight: 400;
color: #040B29;
display: inline-block;
}
</style>
@@ -52,10 +52,11 @@
<a-col :span="8">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('market')">{{$t('market')}}</span>
</div>
<a-form-model-item class="itemModel" prop="targetMarket">
<!-- prop="targetMarket"-->
<a-form-model-item class="itemModel">
<j-multi-select-tag class="box-input" v-model="formInline.targetMarket"
:disabled="disabled"
:placeholder="$t('PleaseSelect')+$t('market')"
@@ -106,12 +107,23 @@
<div class="title-text">
<span class="title-text-text" :title="$t('standardNo')">{{$t('standardNo')}}</span>
</div>
<a-form-model-item class="itemModel" prop="standNumber">
<a-input class="box-input-index"
:title="formInline.standNumber"
:disabled="true"
v-model="formInline.standNumber"
:placeholder="$t('PleaseEnter')+$t('standardNo')"/>
<a-form-model-item class="itemModel itemModel-multi itemModelStand" prop="standNumber">
<a-select
class="box-input-index"
v-model="formInline.standNumber"
@change="onChange"
mode="multiple"
:placeholder="$t('standardNo')"
:getPopupContainer="triggerNode=> triggerNode.parentNode">
<a-select-option
v-for="(item,index) in dictOptions"
:key="index"
:value="item.standNumber">
<span class="itemOption" :title="item.standNumber">
{{ item.standNumber }}
</span>
</a-select-option>
</a-select>
<a-button class="box-button-index"
:title="$t('bringInDocumentInformation')"
type="primary" @click="bringInDocumentInformationClick">
@@ -229,6 +241,7 @@
formInline: {},
loading: false,
headers: '',
dictOptions: [],
uploadAction: window._CONFIG['domianURL'] + '/sys/common/upload',
editorOption: { // 富文本框配置
placeholder: '',
@@ -436,6 +449,16 @@
} else {
this.isDisplay = false
}
this.dictOptions = []
if (this.formInline.standNumber) {
this.formInline.standNumber = this.formInline.standNumber.split(',')
this.formInline.standNumber.forEach((res, index) => {
this.dictOptions.push({
standNumber: res,
id: this.formInline.bussDocumentLibraryId.split(',')[index]
})
})
}
this.formInline = { ...this.formInline }
} else {
this.formInline = {}
@@ -466,9 +489,6 @@
this.formInline = { ...this.formInline }
},
onEditorChange({ quill, html, text }) {
console.log(html)
console.log(quill)
console.log(text)
this.formInline.content = html
},
handleInput(value) {
@@ -499,10 +519,34 @@
}
},
listAddModelForm(id, number) {
this.formInline.standNumber = number
this.formInline.standNumber = number.split(',')
this.formInline.bussDocumentLibraryId = id
this.dictOptions = []
if (number) {
number.split(',').forEach((res, index) => {
this.dictOptions.push({
standNumber: res,
id: id.split(',')[index]
})
})
}
this.formInline = { ...this.formInline }
},
onChange(value) {
console.log(value)
let content = []
let standNumber = []
value.forEach(res => {
this.dictOptions.forEach(val => {
if (res == val.standNumber) {
content.push(val.id)
standNumber.push(val.standNumber)
}
})
})
this.formInline.standNumber = standNumber
this.formInline.bussDocumentLibraryId = content.join(',')
},
clickButtonToUpload(item) {
this.$refs.uploadFile.perentHandleFunc()
this.$refs.uploadFile.visible = true
@@ -531,6 +575,9 @@
this.$refs.ruleForm.validate(valid => {
if (valid) {
let formInline = JSON.parse(JSON.stringify(this.formInline))
if (formInline.standNumber && formInline.standNumber.length > 0){
formInline.standNumber = formInline.standNumber.join(',')
}
this.loading = true
this.confirmLoading = true
let url = ''
@@ -575,7 +622,11 @@
}
}
</script>
<style>
.itemModelStand .ant-form-item-children .ant-select-dropdown--multiple {
display: none !important;
}
</style>
<style scoped lang="less">
@import '~@assets/less/common.less';
@@ -702,7 +753,6 @@
.box-button-index {
height: 38px;
margin-top: 2px;
width: 120px;
overflow: hidden;
padding: 0 0;
@@ -755,4 +805,12 @@
height: 38px;
margin-right: 10px;
}
.itemOption {
display: inline-block;
width: 100%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
}
</style>
@@ -111,6 +111,11 @@
}
},
mounted() {
let serial_number = localStorage.getItem('serial_number')
if (serial_number) {
this.searchStr = serial_number
localStorage.removeItem('serial_number')
}
this.getList()
this.replacePage()
},
@@ -406,7 +411,8 @@
text-overflow: ellipsis;
word-break: break-all;
}
.box-content-left .ant-tag-checkable-checked{
.box-content-left .ant-tag-checkable-checked {
border: 1px #21c9cc solid;
color: #21c9cc;
}
@@ -14,6 +14,26 @@
:placeholder="$t('monthSelection')"/>
</div>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('exportStatus')">
<span>{{$t('exportStatus')}}</span>
</div>
<a-select :placeholder="$t('PleaseSelect')+$t('exportStatus')"
class="box-input"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
allowClear
v-model="queryParam.exportState">
<a-select-option v-for="(item, key) in exportStatusList"
:key="key"
:value="item.value">
<span style="display: inline-block;width: 100%" :title=" item.name">
{{ item.name }}
</span>
</a-select-option>
</a-select>
</div>
</a-col>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
<a-button class="box-button" type="primary" @click="searchQuery">{{$t('query')}}</a-button>
@@ -54,6 +74,7 @@
:columns="columns"
>
<span slot="operation" slot-scope="text,record">
<a class="text-operation" @click="copyClick(record)">{{$t('copy')}}</a>
<a class="text-operation" @click="viewClick(record)">{{$t('view')}}</a>
<a class="text-operation" @click="edit(record)">{{$t('edit')}}</a>
<a class="text-operation" @click="deleteLib(record)">{{$t('deleteLib')}}</a>
@@ -97,6 +118,16 @@
list: '/report/lawsMonthlyReportWriteEO/page',
exportData: '/report/lawsMonthlyReportWriteEO/exportMonthlyReport'
},
exportStatusList:[
{
value:'2',
name:this.$t('hasBeenExport')
},
{
value:'1',
name:this.$t('notExport')
}
],
loading: false,
dataSource: [],
selectedRowKeys: [],
@@ -151,7 +182,7 @@
title: this.$t('operation'),
align: 'center',
fixed: 'right',
width: 180,
width: 190,
scopedSlots: { customRender: 'operation' }
}
]
@@ -162,6 +193,26 @@
this.getList()
},
methods: {
copyClick(row){
let _this = this
this.$confirm({
content: _this.$t('ConfirmReplication'),
onOk() {
let query = JSON.parse(JSON.stringify(row))
delete query.id
delete query.exportState
delete query.exportStateName
postAction('/report/lawsMonthlyReportWriteEO/add', query).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.getList()
} else {
_this.$message.warning(res.message)
}
})
}
})
},
dateChange(item) {
this.queryParam[item.db_field_name] = this.queryParam[item.db_field_name] ? moment(this.queryParam[item.db_field_name]).format('YYYY-MM') : ''
this.queryParam = { ...this.queryParam }
@@ -216,7 +216,8 @@
} else if (fileSuffix === '.docx' || fileSuffix === '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + item.fileId + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix === '.xlsx' || fileSuffix === '.xls') {
} else if (fileSuffix === '.xlsx' || fileSuffix === '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + item.fileId + fileSuffix)
window.open(url, '_blank')
} else {
@@ -1,20 +1,93 @@
<template>
<div class="box" style="margin-bottom: 20px">
<div style="margin-bottom: 10px;text-align: right">
<div @click="handleModule" class="operator-text">
<a-icon type="download"/>
{{$t('templateDownload')}}
<a-modal
:title="$t('importLocalDisassemblyOrder')"
:width="700"
:visible="visible"
:confirm-loading="confirmLoading"
:maskClosable="false"
@cancel="visible = false"
>
<template slot="footer">
<a-button key="back" @click="visible = false">
{{$t('cancel')}}
</a-button>
</template>
<div style="margin-bottom: 10px;text-align: center">
<div @click="handleModule" class="operator-text">
<a-icon type="download"/>
{{$t('templateDownload')}}
</div>
<div class="operator-text">
<ImportFile :url="url" :isTrue="true" :accept="'.xls'"
@getList="getPersonnelList"/>
</div>
</div>
<div class="operator-text">
<ImportFile :url="url" :isTrue="true" :accept="'.xls'"
@getList="getPersonnelList"/>
</a-modal>
<a-modal
:title="$t('BatchSetting')"
:width="700"
:visible="visibleBatch"
:confirm-loading="confirmLoadingBatch"
:maskClosable="false"
@ok="handleOk"
@cancel="handleCancel"
>
<a-form-model :model="formInline" class="formAdd" ref="ruleForm">
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('evaluationMethod')">{{$t('evaluationMethod')}}</span>
</div>
<a-form-model-item class="itemModel-multi">
<a-tree-select
tree-node-filter-prop="title"
v-model="formInline.evaluationMethods"
:maxTagCount="1"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
class="box-input-index"
:tree-data="gatherResultList"
tree-checkable
:placeholder="$t('PleaseSelect')+$t('evaluationMethod')"
/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
:title="$t('Assessor')">{{$t('Assessor')}}</span>
</div>
<a-form-model-item class="itemModel">
<PersonnelSelection class="box-input-index"
:personneQuery="formInline"
:query="{db_field_name:'evaluatorIds',db_field_txt:$t('Assessor')}"
:isInput="true"
@change="evaluationMethodChange"
v-model="formInline.evaluatorIdsName"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model>
</a-modal>
<div style="margin-bottom: 10px;text-align: right">
<div @click="BatchSettingClick" class="operator-text">
<a-icon type="setting"/>
{{$t('BatchSetting')}}
</div>
</div>
<a-table
:columns="columns"
:scroll="{x: '100%'}"
:data-source="dataList"
rowKey="itemId"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:pagination="false"
:loading="loading">
<div slot="clauseContent" slot-scope="text,result">
@@ -70,6 +143,8 @@
url: {
importZipUrl: '/lawsTechnologyEvaluation/lawsTechnologyEvaluationEO/importItemExcel'
},
selectedRowKeys: [],
formInline: {},
columns: [
{
title: this.$t('clauseNo'),
@@ -109,15 +184,55 @@
scopedSlots: { customRender: 'operation' }
}
],
confirmLoading: false,
dataList: [],
visible: false,
ImportFileData: [],
dataListData: [],
loading: false
loading: false,
visibleBatch: false,
confirmLoadingBatch: false
}
},
mounted() {
},
methods: {
openData() {
this.visible = true
},
BatchSettingClick() {
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
this.visibleBatch = true
this.formInline = {}
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
},
handleOk() {
this.dataList.forEach(res => {
this.selectedRowKeys.forEach(val => {
if (res.itemId == val) {
if (this.formInline.evaluationMethods && this.formInline.evaluationMethods.length > 0) {
this.$set(res, 'evaluationMethods', this.formInline.evaluationMethods)
}
if (this.formInline.evaluatorIds) {
this.$set(res, 'evaluatorIds', this.formInline.evaluatorIds)
this.$set(res, 'evaluatorIdsName', this.formInline.evaluatorIdsName)
}
}
})
})
this.dataList = [...this.dataList]
this.$message.success(this.$t('OperationSuccessful'))
this.selectedRowKeys = []
this.visibleBatch = false
},
handleCancel() {
this.visibleBatch = false
},
onSelectChange(value) {
this.selectedRowKeys = value
},
deleteData(item) {
this.dataList = this.dataList.filter(res => {
return res.itemId != item.itemId
@@ -134,6 +249,10 @@
this.dataList[index][value] = id
this.dataList = [...this.dataList]
},
evaluationMethodChange(value, id) {
this.formInline[value] = id
this.formInline = { ...this.formInline }
},
getData(value) {
this.dataListData = []
if (value && value.length > 0) {
@@ -180,7 +299,6 @@
this.$message.warning(this.$t('pleaseDecompositionStandardOrder'))
return
}
callback && callback(dataList)
},
handleModule() {
@@ -228,4 +346,38 @@
white-space: nowrap;
}
.box-title-text {
line-height: 1.4;
display: flex;
}
.title-text {
width: 84px;
text-align: right;
display: inline-block;
font-weight: 500;
font-size: 14px;
margin-right: 16px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
height: 42px;
line-height: 42px;
}
.box-input-index {
display: inline-block;
height: 38px;
width: 100%;
}
.itemModel {
width: calc(100% - 130px);
display: inline-block;
margin-top: 2px;
}
.title-text-text {
margin-top: 9px;
}
</style>
@@ -13,12 +13,12 @@
<div class="detail-content">
<div class="content-box">
<div class="header-text">
{{$t('processBackground')}}
<a-button class="box-button-top" type="primary" @click="CurrentStandard">
{{$t('initiateProcessForCurrentStandard')}}
{{$t('initiateSupplementaryProcess')}}
</a-button>
</div>
<div class="processBackground-text">
<span style="font-size: 16px;font-weight: 400;color: #000F16;"> {{$t('processBackground')}}:</span>
{{$route.query.processBackground}}
</div>
<div class="header-text">
@@ -179,6 +179,13 @@
ellipsis: true,
width: 160
},
{
title: this.$t('complianceResults'),
dataIndex: 'complianceResultName',
align: 'center',
ellipsis: true,
width: 160
},
{
title: this.$t('nameTechnicalDocument'),
dataIndex: 'technicalFileName',
@@ -193,13 +200,6 @@
ellipsis: true,
width: 260
},
{
title: this.$t('complianceResults'),
dataIndex: 'complianceResultName',
align: 'center',
ellipsis: true,
width: 160
},
{
title: this.$t('opinion'),
dataIndex: 'opinion',
@@ -237,7 +237,7 @@
processBackground: this.$route.query.processBackground || '',
remark: this.$route.query.remark || '',
standId: this.$route.query.standId,
lawsTechnologyEvaluationId:this.$route.query.lawsTechnologyEvaluationId
lawsTechnologyEvaluationId: this.$route.query.lawsTechnologyEvaluationId
}
let newUrl = this.$router.resolve({
path: '/evaluationInitiationProcess',
@@ -423,13 +423,14 @@
text-justify: inter-ideograph;
word-break: break-all
}
::v-deep .ant-table-row:first-child {
background: #fff!important;
background: #fff !important;
opacity: 0.9;
}
::v-deep .ant-table-body {
background: transparent!important;
background: transparent !important;
}
</style>
<style>
@@ -13,12 +13,12 @@
<div class="detail-content">
<div class="content-box">
<div class="header-text">
{{$t('processBackground')}}
<a-button class="box-button-top" type="primary" @click="CurrentStandard">
{{$t('initiateProcessForCurrentStandard')}}
{{$t('initiateSupplementaryProcess')}}
</a-button>
</div>
<div class="processBackground-text">
<span style="font-size: 16px;font-weight: 400;color: #000F16;"> {{$t('processBackground')}}:</span>
{{$route.query.processBackground}}
</div>
<!-- <div class="header-text">-->
@@ -22,6 +22,12 @@
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange ,columnTitle:' '}"
:columns="columns"
>
<span slot="whetherTheDisassemblySheetIncluded" slot-scope="text,record">
{{record.sarFileSplitInfoList && record.sarFileSplitInfoList.length > 0 ? '是':'否'}}
</span>
<span slot="whetherTheDisassemblySheetIncludedTitle" :title="$t('whetherTheDisassemblySheetIncluded')">
{{$t('whetherTheDisassemblySheetIncluded')}}
</span>
</a-table>
<div class="page" v-if="dataSource && dataSource.length > 0">
<a-pagination
@@ -37,8 +43,29 @@
</div>
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
<a-row :gutter="24" v-if="whetherDisplay">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('standardDecompositionDocument')">{{$t('standardDecompositionDocument')}}</span>
</div>
<a-form-model-item class="itemModel" prop="whetherTobring">
<a-radio-group class="box-input"
v-model="formInline.whetherTobring" @change="onChange">
<a-radio :value="'1'">
{{$t('yes')}}
</a-radio>
<a-radio :value="'2'">
{{$t('notOnlyRz')}}
</a-radio>
</a-radio-group>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24" style="margin-bottom: 10px">
<a-col :span="24">
<a-col :span="16">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('selectedStandard')">{{$t('selectedStandard')}}</span>
@@ -49,16 +76,21 @@
{{selectedRowKeysRecord[0] ?
selectedRowKeysRecord[0].serialNumber+'-'+selectedRowKeysRecord[0].title:''}}
</div>
<div class="title-text-right" v-if="isTrue">
<div class="title-text-right title-text-right-index" v-if="isTrue">
<span :title="$t('standardDecompositionDocument')" @click="standardDecompositionDocumentClick">
{{$t('standardDecompositionDocument')}}
</span>
</div>
<div class="title-text-right" v-if="isTrue">
<span :title="$t('importLocalDisassemblyOrder')" @click="importLocalDisassemblyOrderClick">
{{$t('importLocalDisassemblyOrder')}}
</span>
</div>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<a-col :span="8">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
@@ -76,7 +108,7 @@
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<a-col :span="8">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text"
@@ -178,6 +210,7 @@
<JLoading :loading="JLoading">{{this.$t('pleaseWaitWhileRunning')}}</JLoading>
<uploadFile ref="uploadFile" @uploadSuccess="uploadSuccess"/>
<standardDecompositionSheet ref="standardDecompositionSheetRef"
:gatherResultList="gatherResultList"
@standardDecompositionSheetForm="standardDecompositionSheetForm"/>
</div>
</template>
@@ -234,6 +267,13 @@
trigger: 'change'
}
],
whetherTobring: [
{
required: true,
message: this.$t('standardDecompositionDocument') + this.$t('cannotEmpty'),
trigger: 'change'
}
],
evaluatorsName: [
{
required: true,
@@ -304,6 +344,15 @@
ellipsis: true,
width: 170,
dataIndex: 'corresponding_standard'
},
{
align: 'center',
ellipsis: true,
width: 170,
scopedSlots: {
customRender: 'whetherTheDisassemblySheetIncluded',
title: 'whetherTheDisassemblySheetIncludedTitle'
}
}
]
}
@@ -312,9 +361,13 @@
document.title = this.$t('regulatoryEngineer') + this.$t('initiatingProcess')
this.getEvaluationMethodTree()
if (this.$route.query.whetherTobring == '1') {
this.formInline.whetherTobring = '1'
this.formInline = { ...this.formInline }
this.isTrue = true
} else {
this.isTrue = false
this.formInline.whetherTobring = '2'
this.formInline = { ...this.formInline }
}
if (this.$route.query.firstInitiation == '1') {
this.whetherDisplay = true
@@ -400,7 +453,7 @@
}
this.loading = true
let url = ''
if (this.$route.query.whetherTobring == '1') {
if (this.isTrue) {
url = this.url.addModelListOne
} else {
url = this.url.addModelList
@@ -601,6 +654,12 @@
this.$message.warning(this.$t('operationFailed'))
}
})
},
onChange(event) {
this.isTrue = event.target.value == '1' ? true : false
},
importLocalDisassemblyOrderClick() {
this.$refs.TermInformationRef.openData()
}
}
}
@@ -634,7 +693,7 @@
}
.title-text {
width: 88px;
width: 118px;
text-align: right;
display: inline-block;
font-weight: 500;
@@ -676,7 +735,7 @@
.button-text {
height: 38px;
width: calc(100% - 100px);
width: calc(100%);
line-height: 38px;
background: #fff;
border: 1px #00B3BE solid;
@@ -690,7 +749,7 @@
.title-text-content {
display: inline-block;
width: calc(100% - 334px);
width: calc(100% - 530px);
text-align: center;
border: 1px solid #d9d9d9;
line-height: 38px;
@@ -722,9 +781,14 @@
cursor: pointer;
}
.title-text-right-index {
border-bottom-right-radius: 0;
border-top-right-radius: 0;
}
.title-text-content-one {
border-bottom-right-radius: 5px;
border-top-right-radius: 5px;
width: calc(100% - 128px);
width: calc(100% - 132px);
}
</style>
@@ -32,6 +32,40 @@
</a-select>
</div>
</a-col>
<a-col :md="12" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('technicalField')">
<span>{{$t('technicalField')}}</span>
</div>
<a-tree-select
tree-node-filter-prop="title"
v-model="queryParam.technology_territory"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
class="box-input"
style="width: 100%"
:tree-data="CategoryTreeList"
tree-checkable
:placeholder="$t('PleaseSelect')+$t('technicalField')"
/>
</div>
</a-col>
<a-col :md="12" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('informationCategory')">
<span>{{$t('informationCategory')}}</span>
</div>
<j-dict-select-tag class="box-input" v-model="queryParam.information_category"
:placeholder="$t('PleaseSelect')+$t('informationCategory')"
:type="'select'"
:triggerChange="false" :dictCode="'information_category'"/>
</div>
</a-col>
<span style="float: right;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="12" :sm="8">
<a-button class="box-button" type="primary" @click="searchQuery">{{$t('query')}}</a-button>
<a-button class="box-button" style="margin-left: 8px" @click="searchReset">{{$t('reset')}}</a-button>
</a-col>
</span>
<!-- <span style="float: right;overflow: hidden;margin-top: 4px" class="table-page-search-submitButtons">-->
<!-- <a-col :md="12" :sm="24">-->
<!-- <div @click="handleModule" class="operator-text">-->
@@ -94,6 +128,7 @@
components: {
ImportFile
},
props: ['gatherResultList'],
data() {
return {
visible: false,
@@ -101,6 +136,7 @@
confirmLoading: false,
selectedRowKeys: [],
sarFileSplitInfoList: [],
informationCategoryList:[],
url: {
list: '/split/sarFileSplitItems/getSplitItemsByPage'
},
@@ -151,10 +187,23 @@
queryConditionVOList: [],
info_id: '',
selectedRowKeysData: [],
standardList: ''
standardList: '',
CategoryTreeList: []
}
},
mounted() {
this.getSysCategoryTree()
},
methods: {
getSysCategoryTree() {
getAction('/sys/category/getSysCategoryTree', {}).then((res) => {
if (res.success) {
this.CategoryTreeList = res.result
} else {
this.CategoryTreeList = []
}
})
},
handleModule() {
},
@@ -176,6 +225,7 @@
this.standData = row
this.sarFileSplitInfoList = this.standData.sarFileSplitInfoList || []
this.sarFileSplitInfoList = [...this.sarFileSplitInfoList]
this.queryParam = {}
this.queryParam.info_id = this.sarFileSplitInfoList && this.sarFileSplitInfoList.length > 0 ? this.sarFileSplitInfoList[0].id : ''
this.visible = true
if (this.queryParam.info_id) {
@@ -219,10 +269,15 @@
replacePage() {
let pageNo = JSON.parse(JSON.stringify(this.pageNo))
let pageSize = JSON.parse(JSON.stringify(this.pageSize))
let queryParam = JSON.parse(JSON.stringify(this.queryParam))
if (queryParam.technology_territory && queryParam.technology_territory.length > 0){
queryParam.technology_territory = queryParam.technology_territory.join(',')
}
let query = {
pageNo: pageNo + '',
pageSize: pageSize + '',
info_id: this.queryParam.info_id,
technology_territory:queryParam.technology_territory,
menu_id: ''
}
this.loading = true
@@ -102,8 +102,9 @@
>
<!-- -->
<span slot="operation" slot-scope="text,record">
<a class="text-operation" @click="viewProcessClick(record)">{{$t('viewProcess')}}</a>
<a class="text-operation" v-if="record.flowStatus == 'Completed'"
<!-- <a class="text-operation" @click="viewProcessClick(record)">{{$t('viewProcess')}}</a>-->
<!-- v-if="record.flowStatus == 'Completed'"-->
<a class="text-operation"
@click="evaluationResultsClick(record)">{{$t('evaluationResults')}}</a>
<a class="text-operation"
v-if="(record.flowStatus == 'Completed' && userInfoQuery.username == record.createBy) || administrators"
@@ -286,7 +287,7 @@
title: this.$t('operation'),
align: 'center',
fixed: 'right',
width: 320,
width: 220,
scopedSlots: { customRender: 'operation' }
}
],
@@ -428,24 +429,26 @@
this.$refs.ruleForm.validate(valid => {
if (valid) {
this.visible = false
this.formInline.firstInitiation = '1'
let newUrl = this.$router.resolve({
path: '/evaluationInitiationProcess',
query: this.formInline
})
// let newUrl = this.$router.resolve({
// path: '/evaluationProcess'
// })
window.open(newUrl.href, '_blank')
}
})
},
initiatingProcessClick() {
this.visible = true
this.formInline = {}
this.$nextTick(() => {
this.$refs.ruleForm.clearValidate()
// this.visible = true
// this.formInline = {}
// this.$nextTick(() => {
// this.$refs.ruleForm.clearValidate()
// })
this.formInline.firstInitiation = '1'
this.formInline.whetherTobring = '1'
let newUrl = this.$router.resolve({
path: '/evaluationInitiationProcess',
query: this.formInline
})
// let newUrl = this.$router.resolve({
// path: '/evaluationProcess'
// })
window.open(newUrl.href, '_blank')
},
viewProcessClick(row) {
this.$refs.processInformationRef.getData(JSON.parse(JSON.stringify(row)))
@@ -74,7 +74,8 @@
} else if (fileSuffix === '.docx' || fileSuffix === '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + item.fileId + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix === '.xlsx' || fileSuffix === '.xls') {
} else if (fileSuffix === '.xlsx' || fileSuffix === '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + item.fileId + fileSuffix)
window.open(url, '_blank')
} else {
@@ -251,7 +251,8 @@
<span slot="fileOperation" slot-scope="record">
<a class="text" @click="pdfPreview(record)"
:disabled="record.fileSuffix == '.pdf' || record.fileSuffix == '.docx' || record.fileSuffix == '.doc'
|| record.fileSuffix == '.xlsx' || record.fileSuffix == '.xls' ? false : true">
|| record.fileSuffix == '.jpg' || record.fileSuffix == '.png' || record.fileSuffix == '.gif'|| record.fileSuffix == '.jpeg'
|| record.fileSuffix == '.xlsx' || record.fileSuffix == '.xls' ? false : true">
{{$t('See')}}
</a>
<a class="text" @click="download(record)">
@@ -395,6 +396,15 @@
window.open(newUrl.href, '_blank')
},
KnowledgeDatabaseClick() {
let serial_number = ''
if (this.detailList.length > 0) {
this.detailList[0][this.$t('essentialInformation')].forEach(res => {
if (res.db_field_name == 'serial_number') {
serial_number = res.value
}
})
}
localStorage.setItem('serial_number',serial_number)
let newUrl = this.$router.resolve({
path: '/problemknowledgeBase',
})
@@ -452,7 +462,8 @@
} else if (fileSuffix == '.docx' || fileSuffix == '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else {
@@ -30,7 +30,8 @@
<div class="detail-content" style="padding-bottom: 20px">
<div style="width: 100%;height: auto;overflow: hidden">
<div class="detail-content-left">
<div class="detail-content-left-header" :title="resultData.serialNumberLeft + resultData.fileNameLeft">
<div class="detail-content-left-header"
:title="resultData.serialNumberLeft + resultData.fileNameLeft">
{{this.resultData.serialNumberLeft}}&nbsp;
{{this.resultData.fileNameLeft}}
</div>
@@ -71,6 +71,7 @@
{{$t('selectedStandard')}}
</span>
<span class="box-button-standard-right"
@click="selecLeftClick(selectedRowKeysLeftRecord[0])"
:title="selectedRowKeysLeftRecord[0]?selectedRowKeysLeftRecord[0].serialNumber+' '+selectedRowKeysLeftRecord[0].fileName:$t('noComparisonDocumentSelected')"
:class="{'box-button-standard-right-color':selectedRowKeysLeftRecord[0]}">
{{selectedRowKeysLeftRecord[0]?selectedRowKeysLeftRecord[0].serialNumber+' '+selectedRowKeysLeftRecord[0].fileName:$t('noComparisonDocumentSelected')}}
@@ -136,6 +137,7 @@
{{$t('selectedStandard')}}
</span>
<span class="box-button-standard-right"
@click="selecLeftClick(selectedRowKeysRightRecord[0])"
:title="selectedRowKeysRightRecord[0]?selectedRowKeysRightRecord[0].serialNumber+' '+selectedRowKeysRightRecord[0].fileName:$t('noComparisonDocumentSelected')"
:class="{'box-button-standard-right-color':selectedRowKeysRightRecord[0]}">
{{selectedRowKeysRightRecord[0]?selectedRowKeysRightRecord[0].serialNumber+' '+selectedRowKeysRightRecord[0].fileName:$t('noComparisonDocumentSelected')}}
@@ -169,7 +171,9 @@
</template>
<script>
import { getAction, postAction, deleteAction } from '@/api/manage'
import { getAction, postAction, deleteAction ,downloadFile} from '@/api/manage'
import { Base64 } from 'js-base64'
import { mapGetters } from 'vuex'
export default {
name: 'initiateDocumentComparison',
@@ -191,6 +195,7 @@
totalRight: 0,
pageNoRight: 1,
formInline: {},
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
rules: {
remark: [
{
@@ -248,6 +253,7 @@
document.title = this.$t('DocumentComparison') + ' - ' + this.$t('initiateComparison')
},
methods: {
...mapGetters(['userInfo']),
Fallback() {
this.$router.push({
path: '/documentComparison'
@@ -371,6 +377,26 @@
}
})
},
selecLeftClick(fileQuery){
if (fileQuery){
let fileName = fileQuery.fileName
let index1 = fileName.lastIndexOf('.')
let index2 = fileName.length
let fileSuffix = fileName.substring(index1, index2)
if (fileSuffix == '.pdf') {
window.open('/pdf/web/viewer.html?file=' + encodeURIComponent('/jero-boot/sys/common/pdf/viewFile?id=' + fileQuery.fileId+'&userName='+this.userInfo().username))
} else if (fileSuffix == '.docx' || fileSuffix == '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.fileId + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.fileId + fileSuffix)
window.open(url, '_blank')
} else {
downloadFile('/sys/common/downLoadFile', fileQuery.fileName, { id: fileQuery.fileId })
}
}
},
getListRight() {
let queryParam = JSON.parse(JSON.stringify(this.queryParamRight))
Object.keys(queryParam).forEach(val => {
@@ -580,5 +606,6 @@
.box-button-standard-right-color {
color: #040B29;
cursor: pointer;
}
</style>
@@ -150,20 +150,20 @@
scopedSlots: { customRender: 'serialNumberLeft' }
},
{
title: this.$t('TextStatus'),
title: this.$t('TextStatus') + 1,
align: 'center',
width: 200,
ellipsis: true,
dataIndex: 'fileTypeLeft'
},
{
title: this.$t('fileName'),
align: 'center',
width: 270,
ellipsis: true,
dataIndex: 'fileNameLeft',
scopedSlots: { customRender: 'fileNameLeft' }
},
// {
// title: this.$t('fileName'),
// align: 'center',
// width: 270,
// ellipsis: true,
// dataIndex: 'fileNameLeft',
// scopedSlots: { customRender: 'fileNameLeft' }
// },
{
title: this.$t('standard') + 2,
align: 'center',
@@ -181,20 +181,20 @@
width: 170
},
{
title: this.$t('TextStatus'),
title: this.$t('TextStatus') + 2,
align: 'center',
width: 200,
ellipsis: true,
dataIndex: 'fileTypeRight'
},
{
title: this.$t('fileName'),
align: 'center',
width: 270,
ellipsis: true,
dataIndex: 'fileNameRight',
scopedSlots: { customRender: 'fileNameRight' }
},
// {
// title: this.$t('fileName'),
// align: 'center',
// width: 270,
// ellipsis: true,
// dataIndex: 'fileNameRight',
// scopedSlots: { customRender: 'fileNameRight' }
// },
{
title: this.$t('releaseSituation'),
align: 'center',
@@ -202,6 +202,13 @@
ellipsis: true,
dataIndex: 'releaseStateTitle'
},
{
title: this.$t('creater'),
align: 'center',
width: 170,
ellipsis: true,
dataIndex: 'createBy'
},
{
title: this.$t('remarks'),
align: 'center',
@@ -415,7 +422,8 @@
} else if (fileSuffix === '.docx' || fileSuffix === '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + row.fileIdLeft + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix === '.xlsx' || fileSuffix === '.xls') {
} else if (fileSuffix === '.xlsx' || fileSuffix === '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + row.fileIdLeft + fileSuffix)
window.open(url, '_blank')
} else {
@@ -432,7 +440,8 @@
} else if (fileSuffix === '.docx' || fileSuffix === '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + row.fileIdRight + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix === '.xlsx' || fileSuffix === '.xls') {
} else if (fileSuffix === '.xlsx' || fileSuffix === '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + row.fileIdRight + fileSuffix)
window.open(url, '_blank')
} else {
@@ -31,10 +31,11 @@
<a-col :span="24">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('standard')">{{$t('standard')}}</span>
</div>
<a-form-model-item class="itemModel" prop="serialNumber">
<!-- prop="serialNumber"-->
<a-form-model-item class="itemModel" >
<a-input class="box-input"
readonly
v-model="formInline.serialNumber"
@@ -696,7 +696,8 @@
} else if (fileSuffix == '.docx' || fileSuffix == '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else {
@@ -129,7 +129,8 @@
} else if (fileSuffix == '.docx' || fileSuffix == '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + item.file_id + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + item.file_id + fileSuffix)
window.open(url, '_blank')
}
@@ -150,7 +151,8 @@
} else if (fileSuffix == '.docx' || fileSuffix == '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id.slice(0, 32) + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id.slice(0, 32) + fileSuffix)
window.open(url, '_blank')
} else {
@@ -267,7 +267,8 @@
} else if (fileSuffix == '.docx' || fileSuffix == '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else {
@@ -170,7 +170,8 @@
} else if (fileSuffix == '.docx' || fileSuffix == '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id.slice(0, 32) + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id.slice(0, 32) + fileSuffix)
window.open(url, '_blank')
} else {
@@ -238,7 +239,8 @@
} else if (fileSuffix == '.docx' || fileSuffix == '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + item.file_id + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + item.file_id + fileSuffix)
window.open(url, '_blank')
}
@@ -651,8 +651,8 @@
],
remark: [
{
max: 300,
message: this.$t('remarks') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
max: 1000,
message: this.$t('remarks') + this.$t('cannotExceed') + 1000 + this.$t('Characters'),
trigger: 'blur'
}
],
@@ -238,6 +238,7 @@
>
<span slot="fileOperation" slot-scope="record">
<a class="text" @click="pdfPreview(record)" :disabled="record.fileSuffix == '.pdf' || record.fileSuffix == '.docx'
|| record.fileSuffix == '.jpg' || record.fileSuffix == '.png' || record.fileSuffix == '.gif'|| record.fileSuffix == '.jpeg'
|| record.fileSuffix == '.doc' || record.fileSuffix == '.xlsx' || record.fileSuffix == '.xls' ? false : true">
{{$t('See')}}
</a>
@@ -829,7 +830,8 @@
} else if (fileSuffix == '.docx' || fileSuffix == '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else {
@@ -846,7 +848,8 @@
} else if (fileSuffix == '.docx' || fileSuffix == '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + id + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + id + fileSuffix)
window.open(url, '_blank')
} else {
@@ -18,7 +18,7 @@
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text"
:title="$t('fileName')">{{$t('fileName')}}</span>
:title="$t('file')">{{$t('file')}}</span>
</div>
<a-form-model-item class="itemModel" prop="fileKey">
<a-button type="primary" class="button-text"
+4 -4
View File
@@ -61,10 +61,10 @@
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('fileName')">
<span>{{ $t('fileName') }}</span>
<div class="title-text" :title="$t('file')">
<span>{{ $t('file') }}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('fileName')"
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('file')"
v-model="queryParams.fileName"></a-input>
</div>
</a-col>
@@ -355,7 +355,7 @@ export default {
],
columns: [
{
title: this.$t('fileName'),
title: this.$t('file'),
align: 'center',
dataIndex: 'fileName',
scopedSlots: { customRender: 'fileName' },
@@ -95,6 +95,21 @@
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="24">
<div class="box-title-text">
<div class="title-text" :title="$t('exportFileName')">
<span class="Required">*</span>
<span>{{$t('exportFileName')}}</span>
</div>
<a-form-model-item class="itemModel" prop="exportName">
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('exportFileName')"
v-model.trim="formInline.exportName"></a-input>
</a-form-model-item>
</div>
</a-col>
</a-row>
</a-form-model>
</a-form>
</a-spin>
@@ -141,6 +156,14 @@ export default {
trigger: 'blur'
}
],
exportName:[
{
max: 70,
message: this.$t('exportFileName') + this.$t('cannotExceed') + 70 + this.$t('Characters'),
trigger: 'blur'
},
{ required: true, message: this.$t('PleaseEnter')+this.$t('exportFileName'), trigger: 'blur' },
],
certCategory:[
{ required: true, message: this.$t('PleaseEnter')+this.$t('certificationCategory'), trigger: 'change' },
// { min:1, max: 50, message: this.$t('cantExeed')+'50'+this.$t('MergeSeparator'), trigger: 'blur' },
@@ -289,12 +312,12 @@ export default {
query.certCategoryName = this.contentListStart
}
query.paramsManifestId = this.$route.query.id
let long = localStorage.getItem('language')
if (long && long === 'zh-cn') {
query.exportName = '常规导出'
} else if (long && long === 'en-us') {
query.exportName = 'Normal'
}
// let long = localStorage.getItem('language')
// if (long && long === 'zh-cn') {
// query.exportName = '常规导出'
// } else if (long && long === 'en-us') {
// query.exportName = 'Normal'
// }
this.confirmLoading = true
downloadFile('report/detail/exportNormal', query.exportName+'.zip', query)
this.confirmLoading = false
@@ -377,7 +377,7 @@ export default {
rules: {
nioNumber:[
{ required: true, message: this.$t('PleaseEnter')+this.$t('NiONumber'), trigger: 'blur' },
{ min:1, max: 15, message: this.$t('cantExeed')+'15'+this.$t('characters'), trigger: 'blur' },
{ min:1, max: 20, message: this.$t('cantExeed')+'20'+this.$t('characters'), trigger: 'blur' },
{
pattern: /^[0-9a-zA-Z-/ ]{1,}$/,
message: this.$t('onlyThree'),
@@ -392,7 +392,7 @@ export default {
],
paramsName: [
{ required: true, message: this.$t('pleaseSelect')+this.$t('Paraname'), trigger: 'blur' },
{ min:1, max: 100, message: this.$t('cantExeed')+'100'+this.$t('characters'), trigger: 'blur' },
{ min:1, max: 350, message: this.$t('cantExeed')+'350'+this.$t('characters'), trigger: 'blur' },
],
technologyTerritory: [
{ required: true, message: this.$t('pleaseSelect')+this.$t('technicalField'), trigger: 'change' },
@@ -689,8 +689,8 @@ export default {
this.$message.warning(this.$t('standard')+this.$t('cannotEmpty'))
falg = 0
return
} else if(item.paramsNumber.length > 15){
this.$message.warning(this.$t('standard')+this.$t('cantExeed')+'15'+this.$t('Characters'))
} else if(item.paramsNumber.length > 20){
this.$message.warning(this.$t('standard')+this.$t('cantExeed')+'20'+this.$t('Characters'))
falg = 0
return
} else if(item.paramsNumber.match(reg) === null) {
@@ -703,8 +703,8 @@ export default {
this.$message.warning(this.$t('ParameterName')+this.$t('cannotEmpty'))
falg = 0
return
} else if(item.paramsName.length > 100){
this.$message.warning(this.$t('ParameterName')+this.$t('cantExeed')+'100'+this.$t('Characters'))
} else if(item.paramsName.length > 350){
this.$message.warning(this.$t('ParameterName')+this.$t('cantExeed')+'350'+this.$t('Characters'))
falg = 0
return
}
@@ -164,6 +164,13 @@
width: 180,
ellipsis: true
},
{
title: this.$t('complianceResults'),
dataIndex: 'complianceResult',
align: 'center',
width: 180,
scopedSlots: { customRender: 'complianceResults' }
},
{
title: this.$t('nameTechnicalDocument'),
dataIndex: 'technicalFileName',
@@ -192,13 +199,6 @@
width: 180,
scopedSlots: { customRender: 'enclosure' }
},
{
title: this.$t('complianceResults'),
dataIndex: 'complianceResult',
align: 'center',
width: 180,
scopedSlots: { customRender: 'complianceResults' }
},
{
title: this.$t('sponsorFeedback'),
dataIndex: 'sponsorFeedback',
@@ -237,6 +237,14 @@
width: 180,
ellipsis: true
},
{
title: this.$t('complianceResults'),
dataIndex: 'complianceResult',
align: 'center',
width: 180,
ellipsis: true,
scopedSlots: { customRender: 'Results' }
},
{
title: this.$t('nameTechnicalDocument'),
dataIndex: 'technicalFileName',
@@ -266,14 +274,6 @@
ellipsis: true,
scopedSlots: { customRender: 'accessoryFile' }
},
{
title: this.$t('complianceResults'),
dataIndex: 'complianceResult',
align: 'center',
width: 180,
ellipsis: true,
scopedSlots: { customRender: 'Results' }
},
{
title: this.$t('sponsorFeedback'),
dataIndex: 'sponsorFeedback',
@@ -55,21 +55,6 @@
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('reason')">{{$t('reason')}}</span>
</div>
<a-form-model-item class="itemModel"
:prop="'dataList.'+index+'.reason'"
:rules="[{max: 300,message: $t('reason') + $t('cannotExceed') + 300 + $t('Characters'),trigger: 'blur'
}]">
<a-textarea :placeholder="$t('PleaseEnter')+$t('reason')"
:disabled="disabled"
v-model="item.reason" :rows="4"/>
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
@@ -87,6 +72,42 @@
</a-form-model-item>
</div>
</a-col>
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="Required">*</span>
<span class="title-text-text" :title="$t('reason')">{{$t('reason')}}</span>
</div>
<a-form-model-item class="itemModel"
:prop="'dataList.'+index+'.reason'"
:rules="[
{ required: true, message: $t('reason') + $t('cannotEmpty'), trigger: 'blur'},
{max: 300,message: $t('reason') + $t('cannotExceed') + 300 + $t('Characters'),trigger: 'blur'
}]">
<a-textarea :placeholder="$t('PleaseEnter')+$t('reason')"
:disabled="disabled"
v-model="item.reason" :rows="4"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
<span class="title-text-text" :title="$t('clauseContent')">{{$t('clauseContent')}}</span>
</div>
<a-form-model-item class="itemModel"
:prop="'dataList.'+index+'.clauseContent'"
:rules="[
{max: 300,message: $t('clauseContent') + $t('cannotExceed') + 300 + $t('Characters'),trigger: 'blur'
}]">
<a-textarea :placeholder="$t('PleaseEnter')+$t('clauseContent')"
:disabled="disabled"
v-model="item.clauseContent" :rows="4"/>
</a-form-model-item>
</div>
</a-col>
</a-row>
</div>
</a-form-model>
@@ -17,10 +17,13 @@
@click="urlClick(queryForm[item.value])"
v-if="item.type == 1"
>{{queryForm[item.value]}}</span>
<span class="text-field-right text-field-right-url"
@click="standardClick(queryForm)"
v-else-if="item.type == '5'" :title="queryForm[item.value]"
>{{queryForm[item.value]}}</span>
<span class="text-field-right text-field-right-url"
@click="clickButtonToUpload(queryForm[item.value])"
v-if="item.type == 2 && queryForm[item.value]"
v-else-if="item.type == 2 && queryForm[item.value]"
>{{ $t('viewFile') }}</span>
<span class="text-field-right"
:title="queryForm[item.value]" v-else
@@ -84,6 +87,15 @@
window.open(val)
}
},
standardClick(row) {
let newUrl = this.$router.resolve({
path: '/docManage/library/detail',
query: {
id: row.standId
}
})
window.open(newUrl.href, '_blank')
},
clickButtonToUpload(item) {
this.$refs.viewFileModelRef.clickButtonToUpload(item)
}
@@ -41,7 +41,8 @@
<span slot="fileOperation" slot-scope="record">
<a class="text" @click="pdfPreview(record)"
:disabled="record.fileSuffix == '.pdf' || record.fileSuffix == '.docx' || record.fileSuffix == '.doc'
|| record.fileSuffix == '.xlsx' || record.fileSuffix == '.xls' ? false : true">
|| record.fileSuffix == '.jpg' || record.fileSuffix == '.png' || record.fileSuffix == '.gif'|| record.fileSuffix == '.jpeg'
|| record.fileSuffix == '.xlsx' || record.fileSuffix == '.xls' ? false : true">
{{$t('See')}}
</a>
<a class="text" @click="download(record)">
@@ -186,7 +187,8 @@
} else if (fileSuffix == '.docx' || fileSuffix == '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else {
@@ -203,7 +205,8 @@
} else if (fileSuffix == '.docx' || fileSuffix == '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + id + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + id + fileSuffix)
window.open(url, '_blank')
} else {
@@ -82,7 +82,8 @@
standardContent: [
{
title: this.$t('standard'),
value: 'serialNumber'
value: 'serialNumber',
type: 5
},
{
title: this.$t('title'),
@@ -114,7 +115,8 @@
evaluatorFeedback: [
{
title: this.$t('standard'),
value: 'serialNumber'
value: 'serialNumber',
type: 5
},
{
title: this.$t('title'),
@@ -7,7 +7,7 @@
</div>
<!-- <span class="flow-chart-title">{{ $route.params.processNumber }} {{ $route.params.processTypeName }} 流程图</span>-->
</div>
<div class="flow-group" style="margin-top: 30px;overflow: auto;text-align: center">
<div class="flow-group" style="overflow: auto;text-align: center">
<img :src="processStep" class="process-img">
</div>
</div>
@@ -81,7 +81,7 @@
.flow-chart {
width: 100%;
height: 45%;
height: 40%;
background: #F0F0F0;
border: 1px solid #CCCDCE;
border-bottom: none;
@@ -109,8 +109,7 @@
height: calc(~'100% - 30px');
.process-img {
//width: 100%;
//height: 100%;
height: 100%;
}
}
}
@@ -66,7 +66,8 @@
standardContentList: [
{
title: this.$t('standard'),
value: 'serial_number'
value: 'serial_number',
type: 5
},
{
title: this.$t('title'),
@@ -945,8 +945,8 @@
],
remark: [
{
max: 300,
message: this.$t('remarks') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
max: 1000,
message: this.$t('remarks') + this.$t('cannotExceed') + 1000 + this.$t('Characters'),
trigger: 'blur'
}
],
@@ -369,7 +369,8 @@
<span slot="fileOperation" slot-scope="record">
<a class="text" @click="pdfPreview(record)"
:disabled="record.fileSuffix == '.pdf' || record.fileSuffix == '.docx' || record.fileSuffix == '.doc'
|| record.fileSuffix == '.xlsx' || record.fileSuffix == '.xls' ? false : true">
|| record.fileSuffix == '.jpg' || record.fileSuffix == '.png' || record.fileSuffix == '.gif'|| record.fileSuffix == '.jpeg'
|| record.fileSuffix == '.xlsx' || record.fileSuffix == '.xls' ? false : true">
{{$t('See')}}
</a>
<a class="text" @click="download(record)">
@@ -2125,7 +2126,8 @@
} else if (fileSuffix == '.docx' || fileSuffix == '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else {
@@ -2143,7 +2145,8 @@
} else if (fileSuffix == '.docx' || fileSuffix == '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + id + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + id + fileSuffix)
window.open(url, '_blank')
} else {
@@ -214,7 +214,8 @@
} else if (fileSuffix === '.docx' || fileSuffix === '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix === '.xlsx' || fileSuffix === '.xls') {
} else if (fileSuffix === '.xlsx' || fileSuffix === '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else {
@@ -115,7 +115,8 @@
<span slot="fileOperation" slot-scope="record">
<a class="text" @click="pdfPreview(record)"
:disabled="record.fileSuffix == '.pdf' || record.fileSuffix == '.docx' || record.fileSuffix == '.doc'
|| record.fileSuffix == '.xlsx' || record.fileSuffix == '.xls' ? false : true">
|| record.fileSuffix == '.jpg' || record.fileSuffix == '.png' || record.fileSuffix == '.gif'|| record.fileSuffix == '.jpeg'
|| record.fileSuffix == '.xlsx' || record.fileSuffix == '.xls' ? false : true">
{{$t('See')}}
</a>
<a class="text" @click="download(record)">
@@ -467,7 +468,8 @@
} else if (fileSuffix == '.docx' || fileSuffix == '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else {
@@ -484,7 +486,8 @@
} else if (fileSuffix == '.docx' || fileSuffix == '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + id + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + id + fileSuffix)
window.open(url, '_blank')
} else {
+14 -9
View File
@@ -86,17 +86,17 @@
>
<span slot="technicalField" slot-scope="text,record" :title="text">
<a @click="entryNameClick(record)">
{{ text && text.length > 23 ? text.slice(0, 22) + '...' : text }}
{{ text }}
</a>
</span>
<span slot="standard" slot-scope="text,record" :title="text">
{{ text && text.length > 15 ? text.slice(0, 14) + '...' : text }}
{{ text }}
</span>
<!-- <span slot="serialNumber" 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="handlecody(record)">{{$t('ViewConformanceResults')}}</a>
<a class="text-operation" @click="handlecody(record)">{{$t('view')}}</a>
</span>
</a-table>
</div>
@@ -168,21 +168,24 @@ export default {
title: this.$t('standard'),
align: 'center',
dataIndex: 'serialNumber',
width: 180,
width: 300,
ellipsis: true,
scopedSlots: { customRender: 'standard' }
},
{
title: this.$t('title'),
align: 'center',
dataIndex: 'title',
width: 250,
width: 300,
ellipsis: true,
scopedSlots: { customRender: 'standard' }
},
{
title: this.$t('status'),
align: 'center',
ellipsis: true,
dataIndex: 'state_dicText',
width: 180
width: 120
},
// {
// title: this.$t('category'),
@@ -194,13 +197,14 @@ export default {
align: 'center',
dataIndex: 'technologyTerritory_dicText',
width: 250,
ellipsis: true,
scopedSlots: { customRender: 'technicalField' }
},
{
title: this.$t('RegulatoryProcessEvaluationResults'),
title: this.$t('evaluationResults'),
align: 'center',
fixed: 'right',
width: 300,
width: 180,
scopedSlots: { customRender: 'operation' }
}
],
@@ -282,7 +286,8 @@ export default {
// 导出历史
handlecody(e) {
this.drawerVisible = true
this.titleTag = e.serialNumber + this.$t('ComplianceConfirmationRecord')
// e.serialNumber +
this.titleTag = this.$t('evaluationResults')
this.paramsManifestId = e.id
this.item = {...e}
},
@@ -122,9 +122,27 @@
searchParmes: {},
searchQueryList: [
{
field_show_type: 6,
field_show_type: 12,
db_field_txt: this.$t('warningTime'),
db_field_name: 'WarnTime'
db_field_name: 'WarnTimeText',
option: [
{
value: '1',
name:this.$t('inRecentMonths3')
},
{
value: '2',
name: this.$t('inRecentMonths6')
},
{
value: '3',
name: this.$t('inRecentYear1')
},
{
value: '4',
name: this.$t('inRecentYear2')
}
]
}
],
@@ -240,7 +258,7 @@
} else {
flag = 2
}
this.$refs.libraryPushRef.getPush(JSON.parse(JSON.stringify(this.selectedRowKeys)),flag)
this.$refs.libraryPushRef.getPush(JSON.parse(JSON.stringify(this.selectedRowKeys)), flag)
})
} else {
this.$message.warning(this.$t('selectLeastOne'))
@@ -272,6 +290,9 @@
this.selectedRowKeys = []
},
clearSelected() {
if (!this.searchParmes['WarnTimeText']) {
this.searchParmes['WarnTimeText'] = '2'
}
let startTime = moment(new Date()).format('YYYY-MM-DD')
let endTime = this.getNowdate()
this.searchParmes['WarnTime'] = [startTime, endTime]
@@ -279,26 +300,41 @@
this.pageNo = 1
this.getList()
},
getNowdate(){
getNowdate() {
let monthData
let yearData
if (this.searchParmes['WarnTimeText'] == '1') {
monthData = 4
yearData = 1
} else if (this.searchParmes['WarnTimeText'] == '2') {
monthData = 7
yearData = 1
} else if (this.searchParmes['WarnTimeText'] == '3') {
monthData = 13
yearData = 1
} else if (this.searchParmes['WarnTimeText'] == '4') {
monthData = 25
yearData = 2
}
var date_now = new Date()//获取当前时间
var year = date_now.getFullYear()//获取当前时间的年份
var month = date_now.getMonth()//获取当前时间的月份
var day = date_now.getDate()//获取当前时间的日
var days = new Date(year,month,0)//将获取到的年月赋值给days
var days = new Date(year, month, 0)//将获取到的年月赋值给days
days = days.getDate()//获取当前年月的日
var year2 = year
var month2 = parseInt(month+7)//获取当前月份的1一个月以后的月份
if(month2 > 12){
year2 = parseInt(year2) + 1
var month2 = parseInt(month + monthData)//获取当前月份的1一个月以后的月份
if (month2 > 12) {
year2 = parseInt(year2) + yearData
month2 = parseInt(month2) % 12
}//考虑到12月要是获取一个月以后就是一月年份需要加一 一年没有13月所以%12取得来年1月
var day2 = day
var days2 = new Date(year2,month2,0)
var days2 = new Date(year2, month2, 0)
days2 = days2.getDate()
if(day2>days2){
if (day2 > days2) {
day2 = days2
}//获取了当前年份的日和6个月以后的日为的就是判断如果前一个月是有31号后一个月没有就将一个月以后的日期取到赋值给day2
if(month2 < 10){
if (month2 < 10) {
month2 = '0' + month2
}
var time = year2 + '-' + month2 + '-' + day2
@@ -350,12 +386,13 @@
text-align: right;
margin-top: 20px;
}
::v-deep .ant-table-row:first-child {
background: #fff!important;
background: #fff !important;
opacity: 0.9;
}
::v-deep .ant-table-body {
background: transparent!important;
background: transparent !important;
}
</style>
+1 -1
View File
@@ -92,7 +92,7 @@ module.exports = {
}
}, */
'/jero-boot': {
target: 'http://localhost:8080', //请求本地 jero-boot后台项目
target: 'http://10.0.1.14:8080', //请求本地 jero-boot后台项目
// target: 'http://10.10.10.46:8101', //请求本地 jero-boot后台项目
// target: 'http://10.0.1.25:8080',
// target: 'http://10.0.1.5:8080',