Merge remote-tracking branch 'origin/master'
This commit is contained in:
+3
-1
@@ -1,6 +1,7 @@
|
||||
package com.jero.modules.cert.template.controller;
|
||||
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@@ -233,7 +234,8 @@ public class ParamsInfoEOController extends JeroController<ParamsInfoEO, IParams
|
||||
HttpServletRequest request) {
|
||||
String cut = (String) map.get("cut");
|
||||
String exportName = (String) map.get("exportName");
|
||||
ParamsInfoVO paramsInfoVO = (ParamsInfoVO) map.get("paramsInfoVO");
|
||||
String paramsInfoVOJson = (String) map.get("paramsInfoVO");
|
||||
ParamsInfoVO paramsInfoVO = JSONObject.parseObject(paramsInfoVOJson, ParamsInfoVO.class);
|
||||
paramsInfoEOService.exportParamsInfo(cut, paramsInfoVO, exportName, response, request);
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -19,11 +19,11 @@ public interface CertCategoryParamsInfoEOMapper extends BaseMapper<CertCategoryP
|
||||
* @param nioNumber
|
||||
* @return
|
||||
*/
|
||||
List<CertCategoryParamsInfoEO> selectListByNioNumber(@Param("nioNumber") String nioNumber);
|
||||
List<CertCategoryParamsInfoEO> selectListByNioNumberAndTemplateId(@Param("nioNumber") String nioNumber, @Param("paramsTemplateId") String paramsTemplateId);
|
||||
|
||||
List<CertCategoryParamsInfoEO> selectListByParamsTemplateIds(@Param("paramsTemplateIds") String paramsTemplateIds);
|
||||
|
||||
int deleteByNioNumberList(@Param("list") List<String> nioNumberList);
|
||||
int deleteByNioNumberListAndTemplateId(@Param("list") List<String> nioNumberList, @Param("paramsTemplateId") String paramsTemplateId);
|
||||
|
||||
int deleteByParamsTemplateIds(@Param("paramsTemplateIds") String paramsTemplateIds);
|
||||
}
|
||||
|
||||
+6
-4
@@ -16,10 +16,11 @@
|
||||
<result column="params_template_id" property="paramsTemplateId" />
|
||||
</resultMap>
|
||||
|
||||
<select id="selectListByNioNumber" resultMap="CertCategoryParamsInfoEOResultMap" parameterType="java.lang.String">
|
||||
<select id="selectListByNioNumberAndTemplateId" resultMap="CertCategoryParamsInfoEOResultMap">
|
||||
select *
|
||||
from cert_category_params_info
|
||||
where nio_number in
|
||||
where params_template_id = #{paramsTemplateId}
|
||||
and nio_number in
|
||||
<foreach collection="nioNumber.split(',')" index="index" separator="," open="(" close=")" item="item">
|
||||
#{item}
|
||||
</foreach>
|
||||
@@ -34,9 +35,10 @@
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
<delete id="deleteByNioNumberList" parameterType="java.util.List">
|
||||
<delete id="deleteByNioNumberListAndTemplateId">
|
||||
delete from cert_category_params_info
|
||||
where nio_number in
|
||||
where params_template_id = #{paramsTemplateId}
|
||||
and nio_number in
|
||||
<foreach collection="list" index="index" separator="," open="(" close=")" item="nioNumber">
|
||||
#{nioNumber}
|
||||
</foreach>
|
||||
|
||||
+3
-4
@@ -1,8 +1,7 @@
|
||||
package com.jero.modules.cert.template.service;
|
||||
|
||||
import com.jero.modules.cert.template.entity.CertCategoryParamsInfoEO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.jero.modules.cert.template.entity.CertCategoryParamsInfoEO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -61,11 +60,11 @@ public interface ICertCategoryParamsInfoEOService extends IService<CertCategoryP
|
||||
*/
|
||||
List<CertCategoryParamsInfoEO> queryList();
|
||||
|
||||
List<CertCategoryParamsInfoEO> selectListByNioNumber(String nioNumber);
|
||||
List<CertCategoryParamsInfoEO> selectListByNioNumber(String nioNumber, String paramsTemplateId);
|
||||
|
||||
List<CertCategoryParamsInfoEO> selectListByParamsTemplateIds(String paramsTemplateIds);
|
||||
|
||||
int deleteByNioNumberList(List<String> nioNumberList);
|
||||
int deleteByNioNumberList(List<String> nioNumberList, String paramsTemplateId);
|
||||
|
||||
int deleteByParamsTemplateIds(String paramsTemplateIds);
|
||||
}
|
||||
|
||||
+9
-6
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.modules.cert.template.entity.CertCategoryParamsInfoEO;
|
||||
import com.jero.modules.cert.template.mapper.CertCategoryParamsInfoEOMapper;
|
||||
import com.jero.modules.cert.template.service.ICertCategoryParamsInfoEOService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Date;
|
||||
@@ -18,6 +19,8 @@ import java.util.List;
|
||||
@Service
|
||||
public class CertCategoryParamsInfoEOServiceImpl extends ServiceImpl<CertCategoryParamsInfoEOMapper, CertCategoryParamsInfoEO> implements ICertCategoryParamsInfoEOService {
|
||||
|
||||
@Autowired
|
||||
private CertCategoryParamsInfoEOMapper certCategoryParamsInfoEOMapper;
|
||||
/**
|
||||
* 保存
|
||||
*
|
||||
@@ -89,22 +92,22 @@ public class CertCategoryParamsInfoEOServiceImpl extends ServiceImpl<CertCategor
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CertCategoryParamsInfoEO> selectListByNioNumber(String nioNumber) {
|
||||
return baseMapper.selectListByNioNumber(nioNumber);
|
||||
public List<CertCategoryParamsInfoEO> selectListByNioNumber(String nioNumber, String paramsTemplateId) {
|
||||
return certCategoryParamsInfoEOMapper.selectListByNioNumberAndTemplateId(nioNumber, paramsTemplateId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<CertCategoryParamsInfoEO> selectListByParamsTemplateIds(String paramsTemplateIds) {
|
||||
return baseMapper.selectListByParamsTemplateIds(paramsTemplateIds);
|
||||
return certCategoryParamsInfoEOMapper.selectListByParamsTemplateIds(paramsTemplateIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int deleteByNioNumberList(List<String> nioNumberList) {
|
||||
return baseMapper.deleteByNioNumberList(nioNumberList);
|
||||
public int deleteByNioNumberList(List<String> nioNumberList, String paramsTemplateId) {
|
||||
return certCategoryParamsInfoEOMapper.deleteByNioNumberListAndTemplateId(nioNumberList, paramsTemplateId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int deleteByParamsTemplateIds(String paramsTemplateIds) {
|
||||
return baseMapper.deleteByParamsTemplateIds(paramsTemplateIds);
|
||||
return certCategoryParamsInfoEOMapper.deleteByParamsTemplateIds(paramsTemplateIds);
|
||||
}
|
||||
}
|
||||
|
||||
+41
-24
@@ -69,6 +69,8 @@ import static com.jero.modules.split.util.ExcelUtil.checkObjAllFieldsIsNull;
|
||||
@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
|
||||
public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, ParamsInfoEO> implements IParamsInfoEOService {
|
||||
|
||||
@Autowired
|
||||
private ParamsInfoEOMapper paramsInfoEOMapper;
|
||||
@Autowired
|
||||
private ICertCategoryParamsInfoEOService certCategoryParamsInfoEOService;
|
||||
|
||||
@@ -160,7 +162,7 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
||||
ParamsInfoEO oldParamsInfoEO = getById(paramsInfoId);
|
||||
String oldNioNumber = oldParamsInfoEO.getNioNumber();
|
||||
// 认证类别参数项 先删除后添加
|
||||
certCategoryParamsInfoEOService.deleteByNioNumberList(Arrays.asList(oldNioNumber));
|
||||
certCategoryParamsInfoEOService.deleteByNioNumberList(Arrays.asList(oldNioNumber), paramsTemplateId);
|
||||
|
||||
// 批量添加认证类别参数项
|
||||
List<CertCategoryParamsInfoEO> certCategoryParamsInfoEOList = paramsInfoEO.getCertCategoryParamsInfoEOList();
|
||||
@@ -195,7 +197,8 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
||||
// 关联删除认证类别参数项
|
||||
ParamsInfoEO paramsInfoEO = getById(id);
|
||||
String nioNumber = paramsInfoEO.getNioNumber();
|
||||
certCategoryParamsInfoEOService.deleteByNioNumberList(Arrays.asList(nioNumber));
|
||||
String paramsTemplateId = paramsInfoEO.getParamsTemplateId();
|
||||
certCategoryParamsInfoEOService.deleteByNioNumberList(Arrays.asList(nioNumber), paramsTemplateId);
|
||||
// TODO 关联删除附件模板文件信息和文件
|
||||
removeById(id);
|
||||
}
|
||||
@@ -212,9 +215,10 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
||||
queryWrapper.in(ParamsInfoEO::getId, ids);
|
||||
List<ParamsInfoEO> paramsInfoEOList = list(queryWrapper);
|
||||
if (CollectionUtil.isNotEmpty(paramsInfoEOList)) {
|
||||
String paramsTemplateId = paramsInfoEOList.get(0).getParamsTemplateId();
|
||||
List<String> nioNumberList = paramsInfoEOList.stream().map(ParamsInfoEO::getNioNumber).collect(Collectors.toList());
|
||||
// 关联删除认证类别参数项
|
||||
certCategoryParamsInfoEOService.deleteByNioNumberList(nioNumberList);
|
||||
certCategoryParamsInfoEOService.deleteByNioNumberList(nioNumberList, paramsTemplateId);
|
||||
// TODO 关联删除附件模板文件信息和文件
|
||||
}
|
||||
|
||||
@@ -231,7 +235,15 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
||||
public ParamsInfoEO queryById(String id) {
|
||||
ParamsInfoEO paramsInfoEO = getById(id);
|
||||
// 关联查询认证类别参数
|
||||
List<CertCategoryParamsInfoEO> certCategoryParamsInfoEOList = certCategoryParamsInfoEOService.selectListByNioNumber(paramsInfoEO.getNioNumber());
|
||||
List<CertCategoryParamsInfoEO> certCategoryParamsInfoEOList = certCategoryParamsInfoEOService.selectListByNioNumber(paramsInfoEO.getNioNumber(), paramsInfoEO.getParamsTemplateId());
|
||||
|
||||
// 认证类别 数据字典 map
|
||||
List<SysDictItem> sysDictItemList = sysDictItemService.selectItemsByDictCode("cert_category");
|
||||
Map<String, String> certCategoryMap = sysDictItemList.stream().collect(Collectors.toMap(c->c.getItemValue(), c->c.getItemText()));
|
||||
|
||||
for (CertCategoryParamsInfoEO certCategoryParamsInfoEO : certCategoryParamsInfoEOList) {
|
||||
certCategoryParamsInfoEO.setCertCategory_dictText(certCategoryMap.get(certCategoryParamsInfoEO.getCertCategory()));
|
||||
}
|
||||
paramsInfoEO.setCertCategoryParamsInfoEOList(certCategoryParamsInfoEOList);
|
||||
return paramsInfoEO;
|
||||
}
|
||||
@@ -345,20 +357,21 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
||||
nowFile.mkdirs();
|
||||
|
||||
String fileName = exportName + ".xlsx";
|
||||
String paramsTemplateId = paramsInfoVO.getParamsTemplateId();
|
||||
if (CutEnum.CN.getValue().equals(cut)) {
|
||||
// 查询导出数据
|
||||
List<ParamsInfoEO> paramsInfoEOList = baseMapper.selectListWithCert(paramsInfoVO); // 中文数据导出
|
||||
List<ParamsInfoEO> paramsInfoEOList = paramsInfoEOMapper.selectListWithCert(paramsInfoVO); // 中文数据导出
|
||||
getTreeDictItemText(paramsInfoEOList, cut);
|
||||
List<Map<String, Object>> sheetsList = new ArrayList<>();
|
||||
sheetsList = getCnExportSheetsList(paramsInfoEOList, fileNowPath);
|
||||
sheetsList = getCnExportSheetsList(paramsInfoEOList, fileNowPath, paramsTemplateId);
|
||||
workbook = ExcelExportUtil.exportExcel(sheetsList, ExcelType.XSSF);
|
||||
|
||||
} else if (CutEnum.EN.getValue().equals(cut)) {
|
||||
// 查询导出数据
|
||||
List<ParamsInfoEnExport> paramsInfoEnExportList = baseMapper.selectListWithCertForEnExport(paramsInfoVO); // 英文数据导出
|
||||
List<ParamsInfoEnExport> paramsInfoEnExportList = paramsInfoEOMapper.selectListWithCertForEnExport(paramsInfoVO); // 英文数据导出
|
||||
getTreeDictItemTextForEnExport(paramsInfoEnExportList);
|
||||
List<Map<String, Object>> sheetsList = new ArrayList<>();
|
||||
sheetsList = getEnExportSheetsList(paramsInfoEnExportList, fileNowPath);
|
||||
sheetsList = getEnExportSheetsList(paramsInfoEnExportList, fileNowPath, paramsTemplateId);
|
||||
workbook = ExcelExportUtil.exportExcel(sheetsList, ExcelType.XSSF);
|
||||
}
|
||||
|
||||
@@ -391,7 +404,7 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
||||
}
|
||||
}
|
||||
|
||||
private List<Map<String, Object>> getCnExportSheetsList(List<ParamsInfoEO> paramsInfoEOList, String fileNowPath) throws IOException {
|
||||
private List<Map<String, Object>> getCnExportSheetsList(List<ParamsInfoEO> paramsInfoEOList, String fileNowPath, String paramsTemplateId) throws IOException {
|
||||
|
||||
if (CollectionUtil.isEmpty(paramsInfoEOList)) {
|
||||
throw new JeroBootException("没有可导出的数据");
|
||||
@@ -411,7 +424,7 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
||||
|
||||
// 查询导出参数项中认证类别最大级
|
||||
List<String> nioNumber = paramsInfoEOList.stream().map(ParamsInfoEO::getNioNumber).collect(Collectors.toList());
|
||||
List<CertCategoryParamsInfoEO> certCategoryParamsInfoEOList = certCategoryParamsInfoEOService.selectListByNioNumber(StringUtils.join(nioNumber, ","));
|
||||
List<CertCategoryParamsInfoEO> certCategoryParamsInfoEOList = certCategoryParamsInfoEOService.selectListByNioNumber(StringUtils.join(nioNumber, ","),paramsTemplateId);
|
||||
List<String> certCategoryNameList = new ArrayList<>();
|
||||
Map<String, String> certCategoryMap = new HashMap<>();
|
||||
if (CollectionUtil.isNotEmpty(certCategoryParamsInfoEOList)) {
|
||||
@@ -478,7 +491,7 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
||||
return sheetsList;
|
||||
}
|
||||
|
||||
private List<Map<String, Object>> getEnExportSheetsList(List<ParamsInfoEnExport> paramsInfoEnExportList, String fileNowPath) throws IOException {
|
||||
private List<Map<String, Object>> getEnExportSheetsList(List<ParamsInfoEnExport> paramsInfoEnExportList, String fileNowPath, String paramsTemplateId) throws IOException {
|
||||
|
||||
if (CollectionUtil.isEmpty(paramsInfoEnExportList)) {
|
||||
throw new JeroBootException("没有可导出的数据");
|
||||
@@ -498,7 +511,7 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
||||
|
||||
// 查询导出参数项中认证类别最大级
|
||||
List<String> nioNumber = paramsInfoEnExportList.stream().map(ParamsInfoEnExport::getNioNumber).collect(Collectors.toList());
|
||||
List<CertCategoryParamsInfoEO> certCategoryParamsInfoEOList = certCategoryParamsInfoEOService.selectListByNioNumber(StringUtils.join(nioNumber, ","));
|
||||
List<CertCategoryParamsInfoEO> certCategoryParamsInfoEOList = certCategoryParamsInfoEOService.selectListByNioNumber(StringUtils.join(nioNumber, ","),paramsTemplateId);
|
||||
List<String> certCategoryNameList = new ArrayList<>();
|
||||
Map<String, String> certCategoryMap = new HashMap<>();
|
||||
if (CollectionUtil.isNotEmpty(certCategoryParamsInfoEOList)) {
|
||||
@@ -798,17 +811,21 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
||||
if (checkObjAllFieldsIsNull(importDto)) {
|
||||
continue;
|
||||
}
|
||||
String[] fileIdList = importDto.getFileTemplateName().split(",");
|
||||
String connectId = UUID.randomUUID().toString().replace("-", "");
|
||||
List<OSSFile> updateFileList = new ArrayList<>();
|
||||
for (int i=0; i<fileIdList.length; i++) {
|
||||
OSSFile ossFile = new OSSFile();
|
||||
ossFile.setId(fileIdList[i]);
|
||||
ossFile.setConnectId(connectId);
|
||||
|
||||
// 处理文件connectId
|
||||
if (StringUtils.isNotBlank(importDto.getFileTemplateName())) { // 判空,否则报空指针异常
|
||||
String[] fileIdList = importDto.getFileTemplateName().split(",");
|
||||
String connectId = UUID.randomUUID().toString().replace("-", "");
|
||||
List<OSSFile> updateFileList = new ArrayList<>();
|
||||
for (int i = 0; i < fileIdList.length; i++) {
|
||||
OSSFile ossFile = new OSSFile();
|
||||
ossFile.setId(fileIdList[i]);
|
||||
ossFile.setConnectId(connectId);
|
||||
updateFileList.add(ossFile);
|
||||
}
|
||||
ossFileService.updateBatchById(updateFileList);
|
||||
importDto.setFileTemplateConnectId(connectId);
|
||||
}
|
||||
ossFileService.updateBatchById(updateFileList);
|
||||
importDto.setFileTemplateConnectId(connectId);
|
||||
|
||||
ParamsInfoEO target = new ParamsInfoEO();
|
||||
BeanUtils.copyProperties(importDto, target);
|
||||
target.setId(UUID.randomUUID().toString().replace("-",""));
|
||||
@@ -1314,11 +1331,11 @@ public class ParamsInfoEOServiceImpl extends ServiceImpl<ParamsInfoEOMapper, Par
|
||||
|
||||
@Override
|
||||
public int deleteByParamsTemplateIds(String paramsTemplateIds) {
|
||||
return baseMapper.deleteByParamsTemplateIds(paramsTemplateIds);
|
||||
return paramsInfoEOMapper.deleteByParamsTemplateIds(paramsTemplateIds);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ParamsInfoEO> selectListByParamsTemplateIds(String paramsTemplateIds) {
|
||||
return baseMapper.selectListByParamsTemplateIds(paramsTemplateIds);
|
||||
return paramsInfoEOMapper.selectListByParamsTemplateIds(paramsTemplateIds);
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -2363,7 +2363,7 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
|
||||
}
|
||||
}
|
||||
|
||||
private void sendWebsocket(String msgId, String msgTet) {
|
||||
public void sendWebsocket(String msgId, String msgTet) {
|
||||
JSONObject obj = new JSONObject();
|
||||
obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_TOPIC);
|
||||
obj.put(WebsocketConst.MSG_ID, msgId);
|
||||
@@ -2424,7 +2424,7 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
|
||||
|
||||
|
||||
@NotNull
|
||||
private SysAnnouncement getSysAnnouncement(List<String> userIdList, String content, String contentInfo) {
|
||||
public SysAnnouncement getSysAnnouncement(List<String> userIdList, String content, String contentInfo) {
|
||||
SysAnnouncement sysAnnouncement = new SysAnnouncement();
|
||||
sysAnnouncement.setDelFlag("0");
|
||||
sysAnnouncement.setSendStatus("0");
|
||||
|
||||
+13
-8
@@ -1,7 +1,8 @@
|
||||
package com.jero.modules.dummy.service;
|
||||
|
||||
import com.jero.modules.dummy.entity.DummyReadEO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.jero.modules.dummy.entity.DummyReadEO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -18,7 +19,7 @@ public interface IDummyReadEOService extends IService<DummyReadEO> {
|
||||
* @param dummyReadEO
|
||||
* @return
|
||||
*/
|
||||
void add(DummyReadEO dummyReadEO);
|
||||
void add(DummyReadEO dummyReadEO);
|
||||
|
||||
/**
|
||||
* 更新
|
||||
@@ -26,7 +27,7 @@ public interface IDummyReadEOService extends IService<DummyReadEO> {
|
||||
* @param dummyReadEO
|
||||
* @return
|
||||
*/
|
||||
void editById(DummyReadEO dummyReadEO);
|
||||
void editById(DummyReadEO dummyReadEO);
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
@@ -34,7 +35,7 @@ public interface IDummyReadEOService extends IService<DummyReadEO> {
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
void deleteById(String id);
|
||||
void deleteById(String id);
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
@@ -42,7 +43,7 @@ public interface IDummyReadEOService extends IService<DummyReadEO> {
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
void deleteByIds(List<String> ids);
|
||||
void deleteByIds(List<String> ids);
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
@@ -50,12 +51,16 @@ public interface IDummyReadEOService extends IService<DummyReadEO> {
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
DummyReadEO queryById(String id);
|
||||
DummyReadEO queryById(String id);
|
||||
|
||||
/**
|
||||
/**
|
||||
* 列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
List<DummyReadEO> queryList();
|
||||
List<DummyReadEO> queryList();
|
||||
|
||||
|
||||
/**查询订阅虚拟清单的用户*/
|
||||
List<String> queryReadUserInfo(String dummyInventoryBaseId);
|
||||
}
|
||||
|
||||
+235
-33
@@ -6,7 +6,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.common.constant.enums.MessageTypeEnum;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.modules.document.service.impl.BussDocumentLibraryEOServiceImpl;
|
||||
import com.jero.modules.domain.service.DomainUserRelService;
|
||||
import com.jero.modules.dummy.entity.DummyContentChangeEO;
|
||||
import com.jero.modules.dummy.entity.DummyInventoryBaseEO;
|
||||
import com.jero.modules.dummy.entity.DummyInventoryInfoEO;
|
||||
@@ -19,16 +22,23 @@ import com.jero.modules.dummy.service.IDummyInventoryBaseEOService;
|
||||
import com.jero.modules.dummy.service.IDummyInventoryInfoEOService;
|
||||
import com.jero.modules.dummy.service.IDummyReadEOService;
|
||||
import com.jero.modules.dummy.util.ListDiff;
|
||||
import com.jero.modules.feishu.service.IFeishuService;
|
||||
import com.jero.modules.message.websocket.WebSocket;
|
||||
import com.jero.modules.system.entity.SysAnnouncement;
|
||||
import com.jero.modules.system.entity.SysUser;
|
||||
import com.jero.modules.system.service.ISysAnnouncementService;
|
||||
import com.jero.modules.system.service.ISysUserService;
|
||||
import org.apache.commons.collections.MapUtils;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.annotation.Resource;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -50,8 +60,18 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
|
||||
private IDummyContentChangeEOService iDummyContentChangeEOService;
|
||||
@Autowired
|
||||
private IDummyInventoryInfoEOService iDummyInventoryInfoEOService;
|
||||
|
||||
|
||||
@Autowired
|
||||
private BussDocumentLibraryEOServiceImpl bussDocumentLibraryEOService;
|
||||
@Autowired
|
||||
private DomainUserRelService domainUserRelService;
|
||||
@Autowired
|
||||
private ISysAnnouncementService sysAnnouncementService;
|
||||
@Value(value = "${jero.backUrl}")
|
||||
private String backUrl;
|
||||
@Resource
|
||||
private IFeishuService iFeishuService;
|
||||
@Resource
|
||||
private WebSocket webSocket;
|
||||
/**
|
||||
* 保存
|
||||
*
|
||||
@@ -193,7 +213,7 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
|
||||
//发布与撤回均需要发消息(向订阅的人员发消息)
|
||||
//首次发布不发消息
|
||||
//(1)首次发布将虚拟清单的基础数据和详情数据存入维护清单内容变更表_dummy_content_change
|
||||
//(2)撤回再次编辑完后再次发布
|
||||
//(2)撤回再次编辑完后再次发布,发消息
|
||||
//A. 分别判断基础数据和详情数据同上次发布的数据是否发生变化
|
||||
//发生变化-->发消息,删除dummy_content_change中上一次存入的数据,将本次数据存入
|
||||
//没有变化-->不发消息,数据不处理
|
||||
@@ -257,7 +277,6 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
|
||||
baseCJList.get(i);
|
||||
dummyInventoryBaseEOList.get(i);
|
||||
baseDiff = ListDiff.compareObject(baseCJList.get(i), dummyInventoryBaseEOList.get(i));
|
||||
System.out.println(baseDiff);//不同的字段原,现,{name=[虚拟清单33331122211, 虚拟清单3333444]}
|
||||
}
|
||||
|
||||
//4.对比详情表数据
|
||||
@@ -266,40 +285,60 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
|
||||
|
||||
//4.2详情表数据(一条基础数据可能对应多个详情数据---一对多)
|
||||
//数据库里原来的详情数据
|
||||
for(DummyContentChangeEO dummyContentChangeEO : dummyContentChangeEOInfoList){
|
||||
Map<String, String> infoDiff = null;
|
||||
List<Map<String, String>> infoDiffList=null;
|
||||
String addSerialNumber=null;
|
||||
String deleteSerialNumber=null;
|
||||
List<String> addSerialNumberList =null;
|
||||
List<String> deleteSerialNumberList =null;
|
||||
//对比,获取值不同的字段
|
||||
for(DummyContentChangeEO dummyContentChangeEO : dummyContentChangeEOInfoList) {
|
||||
String infoCJ = dummyContentChangeEO.getContentJson();
|
||||
List<DummyInventoryInfoEO> infoCJList = JSONArray.parseArray(infoCJ,DummyInventoryInfoEO.class);//json转list
|
||||
//对比,获取值不同的字段
|
||||
Map<String, String> infoDiff = null;
|
||||
if(infoCJList.size()==dummyInventoryInfoEOList.size()) {//现在的详情数据数量和数据库里的一样
|
||||
for (int i = 0; i < infoCJList.size(); i++) {
|
||||
DummyInventoryInfoEO h = infoCJList.get(i);
|
||||
DummyInventoryInfoEO g = dummyInventoryInfoEOList.get(i);
|
||||
infoDiff = ListDiff.compareObject(infoCJList.get(i), dummyInventoryInfoEOList.get(i));
|
||||
System.out.println(infoDiff);//不同的字段原,现
|
||||
}
|
||||
}else{//现在的详情数据数量和数据库里的不一样<--详情的id不一样
|
||||
String diffId=null;
|
||||
StringBuilder diffIdBuilder=new StringBuilder();
|
||||
for(DummyInventoryInfoEO dummyInventoryInfoEO : infoCJList) {
|
||||
diffId = dummyInventoryInfoEOList.stream().filter(e -> !dummyInventoryInfoEO.equals(e.getId()))
|
||||
.map(f->f.getId()).collect(Collectors.joining(","));
|
||||
diffIdBuilder.append(diffId).append(",");
|
||||
|
||||
}
|
||||
diffIdBuilder.substring(0,diffIdBuilder.toString().length()-1);
|
||||
List<DummyInventoryInfoEO> infoCJList = JSONArray.parseArray(infoCJ, DummyInventoryInfoEO.class);//json转list
|
||||
//获取数据库和传入同时存在的编号
|
||||
List<String> infoCJBaseSerialNumberList = infoCJList.stream().map(e -> e.getSerialNumber()).collect(Collectors.toList());
|
||||
List<String> dummyInventoryInfoEOSerialNumberList = dummyInventoryInfoEOList.stream().map(e -> e.getSerialNumber()).collect(Collectors.toList());
|
||||
if (CollectionUtils.isNotEmpty(dummyInventoryInfoEOSerialNumberList)) {
|
||||
dummyInventoryInfoEOSerialNumberList.removeIf(s -> !infoCJBaseSerialNumberList.contains(s));
|
||||
|
||||
}
|
||||
System.out.println(infoCJList);
|
||||
System.out.println(dummyInventoryInfoEOSerialNumberList);
|
||||
|
||||
//4.2.1处理原有详情数据
|
||||
for (int i = 0; i < infoCJList.size(); i++) {
|
||||
infoDiff = ListDiff.compareObject(infoCJList.get(i), dummyInventoryInfoEOList.get(i));
|
||||
infoDiffList.add(infoDiff);
|
||||
}
|
||||
|
||||
//4.2.2处理新增数据
|
||||
List<String> infoCJSerialNumberList = infoCJList.stream().map(e -> e.getSerialNumber()).collect(Collectors.toList());
|
||||
for (DummyInventoryInfoEO dummyInventoryInfoEO : infoCJList) {
|
||||
addSerialNumberList = dummyInventoryInfoEOList.stream().filter(e -> !dummyInventoryInfoEO.equals(e.getId()))
|
||||
.map(f -> f.getSerialNumber()).collect(Collectors.toList());
|
||||
}
|
||||
//去掉发布时传入的和数据库同时有的数据
|
||||
for(String midSerialNumber:infoCJSerialNumberList){
|
||||
addSerialNumberList.remove(midSerialNumber);
|
||||
}
|
||||
addSerialNumber =StringUtils.join(addSerialNumberList,",");
|
||||
|
||||
|
||||
// JsonDiff.compareJson(infoCJjson,info,null);
|
||||
|
||||
//4.2.3处理删除的数据
|
||||
for (DummyInventoryInfoEO dummyInventoryInfoEO : infoCJList) {
|
||||
deleteSerialNumberList = dummyInventoryInfoEOList.stream().filter(e -> !dummyInventoryInfoEO.equals(e.getId()))
|
||||
.map(f -> f.getSerialNumber()).collect(Collectors.toList());
|
||||
|
||||
}
|
||||
for(String midSerialNumber:deleteSerialNumberList){
|
||||
infoCJSerialNumberList.remove(midSerialNumber);
|
||||
}
|
||||
deleteSerialNumber=StringUtils.join(infoCJSerialNumberList,",");
|
||||
}
|
||||
//向订阅该领域管理的人发消息和飞书
|
||||
sendMsg(baseDiff,dummyContentChangeEOBaseList.get(0).getConnectId(),infoDiff,addSerialNumber,deleteSerialNumber);
|
||||
|
||||
|
||||
//6.数据对比完成后.删除之前保存的dummy_inventory_info中的数据,重新保存最新的数据
|
||||
//5.数据对比完成后.删除之前保存的dummy_inventory_info中的数据,重新保存最新的数据
|
||||
|
||||
|
||||
}
|
||||
@@ -312,4 +351,167 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void sendMsg(Map<String, String> baseDiff, String idTemp,Map<String, String> infoDiff,String addSerialNumber,String deleteSerialNumber) {
|
||||
|
||||
String baseName=queryById(idTemp).getName();//基础表id
|
||||
List<String> userNameList = dummyReadEOService.queryReadUserInfo(idTemp);
|
||||
List<String> userIdList=sysUserService.queryUserIdListByNameList(userNameList).stream().map(e->e.getId()).collect(Collectors.toList());
|
||||
//给发送消息的用户
|
||||
if(userIdList.size() == 0){
|
||||
return;
|
||||
}
|
||||
List<SysUser> sysUsers = sysUserService.listByIds(userIdList);
|
||||
List<String> thirdIdList = sysUsers.stream().map(SysUser::getThirdId).collect(Collectors.toList());
|
||||
if (userIdList.size() != 0) {
|
||||
String href = backUrl + "/dummy/dummyInventoryBaseEO/issue?id=" + idTemp;
|
||||
|
||||
//The xx virtual list you subscribed to has been updated as follows:1 . xxxxx 2.xxxx
|
||||
String content ="The " + baseName + " virtual list you subscribed to has been updated.";
|
||||
String contentInfo ="The " + baseName + " virtual list you subscribed to has been updated as follows : " + "\r\n";
|
||||
setContentInfo(contentInfo,baseDiff,infoDiff,addSerialNumber,deleteSerialNumber);
|
||||
|
||||
//封装消息的实体类
|
||||
SysAnnouncement sysAnnouncement = bussDocumentLibraryEOService.getSysAnnouncement(userIdList, content, contentInfo);
|
||||
sysAnnouncementService.saveAnnouncement(sysAnnouncement);
|
||||
bussDocumentLibraryEOService.sendWebsocket(idTemp, idTemp);
|
||||
//飞书
|
||||
try {
|
||||
iFeishuService.batchSendMessage(thirdIdList.toArray(new String[]{}), content, MessageTypeEnum.PUSH.getName(), href);
|
||||
} catch (IOException e) {
|
||||
log.error("飞书消息推送失败");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setContentInfo(String contentInfo,Map<String, String> baseDiff,Map<String, String> infoDiff,String addSerialNumber,String deleteSerialNumber) {
|
||||
int row = 1;
|
||||
//设置虚拟清单列表的修改消息
|
||||
if(MapUtils.isNotEmpty(baseDiff)) {
|
||||
//虚拟清单名称
|
||||
if (StringUtils.isNotBlank(baseDiff.get("name"))) {
|
||||
List<String> nameList = Arrays.asList(baseDiff.get("name").split(","));
|
||||
String baseDiffOldName = nameList.get(0);
|
||||
String baseDiffNewName = nameList.get(1);
|
||||
contentInfo += row + ". The name of virtual list has been changed from " + baseDiffOldName + " to " + baseDiffNewName + ".\r\n";
|
||||
row++;
|
||||
}
|
||||
//适用说明
|
||||
if (StringUtils.isNotBlank(baseDiff.get("useExplain"))) {
|
||||
List<String> useExplainList = Arrays.asList(baseDiff.get("useExplain").split(","));
|
||||
String baseDiffOldUseExplain = useExplainList.get(0);
|
||||
String baseDiffNewUseExplain = useExplainList.get(1);
|
||||
contentInfo += row + ". The applicable instructions of virtual list has been changed from " + baseDiffOldUseExplain + " to " + baseDiffNewUseExplain + ".\r\n";
|
||||
row++;
|
||||
}
|
||||
}
|
||||
|
||||
//设置维护清单的新增消息
|
||||
if (StringUtils.isNotBlank(addSerialNumber)) {
|
||||
contentInfo += row + ". " + "This virtual list has been added serial number : " + addSerialNumber + ".\r\n";
|
||||
row++;
|
||||
}
|
||||
|
||||
//设置维护清单的删除消息
|
||||
if (StringUtils.isNotBlank(deleteSerialNumber)) {
|
||||
contentInfo += row + ". " + "This virtual list has been deleted serial number : " + deleteSerialNumber + ".\r\n";
|
||||
row++;
|
||||
}
|
||||
|
||||
//设置维护清单的修改消息
|
||||
if(MapUtils.isNotEmpty(infoDiff)) {
|
||||
//技术领域
|
||||
if (StringUtils.isNotBlank(infoDiff.get("technologyTerritory"))) {
|
||||
List<String> technologyTerritoryList = Arrays.asList(infoDiff.get("technologyTerritory").split(","));
|
||||
String infoDiffOldTechnologyTerritory = technologyTerritoryList.get(0);
|
||||
String infoDiffNewTechnologyTerritory = technologyTerritoryList.get(1);
|
||||
contentInfo += row + ". " + infoDiffOldTechnologyTerritory + " has been changed to" + infoDiffNewTechnologyTerritory + ".\r\n";
|
||||
row++;
|
||||
}
|
||||
//新车型实施日期
|
||||
if (StringUtils.isNotBlank(infoDiff.get("xin1Che1Xing2Shi2Shi1Ri4Qi1"))) {
|
||||
List<String> xin1Che1Xing2Shi2Shi1Ri4Qi1List = Arrays.asList(infoDiff.get("xin1Che1Xing2Shi2Shi1Ri4Qi1").split(","));
|
||||
String infoDiffOldXin1Che1Xing2Shi2Shi1Ri4Qi1 = xin1Che1Xing2Shi2Shi1Ri4Qi1List.get(0);
|
||||
String infoDiffNewXin1Che1Xing2Shi2Shi1Ri4Qi1 = xin1Che1Xing2Shi2Shi1Ri4Qi1List.get(1);
|
||||
contentInfo += row + ". " + infoDiffOldXin1Che1Xing2Shi2Shi1Ri4Qi1 + " has been changed to" + infoDiffNewXin1Che1Xing2Shi2Shi1Ri4Qi1 + ".\r\n";
|
||||
row++;
|
||||
}
|
||||
//在产车实施日期
|
||||
if (StringUtils.isNotBlank(infoDiff.get("implementTime"))) {
|
||||
List<String> implementTimeList = Arrays.asList(infoDiff.get("implementTime").split(","));
|
||||
String infoDiffOldImplementTime = implementTimeList.get(0);
|
||||
String infoDiffNewImplementTime = implementTimeList.get(1);
|
||||
contentInfo += row + ". " + infoDiffOldImplementTime + " has been changed to" + infoDiffNewImplementTime + ".\r\n";
|
||||
row++;
|
||||
}
|
||||
//WVTA ID
|
||||
if (StringUtils.isNotBlank(infoDiff.get("wvtaId"))) {
|
||||
List<String> wvtaIdList = Arrays.asList(infoDiff.get("wvtaId").split(","));
|
||||
String infoDiffOldWvtaId = wvtaIdList.get(0);
|
||||
String infoDiffNewWvtaId = wvtaIdList.get(1);
|
||||
contentInfo += row + ". " + infoDiffOldWvtaId + " has been changed to" + infoDiffNewWvtaId + ".\r\n";
|
||||
row++;
|
||||
}
|
||||
//子标题
|
||||
if (StringUtils.isNotBlank(infoDiff.get("subtitle"))) {
|
||||
List<String> subtitleList = Arrays.asList(infoDiff.get("subtitle").split(","));
|
||||
String infoDiffOldSubtitle = subtitleList.get(0);
|
||||
String infoDiffNewSubtitle = subtitleList.get(1);
|
||||
contentInfo += row + ". " + infoDiffOldSubtitle + " has been changed to" + infoDiffNewSubtitle + ".\r\n";
|
||||
row++;
|
||||
}
|
||||
//实施类别
|
||||
if (StringUtils.isNotBlank(infoDiff.get("implementType"))) {
|
||||
List<String> implementTypeList = Arrays.asList(infoDiff.get("implementType").split(","));
|
||||
String infoDiffOldImplementType = implementTypeList.get(0);
|
||||
String infoDiffNewImplementType = implementTypeList.get(1);
|
||||
contentInfo += row + ". " + infoDiffOldImplementType + " has been changed to" + infoDiffNewImplementType + ".\r\n";
|
||||
row++;
|
||||
}
|
||||
//认证类型
|
||||
if (StringUtils.isNotBlank(infoDiff.get("attestationType"))) {
|
||||
List<String> attestationTypeList = Arrays.asList(infoDiff.get("attestationType").split(","));
|
||||
String infoDiffOldAttestationType = attestationTypeList.get(0);
|
||||
String infoDiffNewAttestationType = attestationTypeList.get(1);
|
||||
contentInfo += row + ". " + infoDiffOldAttestationType + " has been changed to" + infoDiffNewAttestationType + ".\r\n";
|
||||
row++;
|
||||
}
|
||||
|
||||
//认证级别
|
||||
//责任领域
|
||||
//备注
|
||||
//设计符合性确认-交付物类型
|
||||
//设计符合性确认-交付物模板
|
||||
//设计符合性确认-发起人
|
||||
//设计符合性确认-责任人
|
||||
//prehomo确认-交付物类型
|
||||
//prehomo确认-交付物模板
|
||||
//prehomo确认-发起人
|
||||
//prehomo确认-责任人
|
||||
//验证符合性确认-交付物类型
|
||||
//验证符合性确认-交付物模板
|
||||
//验证符合性确认-发起人
|
||||
//验证符合性确认-责任人
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void setContent(String contentInfo,Map<String, String> infoDiff, String field,int row){
|
||||
|
||||
if (StringUtils.isNotBlank(infoDiff.get(field))) {
|
||||
List<String> list = Arrays.asList(infoDiff.get(field).split(","));
|
||||
String infoDiffOld = list.get(0);
|
||||
String infoDiffNew = list.get(1);
|
||||
contentInfo += row + ". " + infoDiffOld + " has been changed to" + infoDiffNew + ".\r\n";
|
||||
row++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+3
-1
@@ -579,7 +579,9 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (String s : deliverableTemplate.split(",")) {
|
||||
List<OSSFile> collect = fileInfos.stream().filter(e -> s.equals(e.getId())).collect(Collectors.toList());
|
||||
sb.append(collect.get(0).getFileName() + ",");
|
||||
if(collect.size() != 0){
|
||||
sb.append(collect.get(0).getFileName() + ",");
|
||||
}
|
||||
}
|
||||
String sbStr = "";
|
||||
if(StringUtils.isNotBlank(sb)){
|
||||
|
||||
+53
-27
@@ -1,12 +1,17 @@
|
||||
package com.jero.modules.dummy.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.modules.dummy.entity.DummyReadEO;
|
||||
import com.jero.modules.dummy.mapper.DummyReadEOMapper;
|
||||
import com.jero.modules.dummy.service.IDummyReadEOService;
|
||||
import me.zhyd.oauth.utils.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.util.List;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @Description: 虚拟清单订阅表
|
||||
@@ -16,6 +21,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
*/
|
||||
@Service
|
||||
public class DummyReadEOServiceImpl extends ServiceImpl<DummyReadEOMapper, DummyReadEO> implements IDummyReadEOService {
|
||||
@Autowired
|
||||
private DummyReadEOMapper dummyReadEOMapper;
|
||||
|
||||
|
||||
/**
|
||||
* 保存
|
||||
@@ -24,12 +32,12 @@ public class DummyReadEOServiceImpl extends ServiceImpl<DummyReadEOMapper, Dummy
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void add(DummyReadEO dummyReadEO) {
|
||||
Date now = new Date();
|
||||
dummyReadEO.setCreateTime(now);
|
||||
dummyReadEO.setUpdateTime(now);
|
||||
save(dummyReadEO);
|
||||
}
|
||||
public void add(DummyReadEO dummyReadEO) {
|
||||
Date now = new Date();
|
||||
dummyReadEO.setCreateTime(now);
|
||||
dummyReadEO.setUpdateTime(now);
|
||||
save(dummyReadEO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新
|
||||
@@ -38,11 +46,11 @@ public class DummyReadEOServiceImpl extends ServiceImpl<DummyReadEOMapper, Dummy
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void editById(DummyReadEO dummyReadEO) {
|
||||
Date now = new Date();
|
||||
dummyReadEO.setUpdateTime(now);
|
||||
saveOrUpdate(dummyReadEO);
|
||||
}
|
||||
public void editById(DummyReadEO dummyReadEO) {
|
||||
Date now = new Date();
|
||||
dummyReadEO.setUpdateTime(now);
|
||||
saveOrUpdate(dummyReadEO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
@@ -51,9 +59,9 @@ public class DummyReadEOServiceImpl extends ServiceImpl<DummyReadEOMapper, Dummy
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void deleteById(String id) {
|
||||
removeById(id);
|
||||
}
|
||||
public void deleteById(String id) {
|
||||
removeById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
@@ -62,9 +70,9 @@ public class DummyReadEOServiceImpl extends ServiceImpl<DummyReadEOMapper, Dummy
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void deleteByIds(List<String> ids) {
|
||||
removeByIds(ids);
|
||||
}
|
||||
public void deleteByIds(List<String> ids) {
|
||||
removeByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
@@ -73,17 +81,35 @@ public class DummyReadEOServiceImpl extends ServiceImpl<DummyReadEOMapper, Dummy
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public DummyReadEO queryById(String id) {
|
||||
return getById(id);
|
||||
}
|
||||
public DummyReadEO queryById(String id) {
|
||||
return getById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
/**
|
||||
* 列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<DummyReadEO> queryList() {
|
||||
return list();
|
||||
}
|
||||
public List<DummyReadEO> queryList() {
|
||||
return list();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询订阅虚拟清单的用户
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<String> queryReadUserInfo(String dummyInventoryBaseId) {
|
||||
//获取订阅该虚拟清单的所有用户信息
|
||||
if(StringUtils.isNotEmpty(dummyInventoryBaseId)){
|
||||
QueryWrapper<DummyReadEO> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.select("create_by").eq("dummy_inventory_base_id",dummyInventoryBaseId);
|
||||
List<String> readUserList = list(queryWrapper).stream().map(e -> e.getCreateBy()).distinct().collect(Collectors.toList());
|
||||
return readUserList;
|
||||
}else{
|
||||
throw new JeroBootException("The virtual inventory is not subscribed.");//该虚拟清单未被订阅
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,8 +19,8 @@ public class ListDiff <T> {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
if( ! equals(v1, v2)
|
||||
&& !f.getName().equals("updateTime") ){
|
||||
if( ! equals(v1, v2) && !f.getName().contains("create")
|
||||
&& !f.getName().contains("update") ){
|
||||
|
||||
StringBuilder v1String= new StringBuilder(String.valueOf(v1));
|
||||
StringBuilder v2String= new StringBuilder(String.valueOf(v2));
|
||||
@@ -28,7 +28,7 @@ public class ListDiff <T> {
|
||||
|
||||
|
||||
result.put(f.getName(), v1String.append(",").append(v2String).toString());
|
||||
System.out.println("zlzl");
|
||||
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
||||
+34
@@ -29,6 +29,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
@@ -330,4 +331,37 @@ public class ProjectLawsInventoryEOController extends JeroController<ProjectLaws
|
||||
return Result.OK(dummyInventoryBaseEO.getCut(),pageList);
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation(value = "模板下载")
|
||||
@GetMapping(value = "/exportTemplate")
|
||||
public void exportTemplate(ProjectLawsInventoryEO projectLawsInventoryEO, HttpServletResponse response, HttpServletRequest request) throws Exception {
|
||||
projectLawsInventoryEOService.exportTemplate(projectLawsInventoryEO,response,request);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出数据
|
||||
* @param request
|
||||
* @param projectLawsInventoryEO
|
||||
*/
|
||||
@RequestMapping(value = "/exportData")
|
||||
public void exportData(HttpServletResponse response,
|
||||
HttpServletRequest request,
|
||||
ProjectLawsInventoryEO projectLawsInventoryEO) {
|
||||
projectLawsInventoryEOService.exportData(response,request, projectLawsInventoryEO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入数据
|
||||
*
|
||||
* @param file
|
||||
* @param projectLawsInventoryEO
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping(value = "/importData", method = RequestMethod.POST)
|
||||
public Result<?> importData(@RequestParam(value = "file", required = false) MultipartFile file,
|
||||
ProjectLawsInventoryEO projectLawsInventoryEO) {
|
||||
projectLawsInventoryEOService.importData(file,projectLawsInventoryEO);
|
||||
return Result.OK("导入成功");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+171
@@ -0,0 +1,171 @@
|
||||
package com.jero.modules.project.controller;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.system.query.QueryGenerator;
|
||||
import com.jero.modules.project.entity.ProjectVersionInfoEO;
|
||||
import com.jero.modules.project.service.IProjectVersionInfoEOService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import com.jero.common.system.base.controller.JeroController;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import com.jero.common.aspect.annotation.AutoLog;
|
||||
|
||||
|
||||
/**
|
||||
* @Description: 法规清单定板详情表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2022-05-05
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Api(tags="法规清单定板详情表")
|
||||
@RestController
|
||||
@RequestMapping("/project/projectVersionInfoEO")
|
||||
@Slf4j
|
||||
public class ProjectVersionInfoEOController extends JeroController<ProjectVersionInfoEO, IProjectVersionInfoEOService> {
|
||||
@Autowired
|
||||
private IProjectVersionInfoEOService projectVersionInfoEOService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param projectVersionInfoEO
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "法规清单定板详情表-分页列表查询")
|
||||
@ApiOperation(value="法规清单定板详情表-分页列表查询", notes="法规清单定板详情表-分页列表查询")
|
||||
@GetMapping(value = "/page")
|
||||
public Result<?> queryPageList(ProjectVersionInfoEO projectVersionInfoEO,
|
||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
QueryWrapper<ProjectVersionInfoEO> queryWrapper = QueryGenerator.initQueryWrapper(projectVersionInfoEO, req.getParameterMap());
|
||||
Page<ProjectVersionInfoEO> page = new Page<ProjectVersionInfoEO>(pageNo, pageSize);
|
||||
IPage<ProjectVersionInfoEO> pageList = projectVersionInfoEOService.page(page, queryWrapper);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "法规清单定板详情表-列表查询")
|
||||
@ApiOperation(value="法规清单定板详情表-列表查询", notes="法规清单定板详情表-列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<List<ProjectVersionInfoEO>> queryList(ProjectVersionInfoEO projectVersionInfoEO,
|
||||
HttpServletRequest req) {
|
||||
List<ProjectVersionInfoEO> list = projectVersionInfoEOService.queryInfoList(projectVersionInfoEO,req);
|
||||
return Result.OK(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param projectVersionInfoEO
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "法规清单定板详情表-添加")
|
||||
@ApiOperation(value="法规清单定板详情表-添加", notes="法规清单定板详情表-添加")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<?> add(@Validated @RequestBody ProjectVersionInfoEO projectVersionInfoEO) {
|
||||
projectVersionInfoEOService.add(projectVersionInfoEO);
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param projectVersionInfoEO
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "法规清单定板详情表-编辑")
|
||||
@ApiOperation(value="法规清单定板详情表-编辑", notes="法规清单定板详情表-编辑")
|
||||
@PutMapping(value = "/edit")
|
||||
public Result<?> edit(@Validated @RequestBody ProjectVersionInfoEO projectVersionInfoEO) {
|
||||
projectVersionInfoEOService.editById(projectVersionInfoEO);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "法规清单定板详情表-通过id删除")
|
||||
@ApiOperation(value="法规清单定板详情表-通过id删除", notes="法规清单定板详情表-通过id删除")
|
||||
@DeleteMapping(value = "/delete")
|
||||
public Result<?> delete(@RequestParam(name="id",required=true) String id) {
|
||||
projectVersionInfoEOService.deleteById(id);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "法规清单定板详情表-批量删除")
|
||||
@ApiOperation(value="法规清单定板详情表-批量删除", notes="法规清单定板详情表-批量删除")
|
||||
@DeleteMapping(value = "/deleteBatch")
|
||||
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
|
||||
this.projectVersionInfoEOService.deleteByIds(Arrays.asList(ids.split(",")));
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "法规清单定板详情表-通过id查询")
|
||||
@ApiOperation(value="法规清单定板详情表-通过id查询", notes="法规清单定板详情表-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
|
||||
ProjectVersionInfoEO projectVersionInfoEO = projectVersionInfoEOService.queryById(id);
|
||||
if(projectVersionInfoEO==null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
return Result.OK(projectVersionInfoEO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
* @param projectVersionInfoEO
|
||||
*/
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, ProjectVersionInfoEO projectVersionInfoEO) {
|
||||
return super.exportXls(request, projectVersionInfoEO, ProjectVersionInfoEO.class, "法规清单定板详情表");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过excel导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||
return super.importExcel(request, response, ProjectVersionInfoEO.class);
|
||||
}
|
||||
|
||||
}
|
||||
+239
@@ -0,0 +1,239 @@
|
||||
package com.jero.modules.project.entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import com.jero.common.aspect.annotation.Dict;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
|
||||
|
||||
/**
|
||||
* @Description: 法规清单定板详情表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2022-05-05
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Data
|
||||
@TableName("project_version_info")
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@ApiModel(value="project_version_info对象", description="法规清单定板详情表")
|
||||
public class ProjectVersionInfoEO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**主键*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty(value = "主键")
|
||||
private java.lang.String id;
|
||||
|
||||
/**创建人*/
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private java.lang.String createBy;
|
||||
|
||||
/**创建日期*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "创建日期")
|
||||
private java.util.Date createTime;
|
||||
|
||||
/**更新人*/
|
||||
@ApiModelProperty(value = "更新人")
|
||||
private java.lang.String updateBy;
|
||||
|
||||
/**更新日期*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "更新日期")
|
||||
private java.util.Date updateTime;
|
||||
|
||||
/**所属部门*/
|
||||
@ApiModelProperty(value = "所属部门")
|
||||
private java.lang.String sysOrgCode;
|
||||
|
||||
/**法规清单版本id*/
|
||||
@Excel(name = "法规清单版本id", width = 15)
|
||||
@ApiModelProperty(value = "法规清单版本id")
|
||||
private java.lang.String historyVersionsId;
|
||||
|
||||
/**项目库id*/
|
||||
@Excel(name = "项目库id", width = 15)
|
||||
@ApiModelProperty(value = "项目库id")
|
||||
private java.lang.String projectLibraryId;
|
||||
|
||||
/**编号*/
|
||||
@Excel(name = "编号", width = 15)
|
||||
@ApiModelProperty(value = "编号")
|
||||
private java.lang.String serialNumber;
|
||||
|
||||
/**标题*/
|
||||
@Excel(name = "标题", width = 15)
|
||||
@ApiModelProperty(value = "标题")
|
||||
private java.lang.String title;
|
||||
|
||||
/**子标题*/
|
||||
@Excel(name = "子标题", width = 15)
|
||||
@ApiModelProperty(value = "子标题")
|
||||
private java.lang.String subtitle;
|
||||
|
||||
/**对应标准*/
|
||||
@Excel(name = "对应标准", width = 15)
|
||||
@ApiModelProperty(value = "对应标准")
|
||||
private java.lang.String correspondingStandard;
|
||||
|
||||
/**实施类别*/
|
||||
@Excel(name = "实施类别", width = 15)
|
||||
@ApiModelProperty(value = "实施类别")
|
||||
private java.lang.String implementType;
|
||||
|
||||
/**新车型实施日期*/
|
||||
@Excel(name = "新车型实施日期", width = 15, format = "yyyy-MM-dd")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "新车型实施日期")
|
||||
private java.util.Date xin1Che1Xing2Shi2Shi1Ri4Qi1;
|
||||
|
||||
/**在产车实施日期*/
|
||||
@Excel(name = "在产车实施日期", width = 15, format = "yyyy-MM-dd")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "在产车实施日期")
|
||||
private java.util.Date implementTime;
|
||||
|
||||
/**认证类型*/
|
||||
@Excel(name = "认证类型", width = 15)
|
||||
@ApiModelProperty(value = "认证类型")
|
||||
private java.lang.String attestationType;
|
||||
|
||||
/**认证级别*/
|
||||
@Excel(name = "认证级别", width = 15)
|
||||
@ApiModelProperty(value = "认证级别")
|
||||
private java.lang.String attestationRank;
|
||||
|
||||
/**WVTA ID*/
|
||||
@Excel(name = "WVTA ID", width = 15)
|
||||
@ApiModelProperty(value = "WVTA ID")
|
||||
private java.lang.String wvtaId;
|
||||
|
||||
/**责任领域*/
|
||||
@Excel(name = "责任领域", width = 15)
|
||||
@ApiModelProperty(value = "责任领域")
|
||||
private java.lang.String dutyTerritory;
|
||||
|
||||
/**法规工程师*/
|
||||
@Excel(name = "法规工程师", width = 15)
|
||||
@ApiModelProperty(value = "法规工程师")
|
||||
private java.lang.String regulationOwnerId;
|
||||
|
||||
/**认证工程师*/
|
||||
@Excel(name = "认证工程师", width = 15)
|
||||
@ApiModelProperty(value = "认证工程师")
|
||||
private java.lang.String homologationEngineerId;
|
||||
|
||||
/**工程接口人*/
|
||||
@Excel(name = "工程接口人", width = 15)
|
||||
@ApiModelProperty(value = "工程接口人")
|
||||
private java.lang.String engineeringInterfacePerson;
|
||||
|
||||
/**备注*/
|
||||
@Excel(name = "备注", width = 15)
|
||||
@ApiModelProperty(value = "备注")
|
||||
private java.lang.String remark;
|
||||
|
||||
/**设计符合性确认-交付物类型*/
|
||||
@Excel(name = "设计符合性确认-交付物类型", width = 15)
|
||||
@ApiModelProperty(value = "设计符合性确认-交付物类型")
|
||||
private java.lang.String designDeliverableType;
|
||||
|
||||
/**设计符合性确认-交付物模板*/
|
||||
@Excel(name = "设计符合性确认-交付物模板", width = 15)
|
||||
@ApiModelProperty(value = "设计符合性确认-交付物模板")
|
||||
private java.lang.String designDeliverableTemplate;
|
||||
|
||||
/**设计符合性确认-发起人*/
|
||||
@Excel(name = "设计符合性确认-发起人", width = 15)
|
||||
@ApiModelProperty(value = "设计符合性确认-发起人")
|
||||
private java.lang.String designInitiator;
|
||||
|
||||
/**设计符合性确认-责任人*/
|
||||
@Excel(name = "设计符合性确认-责任人", width = 15)
|
||||
@ApiModelProperty(value = "设计符合性确认-责任人")
|
||||
private java.lang.String designDuty;
|
||||
|
||||
/**设计符合性确认-截止时间*/
|
||||
@Excel(name = "设计符合性确认-截止时间", width = 15, format = "yyyy-MM-dd")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "设计符合性确认-截止时间")
|
||||
private java.util.Date designDueDate;
|
||||
|
||||
/**prehomo确认-交付物类型*/
|
||||
@Excel(name = "prehomo确认-交付物类型", width = 15)
|
||||
@ApiModelProperty(value = "prehomo确认-交付物类型")
|
||||
private java.lang.String prehomoDeliverableType;
|
||||
|
||||
/**prehomo确认-交付物模板*/
|
||||
@Excel(name = "prehomo确认-交付物模板", width = 15)
|
||||
@ApiModelProperty(value = "prehomo确认-交付物模板")
|
||||
private java.lang.String prehomoDeliverableTemplate;
|
||||
|
||||
/**prehomo确认-发起人*/
|
||||
@Excel(name = "prehomo确认-发起人", width = 15)
|
||||
@ApiModelProperty(value = "prehomo确认-发起人")
|
||||
private java.lang.String prehomoInitiator;
|
||||
|
||||
/**prehomo确认-责任人*/
|
||||
@Excel(name = "prehomo确认-责任人", width = 15)
|
||||
@ApiModelProperty(value = "prehomo确认-责任人")
|
||||
private java.lang.String prehomoDuty;
|
||||
|
||||
/**prehomo确认-截止时间*/
|
||||
@Excel(name = "prehomo确认-截止时间", width = 15, format = "yyyy-MM-dd")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "prehomo确认-截止时间")
|
||||
private java.util.Date prehomoDueDate;
|
||||
|
||||
/**验证符合性确认-交付物类型*/
|
||||
@Excel(name = "验证符合性确认-交付物类型", width = 15)
|
||||
@ApiModelProperty(value = "验证符合性确认-交付物类型")
|
||||
private java.lang.String verifyDeliverableType;
|
||||
|
||||
/**验证符合性确认-交付物模板*/
|
||||
@Excel(name = "验证符合性确认-交付物模板", width = 15)
|
||||
@ApiModelProperty(value = "验证符合性确认-交付物模板")
|
||||
private java.lang.String verifyDeliverableTemplate;
|
||||
|
||||
/**验证符合性确认-发起人*/
|
||||
@Excel(name = "验证符合性确认-发起人", width = 15)
|
||||
@ApiModelProperty(value = "验证符合性确认-发起人")
|
||||
private java.lang.String verifyInitiator;
|
||||
|
||||
/**验证符合性确认-责任人*/
|
||||
@Excel(name = "验证符合性确认-责任人", width = 15)
|
||||
@ApiModelProperty(value = "验证符合性确认-责任人")
|
||||
private java.lang.String verifyDuty;
|
||||
|
||||
/**验证符合性确认-截止时间*/
|
||||
@Excel(name = "验证符合性确认-截止时间", width = 15, format = "yyyy-MM-dd")
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd")
|
||||
@ApiModelProperty(value = "验证符合性确认-截止时间")
|
||||
private java.util.Date verifyDueDate;
|
||||
|
||||
/**任务发布状态*/
|
||||
@Excel(name = "任务发布状态", width = 15)
|
||||
@ApiModelProperty(value = "任务发布状态")
|
||||
private java.lang.String taskReleaseStatus;
|
||||
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package com.jero.modules.project.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.jero.modules.project.entity.ProjectVersionInfoEO;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* @Description: 法规清单定板详情表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2022-05-05
|
||||
* @Version: V1.0
|
||||
*/
|
||||
public interface ProjectVersionInfoEOMapper extends BaseMapper<ProjectVersionInfoEO> {
|
||||
|
||||
}
|
||||
+45
@@ -0,0 +1,45 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.jero.modules.project.mapper.ProjectVersionInfoEOMapper">
|
||||
<resultMap id="ProjectVersionInfoEOResultMap" type="com.jero.modules.project.entity.ProjectVersionInfoEO">
|
||||
<id column="id" property="id" />
|
||||
<result column="create_by" property="createBy" />
|
||||
<result column="create_time" property="createTime" />
|
||||
<result column="update_by" property="updateBy" />
|
||||
<result column="update_time" property="updateTime" />
|
||||
<result column="sys_org_code" property="sysOrgCode" />
|
||||
<result column="history_versions_id" property="historyVersionsId" />
|
||||
<result column="project_library_id" property="projectLibraryId" />
|
||||
<result column="serial_number" property="serialNumber" />
|
||||
<result column="title" property="title" />
|
||||
<result column="subtitle" property="subtitle" />
|
||||
<result column="corresponding_standard" property="correspondingStandard" />
|
||||
<result column="implement_type" property="implementType" />
|
||||
<result column="xin1_che1_xing2_shi2_shi1_ri4_qi1" property="xin1Che1Xing2Shi2Shi1Ri4Qi1" />
|
||||
<result column="implement_time" property="implementTime" />
|
||||
<result column="attestation_type" property="attestationType" />
|
||||
<result column="attestation_rank" property="attestationRank" />
|
||||
<result column="wvta_id" property="wvtaId" />
|
||||
<result column="duty_territory" property="dutyTerritory" />
|
||||
<result column="regulation_owner_id" property="regulationOwnerId" />
|
||||
<result column="homologation_engineer_id" property="homologationEngineerId" />
|
||||
<result column="engineering_interface_person" property="engineeringInterfacePerson" />
|
||||
<result column="remark" property="remark" />
|
||||
<result column="design_deliverable_type" property="designDeliverableType" />
|
||||
<result column="design_deliverable_template" property="designDeliverableTemplate" />
|
||||
<result column="design_initiator" property="designInitiator" />
|
||||
<result column="design_duty" property="designDuty" />
|
||||
<result column="design_due_date" property="designDueDate" />
|
||||
<result column="prehomo_deliverable_type" property="prehomoDeliverableType" />
|
||||
<result column="prehomo_deliverable_template" property="prehomoDeliverableTemplate" />
|
||||
<result column="prehomo_initiator" property="prehomoInitiator" />
|
||||
<result column="prehomo_duty" property="prehomoDuty" />
|
||||
<result column="prehomo_due_date" property="prehomoDueDate" />
|
||||
<result column="verify_deliverable_type" property="verifyDeliverableType" />
|
||||
<result column="verify_deliverable_template" property="verifyDeliverableTemplate" />
|
||||
<result column="verify_initiator" property="verifyInitiator" />
|
||||
<result column="verify_duty" property="verifyDuty" />
|
||||
<result column="verify_due_date" property="verifyDueDate" />
|
||||
<result column="task_release_status" property="taskReleaseStatus" />
|
||||
</resultMap>
|
||||
</mapper>
|
||||
+17
@@ -4,8 +4,10 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.modules.project.entity.ProjectLawsInventoryEO;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -97,4 +99,19 @@ public interface IProjectLawsInventoryEOService extends IService<ProjectLawsInve
|
||||
* @param projectLawsInventoryEO
|
||||
*/
|
||||
void setBatch(ProjectLawsInventoryEO projectLawsInventoryEO);
|
||||
|
||||
/**
|
||||
* 模板下载
|
||||
* @param projectLawsInventoryEO
|
||||
* @param response
|
||||
* @param request
|
||||
*/
|
||||
void exportTemplate(ProjectLawsInventoryEO projectLawsInventoryEO, HttpServletResponse response, HttpServletRequest request);
|
||||
|
||||
void exportData(HttpServletResponse response,
|
||||
HttpServletRequest request,
|
||||
ProjectLawsInventoryEO projectLawsInventoryEO);
|
||||
|
||||
void importData(MultipartFile file,
|
||||
ProjectLawsInventoryEO projectLawsInventoryEO);
|
||||
}
|
||||
|
||||
+67
@@ -0,0 +1,67 @@
|
||||
package com.jero.modules.project.service;
|
||||
|
||||
import com.jero.modules.project.entity.ProjectVersionInfoEO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 法规清单定板详情表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2022-05-05
|
||||
* @Version: V1.0
|
||||
*/
|
||||
public interface IProjectVersionInfoEOService extends IService<ProjectVersionInfoEO> {
|
||||
|
||||
/**
|
||||
* 保存
|
||||
*
|
||||
* @param projectVersionInfoEO
|
||||
* @return
|
||||
*/
|
||||
void add(ProjectVersionInfoEO projectVersionInfoEO);
|
||||
|
||||
/**
|
||||
* 更新
|
||||
*
|
||||
* @param projectVersionInfoEO
|
||||
* @return
|
||||
*/
|
||||
void editById(ProjectVersionInfoEO projectVersionInfoEO);
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
void deleteById(String id);
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
void deleteByIds(List<String> ids);
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
ProjectVersionInfoEO queryById(String id);
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
List<ProjectVersionInfoEO> queryList();
|
||||
|
||||
|
||||
List<ProjectVersionInfoEO> queryInfoList(ProjectVersionInfoEO projectVersionInfoEO,
|
||||
HttpServletRequest req);
|
||||
}
|
||||
+13
-2
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jero.common.system.vo.LoginUser;
|
||||
import com.jero.modules.project.entity.ProjectCommentEO;
|
||||
import com.jero.modules.project.entity.ProjectReplyEO;
|
||||
import com.jero.modules.project.enums.ProjectRoleEnum;
|
||||
import com.jero.modules.project.mapper.ProjectCommentEOMapper;
|
||||
import com.jero.modules.project.service.IProjectCommentEOService;
|
||||
import com.jero.modules.project.service.IProjectReplyEOService;
|
||||
@@ -30,6 +31,8 @@ public class ProjectCommentEOServiceImpl extends ServiceImpl<ProjectCommentEOMap
|
||||
|
||||
@Autowired
|
||||
private IProjectReplyEOService iProjectReplyEOService;
|
||||
@Autowired
|
||||
private ProjectLawsInventoryEOServiceImpl projectLawsInventoryEOService;
|
||||
/**
|
||||
* 保存
|
||||
*
|
||||
@@ -103,9 +106,17 @@ public class ProjectCommentEOServiceImpl extends ServiceImpl<ProjectCommentEOMap
|
||||
@Override
|
||||
public List<ProjectCommentVO> getInfoList(ProjectCommentEO projectCommentEOTemp) {
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
//评论的内容
|
||||
LambdaQueryWrapper<ProjectCommentEO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.in(ProjectCommentEO::getCreateBy,sysUser.getUsername()).in(ProjectCommentEO::getProjectLibraryId,projectCommentEOTemp.getProjectLibraryId());
|
||||
|
||||
//验证当前用户在该项目中是什么角色
|
||||
int isProjectRole = projectLawsInventoryEOService.checkUserRole(projectCommentEOTemp.getProjectLibraryId(), sysUser.getId(), "");
|
||||
if(!ProjectRoleEnum.STUDIO_ENGINEER.getValue().equals(String.valueOf(isProjectRole))){
|
||||
//studio工程师(某一条项目中所有的评论和回复)
|
||||
//其他角色(只能看自己评论,自己回复和studio工程师回复的)
|
||||
wrapper.in(ProjectCommentEO::getCreateBy,sysUser.getUsername());
|
||||
}
|
||||
//评论的内容
|
||||
wrapper.in(ProjectCommentEO::getProjectLibraryId,projectCommentEOTemp.getProjectLibraryId());
|
||||
wrapper.orderByDesc(ProjectCommentEO::getCreateTime);
|
||||
List<ProjectCommentEO> projectCommentEOS = this.list(wrapper);
|
||||
List<String> projectCommentIdList = projectCommentEOS.stream().map(ProjectCommentEO::getId).collect(Collectors.toList());
|
||||
|
||||
+31
-1
@@ -1,9 +1,18 @@
|
||||
package com.jero.modules.project.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.jero.modules.project.entity.ProjectHistoryVersionsEO;
|
||||
import com.jero.modules.project.entity.ProjectLawsInventoryEO;
|
||||
import com.jero.modules.project.entity.ProjectVersionInfoEO;
|
||||
import com.jero.modules.project.mapper.ProjectHistoryVersionsEOMapper;
|
||||
import com.jero.modules.project.service.IProjectHistoryVersionsEOService;
|
||||
import com.jero.modules.project.service.IProjectLawsInventoryEOService;
|
||||
import com.jero.modules.project.service.IProjectVersionInfoEOService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@@ -17,6 +26,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@Service
|
||||
public class ProjectHistoryVersionsEOServiceImpl extends ServiceImpl<ProjectHistoryVersionsEOMapper, ProjectHistoryVersionsEO> implements IProjectHistoryVersionsEOService {
|
||||
|
||||
@Autowired
|
||||
private IProjectLawsInventoryEOService projectLawsInventoryEOService;
|
||||
@Autowired
|
||||
private IProjectVersionInfoEOService iProjectVersionInfoEOService;
|
||||
/**
|
||||
* 保存
|
||||
*
|
||||
@@ -29,7 +42,24 @@ public class ProjectHistoryVersionsEOServiceImpl extends ServiceImpl<ProjectHist
|
||||
projectHistoryVersionsEO.setCreateTime(now);
|
||||
projectHistoryVersionsEO.setUpdateTime(now);
|
||||
save(projectHistoryVersionsEO);
|
||||
}
|
||||
//定版详情
|
||||
//1. 法规清单信息
|
||||
LambdaQueryWrapper<ProjectLawsInventoryEO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.in(ProjectLawsInventoryEO::getProjectLibraryId,projectHistoryVersionsEO.getProjectLibraryId());
|
||||
List<ProjectLawsInventoryEO> projectLawsInventoryEOS = projectLawsInventoryEOService.list(wrapper);
|
||||
List<ProjectVersionInfoEO> projectVersionInfoEOS = new ArrayList<>();
|
||||
if(projectLawsInventoryEOS.size() != 0){
|
||||
for (ProjectLawsInventoryEO projectLawsInventoryEO : projectLawsInventoryEOS) {
|
||||
ProjectVersionInfoEO projectVersionInfoEO = new ProjectVersionInfoEO();
|
||||
projectVersionInfoEO.setHistoryVersionsId(projectHistoryVersionsEO.getId());
|
||||
BeanUtils.copyProperties(projectLawsInventoryEO, projectVersionInfoEO);
|
||||
projectVersionInfoEOS.add(projectVersionInfoEO);
|
||||
}
|
||||
}
|
||||
if(projectVersionInfoEOS.size() != 0){
|
||||
iProjectVersionInfoEOService.saveBatch(projectVersionInfoEOS);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新
|
||||
|
||||
+173
@@ -1,6 +1,7 @@
|
||||
package com.jero.modules.project.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.aliyuncs.utils.IOUtils;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
@@ -45,14 +46,28 @@ import com.jero.modules.system.service.ISysUserService;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
|
||||
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
|
||||
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.HorizontalAlignment;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.VerticalAlignment;
|
||||
import org.apache.poi.ss.util.CellRangeAddress;
|
||||
import org.apache.shiro.SecurityUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
@@ -103,6 +118,8 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
|
||||
private ProjectNameInfoEOMapper projectNameInfoEOMapper;
|
||||
@Autowired
|
||||
private IDummyInventoryInfoEOService dummyInventoryInfoEOService;
|
||||
@Value(value = "${jero.path.upload}")
|
||||
private String uploadpath;
|
||||
|
||||
/**
|
||||
* 保存
|
||||
@@ -1310,6 +1327,162 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
|
||||
projectLawsInventoryEO.setVerifyDuty(dummyInventoryInfoEO.getVerifyDuty());
|
||||
}
|
||||
return projectLawsInventoryEO;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void exportTemplate(ProjectLawsInventoryEO projectLawsInventoryEO, HttpServletResponse response, HttpServletRequest request) {
|
||||
OutputStream os = null;
|
||||
HSSFWorkbook workbook = new HSSFWorkbook();
|
||||
String fileOriName = "法规清单导入模板.xls";
|
||||
String filePath = uploadpath + File.separator + fileOriName;
|
||||
try {
|
||||
String titleOne = "";
|
||||
String titleTwo = "";
|
||||
if(CutEnum.CN.getValue().equals(projectLawsInventoryEO.getCut())){
|
||||
titleOne = "*编号,子标题,WVTA ID," +
|
||||
"实施类别,认证类型,*认证级别," +
|
||||
"*责任领域,*法规工程师,*认证工程师,*工程接口人," +
|
||||
"备注," +
|
||||
"设计符合性确认,Pre-homo确认,验证符合性确认";
|
||||
titleTwo = "交付物类型,交付物模板,发起人,责任人,截止时间,交付物类型,交付物模板,发起人,责任人,截止时间,交付物类型,交付物模板,发起人,责任人,截止时间,";
|
||||
}else{
|
||||
titleOne = "*serial number,subtitle,WVTA ID," +
|
||||
"*implementation category,certification type,*certification level," +
|
||||
"*area of responsibility,*laws engineer,*authentication engineer,*engineering interface person," +
|
||||
"remarks," +
|
||||
"design compliance check,pre-homo check,validation compliance chech";
|
||||
titleTwo = "type of deliverables,deliverable template,initiator,person liable,deadline," +
|
||||
"type of deliverables,deliverable template,initiator,person liable,deadline," +
|
||||
"type of deliverables,deliverable template,initiator,person liable,deadline";
|
||||
}
|
||||
|
||||
|
||||
List<String> list = Arrays.asList(titleOne.split(","));
|
||||
int index = 0;
|
||||
if(CutEnum.CN.getValue().equals(projectLawsInventoryEO.getCut())){
|
||||
index = list.indexOf("备注") + 1;
|
||||
}else{
|
||||
index = list.indexOf("remarks") + 1;
|
||||
}
|
||||
|
||||
//创建临时文件夹
|
||||
File nowFile = new File(filePath);
|
||||
if (nowFile.exists()) {
|
||||
nowFile.delete();
|
||||
}
|
||||
nowFile.mkdirs();
|
||||
HSSFSheet sheet = workbook.createSheet("虚拟清单导入模板");
|
||||
sheet.setDefaultColumnWidth(16);//列宽
|
||||
HSSFCellStyle cellStyle = workbook.createCellStyle();
|
||||
cellStyle.setWrapText(true);//自动换行
|
||||
cellStyle.setAlignment(HorizontalAlignment.CENTER);//垂直居中
|
||||
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//水平居中
|
||||
|
||||
HSSFCellStyle cellStyleTemp = workbook.createCellStyle();
|
||||
cellStyleTemp.setWrapText(true);//自动换行
|
||||
|
||||
|
||||
int count = 1;
|
||||
int startLine = 0;
|
||||
int endLine = 0;
|
||||
int line = 4;
|
||||
for (int i = 0; i < index; i++) {
|
||||
//合并单元格
|
||||
CellRangeAddress region1 =
|
||||
new CellRangeAddress(0, 1, i, i);
|
||||
sheet.addMergedRegion(region1);
|
||||
}
|
||||
for (int i = index; i < 15; i++) {
|
||||
if(count > 1){
|
||||
startLine = startLine + line + 1;
|
||||
endLine = startLine + line;
|
||||
}else{
|
||||
startLine = i;
|
||||
endLine = i + line;
|
||||
}
|
||||
//合并单元格
|
||||
CellRangeAddress region1 =
|
||||
new CellRangeAddress(0, 0, startLine, endLine); //参数1:起始行 参数2:终止行 参数3:起始列 参数4:终止列
|
||||
sheet.addMergedRegion(region1);
|
||||
count ++;
|
||||
}
|
||||
CellRangeAddress region =
|
||||
new CellRangeAddress(2, 2, 0, 25); //参数1:起始行 参数2:终止行 参数3:起始列 参数4:终止列
|
||||
sheet.addMergedRegion(region);
|
||||
String explain= "";
|
||||
if(CutEnum.CN.getValue().equals(projectLawsInventoryEO.getCut())){
|
||||
explain = "填写说明\n" +
|
||||
"1.导入数据从第四行开始\n" +
|
||||
"2.所有带*号的字段必须填写\n"+
|
||||
"3.认证类型,认证级别,实施类别,交付物类型,发起人,责任人,字段是单选属性,必须和系统中的对应字段选项相匹配\n" +
|
||||
"4.责任领域,字段是多选属性,必须和系统中的对应字段选项相匹配,填写多个时采用英文或中文逗号分割\n" +
|
||||
"5.编号,子标题,WVTA ID,备注,填写文本内容\n" +
|
||||
"6.交付物模板字段为文件属性,填写时需要在本文件同级目录下以标准号为名称建立文件夹,并在文件夹下放置文件,假设在AAA标准号下放置了B.docx,则应填写AAA/B.docx";
|
||||
}else{
|
||||
explain = "filling explanation\n" +
|
||||
"1.import data starts at the fourth line\n" +
|
||||
"2.all fields marked with * must be filled in\n"+
|
||||
"3.certification type,certification level,implementation category,type of deliverables,initiator,person liable,Fields are radio attributes that must match the corresponding field option in the system\n" +
|
||||
"4.area of responsibility, field is a multi-select attribute and must match the corresponding field in the system. If multiple fields are filled in, separate them by commas (,)\n" +
|
||||
"5.serial number,subtitle,WVTA ID,remarks,Fill in the text\n" +
|
||||
"6.deliverable template,When filling in the field, you need to create a folder in the directory of the same level as the file with the name of the standard number and place the file in the folder. If b. diocx is stored under the AAA standard number, enter AAA/B. diocx";
|
||||
}
|
||||
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
//表头
|
||||
Row row = sheet.createRow(i);//开始创建标题行
|
||||
String[] headerArr = titleOne.split(",");
|
||||
int lineTemp = index;
|
||||
if (i == 0) {
|
||||
for (int m = 0; m < headerArr.length; m++) {
|
||||
if(m < index){
|
||||
row.createCell(m).setCellValue(headerArr[m]);
|
||||
}else{
|
||||
row.createCell(lineTemp).setCellValue(headerArr[m]);
|
||||
Cell cell = row.getCell(lineTemp);
|
||||
cell.setCellStyle(cellStyle);
|
||||
lineTemp = lineTemp + 5;
|
||||
}
|
||||
}
|
||||
|
||||
}else if(i == 1){
|
||||
//titleTwo
|
||||
String[] headerArrTwo = titleTwo.split(",");
|
||||
for (int j = 0; j < headerArrTwo.length; j++) {
|
||||
row.createCell(11+j).setCellValue(headerArrTwo[j]);
|
||||
}
|
||||
}else{
|
||||
short height = (short) (7 * 252);
|
||||
row.setHeight((short) height);
|
||||
Cell cell = row.createCell(0);
|
||||
cell.setCellStyle(cellStyleTemp);
|
||||
cell.setCellValue(new HSSFRichTextString(explain));
|
||||
}
|
||||
}
|
||||
response.setHeader("Content-Disposition",
|
||||
"attachment; filename=\"" + fileOriName + ".xls");
|
||||
response.setContentType("application/force-download");
|
||||
response.flushBuffer();
|
||||
os = response.getOutputStream();
|
||||
workbook.write(os);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
throw new JeroBootException("下载文件失败,请重试");
|
||||
} finally {
|
||||
IOUtils.closeQuietly(os);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exportData(HttpServletResponse response, HttpServletRequest request, ProjectLawsInventoryEO projectLawsInventoryEO) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void importData(MultipartFile file, ProjectLawsInventoryEO projectLawsInventoryEO) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+101
@@ -0,0 +1,101 @@
|
||||
package com.jero.modules.project.service.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.jero.common.system.query.QueryGenerator;
|
||||
import com.jero.modules.project.entity.ProjectVersionInfoEO;
|
||||
import com.jero.modules.project.mapper.ProjectVersionInfoEOMapper;
|
||||
import com.jero.modules.project.service.IProjectVersionInfoEOService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.util.List;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
/**
|
||||
* @Description: 法规清单定板详情表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2022-05-05
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Service
|
||||
public class ProjectVersionInfoEOServiceImpl extends ServiceImpl<ProjectVersionInfoEOMapper, ProjectVersionInfoEO> implements IProjectVersionInfoEOService {
|
||||
|
||||
/**
|
||||
* 保存
|
||||
*
|
||||
* @param projectVersionInfoEO
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void add(ProjectVersionInfoEO projectVersionInfoEO) {
|
||||
Date now = new Date();
|
||||
projectVersionInfoEO.setCreateTime(now);
|
||||
projectVersionInfoEO.setUpdateTime(now);
|
||||
save(projectVersionInfoEO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新
|
||||
*
|
||||
* @param projectVersionInfoEO
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void editById(ProjectVersionInfoEO projectVersionInfoEO) {
|
||||
Date now = new Date();
|
||||
projectVersionInfoEO.setUpdateTime(now);
|
||||
saveOrUpdate(projectVersionInfoEO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void deleteById(String id) {
|
||||
removeById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void deleteByIds(List<String> ids) {
|
||||
removeByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public ProjectVersionInfoEO queryById(String id) {
|
||||
return getById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<ProjectVersionInfoEO> queryList() {
|
||||
return list();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProjectVersionInfoEO> queryInfoList(ProjectVersionInfoEO projectVersionInfoEO, HttpServletRequest req) {
|
||||
QueryWrapper<ProjectVersionInfoEO> queryWrapper = QueryGenerator.initQueryWrapper(projectVersionInfoEO, req.getParameterMap());
|
||||
queryWrapper.orderByDesc("create_time");
|
||||
List<ProjectVersionInfoEO> projectVersionInfoEOS = this.list(queryWrapper);
|
||||
return projectVersionInfoEOS;
|
||||
}
|
||||
}
|
||||
@@ -113,21 +113,6 @@ export function downFile(url,parameter){
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载文件 用于excel导出 -- post
|
||||
* @param url
|
||||
* @param parameter
|
||||
* @returns {*}
|
||||
*/
|
||||
export function downFilePost(url,parameter){
|
||||
return axios({
|
||||
url: url,
|
||||
data: parameter,
|
||||
method:'post' ,
|
||||
responseType: 'blob'
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载文件
|
||||
* @param url 文件路径
|
||||
|
||||
@@ -706,6 +706,12 @@ module.exports = {
|
||||
uploadTime: 'Upload time',
|
||||
enclosure: 'enclosure',
|
||||
// 认证
|
||||
parameter: 'parameter',
|
||||
changeExtension: 'change Extension',
|
||||
detailedList: 'detailedList',
|
||||
collectionCompletionTime: 'collection Completion Time',
|
||||
parameterTemplateName: 'parameter Template Name',
|
||||
onlyThree: 'Only letters, numbers and horizontal bars (-) can be entered',
|
||||
templateName: 'template Name',
|
||||
pleaseSelectData: 'please Select Data',
|
||||
templateCopy: 'template Copy',
|
||||
@@ -743,4 +749,10 @@ module.exports = {
|
||||
replyToComments:'Reply to comments',
|
||||
noComment:'No comment',
|
||||
theReceived:'The final version can be made only when the list confirmation status and task confirmation status of all data are received',
|
||||
notEvaluated:'Not evaluated',
|
||||
cannotExceed:'cannot exceed',
|
||||
Characters:'Characters',
|
||||
standardInformation:'standardInformation',
|
||||
VirtualList:'VirtualList',
|
||||
importTemplate:'import template',
|
||||
}
|
||||
@@ -55,7 +55,7 @@ module.exports = {
|
||||
close: '关闭',
|
||||
no: '没有任何',
|
||||
click: '点击',
|
||||
add: '新增',
|
||||
add: '添加',
|
||||
FilterMatching: '过滤条件匹配',
|
||||
AllMatching: '(所有条件都要求匹配)',
|
||||
AnyOneMatches: '(条件中的任意一个匹配)',
|
||||
@@ -580,6 +580,7 @@ module.exports = {
|
||||
selectDisplayList: '请选择是否列表展示',
|
||||
documentSplitDisplay: '文档拆分模块展示',
|
||||
VirtualListName: '虚拟清单名称',
|
||||
VirtualList:'虚拟清单',
|
||||
listStatus: '清单状态',
|
||||
creater: '创建人',
|
||||
withdraw: '撤回',
|
||||
@@ -686,7 +687,7 @@ module.exports = {
|
||||
projectDetails:'项目详情',
|
||||
listOfRegulations:'法规清单',
|
||||
taskList:'任务清单',
|
||||
TaskParameterCollection:'任务参数收集',
|
||||
TaskParameterCollection:'认证参数收集',
|
||||
nonConformance:'未符合项',
|
||||
deadlineForConfirmationOfDesignCompliance:'设计符合性确认截止时间',
|
||||
prehomoConfirmationDeadline:'PreHomo确认截止时间',
|
||||
@@ -712,6 +713,12 @@ module.exports = {
|
||||
uploadTime:'上传时间',
|
||||
enclosure:'附件',
|
||||
// 认证
|
||||
parameter: '参数',
|
||||
changeExtension: '变更扩展',
|
||||
detailedList: '清单',
|
||||
collectionCompletionTime: '收集完成时间',
|
||||
parameterTemplateName: '参数模板名称',
|
||||
onlyThree: '只能输入字母,数字,横杠(-)三种内容',
|
||||
templateName: '模板名称',
|
||||
pleaseSelectData: '请选择数据',
|
||||
templateCopy: '模板复制',
|
||||
@@ -748,4 +755,9 @@ module.exports = {
|
||||
replyToComments:'回复评论',
|
||||
noComment:'暂无评论',
|
||||
theReceived:'所有数据的清单确认状态和任务确认状态都为接受才可以定版',
|
||||
notEvaluated:'未评估',
|
||||
cannotExceed:'不能超出',
|
||||
Characters:'个字符',
|
||||
standardInformation:'标准信息',
|
||||
importTemplate:'导入模板',
|
||||
}
|
||||
@@ -44,6 +44,10 @@
|
||||
paramsTemplateId: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
projectLibraryId: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
data() {
|
||||
@@ -60,6 +64,8 @@
|
||||
return window._CONFIG['domianURL'] + '/' + this.url.importZipUrl + '?cut=' + this.cut + '&dummyInventoryBaseId=' + this.dummyInventoryBaseId
|
||||
} else if (this.paramsTemplateId) {
|
||||
return window._CONFIG['domianURL'] + '/' + this.url.importZipUrl + '?cut=' + this.cut + '¶msTemplateId=' + this.paramsTemplateId
|
||||
} else if (this.projectLibraryId) {
|
||||
return window._CONFIG['domianURL'] + '/' + this.url.importZipUrl + '?cut=' + this.cut + '&projectLibraryId=' + this.projectLibraryId
|
||||
}
|
||||
return window._CONFIG['domianURL'] + '/' + this.url.importZipUrl + '?cut=' + this.cut
|
||||
}
|
||||
|
||||
@@ -92,6 +92,7 @@
|
||||
this.$route.path == '/virtualListDetails' ||
|
||||
this.$route.path == '/ProjectDetails' ||
|
||||
this.$route.path == '/handshakeProcess' ||
|
||||
this.$route.path == '/historicalVersion' ||
|
||||
this.$route.path == '/processDetails') {
|
||||
return false
|
||||
} else {
|
||||
|
||||
@@ -429,7 +429,7 @@
|
||||
|| res.field_show_type === '11') {
|
||||
rule.push({
|
||||
max: res.db_length,
|
||||
message: res.db_field_txt + '不能超出' + res.db_length + '个字符',
|
||||
message: res.db_field_txt + this.$t('cannotExceed') + res.db_length + this.$t('Characters'),
|
||||
trigger: 'blur'
|
||||
})
|
||||
}
|
||||
|
||||
@@ -342,6 +342,11 @@ export const constantRouterMap = [
|
||||
name: 'handshakeProcess',
|
||||
component: () => import(/* webpackChunkName: "user" */ '@/views/processCenter/processForm/handshakeProcess/index')
|
||||
},
|
||||
{
|
||||
path: '/historicalVersion',
|
||||
name: 'historicalVersion',
|
||||
component: () => import(/* webpackChunkName: "user" */ '@/views/projectManagement/historicalVersion/index')
|
||||
},
|
||||
{
|
||||
path: '/processDetails',
|
||||
name: 'processDetails',
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
<a class="text-operation" @click="deleteLib(record)">{{$t('deleteLib')}}</a>
|
||||
</span>
|
||||
<span slot="titleName" slot-scope="text,record" :title="text">
|
||||
{{text && text.length > 20 ? text.slice(0,19)+'...':text}}
|
||||
{{text && text.length > 10 ? text.slice(0,9)+'...':text}}
|
||||
</span>
|
||||
<span slot="designDeliverableTemplateName" slot-scope="text,record">
|
||||
<span>{{record.designDeliverableType_dictText}}</span><br v-if="record.designDeliverableType_dictText">
|
||||
@@ -290,6 +290,12 @@
|
||||
fixed: 'left',
|
||||
scopedSlots: { customRender: 'titleName' }
|
||||
},
|
||||
{
|
||||
title: this.$t('zoneOfApplication'),
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
dataIndex: 'region_dictText'
|
||||
},
|
||||
{
|
||||
title: this.$t('scopeOfApplication'),
|
||||
align: 'center',
|
||||
@@ -308,12 +314,6 @@
|
||||
ellipsis: true,
|
||||
dataIndex: 'correspondingStandardName'
|
||||
},
|
||||
{
|
||||
title: this.$t('zoneOfApplication'),
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
dataIndex: 'region_dictText'
|
||||
},
|
||||
{
|
||||
title: this.$t('implementationCategory'),
|
||||
align: 'center',
|
||||
@@ -568,17 +568,18 @@
|
||||
},
|
||||
//模板下载
|
||||
handleModule() {
|
||||
downloadFile(this.url.exportTemplate, '模板下载.xls', {})
|
||||
downloadFile(this.url.exportTemplate, this.$t('VirtualList')+this.$t('importTemplate')+'.xls', {})
|
||||
},
|
||||
//导出
|
||||
handleExport() {
|
||||
let selectedRowKeys = JSON.parse(JSON.stringify(this.selectedRowKeys))
|
||||
let query = {
|
||||
...this.queryParam,
|
||||
...this.queryParamQuery,
|
||||
ids: selectedRowKeys.join(','),
|
||||
dummyInventoryBaseId: this.$route.query.id
|
||||
}
|
||||
downloadFile(this.url.exportData, this.$route.query.name + '虚拟清单.zip', query, this.Deselect)
|
||||
downloadFile(this.url.exportData, this.$route.query.name + this.$t('VirtualList')+'.zip', query, this.Deselect)
|
||||
},
|
||||
Deselect() {
|
||||
this.selectedRowKeys = []
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="name">
|
||||
<a-input class="box-input-add"
|
||||
v-model="formInline.name"
|
||||
v-model.trim="formInline.name"
|
||||
:placeholder="$t('PleaseEnter')+$t('VirtualListName')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -107,12 +107,13 @@
|
||||
<a-col :span="24">
|
||||
<div class="box-title-text-add">
|
||||
<div class="title-text-add">
|
||||
<span class="Required">*</span>
|
||||
<span class="title-text-text" :title="$t('instructionForUse')">{{$t('instructionForUse')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="instructionForUse">
|
||||
<a-form-model-item class="itemModel" prop="useExplain">
|
||||
<a-textarea
|
||||
:placeholder="$t('PleaseEnter')+$t('instructionForUse')"
|
||||
v-model="formInline.useExplain" :rows="4"/>
|
||||
v-model.trim="formInline.useExplain" :rows="4"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
@@ -139,11 +140,30 @@
|
||||
selectedRowKeys: [],
|
||||
formInline: {},
|
||||
rules: {
|
||||
name: [{
|
||||
required: true,
|
||||
message: this.$t('VirtualListName') + this.$t('cannotEmpty'),
|
||||
trigger: 'blur'
|
||||
}]
|
||||
name: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('VirtualListName') + this.$t('cannotEmpty'),
|
||||
trigger: 'blur'
|
||||
},
|
||||
{
|
||||
max: 100,
|
||||
message: this.$t('VirtualListName') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
useExplain: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('instructionForUse') + this.$t('cannotEmpty'),
|
||||
trigger: 'blur'
|
||||
},
|
||||
{
|
||||
max: 500,
|
||||
message: this.$t('instructionForUse') + this.$t('cannotExceed') + 500 + this.$t('Characters'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
]
|
||||
},
|
||||
visible: false,
|
||||
dataSource: [],
|
||||
@@ -200,6 +220,9 @@
|
||||
this.title = '新增'
|
||||
this.formInline = {}
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.ruleForm.clearValidate()
|
||||
})
|
||||
},
|
||||
//批量删除
|
||||
handleDel() {
|
||||
@@ -229,6 +252,9 @@
|
||||
this.title = '编辑'
|
||||
this.formInline = JSON.parse(JSON.stringify(item))
|
||||
this.visible = true
|
||||
this.$nextTick(() => {
|
||||
this.$refs.ruleForm.clearValidate()
|
||||
})
|
||||
},
|
||||
//撤回
|
||||
withdraw(val) {
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<span class="title-text-text"
|
||||
:title="$t('NiONumber')">{{$t('NiONumber')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="paramsTemplateName">
|
||||
<a-form-model-item class="itemModel" prop="nioNumber">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.nioNumber"
|
||||
@@ -31,7 +31,7 @@
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" :title="$t('Required')">{{$t('Required')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="state">
|
||||
<a-form-model-item class="itemModel" prop="isMust">
|
||||
<a-select :placeholder="$t('PleaseSelect')+$t('Required')" v-model='formInline.isMust'>
|
||||
<a-select-option :key="'1'" :value="'1'">{{$t('yes')}}
|
||||
</a-select-option>
|
||||
@@ -49,7 +49,7 @@
|
||||
<span class="title-text-text"
|
||||
:title="$t('ParameterName')">{{$t('ParameterName')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="paramsTemplateName">
|
||||
<a-form-model-item class="itemModel" prop="paramsName">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.paramsName"
|
||||
@@ -83,7 +83,7 @@
|
||||
<span class="title-text-text"
|
||||
:title="$t('parameterBatch')">{{$t('parameterBatch')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="paramsTemplateName">
|
||||
<a-form-model-item class="itemModel" prop="paramsBatch">
|
||||
<j-dict-select-tag class="box-input" v-model="formInline.paramsBatch"
|
||||
:disabled="disabled"
|
||||
:placeholder="$t('PleaseSelect')+$t('parameterBatch')"
|
||||
@@ -97,7 +97,7 @@
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" :title="$t('areaOfResponsibility')">{{$t('areaOfResponsibility')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="technologyTerritory">
|
||||
<a-form-model-item class="itemModel" prop="dutyTerritory">
|
||||
<j-dict-select-tag class="box-input" v-model="formInline.dutyTerritory"
|
||||
:disabled="disabled"
|
||||
:placeholder="$t('PleaseSelect')+$t('areaOfResponsibility')"
|
||||
@@ -114,7 +114,7 @@
|
||||
<span class="title-text-text"
|
||||
:title="$t('ParameterDescription')">{{$t('ParameterDescription')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="paramsTemplateName">
|
||||
<a-form-model-item class="itemModel" prop="description">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.description"
|
||||
@@ -130,7 +130,7 @@
|
||||
<span class="title-text-text"
|
||||
:title="$t('ParameterName')">{{$t('certificationCategory')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="paramsTemplateName">
|
||||
<a-form-model-item class="itemModel" prop="certCategory">
|
||||
<j-multi-select-tag class="box-input" v-model="formInline.certCategory"
|
||||
@change='Onchange'
|
||||
v-on:changelabel='Onchangelabel'
|
||||
@@ -184,7 +184,7 @@
|
||||
<span class="title-text-text"
|
||||
:title="$t('controlAlternatives')">{{$t('controlAlternatives')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="paramsTemplateName">
|
||||
<a-form-model-item class="itemModel" prop="controlValues">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.controlValues"
|
||||
@@ -202,7 +202,7 @@
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="paramsTemplateName">
|
||||
<a-button type="primary" class="button-text"
|
||||
@click="clickButtonToUpload()">
|
||||
@click="clickButtonToUpload('fileTemplateConnectId')">
|
||||
{{ (formInline.fileTemplateConnectId === 'null' || formInline.fileTemplateConnectId === '' ||
|
||||
formInline.fileTemplateConnectId == null) ? $t('clickUpload') : $t('viewUploadedFiles')}}
|
||||
</a-button>
|
||||
@@ -221,7 +221,7 @@
|
||||
<span class="title-text-text"
|
||||
:title="$t('standard')">{{$t('standard')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="paramsTemplateName">
|
||||
<a-form-model-item class="itemModel" prop="paramsNumber">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="item.paramsNumber"
|
||||
@@ -234,7 +234,7 @@
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" :title="$t('ParameterName')">{{$t('ParameterName')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="technologyTerritory">
|
||||
<a-form-model-item class="itemModel" prop="paramsName">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="item.paramsName"
|
||||
@@ -250,7 +250,7 @@
|
||||
<span class="title-text-text"
|
||||
:title="$t('ParameterDescription')">{{$t('ParameterDescription')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="paramsTemplateName">
|
||||
<a-form-model-item class="itemModel" prop="description">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="item.description"
|
||||
@@ -316,24 +316,40 @@ export default {
|
||||
confirmLoading: false,
|
||||
visible: false,
|
||||
rules: {
|
||||
ipdInfo: [
|
||||
{
|
||||
pattern: /(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%$#_]*)?/,
|
||||
message: this.$t('pleaseEnterTheCorrectWebAddress')
|
||||
}
|
||||
nioNumber:[
|
||||
{ required: true, message: this.$t('PleaseEnter')+this.$t('NiONumber'), trigger: 'change' },
|
||||
// {
|
||||
// pattern: /(?!^\d+$)(?!^[a-zA-Z]+$)[0-9a-zA-Z]{1,15}/,
|
||||
// message: this.$t('onlyThree'),
|
||||
// trigger: 'change'
|
||||
// }
|
||||
],
|
||||
vehicleDevelopmentPlan: [
|
||||
{
|
||||
pattern: /(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%$#_]*)?/,
|
||||
message: this.$t('pleaseEnterTheCorrectWebAddress')
|
||||
}
|
||||
isMust: [
|
||||
{ required: true, message: this.$t('pleaseSelect')+this.$t('Required'), trigger: 'change' },
|
||||
],
|
||||
paramsName: [
|
||||
{ required: true, message: this.$t('pleaseSelect')+this.$t('Required'), trigger: 'change' },
|
||||
{ min:1, max: 30, message: this.$t('cantExeed')+'30'+this.$t('characters'), trigger: 'blur' },
|
||||
],
|
||||
technologyTerritory: [
|
||||
{ required: true, message: this.$t('pleaseSelect')+this.$t('technicalField'), trigger: 'change' },
|
||||
],
|
||||
paramsBatch: [
|
||||
{ required: true, message: this.$t('PleaseSelect')+this.$t('parameterBatch'), trigger: 'change' },
|
||||
],
|
||||
dutyTerritory: [
|
||||
{ required: true, message: this.$t('PleaseSelect')+this.$t('areaOfResponsibility'), trigger: 'change' },
|
||||
],
|
||||
description: [
|
||||
{ min:1, max: 200, message: this.$t('cantExeed')+'200'+this.$t('characters'), trigger: 'blur' },
|
||||
],
|
||||
controlType: [
|
||||
{ required: true, message: this.$t('pleaseSelect')+this.$t('controlType'), trigger: 'change' },
|
||||
],
|
||||
controlValues: [
|
||||
{ required: true, message: this.$t('PleaseEnter')+this.$t('controlAlternatives'), trigger: 'change' },
|
||||
{ min:1, max: 500, message: this.$t('cantExeed')+'500'+this.$t('characters'), trigger: 'blur' },
|
||||
],
|
||||
attestationPlan: [
|
||||
{
|
||||
pattern: /(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&%$#_]*)?/,
|
||||
message: this.$t('pleaseEnterTheCorrectWebAddress')
|
||||
}
|
||||
]
|
||||
},
|
||||
disabled: false,
|
||||
projectNameList: [],
|
||||
@@ -360,23 +376,21 @@ export default {
|
||||
this.formInline = { ...this.formInline }
|
||||
},
|
||||
clickButtonToUpload(item) {
|
||||
// this.$refs.uploadFile.perentHandleFunc()
|
||||
// this.$refs.uploadFile.state = item.flag
|
||||
this.$refs.uploadFile.visible = true
|
||||
// this.uploadName = item.db_field_name
|
||||
// getAction('sys/common/getFileInfos', { id: this.formInline[item.db_field_name] }).then((res) => {
|
||||
// if (res.success) {
|
||||
// this.$refs.uploadFile.perentHandleFunc(res.result)
|
||||
// } else {
|
||||
// this.$refs.uploadFile.perentHandleFunc()
|
||||
// }
|
||||
// })
|
||||
getAction('sys/common/getFileInfos', { id: this.formInline[item] }).then((res) => {
|
||||
if (res.success) {
|
||||
this.$refs.uploadFile.perentHandleFunc(res.result)
|
||||
} else {
|
||||
this.$refs.uploadFile.perentHandleFunc()
|
||||
}
|
||||
})
|
||||
},
|
||||
Onchangelabel(val) {
|
||||
|
||||
let _tt = []
|
||||
console.log(val,'val,,,,')
|
||||
// this.formInline.certCategoryParamsInfoEOList = []
|
||||
val.forEach((item) => {
|
||||
this.contentList.push({
|
||||
_tt.push({
|
||||
textVal: item.text, // tab
|
||||
certCategory: '', // 所属认证类别
|
||||
paramsNumber: '', // 编号
|
||||
@@ -384,6 +398,7 @@ export default {
|
||||
description: ''// 参数说明
|
||||
})
|
||||
})
|
||||
this.contentList = _tt
|
||||
},
|
||||
Onchange() {
|
||||
|
||||
@@ -420,6 +435,11 @@ export default {
|
||||
this.$nextTick(() => {
|
||||
this.formInline = value
|
||||
})
|
||||
// if(value.certCategoryParamsInfoEOList.length > 0 ) {
|
||||
// this.contentList = value.certCategoryParamsInfoEOList
|
||||
// }
|
||||
console.log(this.contentList,'this.contentList')
|
||||
console.log(value.certCategoryParamsInfoEOList,'lllll')
|
||||
},
|
||||
handleCancel() {
|
||||
this.visible = false
|
||||
|
||||
@@ -55,9 +55,9 @@
|
||||
<div class="operator-text" v-has="'document:importZip'">
|
||||
<ImportFile :url="url" :isTrue="false" :accept="'.zip'" :paramsTemplateId='this.$route.query.id'/>
|
||||
</div>
|
||||
<div @click="handleModule" class="operator-text" v-has="'document:exportTemplate'">
|
||||
<div @click="releaseVersion" class="operator-text" v-has="'document:exportTemplate'">
|
||||
<a-icon type="rocket"/>
|
||||
{{$t('Version')}}
|
||||
{{$t('releaseVersion')}}
|
||||
</div>
|
||||
<div @click="handleDel" class="operator-text" v-has="'document:deleteBatch'">
|
||||
<a-icon type="delete"/>
|
||||
@@ -199,17 +199,43 @@ export default {
|
||||
paramsTemplateId: this.$route.query.id,
|
||||
...this.queryParam,
|
||||
ids: this.selectedRowKeys.join(','),
|
||||
// exportName: '参数项列表.xlsx'
|
||||
}
|
||||
let _xx = JSON.stringify(_tt)
|
||||
let _yy = {
|
||||
|
||||
}
|
||||
downloadFile('params/paramsInfo/exportParamsInfoZip', '参数项列表.zip', { paramsInfoVO : _xx }, this.Deselect)
|
||||
let _yy = { paramsInfoVO : _xx, exportName: '参数项列表' }
|
||||
downloadFile('params/paramsInfo/exportParamsInfoZip', '参数项列表.zip', { paramsInfoVO : _xx, exportName: '参数项列表' } , this.Deselect)
|
||||
},
|
||||
// 发布版本
|
||||
releaseVersion() {
|
||||
let _this = this
|
||||
axios({
|
||||
url: `/jero-boot/params/paramsInfo/publish?paramsTemplateId=${this.$route.query.id}`,
|
||||
method: 'get',
|
||||
transformRequest: [function (data) {
|
||||
let ret = ''
|
||||
for (let it in data) {
|
||||
ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
|
||||
}
|
||||
return ret
|
||||
}],
|
||||
headers: {
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
'X-Access-Token':_this.token
|
||||
}
|
||||
})
|
||||
.then( (res) =>{
|
||||
if (res.data.success) {
|
||||
_this.$message.success(res.data.result)
|
||||
}else{
|
||||
_this.$message.warning(res.data.result)
|
||||
}
|
||||
})
|
||||
.catch( (error) =>{
|
||||
console.log(error);
|
||||
});
|
||||
},
|
||||
//下载模板
|
||||
handleModule() {
|
||||
downloadFile('params/paramsInfo/exportTemplate', '参数项列表.xls', {})
|
||||
downloadFile('params/paramsInfo/exportTemplate', '参数项列表.xlsx', {})
|
||||
},
|
||||
handleToggleSearch() {
|
||||
this.toggleSearchStatus = !this.toggleSearchStatus
|
||||
@@ -221,10 +247,6 @@ export default {
|
||||
//添加
|
||||
handleAdd() {
|
||||
this.$refs.addModelRef.addModel()
|
||||
},
|
||||
// 复制
|
||||
handlecody(){
|
||||
|
||||
},
|
||||
//批量删除
|
||||
handleDel() {
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
<a-icon type="container"/>
|
||||
{{$t('taskList')}}
|
||||
</div>
|
||||
<div class="Virtual-detail-left-text" :title="$t('TaskParameterCollection')" @click="textClick(3,'任务参数收集')">
|
||||
<div class="Virtual-detail-left-text" :title="$t('TaskParameterCollection')" @click="textClick(3,'认证参数收集')">
|
||||
<a-icon type="container"/>
|
||||
{{$t('TaskParameterCollection')}}
|
||||
</div>
|
||||
@@ -52,7 +52,7 @@
|
||||
<ProjectDetailsName v-if="textTitle === '项目详情'"/>
|
||||
<listOfRegulations v-else-if="textTitle === '法规清单'"/>
|
||||
<TaskList v-else-if="textTitle === '任务清单'"/>
|
||||
<TaskParameterCollection v-else-if="textTitle === '任务参数收集'"/>
|
||||
<TaskParameterCollection v-else-if="textTitle === '认证参数收集'"/>
|
||||
<nonConformance v-else-if="textTitle === '未符合项'"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -102,25 +102,15 @@
|
||||
</div>
|
||||
<div class="process-content-right-xian"></div>
|
||||
</div>
|
||||
<a-tabs style="margin-top: 20px" default-active-key="1" class="ant-tabs">
|
||||
<a-tab-pane key="1" :tab="$t('DeliverableStatus')">
|
||||
<div class="box-content">
|
||||
<div class="box-content-left">
|
||||
<div id="main"></div>
|
||||
</div>
|
||||
<div class="box-content-right">
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<a-tabs style="margin-top: 20px" v-model="activeKey" class="ant-tabs">
|
||||
<a-tab-pane :key="$t('CurrentStatusOfTheProject')" :tab="$t('CurrentStatusOfTheProject')">
|
||||
<currentStatusOfTheProjectEcharts v-if="activeKey == $t('CurrentStatusOfTheProject')"/>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="2" :tab="$t('CurrentStatusOfTheProject')">
|
||||
Tab 2
|
||||
<a-tab-pane :key="$t('DeliverableStatus')" :tab="$t('DeliverableStatus')">
|
||||
<deliverableStatusEchart v-if="activeKey == $t('DeliverableStatus')"/>
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="3" :tab="$t('CertificationProgress')">
|
||||
Tab 3
|
||||
</a-tab-pane>
|
||||
<a-tab-pane key="4" :tab="$t('NonConformance')">
|
||||
Tab 4
|
||||
<a-tab-pane :key="$t('CertificationProgress')" :tab="$t('CertificationProgress')">
|
||||
<certificationProgressEchart v-if="activeKey == $t('CertificationProgress')"/>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
<listOfRelevantPersonnel ref="listOfRelevantPersonnelRef"/>
|
||||
@@ -135,17 +125,24 @@
|
||||
import { getAction, postAction, downloadFile, putAction } from '@/api/manage'
|
||||
import addModel from './addModel'
|
||||
import settingList from './settingList'
|
||||
import currentStatusOfTheProjectEcharts from './currentStatusOfTheProjectEcharts'
|
||||
import deliverableStatusEchart from './deliverableStatusEchart'
|
||||
import certificationProgressEchart from './certificationProgressEchart'
|
||||
|
||||
export default {
|
||||
name: 'ProjectDetails',
|
||||
components: {
|
||||
listOfRelevantPersonnel,
|
||||
addModel,
|
||||
settingList
|
||||
settingList,
|
||||
currentStatusOfTheProjectEcharts,
|
||||
deliverableStatusEchart,
|
||||
certificationProgressEchart
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
queryForm: {},
|
||||
activeKey: this.$t('CurrentStatusOfTheProject'),
|
||||
url: {
|
||||
queryById: 'project/projectLibraryBase/queryById',
|
||||
add: 'project/projectLibraryBase/add',
|
||||
@@ -161,7 +158,6 @@
|
||||
mounted() {
|
||||
this.getForm()
|
||||
this.getSetting()
|
||||
this.mainEcharts()
|
||||
},
|
||||
methods: {
|
||||
getForm() {
|
||||
@@ -185,26 +181,6 @@
|
||||
settingListForm() {
|
||||
this.getSetting()
|
||||
},
|
||||
mainEcharts() {
|
||||
var myChart = echarts.init(document.getElementById('main'))
|
||||
myChart.setOption({
|
||||
title: {
|
||||
text: 'ECharts 入门示例'
|
||||
},
|
||||
tooltip: {},
|
||||
xAxis: {
|
||||
data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
|
||||
},
|
||||
yAxis: {},
|
||||
series: [
|
||||
{
|
||||
name: '销量',
|
||||
type: 'bar',
|
||||
data: [5, 20, 36, 10, 10, 20]
|
||||
}
|
||||
]
|
||||
})
|
||||
},
|
||||
ListOfRelevantPersonnelClick() {
|
||||
this.$refs.listOfRelevantPersonnelRef.getData()
|
||||
},
|
||||
@@ -329,29 +305,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
.box-content {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.box-content-left {
|
||||
width: calc(50% - 12px);
|
||||
height: 300px;
|
||||
border: 2px #eff1f3 solid;
|
||||
|
||||
#main {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.box-content-right {
|
||||
width: calc(50% - 12px);
|
||||
height: 300px;
|
||||
border: 2px #eff1f3 solid;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 600px) and (max-width: 1600px) {
|
||||
|
||||
.process-content-right-top {
|
||||
|
||||
@@ -43,14 +43,49 @@
|
||||
<div style="width: 100%">
|
||||
<a-table
|
||||
ref="table"
|
||||
bordered
|
||||
:loading="loading"
|
||||
:pagination="false"
|
||||
:scroll="{x: true}"
|
||||
rowKey="id"
|
||||
:data-source="dataSource"
|
||||
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
|
||||
:columns="columns"
|
||||
>
|
||||
<div slot="standardInformation" slot-scope="text,result" class="box-left">
|
||||
<a class="box-content">GB-7258-2017</a><br/>
|
||||
<a>及东盟火车大师傅但是</a>
|
||||
</div>
|
||||
<div slot="areaOfResponsibility" slot-scope="text,result" class="box-left">
|
||||
<span class="box-content">1212sdfdsf</span><br/>
|
||||
<span>责任领土</span>
|
||||
</div>
|
||||
<div slot="confirmationOfDesignConformity" slot-scope="text,result" class="box-left">
|
||||
<span class="box-content">截止时间: 2022-06-01</span><br/>
|
||||
<span class="box-content">流程状态: 待审核</span><br/>
|
||||
<span class="box-content-color">待追踪</span>
|
||||
<div class="content-box">
|
||||
<div class="content-box-jiao"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div slot="PrehomoConfirmation" slot-scope="text,result" class="box-left">
|
||||
<span class="box-content">截止时间: 2022-06-01</span><br/>
|
||||
<span class="box-content">流程状态: 待审核</span><br/>
|
||||
<span class="box-content-color">待追踪</span>
|
||||
</div>
|
||||
<div slot="verificationAndConformityconfirmation" slot-scope="text,result" class="box-left">
|
||||
<span class="box-content">截止时间: 2022-06-01</span><br/>
|
||||
<span class="box-content">流程状态: 待审核</span><br/>
|
||||
<span class="box-content-color">待追踪</span>
|
||||
</div>
|
||||
<div slot="CertificationProgress" slot-scope="text,result">
|
||||
<span class="box-content-color">
|
||||
实验通过
|
||||
</span>
|
||||
</div>
|
||||
<div slot="CurrentProjectStatusEvaluation" slot-scope="text,result">
|
||||
<div class="Current-color">
|
||||
<div class="Current-color-box"></div>
|
||||
</div>
|
||||
</div>
|
||||
</a-table>
|
||||
</div>
|
||||
<certificationDirectory :url="url" ref="certificationDirectoryRef"/>
|
||||
@@ -59,9 +94,10 @@
|
||||
|
||||
<script>
|
||||
import certificationDirectory from './certificationDirectory'
|
||||
|
||||
export default {
|
||||
name: 'TaskList',
|
||||
components:{
|
||||
components: {
|
||||
certificationDirectory
|
||||
},
|
||||
data() {
|
||||
@@ -70,105 +106,52 @@
|
||||
{
|
||||
title: this.$t('serialNumber'),
|
||||
align: 'center',
|
||||
width: 100,
|
||||
fixed: 'left'
|
||||
width: 80,
|
||||
customRender: function(t, r, index) {
|
||||
return parseInt(index) + 1
|
||||
}
|
||||
},
|
||||
{
|
||||
title: this.$t('standard'),
|
||||
title: this.$t('standardInformation'),
|
||||
align: 'center',
|
||||
dataIndex: 'standard',
|
||||
fixed: 'left'
|
||||
scopedSlots: { customRender: 'standardInformation' }
|
||||
},
|
||||
{
|
||||
title: this.$t('areaOfResponsibility'),
|
||||
align: 'center',
|
||||
dataIndex: 'areaOfResponsibility',
|
||||
fixed: 'left'
|
||||
scopedSlots: { customRender: 'areaOfResponsibility' }
|
||||
},
|
||||
{
|
||||
title: this.$t('confirmationOfDesignConformity'),
|
||||
children: [
|
||||
{
|
||||
title: this.$t('TaskRequirements'),
|
||||
dataIndex: 'TaskRequirements',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: this.$t('Sponsor'),
|
||||
dataIndex: 'Sponsor',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: this.$t('TaskCutOffTime'),
|
||||
dataIndex: 'TaskCutOffTime',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: this.$t('status'),
|
||||
dataIndex: 'status',
|
||||
align: 'center'
|
||||
}
|
||||
]
|
||||
align: 'center',
|
||||
dataIndex: 'confirmationOfDesignConformity',
|
||||
scopedSlots: { customRender: 'confirmationOfDesignConformity' }
|
||||
},
|
||||
{
|
||||
title: this.$t('PrehomoConfirmation'),
|
||||
children: [
|
||||
{
|
||||
title: this.$t('TaskRequirements'),
|
||||
dataIndex: 'TaskRequirements',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: this.$t('Sponsor'),
|
||||
dataIndex: 'Sponsor',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: this.$t('TaskCutOffTime'),
|
||||
dataIndex: 'TaskCutOffTime',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: this.$t('status'),
|
||||
dataIndex: 'status',
|
||||
align: 'center'
|
||||
}
|
||||
]
|
||||
align: 'center',
|
||||
dataIndex: 'PrehomoConfirmation',
|
||||
scopedSlots: { customRender: 'PrehomoConfirmation' }
|
||||
},
|
||||
{
|
||||
title: this.$t('verificationAndConformityconfirmation'),
|
||||
children: [
|
||||
{
|
||||
title: this.$t('TaskRequirements'),
|
||||
dataIndex: 'TaskRequirements',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: this.$t('Sponsor'),
|
||||
dataIndex: 'Sponsor',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: this.$t('TaskCutOffTime'),
|
||||
dataIndex: 'TaskCutOffTime',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: this.$t('status'),
|
||||
dataIndex: 'status',
|
||||
align: 'center'
|
||||
}
|
||||
]
|
||||
align: 'center',
|
||||
dataIndex: 'verificationAndConformityconfirmation',
|
||||
scopedSlots: { customRender: 'verificationAndConformityconfirmation' }
|
||||
},
|
||||
{
|
||||
title: this.$t('CertificationProgress'),
|
||||
align: 'center',
|
||||
width: 150,
|
||||
dataIndex: 'CertificationProgress',
|
||||
scopedSlots: { customRender: 'CertificationProgress' }
|
||||
},
|
||||
{
|
||||
title: this.$t('CurrentProjectStatusEvaluation'),
|
||||
align: 'center',
|
||||
width: 150,
|
||||
dataIndex: 'CurrentProjectStatusEvaluation',
|
||||
scopedSlots: { customRender: 'CurrentProjectStatusEvaluation' }
|
||||
}
|
||||
@@ -177,7 +160,7 @@
|
||||
queryParam: {},
|
||||
url: {},
|
||||
loading: false,
|
||||
dataSource: []
|
||||
dataSource: [{}]
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@@ -196,7 +179,7 @@
|
||||
|
||||
},
|
||||
CertificationDirectory() {
|
||||
this.$refs.certificationDirectoryRef.addModel()
|
||||
this.$refs.certificationDirectoryRef.addModel()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -254,6 +237,61 @@
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.box-left {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.content-box {
|
||||
position: absolute;
|
||||
width: calc(100% + 32px);
|
||||
height: calc(100% + 32px);
|
||||
top: -16px;
|
||||
left: -16px;
|
||||
border: 1px seagreen solid;
|
||||
}
|
||||
|
||||
.content-box-jiao {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-right: 30px solid red;
|
||||
border-bottom: 30px solid transparent
|
||||
}
|
||||
|
||||
.box-content {
|
||||
margin-bottom: 8px;
|
||||
display: inline-block;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.box-content-color {
|
||||
padding: 6px 14px;
|
||||
box-sizing: border-box;
|
||||
background: #1ABBC4;
|
||||
color: #2F8DF3;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.Current-color {
|
||||
display: inline-block;
|
||||
width: 26px;
|
||||
height: 26px;
|
||||
line-height: 32px;
|
||||
text-align: center;
|
||||
background: #fff;
|
||||
border-radius: 50%;
|
||||
border: 1px red solid;
|
||||
}
|
||||
|
||||
.Current-color-box {
|
||||
display: inline-block;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
background: red;
|
||||
border-radius: 50%;
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
.box-input .ant-select-selection {
|
||||
|
||||
@@ -4,10 +4,10 @@
|
||||
<a-row :gutter="24">
|
||||
<a-col :md="6" :sm="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('certificationType')">
|
||||
<span>{{$t('certificationType')}}</span>
|
||||
<div class="title-text" :title="$t('title')">
|
||||
<span>{{$t('title')}}</span>
|
||||
</div>
|
||||
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('certificationType')"
|
||||
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('title')"
|
||||
v-model="queryParam.certificationType"></a-input>
|
||||
</div>
|
||||
</a-col>
|
||||
@@ -22,22 +22,15 @@
|
||||
<div class="table-operator">
|
||||
<div @click="handleAdd" class="operator-text">
|
||||
<a-icon type="plus"/>
|
||||
{{$t('add')}}
|
||||
{{$t('add')}}{{ $t('detailedList') }}
|
||||
</div>
|
||||
<div @click="handleModule" class="operator-text">
|
||||
<a-icon type="download"/>
|
||||
{{$t('templateDownload')}}
|
||||
</div>
|
||||
<div class="operator-text" v-has="'document:importZip'">
|
||||
<ImportFile :url="url" :isTrue="true" @getList="getPersonnelList" :accept="'.zip'"/>
|
||||
<a-icon type="bulb"/>
|
||||
{{$t('changeExtension')}}
|
||||
</div>
|
||||
<div @click="handleDel" class="operator-text">
|
||||
<a-icon type="delete"/>
|
||||
{{$t('BatchDelete')}}
|
||||
</div>
|
||||
<div @click="handleExport" class="operator-text">
|
||||
<a-icon type="export" :rotate="-90"/>
|
||||
{{$t('export')}}
|
||||
<a-icon type="copy"/>
|
||||
{{$t('copy')}}{{$t('parameter')}}{{ $t('detailedList') }}
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 100%">
|
||||
@@ -56,53 +49,58 @@
|
||||
</span>
|
||||
</a-table>
|
||||
</div>
|
||||
<a-modal v-model="areaVisible">
|
||||
<parameter-template v-if='areaVisible'></parameter-template>
|
||||
</a-modal>
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ImportFile from '@/components/ImportFile/index'
|
||||
import ParameterTemplate from '../dialog/ParameterTemplate'
|
||||
export default {
|
||||
name: 'TaskParameterCollection',
|
||||
components:{
|
||||
ImportFile
|
||||
ImportFile,
|
||||
ParameterTemplate
|
||||
},
|
||||
data(){
|
||||
return{
|
||||
columns:[
|
||||
{
|
||||
title: this.$t('NiONumber'),
|
||||
title: this.$t('title'),
|
||||
align: 'center',
|
||||
dataIndex: 'NiONumber',
|
||||
},
|
||||
{
|
||||
title: this.$t('ParameterName'),
|
||||
align: 'center',
|
||||
dataIndex: 'ParameterName',
|
||||
},
|
||||
{
|
||||
title: this.$t('ParameterDescription'),
|
||||
align: 'center',
|
||||
dataIndex: 'ParameterDescription',
|
||||
dataIndex: 'title',
|
||||
},
|
||||
{
|
||||
title: this.$t('status'),
|
||||
align: 'center',
|
||||
dataIndex: 'status',
|
||||
dataIndex: 'title',
|
||||
},
|
||||
{
|
||||
title: this.$t('Operator'),
|
||||
title: this.$t('parameterTemplateName'),
|
||||
align: 'center',
|
||||
dataIndex: 'Operator',
|
||||
dataIndex: 'ParameterDescription',
|
||||
},
|
||||
{
|
||||
title: this.$t('operationTime'),
|
||||
title: this.$t('collectionCompletionTime'),
|
||||
align: 'center',
|
||||
dataIndex: 'operationTime',
|
||||
dataIndex: 'title',
|
||||
},
|
||||
{
|
||||
title: this.$t('Version'),
|
||||
align: 'center',
|
||||
dataIndex: 'Version',
|
||||
dataIndex: 'title',
|
||||
},
|
||||
{
|
||||
title: this.$t('creator'),
|
||||
align: 'center',
|
||||
dataIndex: 'title',
|
||||
},
|
||||
{
|
||||
title: this.$t('createTime'),
|
||||
align: 'center',
|
||||
dataIndex: 'title',
|
||||
},
|
||||
{
|
||||
title: this.$t('operation'),
|
||||
@@ -116,7 +114,8 @@
|
||||
queryParam: {},
|
||||
url: {},
|
||||
loading: false,
|
||||
dataSource: []
|
||||
dataSource: [],
|
||||
areaVisible: false, // 弹框的控制
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@@ -138,7 +137,7 @@
|
||||
|
||||
},
|
||||
handleAdd(){
|
||||
|
||||
this.areaVisible = true
|
||||
},
|
||||
handleModule(){
|
||||
|
||||
|
||||
@@ -218,34 +218,34 @@
|
||||
message: this.$t('pleaseEnterTheCorrectWebAddress')
|
||||
}
|
||||
],
|
||||
projectNameId:[
|
||||
projectNameId: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('entryName') + this.$t('cannotEmpty'),
|
||||
trigger: 'change'
|
||||
}
|
||||
],
|
||||
targetMarket:[
|
||||
targetMarket: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('targetMarket') + this.$t('cannotEmpty'),
|
||||
trigger: 'change'
|
||||
}
|
||||
],
|
||||
projectStatus:[
|
||||
projectStatus: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('projectStatus') + this.$t('cannotEmpty'),
|
||||
trigger: 'change'
|
||||
}
|
||||
],
|
||||
studioEngineerName:[
|
||||
studioEngineerName: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('StudioEngineer') + this.$t('cannotEmpty'),
|
||||
trigger: 'change'
|
||||
}
|
||||
],
|
||||
]
|
||||
},
|
||||
disabled: false,
|
||||
projectNameList: [],
|
||||
@@ -269,12 +269,16 @@
|
||||
this.visible = true
|
||||
this.title = '新增'
|
||||
this.formInline = {}
|
||||
this.$nextTick(() => {
|
||||
this.$refs.ruleForm.clearValidate()
|
||||
})
|
||||
},
|
||||
editModel(value) {
|
||||
this.visible = true
|
||||
this.title = '编辑'
|
||||
this.$nextTick(() => {
|
||||
this.formInline = value
|
||||
this.$refs.ruleForm.clearValidate()
|
||||
})
|
||||
},
|
||||
handleCancel() {
|
||||
@@ -323,9 +327,9 @@
|
||||
this.formInline[value] = id
|
||||
this.formInline = { ...this.formInline }
|
||||
},
|
||||
projectNameChange(value){
|
||||
projectNameChange(value) {
|
||||
console.log(value)
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -0,0 +1,104 @@
|
||||
<template>
|
||||
<div class="box-content">
|
||||
<div class="box-content-left">
|
||||
<div id="main-left"></div>
|
||||
</div>
|
||||
<div class="box-content-right">
|
||||
<div id="main-right"></div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as echarts from 'echarts'
|
||||
|
||||
export default {
|
||||
name: 'certificationProgress',
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
mounted() {
|
||||
this.mainLeftEcharts()
|
||||
},
|
||||
methods: {
|
||||
getEcharts(chart, title, color, data) {
|
||||
var myChart = echarts.init(document.getElementById(chart))
|
||||
myChart.setOption({
|
||||
title: {
|
||||
text: title
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
legend: {
|
||||
itemWidth: 12,
|
||||
itemHeight: 12,
|
||||
bottom: '0',
|
||||
left: 'center',
|
||||
itemGap: 30,
|
||||
icon: 'circle'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: title,
|
||||
type: 'pie',
|
||||
radius: ['40%', '54%'],
|
||||
avoidLabelOverlap: false,
|
||||
label: {
|
||||
show: false,
|
||||
position: 'center'
|
||||
},
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
color: color,
|
||||
data: data
|
||||
}
|
||||
]
|
||||
})
|
||||
},
|
||||
mainLeftEcharts() {
|
||||
let data = [
|
||||
{ value: 1048, name: '待审查' },
|
||||
{ value: 735, name: '审查中' },
|
||||
{ value: 580, name: '审查完成' }
|
||||
]
|
||||
this.getEcharts('main-left', '内部审查进度', ['#00BEBE', '#FDB033', '#2F8DF3'], data)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.box-content {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.box-content-left {
|
||||
width: calc(50% - 12px);
|
||||
height: 398px;
|
||||
border: 2px #eff1f3 solid;
|
||||
|
||||
#main-left {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 24px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
|
||||
.box-content-right {
|
||||
width: calc(50% - 12px);
|
||||
height: 398px;
|
||||
border: 2px #eff1f3 solid;
|
||||
|
||||
#main-right {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 24px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -9,6 +9,9 @@
|
||||
@close="handleCancel"
|
||||
:visible="visible">
|
||||
<div class="button-box">
|
||||
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('comment')"
|
||||
v-model="commentContent"></j-input>
|
||||
<a-button @click="submitQuery" style="margin-right: 8px;" type="primary">{{$t('query')}}</a-button>
|
||||
<a-button @click="handleSubmit" type="primary">{{$t('publishComment')}}</a-button>
|
||||
</div>
|
||||
<div class="comment-box" v-if="dataList && dataList.length > 0">
|
||||
@@ -29,8 +32,8 @@
|
||||
<a-icon type="message"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="inside-box" v-if="item.ProjectCommentVOList && item.ProjectCommentVOList.length > 0">
|
||||
<div class="box-content-inside" v-for="(val,indexOne) in item.ProjectCommentVOList" :key="indexOne">
|
||||
<div class="inside-box" v-if="item.projectCommentVOList && item.projectCommentVOList.length > 0">
|
||||
<div class="box-content-inside" v-for="(val,indexOne) in item.projectCommentVOList" :key="indexOne">
|
||||
<div class="img-box">
|
||||
<img src="../../../assets/daiban.png" class="img" alt="">
|
||||
</div>
|
||||
@@ -41,7 +44,7 @@
|
||||
<div class="box-text-text">
|
||||
{{val.content}}
|
||||
</div>
|
||||
<div class="box-icon" @click="messageClick(val)">
|
||||
<div class="box-icon" @click="messageClick(item)">
|
||||
<a-icon type="message"/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -99,6 +102,7 @@
|
||||
visible: false,
|
||||
dataList: [],
|
||||
formInline: {},
|
||||
commentContent:'',
|
||||
loading: false,
|
||||
title: this.$t('comment'),
|
||||
confirmLoading: false,
|
||||
@@ -143,10 +147,13 @@
|
||||
this.$nextTick(() => {
|
||||
this.$refs.ruleForm.clearValidate()
|
||||
})
|
||||
},
|
||||
submitQuery(){
|
||||
|
||||
},
|
||||
getList() {
|
||||
this.loading = true
|
||||
getAction(this.url.list, { projectLibraryId: this.$route.query.id }).then((res) => {
|
||||
getAction(this.url.list, { projectLibraryId: this.$route.query.id,commentContent:this.commentContent }).then((res) => {
|
||||
if (res.success) {
|
||||
this.loading = false
|
||||
this.dataList = res.result || []
|
||||
@@ -336,12 +343,6 @@
|
||||
line-height: 48px;
|
||||
}
|
||||
|
||||
.box-input {
|
||||
display: inline-block;
|
||||
height: 38px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.itemModel {
|
||||
width: calc(100% - 64px);
|
||||
display: inline-block;
|
||||
@@ -361,4 +362,8 @@
|
||||
text-align: center;
|
||||
margin-top: 40px;
|
||||
}
|
||||
.box-input{
|
||||
width: calc(100% - 168px);
|
||||
margin-right: 8px;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,145 @@
|
||||
<template>
|
||||
<div class="box-content">
|
||||
<div class="box-content-left">
|
||||
<div id="main-left"></div>
|
||||
</div>
|
||||
<div class="box-content-right">
|
||||
<div id="main-right">
|
||||
<a-table
|
||||
ref="table"
|
||||
:loading="loading"
|
||||
:pagination="false"
|
||||
:scroll="{x: true}"
|
||||
:data-source="dataSource"
|
||||
:columns="columns"
|
||||
>
|
||||
</a-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as echarts from 'echarts'
|
||||
|
||||
export default {
|
||||
name: 'CurrentStatusOfTheProjectEcharts',
|
||||
data() {
|
||||
return {
|
||||
loading:false,
|
||||
dataSource:[],
|
||||
columns:[
|
||||
{
|
||||
title: this.$t('nonConformity'),
|
||||
align: 'center',
|
||||
dataIndex: 'nonConformity',
|
||||
scopedSlots: { customRender: 'titleName' }
|
||||
},
|
||||
{
|
||||
title: this.$t('Tracked'),
|
||||
align: 'center',
|
||||
dataIndex: 'Tracked',
|
||||
scopedSlots: { customRender: 'titleName' }
|
||||
},
|
||||
{
|
||||
title: this.$t('accord'),
|
||||
align: 'center',
|
||||
dataIndex: 'accord',
|
||||
scopedSlots: { customRender: 'titleName' }
|
||||
},
|
||||
{
|
||||
title: this.$t('notEvaluated'),
|
||||
align: 'center',
|
||||
dataIndex: 'notEvaluated',
|
||||
scopedSlots: { customRender: 'titleName' }
|
||||
},
|
||||
],
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.mainLeftEcharts()
|
||||
},
|
||||
methods: {
|
||||
getEcharts(chart, title, color, data) {
|
||||
var myChart = echarts.init(document.getElementById(chart))
|
||||
myChart.setOption({
|
||||
title: {
|
||||
text: title
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
legend: {
|
||||
itemWidth: 12,
|
||||
itemHeight: 12,
|
||||
bottom: '0',
|
||||
left: 'center',
|
||||
itemGap: 30,
|
||||
icon: 'circle'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: title,
|
||||
type: 'pie',
|
||||
radius: ['40%', '54%'],
|
||||
avoidLabelOverlap: false,
|
||||
label: {
|
||||
show: false,
|
||||
position: 'center'
|
||||
},
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
color: color,
|
||||
data: data
|
||||
}
|
||||
]
|
||||
})
|
||||
},
|
||||
mainLeftEcharts() {
|
||||
let data = [
|
||||
{ value: 1048, name: this.$t('nonConformity') },
|
||||
{ value: 735, name: this.$t('Tracked') },
|
||||
{ value: 580, name: this.$t('accord') },
|
||||
{ value: 580, name: this.$t('notEvaluated') }
|
||||
]
|
||||
this.getEcharts('main-left', this.$t('CurrentStatusOfTheProject'), ['#2F8DF3', '#FF8543', '#37CED1', '#FDB033', '#9DB9D4'], data)
|
||||
},
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.box-content {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.box-content-left {
|
||||
width: calc(50% - 12px);
|
||||
height: 398px;
|
||||
border: 2px #eff1f3 solid;
|
||||
|
||||
#main-left {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 24px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
|
||||
.box-content-right {
|
||||
width: calc(50% - 12px);
|
||||
height: 398px;
|
||||
border: 2px #eff1f3 solid;
|
||||
|
||||
#main-right {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 24px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,113 @@
|
||||
<template>
|
||||
<div class="box-content">
|
||||
<div class="box-content-left">
|
||||
<div id="main-left"></div>
|
||||
</div>
|
||||
<div class="box-content-right">
|
||||
<div id="main-right"></div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as echarts from 'echarts'
|
||||
|
||||
export default {
|
||||
name: 'DeliverableStatusEchart',
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
mounted() {
|
||||
this.mainLeftEcharts()
|
||||
this.mainRightEcharts()
|
||||
},
|
||||
methods: {
|
||||
getEcharts(chart, title, color, data) {
|
||||
var myChart = echarts.init(document.getElementById(chart))
|
||||
myChart.setOption({
|
||||
title: {
|
||||
text: title
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'item'
|
||||
},
|
||||
legend: {
|
||||
itemWidth: 12,
|
||||
itemHeight: 12,
|
||||
bottom: '0',
|
||||
left: 'center',
|
||||
itemGap: 30,
|
||||
icon: 'circle'
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: title,
|
||||
type: 'pie',
|
||||
radius: ['40%', '54%'],
|
||||
avoidLabelOverlap: false,
|
||||
label: {
|
||||
show: false,
|
||||
position: 'center'
|
||||
},
|
||||
labelLine: {
|
||||
show: false
|
||||
},
|
||||
color: color,
|
||||
data: data
|
||||
}
|
||||
]
|
||||
})
|
||||
},
|
||||
mainLeftEcharts() {
|
||||
let data = [
|
||||
{ value: 1048, name: '待审查' },
|
||||
{ value: 735, name: '审查中' },
|
||||
{ value: 580, name: '审查完成' }
|
||||
]
|
||||
this.getEcharts('main-left', '内部审查进度', ['#00BEBE', '#FDB033', '#2F8DF3'], data)
|
||||
},
|
||||
mainRightEcharts() {
|
||||
let data = [
|
||||
{ value: 1048, name: '待审查' },
|
||||
{ value: 735, name: '审查中' },
|
||||
{ value: 580, name: '审查完成' }
|
||||
]
|
||||
this.getEcharts('main-right', '法规握手进度', ['#00BEBE', '#FDB033', '#2F8DF3'], data)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="less">
|
||||
.box-content {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
||||
.box-content-left {
|
||||
width: calc(50% - 12px);
|
||||
height: 398px;
|
||||
border: 2px #eff1f3 solid;
|
||||
|
||||
#main-left {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 24px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
|
||||
.box-content-right {
|
||||
width: calc(50% - 12px);
|
||||
height: 398px;
|
||||
border: 2px #eff1f3 solid;
|
||||
|
||||
#main-right {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 24px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -24,31 +24,31 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, } from '@/api/manage'
|
||||
import { getAction, postAction } from '@/api/manage'
|
||||
|
||||
export default {
|
||||
name: 'historicalVersionList',
|
||||
data(){
|
||||
return{
|
||||
visible:false,
|
||||
confirmLoading:false,
|
||||
dataSource:[],
|
||||
loading:false,
|
||||
url:{
|
||||
list:'project/projectHistoryVersionsEO/list',
|
||||
data() {
|
||||
return {
|
||||
visible: false,
|
||||
confirmLoading: false,
|
||||
dataSource: [],
|
||||
loading: false,
|
||||
url: {
|
||||
list: 'project/projectHistoryVersionsEO/list'
|
||||
},
|
||||
columns: [
|
||||
{
|
||||
title: this.$t('versionName'),
|
||||
dataIndex: 'versionName',
|
||||
dataIndex: 'versionsName',
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
ellipsis: true
|
||||
},
|
||||
{
|
||||
title: this.$t('finalizationTime'),
|
||||
dataIndex: 'finalizationTime',
|
||||
dataIndex: 'createTime',
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
width: 180
|
||||
},
|
||||
{
|
||||
title: this.$t('operation'),
|
||||
@@ -61,8 +61,8 @@
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods:{
|
||||
getList(){
|
||||
methods: {
|
||||
getList() {
|
||||
this.visible = true
|
||||
this.historicalList()
|
||||
},
|
||||
@@ -72,7 +72,7 @@
|
||||
handleCancel() {
|
||||
this.visible = false
|
||||
},
|
||||
historicalList(){
|
||||
historicalList() {
|
||||
let query = {
|
||||
projectLibraryId: this.$route.query.id
|
||||
}
|
||||
@@ -86,9 +86,13 @@
|
||||
}
|
||||
})
|
||||
},
|
||||
seeClick(item){
|
||||
|
||||
},
|
||||
seeClick(item) {
|
||||
let newUrl = this.$router.resolve({
|
||||
path: '/historicalVersion',
|
||||
query: item
|
||||
})
|
||||
window.open(newUrl.href, '_blank')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -67,7 +67,8 @@
|
||||
<a-popconfirm overlayClassName='popconfirm' placement="bottomRight">
|
||||
<template slot="title" id="popconfirm">
|
||||
<div class="operator-text-title">
|
||||
<ImportFile :url="url" :isTrue="true" :accept="'.xls'" @getList="getPersonnelList"/>
|
||||
<ImportFile :url="url" :projectLibraryId=$route.query.id :isTrue="true" :accept="'.zip'"
|
||||
@getList="getPersonnelList"/>
|
||||
</div>
|
||||
<div @click="handleModule" class="operator-text-title">
|
||||
<a-icon type="download"/>
|
||||
@@ -531,6 +532,9 @@
|
||||
updateStatusBatch: '/project/projectLawsInventoryEO/updateStatusBatch',
|
||||
matchRelevantPeople: '/project/projectLawsInventoryEO/matchRelevantPeople',
|
||||
queryPersonByProject: '/project/projectRelatedPersonnel/queryPersonByProjectId',
|
||||
importZipUrl: '/project/projectLawsInventoryEO/importData',
|
||||
exportTemplate: '/project/projectLawsInventoryEO/exportTemplate',
|
||||
exportData: '/project/projectLawsInventoryEO/exportData',
|
||||
setBatch: '/project/projectLawsInventoryEO/setBatch',//批量设置
|
||||
copyUrl: '/project/projectLawsInventoryEO/copyInfoByIds',//复制
|
||||
transferUrl: '/project/projectLawsInventoryEO/getPageInfoDummy'//调取
|
||||
@@ -599,10 +603,17 @@
|
||||
methods: {
|
||||
...mapGetters(['userInfo']),
|
||||
handleModule() {
|
||||
|
||||
downloadFile(this.url.exportTemplate, this.$t('listOfRegulations') + this.$t('importTemplate') + '.xls', {})
|
||||
},
|
||||
handleExport() {
|
||||
|
||||
let selectedRowKeys = JSON.parse(JSON.stringify(this.selectedRowKeys))
|
||||
let query = {
|
||||
...this.queryParam,
|
||||
ids: selectedRowKeys.join(','),
|
||||
...this.queryParamQuery,
|
||||
projectLibraryId: this.$route.query.id
|
||||
}
|
||||
downloadFile(this.url.exportData, this.$route.query.projectName + this.$t('listOfRegulations') + '.zip', query, this.Deselect)
|
||||
},
|
||||
//复制
|
||||
copyClick() {
|
||||
|
||||
@@ -0,0 +1,350 @@
|
||||
<template>
|
||||
<div class="diolag-area">
|
||||
<div class="table-operator">
|
||||
<div class="operator-text">
|
||||
{{$t('parameterTemplate')}}
|
||||
</div>
|
||||
</div>
|
||||
<a-spin :spinning="spinLoading">
|
||||
<a-form-model
|
||||
class="tag-module"
|
||||
ref="ruleForm"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
:label-col="labelCol"
|
||||
:wrapper-col="wrapperCol"
|
||||
>
|
||||
<a-form-model-item :label="$t('Module')" prop="isModel">
|
||||
<j-dict-select-tag type="list" v-model="form.isModel" dictCode="module" :placeholder="$t('PleaseSelectModule')" />
|
||||
</a-form-model-item>
|
||||
<a-form-model-item ref="showArea" :label="$t('DisplayArea')" prop="showArea">
|
||||
<a-input
|
||||
v-model="form.showArea"
|
||||
@blur="
|
||||
() => {
|
||||
$refs.showArea.onFieldBlur();
|
||||
}
|
||||
"
|
||||
/>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item ref="enName" :label="$t('enName')" prop="enName">
|
||||
<a-input
|
||||
v-model="form.enName"
|
||||
@blur="
|
||||
() => {
|
||||
$refs.enName.onFieldBlur();
|
||||
}
|
||||
"
|
||||
/>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item ref="sort" :label="$t('SortNumber')" prop="sort">
|
||||
<a-input-number
|
||||
style="width:100%"
|
||||
v-model="form.sort"
|
||||
:min="1"
|
||||
:formatter="limitNumber"
|
||||
:parser="limitNumber"
|
||||
@blur="
|
||||
() => {
|
||||
$refs.sort.onFieldBlur();
|
||||
}
|
||||
"
|
||||
/>
|
||||
</a-form-model-item>
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
<a-table
|
||||
class="table-area"
|
||||
ref="table"
|
||||
size="middle"
|
||||
rowKey="id"
|
||||
:columns="columns"
|
||||
:dataSource="areaTable"
|
||||
:pagination="false"
|
||||
:loading="loading"
|
||||
:scroll="{x: 600}"
|
||||
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
|
||||
@change="handleTableChange">
|
||||
<a slot="name" slot-scope="text">{{ text }}</a>
|
||||
<span slot="action" slot-scope="text, record">
|
||||
<a class="action-edit" @click="editArea(record.id)" v-has="'area:edit'" >{{$t('edit')}}</a>
|
||||
<a style="color:red" href="javascript:;" @click=" deleteArea(record.id)" v-has="'area:delete'">{{$t('delete')}}</a>
|
||||
</span>
|
||||
</a-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { putAction,postAction,getAction,deleteAction } from '@/api/manage'
|
||||
export default {
|
||||
name: 'diolagArea',
|
||||
components:{
|
||||
|
||||
},
|
||||
data(){
|
||||
return{
|
||||
title:this.$t('add'),
|
||||
queryParams:{
|
||||
pageNo:1,
|
||||
pageSize:10
|
||||
},
|
||||
total:0,
|
||||
selectedRowKeys: [],
|
||||
loading: false,
|
||||
ipagination:true,
|
||||
editId:'',
|
||||
columns: [
|
||||
{
|
||||
title: this.$t('zoneOfApplication'),
|
||||
dataIndex: 'showArea',
|
||||
key: 'showArea',
|
||||
align: "center",
|
||||
ellipsis: true,
|
||||
},
|
||||
{
|
||||
title: this.$t('parameterTemplate'),
|
||||
align: "center",
|
||||
dataIndex: 'enName',
|
||||
ellipsis: true,
|
||||
}
|
||||
],
|
||||
newVisible:false,
|
||||
labelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 7 },
|
||||
},
|
||||
wrapperCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 14 },
|
||||
},
|
||||
form: {
|
||||
isModel:'1',
|
||||
showArea:'',
|
||||
enName:'',
|
||||
sort:''
|
||||
},
|
||||
rules: {
|
||||
isModel:[
|
||||
{ required: true, message: this.$t('PleaseSelectModule'), trigger: 'change' },
|
||||
|
||||
],
|
||||
enName:[
|
||||
{ max: 100, message: this.$t('CannotExceed100characters'), trigger: 'blur' },
|
||||
|
||||
],
|
||||
showArea:[
|
||||
{ required: true, message: this.$t('enterDisplayArea'), trigger: 'blur' },
|
||||
{ min:1, max: 50, message: this.$t('charactersLength'), trigger: 'blur' },
|
||||
],
|
||||
sort:[
|
||||
{ required: true, message: this.$t('enterSortingNumber'), trigger: 'change' },
|
||||
]
|
||||
},
|
||||
areaTable:[],
|
||||
flag:false, //表单提交标识
|
||||
spinLoading:false,
|
||||
}
|
||||
},
|
||||
props:{
|
||||
// areaTable:Array
|
||||
},
|
||||
mounted() {
|
||||
this.loadData()
|
||||
},
|
||||
methods:{
|
||||
loadData(){
|
||||
this.loading=true
|
||||
let params={
|
||||
...this.queryParams
|
||||
}
|
||||
postAction(`tag/onlCgformArea/page`,params).then(res=>{
|
||||
if(res.success){
|
||||
this.areaTable=[...res.result.records]
|
||||
this.total=res.result.total
|
||||
}
|
||||
}).finally(()=>{
|
||||
this.loading=false
|
||||
})
|
||||
},
|
||||
onSelectChange(selectedRowKeys) {
|
||||
// console.log('selectedRowKeys changed: ', selectedRowKeys);
|
||||
this.selectedRowKeys = selectedRowKeys;
|
||||
},
|
||||
handleTableChange(){
|
||||
|
||||
},
|
||||
showModal() {
|
||||
this.title=this.$t('add')
|
||||
this.newVisible = true;
|
||||
this.form={
|
||||
|
||||
}
|
||||
},
|
||||
//新增
|
||||
hideModal() {
|
||||
this.$refs.ruleForm.validate(valid => {
|
||||
if (valid) {
|
||||
this.flag=true
|
||||
this.spinLoading=true
|
||||
//编辑
|
||||
if(this.form.id){
|
||||
putAction(`tag/onlCgformArea/edit`,this.form).then((res)=>{
|
||||
if(res.success){
|
||||
this.$message.success(this.$t('OperationSuccessful'));
|
||||
this.loadData()
|
||||
this.form={
|
||||
isModel:'',
|
||||
showArea:'',
|
||||
enName:'',
|
||||
sort:''
|
||||
}
|
||||
}else{
|
||||
this.$message.warning(res.message)
|
||||
this.form={
|
||||
isModel:'',
|
||||
showArea:'',
|
||||
enName:'',
|
||||
sort:''
|
||||
}
|
||||
}
|
||||
}).finally(()=>{
|
||||
this.flag=false
|
||||
this.spinLoading=false
|
||||
this.newVisible = false;
|
||||
this.form={
|
||||
isModel:'',
|
||||
showArea:'',
|
||||
enName:'',
|
||||
sort:''
|
||||
}
|
||||
})
|
||||
}else{
|
||||
//新增
|
||||
postAction(`/tag/onlCgformArea/add`,this.form).then(res=>{
|
||||
if(res.success){
|
||||
this.$message.success( this.$t('OperationSuccessful'));
|
||||
this.loadData()
|
||||
this.form={
|
||||
isModel:'',
|
||||
showArea:'',
|
||||
enName:'',
|
||||
sort:''
|
||||
}
|
||||
}else{
|
||||
// this.$message.warning(this.$t('operationFailed'))
|
||||
this.$message.warning(res.message)
|
||||
|
||||
}
|
||||
}
|
||||
).finally(()=>{
|
||||
this.flag=false
|
||||
this.spinLoading=false
|
||||
this.newVisible = false;
|
||||
})
|
||||
}
|
||||
|
||||
} else {
|
||||
// console.log('error submit!!');
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
cancelModel(){
|
||||
this.newVisible=false
|
||||
this.$refs.ruleForm.resetFields();
|
||||
},
|
||||
//删除按钮
|
||||
deleteArea(val){
|
||||
this.$confirm({
|
||||
title: this.$t('confirmDeletion'),
|
||||
content: '',
|
||||
onOk:
|
||||
async () => {
|
||||
getAction(`tag/onlCgformArea/delete`, { id: val }).then((res) => {
|
||||
if (res.success) {
|
||||
this.$message.success(this.$t('OperationSuccessful'));
|
||||
if(this.areaTable.length==1&&this.queryParams.pageNo!=1){
|
||||
this.queryParams.pageNo=this.queryParams.pageNo-1
|
||||
}
|
||||
this.loadData()
|
||||
}else{
|
||||
// this.$message.warning(res.message)
|
||||
if(res.message=='该展示区域有关联数据,无法删除!'){
|
||||
this.$message.warning(this.$t('noDelete'))
|
||||
}else{
|
||||
this.$message.warning(this.$t('operationFailed'));
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
//编辑按钮
|
||||
editArea(val){
|
||||
this.title=this.$t('edit')
|
||||
this.newVisible = true;
|
||||
let params={
|
||||
id:val
|
||||
}
|
||||
getAction(`tag/onlCgformArea/queryById`, params).then((res) => {
|
||||
if(res.success){
|
||||
this.form={...res.result}
|
||||
// this.$emit('updateOk',res.result)
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
//点击页数
|
||||
onChangePage(page,pageSize){
|
||||
this.queryParams.pageNo = page
|
||||
this.loadData()
|
||||
},
|
||||
//一页显示条数
|
||||
SizeChange(page,pageSize){
|
||||
this.queryParams.pageSize = pageSize
|
||||
this.queryParams.pageNo=1
|
||||
this.loadData()
|
||||
},
|
||||
//正则替换小数点
|
||||
limitNumber(value) {
|
||||
if (typeof value === 'string') {
|
||||
return !isNaN(Number(value)) ? value.replace(/\./g, '') : 0
|
||||
} else if (typeof value === 'number') {
|
||||
return !isNaN(value) ? String(value).replace(/\./g, '') : 0
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import '~@assets/less/common.less';
|
||||
.diolag-area{
|
||||
.table-area{
|
||||
margin: 20px 0;
|
||||
.action-edit{
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
.table-del{
|
||||
color: red;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
<style lang="less">
|
||||
.area-module{
|
||||
.ant-modal-wrap{
|
||||
.ant-modal{
|
||||
.ant-modal-content{
|
||||
.ant-modal-footer{
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,673 @@
|
||||
<template>
|
||||
<a-card :bordered="false">
|
||||
<div class="header-text">
|
||||
{{ $t('DocumentStandard') }}
|
||||
</div>
|
||||
<div class="table-page-search-wrapper">
|
||||
<a-row :gutter="24">
|
||||
<a-col :md="6" :sm="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('standard')">
|
||||
<span>{{ $t('standard') }}</span>
|
||||
</div>
|
||||
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('standard')"
|
||||
v-model="queryParam.serialNumber"></j-input>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :md="6" :sm="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('title')">
|
||||
<span>{{ $t('title') }}</span>
|
||||
</div>
|
||||
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('title')"
|
||||
v-model="queryParam.title"></j-input>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :md="6" :sm="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" style="width: 44px" :title="$t('subtitle')">
|
||||
<span>{{ $t('subtitle') }}</span>
|
||||
</div>
|
||||
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('subtitle')"
|
||||
v-model="queryParam.subtitle"></j-input>
|
||||
</div>
|
||||
</a-col>
|
||||
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
|
||||
<a-col :md="6" :sm="24">
|
||||
<globalAdvancedQuery ref="globalAdvancedQueryRef"
|
||||
@handleSuperQuery="handleSuperQuery"
|
||||
:fieldList="fieldList"/>
|
||||
<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>
|
||||
</a-row>
|
||||
</div>
|
||||
<div style="width: 100%">
|
||||
<a-table
|
||||
ref="table"
|
||||
:loading="loading"
|
||||
:pagination="false"
|
||||
:scroll="{x: true}"
|
||||
rowKey="id"
|
||||
:data-source="dataSource"
|
||||
:row-selection="{ selectedRowKeys: selectedRowKeys}"
|
||||
:columns="columns"
|
||||
>
|
||||
<span slot="titleName" slot-scope="text,record" :title="text">
|
||||
{{ text && text.length > 20 ? text.slice(0, 19) + '...' : text }}
|
||||
</span>
|
||||
<span slot="designDeliverableTemplateName" slot-scope="text,record">
|
||||
<span>{{ record.designDeliverableType_dictText }}</span><br v-if="record.designDeliverableType_dictText">
|
||||
<a v-if="record.designDeliverableTemplate && record.designDeliverableTemplate.split(',').length == 1"
|
||||
@click="pdfPreviewClick(record.designDeliverableTemplateName,record.designDeliverableTemplate)">
|
||||
{{ record.designDeliverableTemplateName }}
|
||||
</a>
|
||||
<a v-else-if="record.designDeliverableTemplate && record.designDeliverableTemplate.split(',').length > 1"
|
||||
@click="clickButtonToUpload(record.designDeliverableTemplate)">{{ $t('viewFile') }}</a>
|
||||
<span v-else>--</span>
|
||||
</span>
|
||||
<span slot="prehomoDeliverableTemplateName" slot-scope="text,record">
|
||||
<span>{{ record.prehomoDeliverableType_dictText }}</span><br v-if="record.prehomoDeliverableType_dictText">
|
||||
<a v-if="record.prehomoDeliverableTemplate && record.prehomoDeliverableTemplate.split(',').length == 1"
|
||||
@click="pdfPreviewClick(record.prehomoDeliverableTemplateName,record.prehomoDeliverableTemplate)">
|
||||
{{ record.prehomoDeliverableTemplateName }}
|
||||
</a>
|
||||
<a v-else-if="record.prehomoDeliverableTemplate && record.prehomoDeliverableTemplate.split(',').length > 1"
|
||||
@click="clickButtonToUpload(record.prehomoDeliverableTemplate)">{{ $t('viewFile') }}</a>
|
||||
<span v-else>--</span>
|
||||
</span>
|
||||
<span slot="verifyDeliverableTemplateName" slot-scope="text,record">
|
||||
<span>{{ record.verifyDeliverableType_dictText }}</span><br v-if="record.verifyDeliverableType_dictText">
|
||||
<a v-if="record.verifyDeliverableTemplate && record.verifyDeliverableTemplate.split(',').length == 1"
|
||||
@click="pdfPreviewClick(record.verifyDeliverableTemplateName,record.verifyDeliverableTemplate)">
|
||||
{{ record.verifyDeliverableTemplateName }}
|
||||
</a>
|
||||
<a v-else-if="record.verifyDeliverableTemplate && record.verifyDeliverableTemplate.split(',').length > 1"
|
||||
@click="clickButtonToUpload(record.verifyDeliverableTemplate)">{{ $t('viewFile') }}</a>
|
||||
<span v-else>--</span>
|
||||
</span>
|
||||
</a-table>
|
||||
</div>
|
||||
<a-modal
|
||||
:title="$t('deliverableTemplate')"
|
||||
:width="600"
|
||||
:visible="visibleFile"
|
||||
:maskClosable="false"
|
||||
@ok="visibleFile = false"
|
||||
@cancel="visibleFile = false"
|
||||
>
|
||||
<a-table
|
||||
class="table"
|
||||
:columns="columnsFile"
|
||||
:pagination="false"
|
||||
:scroll="{x:500,y: 400}"
|
||||
:data-source="dataSourceFile"
|
||||
:loading="loading"
|
||||
>
|
||||
<span slot="fileOperation" slot-scope="record">
|
||||
<a class="text" @click="pdfPreview(record)">
|
||||
{{ $t('See') }}
|
||||
</a>
|
||||
<a class="text" @click="download(record)">
|
||||
{{ $t('download') }}
|
||||
</a>
|
||||
</span>
|
||||
</a-table>
|
||||
</a-modal>
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ImportFile from '@/components/ImportFile/index'
|
||||
import globalAdvancedQuery from '@/components/globalAdvancedQuery/index'
|
||||
import { getAction, postAction, downloadFile, deleteAction } from '@/api/manage'
|
||||
import { mapGetters } from 'vuex'
|
||||
import { Base64 } from 'js-base64'
|
||||
|
||||
export default {
|
||||
name: 'index',
|
||||
components: {
|
||||
globalAdvancedQuery,
|
||||
ImportFile
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
columns: [
|
||||
{
|
||||
title: this.$t('standard'),
|
||||
align: 'center',
|
||||
dataIndex: 'serialNumber',
|
||||
width: 180,
|
||||
fixed: 'left',
|
||||
scopedSlots: { customRender: 'titleName' }
|
||||
},
|
||||
{
|
||||
title: this.$t('title'),
|
||||
align: 'center',
|
||||
dataIndex: 'title',
|
||||
width: 180,
|
||||
fixed: 'left',
|
||||
scopedSlots: { customRender: 'titleName' }
|
||||
},
|
||||
{
|
||||
title: this.$t('subtitle'),
|
||||
align: 'center',
|
||||
dataIndex: 'subtitle',
|
||||
width: 180,
|
||||
fixed: 'left',
|
||||
scopedSlots: { customRender: 'titleName' }
|
||||
},
|
||||
{
|
||||
title: this.$t('listConfirmationStatus'),
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
dataIndex: 'inventoryAffirmStatusName'
|
||||
},
|
||||
{
|
||||
title: this.$t('taskAffirmStatus'),
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
dataIndex: 'taskAffirmStatusName'
|
||||
},
|
||||
// {
|
||||
// title: this.$t('taskReleaseStatus'),
|
||||
// align: 'center',
|
||||
// dataIndex: 'taskReleaseStatus'
|
||||
// },
|
||||
{
|
||||
title: this.$t('correspondingStandard'),
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
dataIndex: 'correspondingStandard'
|
||||
},
|
||||
{
|
||||
title: this.$t('implementationCategory'),
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
dataIndex: 'implementType_dictText'
|
||||
},
|
||||
{
|
||||
title: this.$t('ImplementationDate'),
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
dataIndex: 'xin1Che1Xing2Shi2Shi1Ri4Qi1'
|
||||
},
|
||||
{
|
||||
title: this.$t('vehicleInProductionDate'),
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
dataIndex: 'implementTime'
|
||||
},
|
||||
{
|
||||
title: 'WVTA ID',
|
||||
align: 'center',
|
||||
dataIndex: 'wvtaId',
|
||||
ellipsis: true
|
||||
},
|
||||
{
|
||||
title: this.$t('certificationType'),
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
dataIndex: 'attestationType_dictText'
|
||||
},
|
||||
{
|
||||
title: this.$t('certificationLevel'),
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
dataIndex: 'attestationRank_dictText'
|
||||
},
|
||||
//
|
||||
{
|
||||
title: this.$t('areaOfResponsibility'),
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
dataIndex: 'dutyTerritory_dictText'
|
||||
},
|
||||
{
|
||||
title: this.$t('regulatoryEngineer'),
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
dataIndex: 'regulationOwnerName'
|
||||
},
|
||||
{
|
||||
title: this.$t('certifiedEngineer'),
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
dataIndex: 'homologationEngineerName'
|
||||
},
|
||||
{
|
||||
title: this.$t('engineeringInterfacePerson'),
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
dataIndex: 'engineeringInterfacePersonName'
|
||||
},
|
||||
{
|
||||
title: this.$t('remarks'),
|
||||
align: 'center',
|
||||
ellipsis: true,
|
||||
dataIndex: 'remark'
|
||||
},
|
||||
{
|
||||
title: this.$t('confirmationOfDesignConformity'),
|
||||
children: [
|
||||
{
|
||||
title: this.$t('Deliverables'),
|
||||
dataIndex: 'designDeliverableTemplateName',
|
||||
align: 'center',
|
||||
scopedSlots: { customRender: 'designDeliverableTemplateName' }
|
||||
},
|
||||
{
|
||||
title: this.$t('Sponsor'),
|
||||
dataIndex: 'designInitiatorName',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: this.$t('personLiable'),
|
||||
dataIndex: 'designDutyName',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: this.$t('TaskCutOffTime'),
|
||||
dataIndex: 'designDueDate',
|
||||
align: 'center'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
title: this.$t('PrehomoConfirmation'),
|
||||
children: [
|
||||
{
|
||||
title: this.$t('Deliverables'),
|
||||
dataIndex: 'prehomoDeliverableTemplateName',
|
||||
align: 'center',
|
||||
scopedSlots: { customRender: 'prehomoDeliverableTemplateName' }
|
||||
},
|
||||
{
|
||||
title: this.$t('Sponsor'),
|
||||
dataIndex: 'prehomoInitiatorName',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: this.$t('personLiable'),
|
||||
dataIndex: 'prehomoDutyName',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: this.$t('TaskCutOffTime'),
|
||||
dataIndex: 'prehomoDueDate',
|
||||
align: 'center'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
title: this.$t('verificationAndConformityconfirmation'),
|
||||
children: [
|
||||
{
|
||||
title: this.$t('Deliverables'),
|
||||
dataIndex: 'verifyDeliverableTemplateName',
|
||||
align: 'center',
|
||||
scopedSlots: { customRender: 'verifyDeliverableTemplateName' }
|
||||
},
|
||||
{
|
||||
title: this.$t('Sponsor'),
|
||||
dataIndex: 'verifyInitiatorName',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: this.$t('personLiable'),
|
||||
dataIndex: 'verifyDutyName',
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: this.$t('TaskCutOffTime'),
|
||||
dataIndex: 'verifyDueDate',
|
||||
align: 'center'
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
columnsFile: [
|
||||
{
|
||||
title: this.$t('deliverableTemplate'),
|
||||
dataIndex: 'fileName',
|
||||
align: 'center',
|
||||
width: 260,
|
||||
ellipsis: true
|
||||
},
|
||||
{
|
||||
title: this.$t('operation'),
|
||||
align: 'center',
|
||||
width: 130,
|
||||
scopedSlots: { customRender: 'fileOperation' }
|
||||
}
|
||||
],
|
||||
visibleFile: false,
|
||||
dataSourceFile: [],
|
||||
queryParamQuery: {},
|
||||
selectedRowKeys: [],
|
||||
visible: false,
|
||||
formInline: {},
|
||||
queryParam: {},
|
||||
url: {
|
||||
list: '/project/projectVersionInfoEO/list'
|
||||
},
|
||||
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
|
||||
loading: false,
|
||||
dataSource: [],
|
||||
// fieldList | array |✔| 需要查询的列集合示例如下,type类型有:date/datetime/string/int/number
|
||||
fieldList: [
|
||||
{
|
||||
type: 'string',
|
||||
value: 'correspondingStandard',
|
||||
text: this.$t('correspondingStandard')
|
||||
},
|
||||
{
|
||||
type: '',
|
||||
value: 'implementType',
|
||||
text: this.$t('implementationCategory'),
|
||||
dictCode: 'implement_type'//只要 dictCode 有值,无论 type 是什么,都显示为字典下拉框
|
||||
},
|
||||
{
|
||||
type: 'date',
|
||||
value: 'xin1Che1Xing2Shi2Shi1Ri4Qi1',
|
||||
text: this.$t('ImplementationDate')
|
||||
},
|
||||
{
|
||||
type: 'date',
|
||||
value: 'implementTime',
|
||||
text: this.$t('vehicleInProductionDate')
|
||||
},
|
||||
{
|
||||
type: 'string',
|
||||
value: 'wvtaId',
|
||||
text: 'WVTA ID'
|
||||
},
|
||||
{
|
||||
type: '',
|
||||
value: 'attestationType',
|
||||
text: this.$t('certificationType'),
|
||||
dictCode: 'attestation_type'//只要 dictCode 有值,无论 type 是什么,都显示为字典下拉框
|
||||
},
|
||||
{
|
||||
type: '',
|
||||
value: 'attestationRank',
|
||||
text: this.$t('certificationLevel'),
|
||||
dictCode: 'attestation_rank'//只要 dictCode 有值,无论 type 是什么,都显示为字典下拉框
|
||||
},
|
||||
{
|
||||
type: '',
|
||||
value: 'dutyTerritory',
|
||||
text: this.$t('areaOfResponsibility'),
|
||||
dictCode: 'duty_territory'//只要 dictCode 有值,无论 type 是什么,都显示为字典下拉框
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
...mapGetters(['userInfo']),
|
||||
searchQuery() {
|
||||
this.getList()
|
||||
},
|
||||
searchReset() {
|
||||
this.$refs.globalAdvancedQueryRef.resetLine()
|
||||
this.$refs.globalAdvancedQueryRef.emitCallback()
|
||||
this.queryParam = {}
|
||||
this.getList()
|
||||
},
|
||||
handleSuperQuery(params, matchType) {
|
||||
let sqp = {}
|
||||
if (!params || (params && params.length == 0)) {
|
||||
sqp['superQueryParams'] = ''
|
||||
this.$refs.globalAdvancedQueryRef.superQueryFlag = false
|
||||
} else {
|
||||
this.$refs.globalAdvancedQueryRef.superQueryFlag = true
|
||||
sqp['superQueryParams'] = encodeURI(JSON.stringify(params))
|
||||
sqp['superQueryMatchType'] = matchType
|
||||
}
|
||||
this.queryParamQuery = sqp
|
||||
this.getList()
|
||||
},
|
||||
getList() {
|
||||
let query = {
|
||||
...this.queryParamQuery,
|
||||
...this.queryParam,
|
||||
historyVersionsId: this.$route.query.id
|
||||
}
|
||||
this.loading = true
|
||||
getAction(this.url.list, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.dataSource = res.result
|
||||
this.loading = false
|
||||
} else {
|
||||
this.loading = false
|
||||
}
|
||||
})
|
||||
},
|
||||
pdfPreview(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.id))
|
||||
} else if (fileSuffix == '.docx') {
|
||||
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
|
||||
window.open(url, '_blank')
|
||||
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
|
||||
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
|
||||
window.open(url, '_blank')
|
||||
} else {
|
||||
downloadFile('/sys/common/downLoadFile', fileQuery.fileName, { id: fileQuery.id })
|
||||
}
|
||||
},
|
||||
pdfPreviewClick(name, id) {
|
||||
let fileName = name
|
||||
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=' + id))
|
||||
} else if (fileSuffix == '.docx') {
|
||||
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + id + fileSuffix)
|
||||
window.open(url, '_blank')
|
||||
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
|
||||
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + id + fileSuffix)
|
||||
window.open(url, '_blank')
|
||||
} else {
|
||||
downloadFile('/sys/common/downLoadFile', name, { id: id })
|
||||
}
|
||||
},
|
||||
download(item) {
|
||||
downloadFile('/sys/common/downLoadFile', item.fileName, { id: item.id })
|
||||
},
|
||||
clickButtonToUpload(item) {
|
||||
this.loading = true
|
||||
this.visibleFile = true
|
||||
getAction('sys/common/getFileInfos', { id: item }).then((res) => {
|
||||
if (res.success) {
|
||||
this.dataSourceFile = res.result
|
||||
this.loading = false
|
||||
} else {
|
||||
this.dataSourceFile = []
|
||||
this.loading = false
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import '~@assets/less/common.less';
|
||||
|
||||
.doc-detail {
|
||||
background: #fff;
|
||||
height: 100%;
|
||||
|
||||
.Virtual-detail-header {
|
||||
width: 100%;
|
||||
height: 68px;
|
||||
line-height: 68px;
|
||||
padding: 0 32px 0 32px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
border-bottom: 2px #eff1f3 solid;
|
||||
background: #fff;
|
||||
|
||||
.Virtual-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;
|
||||
}
|
||||
}
|
||||
|
||||
.Virtual-detail-content {
|
||||
padding: 0 38px 0 38px;
|
||||
box-sizing: border-box;
|
||||
font-size: 16px;
|
||||
|
||||
.box-title-text-add {
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.title-text-add {
|
||||
display: inline-block;
|
||||
font-weight: 500;
|
||||
margin-right: 16px;
|
||||
height: 42px;
|
||||
line-height: 42px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.header-text {
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
height: 60px;
|
||||
color: #000F16;
|
||||
line-height: 40px;
|
||||
}
|
||||
|
||||
.box-title-text {
|
||||
line-height: 1.4;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.box-title-text-index {
|
||||
line-height: 1.4;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.title-text {
|
||||
width: 32px;
|
||||
color: #000F16;
|
||||
display: inline-block;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
margin-right: 16px;
|
||||
margin-top: 3px;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.title-text-index {
|
||||
width: 110px;
|
||||
color: #000F16;
|
||||
display: inline-block;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
margin-right: 16px;
|
||||
margin-top: 3px;
|
||||
text-align: right;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
line-height: 40px;
|
||||
}
|
||||
|
||||
.box-input {
|
||||
display: inline-block;
|
||||
width: 70%;
|
||||
height: 38px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
.Required {
|
||||
color: red;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.box-button {
|
||||
height: 38px;
|
||||
}
|
||||
|
||||
.text-operation {
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.page {
|
||||
text-align: right;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.operator-text-left {
|
||||
font-size: 14px;
|
||||
margin-right: 20px;
|
||||
background: #eff1f3;
|
||||
padding: 8px 8px;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
/deep/ .ant-popover-buttons {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.operator-text-title {
|
||||
cursor: pointer;
|
||||
margin-right: 22px;
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
margin-bottom: 22px;
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
.box-input .ant-select-selection {
|
||||
height: 38px !important;
|
||||
}
|
||||
|
||||
.box-input .ant-select-selection__rendered {
|
||||
line-height: 38px;
|
||||
}
|
||||
|
||||
.popconfirm .ant-popover-buttons {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.popconfirm .anticon-exclamation-circle {
|
||||
display: none !important;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user