Merge remote-tracking branch 'origin/dev_third_stage' into dev_third_stage
This commit is contained in:
@@ -239,6 +239,10 @@ CREATE TABLE `laws_technology_evaluation` (
|
|||||||
PRIMARY KEY (`id`) USING BTREE
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '法规技术评估表' ROW_FORMAT = DYNAMIC;
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '法规技术评估表' ROW_FORMAT = DYNAMIC;
|
||||||
|
|
||||||
|
-- 上报库认证类别参数信息 添加字段 2022-07-11
|
||||||
|
ALTER TABLE `laws_weilai`.`report_cert_category_params_info`
|
||||||
|
ADD COLUMN `params_manifest_id` varchar(50) NULL COMMENT '上报库id' AFTER `version`;
|
||||||
|
|
||||||
-- 法规技术评估-流程明细表
|
-- 法规技术评估-流程明细表
|
||||||
CREATE TABLE `laws_technology_evaluation_flow_detail` (
|
CREATE TABLE `laws_technology_evaluation_flow_detail` (
|
||||||
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||||
|
|||||||
+1
@@ -1552,6 +1552,7 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
|
|||||||
ReportCertCategoryParamsInfoEO addCcpi = new ReportCertCategoryParamsInfoEO();
|
ReportCertCategoryParamsInfoEO addCcpi = new ReportCertCategoryParamsInfoEO();
|
||||||
BeanUtils.copyProperties(ccpi, addCcpi);
|
BeanUtils.copyProperties(ccpi, addCcpi);
|
||||||
addCcpi.setId(UUID.randomUUID().toString().replace("-",""));
|
addCcpi.setId(UUID.randomUUID().toString().replace("-",""));
|
||||||
|
addCcpi.setParamsManifestId(reportId); // 绑定上报库
|
||||||
addReportCertCategoryParamsInfoEOList.add(addCcpi);
|
addReportCertCategoryParamsInfoEOList.add(addCcpi);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+28
@@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||||||
import com.jero.common.api.vo.Result;
|
import com.jero.common.api.vo.Result;
|
||||||
import com.jero.common.aspect.annotation.AutoLog;
|
import com.jero.common.aspect.annotation.AutoLog;
|
||||||
import com.jero.common.system.base.controller.JeroController;
|
import com.jero.common.system.base.controller.JeroController;
|
||||||
|
import com.jero.modules.cert.report.entity.ParamsReportConfigEO;
|
||||||
import com.jero.modules.cert.report.entity.ParamsReportDetailEO;
|
import com.jero.modules.cert.report.entity.ParamsReportDetailEO;
|
||||||
|
import com.jero.modules.cert.report.service.IParamsReportConfigEOService;
|
||||||
import com.jero.modules.cert.report.service.IParamsReportDetailEOService;
|
import com.jero.modules.cert.report.service.IParamsReportDetailEOService;
|
||||||
import com.jero.modules.cert.report.vo.ParamsReportDetailVO;
|
import com.jero.modules.cert.report.vo.ParamsReportDetailVO;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
@@ -38,6 +40,9 @@ public class ParamsReportDetailEOController extends JeroController<ParamsReportD
|
|||||||
@Autowired
|
@Autowired
|
||||||
private IParamsReportDetailEOService paramsReportDetailEOService;
|
private IParamsReportDetailEOService paramsReportDetailEOService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IParamsReportConfigEOService paramsReportConfigEOService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 表头中英文切换
|
* 表头中英文切换
|
||||||
*
|
*
|
||||||
@@ -148,4 +153,27 @@ public class ParamsReportDetailEOController extends JeroController<ParamsReportD
|
|||||||
paramsReportDetailEOService.exportCustom(paramsReportDetailVO, response, request);
|
paramsReportDetailEOService.exportCustom(paramsReportDetailVO, response, request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @ApiOperation(value = "上报库参数项-自定义导出excel")
|
||||||
|
// @GetMapping(value = "/exportCustomExcel")
|
||||||
|
//// @RequiresPermissions("report:detail:export:custom")
|
||||||
|
// public void exportCustomExcel(ParamsReportDetailVO paramsReportDetailVO,
|
||||||
|
// HttpServletResponse response,
|
||||||
|
// HttpServletRequest request) {
|
||||||
|
// paramsReportDetailEOService.exportCustomExcel(paramsReportDetailVO, response, request);
|
||||||
|
// }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 列表查询
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@AutoLog(value = "上报库参数配置-查看单个详情")
|
||||||
|
@ApiOperation(value="上报库参数配置-查看单个详情", notes="上报库参数配置-查看单个详情")
|
||||||
|
@GetMapping(value = "/getConfig")
|
||||||
|
// @RequiresPermissions("report:detail:list")
|
||||||
|
public Result<ParamsReportConfigEO> getById(@RequestParam(name = "id") String id) {
|
||||||
|
ParamsReportConfigEO paramsReportConfigEO = paramsReportConfigEOService.getById(id);
|
||||||
|
return Result.OK(paramsReportConfigEO);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+4
@@ -29,4 +29,8 @@ public class ReportCertCategoryParamsInfoEO extends CertCategoryParamsInfoEO imp
|
|||||||
@ApiModelProperty(value = "发布时版本")
|
@ApiModelProperty(value = "发布时版本")
|
||||||
private Integer version;
|
private Integer version;
|
||||||
|
|
||||||
|
/**上报库id*/
|
||||||
|
@ApiModelProperty(value = "上报库id")
|
||||||
|
private String paramsManifestId;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-1
@@ -103,10 +103,11 @@
|
|||||||
prd.id as id,
|
prd.id as id,
|
||||||
prd.nio_number as nio_number,
|
prd.nio_number as nio_number,
|
||||||
prd.params_name as params_name,
|
prd.params_name as params_name,
|
||||||
|
prd.control_type as control_type,
|
||||||
rccpi.params_number as cert_number,
|
rccpi.params_number as cert_number,
|
||||||
rccpi.params_name as cert_params_name
|
rccpi.params_name as cert_params_name
|
||||||
from params_report_detail prd
|
from params_report_detail prd
|
||||||
left join report_cert_category_params_info rccpi on prd.nio_number = rccpi.nio_number
|
left join report_cert_category_params_info rccpi on (prd.params_manifest_id = rccpi.params_manifest_id and prd.nio_number = rccpi.nio_number)
|
||||||
<include refid="BaseQuerySqlForExport"/>
|
<include refid="BaseQuerySqlForExport"/>
|
||||||
<if test="idList != null and idList.size > 0">
|
<if test="idList != null and idList.size > 0">
|
||||||
and prd.id in
|
and prd.id in
|
||||||
|
|||||||
+1
@@ -15,5 +15,6 @@
|
|||||||
<result column="cert_category" property="certCategory" />
|
<result column="cert_category" property="certCategory" />
|
||||||
<result column="params_template_id" property="paramsTemplateId" />
|
<result column="params_template_id" property="paramsTemplateId" />
|
||||||
<result column="version" property="version" />
|
<result column="version" property="version" />
|
||||||
|
<result column="params_manifest_id" property="paramsManifestId" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
</mapper>
|
</mapper>
|
||||||
+3
-1
@@ -588,7 +588,8 @@ public class ParamsReportDetailEOServiceImpl extends ServiceImpl<ParamsReportDet
|
|||||||
|
|
||||||
// 添加导出历史
|
// 添加导出历史
|
||||||
String uploadFileName = fileOriName + ".zip";
|
String uploadFileName = fileOriName + ".zip";
|
||||||
MultipartFile mFile = new MockMultipartFile(uploadFileName, uploadFileName, ContentType.APPLICATION_OCTET_STREAM.toString(), fis); // 用于上传
|
InputStream uploadFileio = new FileInputStream(new File(fileNowPath+".zip"));
|
||||||
|
MultipartFile mFile = new MockMultipartFile(uploadFileName, uploadFileName, "text/plain", uploadFileio); // 用于上传
|
||||||
OSSFile ossFile = ossFileService.uploadLocalOfCos(mFile, "/report", "", CutEnum.CN.getValue()); // 上传导出的压缩包
|
OSSFile ossFile = ossFileService.uploadLocalOfCos(mFile, "/report", "", CutEnum.CN.getValue()); // 上传导出的压缩包
|
||||||
ParamsReportExportHistoryEO paramsReportExportHistoryEO = new ParamsReportExportHistoryEO();
|
ParamsReportExportHistoryEO paramsReportExportHistoryEO = new ParamsReportExportHistoryEO();
|
||||||
paramsReportExportHistoryEO.setExportType(ExportTypeEnum.NORMAL.getValue());
|
paramsReportExportHistoryEO.setExportType(ExportTypeEnum.NORMAL.getValue());
|
||||||
@@ -597,6 +598,7 @@ public class ParamsReportDetailEOServiceImpl extends ServiceImpl<ParamsReportDet
|
|||||||
paramsReportExportHistoryEO.setExportTime(new Date());
|
paramsReportExportHistoryEO.setExportTime(new Date());
|
||||||
paramsReportExportHistoryEOService.add(paramsReportExportHistoryEO);
|
paramsReportExportHistoryEOService.add(paramsReportExportHistoryEO);
|
||||||
|
|
||||||
|
uploadFileio.close();
|
||||||
os.flush();
|
os.flush();
|
||||||
os.close(); // 后开先关
|
os.close(); // 后开先关
|
||||||
fis.close(); // 先开后关
|
fis.close(); // 先开后关
|
||||||
|
|||||||
+2
-2
@@ -77,10 +77,10 @@ public class ParamsInfoEO implements Serializable {
|
|||||||
private String paramsName;
|
private String paramsName;
|
||||||
|
|
||||||
/**技术领域*/
|
/**技术领域*/
|
||||||
@Excel(name = "*技术领域", width = 15)
|
// @Excel(name = "*技术领域", width = 15)
|
||||||
// @Dict(dicCode = "technology_territory")
|
// @Dict(dicCode = "technology_territory")
|
||||||
@ApiModelProperty(value = "技术领域")
|
@ApiModelProperty(value = "技术领域")
|
||||||
private String technologyTerritory;
|
private String technologyTerritory; // 2022-07-12 需求去掉技术领域
|
||||||
|
|
||||||
/**参数批次*/
|
/**参数批次*/
|
||||||
@Excel(name = "*参数批次", width = 15, dicCode = "params_batch")
|
@Excel(name = "*参数批次", width = 15, dicCode = "params_batch")
|
||||||
|
|||||||
+16
-16
@@ -455,7 +455,7 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
|||||||
if (CutEnum.CN.getValue().equals(cut)) {
|
if (CutEnum.CN.getValue().equals(cut)) {
|
||||||
// 查询导出数据
|
// 查询导出数据
|
||||||
List<ParamsInfoEO> paramsInfoEOList = paramsInfoEOMapper.selectListWithCert(paramsInfoVO); // 中文数据导出
|
List<ParamsInfoEO> paramsInfoEOList = paramsInfoEOMapper.selectListWithCert(paramsInfoVO); // 中文数据导出
|
||||||
getTreeDictItemText(paramsInfoEOList, cut);
|
// getTreeDictItemText(paramsInfoEOList, cut);
|
||||||
List<Map<String, Object>> sheetsList = new ArrayList<>();
|
List<Map<String, Object>> sheetsList = new ArrayList<>();
|
||||||
sheetsList = getCnExportSheetsList(paramsInfoEOList, fileNowPath, paramsTemplateId);
|
sheetsList = getCnExportSheetsList(paramsInfoEOList, fileNowPath, paramsTemplateId);
|
||||||
workbook = ExcelExportUtil.exportExcel(sheetsList, ExcelType.XSSF);
|
workbook = ExcelExportUtil.exportExcel(sheetsList, ExcelType.XSSF);
|
||||||
@@ -463,7 +463,7 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
|||||||
} else if (CutEnum.EN.getValue().equals(cut)) {
|
} else if (CutEnum.EN.getValue().equals(cut)) {
|
||||||
// 查询导出数据
|
// 查询导出数据
|
||||||
List<ParamsInfoEnExport> paramsInfoEnExportList = paramsInfoEOMapper.selectListWithCertForEnExport(paramsInfoVO); // 英文数据导出
|
List<ParamsInfoEnExport> paramsInfoEnExportList = paramsInfoEOMapper.selectListWithCertForEnExport(paramsInfoVO); // 英文数据导出
|
||||||
getTreeDictItemTextForEnExport(paramsInfoEnExportList);
|
// getTreeDictItemTextForEnExport(paramsInfoEnExportList);
|
||||||
List<Map<String, Object>> sheetsList = new ArrayList<>();
|
List<Map<String, Object>> sheetsList = new ArrayList<>();
|
||||||
sheetsList = getEnExportSheetsList(paramsInfoEnExportList, fileNowPath, paramsTemplateId);
|
sheetsList = getEnExportSheetsList(paramsInfoEnExportList, fileNowPath, paramsTemplateId);
|
||||||
workbook = ExcelExportUtil.exportExcel(sheetsList, ExcelType.XSSF);
|
workbook = ExcelExportUtil.exportExcel(sheetsList, ExcelType.XSSF);
|
||||||
@@ -839,7 +839,7 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
|||||||
// 第几个sheet页
|
// 第几个sheet页
|
||||||
if (numSheet == 0) { // 企业参数表
|
if (numSheet == 0) { // 企业参数表
|
||||||
if (CutEnum.EN.getValue().equals(cut)) {
|
if (CutEnum.EN.getValue().equals(cut)) {
|
||||||
String fields[] ={ "*NIO Number", "*Is Must", "*Params Name","*Technical Field","*Params Batch","*Duty Territory",
|
String fields[] ={ "*NIO Number", "*Is Must", "*Params Name","*Params Batch","*Duty Territory",
|
||||||
"Description", "*Control Type", "Control Verify", "Control Values", "File Template"};
|
"Description", "*Control Type", "Control Verify", "Control Values", "File Template"};
|
||||||
params.setImportFields(fields);
|
params.setImportFields(fields);
|
||||||
|
|
||||||
@@ -847,7 +847,7 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
|||||||
List<ParamsInfoEnImport> paramsInfoEOListEn = resultEn.getList();
|
List<ParamsInfoEnImport> paramsInfoEOListEn = resultEn.getList();
|
||||||
copyParamsInfoList(paramsInfoEOListEn, paramsInfoEOList);
|
copyParamsInfoList(paramsInfoEOListEn, paramsInfoEOList);
|
||||||
} else {
|
} else {
|
||||||
String fields[] ={ "*NIO编号", "*是否必填", "*参数名称","*技术领域","*参数批次","*责任领域",
|
String fields[] ={ "*NIO编号", "*是否必填", "*参数名称","*参数批次","*责任领域",
|
||||||
"参数说明", "*控件类型", "控件校验", "控件备选值", "附件模板"};
|
"参数说明", "*控件类型", "控件校验", "控件备选值", "附件模板"};
|
||||||
params.setImportFields(fields);
|
params.setImportFields(fields);
|
||||||
|
|
||||||
@@ -1069,7 +1069,7 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
|||||||
String cut){
|
String cut){
|
||||||
List<CertCategoryParamsInfoCnImport> certCategoryParamsInfoEOList = new ArrayList<>();
|
List<CertCategoryParamsInfoCnImport> certCategoryParamsInfoEOList = new ArrayList<>();
|
||||||
// 树形数据字典
|
// 树形数据字典
|
||||||
List<SysCategory> categoryList = sysCategoryService.queryByTreeDicCode("technology_territory");
|
// List<SysCategory> categoryList = sysCategoryService.queryByTreeDicCode("technology_territory");
|
||||||
// 普通数据字典
|
// 普通数据字典
|
||||||
List<SysDictItem> dictItemList = new ArrayList<>();
|
List<SysDictItem> dictItemList = new ArrayList<>();
|
||||||
List<String> dictCodeList = new ArrayList<>();
|
List<String> dictCodeList = new ArrayList<>();
|
||||||
@@ -1091,12 +1091,12 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
|||||||
//普通数据字典
|
//普通数据字典
|
||||||
List<String> itemNameList = new ArrayList<>();
|
List<String> itemNameList = new ArrayList<>();
|
||||||
if (CutEnum.CN.getValue().equals(cut)) {
|
if (CutEnum.CN.getValue().equals(cut)) {
|
||||||
treeNameList = categoryList.stream().map(SysCategory::getName).collect(Collectors.toList());
|
// treeNameList = categoryList.stream().map(SysCategory::getName).collect(Collectors.toList());
|
||||||
itemNameList = dictItemList.stream().map(SysDictItem::getItemText).collect(Collectors.toList());
|
itemNameList = dictItemList.stream().map(SysDictItem::getItemText).collect(Collectors.toList());
|
||||||
|
|
||||||
certCategoryMap = dictItemList.stream().filter(e->"cert_category".equals(e.getDictCode())).collect(Collectors.toMap(c->c.getItemText(),c->c.getItemValue()));
|
certCategoryMap = dictItemList.stream().filter(e->"cert_category".equals(e.getDictCode())).collect(Collectors.toMap(c->c.getItemText(),c->c.getItemValue()));
|
||||||
} else if(CutEnum.EN.getValue().equals(cut)){
|
} else if(CutEnum.EN.getValue().equals(cut)){
|
||||||
treeNameList = categoryList.stream().map(SysCategory::getEnName).collect(Collectors.toList());
|
// treeNameList = categoryList.stream().map(SysCategory::getEnName).collect(Collectors.toList());
|
||||||
itemNameList = dictItemList.stream().map(SysDictItem::getEnName).collect(Collectors.toList());
|
itemNameList = dictItemList.stream().map(SysDictItem::getEnName).collect(Collectors.toList());
|
||||||
|
|
||||||
certCategoryMap = dictItemList.stream().filter(e->"cert_category".equals(e.getDictCode())).collect(Collectors.toMap(c->c.getEnName(),c->c.getItemValue()));
|
certCategoryMap = dictItemList.stream().filter(e->"cert_category".equals(e.getDictCode())).collect(Collectors.toMap(c->c.getEnName(),c->c.getItemValue()));
|
||||||
@@ -1177,15 +1177,15 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
|||||||
countError += (int)resultMap.get("countError");
|
countError += (int)resultMap.get("countError");
|
||||||
|
|
||||||
// 技术领域
|
// 技术领域
|
||||||
String technologyTerritory = dto.getTechnologyTerritory();
|
// String technologyTerritory = dto.getTechnologyTerritory();
|
||||||
resultMap = validateMustAndLength(technologyTerritory, "技术领域", "Technical Field", IsMustEnum.YES.getValue(), "1000", false, cut);
|
// resultMap = validateMustAndLength(technologyTerritory, "技术领域", "Technical Field", IsMustEnum.YES.getValue(), "1000", false, cut);
|
||||||
errorMsg += (String)resultMap.get("errorMsg");
|
// errorMsg += (String)resultMap.get("errorMsg");
|
||||||
countError += (int)resultMap.get("countError");
|
// countError += (int)resultMap.get("countError");
|
||||||
resultMap = getCodeByName(technologyTerritory,"技术领域", "Technical Field","treeDicCode",null,treeNameList,categoryList,cut);
|
// resultMap = getCodeByName(technologyTerritory,"技术领域", "Technical Field","treeDicCode",null,treeNameList,categoryList,cut);
|
||||||
errorMsg += (String)resultMap.get("errorMsg");
|
// errorMsg += (String)resultMap.get("errorMsg");
|
||||||
countError += (int)resultMap.get("countError");
|
// countError += (int)resultMap.get("countError");
|
||||||
technologyTerritory = (String)resultMap.get("value");
|
// technologyTerritory = (String)resultMap.get("value");
|
||||||
dto.setTechnologyTerritory(technologyTerritory);
|
// dto.setTechnologyTerritory(technologyTerritory);
|
||||||
|
|
||||||
// 参数批次
|
// 参数批次
|
||||||
String paramsBatch = dto.getParamsBatch();
|
String paramsBatch = dto.getParamsBatch();
|
||||||
|
|||||||
+1
-1
@@ -28,7 +28,7 @@ public class ParamsInfoCnImport {
|
|||||||
private String paramsName;
|
private String paramsName;
|
||||||
|
|
||||||
/**技术领域*/
|
/**技术领域*/
|
||||||
@Excel(name = "*技术领域", width = 15)
|
// @Excel(name = "*技术领域", width = 15)
|
||||||
@ApiModelProperty(value = "技术领域")
|
@ApiModelProperty(value = "技术领域")
|
||||||
private String technologyTerritory;
|
private String technologyTerritory;
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -60,8 +60,8 @@ public class ParamsInfoEnExport {
|
|||||||
private String paramsName;
|
private String paramsName;
|
||||||
|
|
||||||
/**技术领域*/
|
/**技术领域*/
|
||||||
@Excel(name = "*Technical Field", width = 15)
|
// @Excel(name = "*Technical Field", width = 15)
|
||||||
// @Dict(dicCode = "technology_territory")
|
//// @Dict(dicCode = "technology_territory")
|
||||||
@ApiModelProperty(value = "技术领域")
|
@ApiModelProperty(value = "技术领域")
|
||||||
private String technologyTerritory;
|
private String technologyTerritory;
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -28,7 +28,7 @@ public class ParamsInfoEnImport {
|
|||||||
private String paramsName;
|
private String paramsName;
|
||||||
|
|
||||||
/**技术领域*/
|
/**技术领域*/
|
||||||
@Excel(name = "*Technical Field", width = 15)
|
// @Excel(name = "*Technical Field", width = 15)
|
||||||
@ApiModelProperty(value = "技术领域")
|
@ApiModelProperty(value = "技术领域")
|
||||||
private String technologyTerritory;
|
private String technologyTerritory;
|
||||||
|
|
||||||
|
|||||||
@@ -195,6 +195,10 @@ export function downloadFile(url, fileName, parameter, callback) {
|
|||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (!data || data.size === 0) {
|
if (!data || data.size === 0) {
|
||||||
|
index.showDrawer({
|
||||||
|
loading: false,
|
||||||
|
isTrue: isTrue
|
||||||
|
})
|
||||||
Vue.prototype['$message'].warning('文件下载失败')
|
Vue.prototype['$message'].warning('文件下载失败')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1112,4 +1112,9 @@ module.exports = {
|
|||||||
selectedStandard:'Selected standard',
|
selectedStandard:'Selected standard',
|
||||||
standardDecompositionDocument:'Standard decomposition document',
|
standardDecompositionDocument:'Standard decomposition document',
|
||||||
pleaseSelectStandardFirst:'Please select a standard first',
|
pleaseSelectStandardFirst:'Please select a standard first',
|
||||||
|
RelevantMaterials:'RelevantMaterials',
|
||||||
|
evaluatorFeedback:'Evaluator feedback',
|
||||||
|
nameTechnicalDocument:'Name of technical document',
|
||||||
|
chapter:'chapter',
|
||||||
|
problemDescription:'Problem description',
|
||||||
}
|
}
|
||||||
@@ -1112,8 +1112,13 @@ module.exports = {
|
|||||||
RegulationTaskConfirmationNotification:'任务确认通知',
|
RegulationTaskConfirmationNotification:'任务确认通知',
|
||||||
evaluationMethod:'评估方式',
|
evaluationMethod:'评估方式',
|
||||||
uploadRelevantMaterials:'相关资料上传',
|
uploadRelevantMaterials:'相关资料上传',
|
||||||
|
RelevantMaterials:'相关资料',
|
||||||
processBackground:'流程背景',
|
processBackground:'流程背景',
|
||||||
selectedStandard:'所选标准',
|
selectedStandard:'所选标准',
|
||||||
standardDecompositionDocument:'带入标准分解单',
|
standardDecompositionDocument:'带入标准分解单',
|
||||||
pleaseSelectStandardFirst:'请先选择标准',
|
pleaseSelectStandardFirst:'请先选择标准',
|
||||||
|
evaluatorFeedback:'评估人反馈',
|
||||||
|
nameTechnicalDocument:'技术文件名称',
|
||||||
|
chapter:'章节',
|
||||||
|
problemDescription:'问题说明',
|
||||||
}
|
}
|
||||||
+8
-4
@@ -177,11 +177,13 @@
|
|||||||
//导出
|
//导出
|
||||||
handleExport() {
|
handleExport() {
|
||||||
let query = {
|
let query = {
|
||||||
lawsOpinionGatherId: this.lawsOpinionGatherId,
|
pageSize:this.pageSize,
|
||||||
actiProcInstId: this.actiProcInstId
|
pageNo:this.pageNo
|
||||||
|
// lawsOpinionGatherId: this.lawsOpinionGatherId,
|
||||||
|
// actiProcInstId: this.actiProcInstId
|
||||||
}
|
}
|
||||||
downloadFile('/lawsOpinionGather/lawsOpinionAssessmentResultEO/exportXls',
|
downloadFile('/lawsOpinionGather/lawsOpinionAssessmentResultEO/exportXls',
|
||||||
this.$t('evaluationResults') + '.xls', query)
|
this.$t('evaluationResults') + '.zip', query)
|
||||||
},
|
},
|
||||||
getData(row) {
|
getData(row) {
|
||||||
this.visible = true
|
this.visible = true
|
||||||
@@ -206,7 +208,9 @@
|
|||||||
getList() {
|
getList() {
|
||||||
let query = {
|
let query = {
|
||||||
lawsOpinionGatherId: this.lawsOpinionGatherId,
|
lawsOpinionGatherId: this.lawsOpinionGatherId,
|
||||||
actiProcInstId: this.actiProcInstId
|
actiProcInstId: this.actiProcInstId,
|
||||||
|
pageSize:this.pageSize,
|
||||||
|
pageNo:this.pageNo
|
||||||
}
|
}
|
||||||
this.loading = true
|
this.loading = true
|
||||||
getAction('/lawsOpinionGather/lawsOpinionAssessmentResultEO/page', query).then((res) => {
|
getAction('/lawsOpinionGather/lawsOpinionAssessmentResultEO/page', query).then((res) => {
|
||||||
|
|||||||
+30
-16
@@ -135,20 +135,20 @@
|
|||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :span="12">
|
<!-- <a-col :span="12">-->
|
||||||
<div class="box-title-text">
|
<!-- <div class="box-title-text">-->
|
||||||
<div class="title-text">
|
<!-- <div class="title-text">-->
|
||||||
<span class="title-text-text"
|
<!-- <span class="title-text-text"-->
|
||||||
:title="$t('releaseDate')">{{$t('releaseDate')}}</span>
|
<!-- :title="$t('releaseDate')">{{$t('releaseDate')}}</span>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
<a-form-model-item class="itemModel" prop="issueTime">
|
<!-- <a-form-model-item class="itemModel" prop="issueTime">-->
|
||||||
<a-input class="box-input"
|
<!-- <a-input class="box-input"-->
|
||||||
:disabled="disabled"
|
<!-- :disabled="disabled"-->
|
||||||
v-model="formInline.issueTime"
|
<!-- v-model="formInline.issueTime"-->
|
||||||
:placeholder="$t('PleaseEnter')+$t('releaseDate')"/>
|
<!-- :placeholder="$t('PleaseEnter')+$t('releaseDate')"/>-->
|
||||||
</a-form-model-item>
|
<!-- </a-form-model-item>-->
|
||||||
</div>
|
<!-- </div>-->
|
||||||
</a-col>
|
<!-- </a-col>-->
|
||||||
<a-col :span="12">
|
<a-col :span="12">
|
||||||
<div class="box-title-text">
|
<div class="box-title-text">
|
||||||
<div class="title-text">
|
<div class="title-text">
|
||||||
@@ -163,8 +163,6 @@
|
|||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
</div>
|
</div>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
|
||||||
<a-row :gutter="24">
|
|
||||||
<a-col :span="12">
|
<a-col :span="12">
|
||||||
<div class="box-title-text">
|
<div class="box-title-text">
|
||||||
<div class="title-text">
|
<div class="title-text">
|
||||||
@@ -180,6 +178,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</a-col>
|
</a-col>
|
||||||
</a-row>
|
</a-row>
|
||||||
|
<!-- <a-row :gutter="24">-->
|
||||||
|
|
||||||
|
<!-- </a-row>-->
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
<a-col :span="24">
|
<a-col :span="24">
|
||||||
<div class="box-title-text">
|
<div class="box-title-text">
|
||||||
@@ -391,8 +392,21 @@
|
|||||||
methods: {
|
methods: {
|
||||||
...mapGetters(['userInfo']),
|
...mapGetters(['userInfo']),
|
||||||
getStandData(value) {
|
getStandData(value) {
|
||||||
|
console.log(value)
|
||||||
this.formInline.titleCn = value.serial_number + ' ' + value.title
|
this.formInline.titleCn = value.serial_number + ' ' + value.title
|
||||||
this.formInline.titleEn = value.serial_number + ' ' + value.title_en
|
this.formInline.titleEn = value.serial_number + ' ' + value.title_en
|
||||||
|
this.formInline.technologyTerritory = value.technology_territory_dict
|
||||||
|
this.formInline.applyCar = value.shi4_yong4_che1_xing2_dict
|
||||||
|
this.formInline.applyScope = value.shi4_yong4_fan4_wei2_dict
|
||||||
|
this.formInline.state = value.state_dict
|
||||||
|
this.formInline.newCarImplementTime = value.xin1_che1_xing2_shi2_shi1_ri4_qi1
|
||||||
|
this.formInline.productionCarImplementTime = value.implement_time
|
||||||
|
var curPath = window.document.location.href
|
||||||
|
var pathname = window.document.location.pathname
|
||||||
|
var pos = curPath.indexOf(pathname)
|
||||||
|
var localhostPath = curPath.substring(0, pos)
|
||||||
|
this.formInline.link = localhostPath + '/docManage/library/detail?id=' + value.id
|
||||||
|
this.formInline = {...this.formInline}
|
||||||
},
|
},
|
||||||
getSysCategoryTree() {
|
getSysCategoryTree() {
|
||||||
getAction('/sys/category/getSysCategoryTree', {}).then((res) => {
|
getAction('/sys/category/getSysCategoryTree', {}).then((res) => {
|
||||||
|
|||||||
@@ -50,6 +50,7 @@
|
|||||||
v-model="formInline.memoriesChapter"
|
v-model="formInline.memoriesChapter"
|
||||||
:maxTagCount="1"
|
:maxTagCount="1"
|
||||||
:disabled="disabled"
|
:disabled="disabled"
|
||||||
|
@change="changeTree"
|
||||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||||
class="box-input"
|
class="box-input"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
@@ -187,6 +188,9 @@
|
|||||||
getAction('/report/lawsMonthlyReportTitleTemplateEO/list', {}).then((res) => {
|
getAction('/report/lawsMonthlyReportTitleTemplateEO/list', {}).then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.chapterContentsList = res.result || []
|
this.chapterContentsList = res.result || []
|
||||||
|
this.chapterContentsList.forEach(val => {
|
||||||
|
val.disabled = true
|
||||||
|
})
|
||||||
} else {
|
} else {
|
||||||
this.chapterContentsList = []
|
this.chapterContentsList = []
|
||||||
}
|
}
|
||||||
@@ -245,6 +249,13 @@
|
|||||||
handleCancel() {
|
handleCancel() {
|
||||||
this.visible = false
|
this.visible = false
|
||||||
},
|
},
|
||||||
|
changeTree(value, node, extra) {
|
||||||
|
if (value.length > 1) {
|
||||||
|
value.shift()
|
||||||
|
}
|
||||||
|
this.formInline.memoriesChapter = value
|
||||||
|
this.formInline = { ...this.formInline }
|
||||||
|
},
|
||||||
handleSubmit() {
|
handleSubmit() {
|
||||||
this.$refs.ruleForm.validate(valid => {
|
this.$refs.ruleForm.validate(valid => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
|
|||||||
@@ -86,8 +86,8 @@
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
prcClick(row) {
|
prcClick(row) {
|
||||||
let index = row.taskIds.lastIndexOf(',')
|
// let index = row.taskIds.lastIndexOf(',')
|
||||||
row.taskIds = row.taskIds.slice(0, index)
|
// row.taskIds = row.taskIds.slice(0, index)
|
||||||
if (row.prcType == '1') {
|
if (row.prcType == '1') {
|
||||||
let newUrl = this.$router.resolve({
|
let newUrl = this.$router.resolve({
|
||||||
path: '/handshakeProcess',
|
path: '/handshakeProcess',
|
||||||
|
|||||||
@@ -0,0 +1,316 @@
|
|||||||
|
<template>
|
||||||
|
<div class="box">
|
||||||
|
<div class="box-text">
|
||||||
|
<div class="header-text">
|
||||||
|
{{title}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="content-text">
|
||||||
|
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :span="12">
|
||||||
|
<div class="box-title-text">
|
||||||
|
<div class="title-text">
|
||||||
|
<span class="Required">*</span>
|
||||||
|
<span class="title-text-text" :title="$t('complianceResults')">{{$t('complianceResults')}}</span>
|
||||||
|
</div>
|
||||||
|
<a-form-model-item class="itemModel" prop="flag">
|
||||||
|
<a-radio-group style="margin-top: 2px" class="box-input" v-model="formInline.flag">
|
||||||
|
<a-radio value="0">
|
||||||
|
{{$t('accord')}}
|
||||||
|
</a-radio>
|
||||||
|
<a-radio value="1">
|
||||||
|
{{$t('nonConformity')}}
|
||||||
|
</a-radio>
|
||||||
|
</a-radio-group>
|
||||||
|
</a-form-model-item>
|
||||||
|
</div>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
<div v-for="(item,index) in formInline.dataList" :key="index">
|
||||||
|
<div class="feedbackPoint">
|
||||||
|
{{$t('feedbackPoint')+(index+1)}}
|
||||||
|
<a-icon class="icon-size"
|
||||||
|
@click="addData"
|
||||||
|
v-if="(formInline.dataList.length-1) == index"
|
||||||
|
type="plus-circle"/>
|
||||||
|
<a-icon class="icon-size"
|
||||||
|
@click="deleteData"
|
||||||
|
v-if="formInline.dataList.length > 1 && (formInline.dataList.length - 1) == index"
|
||||||
|
type="minus-circle"/>
|
||||||
|
</div>
|
||||||
|
<a-row :gutter="24">
|
||||||
|
<a-col :span="12">
|
||||||
|
<div class="box-title-text">
|
||||||
|
<div class="title-text">
|
||||||
|
<span class="Required">*</span>
|
||||||
|
<span class="title-text-text" :title="$t('relevantSections')">{{$t('relevantSections')}}</span>
|
||||||
|
</div>
|
||||||
|
<a-form-model-item class="itemModel"
|
||||||
|
:prop="'dataList.'+index+'.relatedSection'"
|
||||||
|
:rules="[{ required: true, message: $t('relevantSections') + $t('cannotEmpty'), trigger: 'blur'},
|
||||||
|
{max: 300,message: $t('relevantSections') + $t('cannotExceed') + 300 + $t('Characters'),trigger: 'blur'
|
||||||
|
}]">
|
||||||
|
<a-input class="box-input"
|
||||||
|
:disabled="disabled"
|
||||||
|
v-model="item.relatedSection"
|
||||||
|
:placeholder="$t('PleaseEnter')+$t('relevantSections')"/>
|
||||||
|
</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('problemDescription')">{{$t('problemDescription')}}</span>
|
||||||
|
</div>
|
||||||
|
<a-form-model-item class="itemModel" :prop="'dataList.'+index+'.issueOrSuggest'"
|
||||||
|
:rules="[{ required: true, message: $t('problemDescription') + $t('cannotEmpty'), trigger: 'blur'},
|
||||||
|
{max: 300,message: $t('problemDescription') + $t('cannotExceed') + 300 + $t('Characters'),trigger: 'blur'
|
||||||
|
}]">
|
||||||
|
<a-input class="box-input"
|
||||||
|
:disabled="disabled"
|
||||||
|
v-model="item.issueOrSuggest"
|
||||||
|
:placeholder="$t('PleaseEnter')+$t('problemDescription')"/>
|
||||||
|
</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('enclosure')">{{$t('enclosure')}}</span>
|
||||||
|
</div>
|
||||||
|
<a-form-model-item class="itemModel" prop="accessoryFile">
|
||||||
|
<a-button type="primary" class="button-text"
|
||||||
|
@click="clickButtonToUpload('accessoryFile',index)">
|
||||||
|
{{ (item.accessoryFile === 'null' || item.accessoryFile === '' ||
|
||||||
|
item.accessoryFile == null) ? $t('clickUpload') : $t('viewUploadedFiles')
|
||||||
|
}}
|
||||||
|
</a-button>
|
||||||
|
</a-form-model-item>
|
||||||
|
</div>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</div>
|
||||||
|
</a-form-model>
|
||||||
|
</div>
|
||||||
|
<uploadFile ref="uploadFile" :disabled="disabled" @uploadSuccess="uploadSuccess"></uploadFile>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getAction, postAction } from '@/api/manage'
|
||||||
|
import uploadFile from '@/components/uploadFile/file'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'evaluatorFeedback',
|
||||||
|
components: {
|
||||||
|
uploadFile
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
feedbackDataList: {
|
||||||
|
type: Array,
|
||||||
|
default: (() => {
|
||||||
|
return []
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
formInline: {},
|
||||||
|
disabled: false,
|
||||||
|
rules: {
|
||||||
|
flag:[
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: this.$t('complianceResults') + this.$t('cannotEmpty'),
|
||||||
|
trigger: 'change'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
relatedSection: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: this.$t('relevantSections') + this.$t('cannotEmpty'),
|
||||||
|
trigger: 'blur'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
max: 300,
|
||||||
|
message: this.$t('relevantSections') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
|
||||||
|
trigger: 'blur'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
issueOrSuggest: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
message: this.$t('problemDescription') + this.$t('cannotEmpty'),
|
||||||
|
trigger: 'blur'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
max: 300,
|
||||||
|
message: this.$t('problemDescription') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
|
||||||
|
trigger: 'blur'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
uploadIndex: '',
|
||||||
|
dataList: []
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (this.feedbackDataList && this.feedbackDataList.length > 0) {
|
||||||
|
this.formInline.dataList = this.feedbackDataList
|
||||||
|
} else {
|
||||||
|
this.formInline.dataList = [
|
||||||
|
{
|
||||||
|
relatedSection: '',
|
||||||
|
issueOrSuggest: '',
|
||||||
|
reason: '',
|
||||||
|
accessoryFile: ''
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
this.formInline = { ...this.formInline }
|
||||||
|
})
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
clickButtonToUpload(item, index) {
|
||||||
|
this.$refs.uploadFile.perentHandleFunc()
|
||||||
|
this.$refs.uploadFile.visible = true
|
||||||
|
this.uploadName = item
|
||||||
|
this.uploadIndex = index
|
||||||
|
getAction('sys/common/getFileInfos', { id: this.formInline.dataList[this.uploadIndex][this.uploadName] }).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.$refs.uploadFile.perentHandleFunc(res.result)
|
||||||
|
} else {
|
||||||
|
this.$refs.uploadFile.perentHandleFunc()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/** 上传文件的回调 */
|
||||||
|
uploadSuccess(data) {
|
||||||
|
let attIdList = []
|
||||||
|
if (data && data.length > 0) {
|
||||||
|
data.map(item => {
|
||||||
|
attIdList.push(item.id || data.name)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/** 赋值给当前对应的表单文件 */
|
||||||
|
this.formInline.dataList[this.uploadIndex][this.uploadName] = attIdList.join(',')
|
||||||
|
this.formInline = [...this.formInline]
|
||||||
|
},
|
||||||
|
addData() {
|
||||||
|
this.formInline.dataList.push({
|
||||||
|
relatedSection: '',
|
||||||
|
issueOrSuggest: '',
|
||||||
|
reason: '',
|
||||||
|
accessoryFile: ''
|
||||||
|
})
|
||||||
|
this.formInline = [...this.formInline]
|
||||||
|
},
|
||||||
|
deleteData() {
|
||||||
|
this.formInline.dataList.pop()
|
||||||
|
this.formInline = [...this.formInline]
|
||||||
|
},
|
||||||
|
submitData(callBack){
|
||||||
|
this.$refs.ruleForm.validate(valid => {
|
||||||
|
if (valid) {
|
||||||
|
callBack && callBack(this.formInline)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
.box {
|
||||||
|
padding: 0 24px 24px 24px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-text {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
height: 60px;
|
||||||
|
line-height: 40px;
|
||||||
|
|
||||||
|
.header-text {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #000F16;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-title-text {
|
||||||
|
line-height: 1.4;
|
||||||
|
display: flex;
|
||||||
|
/*align-items: center;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.title-text {
|
||||||
|
width: 88px;
|
||||||
|
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: 48px;
|
||||||
|
color: #000F16;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-input {
|
||||||
|
display: inline-block;
|
||||||
|
height: 38px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.itemModel {
|
||||||
|
width: calc(100% - 130px);
|
||||||
|
display: inline-block;
|
||||||
|
margin-top: 2px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Required {
|
||||||
|
color: red;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title-text-text {
|
||||||
|
margin-top: 9px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-text {
|
||||||
|
height: 38px;
|
||||||
|
width: calc(100% - 100px);
|
||||||
|
line-height: 38px;
|
||||||
|
background: #fff;
|
||||||
|
border: 1px #00B3BE solid;
|
||||||
|
color: #00B3BE;
|
||||||
|
}
|
||||||
|
|
||||||
|
.feedbackPoint {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #000F16;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-size {
|
||||||
|
font-size: 18px;
|
||||||
|
margin-left: 8px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -0,0 +1,217 @@
|
|||||||
|
<template>
|
||||||
|
<div class="box">
|
||||||
|
<div class="box-text">
|
||||||
|
<div class="header-text">
|
||||||
|
{{title}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="content-text">
|
||||||
|
<a-table
|
||||||
|
ref="table"
|
||||||
|
:loading="loading"
|
||||||
|
:pagination="false"
|
||||||
|
:scroll="{x: '100%'}"
|
||||||
|
:data-source="dataSource"
|
||||||
|
:columns="columns"
|
||||||
|
>
|
||||||
|
</a-table>
|
||||||
|
</div>
|
||||||
|
<uploadFile ref="uploadFile" :disabled="disabled" @uploadSuccess="uploadSuccess"></uploadFile>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { getAction, postAction } from '@/api/manage'
|
||||||
|
import uploadFile from '@/components/uploadFile/file'
|
||||||
|
export default {
|
||||||
|
name: 'evaluatorFeedback',
|
||||||
|
components: {
|
||||||
|
uploadFile
|
||||||
|
},
|
||||||
|
props: {
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
disabled:false,
|
||||||
|
loading:false,
|
||||||
|
uploadIndex:'',
|
||||||
|
dataSource:[],
|
||||||
|
columns:[
|
||||||
|
{
|
||||||
|
title: this.$t('clauseNo'),
|
||||||
|
dataIndex: 'items_num',
|
||||||
|
align: 'center',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('clauseName'),
|
||||||
|
dataIndex: 'items_name',
|
||||||
|
align: 'center',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('clauseContent'),
|
||||||
|
dataIndex: 'iterms_conditions',
|
||||||
|
align: 'center',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('evaluationMethod'),
|
||||||
|
dataIndex: 'evaluationMethod',
|
||||||
|
align: 'center',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('nameTechnicalDocument'),
|
||||||
|
dataIndex: 'nameTechnicalDocument',
|
||||||
|
align: 'center',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('chapter'),
|
||||||
|
dataIndex: 'chapter',
|
||||||
|
align: 'center',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('opinion'),
|
||||||
|
dataIndex: 'opinion',
|
||||||
|
align: 'center',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('enclosure'),
|
||||||
|
dataIndex: 'enclosure',
|
||||||
|
align: 'center',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('complianceResults'),
|
||||||
|
dataIndex: 'complianceResults',
|
||||||
|
align: 'center',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
clickButtonToUpload(item,index) {
|
||||||
|
this.$refs.uploadFile.perentHandleFunc()
|
||||||
|
this.$refs.uploadFile.visible = true
|
||||||
|
this.uploadName = item
|
||||||
|
this.uploadIndex = index
|
||||||
|
getAction('sys/common/getFileInfos', { id: this.dataList[this.uploadIndex][this.uploadName] }).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
this.$refs.uploadFile.perentHandleFunc(res.result)
|
||||||
|
} else {
|
||||||
|
this.$refs.uploadFile.perentHandleFunc()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/** 上传文件的回调 */
|
||||||
|
uploadSuccess(data) {
|
||||||
|
let attIdList = []
|
||||||
|
if (data && data.length > 0) {
|
||||||
|
data.map(item => {
|
||||||
|
attIdList.push(item.id || data.name)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/** 赋值给当前对应的表单文件 */
|
||||||
|
this.dataList[this.uploadIndex][this.uploadName] = attIdList.join(',')
|
||||||
|
this.dataList = [...this.dataList]
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="less">
|
||||||
|
.box {
|
||||||
|
padding: 0 24px 24px 24px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-text {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
height: 60px;
|
||||||
|
line-height: 40px;
|
||||||
|
|
||||||
|
.header-text {
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #000F16;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-title-text {
|
||||||
|
line-height: 1.4;
|
||||||
|
display: flex;
|
||||||
|
/*align-items: center;*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.title-text {
|
||||||
|
width: 88px;
|
||||||
|
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: 48px;
|
||||||
|
color: #000F16;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-input {
|
||||||
|
display: inline-block;
|
||||||
|
height: 38px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.itemModel {
|
||||||
|
width: calc(100% - 130px);
|
||||||
|
display: inline-block;
|
||||||
|
margin-top: 2px;
|
||||||
|
margin-bottom: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Required {
|
||||||
|
color: red;
|
||||||
|
margin-right: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title-text-text {
|
||||||
|
margin-top: 9px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-text {
|
||||||
|
height: 38px;
|
||||||
|
width: calc(100% - 100px);
|
||||||
|
line-height: 38px;
|
||||||
|
background: #fff;
|
||||||
|
border: 1px #00B3BE solid;
|
||||||
|
color: #00B3BE;
|
||||||
|
}
|
||||||
|
|
||||||
|
.feedbackPoint {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
color: #000F16;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-size {
|
||||||
|
font-size: 18px;
|
||||||
|
margin-left: 8px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -7,16 +7,16 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="content-text">
|
<div class="content-text">
|
||||||
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
|
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
|
||||||
<div v-for="(item,index) in dataList" :key="index">
|
<div v-for="(item,index) in formInline.dataList" :key="index">
|
||||||
<div class="feedbackPoint">
|
<div class="feedbackPoint">
|
||||||
{{$t('feedbackPoint')+(index+1)}}
|
{{$t('feedbackPoint')+(index+1)}}
|
||||||
<a-icon class="icon-size"
|
<a-icon class="icon-size"
|
||||||
@click="addData"
|
@click="addData"
|
||||||
v-if="(dataList.length-1) == index"
|
v-if="(formInline.dataList.length-1) == index"
|
||||||
type="plus-circle"/>
|
type="plus-circle"/>
|
||||||
<a-icon class="icon-size"
|
<a-icon class="icon-size"
|
||||||
@click="deleteData"
|
@click="deleteData"
|
||||||
v-if="dataList.length > 1 && (dataList.length - 1) == index"
|
v-if="formInline.dataList.length > 1 && (formInline.dataList.length - 1) == index"
|
||||||
type="minus-circle"/>
|
type="minus-circle"/>
|
||||||
</div>
|
</div>
|
||||||
<a-row :gutter="24">
|
<a-row :gutter="24">
|
||||||
@@ -26,7 +26,11 @@
|
|||||||
<span class="Required">*</span>
|
<span class="Required">*</span>
|
||||||
<span class="title-text-text" :title="$t('relevantSections')">{{$t('relevantSections')}}</span>
|
<span class="title-text-text" :title="$t('relevantSections')">{{$t('relevantSections')}}</span>
|
||||||
</div>
|
</div>
|
||||||
<a-form-model-item class="itemModel" prop="relatedSection">
|
<a-form-model-item class="itemModel"
|
||||||
|
:prop="'dataList.'+index+'.relatedSection'"
|
||||||
|
:rules="[{ required: true, message: $t('relevantSections') + $t('cannotEmpty'), trigger: 'blur'},
|
||||||
|
{max: 300,message: $t('relevantSections') + $t('cannotExceed') + 300 + $t('Characters'),trigger: 'blur'
|
||||||
|
}]">
|
||||||
<a-input class="box-input"
|
<a-input class="box-input"
|
||||||
:disabled="disabled"
|
:disabled="disabled"
|
||||||
v-model="item.relatedSection"
|
v-model="item.relatedSection"
|
||||||
@@ -41,7 +45,10 @@
|
|||||||
<span class="title-text-text"
|
<span class="title-text-text"
|
||||||
:title="$t('questionsSuggestions')">{{$t('questionsSuggestions')}}</span>
|
:title="$t('questionsSuggestions')">{{$t('questionsSuggestions')}}</span>
|
||||||
</div>
|
</div>
|
||||||
<a-form-model-item class="itemModel" prop="issueOrSuggest">
|
<a-form-model-item class="itemModel" :prop="'dataList.'+index+'.issueOrSuggest'"
|
||||||
|
:rules="[{ required: true, message: $t('questionsSuggestions') + $t('cannotEmpty'), trigger: 'blur'},
|
||||||
|
{max: 300,message: $t('questionsSuggestions') + $t('cannotExceed') + 300 + $t('Characters'),trigger: 'blur'
|
||||||
|
}]">
|
||||||
<a-input class="box-input"
|
<a-input class="box-input"
|
||||||
:disabled="disabled"
|
:disabled="disabled"
|
||||||
v-model="item.issueOrSuggest"
|
v-model="item.issueOrSuggest"
|
||||||
@@ -101,44 +108,48 @@
|
|||||||
type: String,
|
type: String,
|
||||||
default: ''
|
default: ''
|
||||||
},
|
},
|
||||||
feedbackDataList:{
|
feedbackDataList: {
|
||||||
type: Array,
|
type: Array,
|
||||||
default: (()=>{
|
default: (() => {
|
||||||
return []
|
return []
|
||||||
})
|
})
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
formInline: {},
|
formInline: {},
|
||||||
disabled:false,
|
disabled: false,
|
||||||
rules: {},
|
rules: {},
|
||||||
uploadIndex:'',
|
uploadIndex: '',
|
||||||
dataList: []
|
dataList: []
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
if (this.feedbackDataList && this.feedbackDataList.length > 0){
|
this.$nextTick(() => {
|
||||||
this.dataList = this.feedbackDataList
|
if (this.feedbackDataList && this.feedbackDataList.length > 0) {
|
||||||
this.dataList = [...this.dataList]
|
this.formInline.dataList = this.feedbackDataList
|
||||||
}else{
|
this.formInline = { ...this.formInline }
|
||||||
this.dataList = [
|
} else {
|
||||||
{
|
this.formInline.dataList = [
|
||||||
relatedSection: '',
|
{
|
||||||
issueOrSuggest: '',
|
relatedSection: '',
|
||||||
reason: '',
|
issueOrSuggest: '',
|
||||||
accessoryFile: ''
|
reason: '',
|
||||||
}
|
accessoryFile: ''
|
||||||
]
|
}
|
||||||
}
|
]
|
||||||
|
}
|
||||||
|
this.formInline = { ...this.formInline }
|
||||||
|
})
|
||||||
|
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
clickButtonToUpload(item,index) {
|
clickButtonToUpload(item, index) {
|
||||||
this.$refs.uploadFile.perentHandleFunc()
|
this.$refs.uploadFile.perentHandleFunc()
|
||||||
this.$refs.uploadFile.visible = true
|
this.$refs.uploadFile.visible = true
|
||||||
this.uploadName = item
|
this.uploadName = item
|
||||||
this.uploadIndex = index
|
this.uploadIndex = index
|
||||||
getAction('sys/common/getFileInfos', { id: this.dataList[this.uploadIndex][this.uploadName] }).then((res) => {
|
getAction('sys/common/getFileInfos', { id: this.formInline.dataList[this.uploadIndex][this.uploadName] }).then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
this.$refs.uploadFile.perentHandleFunc(res.result)
|
this.$refs.uploadFile.perentHandleFunc(res.result)
|
||||||
} else {
|
} else {
|
||||||
@@ -155,21 +166,21 @@
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
/** 赋值给当前对应的表单文件 */
|
/** 赋值给当前对应的表单文件 */
|
||||||
this.dataList[this.uploadIndex][this.uploadName] = attIdList.join(',')
|
this.formInline.dataList[this.uploadIndex][this.uploadName] = attIdList.join(',')
|
||||||
this.dataList = [...this.dataList]
|
this.formInline = { ...this.formInline }
|
||||||
},
|
},
|
||||||
addData() {
|
addData() {
|
||||||
this.dataList.push({
|
this.formInline.dataList.push({
|
||||||
relatedSection: '',
|
relatedSection: '',
|
||||||
issueOrSuggest: '',
|
issueOrSuggest: '',
|
||||||
reason: '',
|
reason: '',
|
||||||
accessoryFile: ''
|
accessoryFile: ''
|
||||||
})
|
})
|
||||||
this.dataList = [...this.dataList]
|
this.formInline = { ...this.formInline }
|
||||||
},
|
},
|
||||||
deleteData() {
|
deleteData() {
|
||||||
this.dataList.pop()
|
this.formInline.dataList.pop()
|
||||||
this.dataList = [...this.dataList]
|
this.formInline = { ...this.formInline }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,11 +12,16 @@
|
|||||||
:url="url"
|
:url="url"
|
||||||
:standardContentQuery="queryProject"
|
:standardContentQuery="queryProject"
|
||||||
/>
|
/>
|
||||||
<feedbackInformation
|
<evaluatorFeedback
|
||||||
v-if="isDisplay"
|
v-if="isDisplay"
|
||||||
ref="feedbackInformationRef"
|
ref="evaluatorFeedbackRef"
|
||||||
:feedbackDataList="feedbackDataList"
|
:feedbackDataList="feedbackDataList"
|
||||||
:title="$t('feedbackInformation')"
|
:title="$t('evaluatorFeedback')"
|
||||||
|
/>
|
||||||
|
<evaluatorFeedbackList
|
||||||
|
v-if="isDisplay"
|
||||||
|
ref="evaluatorFeedbackListRef"
|
||||||
|
:title="$t('evaluatorFeedback')"
|
||||||
/>
|
/>
|
||||||
<footerProcess
|
<footerProcess
|
||||||
v-if="isDisplay"
|
v-if="isDisplay"
|
||||||
@@ -37,7 +42,8 @@
|
|||||||
import standardContent from '../../components/standardContent'
|
import standardContent from '../../components/standardContent'
|
||||||
import circulationHistory from '../../components/regulatoryCirculationHistory'
|
import circulationHistory from '../../components/regulatoryCirculationHistory'
|
||||||
import footerProcess from '../../components/footerProcess'
|
import footerProcess from '../../components/footerProcess'
|
||||||
import feedbackInformation from '../../components/feedbackInformation'
|
import evaluatorFeedback from '../../components/evaluatorFeedback'
|
||||||
|
import evaluatorFeedbackList from '../../components/evaluatorFeedbackList'
|
||||||
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
|
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
|
||||||
import moment from 'moment'
|
import moment from 'moment'
|
||||||
import { mapGetters } from 'vuex'
|
import { mapGetters } from 'vuex'
|
||||||
@@ -48,10 +54,10 @@
|
|||||||
standardContent,
|
standardContent,
|
||||||
circulationHistory,
|
circulationHistory,
|
||||||
footerProcess,
|
footerProcess,
|
||||||
feedbackInformation
|
evaluatorFeedback,
|
||||||
|
evaluatorFeedbackList
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
|
||||||
return {
|
return {
|
||||||
title: this.$t('collectionOfRegulatoryOpinions'),
|
title: this.$t('collectionOfRegulatoryOpinions'),
|
||||||
url: {
|
url: {
|
||||||
@@ -80,14 +86,17 @@
|
|||||||
value: 'endTime'
|
value: 'endTime'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: this.$t('enclosure'),
|
title: this.$t('evaluationMethod'),
|
||||||
value: 'accessory_id',
|
value: 'evaluationMethod',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: this.$t('RelevantMaterials'),
|
||||||
|
value: 'RelevantMaterials',
|
||||||
type: 2
|
type: 2
|
||||||
},
|
},
|
||||||
{},
|
|
||||||
{
|
{
|
||||||
title: this.$t('taskDescription'),
|
title: this.$t('processBackground'),
|
||||||
value: 'taskExplain'
|
value: 'processBackground'
|
||||||
}
|
}
|
||||||
// {
|
// {
|
||||||
// title: this.$t('remarks'),
|
// title: this.$t('remarks'),
|
||||||
@@ -97,10 +106,10 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.isDisplay = false
|
this.isDisplay = true
|
||||||
this.queryTaskDetailByTask(() => {
|
// this.queryTaskDetailByTask(() => {
|
||||||
this.lawsOpinionAssessmentResult()
|
// this.lawsOpinionAssessmentResult()
|
||||||
})
|
// })
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapGetters(['userInfo']),
|
...mapGetters(['userInfo']),
|
||||||
@@ -161,8 +170,9 @@
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
submit() {
|
submit() {
|
||||||
let dataList = this.$refs.feedbackInformationRef.dataList
|
this.$refs.evaluatorFeedbackRef.submitData()
|
||||||
this.insertBatch(dataList, 2)
|
// let dataList = this.$refs.feedbackInformationRef.dataList
|
||||||
|
// this.insertBatch(dataList, 2)
|
||||||
},
|
},
|
||||||
completeTask() {
|
completeTask() {
|
||||||
let query = {
|
let query = {
|
||||||
|
|||||||
@@ -134,7 +134,7 @@
|
|||||||
},
|
},
|
||||||
preservation() {
|
preservation() {
|
||||||
this.loading = true
|
this.loading = true
|
||||||
let dataList = this.$refs.feedbackInformationRef.dataList
|
let dataList = this.$refs.feedbackInformationRef.formInline.dataList
|
||||||
this.insertBatch(dataList, 1)
|
this.insertBatch(dataList, 1)
|
||||||
},
|
},
|
||||||
insertBatch(list, num) {
|
insertBatch(list, num) {
|
||||||
@@ -162,7 +162,7 @@
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
submit() {
|
submit() {
|
||||||
let dataList = this.$refs.feedbackInformationRef.dataList
|
let dataList = this.$refs.feedbackInformationRef.formInline.dataList
|
||||||
this.insertBatch(dataList, 2)
|
this.insertBatch(dataList, 2)
|
||||||
},
|
},
|
||||||
completeTask() {
|
completeTask() {
|
||||||
|
|||||||
@@ -154,8 +154,8 @@
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
dealWith(row) {
|
dealWith(row) {
|
||||||
let index = row.taskIds.lastIndexOf(',')
|
// let index = row.taskIds.lastIndexOf(',')
|
||||||
row.taskIds = row.taskIds.slice(0, index)
|
// row.taskIds = row.taskIds.slice(0, index)
|
||||||
if (row.prcType == '1') {
|
if (row.prcType == '1') {
|
||||||
let newUrl = this.$router.resolve({
|
let newUrl = this.$router.resolve({
|
||||||
path: '/handshakeProcess',
|
path: '/handshakeProcess',
|
||||||
|
|||||||
Reference in New Issue
Block a user