合并分支 'fix_20230508' 到 'master'
Fix 20230508 查看合并请求 laws-nio/laws-weilai!322
This commit is contained in:
+21
-4
@@ -28,10 +28,7 @@ import org.springframework.cache.annotation.CacheEvict;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -331,4 +328,24 @@ public class SysDictItemController {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取一级责任领域(统计节点)信息接口
|
||||
* @param params
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping(value = "/getFirstLevelDutyTerritory", method = RequestMethod.GET)
|
||||
@ApiOperation("获取一级责任领域(统计节点)信息接口")
|
||||
public Result<Object> getFirstLevelDutyTerritory(@RequestParam Map<String,Object> params) {
|
||||
List<Map<String,Object>> result = new ArrayList<>();
|
||||
List<SysDictItem> sysDictItems = this.sysDictItemService.selectItemsAll();
|
||||
Map<String, List<SysDictItem>> firstLevelDutyTerritoryMap = this.sysDictItemService.getFirstLevelSysDictItemByDictCode(DictCodeEnum.DUTY_TERRITORY.getValue(),sysDictItems);
|
||||
for (Map.Entry<String, List<SysDictItem>> dutyTerritoryMap : firstLevelDutyTerritoryMap.entrySet()) {
|
||||
Map<String,Object> map = new HashMap<>();
|
||||
map.put("key",dutyTerritoryMap.getKey());
|
||||
map.put("value",dutyTerritoryMap.getValue());
|
||||
result.add(map);
|
||||
}
|
||||
return Result.OK(result);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
@@ -143,6 +143,7 @@ public class SysUserController {
|
||||
}
|
||||
user.setOrgCode(null);
|
||||
QueryWrapper<SysUser> queryWrapper = QueryGenerator.initQueryWrapper(user, newReqMap);
|
||||
queryWrapper.orderByAsc("username");
|
||||
//TODO 外部模拟登陆临时账号,列表不显示
|
||||
queryWrapper.ne("username", "_reserve_user_external");
|
||||
String[] orgCode = reqMap.get("orgCode");
|
||||
|
||||
+11
-1
@@ -16,6 +16,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.jero.modules.dummy.entity.DummyInventoryInfoEO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import com.jero.common.system.base.controller.JeroController;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@@ -57,7 +58,16 @@ public class AuthDummyInventoryInfoEOController extends JeroController<AuthDummy
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
QueryWrapper<AuthDummyInventoryInfoEO> queryWrapper = QueryGenerator.initQueryWrapper(authDummyInventoryInfoEO, req.getParameterMap());
|
||||
queryWrapper.orderByDesc("create_time");
|
||||
String orderByField = authDummyInventoryInfoEO.getOrderByField();
|
||||
String orderBy = authDummyInventoryInfoEO.getOrderBy();
|
||||
// 如果排序字段不为空
|
||||
if(StringUtils.isNotEmpty(orderByField)){
|
||||
// 转换字段
|
||||
orderByField = this.authDummyInventoryInfoEOService.convertOrderByField(orderByField);
|
||||
queryWrapper.orderBy(true, "1".equals(orderBy)?true:false, orderByField);
|
||||
}else {
|
||||
queryWrapper.orderByDesc("create_time");
|
||||
}
|
||||
Page<AuthDummyInventoryInfoEO> page = new Page<AuthDummyInventoryInfoEO>(pageNo, pageSize);
|
||||
IPage<AuthDummyInventoryInfoEO> pageList = this.authDummyInventoryInfoEOService.page(page, queryWrapper);
|
||||
this.authDummyInventoryInfoEOService.disposeData(pageList.getRecords(),authDummyInventoryInfoEO.getCut());
|
||||
|
||||
+2
@@ -113,6 +113,8 @@ public interface IAuthDummyInventoryInfoEOService extends IService<AuthDummyInve
|
||||
*/
|
||||
void disposeData(List<AuthDummyInventoryInfoEO> datas, String cut);
|
||||
|
||||
String convertOrderByField(String orderByField);
|
||||
|
||||
/**
|
||||
* 获取责任领域名称
|
||||
* @param cut
|
||||
|
||||
+3
-2
@@ -607,8 +607,8 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
|
||||
List<AuthDummyInventoryInfoEO> authDummyInventoryInfoEOList = this.list(queryWrapper);
|
||||
return authDummyInventoryInfoEOList;
|
||||
}
|
||||
|
||||
private String convertOrderByField(String orderByField) {
|
||||
@Override
|
||||
public String convertOrderByField(String orderByField) {
|
||||
if(StringUtils.isEmpty(orderByField)){
|
||||
return null;
|
||||
}
|
||||
@@ -620,6 +620,7 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
|
||||
case "serialNumber" : return "serial_number";
|
||||
case "dutyTerritory" : return "duty_territory";
|
||||
case "deliverableType" : return "deliverable_type";
|
||||
case "attestationTypeName" : return "attestation_type";
|
||||
default: return null;
|
||||
}
|
||||
}
|
||||
|
||||
+110
-42
@@ -35,13 +35,16 @@ import com.jero.modules.cert.template.entity.ParamsTemplateEO;
|
||||
import com.jero.modules.cert.template.enums.ControlTypeEnum;
|
||||
import com.jero.modules.cert.template.service.IParamsInfoPublishEOService;
|
||||
import com.jero.modules.cert.template.service.IParamsTemplateEOService;
|
||||
import com.jero.modules.enums.DictCodeEnum;
|
||||
import com.jero.modules.project.entity.ProjectRelatedPersonnel;
|
||||
import com.jero.modules.project.service.IProjectLibraryBaseService;
|
||||
import com.jero.modules.project.service.IProjectRelatedPersonnelService;
|
||||
import com.jero.modules.project.service.IProjectUserPermissionService;
|
||||
import com.jero.modules.system.entity.SysDictItem;
|
||||
import com.jero.modules.system.entity.SysUser;
|
||||
import com.jero.modules.system.enums.DicCodeEnum;
|
||||
import com.jero.modules.system.mapper.SysDictMapper;
|
||||
import com.jero.modules.system.service.ISysDictItemService;
|
||||
import com.jero.modules.system.service.ISysDictService;
|
||||
import com.jero.modules.system.service.ISysUserService;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
@@ -125,6 +128,9 @@ public class ParamsManifestEOServiceImpl extends ServiceImpl<ParamsManifestEOMap
|
||||
@Autowired
|
||||
private ISysDictService sysDictService;
|
||||
|
||||
@Autowired
|
||||
private ISysDictItemService sysDictItemService;
|
||||
|
||||
/**
|
||||
* 保存
|
||||
*
|
||||
@@ -877,8 +883,8 @@ public class ParamsManifestEOServiceImpl extends ServiceImpl<ParamsManifestEOMap
|
||||
|
||||
@Override
|
||||
public Map<String, Object> getStatisticsForProjectDetails(String paramsManifestId, String cut) {
|
||||
// 查询所有责任领域
|
||||
List<DictModel> dutyTerritoryDictList = sysDictMapper.queryDictItemsByCode("duty_territory");
|
||||
List<SysDictItem> sysDictItems = this.sysDictItemService.selectItemsAll();
|
||||
Map<String, List<SysDictItem>> firstLevelDutyTerritoryMap = this.sysDictItemService.getFirstLevelSysDictItemByDictCode(DictCodeEnum.DUTY_TERRITORY.getValue(),sysDictItems);
|
||||
|
||||
Map<String, Object> result = new LinkedHashMap<>();
|
||||
List<String> dutyTerritoryNameList = new LinkedList<>();
|
||||
@@ -898,60 +904,122 @@ public class ParamsManifestEOServiceImpl extends ServiceImpl<ParamsManifestEOMap
|
||||
paramsCollectManifestEO.setParamsManifestId(paramsManifestId);
|
||||
List<Map<String, Object>> listAll = paramsCollectManifestEOMapper.listInfoForExport(paramsCollectManifestEO, null);
|
||||
|
||||
// 循环责任领域,计算每个责任领域中的四种状态数据
|
||||
for (DictModel item : dutyTerritoryDictList) {
|
||||
if(ObjectUtil.isNotEmpty(firstLevelDutyTerritoryMap)){
|
||||
for (Map.Entry<String, List<SysDictItem>> dutyTerritoryMap : firstLevelDutyTerritoryMap.entrySet()) {
|
||||
String firstLevelDutyTerritory = dutyTerritoryMap.getKey();
|
||||
List<SysDictItem> dutyTerritoryList = dutyTerritoryMap.getValue();
|
||||
if(StringUtils.isEmpty(firstLevelDutyTerritory) || CollectionUtils.isEmpty(dutyTerritoryList)){
|
||||
continue;
|
||||
}
|
||||
|
||||
// 计算数量
|
||||
double notStartNumber = listAll.stream().filter(e -> (CollectManifestStateEnum.WAIT_COLLECT.getValue().equals(e.get("state"))
|
||||
double notStartNumber = 0;
|
||||
double collectingNumber = 0;
|
||||
double submitNumber = 0;
|
||||
double syncReportNumber = 0;
|
||||
|
||||
for (SysDictItem dictItem : dutyTerritoryList) {
|
||||
// 计算数量
|
||||
notStartNumber += listAll.stream().filter(e -> (CollectManifestStateEnum.WAIT_COLLECT.getValue().equals(e.get("state"))
|
||||
|| CollectManifestStateEnum.SDT_BACK.getValue().equals(e.get("state"))
|
||||
|| CollectManifestStateEnum.CHANGE.getValue().equals(e.get("state"))) && item.getValue().equals(e.get("duty_territory")))
|
||||
.count(); // 未开始的参数项 数量
|
||||
|| CollectManifestStateEnum.CHANGE.getValue().equals(e.get("state"))) && dictItem.getItemValue().equals(e.get("duty_territory")))
|
||||
.count(); // 未开始的参数项 数量
|
||||
|
||||
double collectingNumber = listAll.stream().filter(e -> (CollectManifestStateEnum.WAIT_SDT.getValue().equals(e.get("state"))
|
||||
collectingNumber += listAll.stream().filter(e -> (CollectManifestStateEnum.WAIT_SDT.getValue().equals(e.get("state"))
|
||||
|| CollectManifestStateEnum.WAIT_FILL.getValue().equals(e.get("state"))
|
||||
|| CollectManifestStateEnum.DRE_BACK.getValue().equals(e.get("state"))
|
||||
|| CollectManifestStateEnum.CERT_BACK.getValue().equals(e.get("state"))) && item.getValue().equals(e.get("duty_territory")))
|
||||
.count(); // 收集中的参数项 数量
|
||||
|| CollectManifestStateEnum.CERT_BACK.getValue().equals(e.get("state"))) && dictItem.getItemValue().equals(e.get("duty_territory")))
|
||||
.count(); // 收集中的参数项 数量
|
||||
|
||||
double submitNumber = listAll.stream().filter(e -> CollectManifestStateEnum.SUBMIT.getValue().equals(e.get("state")) && item.getValue().equals(e.get("duty_territory")))
|
||||
.count(); // 已提交的参数项 数量
|
||||
submitNumber += listAll.stream().filter(e -> CollectManifestStateEnum.SUBMIT.getValue().equals(e.get("state")) && dictItem.getItemValue().equals(e.get("duty_territory")))
|
||||
.count(); // 已提交的参数项 数量
|
||||
|
||||
double syncReportNumber = listAll.stream().filter(e -> CollectManifestStateEnum.SYNC_REPORT.getValue().equals(e.get("state")) && item.getValue().equals(e.get("duty_territory")))
|
||||
.count(); // 已同步上报库的参数项 数量
|
||||
syncReportNumber += listAll.stream().filter(e -> CollectManifestStateEnum.SYNC_REPORT.getValue().equals(e.get("state")) && dictItem.getItemValue().equals(e.get("duty_territory")))
|
||||
.count(); // 已同步上报库的参数项 数量
|
||||
}
|
||||
|
||||
// 计算百分比
|
||||
double total = notStartNumber + collectingNumber + submitNumber + syncReportNumber; // 当前责任领域参数项总数
|
||||
String notStartPercent = getRatio(notStartNumber, total); // 未开始的参数项 百分比
|
||||
String collectingPercent = getRatio(collectingNumber, total); // 收集中的参数项 百分比
|
||||
String submitPercent = getRatio(submitNumber, total); // 已提交的参数项 百分比
|
||||
String syncReportPercent = getRatio(syncReportNumber, total); // 已同步上报库的参数项 百分比
|
||||
// 计算百分比
|
||||
double total = notStartNumber + collectingNumber + submitNumber + syncReportNumber; // 当前责任领域参数项总数
|
||||
String notStartPercent = getRatio(notStartNumber, total); // 未开始的参数项 百分比
|
||||
String collectingPercent = getRatio(collectingNumber, total); // 收集中的参数项 百分比
|
||||
String submitPercent = getRatio(submitNumber, total); // 已提交的参数项 百分比
|
||||
String syncReportPercent = getRatio(syncReportNumber, total); // 已同步上报库的参数项 百分比
|
||||
|
||||
// 累加
|
||||
totalAll += total;
|
||||
notStartTotal += notStartNumber;
|
||||
collectingTotal += collectingNumber;
|
||||
submitTotal += submitNumber;
|
||||
syncReportTotal += syncReportNumber;
|
||||
// 累加
|
||||
totalAll += total;
|
||||
notStartTotal += notStartNumber;
|
||||
collectingTotal += collectingNumber;
|
||||
submitTotal += submitNumber;
|
||||
syncReportTotal += syncReportNumber;
|
||||
|
||||
// 组装数据 返回前端
|
||||
if (notStartNumber == collectingNumber && collectingNumber == submitNumber && submitNumber == syncReportNumber && syncReportNumber == 0) {
|
||||
continue;
|
||||
}
|
||||
getData(notStartList, notStartNumber, notStartPercent);
|
||||
getData(collectingList, collectingNumber, collectingPercent);
|
||||
getData(submitList, submitNumber, submitPercent);
|
||||
getData(syncReportList, syncReportNumber, syncReportPercent);
|
||||
|
||||
// 组装数据 返回前端
|
||||
if (notStartNumber == collectingNumber && collectingNumber == submitNumber && submitNumber == syncReportNumber && syncReportNumber == 0) {
|
||||
continue;
|
||||
dutyTerritoryNameList.add(firstLevelDutyTerritory);
|
||||
}
|
||||
|
||||
if (CutEnum.EN.getValue().equals(cut)) {
|
||||
dutyTerritoryNameList.add(item.getTextEn());
|
||||
} else {
|
||||
dutyTerritoryNameList.add(item.getText());
|
||||
}
|
||||
|
||||
getData(notStartList, notStartNumber, notStartPercent);
|
||||
getData(collectingList, collectingNumber, collectingPercent);
|
||||
getData(submitList, submitNumber, submitPercent);
|
||||
getData(syncReportList, syncReportNumber, syncReportPercent);
|
||||
|
||||
}
|
||||
|
||||
// // 查询所有责任领域
|
||||
// List<DictModel> dutyTerritoryDictList = sysDictMapper.queryDictItemsByCode("duty_territory");
|
||||
// // 循环责任领域,计算每个责任领域中的四种状态数据
|
||||
// for (DictModel item : dutyTerritoryDictList) {
|
||||
//
|
||||
// // 计算数量
|
||||
// double notStartNumber = listAll.stream().filter(e -> (CollectManifestStateEnum.WAIT_COLLECT.getValue().equals(e.get("state"))
|
||||
// || CollectManifestStateEnum.SDT_BACK.getValue().equals(e.get("state"))
|
||||
// || CollectManifestStateEnum.CHANGE.getValue().equals(e.get("state"))) && item.getValue().equals(e.get("duty_territory")))
|
||||
// .count(); // 未开始的参数项 数量
|
||||
//
|
||||
// double collectingNumber = listAll.stream().filter(e -> (CollectManifestStateEnum.WAIT_SDT.getValue().equals(e.get("state"))
|
||||
// || CollectManifestStateEnum.WAIT_FILL.getValue().equals(e.get("state"))
|
||||
// || CollectManifestStateEnum.DRE_BACK.getValue().equals(e.get("state"))
|
||||
// || CollectManifestStateEnum.CERT_BACK.getValue().equals(e.get("state"))) && item.getValue().equals(e.get("duty_territory")))
|
||||
// .count(); // 收集中的参数项 数量
|
||||
//
|
||||
// double submitNumber = listAll.stream().filter(e -> CollectManifestStateEnum.SUBMIT.getValue().equals(e.get("state")) && item.getValue().equals(e.get("duty_territory")))
|
||||
// .count(); // 已提交的参数项 数量
|
||||
//
|
||||
// double syncReportNumber = listAll.stream().filter(e -> CollectManifestStateEnum.SYNC_REPORT.getValue().equals(e.get("state")) && item.getValue().equals(e.get("duty_territory")))
|
||||
// .count(); // 已同步上报库的参数项 数量
|
||||
//
|
||||
// // 计算百分比
|
||||
// double total = notStartNumber + collectingNumber + submitNumber + syncReportNumber; // 当前责任领域参数项总数
|
||||
// String notStartPercent = getRatio(notStartNumber, total); // 未开始的参数项 百分比
|
||||
// String collectingPercent = getRatio(collectingNumber, total); // 收集中的参数项 百分比
|
||||
// String submitPercent = getRatio(submitNumber, total); // 已提交的参数项 百分比
|
||||
// String syncReportPercent = getRatio(syncReportNumber, total); // 已同步上报库的参数项 百分比
|
||||
//
|
||||
// // 累加
|
||||
// totalAll += total;
|
||||
// notStartTotal += notStartNumber;
|
||||
// collectingTotal += collectingNumber;
|
||||
// submitTotal += submitNumber;
|
||||
// syncReportTotal += syncReportNumber;
|
||||
//
|
||||
//
|
||||
// // 组装数据 返回前端
|
||||
// if (notStartNumber == collectingNumber && collectingNumber == submitNumber && submitNumber == syncReportNumber && syncReportNumber == 0) {
|
||||
// continue;
|
||||
// }
|
||||
//
|
||||
// if (CutEnum.EN.getValue().equals(cut)) {
|
||||
// dutyTerritoryNameList.add(item.getTextEn());
|
||||
// } else {
|
||||
// dutyTerritoryNameList.add(item.getText());
|
||||
// }
|
||||
//
|
||||
// getData(notStartList, notStartNumber, notStartPercent);
|
||||
// getData(collectingList, collectingNumber, collectingPercent);
|
||||
// getData(submitList, submitNumber, submitPercent);
|
||||
// getData(syncReportList, syncReportNumber, syncReportPercent);
|
||||
//
|
||||
// }
|
||||
|
||||
// 设置全部
|
||||
if (CutEnum.EN.getValue().equals(cut)) {
|
||||
dutyTerritoryNameList.add(0, "All");
|
||||
|
||||
+88
-13
@@ -106,12 +106,87 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
|
||||
@Override
|
||||
public IPage<DummyInventoryInfoEO> getPageInfo(DummyInventoryInfoEO dummyInventoryInfoEO,HttpServletRequest req) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
String orderBy = dummyInventoryInfoEO.getOrderBy();
|
||||
String orderByField = dummyInventoryInfoEO.getOrderByField();
|
||||
|
||||
QueryWrapper<DummyInventoryInfoEO> queryWrapper = QueryGenerator.initQueryWrapper(dummyInventoryInfoEO, req.getParameterMap());
|
||||
queryWrapper.orderByDesc("create_time");
|
||||
//新车型实施日期,在产车实施日期(排序)
|
||||
if("xin1_che1_xing2_shi2_shi1_ri4_qi1".equals(orderByField) || "implement_time".equals(orderByField)){
|
||||
if(OrderEnum.POSITIVE.getValue().equals(orderBy)){
|
||||
queryWrapper.orderByAsc(orderByField);
|
||||
}else if(OrderEnum.REVERSE.getValue().equals(orderBy)){
|
||||
queryWrapper.orderByDesc(orderByField);
|
||||
}
|
||||
}
|
||||
if(StringUtils.isBlank(orderByField)){
|
||||
queryWrapper.orderByDesc("create_time","serial_number");
|
||||
}
|
||||
|
||||
if(StringUtils.isNotEmpty(dummyInventoryInfoEO.getImplementTimeString())){
|
||||
String[] implementTimeArr = dummyInventoryInfoEO.getImplementTimeString().split(",");
|
||||
|
||||
QueryWrapper<PhasedImplementationDetailsEO> phasedDetailsQueryWrap = new QueryWrapper<>();
|
||||
phasedDetailsQueryWrap.lambda().like(PhasedImplementationDetailsEO::getImplementationType,ImplementationTypeEnum.CAR_IN_PRODUCTION.getItemValue());
|
||||
phasedDetailsQueryWrap.lambda().ge(PhasedImplementationDetailsEO::getImplementationDate,implementTimeArr[0]);
|
||||
phasedDetailsQueryWrap.lambda().le(PhasedImplementationDetailsEO::getImplementationDate,implementTimeArr[1]);
|
||||
List<String> bussDocumentLibraryIdList = this.phasedImplementationDetailsEOService.list(phasedDetailsQueryWrap)
|
||||
.stream().map(PhasedImplementationDetailsEO::getBussDocumentLibraryId).collect(Collectors.toList());
|
||||
|
||||
queryWrapper.and(query -> {
|
||||
query.and(q -> {
|
||||
q.lambda().ge(DummyInventoryInfoEO::getImplementTime,implementTimeArr[0]);
|
||||
q.lambda().le(DummyInventoryInfoEO::getImplementTime,implementTimeArr[1]);
|
||||
});
|
||||
|
||||
if(CollectionUtils.isNotEmpty(bussDocumentLibraryIdList)){
|
||||
query.or(q -> {
|
||||
q.lambda().in(DummyInventoryInfoEO::getBussDocumentLibraryId,bussDocumentLibraryIdList);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
if(StringUtils.isNotEmpty(dummyInventoryInfoEO.getXin1Che1Xing2Shi2Shi1Ri4Qi1String())){
|
||||
String[] newCarTimeArr = dummyInventoryInfoEO.getXin1Che1Xing2Shi2Shi1Ri4Qi1String().split(",");
|
||||
|
||||
QueryWrapper<PhasedImplementationDetailsEO> phasedDetailsQueryWrap = new QueryWrapper<>();
|
||||
phasedDetailsQueryWrap.lambda().like(PhasedImplementationDetailsEO::getImplementationType,ImplementationTypeEnum.NEW_CAR_MODEL.getItemValue());
|
||||
phasedDetailsQueryWrap.lambda().ge(PhasedImplementationDetailsEO::getImplementationDate,newCarTimeArr[0]);
|
||||
phasedDetailsQueryWrap.lambda().le(PhasedImplementationDetailsEO::getImplementationDate,newCarTimeArr[1]);
|
||||
List<String> bussDocumentLibraryIdList = this.phasedImplementationDetailsEOService.list(phasedDetailsQueryWrap)
|
||||
.stream().map(PhasedImplementationDetailsEO::getBussDocumentLibraryId).collect(Collectors.toList());
|
||||
|
||||
queryWrapper.and(query -> {
|
||||
query.and(q -> {
|
||||
q.lambda().ge(DummyInventoryInfoEO::getXin1Che1Xing2Shi2Shi1Ri4Qi1,newCarTimeArr[0]);
|
||||
q.lambda().le(DummyInventoryInfoEO::getXin1Che1Xing2Shi2Shi1Ri4Qi1,newCarTimeArr[1]);
|
||||
});
|
||||
if(CollectionUtils.isNotEmpty(bussDocumentLibraryIdList)){
|
||||
query.or(q -> {
|
||||
q.lambda().in(DummyInventoryInfoEO::getBussDocumentLibraryId,bussDocumentLibraryIdList);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Page<DummyInventoryInfoEO> page = new Page<DummyInventoryInfoEO>(dummyInventoryInfoEO.getPageNo(), dummyInventoryInfoEO.getPageSize());
|
||||
IPage<DummyInventoryInfoEO> pageInfo = this.page(page, queryWrapper);
|
||||
//技术领域处理
|
||||
// treeDict(dummyInventoryInfoEO, pageInfo);
|
||||
List<DummyInventoryInfoEO> dummyInventoryInfoEOList = pageInfo.getRecords();
|
||||
log.info("一阶段消耗时间:" + (System.currentTimeMillis() - startTime));
|
||||
//数据字典
|
||||
List<SysDictItem> sysDictItems = sysDictItemServiceImpl.selectItemsAll();
|
||||
//技术领域处理
|
||||
treeDict(dummyInventoryInfoEO, dummyInventoryInfoEOList,sysDictItems);
|
||||
log.info("二阶段消耗时间:" + (System.currentTimeMillis() - startTime));
|
||||
this.dataDicDispose(dummyInventoryInfoEOList,dummyInventoryInfoEO.getCut());
|
||||
log.info("三阶段消耗时间:" + (System.currentTimeMillis() - startTime));
|
||||
treeDict(dummyInventoryInfoEO, dummyInventoryInfoEOList,sysDictItems);
|
||||
// 数据处理
|
||||
this.disposeData(dummyInventoryInfoEOList,dummyInventoryInfoEO.getCut());
|
||||
//表头排序
|
||||
dummyInventoryInfoEOList = hearSort(orderBy, orderByField, dummyInventoryInfoEOList);
|
||||
return pageInfo;
|
||||
}
|
||||
|
||||
@@ -634,18 +709,18 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
if("xin1Che1Xing2Shi2Shi1Ri4Qi1String".equals(orderByField)){
|
||||
if(OrderEnum.POSITIVE.getValue().equals(orderBy)){
|
||||
Collections.sort(dummyInventoryInfoEOList,(e1, e2)->{
|
||||
if(e1.getXin1Che1Xing2Shi2Shi1Ri4Qi1() != null && e2.getXin1Che1Xing2Shi2Shi1Ri4Qi1() != null){
|
||||
String e1xin1Che1Xing2Shi2Shi1Ri4Qi = DateUtils.formatDate(e1.getXin1Che1Xing2Shi2Shi1Ri4Qi1());
|
||||
String e2xin1Che1Xing2Shi2Shi1Ri4Qi = DateUtils.formatDate(e2.getXin1Che1Xing2Shi2Shi1Ri4Qi1());
|
||||
if(e1.getXin1Che1Xing2Shi2Shi1Ri4Qi1String() != null && e2.getXin1Che1Xing2Shi2Shi1Ri4Qi1String() != null){
|
||||
String e1xin1Che1Xing2Shi2Shi1Ri4Qi = DateUtils.formatDate(e1.getXin1Che1Xing2Shi2Shi1Ri4Qi1String());
|
||||
String e2xin1Che1Xing2Shi2Shi1Ri4Qi = DateUtils.formatDate(e2.getXin1Che1Xing2Shi2Shi1Ri4Qi1String());
|
||||
return comparator.compare(e1xin1Che1Xing2Shi2Shi1Ri4Qi,e2xin1Che1Xing2Shi2Shi1Ri4Qi);
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
}else if(OrderEnum.REVERSE.getValue().equals(orderBy)){
|
||||
Collections.sort(dummyInventoryInfoEOList,(e1,e2)->{
|
||||
if(e1.getXin1Che1Xing2Shi2Shi1Ri4Qi1() != null && e2.getXin1Che1Xing2Shi2Shi1Ri4Qi1() != null){
|
||||
String e1xin1Che1Xing2Shi2Shi1Ri4Qi = DateUtils.formatDate(e1.getXin1Che1Xing2Shi2Shi1Ri4Qi1());
|
||||
String e2xin1Che1Xing2Shi2Shi1Ri4Qi = DateUtils.formatDate(e2.getXin1Che1Xing2Shi2Shi1Ri4Qi1());
|
||||
if(e1.getXin1Che1Xing2Shi2Shi1Ri4Qi1String() != null && e2.getXin1Che1Xing2Shi2Shi1Ri4Qi1String() != null){
|
||||
String e1xin1Che1Xing2Shi2Shi1Ri4Qi = DateUtils.formatDate(e1.getXin1Che1Xing2Shi2Shi1Ri4Qi1String());
|
||||
String e2xin1Che1Xing2Shi2Shi1Ri4Qi = DateUtils.formatDate(e2.getXin1Che1Xing2Shi2Shi1Ri4Qi1String());
|
||||
return comparator.compare(e2xin1Che1Xing2Shi2Shi1Ri4Qi,e1xin1Che1Xing2Shi2Shi1Ri4Qi);
|
||||
}
|
||||
return 0;
|
||||
@@ -656,18 +731,18 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
if("implementTimeString".equals(orderByField)){
|
||||
if(OrderEnum.POSITIVE.getValue().equals(orderBy)){
|
||||
Collections.sort(dummyInventoryInfoEOList,(e1, e2)->{
|
||||
if(e1.getImplementTime() != null && e2.getImplementTime() != null){
|
||||
String e1ImplementTime = DateUtils.formatDate(e1.getImplementTime());
|
||||
String e2ImplementTime = DateUtils.formatDate(e2.getImplementTime());
|
||||
if(e1.getImplementTimeString() != null && e2.getImplementTimeString() != null){
|
||||
String e1ImplementTime = DateUtils.formatDate(e1.getImplementTimeString());
|
||||
String e2ImplementTime = DateUtils.formatDate(e2.getImplementTimeString());
|
||||
return comparator.compare(e1ImplementTime,e2ImplementTime);
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
}else if(OrderEnum.REVERSE.getValue().equals(orderBy)){
|
||||
Collections.sort(dummyInventoryInfoEOList,(e1,e2)->{
|
||||
if(e1.getImplementTime() != null && e2.getImplementTime() != null){
|
||||
String e1ImplementTime = DateUtils.formatDate(e1.getImplementTime());
|
||||
String e2ImplementTime = DateUtils.formatDate(e2.getImplementTime());
|
||||
if(e1.getImplementTimeString() != null && e2.getImplementTimeString() != null){
|
||||
String e1ImplementTime = DateUtils.formatDate(e1.getImplementTimeString());
|
||||
String e2ImplementTime = DateUtils.formatDate(e2.getImplementTimeString());
|
||||
return comparator.compare(e2ImplementTime,e1ImplementTime);
|
||||
}
|
||||
return 0;
|
||||
|
||||
+8
-3
@@ -81,9 +81,7 @@ public class ProjectLawsInventoryEOController extends JeroController<ProjectLaws
|
||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
QueryWrapper<ProjectLawsInventoryEO> queryWrapper = QueryGenerator.initQueryWrapper(projectLawsInventoryEO, req.getParameterMap());
|
||||
Page<ProjectLawsInventoryEO> page = new Page<ProjectLawsInventoryEO>(pageNo, pageSize);
|
||||
IPage<ProjectLawsInventoryEO> pageList = projectLawsInventoryEOService.page(page, queryWrapper);
|
||||
IPage<ProjectLawsInventoryEO> pageList = this.projectLawsInventoryEOService.queryPage(projectLawsInventoryEO,pageNo,pageSize,req);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
@@ -566,4 +564,11 @@ public class ProjectLawsInventoryEOController extends JeroController<ProjectLaws
|
||||
@RequestParam Map<String,Object> params) {
|
||||
this.projectLawsInventoryEOService.exportNotComplianList(response,request, params);
|
||||
}
|
||||
|
||||
@AutoLog(value = "项目库-法规清单表-定版校验")
|
||||
@ApiOperation(value="项目库-法规清单表-定版校验", notes="项目库-法规清单表-定版校验")
|
||||
@GetMapping(value = "/finalizationVerify")
|
||||
public Result<?> finalizationVerify(@RequestParam Map<String,Object> params){
|
||||
return this.projectLawsInventoryEOService.finalizationVerify(params);
|
||||
}
|
||||
}
|
||||
|
||||
+4
-4
@@ -45,8 +45,8 @@ public class ProjectStatusBoardController {
|
||||
@ApiOperation(value="时间轴列表", notes="时间轴列表")
|
||||
@GetMapping(value = "/timelineList")
|
||||
@RequiresPermissions("ProjectStatusBoard:info")
|
||||
public Result<?> timelineList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req) {
|
||||
List<Map<String,Object>> result = iProjectStatusBoardService.timelineList(projectLibraryBase, req);
|
||||
public Result<?> timelineList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req,@RequestParam("queryAllProject") boolean queryAllProject) {
|
||||
List<Map<String,Object>> result = iProjectStatusBoardService.timelineList(projectLibraryBase, req,queryAllProject);
|
||||
if(result==null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
@@ -85,8 +85,8 @@ public class ProjectStatusBoardController {
|
||||
|
||||
// 导出excel文件
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public void exportXls(HttpServletResponse response, HttpServletRequest request, ProjectLibraryBase projectLibraryBase) {
|
||||
this.iProjectStatusBoardService.exportXls(response,request, projectLibraryBase);
|
||||
public void exportXls(HttpServletResponse response, HttpServletRequest request, ProjectLibraryBase projectLibraryBase,@RequestParam("queryAllProject") boolean queryAllProject) {
|
||||
this.iProjectStatusBoardService.exportXls(response,request, projectLibraryBase,queryAllProject);
|
||||
}
|
||||
|
||||
|
||||
|
||||
+4
@@ -254,4 +254,8 @@ public class ProjectCertificationInventoryEO implements Serializable {
|
||||
/**认证类型*/
|
||||
@ApiModelProperty(value = "认证类型")
|
||||
private String attestationType;
|
||||
|
||||
/**一级责任领域**/
|
||||
@TableField(exist = false)
|
||||
private String firstLevelDutyTerritory;
|
||||
}
|
||||
|
||||
+4
@@ -530,4 +530,8 @@ public class ProjectLawsInventoryEO implements Serializable {
|
||||
/**流程类型展示名称*/
|
||||
@TableField(exist = false)
|
||||
private String flowTypeName;
|
||||
|
||||
/**一级责任领域**/
|
||||
@TableField(exist = false)
|
||||
private String firstLevelDutyTerritory;
|
||||
}
|
||||
|
||||
+4
@@ -304,4 +304,8 @@ public interface IProjectLawsInventoryEOService extends IService<ProjectLawsInve
|
||||
* @return
|
||||
*/
|
||||
Map<String, Object> groupByVerifyStatus(List<ProjectLawsInventoryEO> pliEos);
|
||||
|
||||
IPage<ProjectLawsInventoryEO> queryPage(ProjectLawsInventoryEO projectLawsInventoryEO, Integer pageNo, Integer pageSize, HttpServletRequest req);
|
||||
|
||||
Result<?> finalizationVerify(Map<String, Object> params);
|
||||
}
|
||||
|
||||
+2
-2
@@ -22,7 +22,7 @@ public interface IProjectStatusBoardService {
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
List<Map<String,Object>> timelineList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req);
|
||||
List<Map<String,Object>> timelineList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req,boolean queryAllProject);
|
||||
|
||||
List<String> timeline(String startTime, String endTime);
|
||||
|
||||
@@ -39,5 +39,5 @@ public interface IProjectStatusBoardService {
|
||||
* @param request
|
||||
* @param projectLibraryBase
|
||||
*/
|
||||
void exportXls(HttpServletResponse response, HttpServletRequest request, ProjectLibraryBase projectLibraryBase);
|
||||
void exportXls(HttpServletResponse response, HttpServletRequest request, ProjectLibraryBase projectLibraryBase,boolean queryAllProject);
|
||||
}
|
||||
|
||||
+48
@@ -30,6 +30,7 @@ import com.jero.modules.document.entity.BussDocumentLibraryEO;
|
||||
import com.jero.modules.document.mapper.BussDocumentLibraryEOMapper;
|
||||
import com.jero.modules.document.service.IBussDocumentLibraryEOService;
|
||||
import com.jero.modules.dummy.enums.OrderEnum;
|
||||
import com.jero.modules.enums.DictCodeEnum;
|
||||
import com.jero.modules.feishu.enums.TemplateInfoEnum2;
|
||||
import com.jero.modules.feishu.service.IFeishuService;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
@@ -1415,6 +1416,36 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
|
||||
String roleCode = projectCertificationInventoryEO.getRoleCode();
|
||||
// 创建查询权限
|
||||
this.createQueryPermission(queryWrapper,roleCode);
|
||||
// 根据一级责任领域(统计节点),查询该一级责任领域下所有子责任领域的法规清单数据。
|
||||
String dutyTerritoryStr = "";
|
||||
if(StringUtils.isNotEmpty(projectCertificationInventoryEO.getFirstLevelDutyTerritory())){
|
||||
List<SysDictItem> sysDictItems = this.sysDictItemServiceImpl.selectItemsAll();
|
||||
List<SysDictItem> dutyTerritorys = new ArrayList<>();
|
||||
Map<String, List<SysDictItem>> firstLevelDTMap = this.sysDictItemServiceImpl.getFirstLevelSysDictItemByDictCode(DictCodeEnum.DUTY_TERRITORY.getValue(), sysDictItems);
|
||||
String[] firstLevelDTArr = projectCertificationInventoryEO.getFirstLevelDutyTerritory().split(",");
|
||||
for (String firstLevelDT : firstLevelDTArr){
|
||||
if(CollectionUtils.isNotEmpty(firstLevelDTMap.get(firstLevelDT))){
|
||||
dutyTerritorys.addAll(firstLevelDTMap.get(firstLevelDT));
|
||||
}
|
||||
}
|
||||
if(CollectionUtils.isNotEmpty(dutyTerritorys)){
|
||||
dutyTerritoryStr = dutyTerritorys.stream().map(SysDictItem::getItemValue).distinct().collect(Collectors.joining(","));
|
||||
}
|
||||
}
|
||||
if (StringUtils.isNotEmpty(dutyTerritoryStr)) {
|
||||
String finalDutyTerritoryStr = dutyTerritoryStr.replaceAll("\\*","");
|
||||
queryWrapper.and(query -> {
|
||||
query.lambda().like(ProjectCertificationInventoryEO::getDutyTerritory, finalDutyTerritoryStr);
|
||||
if(StringUtils.contains(finalDutyTerritoryStr,",")){
|
||||
String[] dutyTerritoryArr = finalDutyTerritoryStr.split(",");
|
||||
for (String duty : dutyTerritoryArr) {
|
||||
query.or(q -> {
|
||||
q.like("duty_territory",duty);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
IPage<ProjectCertificationInventoryEO> pageList = this.page(page, queryWrapper);
|
||||
this.disposeData(pageList.getRecords(),cut);
|
||||
List<ProjectCertificationInventoryEO> records = this.hearSort(projectCertificationInventoryEO, pageList.getRecords());
|
||||
@@ -1467,6 +1498,23 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
|
||||
}
|
||||
}
|
||||
|
||||
// 认证类型 attestationTypeName
|
||||
if(StringUtils.equals("attestationTypeName",orderByField)){
|
||||
if(OrderEnum.POSITIVE.getValue().equals(orderBy)){
|
||||
Collections.sort(datas,(e1, e2)->{
|
||||
String e1AttestationTypeName = (StringUtils.isNotEmpty(e1.getAttestationTypeName()) ? e1.getAttestationTypeName() : "");
|
||||
String e2AttestationTypeName = (StringUtils.isNotEmpty(e2.getAttestationTypeName()) ? e2.getAttestationTypeName() : "");
|
||||
return comparator.compare(e1AttestationTypeName,e2AttestationTypeName);
|
||||
});
|
||||
}else if(OrderEnum.REVERSE.getValue().equals(orderBy)){
|
||||
Collections.sort(datas,(e1,e2)->{
|
||||
String e1AttestationTypeName = (StringUtils.isNotEmpty(e1.getAttestationTypeName()) ? e1.getAttestationTypeName() : "");
|
||||
String e2AttestationTypeName = (StringUtils.isNotEmpty(e2.getAttestationTypeName()) ? e2.getAttestationTypeName() : "");
|
||||
return comparator.compare(e2AttestationTypeName,e1AttestationTypeName);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// WVTA ID wvtaId
|
||||
if(StringUtils.equals("wvtaId",orderByField)){
|
||||
if(OrderEnum.POSITIVE.getValue().equals(orderBy)){
|
||||
|
||||
+144
@@ -40,6 +40,7 @@ import com.jero.modules.dummy.service.IDummyInventoryInfoEOService;
|
||||
import com.jero.modules.dummy.service.impl.DummyInventoryBaseEOServiceImpl;
|
||||
import com.jero.modules.dummy.util.DeepCopyListUtil;
|
||||
import com.jero.modules.dummy.util.ListDiff;
|
||||
import com.jero.modules.enums.DictCodeEnum;
|
||||
import com.jero.modules.feishu.enums.TemplateInfoEnum2;
|
||||
import com.jero.modules.feishu.service.IFeishuService;
|
||||
import com.jero.modules.feishu.vo.FeishuMsg2Vo;
|
||||
@@ -1454,6 +1455,38 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
|
||||
});
|
||||
}
|
||||
}
|
||||
// 认证类型 attestationType
|
||||
if("attestationType".equals(orderByField)){
|
||||
if(OrderEnum.POSITIVE.getValue().equals(orderBy)){
|
||||
Collections.sort(result,(e1, e2)->{
|
||||
String e1AttestationType = StringUtils.isNotBlank(e1.getAttestationType()) ? e1.getAttestationType() : "";
|
||||
String e2AttestationType = StringUtils.isNotBlank(e2.getAttestationType()) ? e2.getAttestationType() : "";
|
||||
return comparator.compare(e1AttestationType,e2AttestationType);
|
||||
});
|
||||
}else if(OrderEnum.REVERSE.getValue().equals(orderBy)){
|
||||
Collections.sort(result,(e1,e2)->{
|
||||
String e1AttestationType = StringUtils.isNotBlank(e1.getAttestationType()) ? e1.getAttestationType() : "";
|
||||
String e2AttestationType = StringUtils.isNotBlank(e2.getAttestationType()) ? e2.getAttestationType() : "";
|
||||
return comparator.compare(e2AttestationType,e1AttestationType);
|
||||
});
|
||||
}
|
||||
}
|
||||
// 认证级别 attestationRank
|
||||
if("attestationRank".equals(orderByField)){
|
||||
if(OrderEnum.POSITIVE.getValue().equals(orderBy)){
|
||||
Collections.sort(result,(e1, e2)->{
|
||||
String e1AttestationRank = StringUtils.isNotBlank(e1.getAttestationRank()) ? e1.getAttestationRank() : "";
|
||||
String e2AttestationRank = StringUtils.isNotBlank(e2.getAttestationRank()) ? e2.getAttestationRank() : "";
|
||||
return comparator.compare(e1AttestationRank,e2AttestationRank);
|
||||
});
|
||||
}else if(OrderEnum.REVERSE.getValue().equals(orderBy)){
|
||||
Collections.sort(result,(e1,e2)->{
|
||||
String e1AttestationRank = StringUtils.isNotBlank(e1.getAttestationRank()) ? e1.getAttestationRank() : "";
|
||||
String e2AttestationRank = StringUtils.isNotBlank(e2.getAttestationRank()) ? e2.getAttestationRank() : "";
|
||||
return comparator.compare(e2AttestationRank,e1AttestationRank);
|
||||
});
|
||||
}
|
||||
}
|
||||
// WVTA ID wvtaId
|
||||
if ("wvtaId".equals(orderByField)) {
|
||||
if (OrderEnum.POSITIVE.getValue().equals(orderBy)) {
|
||||
@@ -13364,6 +13397,117 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IPage<ProjectLawsInventoryEO> queryPage(ProjectLawsInventoryEO projectLawsInventoryEO, Integer pageNo, Integer pageSize, HttpServletRequest req) {
|
||||
String dutyTerritoryStr = "";
|
||||
if (StringUtils.isNotEmpty(projectLawsInventoryEO.getDutyTerritory())) {
|
||||
dutyTerritoryStr = projectLawsInventoryEO.getDutyTerritory();
|
||||
projectLawsInventoryEO.setDutyTerritory(null);
|
||||
}
|
||||
|
||||
// 根据一级责任领域(统计节点),查询该一级责任领域下所有子责任领域的法规清单数据。
|
||||
if(StringUtils.isNotEmpty(projectLawsInventoryEO.getFirstLevelDutyTerritory())){
|
||||
List<SysDictItem> sysDictItems = this.sysDictItemServiceImpl.selectItemsAll();
|
||||
List<SysDictItem> dutyTerritorys = new ArrayList<>();
|
||||
Map<String, List<SysDictItem>> firstLevelDTMap = this.sysDictItemServiceImpl.getFirstLevelSysDictItemByDictCode(DictCodeEnum.DUTY_TERRITORY.getValue(), sysDictItems);
|
||||
String[] firstLevelDTArr = projectLawsInventoryEO.getFirstLevelDutyTerritory().split(",");
|
||||
for (String firstLevelDT : firstLevelDTArr){
|
||||
if(CollectionUtils.isNotEmpty(firstLevelDTMap.get(firstLevelDT))){
|
||||
dutyTerritorys.addAll(firstLevelDTMap.get(firstLevelDT));
|
||||
}
|
||||
}
|
||||
if(CollectionUtils.isNotEmpty(dutyTerritorys)){
|
||||
dutyTerritoryStr = dutyTerritorys.stream().map(SysDictItem::getItemValue).distinct().collect(Collectors.joining(","));
|
||||
}
|
||||
}
|
||||
|
||||
QueryWrapper<ProjectLawsInventoryEO> queryWrapper = QueryGenerator.initQueryWrapper(projectLawsInventoryEO, req.getParameterMap());
|
||||
queryWrapper.orderByDesc("create_time","serial_number");
|
||||
|
||||
if (StringUtils.isNotEmpty(dutyTerritoryStr)) {
|
||||
String finalDutyTerritoryStr = dutyTerritoryStr.replaceAll("\\*","");
|
||||
queryWrapper.and(query -> {
|
||||
query.lambda().like(ProjectLawsInventoryEO::getDutyTerritory, finalDutyTerritoryStr);
|
||||
if(StringUtils.contains(finalDutyTerritoryStr,",")){
|
||||
String[] dutyTerritoryArr = finalDutyTerritoryStr.split(",");
|
||||
for (String duty : dutyTerritoryArr) {
|
||||
query.or(q -> {
|
||||
q.like("duty_territory",duty);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
int isProjectRole = Integer.parseInt(projectLawsInventoryEO.getRoleCode());
|
||||
if(isProjectRole != Integer.parseInt(ProjectRoleEnum.STUDIO_ENGINEER.getValue())
|
||||
&& isProjectRole != Integer.parseInt(ProjectRoleEnum.MANAGER.getValue())
|
||||
&& isProjectRole != Integer.parseInt(ProjectRoleEnum.ADMIN.getValue())
|
||||
&& isProjectRole != Integer.parseInt(ProjectRoleEnum.VIEWER.getValue())){
|
||||
// 创建查询权限
|
||||
this.createQueryPermission(isProjectRole,currentUser,queryWrapper);
|
||||
}
|
||||
|
||||
Page<ProjectLawsInventoryEO> page = new Page<ProjectLawsInventoryEO>(pageNo, pageSize);
|
||||
IPage<ProjectLawsInventoryEO> pageList = this.page(page, queryWrapper);
|
||||
List<ProjectLawsInventoryEO> result = pageList.getRecords();
|
||||
if (isProjectRole == Integer.parseInt(ProjectRoleEnum.VIEWER.getValue())) {
|
||||
//查当前用户Viewer对应责任领域
|
||||
List<String> dutyTerritoryList = this.projectUserDutyTerritoryService.queryDutyTerritoryByUserId(currentUser.getId());
|
||||
if (ObjectUtils.isNotEmpty(dutyTerritoryList)) {
|
||||
result = result.stream().filter(e -> dutyTerritoryList.contains(e.getDutyTerritory())).collect(Collectors.toList());
|
||||
} else {
|
||||
result = new ArrayList<>();
|
||||
}
|
||||
}
|
||||
this.dataDispose(result,currentUser,isProjectRole,projectLawsInventoryEO.getCut());
|
||||
this.dataDictDispose(result,projectLawsInventoryEO.getCut());
|
||||
//表头排序
|
||||
result = this.hearSort(projectLawsInventoryEO, result);
|
||||
return pageList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Result<?> finalizationVerify(Map<String, Object> params) {
|
||||
boolean result = false; // 返回true,可以定版,返回false 不能定版
|
||||
String projectLibraryId = (String) params.get("projectLibraryId");
|
||||
if(StringUtils.isEmpty(projectLibraryId)){
|
||||
throw new JeroBootException("项目库id不能为空,请检查!");
|
||||
}
|
||||
QueryWrapper<ProjectLawsInventoryEO> pliQueryWrap = new QueryWrapper<>();
|
||||
pliQueryWrap.lambda().eq(ProjectLawsInventoryEO::getProjectLibraryId,projectLibraryId);
|
||||
List<ProjectLawsInventoryEO> pliEoList = this.list(pliQueryWrap);
|
||||
if(CollectionUtils.isNotEmpty(pliEoList)){
|
||||
for (ProjectLawsInventoryEO pliEo : pliEoList) {
|
||||
String designFlowStatus = pliEo.getDesignFlowStatus();
|
||||
String verifyFlowStatus = pliEo.getVerifyFlowStatus();
|
||||
boolean designFlowStatusFlag = (
|
||||
StringUtils.equals(designFlowStatus,ComplianceFlowStatusEnum.RESULTS_TO_BE_SUBMITTED.getValue())
|
||||
|| StringUtils.equals(designFlowStatus,ComplianceFlowStatusEnum.RESULTS_TO_BE_REVIEWED.getValue())
|
||||
|| StringUtils.equals(designFlowStatus,ComplianceFlowStatusEnum.CONFORMITY.getValue())
|
||||
|| StringUtils.equals(designFlowStatus,ComplianceFlowStatusEnum.INCONFORMITY.getValue())
|
||||
|| StringUtils.equals(designFlowStatus,ComplianceFlowStatusEnum.TO_TRACK.getValue())
|
||||
|| StringUtils.equals(designFlowStatus,ComplianceFlowStatusEnum.UNINVOLVED.getValue())
|
||||
);
|
||||
boolean verifyFlowStatusFlag = (
|
||||
StringUtils.equals(verifyFlowStatus,ComplianceFlowStatusEnum.RESULTS_TO_BE_SUBMITTED.getValue())
|
||||
|| StringUtils.equals(verifyFlowStatus,ComplianceFlowStatusEnum.RESULTS_TO_BE_REVIEWED.getValue())
|
||||
|| StringUtils.equals(verifyFlowStatus,ComplianceFlowStatusEnum.CONFORMITY.getValue())
|
||||
|| StringUtils.equals(verifyFlowStatus,ComplianceFlowStatusEnum.INCONFORMITY.getValue())
|
||||
|| StringUtils.equals(verifyFlowStatus,ComplianceFlowStatusEnum.TO_TRACK.getValue())
|
||||
|| StringUtils.equals(verifyFlowStatus,ComplianceFlowStatusEnum.UNINVOLVED.getValue())
|
||||
);
|
||||
if(designFlowStatusFlag && verifyFlowStatusFlag){
|
||||
result = true;
|
||||
}else {
|
||||
result = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return Result.OK(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, List<Map<String, Object>>> queryDutyPersonByProjectId(Map<String, Object> params) {
|
||||
Map<String, List<Map<String, Object>>> result = new HashMap<>();
|
||||
|
||||
+100
-2
@@ -1518,7 +1518,15 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
|
||||
|
||||
//任务确认统计
|
||||
List<Map<String,Object>> taskToConfirmMapList = this.projectLawsInventoryEOService.getTaskToConfirmStatistics(projectLawsInventoryEOList);
|
||||
int taskAffirmStatusCount = 0;
|
||||
if(CollectionUtils.isNotEmpty(taskToConfirmMapList)){
|
||||
//taskAffirmStatusCount
|
||||
for (Map<String, Object> taskToConfirm : taskToConfirmMapList) {
|
||||
taskAffirmStatusCount += (int) taskToConfirm.get("taskAffirmStatusCount");
|
||||
}
|
||||
}
|
||||
taskToConfirmMap.put("taskToConfirmMapList",taskToConfirmMapList);
|
||||
taskToConfirmMap.put("count",taskAffirmStatusCount);
|
||||
result.put("taskToConfirmMap",taskToConfirmMap);
|
||||
|
||||
//当前项目状态统计 获取一个 最差的结果 统计的数据 就是studio看到的数据。
|
||||
@@ -1549,12 +1557,26 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
|
||||
|
||||
//设计符合性
|
||||
List<Map<String,Object>> designComplianceMapList = this.projectLawsInventoryEOService.getDesignComplianceStatistice(projectLawsInventoryEOList);
|
||||
int designFlowTaskStatusCount = 0;
|
||||
if(CollectionUtils.isNotEmpty(designComplianceMapList)){
|
||||
for (Map<String, Object> designCompliance : designComplianceMapList) {
|
||||
designFlowTaskStatusCount += (int) designCompliance.get("designFlowTaskStatusCount");
|
||||
}
|
||||
}
|
||||
designComplianceMap.put("designComplianceMapList",designComplianceMapList);
|
||||
designComplianceMap.put("count",designFlowTaskStatusCount);
|
||||
result.put("designComplianceMap",designComplianceMap);
|
||||
|
||||
//验证符合性
|
||||
List<Map<String,Object>> verifyComplianceMapList = this.projectLawsInventoryEOService.getVerifyComplianceStatistice(projectLawsInventoryEOList);
|
||||
int verifyFlowTaskStatusCount = 0;
|
||||
if(CollectionUtils.isNotEmpty(verifyComplianceMapList)){
|
||||
for (Map<String, Object> verifyCompliance : verifyComplianceMapList) {
|
||||
verifyFlowTaskStatusCount += (int) verifyCompliance.get("verifyFlowTaskStatusCount");
|
||||
}
|
||||
}
|
||||
verifyComplianceMap.put("verifyComplianceMapList",verifyComplianceMapList);
|
||||
verifyComplianceMap.put("count",verifyFlowTaskStatusCount);
|
||||
result.put("verifyComplianceMap",verifyComplianceMap);
|
||||
|
||||
//认证进度统计
|
||||
@@ -1594,12 +1616,26 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
|
||||
if(CollectionUtils.isNotEmpty(pciEoList)){
|
||||
// 认证清单-任务确认统计
|
||||
List<Map<String,Object>> rzTaskToConfirmMapList = this.projectCertificationInventoryEOService.getTaskToConfirmStatistics(pciEoList);
|
||||
int taskAffirmStatusCount = 0;
|
||||
if(CollectionUtils.isNotEmpty(rzTaskToConfirmMapList)){
|
||||
for (Map<String, Object> rzTaskToConfirm : rzTaskToConfirmMapList) {
|
||||
taskAffirmStatusCount += (int) rzTaskToConfirm.get("taskAffirmStatusCount");
|
||||
}
|
||||
}
|
||||
rzTaskToConfirmMap.put("rzTaskToConfirmMapList",rzTaskToConfirmMapList);
|
||||
rzTaskToConfirmMap.put("count",taskAffirmStatusCount);
|
||||
result.put("rzTaskToConfirmMap",rzTaskToConfirmMap);
|
||||
|
||||
// Pre-Homo 统计
|
||||
List<Map<String,Object>> prehomoMapList = this.projectCertificationInventoryEOService.getPrehomoStatistice(pciEoList);
|
||||
int preHomoCount = 0;
|
||||
if (CollectionUtils.isNotEmpty(prehomoMapList)) {
|
||||
for (Map<String, Object> prehomo : prehomoMapList) {
|
||||
preHomoCount += (int) prehomo.get("taskAffirmStatusCount");
|
||||
}
|
||||
}
|
||||
prehomoMap.put("prehomoMapList",prehomoMapList);
|
||||
prehomoMap.put("count",preHomoCount);
|
||||
result.put("prehomoMap",prehomoMap);
|
||||
|
||||
// 认证进度 统计
|
||||
@@ -1609,6 +1645,28 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
|
||||
certificationProgressMap.put("allMapList",allMapList);// 全部
|
||||
certificationProgressMap.put("carMapList",carMapList);// 整车
|
||||
certificationProgressMap.put("partMapList",partMapList);// 零部件
|
||||
int allCount = 0;
|
||||
if(CollectionUtils.isNotEmpty(allMapList)){
|
||||
for (Map<String, Object> all : allMapList) {
|
||||
allCount += (int) all.get("certificationProgressCount");
|
||||
}
|
||||
}
|
||||
int carCount = 0;
|
||||
if(CollectionUtils.isNotEmpty(carMapList)){
|
||||
for (Map<String, Object> car : carMapList) {
|
||||
carCount += (int) car.get("certificationProgressCount");
|
||||
}
|
||||
}
|
||||
int partCount = 0;
|
||||
if(CollectionUtils.isNotEmpty(partMapList)){
|
||||
for (Map<String, Object> part : partMapList) {
|
||||
partCount += (int) part.get("certificationProgressCount");
|
||||
}
|
||||
}
|
||||
|
||||
certificationProgressMap.put("allCount",allCount);// 全部
|
||||
certificationProgressMap.put("carCount",carCount);// 整车
|
||||
certificationProgressMap.put("partCount",partCount);// 零部件
|
||||
result.put("certificationProgressMap",certificationProgressMap);
|
||||
}
|
||||
|
||||
@@ -1816,6 +1874,7 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
|
||||
}
|
||||
}
|
||||
if(CollectionUtils.isNotEmpty(dataList)){
|
||||
this.projectDetailsStatisticsGroupByTerritoryHearSort(dataList,params);
|
||||
result.put("dataList",dataList);
|
||||
return result;
|
||||
}
|
||||
@@ -1977,11 +2036,50 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
|
||||
dataList.add(dataMap);
|
||||
}
|
||||
}
|
||||
this.projectDetailsStatisticsGroupByTerritoryHearSort(dataList,params);
|
||||
result.put("dataList",dataList);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 项目库详情统计-根据责任领域分组统计数据-表头排序
|
||||
* @param dataList
|
||||
* @param params
|
||||
*/
|
||||
private void projectDetailsStatisticsGroupByTerritoryHearSort(List<Map<String, Object>> dataList,Map<String,Object> params) {
|
||||
String orderByField = (String) params.get("orderByField");
|
||||
String orderBy = (String) params.get("orderBy");
|
||||
if(CollectionUtils.isNotEmpty(dataList) && StringUtils.isNotEmpty(orderByField) && StringUtils.isNotEmpty(orderBy)){
|
||||
Collator comparator = Collator.getInstance(Locale.CHINESE);
|
||||
Collections.sort(dataList,(data1,data2)->{
|
||||
String param1 = "";
|
||||
String param2 = "";
|
||||
// 一级责任领域名称
|
||||
if("dutyTerritoryName".equals(orderByField)){
|
||||
param1 = StringUtils.isNotEmpty((String) data1.get("dutyTerritoryName")) ? (String) data1.get("dutyTerritoryName") : "";
|
||||
param2 = StringUtils.isNotEmpty((String) data2.get("dutyTerritoryName")) ? (String) data2.get("dutyTerritoryName") : "";
|
||||
}
|
||||
// 数量
|
||||
if("amount".equals(orderByField)){
|
||||
param1 = StringUtils.isNotEmpty(String.valueOf(data1.get("amount"))) ? String.valueOf(data1.get("amount")) : "";
|
||||
param2 = StringUtils.isNotEmpty(String.valueOf(data2.get("amount"))) ? String.valueOf(data2.get("amount")) : "";
|
||||
}
|
||||
// 占比
|
||||
if("percentage".equals(orderByField)){
|
||||
param1 = StringUtils.isNotEmpty((String) data1.get("percentage")) ? (String) data1.get("percentage") : "";
|
||||
param2 = StringUtils.isNotEmpty((String) data2.get("percentage")) ? (String) data2.get("percentage") : "";
|
||||
}
|
||||
if(OrderEnum.POSITIVE.getValue().equals(orderBy)){
|
||||
return comparator.compare(param1,param2);
|
||||
}else if(OrderEnum.REVERSE.getValue().equals(orderBy)){
|
||||
return comparator.compare(param2,param1);
|
||||
}
|
||||
return 0;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exportProjectDetailsStatisticsGroupByTerritoryXls(HttpServletResponse response, HttpServletRequest request, Map<String, Object> params) {
|
||||
Map<String, Object> projectDetailsStatisticsGroupByTerritory = getProjectDetailsStatisticsGroupByTerritory(params);
|
||||
@@ -1990,7 +2088,7 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
|
||||
String sheetName = "";
|
||||
String title = "";
|
||||
if (StringUtils.equals(cut,CutEnum.CN.getValue())) {
|
||||
title = "责任领域,数量,占比";
|
||||
title = "责任领域,数量,责任领域内占比";
|
||||
if(StringUtils.equals(OperatorTypeEnum.QUERY_FG_TASK_TO_CONFIRM_STATISTICS.getValue(),operatorType)){
|
||||
sheetName = "法规任务确认";
|
||||
}else if(StringUtils.equals(OperatorTypeEnum.QUERY_DESIGN_STATISTICS.getValue(),operatorType)){
|
||||
@@ -2024,7 +2122,7 @@ public class ProjectLibraryBaseServiceImpl extends ServiceImpl<ProjectLibraryBas
|
||||
sheetName = "认证进度";
|
||||
}*/
|
||||
}else if (StringUtils.equals(cut,CutEnum.EN.getValue())) {
|
||||
title = "Responsible Field,Quantity,Proportion";
|
||||
title = "Responsible Field,Quantity,Proportion within the area of responsibility";
|
||||
if(StringUtils.equals(OperatorTypeEnum.QUERY_FG_TASK_TO_CONFIRM_STATISTICS.getValue(),operatorType)){
|
||||
sheetName = "Regulation Task Confirmation";
|
||||
}else if(StringUtils.equals(OperatorTypeEnum.QUERY_DESIGN_STATISTICS.getValue(),operatorType)){
|
||||
|
||||
+88
-10
@@ -30,6 +30,7 @@ import com.jero.modules.system.service.IProjectUserBrandService;
|
||||
import com.jero.modules.system.service.ISysUserService;
|
||||
import com.jero.modules.system.service.impl.SysDictItemServiceImpl;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
@@ -38,6 +39,7 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
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.stereotype.Service;
|
||||
@@ -49,6 +51,7 @@ import java.io.OutputStream;
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -56,6 +59,7 @@ import java.util.stream.Collectors;
|
||||
* @date 2022/5/13 9:59
|
||||
* @auth zhn
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService {
|
||||
private static DecimalFormat df = new DecimalFormat("#.00");
|
||||
@@ -98,7 +102,7 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
||||
*/
|
||||
@SneakyThrows
|
||||
@Override
|
||||
public List<Map<String,Object>> timelineList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req) {
|
||||
public List<Map<String,Object>> timelineList(ProjectLibraryBase projectLibraryBase, HttpServletRequest req,boolean queryAllProject) {
|
||||
if(StringUtils.isNotBlank(projectLibraryBase.getProjectName())){
|
||||
String s = projectLibraryBase.getProjectName().replaceAll("\\*", "");
|
||||
projectLibraryBase.setProjectName(s);
|
||||
@@ -107,6 +111,13 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
//项目库信息
|
||||
List<ProjectLibraryBase> projectLibraryBaseList = projectLibraryBaseService.getList(projectLibraryBase);
|
||||
if(!queryAllProject){
|
||||
// 如果不是查询所有项目,只查询主项目
|
||||
projectLibraryBaseList = projectLibraryBaseList.stream().filter(plbEo -> {
|
||||
boolean flag = (StringUtils.isEmpty(plbEo.getParentId()) || StringUtils.equals(plbEo.getProjectVersion(),"00"));
|
||||
return flag;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
List<List<TimeNodeVO>> list = new ArrayList<>();
|
||||
List<Map<String,Object>> result = new ArrayList<>();
|
||||
|
||||
@@ -538,12 +549,25 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
||||
|
||||
|
||||
@Override
|
||||
public void exportXls(HttpServletResponse response, HttpServletRequest request,ProjectLibraryBase projectLibraryBase) {
|
||||
public void exportXls(HttpServletResponse response, HttpServletRequest request,ProjectLibraryBase projectLibraryBase,boolean queryAllProject) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
String fileName = "";
|
||||
String cut = projectLibraryBase.getCut();
|
||||
OutputStream ops = null;
|
||||
HSSFWorkbook workbook = new HSSFWorkbook();
|
||||
|
||||
if(StringUtils.isNotBlank(projectLibraryBase.getProjectName())){
|
||||
String s = projectLibraryBase.getProjectName().replaceAll("\\*", "");
|
||||
projectLibraryBase.setProjectName(s);
|
||||
}
|
||||
List<ProjectLibraryBase> plbEoList = this.projectLibraryBaseService.getList(projectLibraryBase);
|
||||
if(!queryAllProject){
|
||||
// 如果不是查询所有项目,只查询主项目
|
||||
plbEoList = plbEoList.stream().filter(plbEo -> {
|
||||
boolean flag = (StringUtils.isEmpty(plbEo.getParentId()) || StringUtils.equals(plbEo.getProjectVersion(),"00"));
|
||||
return flag;
|
||||
}).collect(Collectors.toList());
|
||||
}
|
||||
List<SysDictItem> dictItemList = sysDictItemServiceImpl.selectItemsByDictCode("region");
|
||||
for (ProjectLibraryBase libraryBase : plbEoList) {
|
||||
targetMarket(projectLibraryBase, dictItemList, libraryBase);
|
||||
@@ -552,10 +576,49 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
||||
List<ProjectCertificationInventoryEO> pciEoList = this.projectCertificationInventoryEOService.list();
|
||||
List<ProjectTaskPlanning> ptpEoList = this.projectTaskPlanningService.list();
|
||||
List<ParamsManifestEO> pmEoList = this.paramsManifestEOService.list();
|
||||
log.info("一阶段消耗时间:" + (System.currentTimeMillis() - startTime));
|
||||
List<ParamsCollectManifestEO> pcmEoList = this.paramsCollectManifestEOService.getList(null);
|
||||
|
||||
this.exportCrossProjectProgress(workbook,projectLibraryBase,plbEoList,pliEoList,pciEoList,pmEoList,pcmEoList,ptpEoList);
|
||||
this.exportOverviewCrossProjectProgress(workbook,projectLibraryBase,plbEoList,pliEoList,pciEoList,pmEoList,pcmEoList,ptpEoList);
|
||||
log.info("二阶段消耗时间:" + (System.currentTimeMillis() - startTime));
|
||||
|
||||
// this.exportCrossProjectProgress(workbook,projectLibraryBase,plbEoList,pliEoList,pciEoList,pmEoList,pcmEoList,ptpEoList);
|
||||
// this.exportOverviewCrossProjectProgress(workbook,projectLibraryBase,plbEoList,pliEoList,pciEoList,pmEoList,pcmEoList,ptpEoList);
|
||||
|
||||
HSSFSheet corssProjectProgressSheet = createCorssProjectProgressSheet(workbook, projectLibraryBase);
|
||||
HSSFSheet overviewCrossProjectProgressSheet = this.createOverviewCrossProjectProgressSheet(workbook, projectLibraryBase);
|
||||
CellStyle cellStyleTitle = workbook.createCellStyle();
|
||||
cellStyleTitle.setAlignment(HorizontalAlignment.CENTER);
|
||||
cellStyleTitle.setVerticalAlignment(VerticalAlignment.CENTER);
|
||||
|
||||
// 多线程代码
|
||||
// 创建线程一
|
||||
List<ProjectLibraryBase> finalPlbEoList = plbEoList;
|
||||
Thread thread1 = new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
exportCrossProjectProgressSetData(finalPlbEoList, corssProjectProgressSheet,pliEoList,pciEoList,pmEoList,pcmEoList,projectLibraryBase,ptpEoList);
|
||||
}
|
||||
});
|
||||
|
||||
// 创建线程二
|
||||
Thread thread2 = new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
exportOverviewCrossProjectProgressSetData(finalPlbEoList, overviewCrossProjectProgressSheet,pliEoList,pciEoList,pmEoList,pcmEoList,projectLibraryBase,ptpEoList,cellStyleTitle);
|
||||
}
|
||||
});
|
||||
|
||||
// 启动线程一和线程二
|
||||
thread1.start();
|
||||
thread2.start();
|
||||
|
||||
// 等待线程一和线程二执行完毕
|
||||
try {
|
||||
thread1.join();
|
||||
thread2.join();
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
try {
|
||||
response.setHeader("Content-Disposition",
|
||||
"attachment; filename=" + fileName);
|
||||
@@ -573,6 +636,7 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
||||
}finally {
|
||||
IOUtils.closeQuietly(ops);
|
||||
}
|
||||
log.info("总消耗时间:" + (System.currentTimeMillis() - startTime));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -586,7 +650,7 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
||||
* @param pcmEoList
|
||||
* @param ptpEoList
|
||||
*/
|
||||
private void exportCrossProjectProgress(HSSFWorkbook workbook,
|
||||
private void exportCrossProjectProgress(HSSFSheet sheet,
|
||||
ProjectLibraryBase projectLibraryBase,
|
||||
List<ProjectLibraryBase> plbEoList,
|
||||
List<ProjectLawsInventoryEO> pliEoList,
|
||||
@@ -594,6 +658,11 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
||||
List<ParamsManifestEO> pmEoList,
|
||||
List<ParamsCollectManifestEO> pcmEoList,
|
||||
List<ProjectTaskPlanning> ptpEoList) {
|
||||
this.exportCrossProjectProgressSetData(plbEoList, sheet,pliEoList,pciEoList,pmEoList,pcmEoList,projectLibraryBase,ptpEoList);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private HSSFSheet createCorssProjectProgressSheet(HSSFWorkbook workbook, ProjectLibraryBase projectLibraryBase) {
|
||||
String cut = projectLibraryBase.getCut();
|
||||
String sheetName = "项目进度";
|
||||
String firstTitle = "项目," +
|
||||
@@ -682,8 +751,7 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
||||
secondRowCell.setCellValue(secondTitleArr[i-1]);
|
||||
}
|
||||
}
|
||||
|
||||
this.exportCrossProjectProgressSetData(plbEoList, sheet,pliEoList,pciEoList,pmEoList,pcmEoList,projectLibraryBase,ptpEoList);
|
||||
return sheet;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -707,6 +775,7 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
||||
List<ProjectTaskPlanning> ptpEoList) {
|
||||
int dataIndex = 2;
|
||||
for (ProjectLibraryBase plbEo : plbEoList) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
Row dataRow = sheet.createRow(dataIndex);
|
||||
dataRow.createCell(0).setCellValue(plbEo.getShowName());
|
||||
|
||||
@@ -900,6 +969,8 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
||||
dataRow.createCell(55).setCellValue(parameterCollectingPercentageStr + percentSign);
|
||||
dataRow.createCell(56).setCellValue(certificationSubmissionStr);
|
||||
dataIndex ++;
|
||||
|
||||
log.info("11111处理"+ dataIndex +"个项目消耗时间:" + (System.currentTimeMillis() - startTime));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -914,14 +985,19 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
||||
* @param pcmEoList
|
||||
* @param ptpEoList
|
||||
*/
|
||||
private void exportOverviewCrossProjectProgress(HSSFWorkbook workbook,
|
||||
private void exportOverviewCrossProjectProgress(HSSFSheet sheet,
|
||||
ProjectLibraryBase projectLibraryBase,
|
||||
List<ProjectLibraryBase> plbEoList,
|
||||
List<ProjectLawsInventoryEO> pliEoList,
|
||||
List<ProjectCertificationInventoryEO> pciEoList,
|
||||
List<ParamsManifestEO> pmEoList,
|
||||
List<ParamsCollectManifestEO> pcmEoList,
|
||||
List<ProjectTaskPlanning> ptpEoList) {
|
||||
List<ProjectTaskPlanning> ptpEoList,
|
||||
CellStyle cellStyleTitle) {
|
||||
this.exportOverviewCrossProjectProgressSetData(plbEoList, sheet,pliEoList,pciEoList,pmEoList,pcmEoList,projectLibraryBase,ptpEoList,cellStyleTitle);
|
||||
}
|
||||
|
||||
public HSSFSheet createOverviewCrossProjectProgressSheet(HSSFWorkbook workbook, ProjectLibraryBase projectLibraryBase){
|
||||
String cut = projectLibraryBase.getCut();
|
||||
String sheetName = "项目进度概览";
|
||||
String firstTitle = "项目,R&H Studio,法规符合性管理,认证活动管理";
|
||||
@@ -975,7 +1051,7 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
||||
secondRowCell.setCellValue(secondTitleArr[i]);
|
||||
}
|
||||
}
|
||||
this.exportOverviewCrossProjectProgressSetData(plbEoList, sheet,pliEoList,pciEoList,pmEoList,pcmEoList,projectLibraryBase,ptpEoList,cellStyleTitle);
|
||||
return sheet;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1001,6 +1077,7 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
||||
CellStyle cellStyleTitle) {
|
||||
int dataIndex = 2;
|
||||
for (ProjectLibraryBase plbEo : plbEoList) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
List<ProjectTaskPlanning> ptpEoListTemp = ptpEoList.stream().filter(ptpEo -> StringUtils.equals(ptpEo.getProjectId(), plbEo.getId())).collect(Collectors.toList());
|
||||
String legalTaskConfirmationStr = "";
|
||||
String designDeadlineStr = "";
|
||||
@@ -1131,6 +1208,7 @@ public class ProjectStatusBoardServiceImpl implements IProjectStatusBoardService
|
||||
}
|
||||
}
|
||||
dataIndex += 2;
|
||||
log.info("22222处理"+ dataIndex +"个项目消耗时间:" + (System.currentTimeMillis() - startTime));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+15
-6
@@ -180,18 +180,18 @@
|
||||
}
|
||||
|
||||
.ant-table-column-title {
|
||||
font-weight: bold!important;
|
||||
font-weight: bold !important;
|
||||
}
|
||||
|
||||
.ant-table-thead > tr > th {
|
||||
background: #f3f6f6!important;
|
||||
padding-top: 12px!important;
|
||||
padding-bottom: 12px!important;
|
||||
background: #f3f6f6 !important;
|
||||
padding-top: 12px !important;
|
||||
padding-bottom: 12px !important;
|
||||
}
|
||||
|
||||
.ant-table-tbody > tr > td {
|
||||
padding-top: 12px!important;
|
||||
padding-bottom: 12px!important;
|
||||
padding-top: 12px !important;
|
||||
padding-bottom: 12px !important;
|
||||
}
|
||||
|
||||
.ant-tooltip-inner {
|
||||
@@ -206,4 +206,13 @@
|
||||
.ant-menu-inline-collapsed-tooltip a {
|
||||
color: #333 !important;
|
||||
}
|
||||
|
||||
.page .ant-select-selection--single {
|
||||
height: 32px !important;
|
||||
line-height: 32px !important;
|
||||
}
|
||||
.page .ant-select-selection__rendered{
|
||||
height: 32px !important;
|
||||
line-height: 32px !important;
|
||||
}
|
||||
</style>
|
||||
@@ -735,7 +735,7 @@ module.exports = {
|
||||
regulatoryTaskConfirmation: 'Regulation Task Confirmed ',
|
||||
certificationStart: 'Homo Completed ',
|
||||
preHomoCompletion: 'Pre-Homo Completed ',
|
||||
certificationEnd: 'Homo Approved ',
|
||||
certificationEnd: 'Homo KO',
|
||||
directoryName: 'Catalogue Name',
|
||||
batch: 'Batch',
|
||||
uploadTime: 'Upload Time',
|
||||
@@ -1447,12 +1447,12 @@ module.exports = {
|
||||
select:'select',
|
||||
onlyDataWithProcessStatusDeleted:'Only data with process status of list to be released and approved can be deleted',
|
||||
complianceCertificationProgram:'Compliance & Homologation Program',
|
||||
listPublishing:'List Release',
|
||||
responsibilityConfirmation:'Responsibility Confirm',
|
||||
designVerification:'Design Check',
|
||||
getStarted:'Pre-Homo Starts',
|
||||
certificationStartOne:'Homo Starts',
|
||||
verificationAndVerification:'Validation Check',
|
||||
listPublishing:'List Publishing',
|
||||
responsibilityConfirmation:'Responsibility Confirmation',
|
||||
designVerification:'Design Verification',
|
||||
getStarted:'Get Started',
|
||||
certificationStartOne:'Certification Start',
|
||||
verificationAndVerification:'Verification And Verification',
|
||||
projectInterfacePersonRegulationEngineerSetting:'Project Interface Person - Regulation Engineer Setting',
|
||||
projectInterfacePersonCertificationEngineerSetting:'Project Interface Person - Certification Engineer Setting',
|
||||
registrationnumber:'Product registration number',
|
||||
@@ -1705,7 +1705,7 @@ module.exports = {
|
||||
softwareversion:'Software version',
|
||||
returntofill:'Return to fill',
|
||||
thereAreCurrentlyNoRegulationsToHandle:'No regulations to be processed now',
|
||||
certificationSubmission:'Application Submitted',
|
||||
certificationSubmission:'Certification Submission',
|
||||
upgradecompletion:'Upgrade completion',
|
||||
implementedupgrade:'Whether the implemented upgrade is consistent with the record',
|
||||
numberofvehicles:'Number of vehicles that have completed upgrades',
|
||||
@@ -1827,4 +1827,8 @@ module.exports = {
|
||||
proportion:'Proportion',
|
||||
projectProgressStatistics:'Project Progress Statistics',
|
||||
GRPSystemProjectProgressStatistics:'GRP system project progress statistics',
|
||||
statisticalNodes:'Statistical Nodes',
|
||||
proportionWithInTheAreaOfResponsibility:'Proportion within the area of responsibility',
|
||||
contentsearch:'Content Search',
|
||||
masterProject:'Master Project',
|
||||
}
|
||||
@@ -1928,4 +1928,8 @@ module.exports = {
|
||||
proportion:'占比',
|
||||
projectProgressStatistics:'项目进度统计',
|
||||
GRPSystemProjectProgressStatistics:'GRP系统项目进度统计',
|
||||
statisticalNodes:'统计节点',
|
||||
proportionWithInTheAreaOfResponsibility:'责任领域内占比',
|
||||
contentsearch:'内容搜索',
|
||||
masterProject:'主项目',
|
||||
}
|
||||
@@ -5,6 +5,7 @@
|
||||
:mode="isSingleChoice?'':'multiple'"
|
||||
class="itemModelStand-input"
|
||||
show-search
|
||||
:allowClear="isSingleChoice ? true : false"
|
||||
:label-in-value="isSingleChoice ? false:true"
|
||||
:value="selectValue"
|
||||
:placeholder="$t('PleaseSelect')+query.db_field_txt"
|
||||
@@ -147,6 +148,8 @@
|
||||
let username = []
|
||||
if (this.selectValue.length > 0) {
|
||||
this.selectValue.forEach(res => {
|
||||
let reg = /[\t\r\f\n\s]*/g
|
||||
res.label = res.label.replace(reg, '')
|
||||
id.push(res.key)
|
||||
username.push(res.label)
|
||||
})
|
||||
|
||||
@@ -75,6 +75,9 @@
|
||||
<a-input-number v-model="form.sortOrder" :placeholder="$t('PleaseEnterDisplayOrder')" style="width: 100%"
|
||||
:min="1" :max="99999" :formatter="limitNumber" :parser="limitNumber"/>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item :label="$t('statisticalNodes')" prop="statNode" v-if="record.id == '1513417672023441409'">
|
||||
<a-input v-model.trim="form.statNode" :placeholder="$t('pleaseEnter')+$t('statisticalNodes')"/>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item :label="$t('describe')" prop="description">
|
||||
<a-input v-model.trim="form.description" :placeholder="$t('PleaseEnterDescription')"/>
|
||||
</a-form-model-item>
|
||||
@@ -139,6 +142,14 @@
|
||||
{ min: 1, max: 100, message: this.$t('cantExeed') + '100' + this.$t('characters'), trigger: 'blur' },
|
||||
{ validator: this.test }
|
||||
],
|
||||
statNode:[
|
||||
{ required: true, message: this.$t('statisticalNodes')+ this.$t('cannotEmpty'), trigger: 'blur' },
|
||||
{
|
||||
max: 100,
|
||||
message: this.$t('statisticalNodes') + this.$t('cannotExceed') + 100 + this.$t('Characters'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
],
|
||||
valueType:[
|
||||
{ required: true, message: this.$t('type') + this.$t('cannotEmpty'), trigger: 'change' },
|
||||
],
|
||||
|
||||
@@ -314,9 +314,22 @@
|
||||
<span v-else>--</span>
|
||||
</span>
|
||||
</a-table>
|
||||
<div class="buttom-box" v-if="dataSource && dataSource.length > 0">
|
||||
{{$t('total')+' '+this.dataSource.length+' '+ $t('strip')}}
|
||||
<div class="page" v-if="dataSource.length > 0">
|
||||
<a-pagination
|
||||
:show-total="total => $t('total')+` ${total} `+$t('strip')"
|
||||
show-quick-jumper
|
||||
show-size-changer
|
||||
:page-size.sync="pageSize"
|
||||
:total="total"
|
||||
:pageSizeOptions="['50','100','200','300']"
|
||||
:current="pageNo"
|
||||
@change="onChangeSize"
|
||||
@showSizeChange="SizeChange"
|
||||
/>
|
||||
</div>
|
||||
<!-- <div class="buttom-box" v-if="dataSource && dataSource.length > 0">-->
|
||||
<!-- {{$t('total')+' '+this.dataSource.length+' '+ $t('strip')}}-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</a-card>
|
||||
</div>
|
||||
@@ -403,6 +416,9 @@
|
||||
orderBy: '1',
|
||||
istable: true,
|
||||
orderByField: '',
|
||||
pageNo: 1,
|
||||
pageSize: 50,
|
||||
total: 0,
|
||||
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
|
||||
downLoadImgUrl: window._CONFIG['domianWebImgURL'] + '/sys/common/download',
|
||||
dataSourceFile: [],
|
||||
@@ -424,7 +440,7 @@
|
||||
url: {
|
||||
addModelList: '/dummy/dummyInventoryInfoEO/queryPageDummy',
|
||||
queryConditionInventory: '/dummy/dummyInventoryInfoEO/queryConditionInventory',
|
||||
list: '/dummy/dummyInventoryInfoEO/list',
|
||||
list: '/dummy/dummyInventoryInfoEO/page',
|
||||
addModel: '/dummy/dummyInventoryInfoEO/add',
|
||||
editModel: '/dummy/dummyInventoryInfoEO/edit',
|
||||
deleteBatch: '/dummy/dummyInventoryInfoEO/deleteBatch',
|
||||
@@ -1231,6 +1247,15 @@
|
||||
}
|
||||
})
|
||||
},
|
||||
onChangeSize(page, pageSize) {
|
||||
this.pageNo = page
|
||||
this.getList()
|
||||
},
|
||||
SizeChange(page, pageSize) {
|
||||
this.pageNo = 1
|
||||
this.pageSize = pageSize
|
||||
this.getList()
|
||||
},
|
||||
getList() {
|
||||
if (this.queryParam.xin1Che1Xing2Shi2Shi1Ri4Qi1String && this.queryParam.xin1Che1Xing2Shi2Shi1Ri4Qi1String instanceof Array) {
|
||||
this.queryParam.xin1Che1Xing2Shi2Shi1Ri4Qi1String = this.queryParam.xin1Che1Xing2Shi2Shi1Ri4Qi1String.join(',')
|
||||
@@ -1243,12 +1268,21 @@
|
||||
...this.queryParamQuery,
|
||||
orderBy: this.orderBy,
|
||||
orderByField: this.orderByField,
|
||||
dummyInventoryBaseId: this.$route.query.id
|
||||
dummyInventoryBaseId: this.$route.query.id,
|
||||
pageNo: this.pageNo,
|
||||
pageSize: this.pageSize
|
||||
}
|
||||
this.loading = true
|
||||
getAction(this.url.list, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.dataSource = res.result || []
|
||||
if (res.result.current > 1 && res.result.records.length == 0) {
|
||||
this.pageNo = 1
|
||||
this.getList()
|
||||
return
|
||||
}
|
||||
this.dataSource = res.result.records || []
|
||||
this.total = res.result.total
|
||||
// this.dataSource = res.result || []
|
||||
if (this.dataSource.length == 0) {
|
||||
this.$nextTick(() => {
|
||||
let anttablebody = document.getElementsByClassName('ant-table-body')
|
||||
@@ -1727,6 +1761,11 @@
|
||||
padding-left: 16px!important;
|
||||
border-right: 1px solid #e8e8e8;
|
||||
}
|
||||
.page {
|
||||
text-align: right;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
</style>
|
||||
<style lang="less">
|
||||
.popconfirm {
|
||||
|
||||
@@ -48,6 +48,40 @@
|
||||
:maskClosable="false"
|
||||
@close="handleCancel"
|
||||
>
|
||||
<div class="table-page-search-wrapper">
|
||||
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||
<a-row :gutter="24">
|
||||
<a-col :md="12" :sm="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('contentsearch')">
|
||||
<span>{{$t('contentsearch')}}</span>
|
||||
</div>
|
||||
<a-input
|
||||
class="box-input"
|
||||
:placeholder="$t('PleaseEnter')+$t('contentsearch')"
|
||||
v-model='queryParam.realname' />
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :md="12" :sm="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('module')">
|
||||
<span>{{$t('module')}}</span>
|
||||
</div>
|
||||
<j-dict-select-tag class="box-input" type="select"
|
||||
v-model="queryParam.module"
|
||||
dictCode="O_T_A_che1_xing2_mo2_kuai4"
|
||||
:placeholder="$t('PleaseSelect')+$t('module')"/>
|
||||
</div>
|
||||
</a-col>
|
||||
<span style="float: right;overflow: hidden;" class="table-page-search-submitButtons">
|
||||
<a-col :md="6" :sm="24">
|
||||
<a-button class="box-button" @click="searchReset">{{$t('reset')}}</a-button>
|
||||
<a-button class="box-button" style="margin-left: 8px" type="primary" @click="searchQuery">{{$t('query')}}</a-button>
|
||||
</a-col>
|
||||
</span>
|
||||
</a-row>
|
||||
</a-form>
|
||||
</div>
|
||||
<!-- :components="drag(columnshistory,'columnshistory')"-->
|
||||
<a-table
|
||||
class="table"
|
||||
@@ -118,9 +152,16 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
title: '',
|
||||
queryParam: {
|
||||
projectName:this.$route.query.projectName?this.$route.query.projectName:''
|
||||
queryParam: {},
|
||||
labelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 7 }
|
||||
},
|
||||
wrapperCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 14 }
|
||||
},
|
||||
rules: {},
|
||||
visible:false,
|
||||
confirmLoading: false,
|
||||
pageNohistory: 1,
|
||||
@@ -198,6 +239,7 @@ export default {
|
||||
},
|
||||
bussLogList(val) {
|
||||
let query = {
|
||||
...this.queryParam,
|
||||
pageNo: this.pageNohistory,
|
||||
pageSize: this.pageSizehistory,
|
||||
otaId:localStorage.getItem('otaId')
|
||||
@@ -213,6 +255,13 @@ export default {
|
||||
}
|
||||
})
|
||||
},
|
||||
searchQuery() {
|
||||
this.bussLogList()
|
||||
},
|
||||
searchReset() {
|
||||
this.queryParam = {}
|
||||
this.bussLogList()
|
||||
},
|
||||
handleOk() {
|
||||
this.pageNohistory = 1
|
||||
this.visible = false
|
||||
|
||||
@@ -48,6 +48,40 @@
|
||||
:maskClosable="false"
|
||||
@close="handleCancel"
|
||||
>
|
||||
<div class="table-page-search-wrapper">
|
||||
<a-form layout="inline" @keyup.enter.native="searchQuery">
|
||||
<a-row :gutter="24">
|
||||
<a-col :md="12" :sm="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('contentsearch')">
|
||||
<span>{{$t('contentsearch')}}</span>
|
||||
</div>
|
||||
<a-input
|
||||
class="box-input"
|
||||
:placeholder="$t('PleaseEnter')+$t('contentsearch')"
|
||||
v-model='queryParam.realname' />
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :md="12" :sm="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('module')">
|
||||
<span>{{$t('module')}}</span>
|
||||
</div>
|
||||
<j-dict-select-tag class="box-input" type="select"
|
||||
v-model="queryParam.module"
|
||||
dictCode="O_T_A_che1_xing2_mo2_kuai4"
|
||||
:placeholder="$t('PleaseSelect')+$t('module')"/>
|
||||
</div>
|
||||
</a-col>
|
||||
<span style="float: right;overflow: hidden;margin-right: 17px" class="table-page-search-submitButtons">
|
||||
<a-col :md="6" :sm="24">
|
||||
<a-button class="box-button" @click="searchReset">{{$t('reset')}}</a-button>
|
||||
<a-button class="box-button" style="margin-left: 8px" type="primary" @click="searchQuery">{{$t('query')}}</a-button>
|
||||
</a-col>
|
||||
</span>
|
||||
</a-row>
|
||||
</a-form>
|
||||
</div>
|
||||
<!-- :components="drag(columnshistory,'columnshistory')"-->
|
||||
<a-table
|
||||
class="table"
|
||||
@@ -118,9 +152,17 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
title: '',
|
||||
queryParam: {
|
||||
projectName:this.$route.query.projectName?this.$route.query.projectName:''
|
||||
queryParam: {},
|
||||
labelCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 7 }
|
||||
},
|
||||
wrapperCol: {
|
||||
xs: { span: 24 },
|
||||
sm: { span: 14 }
|
||||
},
|
||||
rules: {},
|
||||
spinLoading: false,
|
||||
visible:false,
|
||||
confirmLoading: false,
|
||||
pageNohistory: 1,
|
||||
@@ -199,6 +241,7 @@ export default {
|
||||
},
|
||||
bussLogList(val) {
|
||||
let query = {
|
||||
...this.queryParam,
|
||||
pageNo: this.pageNohistory,
|
||||
pageSize: this.pageSizehistory,
|
||||
otaId:localStorage.getItem('otaId')
|
||||
@@ -214,6 +257,13 @@ export default {
|
||||
}
|
||||
})
|
||||
},
|
||||
searchQuery() {
|
||||
this.bussLogList()
|
||||
},
|
||||
searchReset() {
|
||||
this.queryParam = {}
|
||||
this.bussLogList()
|
||||
},
|
||||
handleOk() {
|
||||
this.pageNohistory = 1
|
||||
this.visible = false
|
||||
@@ -302,7 +352,7 @@ export default {
|
||||
|
||||
.title-text {
|
||||
width: 20%;
|
||||
min-width: 110px;
|
||||
min-width: 90px;
|
||||
color: #000F16;
|
||||
display: inline-block;
|
||||
font-weight: 500;
|
||||
|
||||
@@ -6,6 +6,27 @@
|
||||
{{$t('ParameteItemCollectionList')}}({{$t(this.$route.query.projectName)}}) — {{$t(this.$route.query.title)}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="Virtual-detail-title-right">
|
||||
<a-popconfirm overlayClassName="popconfirmDetailsText"
|
||||
:visible="visible"
|
||||
@visibleChange="handleVisibleChange"
|
||||
placement="bottomRight">
|
||||
<template slot="title" id="popconfirmDetails">
|
||||
<div @click="roleSwitchingClick(item.value)"
|
||||
v-for="(item,index) in RoleType"
|
||||
class="operator-text-title"
|
||||
:class="{'operator-text-title-color':item.label == rolename ? true : false}"
|
||||
:title="item.label">
|
||||
{{ item.label }}
|
||||
</div>
|
||||
<JLoading :loading="JTextLoading"></JLoading>
|
||||
</template>
|
||||
<div class="operator-text" style="position: relative;margin-right: 0">
|
||||
<a-icon type="select"/>
|
||||
{{rolename}}
|
||||
</div>
|
||||
</a-popconfirm>
|
||||
</div>
|
||||
</div>
|
||||
<div style="padding-top: 54px;background: #fff;height: 100%">
|
||||
<div class="detail-content" style="height: 100%">
|
||||
@@ -33,28 +54,28 @@
|
||||
v-model="formInline.paramsName"></a-input>
|
||||
</div>
|
||||
</a-col>
|
||||
<!-- <a-col :md="6" :sm="8">-->
|
||||
<!-- <div class="box-title-text">-->
|
||||
<!-- <div class="title-text" :title="$t('NareaOfResponsibility')">-->
|
||||
<!-- <span>{{$t('NareaOfResponsibility')}}</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- <j-multi-select-tag class="box-input" v-model="formInline.dutyTerritory"-->
|
||||
<!-- :placeholder="$t('PleaseSelect')+$t('NareaOfResponsibility')"-->
|
||||
<!-- :type="'select'"-->
|
||||
<!-- :triggerChange="false" :dictCode="'duty_territory'"/>-->
|
||||
<!-- </div>-->
|
||||
<!-- </a-col>-->
|
||||
<a-col :md="6" :sm="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('certificationCategory')">
|
||||
<span>{{$t('certificationCategory')}}</span>
|
||||
</div>
|
||||
<j-dict-select-tag class="box-input" v-model="formInline.certCategory"
|
||||
:placeholder="$t('PleaseSelect')+$t('certificationCategory')"
|
||||
:type="'select'"
|
||||
:triggerChange="false" :dictCode="'cert_category'"/>
|
||||
</div>
|
||||
</a-col>
|
||||
<!-- <a-col :md="6" :sm="8">-->
|
||||
<!-- <div class="box-title-text">-->
|
||||
<!-- <div class="title-text" :title="$t('NareaOfResponsibility')">-->
|
||||
<!-- <span>{{$t('NareaOfResponsibility')}}</span>-->
|
||||
<!-- </div>-->
|
||||
<!-- <j-multi-select-tag class="box-input" v-model="formInline.dutyTerritory"-->
|
||||
<!-- :placeholder="$t('PleaseSelect')+$t('NareaOfResponsibility')"-->
|
||||
<!-- :type="'select'"-->
|
||||
<!-- :triggerChange="false" :dictCode="'duty_territory'"/>-->
|
||||
<!-- </div>-->
|
||||
<!-- </a-col>-->
|
||||
<a-col :md="6" :sm="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('certificationCategory')">
|
||||
<span>{{$t('certificationCategory')}}</span>
|
||||
</div>
|
||||
<j-dict-select-tag class="box-input" v-model="formInline.certCategory"
|
||||
:placeholder="$t('PleaseSelect')+$t('certificationCategory')"
|
||||
:type="'select'"
|
||||
:triggerChange="false" :dictCode="'cert_category'"/>
|
||||
</div>
|
||||
</a-col>
|
||||
<template v-if="toggleSearchStatus">
|
||||
<a-col :md="6" :sm="8">
|
||||
<div class="box-title-text">
|
||||
@@ -269,9 +290,9 @@
|
||||
{{$t('CompulsoryWithdrawal')}}
|
||||
</div>
|
||||
<!-- 列表设置-->
|
||||
<!-- v-if="!this.$route.query.it"-->
|
||||
<!-- v-if="!this.$route.query.it"-->
|
||||
<a-popconfirm :visible="customizevisible" overlayClassName="popconfirmIndex"
|
||||
placement="bottomRight" >
|
||||
placement="bottomRight">
|
||||
<template slot="title" id="popconfirmmize">
|
||||
<div style="max-height:360px;overflow:scroll;overflow-x: auto;width: 211px">
|
||||
<a-checkbox
|
||||
@@ -283,13 +304,15 @@
|
||||
>{{ $t('selectAll') }}
|
||||
</a-checkbox>
|
||||
<a-checkbox-group @change="onChange" v-model="checkedList" class="customize-text">
|
||||
<a-checkbox class="customize-text-title" :disabled="item.disabled" v-for="(item, key) in customizeList"
|
||||
<a-checkbox class="customize-text-title" :disabled="item.disabled"
|
||||
v-for="(item, key) in customizeList"
|
||||
:key="key" :value="item.field">{{ item.db_field_txt }}
|
||||
</a-checkbox>
|
||||
</a-checkbox-group>
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button @click="cancel" style="margin-right: 16px">{{ $t('cancel') }}</a-button>
|
||||
<a-button @click="handleSubmitcustomize" type="primary" :loading="confirmLoading">{{ $t('determine') }}
|
||||
<a-button @click="handleSubmitcustomize" type="primary" :loading="confirmLoading">{{ $t('determine')
|
||||
}}
|
||||
</a-button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -300,31 +323,13 @@
|
||||
</div>
|
||||
</a-popconfirm>
|
||||
<!-- 角色切换 -->
|
||||
<!-- <div class="operator-text"-->
|
||||
<!-- v-if="!this.$route.query.it"-->
|
||||
<!-- @click="roleSwitchingClick">-->
|
||||
<!-- <a-icon type="select"/>-->
|
||||
<!-- {{ $t('roleSwitching') }} ({{ $t(this.rolename)}})-->
|
||||
<!-- </div>-->
|
||||
<a-popconfirm overlayClassName="popconfirmDetails"
|
||||
:visible="visible"
|
||||
@visibleChange="handleVisibleChange"
|
||||
placement="bottomRight">
|
||||
<template slot="title" id="popconfirmDetails">
|
||||
<div @click="roleSwitchingClick(item.value)"
|
||||
v-for="(item,index) in RoleType"
|
||||
class="operator-text-title"
|
||||
:class="{'operator-text-title-color':item.label == rolename ? true : false}"
|
||||
:title="item.label">
|
||||
{{ item.label }}
|
||||
</div>
|
||||
<JLoading :loading="JTextLoading"></JLoading>
|
||||
</template>
|
||||
<div class="operator-text" style="position: relative">
|
||||
<a-icon type="select"/>
|
||||
{{rolename}}
|
||||
</div>
|
||||
</a-popconfirm>
|
||||
<!-- <div class="operator-text"-->
|
||||
<!-- v-if="!this.$route.query.it"-->
|
||||
<!-- @click="roleSwitchingClick">-->
|
||||
<!-- <a-icon type="select"/>-->
|
||||
<!-- {{ $t('roleSwitching') }} ({{ $t(this.rolename)}})-->
|
||||
<!-- </div>-->
|
||||
|
||||
</div>
|
||||
<div style="width: 100%">
|
||||
<!-- 表格-10控件-->
|
||||
@@ -868,7 +873,7 @@
|
||||
// status: 2
|
||||
// }
|
||||
// ],
|
||||
customizeList:[],
|
||||
customizeList: [],
|
||||
selectedRowKeys: [],
|
||||
textLoading: false,
|
||||
formInline: {},
|
||||
@@ -885,7 +890,7 @@
|
||||
},
|
||||
loading: false,
|
||||
dataSource: [],
|
||||
statuList:[],
|
||||
statuList: [],
|
||||
areaVisible: false, // 弹框的控制
|
||||
configureareaVisible: false, // 配置的彈框
|
||||
pageNo: 1,
|
||||
@@ -1118,7 +1123,7 @@
|
||||
}
|
||||
},
|
||||
roleSwitchingClick(roleCode) {
|
||||
console.log(roleCode,1111)
|
||||
console.log(roleCode, 1111)
|
||||
this.JTextLoading = true
|
||||
// this.visibleRoleSwitching = true
|
||||
this.$nextTick(() => {
|
||||
@@ -1163,34 +1168,34 @@
|
||||
} else {
|
||||
// this.$refs.ruleFormRoleSwitching.validate(valid => {
|
||||
// if (valid) {
|
||||
let query = {
|
||||
userType: roleCode,
|
||||
paramsManifestId: this.$route.query.id,
|
||||
projectId: this.$route.query.projectId,
|
||||
userId: this.userInfo().id
|
||||
}
|
||||
this.confirmLoadingRoleSwitching = true
|
||||
postAction('/params/userTypeLog/edit', query).then((res) => {
|
||||
if (res.success) {
|
||||
this.currentPersonRole = roleCode
|
||||
this.$message.success(this.$t('OperationSuccessful'))
|
||||
this.visibleRoleSwitching = false
|
||||
this.confirmLoadingRoleSwitching = false
|
||||
this.JTextLoading = false
|
||||
this.visible = false
|
||||
localStorage.setItem('currentPersonRole', JSON.stringify(roleCode))
|
||||
this.RoleType.forEach((item, index) => {
|
||||
if (item.value == this.currentPersonRole) {
|
||||
this.rolename = item.label
|
||||
}
|
||||
})
|
||||
this.selectedRowKeysValue = []
|
||||
} else {
|
||||
this.confirmLoadingRoleSwitching = false
|
||||
this.JTextLoading = false
|
||||
this.$message.warning(this.$t('operationFailed'))
|
||||
let query = {
|
||||
userType: roleCode,
|
||||
paramsManifestId: this.$route.query.id,
|
||||
projectId: this.$route.query.projectId,
|
||||
userId: this.userInfo().id
|
||||
}
|
||||
this.confirmLoadingRoleSwitching = true
|
||||
postAction('/params/userTypeLog/edit', query).then((res) => {
|
||||
if (res.success) {
|
||||
this.currentPersonRole = roleCode
|
||||
this.$message.success(this.$t('OperationSuccessful'))
|
||||
this.visibleRoleSwitching = false
|
||||
this.confirmLoadingRoleSwitching = false
|
||||
this.JTextLoading = false
|
||||
this.visible = false
|
||||
localStorage.setItem('currentPersonRole', JSON.stringify(roleCode))
|
||||
this.RoleType.forEach((item, index) => {
|
||||
if (item.value == this.currentPersonRole) {
|
||||
this.rolename = item.label
|
||||
}
|
||||
})
|
||||
this.selectedRowKeysValue = []
|
||||
} else {
|
||||
this.confirmLoadingRoleSwitching = false
|
||||
this.JTextLoading = false
|
||||
this.$message.warning(this.$t('operationFailed'))
|
||||
}
|
||||
})
|
||||
// }
|
||||
// })
|
||||
}
|
||||
@@ -1823,27 +1828,27 @@
|
||||
this.selectedValue = this.checkedList
|
||||
this.indeterminate = false
|
||||
},
|
||||
getcustomizeList(item){
|
||||
getcustomizeList(item) {
|
||||
let params = {
|
||||
paramsManifestId: this.$route.query.id,
|
||||
projectName:this.$route.query.projectName,
|
||||
projectName: this.$route.query.projectName,
|
||||
flag: '7'
|
||||
}
|
||||
getAction('params/collectManifest/getHeader', params).then((res) => {
|
||||
if (res.success) {
|
||||
let List = []
|
||||
let sList = []
|
||||
res.result.forEach((item,index) => {
|
||||
if(!item.isLock){
|
||||
if(item.headFieldCn == '操作'){
|
||||
res.result.forEach((item, index) => {
|
||||
if (!item.isLock) {
|
||||
if (item.headFieldCn == '操作') {
|
||||
item.field = 'operation'
|
||||
item.disabled = true
|
||||
}else if(item.headFieldCn == 'NIO编号' || item.headFieldCn == '参数名称'){
|
||||
} else if (item.headFieldCn == 'NIO编号' || item.headFieldCn == '参数名称') {
|
||||
item.disabled = true
|
||||
}
|
||||
List.push(item)
|
||||
}
|
||||
if(item.isLock) {
|
||||
if (item.isLock) {
|
||||
sList.push(item)
|
||||
}
|
||||
})
|
||||
@@ -1851,7 +1856,7 @@
|
||||
this.statuList = sList
|
||||
}
|
||||
})
|
||||
if(item){
|
||||
if (item) {
|
||||
console.log(item)
|
||||
this.checkedList = item
|
||||
}
|
||||
@@ -2222,7 +2227,7 @@
|
||||
returnDataJurisdiction() {
|
||||
// 退回的状态权限
|
||||
let homoJurisdictionReturn = this.homoJurisdictionReturn()
|
||||
console.log(homoJurisdictionReturn,'homoJurisdictionReturn')
|
||||
console.log(homoJurisdictionReturn, 'homoJurisdictionReturn')
|
||||
if (homoJurisdictionReturn == 1) {
|
||||
this.returnData()
|
||||
} else if (homoJurisdictionReturn == 0) {
|
||||
@@ -2306,9 +2311,9 @@
|
||||
})
|
||||
let _this = this
|
||||
let param = {
|
||||
ids: _array.join(',') ,
|
||||
paramsManifestId:this.$route.query.id,
|
||||
projectId:this.$route.query.projectId,
|
||||
ids: _array.join(','),
|
||||
paramsManifestId: this.$route.query.id,
|
||||
projectId: this.$route.query.projectId
|
||||
|
||||
}
|
||||
let url = ''
|
||||
@@ -2512,9 +2517,11 @@
|
||||
.popconfirmIndex .anticon-exclamation-circle {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
::v-deep .ant-table-fixed-header .ant-table-body-inner {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
popconfirmmize {
|
||||
z-index: 999;
|
||||
}
|
||||
@@ -2530,6 +2537,7 @@
|
||||
.popconfirmmize .ant-popover-message {
|
||||
padding: 4px 0 36px !important;
|
||||
}
|
||||
|
||||
::v-deep .ant-popover-buttons {
|
||||
display: none !important;
|
||||
}
|
||||
@@ -2639,6 +2647,7 @@
|
||||
.Required {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.customize-text {
|
||||
/*height: 1533px;*/
|
||||
display: flex;
|
||||
@@ -2653,6 +2662,7 @@
|
||||
color: #040B29;
|
||||
margin-bottom: 22px;
|
||||
}
|
||||
|
||||
.drawer-bootom-button {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
@@ -2665,6 +2675,7 @@
|
||||
background: #fff;
|
||||
border-radius: 0 0 2px 2px;
|
||||
}
|
||||
|
||||
.ant-table-placeholder {
|
||||
padding: 0;
|
||||
border-top: none;
|
||||
@@ -2673,9 +2684,11 @@
|
||||
.itemModelComment .ant-form-item-control-wrapper {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.second {
|
||||
padding: 0 !important;
|
||||
}
|
||||
|
||||
.doc-detail {
|
||||
background: #fff;
|
||||
height: 100%;
|
||||
@@ -2751,6 +2764,10 @@
|
||||
line-height: 68px;
|
||||
}
|
||||
|
||||
.Virtual-detail-title-right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.doc-detail-right {
|
||||
width: 800px;
|
||||
line-height: 68px;
|
||||
@@ -2782,9 +2799,11 @@
|
||||
.text-wraning {
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
.operator-text-title-color {
|
||||
color: #00B3BE;
|
||||
}
|
||||
|
||||
</style>
|
||||
<style lang='less'>
|
||||
.popconfirmIndex .ant-popover-message-title {
|
||||
@@ -2792,16 +2811,16 @@
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
.popconfirmDetails {
|
||||
z-index: 999;
|
||||
/*top: 42px !important;*/
|
||||
}
|
||||
.popconfirmDetailsText {
|
||||
z-index: 1000;
|
||||
top: 42px !important;
|
||||
}
|
||||
|
||||
.popconfirmDetails .ant-popover-buttons {
|
||||
display: none !important;
|
||||
}
|
||||
.popconfirmDetailsText .ant-popover-buttons {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.popconfirmDetails .anticon-exclamation-circle {
|
||||
display: none !important;
|
||||
}
|
||||
.popconfirmDetailsText .anticon-exclamation-circle {
|
||||
display: none !important;
|
||||
}
|
||||
</style>
|
||||
@@ -2,14 +2,24 @@
|
||||
<div>
|
||||
<div class="box-content">
|
||||
<div class="box-content-left">
|
||||
<div class="total-text">
|
||||
<span>{{$t('totalTable')+' : '+mainLeftNum}}</span>
|
||||
</div>
|
||||
<div id="main-left"></div>
|
||||
</div>
|
||||
<div class="box-content-right">
|
||||
<div class="total-text">
|
||||
<span>{{$t('totalTable')+' : '+mainRightNum}}</span>
|
||||
</div>
|
||||
<div id="main-right"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-content">
|
||||
<div class="box-content-bottom">
|
||||
<div class="total-text-text" :class="{'total-text-text-cntop':long == 'zh-cn' ? true:false,
|
||||
'total-text-text-entop':long == 'zh-cn' ? false:true}">
|
||||
<span>{{$t('totalTable')+' : '+mainBottomNum}}</span>
|
||||
</div>
|
||||
<div class="box-content-text">
|
||||
<div class="box-content-text-text" @click="boxContentClick(0)">
|
||||
{{$t('whole')}}
|
||||
@@ -50,8 +60,12 @@
|
||||
url: {
|
||||
getProjectDetailsStatistics: '/project/projectLibraryBase/getProjectDetailsStatistics'
|
||||
},
|
||||
certificationProgressMap:{},
|
||||
num:'0',
|
||||
certificationProgressMap: {},
|
||||
num: '0',
|
||||
mainLeftNum: 0,
|
||||
mainRightNum: 0,
|
||||
mainBottomNum: 0,
|
||||
long: localStorage.getItem('language') || 'zh-cn'
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
@@ -92,6 +106,7 @@
|
||||
dataEcharts(dataSource) {
|
||||
let data = []
|
||||
let color = []
|
||||
this.mainLeftNum = 0
|
||||
if (dataSource && dataSource.length > 0) {
|
||||
this.dataSource = [{}]
|
||||
dataSource.forEach(res => {
|
||||
@@ -100,7 +115,7 @@
|
||||
value: res.taskAffirmStatusCount,
|
||||
name: this.$t('notLaunch'),
|
||||
color: '#00B3BE',
|
||||
status:res.taskAffirmStatus
|
||||
status: res.taskAffirmStatus
|
||||
})
|
||||
color.push('#00B3BE')
|
||||
} else if (res.taskAffirmStatus == 'List to confirm') {
|
||||
@@ -108,7 +123,7 @@
|
||||
value: res.taskAffirmStatusCount,
|
||||
name: this.$t('listToConfirm'),
|
||||
color: '#FDA71C',
|
||||
status:res.taskAffirmStatus
|
||||
status: res.taskAffirmStatus
|
||||
})
|
||||
color.push('#FDA71C')
|
||||
} else if (res.taskAffirmStatus == 'Accepted') {
|
||||
@@ -116,7 +131,7 @@
|
||||
value: res.taskAffirmStatusCount,
|
||||
name: this.$t('accept'),
|
||||
color: '#26BC4B',
|
||||
status:res.taskAffirmStatus
|
||||
status: res.taskAffirmStatus
|
||||
})
|
||||
color.push('#26BC4B')
|
||||
} else if (res.taskAffirmStatus == 'Rejected') {
|
||||
@@ -124,17 +139,19 @@
|
||||
value: res.taskAffirmStatusCount,
|
||||
name: this.$t('refuse'),
|
||||
color: '#E83030',
|
||||
status:res.taskAffirmStatus
|
||||
status: res.taskAffirmStatus
|
||||
})
|
||||
color.push('#E83030')
|
||||
}
|
||||
this.mainLeftNum += res.taskAffirmStatusCount
|
||||
})
|
||||
}
|
||||
this.getEcharts('main-left', this.$t('certificationTaskConfirmation'), color, data)
|
||||
},
|
||||
mainRightEcharts(dataSource){
|
||||
mainRightEcharts(dataSource) {
|
||||
let data = []
|
||||
let color = []
|
||||
this.mainRightNum = 0
|
||||
if (dataSource && dataSource.length > 0) {
|
||||
this.dataSource = [{}]
|
||||
dataSource.forEach(res => {
|
||||
@@ -143,7 +160,7 @@
|
||||
value: res.taskAffirmStatusCount,
|
||||
name: this.$t('notLaunch'),
|
||||
color: '#00B3BE',
|
||||
status:res.taskAffirmStatus
|
||||
status: res.taskAffirmStatus
|
||||
})
|
||||
color.push('#00B3BE')
|
||||
} else if (res.taskAffirmStatus == 'List to confirm') {
|
||||
@@ -151,7 +168,7 @@
|
||||
value: res.taskAffirmStatusCount,
|
||||
name: this.$t('listToConfirm'),
|
||||
color: '#FDA71C',
|
||||
status:res.taskAffirmStatus
|
||||
status: res.taskAffirmStatus
|
||||
})
|
||||
color.push('#FDA71C')
|
||||
} else if (res.taskAffirmStatus == 'Review and pass') {
|
||||
@@ -159,7 +176,7 @@
|
||||
value: res.taskAffirmStatusCount,
|
||||
name: this.$t('reviewAndPass'),
|
||||
color: '#26BC4B',
|
||||
status:res.taskAffirmStatus
|
||||
status: res.taskAffirmStatus
|
||||
})
|
||||
color.push('#26BC4B')
|
||||
} else if (res.taskAffirmStatus == 'Review and return') {
|
||||
@@ -167,17 +184,19 @@
|
||||
value: res.taskAffirmStatusCount,
|
||||
name: this.$t('reviewAndReturn'),
|
||||
color: '#E83030',
|
||||
status:res.taskAffirmStatus
|
||||
status: res.taskAffirmStatus
|
||||
})
|
||||
color.push('#E83030')
|
||||
}
|
||||
this.mainRightNum += res.taskAffirmStatusCount
|
||||
})
|
||||
}
|
||||
this.getEcharts('main-right', this.$t('preHomoFlow'), color, data)
|
||||
},
|
||||
mainBottomEcharts(dataSource){
|
||||
mainBottomEcharts(dataSource) {
|
||||
let data = []
|
||||
let color = []
|
||||
this.mainBottomNum = 0
|
||||
if (dataSource && dataSource.length > 0) {
|
||||
dataSource.forEach(res => {
|
||||
if (res.certificationProgress == 'Not start') {
|
||||
@@ -185,7 +204,7 @@
|
||||
value: res.certificationProgressCount,
|
||||
name: this.$t('Notatthe'),
|
||||
color: '#00B3BE',
|
||||
status:res.certificationProgress
|
||||
status: res.certificationProgress
|
||||
})
|
||||
color.push('#00B3BE')
|
||||
} else if (res.certificationProgress == 'In progress') {
|
||||
@@ -193,7 +212,7 @@
|
||||
value: res.certificationProgressCount,
|
||||
name: this.$t('inProgress'),
|
||||
color: '#FDA71C',
|
||||
status:res.certificationProgress
|
||||
status: res.certificationProgress
|
||||
})
|
||||
color.push('#FDA71C')
|
||||
} else if (res.certificationProgress == 'Test passed') {
|
||||
@@ -201,7 +220,7 @@
|
||||
value: res.certificationProgressCount,
|
||||
name: this.$t('experimentPassed'),
|
||||
color: '#26BC4B',
|
||||
status:res.certificationProgress
|
||||
status: res.certificationProgress
|
||||
})
|
||||
color.push('#26BC4B')
|
||||
} else if (res.certificationProgress == 'Test failed') {
|
||||
@@ -209,34 +228,35 @@
|
||||
value: res.certificationProgressCount,
|
||||
name: this.$t('experimentFailed'),
|
||||
color: '#E83030',
|
||||
status:res.certificationProgress
|
||||
status: res.certificationProgress
|
||||
})
|
||||
color.push('#E83030')
|
||||
}else if (res.certificationProgress == 'Component report not submitted') {
|
||||
} else if (res.certificationProgress == 'Component report not submitted') {
|
||||
data.push({
|
||||
value: res.certificationProgressCount,
|
||||
name: this.$t('componentReportNotSubmitted'),
|
||||
color: '#FDA71C',
|
||||
status:res.certificationProgress
|
||||
status: res.certificationProgress
|
||||
})
|
||||
color.push('#FDA71C')
|
||||
}else if (res.certificationProgress == 'Component report submitted') {
|
||||
} else if (res.certificationProgress == 'Component report submitted') {
|
||||
data.push({
|
||||
value: res.certificationProgressCount,
|
||||
name: this.$t('componentReportSubmitted'),
|
||||
color: '#6FD682',
|
||||
status:res.certificationProgress
|
||||
status: res.certificationProgress
|
||||
})
|
||||
color.push('#6FD682')
|
||||
}else if (res.certificationProgress == 'Component report has been stored') {
|
||||
} else if (res.certificationProgress == 'Component report has been stored') {
|
||||
data.push({
|
||||
value: res.certificationProgressCount,
|
||||
name: this.$t('componentReportHasBeenStored'),
|
||||
color: '#26BC4B',
|
||||
status:res.certificationProgress
|
||||
status: res.certificationProgress
|
||||
})
|
||||
color.push('#26BC4B')
|
||||
}
|
||||
this.mainBottomNum += res.certificationProgressCount
|
||||
})
|
||||
}
|
||||
this.getEcharts('main-bottom', this.$t('CertificationProgress'), color, data)
|
||||
@@ -249,14 +269,14 @@
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
textStyle : {
|
||||
fontWeight : 'normal',
|
||||
fontSize : 14,
|
||||
color:'#040B29',
|
||||
fontFamily:'BlueSkyNoto',
|
||||
textStyle: {
|
||||
fontWeight: 'normal',
|
||||
fontSize: 14,
|
||||
color: '#040B29',
|
||||
fontFamily: 'BlueSkyNoto'
|
||||
},
|
||||
formatter: function (parms) {
|
||||
let str = parms.marker+' '+parms.data.name+' '+parms.data.value+' ('+parms.percent+'%)'
|
||||
formatter: function(parms) {
|
||||
let str = parms.marker + ' ' + parms.data.name + ' ' + parms.data.value + ' (' + parms.percent + '%)'
|
||||
return str
|
||||
}
|
||||
},
|
||||
@@ -300,11 +320,11 @@
|
||||
query.operatorType = 'queryPrehomoStatistics'
|
||||
query.status = params.data.status
|
||||
} else if (params.seriesName === this.$t('CertificationProgress')) {
|
||||
if (this.num == '0'){
|
||||
if (this.num == '0') {
|
||||
query.operatorType = 'queryCertificationProgressStatisticsAll'
|
||||
}else if(this.num == '1'){
|
||||
} else if (this.num == '1') {
|
||||
query.operatorType = 'queryCertificationProgressStatisticsCar'
|
||||
}else if(this.num == '2'){
|
||||
} else if (this.num == '2') {
|
||||
query.operatorType = 'queryCertificationProgressStatisticsPart'
|
||||
}
|
||||
query.status = params.data.status
|
||||
@@ -327,12 +347,12 @@
|
||||
boxContentTextText[num].classList.add('box-content-text-color')
|
||||
}
|
||||
this.num = num
|
||||
if (num == 0){
|
||||
this.mainBottomEcharts( this.certificationProgressMap.allMapList || [])
|
||||
}else if(num == 1){
|
||||
this.mainBottomEcharts( this.certificationProgressMap.carMapList || [])
|
||||
}else if(num == 2){
|
||||
this.mainBottomEcharts( this.certificationProgressMap.partMapList || [])
|
||||
if (num == 0) {
|
||||
this.mainBottomEcharts(this.certificationProgressMap.allMapList || [])
|
||||
} else if (num == 1) {
|
||||
this.mainBottomEcharts(this.certificationProgressMap.carMapList || [])
|
||||
} else if (num == 2) {
|
||||
this.mainBottomEcharts(this.certificationProgressMap.partMapList || [])
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -350,6 +370,7 @@
|
||||
.box-content-left {
|
||||
width: calc(50% - 10px);
|
||||
height: 346px;
|
||||
position: relative;
|
||||
border: 2px #eff1f3 solid;
|
||||
border-radius: 6px;
|
||||
margin-top: 4px;
|
||||
@@ -365,6 +386,7 @@
|
||||
.box-content-right {
|
||||
width: calc(50% - 10px);
|
||||
height: 346px;
|
||||
position: relative;
|
||||
border: 2px #eff1f3 solid;
|
||||
border-radius: 6px;
|
||||
margin-top: 4px;
|
||||
@@ -384,6 +406,7 @@
|
||||
position: relative;
|
||||
border-radius: 6px;
|
||||
margin-top: 20px;
|
||||
overflow: hidden;
|
||||
|
||||
.box-content-text {
|
||||
height: 30px;
|
||||
@@ -429,4 +452,27 @@
|
||||
}
|
||||
}
|
||||
|
||||
.total-text {
|
||||
position: absolute;
|
||||
right: 28px;
|
||||
top: 19px;
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.total-text-text {
|
||||
position: absolute;
|
||||
right: 28px;
|
||||
top: 21px;
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.total-text-text-cntop {
|
||||
right: 180px;
|
||||
}
|
||||
|
||||
.total-text-text-entop {
|
||||
right: 290px;
|
||||
}
|
||||
</style>
|
||||
@@ -43,17 +43,39 @@
|
||||
</a-select>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :md="6" :sm="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('standardNo')">
|
||||
<span>{{ $t('standardNo') }}</span>
|
||||
</div>
|
||||
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('standardNo')"
|
||||
v-model="queryParam.serialNumber"></j-input>
|
||||
</div>
|
||||
</a-col>
|
||||
<template v-if="toggleSearchStatus">
|
||||
|
||||
<a-col :md="6" :sm="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('standardNo')">
|
||||
<span>{{ $t('standardNo') }}</span>
|
||||
</div>
|
||||
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('standardNo')"
|
||||
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('statisticalNodes')">
|
||||
<span>{{ $t('statisticalNodes') }}</span>
|
||||
</div>
|
||||
<a-select :placeholder="$t('PleaseSelect')+$t('statisticalNodes')"
|
||||
allowClear
|
||||
class="box-input"
|
||||
show-search
|
||||
optionFilterProp="label"
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
v-model="queryParam.firstLevelDutyTerritory">
|
||||
<a-select-option v-for="(item, key) in firstLevelDutyTerritoryList"
|
||||
:key="key"
|
||||
:label="item.key"
|
||||
:value="item.key">
|
||||
<span style="display: inline-block;width: 100%" :title=" item.key ">
|
||||
{{ item.key }}
|
||||
</span>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
</a-col>
|
||||
</template>
|
||||
<span style="float: right;overflow: hidden;margin-right: 11px; " class="table-page-search-submitButtons">
|
||||
<a-col :md="6" :sm="24">
|
||||
@@ -62,10 +84,10 @@
|
||||
<globalAdvancedQuery ref="globalAdvancedQueryRef"
|
||||
@handleSuperQuery="handleSuperQuery"
|
||||
:fieldList="fieldList"/>
|
||||
<!-- <a @click="handleToggleSearch" style="margin-left: 8px">-->
|
||||
<!-- {{ !toggleSearchStatus ? $t('open') : $t('away') }}-->
|
||||
<!-- <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>-->
|
||||
<!-- </a>-->
|
||||
<a @click="handleToggleSearch" style="margin-left: 8px">
|
||||
{{ !toggleSearchStatus ? $t('open') : $t('away') }}
|
||||
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
|
||||
</a>
|
||||
</a-col>
|
||||
</span>
|
||||
</a-row>
|
||||
@@ -537,7 +559,7 @@
|
||||
|
||||
export default {
|
||||
name: 'index',
|
||||
props: ['isDisplayNum'],
|
||||
props: ['isDisplayNum','areaOfResponsibility'],
|
||||
mixins: [ResizeColumnProvide, ResizeHeader],
|
||||
components: {
|
||||
globalAdvancedQuery,
|
||||
@@ -827,16 +849,19 @@
|
||||
toDoIds: [],
|
||||
toDoNotConditions: [],
|
||||
userInfoQuery: {},
|
||||
DeliverableTreeList: []
|
||||
DeliverableTreeList: [],
|
||||
firstLevelDutyTerritoryList:[],
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
// this.getList()
|
||||
this.getFirstLevelDutyTerritory()
|
||||
this.long = localStorage.getItem('language') || 'zh-cn'
|
||||
this.loading = true
|
||||
this.userInfoQuery = this.userInfo()
|
||||
if (this.areaOfResponsibility && this.areaOfResponsibility.dutyTerritory) {
|
||||
this.queryParam.dutyTerritory = this.areaOfResponsibility.dutyTerritory
|
||||
console.log(this.areaOfResponsibility)
|
||||
if (this.areaOfResponsibility && this.areaOfResponsibility.dutyTerritoryName) {
|
||||
this.queryParam.firstLevelDutyTerritory = this.areaOfResponsibility.dutyTerritoryName
|
||||
this.queryParam = { ...this.queryParam }
|
||||
}
|
||||
this.getProcessStatus()
|
||||
@@ -884,6 +909,15 @@
|
||||
},
|
||||
methods: {
|
||||
...mapGetters(['userInfo']),
|
||||
getFirstLevelDutyTerritory() {
|
||||
getAction('/sys/dictItem/getFirstLevelDutyTerritory', {}).then((res) => {
|
||||
if (res.success) {
|
||||
this.firstLevelDutyTerritoryList = res.result
|
||||
} else {
|
||||
this.firstLevelDutyTerritoryList = []
|
||||
}
|
||||
})
|
||||
},
|
||||
addConfigurationClick() {
|
||||
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
|
||||
this.$refs.addConfigurationRef.getData(JSON.parse(JSON.stringify(this.selectedRowKeys)))
|
||||
@@ -1045,9 +1079,9 @@
|
||||
}
|
||||
this.dataSource = res.result.records || []
|
||||
this.dataSource.forEach(value => {
|
||||
if (value.flowStatusName =='清单待校核'){
|
||||
if (value.flowStatusName == '清单待校核') {
|
||||
value.flowStatusName = '任务待发起'
|
||||
}else if(value.flowStatusName =='List to be checked'){
|
||||
} else if (value.flowStatusName == 'List to be checked') {
|
||||
value.flowStatusName = 'The task is to be initiated'
|
||||
}
|
||||
})
|
||||
@@ -2365,6 +2399,7 @@
|
||||
.page {
|
||||
text-align: right;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.operator-text-left {
|
||||
@@ -2561,10 +2596,12 @@
|
||||
background: #dbf6e2;
|
||||
color: #26BD4B;
|
||||
}
|
||||
.componentColor{
|
||||
|
||||
.componentColor {
|
||||
background: #EDFCEF;
|
||||
color: #6FD682;
|
||||
}
|
||||
|
||||
.nonConformityColor {
|
||||
background: #f3dddd;
|
||||
color: #E83030;
|
||||
|
||||
@@ -8,11 +8,12 @@
|
||||
<div class="process-content-content" :style="val.left"
|
||||
v-for="(val,indexOne) in timeData" :key="indexOne" v-if="val.g">
|
||||
<div class="process-content-right-top" :title="val.name">{{ val.name }}</div>
|
||||
<div class="process-content-right-button" :title="val.time.slice(0, 11)">{{ val.time.slice(0, 11) }}</div>
|
||||
<!-- <div class="process-content-right-button" v-if="indexOne % 2 == 1" :title="val.name">{{ val.name }}-->
|
||||
<!-- </div>-->
|
||||
<a-tooltip placement="topLeft" overlayClassName="tooltipColor">
|
||||
<template slot="title">
|
||||
<span>{{ val.time.slice(0, 11) }}</span>
|
||||
<span>{{ val.name }}</span>
|
||||
</template>
|
||||
<img v-if="val.status == 1" src="../../../assets/heiTop.png" class="process-content-left"
|
||||
alt="">
|
||||
@@ -27,12 +28,12 @@
|
||||
</div>
|
||||
<div class="process-content-contentOne" :style="val.left"
|
||||
v-for="(val,indexTwo) in timeData" v-if="!val.g">
|
||||
<!-- <div class="process-content-right-top" v-if="indexOne % 2 == 0" :title="val.name">{{ val.name }}</div>-->
|
||||
<div class="process-content-right-top" :title="val.time.slice(0, 11)">{{ val.time.slice(0, 11) }}</div>
|
||||
<div class="process-content-right-button" :title="val.name">{{ val.name }}
|
||||
</div>
|
||||
<a-tooltip placement="topLeft" overlayClassName="tooltipColor">
|
||||
<template slot="title">
|
||||
<span>{{ val.time.slice(0, 11) }}</span>
|
||||
<span>{{ val.name }}</span>
|
||||
</template>
|
||||
<img v-if="val.status == 1" src="../../../assets/huiBottom.png" class="process-content-left"
|
||||
alt="">
|
||||
@@ -192,10 +193,10 @@
|
||||
width: 83px;
|
||||
font-size: 12px;
|
||||
font-weight: 400;
|
||||
color: #6F7385;
|
||||
color: #9C9FAC;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 36px;
|
||||
top: -36px;
|
||||
transform: translate(-50%, -50%);
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
@@ -229,13 +230,13 @@
|
||||
|
||||
.process-content-right-top {
|
||||
font-size: 12px;
|
||||
color: #040B29;
|
||||
width: 83px;
|
||||
background: #fff;
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
top: -12px;
|
||||
color: #9C9FAC;
|
||||
top: 57px;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -50%);
|
||||
overflow: hidden;
|
||||
@@ -253,10 +254,12 @@
|
||||
width: 83px;
|
||||
font-size: 12px;
|
||||
font-weight: 400;
|
||||
color: #6F7385;
|
||||
color: #040B29;
|
||||
background: #fff;
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
top: 36px;
|
||||
line-height: 11px;
|
||||
transform: translate(-50%, -50%);
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
|
||||
@@ -68,6 +68,31 @@
|
||||
</a-input-group>
|
||||
</div>
|
||||
</a-col>
|
||||
<template v-if="toggleSearchStatus">
|
||||
<a-col :md="6" :sm="8">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('statisticalNodes')">
|
||||
<span>{{ $t('statisticalNodes') }}</span>
|
||||
</div>
|
||||
<a-select :placeholder="$t('PleaseSelect')+$t('statisticalNodes')"
|
||||
allowClear
|
||||
show-search
|
||||
class="box-input"
|
||||
optionFilterProp="label"
|
||||
:getPopupContainer="triggerNode=> triggerNode.parentNode"
|
||||
v-model="queryParam.firstLevelDutyTerritory">
|
||||
<a-select-option v-for="(item, key) in firstLevelDutyTerritoryList"
|
||||
:key="key"
|
||||
:label="item.key"
|
||||
:value="item.key">
|
||||
<span style="display: inline-block;width: 100%" :title=" item.key ">
|
||||
{{ item.key }}
|
||||
</span>
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</div>
|
||||
</a-col>
|
||||
</template>
|
||||
<!-- <template v-if="toggleSearchStatus">-->
|
||||
<!-- <a-col :md="6" :sm="8">-->
|
||||
<!-- <div class="box-title-text">-->
|
||||
@@ -97,10 +122,10 @@
|
||||
<globalAdvancedQuery ref="globalAdvancedQueryRef"
|
||||
@handleSuperQuery="handleSuperQuery"
|
||||
:fieldList="fieldList"/>
|
||||
<!-- <a @click="handleToggleSearch" style="margin-left: 8px">-->
|
||||
<!-- {{ !toggleSearchStatus ? $t('open') : $t('away') }}-->
|
||||
<!-- <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>-->
|
||||
<!-- </a>-->
|
||||
<a @click="handleToggleSearch" style="margin-left: 8px">
|
||||
{{ !toggleSearchStatus ? $t('open') : $t('away') }}
|
||||
<a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
|
||||
</a>
|
||||
</a-col>
|
||||
</span>
|
||||
</a-row>
|
||||
@@ -143,10 +168,10 @@
|
||||
{{ $t('copy') }}
|
||||
</div>
|
||||
<!-- 列表设置-->
|
||||
<!-- v-if="this.roleSwitchingCode == '0' || this.roleSwitchingCode == '1' || this.roleSwitchingCode == '13'"-->
|
||||
<!-- v-if="this.roleSwitchingCode == '0' || this.roleSwitchingCode == '1' || this.roleSwitchingCode == '13'"-->
|
||||
<a-popconfirm :visible="customizevisible" overlayClassName="popconfirmmize"
|
||||
placement="bottomRight"
|
||||
>
|
||||
>
|
||||
<template slot="title" id="popconfirmmize">
|
||||
<div style="max-height:360px;overflow:scroll;overflow-x: auto;">
|
||||
<a-checkbox
|
||||
@@ -388,22 +413,22 @@
|
||||
:title="text">{{text}}</a>
|
||||
</span>
|
||||
</a-table>
|
||||
<!-- <div class="page" v-if="dataSource.length > 0">-->
|
||||
<!-- <a-pagination-->
|
||||
<!-- :show-total="total => $t('total')+` ${total} `+$t('strip')"-->
|
||||
<!-- show-quick-jumper-->
|
||||
<!-- show-size-changer-->
|
||||
<!-- :page-size.sync="pageSize"-->
|
||||
<!-- :total="total"-->
|
||||
<!-- :pageSizeOptions="['50','100','200','300']"-->
|
||||
<!-- :current="pageNo"-->
|
||||
<!-- @change="onChangeSize"-->
|
||||
<!-- @showSizeChange="SizeChange"-->
|
||||
<!-- />-->
|
||||
<!-- </div>-->
|
||||
<div class="buttom-box" v-if="dataSource && dataSource.length > 0">
|
||||
{{ $t('total') + ' ' + this.dataSource.length + ' ' + $t('strip') }}
|
||||
<div class="page" v-if="dataSource.length > 0">
|
||||
<a-pagination
|
||||
:show-total="total => $t('total')+` ${total} `+$t('strip')"
|
||||
show-quick-jumper
|
||||
show-size-changer
|
||||
:page-size.sync="pageSize"
|
||||
:total="total"
|
||||
:pageSizeOptions="['50','100','200','300']"
|
||||
:current="pageNo"
|
||||
@change="onChangeSize"
|
||||
@showSizeChange="SizeChange"
|
||||
/>
|
||||
</div>
|
||||
<!-- <div class="buttom-box" v-if="dataSource && dataSource.length > 0">-->
|
||||
<!-- {{ $t('total') + ' ' + this.dataSource.length + ' ' + $t('strip') }}-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
<listAddModel :url="url" @addModelList="addModelList" ref="addModelRef"/>
|
||||
<listEditModel :url="url" @editModelList="addModelList" ref="editModelRef"/>
|
||||
@@ -685,6 +710,7 @@
|
||||
confirmLoadingQuestion: false,
|
||||
isDesignCompliance: false,
|
||||
isVerifyingCompliance: false,
|
||||
firstLevelDutyTerritoryList: [],
|
||||
pageNo: 1,
|
||||
pageSize: 50,
|
||||
total: 0,
|
||||
@@ -748,14 +774,16 @@
|
||||
align: 'left',
|
||||
ellipsis: true,
|
||||
dataIndex: 'attestationType_dictText',
|
||||
width: 180
|
||||
width: 180,
|
||||
sorter: true
|
||||
},
|
||||
{
|
||||
title: this.$t('certificationLevel'),
|
||||
align: 'left',
|
||||
ellipsis: true,
|
||||
dataIndex: 'attestationRank_dictText',
|
||||
width: 180
|
||||
width: 180,
|
||||
sorter: true
|
||||
},
|
||||
{
|
||||
title: this.$t('areaOfResponsibility'),
|
||||
@@ -1176,7 +1204,7 @@
|
||||
url: {
|
||||
addModelList: '/project/projectLawsInventoryEO/queryPageDummy',
|
||||
queryConditionInventory: '/project/projectLawsInventoryEO/queryConditionInventory',
|
||||
list: '/project/projectLawsInventoryEO/list',
|
||||
list: '/project/projectLawsInventoryEO/page',
|
||||
addModel: 'project/projectLawsInventoryEO/add',
|
||||
editModel: '/project/projectLawsInventoryEO/edit',
|
||||
deleteBatch: '/project/projectLawsInventoryEO/deleteBatch',
|
||||
@@ -1248,7 +1276,7 @@
|
||||
value: 'attestationRank',
|
||||
text: this.$t('certificationLevel'),
|
||||
dictCode: 'attestation_rank'//只要 dictCode 有值,无论 type 是什么,都显示为字典下拉框
|
||||
},
|
||||
}
|
||||
// {
|
||||
// type: 'deliverables',
|
||||
// value: 'designDeliverableType',
|
||||
@@ -1431,6 +1459,11 @@
|
||||
},
|
||||
|
||||
mounted() {
|
||||
this.getFirstLevelDutyTerritory()
|
||||
if (this.areaOfResponsibilityList && this.areaOfResponsibilityList.dutyTerritoryName) {
|
||||
this.queryParam.firstLevelDutyTerritory = this.areaOfResponsibilityList.dutyTerritoryName
|
||||
this.queryParam = { ...this.queryParam }
|
||||
}
|
||||
this.JLoading = true
|
||||
this.getHeader()
|
||||
this.queryLawEngineerByProjectId()
|
||||
@@ -1440,10 +1473,6 @@
|
||||
this.getRoleByUserId(() => {
|
||||
this.getAndUserId()
|
||||
})
|
||||
if (this.areaOfResponsibilityList && this.areaOfResponsibilityList.dutyTerritory) {
|
||||
this.queryParam.dutyTerritory = this.areaOfResponsibilityList.dutyTerritory
|
||||
this.queryParam = { ...this.queryParam }
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
columnsFile() {
|
||||
@@ -1481,6 +1510,15 @@
|
||||
},
|
||||
methods: {
|
||||
...mapGetters(['userInfo']),
|
||||
getFirstLevelDutyTerritory() {
|
||||
getAction('/sys/dictItem/getFirstLevelDutyTerritory', {}).then((res) => {
|
||||
if (res.success) {
|
||||
this.firstLevelDutyTerritoryList = res.result
|
||||
} else {
|
||||
this.firstLevelDutyTerritoryList = []
|
||||
}
|
||||
})
|
||||
},
|
||||
modifyOperatorClick(name) {
|
||||
if (this.selectedRowKeys.length == 0) {
|
||||
this.$message.warning(this.$t('selectLeastOne'))
|
||||
@@ -1520,7 +1558,7 @@
|
||||
}
|
||||
},
|
||||
modifyOperatorForm() {
|
||||
this
|
||||
this.pageNo = 1
|
||||
this.getList()
|
||||
},
|
||||
//收起/展开
|
||||
@@ -1639,12 +1677,10 @@
|
||||
if (name == this.$t('designComplianceProcess')) {
|
||||
if (row.designFlowStatus == 'Task to be confirmed' || row.designFlowStatus == 'Duty Person Rejected') {
|
||||
TaskKey = 'zrrqr'
|
||||
} else if (row.designFlowStatus == 'Results to be submitted') {
|
||||
} else if (row.designFlowStatus == 'Results to be submitted' || row.designFlowStatus == 'Non-Compliance' || row.designFlowStatus == 'To be tracked') {
|
||||
TaskKey = 'zrrtjjfw'
|
||||
} else if (row.designFlowStatus == 'Results to be reviewed' ||
|
||||
row.designFlowStatus == 'Compliance' ||
|
||||
row.designFlowStatus == 'Non-Compliance' ||
|
||||
row.designFlowStatus == 'To be tracked' ||
|
||||
row.designFlowStatus == 'NA') {
|
||||
TaskKey = 'fggcssh'
|
||||
}
|
||||
@@ -1669,12 +1705,10 @@
|
||||
} else {
|
||||
if (row.verifyFlowStatus == 'Task to be confirmed' || row.verifyFlowStatus == 'Duty Person Rejected') {
|
||||
TaskKey = 'zrrqr'
|
||||
} else if (row.verifyFlowStatus == 'Results to be submitted') {
|
||||
} else if (row.verifyFlowStatus == 'Results to be submitted' || row.verifyFlowStatus == 'Non-Compliance' || row.verifyFlowStatus == 'To be tracked') {
|
||||
TaskKey = 'zrrtjjfw'
|
||||
} else if (row.verifyFlowStatus == 'Results to be reviewed' ||
|
||||
row.verifyFlowStatus == 'Compliance' ||
|
||||
row.verifyFlowStatus == 'Non-Compliance' ||
|
||||
row.verifyFlowStatus == 'To be tracked' ||
|
||||
row.verifyFlowStatus == 'NA') {
|
||||
TaskKey = 'fggcssh'
|
||||
}
|
||||
@@ -1798,7 +1832,7 @@
|
||||
content: _this.$t('ConfirmReplication'),
|
||||
onOk() {
|
||||
let idList = JSON.parse(JSON.stringify(_this.selectedRowKeys))
|
||||
getAction(_this.url.copyUrl, { ids: idList.join(','),operateType:operateType }).then((res) => {
|
||||
getAction(_this.url.copyUrl, { ids: idList.join(','), operateType: operateType }).then((res) => {
|
||||
if (res.success) {
|
||||
_this.$message.success(_this.$t('OperationSuccessful'))
|
||||
_this.selectedRowKeys = []
|
||||
@@ -2156,6 +2190,7 @@
|
||||
if (res.success) {
|
||||
_this.$message.success(_this.$t('OperationSuccessful'))
|
||||
_this.selectedRowKeys = []
|
||||
_this.pageNo = 1
|
||||
_this.getList()
|
||||
} else {
|
||||
_this.$message.warning(_this.$t('operationFailed'))
|
||||
@@ -2188,6 +2223,7 @@
|
||||
// this.confirmLoadingRoleSwitching = false
|
||||
this.$emit('getRoleSwitch', roleSwitchingCode)
|
||||
this.selectedRowKeys = []
|
||||
this.pageNo = 1
|
||||
this.getList()
|
||||
} else {
|
||||
this.confirmLoadingRoleSwitching = false
|
||||
@@ -2306,6 +2342,7 @@
|
||||
//搜索
|
||||
searchQuery() {
|
||||
this.selectedRowKeys = []
|
||||
this.pageNo = 1
|
||||
this.getList()
|
||||
},
|
||||
//重置
|
||||
@@ -2319,6 +2356,7 @@
|
||||
|
||||
addModelList() {
|
||||
this.selectedRowKeys = []
|
||||
this.pageNo = 1
|
||||
this.getList()
|
||||
},
|
||||
customizeListForm(val) {
|
||||
@@ -2329,6 +2367,7 @@
|
||||
},
|
||||
transferListFormHomo() {
|
||||
this.$refs.transferListRef.handleCancel()
|
||||
this.pageNo = 1
|
||||
this.getList()
|
||||
},
|
||||
handleSuperQuery(params, matchType) {
|
||||
@@ -2342,6 +2381,7 @@
|
||||
sqp['superQueryMatchType'] = matchType
|
||||
}
|
||||
this.queryParamQuery = sqp
|
||||
this.pageNo = 1
|
||||
this.getList()
|
||||
},
|
||||
|
||||
@@ -2359,24 +2399,28 @@
|
||||
this.orderByField = 'designDutyId'
|
||||
} else if (sorter.columnKey == 'verifyDutyIdName') {
|
||||
this.orderByField = 'verifyDutyId'
|
||||
} else if (sorter.columnKey == 'verifyFlowStatusName') {
|
||||
} else if (sorter.columnKey == 'verifyFlowStatusName') {
|
||||
this.orderByField = 'verifyFlowStatus'
|
||||
} else if (sorter.columnKey == 'designFlowStatusName') {
|
||||
} else if (sorter.columnKey == 'designFlowStatusName') {
|
||||
this.orderByField = 'designFlowStatus'
|
||||
} else if (sorter.columnKey == 'attestationType_dictText') {
|
||||
this.orderByField = 'attestationType'
|
||||
} else if (sorter.columnKey == 'attestationRank_dictText') {
|
||||
this.orderByField = 'attestationRank'
|
||||
} else {
|
||||
this.orderByField = sorter.columnKey
|
||||
}
|
||||
this.getList()
|
||||
},
|
||||
// onChangeSize(page, pageSize) {
|
||||
// this.pageNo = page
|
||||
// this.getList()
|
||||
// },
|
||||
// SizeChange(page, pageSize) {
|
||||
// this.pageNo = 1
|
||||
// this.pageSize = pageSize
|
||||
// this.getList()
|
||||
// },
|
||||
onChangeSize(page, pageSize) {
|
||||
this.pageNo = page
|
||||
this.getList()
|
||||
},
|
||||
SizeChange(page, pageSize) {
|
||||
this.pageNo = 1
|
||||
this.pageSize = pageSize
|
||||
this.getList()
|
||||
},
|
||||
getList() {
|
||||
let roleCode = this.roleSwitchingCode
|
||||
let queryParam = JSON.parse(JSON.stringify(this.queryParam))
|
||||
@@ -2395,20 +2439,20 @@
|
||||
projectLibraryId: this.$route.query.id,
|
||||
orderBy: this.orderBy,
|
||||
orderByField: this.orderByField,
|
||||
roleCode: roleCode
|
||||
// pageNo: this.pageNo,
|
||||
// pageSize: this.pageSize
|
||||
roleCode: roleCode,
|
||||
pageNo: this.pageNo,
|
||||
pageSize: this.pageSize
|
||||
}
|
||||
this.loading = true
|
||||
getAction(this.url.list, query).then((res) => {
|
||||
if (res.success) {
|
||||
// if (res.result.current > 1 && res.result.records.length == 0) {
|
||||
// this.pageNo = 1
|
||||
// this.getList()
|
||||
// return
|
||||
// }
|
||||
this.dataSource = res.result || []
|
||||
// this.total = res.result.total
|
||||
if (res.result.current > 1 && res.result.records.length == 0) {
|
||||
this.pageNo = 1
|
||||
this.getList()
|
||||
return
|
||||
}
|
||||
this.dataSource = res.result.records || []
|
||||
this.total = res.result.total
|
||||
this.loading = false
|
||||
this.JLoading = false
|
||||
if (this.dataSource.length == 0) {
|
||||
@@ -2814,12 +2858,16 @@
|
||||
}
|
||||
if (dataList[i].designFlowStatus == 'List to be checked' || dataList[i].designFlowStatus == 'Duty Person Rejected') {
|
||||
if (dataList[i].designDeliverableType && dataList[i].designDutyId && dataList[i].designDueDate) {
|
||||
this.requestsNum++
|
||||
this.startProcessList.push({
|
||||
dataList: dataList[i],
|
||||
type: 2,
|
||||
requestsNum: this.requestsNum
|
||||
})
|
||||
if (dataList[i].designDeliverableType == '1645667531513237506'){
|
||||
|
||||
}else{
|
||||
this.requestsNum++
|
||||
this.startProcessList.push({
|
||||
dataList: dataList[i],
|
||||
type: 2,
|
||||
requestsNum: this.requestsNum
|
||||
})
|
||||
}
|
||||
// _this.startProcess(dataList[i], 2, this.requestsNum)
|
||||
}
|
||||
} else {
|
||||
@@ -2828,12 +2876,16 @@
|
||||
}
|
||||
if (dataList[i].verifyFlowStatus == 'List to be checked' || dataList[i].verifyFlowStatus == 'Duty Person Rejected') {
|
||||
if (dataList[i].verifyDeliverableType && dataList[i].verifyDutyId && dataList[i].verifyDueDate) {
|
||||
this.requestsNum++
|
||||
this.startProcessList.push({
|
||||
dataList: dataList[i],
|
||||
type: 4,
|
||||
requestsNum: this.requestsNum
|
||||
})
|
||||
if (dataList[i].verifyDeliverableType == '1645667531513237506'){
|
||||
|
||||
}else{
|
||||
this.requestsNum++
|
||||
this.startProcessList.push({
|
||||
dataList: dataList[i],
|
||||
type: 4,
|
||||
requestsNum: this.requestsNum
|
||||
})
|
||||
}
|
||||
// _this.startProcess(dataList[i], 4, this.requestsNum)
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -296,12 +296,10 @@
|
||||
if (row.flowType == '2') {
|
||||
if (row.flowStatus == 'Task to be confirmed' || row.flowStatus == 'Duty Person Rejected') {
|
||||
TaskKey = 'zrrqr'
|
||||
} else if (row.flowStatus == 'Results to be submitted') {
|
||||
} else if (row.flowStatus == 'Results to be submitted' || row.flowStatus == 'Non-Compliance' ||row.flowStatus == 'To be tracked') {
|
||||
TaskKey = 'zrrtjjfw'
|
||||
} else if (row.flowStatus == 'Results to be reviewed' ||
|
||||
row.flowStatus == 'Compliance' ||
|
||||
row.flowStatus == 'Non-Compliance' ||
|
||||
row.flowStatus == 'To be tracked' ||
|
||||
row.flowStatus == 'NA') {
|
||||
TaskKey = 'fggcssh'
|
||||
}
|
||||
@@ -322,12 +320,10 @@
|
||||
} else if(row.flowType == '4'){
|
||||
if (row.flowStatus == 'Task to be confirmed' || row.flowStatus == 'Duty Person Rejected') {
|
||||
TaskKey = 'zrrqr'
|
||||
} else if (row.flowStatus == 'Results to be submitted') {
|
||||
} else if (row.flowStatus == 'Results to be submitted' || row.flowStatus == 'Non-Compliance' ||row.flowStatus == 'To be tracked') {
|
||||
TaskKey = 'zrrtjjfw'
|
||||
} else if (row.flowStatus == 'Results to be reviewed' ||
|
||||
row.flowStatus == 'Compliance' ||
|
||||
row.flowStatus == 'Non-Compliance' ||
|
||||
row.flowStatus == 'To be tracked' ||
|
||||
row.flowStatus == 'NA') {
|
||||
TaskKey = 'fggcssh'
|
||||
}
|
||||
|
||||
@@ -111,12 +111,11 @@
|
||||
this.syncReport = res.result.syncReport ? res.result.syncReport : []
|
||||
this.dutyTerritory = res.result.dutyTerritory ? res.result.dutyTerritory : []
|
||||
this.getEcharts()
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
getoptions() {
|
||||
let id = ''
|
||||
if (this.idList && this.idList.length > 0) {
|
||||
@@ -134,6 +133,7 @@
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
getonChange(value) {
|
||||
this.collectingpercentage = []
|
||||
this.collectingquantity = []
|
||||
@@ -145,6 +145,7 @@
|
||||
this.syncReportquantity = []
|
||||
this.getData(value)
|
||||
},
|
||||
|
||||
onChange(value) {
|
||||
this.collectingpercentage = []
|
||||
this.collectingquantity = []
|
||||
@@ -155,8 +156,8 @@
|
||||
this.syncReportpercentage = []
|
||||
this.syncReportquantity = []
|
||||
this.getEcharts()
|
||||
|
||||
},
|
||||
|
||||
getEcharts(chart, title, color, data, num) {
|
||||
this.collecting.forEach((item, index) => {
|
||||
this.collectingpercentage.push(item.percentage)
|
||||
@@ -342,6 +343,7 @@
|
||||
option && myChart.setOption(option, true)
|
||||
|
||||
},
|
||||
|
||||
mainLeftEcharts(data, color) {
|
||||
this.getEcharts('main-left', this.$t('Parametercollection'), color, data, 1)
|
||||
},
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
this.$emit('projectStatusForm',this.activeKey)
|
||||
},
|
||||
currentStatus(item) {
|
||||
this.$emit('TaskListChange', item)
|
||||
this.$emit('currentStatus', item)
|
||||
},
|
||||
versionStatisticsClick() {
|
||||
this.$refs.versionStatisticsRef.addModel(JSON.parse(JSON.stringify(this.selectedRowKeys)))
|
||||
|
||||
@@ -1,15 +1,22 @@
|
||||
<template>
|
||||
<div class="box-content">
|
||||
<div class="box-content-top">
|
||||
<div class="total-text">
|
||||
<span>{{$t('totalTable')+' : '+mainTopNum}}</span>
|
||||
</div>
|
||||
<div id="main-top"></div>
|
||||
</div>
|
||||
<div class="box-content-left">
|
||||
<div class="total-text">
|
||||
<span>{{$t('totalTable')+' : '+mainLeftNum}}</span>
|
||||
</div>
|
||||
<div id="main-left"></div>
|
||||
</div>
|
||||
<div class="box-content-right">
|
||||
<div id="main-right">
|
||||
|
||||
<div class="total-text">
|
||||
<span>{{$t('totalTable')+' : '+mainRightNum}}</span>
|
||||
</div>
|
||||
<div id="main-right"> </div>
|
||||
</div>
|
||||
<responsibilityList @responsibility="responsibility" ref="responsibilityListRef"/>
|
||||
</div>
|
||||
@@ -39,6 +46,9 @@
|
||||
url: {
|
||||
getProjectDetailsStatistics: '/project/projectLibraryBase/getProjectDetailsStatistics'
|
||||
},
|
||||
mainTopNum: 0,
|
||||
mainLeftNum: 0,
|
||||
mainRightNum: 0,
|
||||
columns: [
|
||||
{
|
||||
title: this.$t('red'),
|
||||
@@ -99,14 +109,14 @@
|
||||
},
|
||||
tooltip: {
|
||||
trigger: 'item',
|
||||
textStyle : {
|
||||
fontWeight : 'normal',
|
||||
fontSize : 14,
|
||||
color:'#040B29',
|
||||
fontFamily:'BlueSkyNoto',
|
||||
textStyle: {
|
||||
fontWeight: 'normal',
|
||||
fontSize: 14,
|
||||
color: '#040B29',
|
||||
fontFamily: 'BlueSkyNoto'
|
||||
},
|
||||
formatter: function (parms) {
|
||||
let str = parms.marker+' '+parms.data.name+' '+parms.data.value+' ('+parms.percent+'%)'
|
||||
formatter: function(parms) {
|
||||
let str = parms.marker + ' ' + parms.data.name + ' ' + parms.data.value + ' (' + parms.percent + '%)'
|
||||
return str
|
||||
}
|
||||
},
|
||||
@@ -138,26 +148,26 @@
|
||||
})
|
||||
myChart.on('click', (params) => {
|
||||
let query = {}
|
||||
if (params.seriesName == this.$t('regulatoryTaskConfirmation')){
|
||||
if (params.seriesName == this.$t('regulatoryTaskConfirmation')) {
|
||||
query = {
|
||||
title: params.seriesName,
|
||||
projectLibraryId: this.$route.query.id,
|
||||
operatorType: 'queryFGTaskToConfirmStatistics',
|
||||
status:params.data.status
|
||||
status: params.data.status
|
||||
}
|
||||
}else if(params.seriesName == this.$t('designCompliance')){
|
||||
} else if (params.seriesName == this.$t('designCompliance')) {
|
||||
query = {
|
||||
title: params.seriesName,
|
||||
projectLibraryId: this.$route.query.id,
|
||||
operatorType: 'queryDesignStatistics',
|
||||
status:params.data.status
|
||||
status: params.data.status
|
||||
}
|
||||
}else if(params.seriesName == this.$t('verifyCompliance')){
|
||||
} else if (params.seriesName == this.$t('verifyCompliance')) {
|
||||
query = {
|
||||
title: params.seriesName,
|
||||
projectLibraryId: this.$route.query.id,
|
||||
operatorType: 'queryVerifyStatistics',
|
||||
status:params.data.status
|
||||
status: params.data.status
|
||||
}
|
||||
}
|
||||
this.$refs.responsibilityListRef.getData(query)
|
||||
@@ -167,6 +177,7 @@
|
||||
mainTopEcharts(dataSource) {
|
||||
let data = []
|
||||
let color = []
|
||||
this.mainTopNum = 0
|
||||
if (dataSource && dataSource.length > 0) {
|
||||
this.dataSource = [{}]
|
||||
dataSource.forEach(res => {
|
||||
@@ -203,14 +214,16 @@
|
||||
})
|
||||
color.push('#E83030')
|
||||
}
|
||||
this.mainTopNum += res.taskAffirmStatusCount
|
||||
})
|
||||
}
|
||||
this.getEcharts('main-top', this.$t('regulatoryTaskConfirmation'), color, data)
|
||||
},
|
||||
|
||||
mainLeftEcharts(dataSource){
|
||||
mainLeftEcharts(dataSource) {
|
||||
let data = []
|
||||
let color = []
|
||||
this.mainLeftNum = 0
|
||||
if (dataSource && dataSource.length > 0) {
|
||||
this.dataSource = [{}]
|
||||
dataSource.forEach(res => {
|
||||
@@ -219,7 +232,7 @@
|
||||
value: res.designFlowTaskStatusCount,
|
||||
name: this.$t('notLaunch'),
|
||||
color: '#00B3BE',
|
||||
status:res.designFlowTaskStatus
|
||||
status: res.designFlowTaskStatus
|
||||
})
|
||||
color.push('#00B3BE')
|
||||
} else if (res.designFlowTaskStatus == 'List to confirm') {
|
||||
@@ -227,7 +240,7 @@
|
||||
value: res.designFlowTaskStatusCount,
|
||||
name: this.$t('listToConfirm'),
|
||||
color: '#FDA71C',
|
||||
status:res.designFlowTaskStatus
|
||||
status: res.designFlowTaskStatus
|
||||
})
|
||||
color.push('#FDA71C')
|
||||
} else if (res.designFlowTaskStatus == 'Compliance') {
|
||||
@@ -235,7 +248,7 @@
|
||||
value: res.designFlowTaskStatusCount,
|
||||
name: this.$t('compliance'),
|
||||
color: '#26BC4B',
|
||||
status:res.designFlowTaskStatus
|
||||
status: res.designFlowTaskStatus
|
||||
})
|
||||
color.push('#26BC4B')
|
||||
} else if (res.designFlowTaskStatus == 'Non-Compliance') {
|
||||
@@ -243,18 +256,20 @@
|
||||
value: res.designFlowTaskStatusCount,
|
||||
name: this.$t('nonCompliance'),
|
||||
color: '#707486',
|
||||
status:res.designFlowTaskStatus
|
||||
status: res.designFlowTaskStatus
|
||||
})
|
||||
color.push('#707486')
|
||||
}
|
||||
this.mainLeftNum += res.designFlowTaskStatusCount
|
||||
})
|
||||
}
|
||||
this.getEcharts('main-left', this.$t('designCompliance'), color, data)
|
||||
},
|
||||
|
||||
mainRightEcharts(dataSource){
|
||||
mainRightEcharts(dataSource) {
|
||||
let data = []
|
||||
let color = []
|
||||
this.mainRightNum = 0
|
||||
if (dataSource && dataSource.length > 0) {
|
||||
this.dataSource = [{}]
|
||||
dataSource.forEach(res => {
|
||||
@@ -263,7 +278,7 @@
|
||||
value: res.verifyFlowTaskStatusCount,
|
||||
name: this.$t('notLaunch'),
|
||||
color: '#00B3BE',
|
||||
status:res.verifyFlowTaskStatus
|
||||
status: res.verifyFlowTaskStatus
|
||||
})
|
||||
color.push('#00B3BE')
|
||||
} else if (res.verifyFlowTaskStatus == 'List to confirm') {
|
||||
@@ -271,7 +286,7 @@
|
||||
value: res.verifyFlowTaskStatusCount,
|
||||
name: this.$t('listToConfirm'),
|
||||
color: '#FDA71C',
|
||||
status:res.verifyFlowTaskStatus
|
||||
status: res.verifyFlowTaskStatus
|
||||
})
|
||||
color.push('#FDA71C')
|
||||
} else if (res.verifyFlowTaskStatus == 'Compliance') {
|
||||
@@ -279,7 +294,7 @@
|
||||
value: res.verifyFlowTaskStatusCount,
|
||||
name: this.$t('compliance'),
|
||||
color: '#26BC4B',
|
||||
status:res.verifyFlowTaskStatus
|
||||
status: res.verifyFlowTaskStatus
|
||||
})
|
||||
color.push('#26BC4B')
|
||||
} else if (res.verifyFlowTaskStatus == 'Non-Compliance') {
|
||||
@@ -287,17 +302,17 @@
|
||||
value: res.verifyFlowTaskStatusCount,
|
||||
name: this.$t('nonCompliance'),
|
||||
color: '#707486',
|
||||
status:res.verifyFlowTaskStatus
|
||||
status: res.verifyFlowTaskStatus
|
||||
})
|
||||
color.push('#707486')
|
||||
}
|
||||
this.mainRightNum += res.verifyFlowTaskStatusCount
|
||||
})
|
||||
}
|
||||
this.getEcharts('main-right', this.$t('verifyCompliance'), color, data)
|
||||
},
|
||||
|
||||
responsibility(item) {
|
||||
console.log(item)
|
||||
this.$emit('currentStatus', item)
|
||||
}
|
||||
}
|
||||
@@ -313,6 +328,7 @@
|
||||
|
||||
.box-content-top {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
margin-top: 4px;
|
||||
height: 346px;
|
||||
border: 2px #eff1f3 solid;
|
||||
@@ -330,6 +346,7 @@
|
||||
width: calc(50% - 10px);
|
||||
margin-top: 20px;
|
||||
height: 346px;
|
||||
position: relative;
|
||||
border: 2px #eff1f3 solid;
|
||||
border-radius: 6px;
|
||||
|
||||
@@ -345,6 +362,7 @@
|
||||
width: calc(50% - 10px);
|
||||
margin-top: 20px;
|
||||
height: 346px;
|
||||
position: relative;
|
||||
border-radius: 6px;
|
||||
border: 2px #eff1f3 solid;
|
||||
|
||||
@@ -367,4 +385,12 @@
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.total-text {
|
||||
position: absolute;
|
||||
right: 28px;
|
||||
top: 19px;
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
@@ -1,38 +1,39 @@
|
||||
<template>
|
||||
<a-modal
|
||||
:title="title"
|
||||
:width="800"
|
||||
:visible="visible"
|
||||
:confirm-loading="confirmLoading"
|
||||
:maskClosable="false"
|
||||
@cancel="visible = false"
|
||||
<a-modal
|
||||
:title="title"
|
||||
:width="800"
|
||||
:visible="visible"
|
||||
:confirm-loading="confirmLoading"
|
||||
:maskClosable="false"
|
||||
@cancel="visible = false"
|
||||
>
|
||||
<template slot="footer">
|
||||
<a-button key="back" @click="visible = false">
|
||||
{{$t('cancel')}}
|
||||
</a-button>
|
||||
</template>
|
||||
<!-- <div style="text-align: right;margin-bottom: 10px">-->
|
||||
<!-- <div @click="handleExport" class="operator-text">-->
|
||||
<!-- <a-icon type="export" :rotate="-90"/>-->
|
||||
<!-- {{$t('export')}}-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<a-table
|
||||
ref="table"
|
||||
:components="drag(columns,'columns')"
|
||||
:loading="loading"
|
||||
:pagination="false"
|
||||
:scroll="{x: '100%',y:400}"
|
||||
:data-source="dataSource"
|
||||
@change="tableOnChange"
|
||||
:columns="columns"
|
||||
>
|
||||
<template slot="footer">
|
||||
<a-button key="back" @click="visible = false">
|
||||
{{$t('cancel')}}
|
||||
</a-button>
|
||||
</template>
|
||||
<div style="text-align: right;margin-bottom: 10px">
|
||||
<div @click="handleExport" class="operator-text">
|
||||
<a-icon type="export" :rotate="-90"/>
|
||||
{{$t('export')}}
|
||||
</div>
|
||||
</div>
|
||||
<a-table
|
||||
ref="table"
|
||||
:components="drag(columns,'columns')"
|
||||
:loading="loading"
|
||||
:pagination="false"
|
||||
:scroll="{x: true,y:400}"
|
||||
:data-source="dataSource"
|
||||
:columns="columns"
|
||||
>
|
||||
<!-- @click="areaOfResponsibilityClick(result)"-->
|
||||
<span slot="areaOfResponsibility" slot-scope="text,result">
|
||||
<!-- -->
|
||||
<a slot="areaOfResponsibility" @click="areaOfResponsibilityClick(result)" slot-scope="text,result">
|
||||
{{text}}
|
||||
</span>
|
||||
</a-table>
|
||||
</a-modal>
|
||||
</a>
|
||||
</a-table>
|
||||
</a-modal>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@@ -62,6 +63,7 @@
|
||||
align: 'left',
|
||||
width: 150,
|
||||
ellipsis: true,
|
||||
sorter: true,
|
||||
scopedSlots: { customRender: 'areaOfResponsibility' }
|
||||
},
|
||||
{
|
||||
@@ -69,14 +71,16 @@
|
||||
dataIndex: 'amount',
|
||||
align: 'left',
|
||||
ellipsis: true,
|
||||
width: 150
|
||||
width: 150,
|
||||
sorter: true
|
||||
},
|
||||
{
|
||||
title: this.$t('proportion'),
|
||||
title: this.$t('proportionWithInTheAreaOfResponsibility'),
|
||||
dataIndex: 'percentage',
|
||||
align: 'left',
|
||||
ellipsis: true,
|
||||
width: 150
|
||||
width: 240,
|
||||
sorter: true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -88,11 +92,39 @@
|
||||
this.visible = true
|
||||
this.title = data.title
|
||||
this.queryParam = data
|
||||
this.getList(data)
|
||||
this.getList()
|
||||
},
|
||||
getList(data) {
|
||||
tableOnChange(pagination, filters, sorter) {
|
||||
this.orderBy = sorter.order == 'ascend' ? '1' : '2'
|
||||
if (sorter.columnKey == 'attestationRank_dictText') {
|
||||
this.orderByField = 'attestationRank'
|
||||
} else if (sorter.columnKey == 'dutyTerritory_dictText') {
|
||||
this.orderByField = 'dutyTerritory'
|
||||
} else if (sorter.columnKey == 'designDeliverableTypeName') {
|
||||
this.orderByField = 'designDeliverableType'
|
||||
} else if (sorter.columnKey == 'verifyDeliverableTypeName') {
|
||||
this.orderByField = 'verifyDeliverableType'
|
||||
} else if (sorter.columnKey == 'designDutyIdName') {
|
||||
this.orderByField = 'designDutyId'
|
||||
} else if (sorter.columnKey == 'verifyDutyIdName') {
|
||||
this.orderByField = 'verifyDutyId'
|
||||
} else if (sorter.columnKey == 'verifyFlowStatusName') {
|
||||
this.orderByField = 'verifyFlowStatus'
|
||||
} else if (sorter.columnKey == 'designFlowStatusName') {
|
||||
this.orderByField = 'designFlowStatus'
|
||||
} else {
|
||||
this.orderByField = sorter.columnKey
|
||||
}
|
||||
this.getList()
|
||||
},
|
||||
getList() {
|
||||
this.loading = true
|
||||
getAction(this.url.GroupByTerritory, data).then((res) => {
|
||||
let query = {
|
||||
...this.queryParam,
|
||||
orderBy: this.orderBy,
|
||||
orderByField: this.orderByField,
|
||||
}
|
||||
getAction(this.url.GroupByTerritory, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.loading = false
|
||||
this.dataSource = res.result.dataList || []
|
||||
@@ -108,14 +140,14 @@
|
||||
handleCancel() {
|
||||
this.visible = false
|
||||
},
|
||||
// areaOfResponsibilityClick(item) {
|
||||
// if (this.queryParam.operatorType == 'queryFGTaskToConfirmStatistics' ||
|
||||
// this.queryParam.operatorType == 'queryDesignStatistics' ||
|
||||
// this.queryParam.operatorType == 'queryVerifyStatistics') {
|
||||
// item.isListing = '1'
|
||||
// }
|
||||
// this.$emit('responsibility', item)
|
||||
// }
|
||||
areaOfResponsibilityClick(item) {
|
||||
if (this.queryParam.operatorType == 'queryFGTaskToConfirmStatistics' ||
|
||||
this.queryParam.operatorType == 'queryDesignStatistics' ||
|
||||
this.queryParam.operatorType == 'queryVerifyStatistics') {
|
||||
item.isListing = '1'
|
||||
}
|
||||
this.$emit('responsibility', item)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -11,6 +11,151 @@
|
||||
<a-spin :spinning="confirmLoading">
|
||||
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="12">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" title="G0">
|
||||
G0</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="zero">
|
||||
<a-date-picker class="box-input"
|
||||
:placeholder="$t('PleaseSelect')+'G0'"
|
||||
@change="dateChange({db_field_name:'zero'})"
|
||||
format="YYYY-MM-DD"
|
||||
:getCalendarContainer="(trigger) => trigger.parentNode"
|
||||
v-model="formInline.zero"
|
||||
:disabled="false"
|
||||
style="width: 100%"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" title="G1">
|
||||
G1</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="one">
|
||||
<a-date-picker class="box-input"
|
||||
:placeholder="$t('PleaseSelect')+'G1'"
|
||||
@change="dateChange({db_field_name:'one'})"
|
||||
format="YYYY-MM-DD"
|
||||
:getCalendarContainer="(trigger) => trigger.parentNode"
|
||||
v-model="formInline.one"
|
||||
:disabled="false"
|
||||
style="width: 100%"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" title="G2">
|
||||
G2</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="two">
|
||||
<a-date-picker class="box-input"
|
||||
:placeholder="$t('PleaseSelect')+'G2'"
|
||||
@change="dateChange({db_field_name:'two'})"
|
||||
format="YYYY-MM-DD"
|
||||
:getCalendarContainer="(trigger) => trigger.parentNode"
|
||||
v-model="formInline.two"
|
||||
:disabled="false"
|
||||
style="width: 100%"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" title="G3">
|
||||
G3</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="three">
|
||||
<a-date-picker class="box-input"
|
||||
:placeholder="$t('PleaseSelect')+'G3'"
|
||||
@change="dateChange({db_field_name:'three'})"
|
||||
format="YYYY-MM-DD"
|
||||
:getCalendarContainer="(trigger) => trigger.parentNode"
|
||||
v-model="formInline.three"
|
||||
:disabled="false"
|
||||
style="width: 100%"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" title="G4">
|
||||
G4</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="four">
|
||||
<a-date-picker class="box-input"
|
||||
:placeholder="$t('PleaseSelect')+'G4'"
|
||||
@change="dateChange({db_field_name:'four'})"
|
||||
format="YYYY-MM-DD"
|
||||
:getCalendarContainer="(trigger) => trigger.parentNode"
|
||||
v-model="formInline.four"
|
||||
:disabled="false"
|
||||
style="width: 100%"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" title="G5">
|
||||
G5</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="five">
|
||||
<a-date-picker class="box-input"
|
||||
:placeholder="$t('PleaseSelect')+'G5'"
|
||||
@change="dateChange({db_field_name:'five'})"
|
||||
format="YYYY-MM-DD"
|
||||
:getCalendarContainer="(trigger) => trigger.parentNode"
|
||||
v-model="formInline.five"
|
||||
:disabled="false"
|
||||
style="width: 100%"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" title="G6">
|
||||
G6</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="six">
|
||||
<a-date-picker class="box-input"
|
||||
:placeholder="$t('PleaseSelect')+'G6'"
|
||||
@change="dateChange({db_field_name:'six'})"
|
||||
format="YYYY-MM-DD"
|
||||
:getCalendarContainer="(trigger) => trigger.parentNode"
|
||||
v-model="formInline.six"
|
||||
:disabled="false"
|
||||
style="width: 100%"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" title="G7">
|
||||
G7</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="seven">
|
||||
<a-date-picker class="box-input"
|
||||
:placeholder="$t('PleaseSelect')+'G7'"
|
||||
@change="dateChange({db_field_name:'seven'})"
|
||||
format="YYYY-MM-DD"
|
||||
:getCalendarContainer="(trigger) => trigger.parentNode"
|
||||
v-model="formInline.seven"
|
||||
:disabled="false"
|
||||
style="width: 100%"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
|
||||
<a-col :span="12">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
@@ -165,150 +310,6 @@
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" title="G0">
|
||||
G0</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="zero">
|
||||
<a-date-picker class="box-input"
|
||||
:placeholder="$t('PleaseSelect')+'G0'"
|
||||
@change="dateChange({db_field_name:'zero'})"
|
||||
format="YYYY-MM-DD"
|
||||
:getCalendarContainer="(trigger) => trigger.parentNode"
|
||||
v-model="formInline.zero"
|
||||
:disabled="false"
|
||||
style="width: 100%"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" title="G1">
|
||||
G1</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="one">
|
||||
<a-date-picker class="box-input"
|
||||
:placeholder="$t('PleaseSelect')+'G1'"
|
||||
@change="dateChange({db_field_name:'one'})"
|
||||
format="YYYY-MM-DD"
|
||||
:getCalendarContainer="(trigger) => trigger.parentNode"
|
||||
v-model="formInline.one"
|
||||
:disabled="false"
|
||||
style="width: 100%"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" title="G2">
|
||||
G2</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="two">
|
||||
<a-date-picker class="box-input"
|
||||
:placeholder="$t('PleaseSelect')+'G2'"
|
||||
@change="dateChange({db_field_name:'two'})"
|
||||
format="YYYY-MM-DD"
|
||||
:getCalendarContainer="(trigger) => trigger.parentNode"
|
||||
v-model="formInline.two"
|
||||
:disabled="false"
|
||||
style="width: 100%"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" title="G3">
|
||||
G3</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="three">
|
||||
<a-date-picker class="box-input"
|
||||
:placeholder="$t('PleaseSelect')+'G3'"
|
||||
@change="dateChange({db_field_name:'three'})"
|
||||
format="YYYY-MM-DD"
|
||||
:getCalendarContainer="(trigger) => trigger.parentNode"
|
||||
v-model="formInline.three"
|
||||
:disabled="false"
|
||||
style="width: 100%"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" title="G4">
|
||||
G4</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="four">
|
||||
<a-date-picker class="box-input"
|
||||
:placeholder="$t('PleaseSelect')+'G4'"
|
||||
@change="dateChange({db_field_name:'four'})"
|
||||
format="YYYY-MM-DD"
|
||||
:getCalendarContainer="(trigger) => trigger.parentNode"
|
||||
v-model="formInline.four"
|
||||
:disabled="false"
|
||||
style="width: 100%"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" title="G5">
|
||||
G5</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="five">
|
||||
<a-date-picker class="box-input"
|
||||
:placeholder="$t('PleaseSelect')+'G5'"
|
||||
@change="dateChange({db_field_name:'five'})"
|
||||
format="YYYY-MM-DD"
|
||||
:getCalendarContainer="(trigger) => trigger.parentNode"
|
||||
v-model="formInline.five"
|
||||
:disabled="false"
|
||||
style="width: 100%"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" title="G6">
|
||||
G6</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="six">
|
||||
<a-date-picker class="box-input"
|
||||
:placeholder="$t('PleaseSelect')+'G6'"
|
||||
@change="dateChange({db_field_name:'six'})"
|
||||
format="YYYY-MM-DD"
|
||||
:getCalendarContainer="(trigger) => trigger.parentNode"
|
||||
v-model="formInline.six"
|
||||
:disabled="false"
|
||||
style="width: 100%"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="title-text-text" title="G7">
|
||||
G7</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" prop="seven">
|
||||
<a-date-picker class="box-input"
|
||||
:placeholder="$t('PleaseSelect')+'G7'"
|
||||
@change="dateChange({db_field_name:'seven'})"
|
||||
format="YYYY-MM-DD"
|
||||
:getCalendarContainer="(trigger) => trigger.parentNode"
|
||||
v-model="formInline.seven"
|
||||
:disabled="false"
|
||||
style="width: 100%"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form-model>
|
||||
</a-spin>
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
</div>
|
||||
</a-col>
|
||||
<template v-if="toggleSearchStatus">
|
||||
<a-col :md="6" :sm="8">
|
||||
<a-col :md="6" :sm="8" v-if="isPersonnelSelection">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('StudioEngineer')">
|
||||
<span>{{$t('StudioEngineer')}}</span>
|
||||
@@ -48,7 +48,7 @@
|
||||
v-model="queryParam.studioEngineerName"/>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :md="6" :sm="8">
|
||||
<a-col :md="6" :sm="8" v-if="isPersonnelSelection">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('certifiedEngineer')">
|
||||
<span>{{$t('certifiedEngineer')}}</span>
|
||||
@@ -199,6 +199,7 @@
|
||||
formInline: {},
|
||||
rules: {},
|
||||
visible: false,
|
||||
isPersonnelSelection:true,
|
||||
dataSource: [],
|
||||
confirmLoading: false,
|
||||
url: {
|
||||
@@ -404,6 +405,10 @@
|
||||
this.getList()
|
||||
},
|
||||
searchReset() {
|
||||
this.isPersonnelSelection = false
|
||||
this.$nextTick(()=>{
|
||||
this.isPersonnelSelection = true
|
||||
})
|
||||
this.pageNo = 1
|
||||
this.queryParam = {}
|
||||
this.getList()
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
</a-select>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :md="6" :sm="8">
|
||||
<a-col :md="6" :sm="8" v-if="isPersonnelSelection">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('Sponsor')">
|
||||
<span>{{$t('Sponsor')}}</span>
|
||||
@@ -114,7 +114,7 @@
|
||||
v-model="queryParam.initiatorName"/>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :md="6" :sm="8">
|
||||
<a-col :md="6" :sm="8" v-if="isPersonnelSelection">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text" :title="$t('personLiable')">
|
||||
<span>{{$t('personLiable')}}</span>
|
||||
@@ -274,6 +274,7 @@
|
||||
pageNo: 1,
|
||||
orderBy: '1',
|
||||
orderByField: '',
|
||||
isPersonnelSelection:true,
|
||||
url: {
|
||||
page: '/project/ncrTrackController/queryPage',
|
||||
exportData: '/project/ncrTrackController/exportData'
|
||||
@@ -336,6 +337,10 @@
|
||||
}
|
||||
},
|
||||
searchReset() {
|
||||
this.isPersonnelSelection = false
|
||||
this.$nextTick(()=>{
|
||||
this.isPersonnelSelection = true
|
||||
})
|
||||
this.pageNo = 1
|
||||
this.queryParam = {}
|
||||
this.getList()
|
||||
@@ -392,6 +397,7 @@
|
||||
PersonnelSelectionChange(value, id) {
|
||||
this.queryParam[value] = id
|
||||
this.queryParam = { ...this.queryParam }
|
||||
console.log(this.queryParam)
|
||||
},
|
||||
|
||||
//流程状态点击事件
|
||||
@@ -402,12 +408,10 @@
|
||||
if (row.prcType == '2') {
|
||||
if (row.flowStatus == 'Task to be confirmed' || row.flowStatus == 'Duty Person Rejected') {
|
||||
TaskKey = 'zrrqr'
|
||||
} else if (row.flowStatus == 'Results to be submitted') {
|
||||
} else if (row.flowStatus == 'Results to be submitted' || row.flowStatus == 'Non-Compliance' || row.flowStatus == 'To be tracked') {
|
||||
TaskKey = 'zrrtjjfw'
|
||||
} else if (row.flowStatus == 'Results to be reviewed' ||
|
||||
row.flowStatus == 'Compliance' ||
|
||||
row.flowStatus == 'Non-Compliance' ||
|
||||
row.flowStatus == 'To be tracked' ||
|
||||
row.flowStatus == 'NA') {
|
||||
TaskKey = 'fggcssh'
|
||||
}
|
||||
@@ -429,12 +433,10 @@
|
||||
} else if(row.prcType == '4'){
|
||||
if (row.flowStatus == 'Task to be confirmed' || row.flowStatus == 'Duty Person Rejected') {
|
||||
TaskKey = 'zrrqr'
|
||||
} else if (row.flowStatus == 'Results to be submitted') {
|
||||
} else if (row.flowStatus == 'Results to be submitted' || row.flowStatus == 'Non-Compliance' || row.flowStatus == 'To be tracked') {
|
||||
TaskKey = 'zrrtjjfw'
|
||||
} else if (row.flowStatus == 'Results to be reviewed' ||
|
||||
row.flowStatus == 'Compliance' ||
|
||||
row.flowStatus == 'Non-Compliance' ||
|
||||
row.flowStatus == 'To be tracked' ||
|
||||
row.flowStatus == 'NA') {
|
||||
TaskKey = 'fggcssh'
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -68,13 +68,21 @@
|
||||
</a-row>
|
||||
</a-form>
|
||||
</div>
|
||||
<div class="box-top">
|
||||
<div class="box-top" style="position: relative">
|
||||
<!-- <span class="box-top-text">{{ $t('regulatoryCertificationTaskPlan') }}</span>-->
|
||||
<!-- <span class="box-top-text fullScreenView" @click="TaskPlanListClick">{{ $t('fullScreenView') }}</span>-->
|
||||
<span style="float: right" @click="handleExport" class="box-top-text-right">
|
||||
<a-icon type="export" :rotate="-90"/>
|
||||
{{ $t('export') }}
|
||||
</span>
|
||||
<div class="box-header-text">
|
||||
<div class="box-header-text-text" @click="boxContentClick(0)">
|
||||
{{$t('whole')}}
|
||||
</div>
|
||||
<div class="box-header-text-text" @click="boxContentClick(1)">
|
||||
{{$t('masterProject')}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="box-top-content" style="position: relative">
|
||||
<!-- <div id="main"></div>-->
|
||||
<!-- <div class="axis-tip"></div>-->
|
||||
@@ -127,18 +135,20 @@
|
||||
v-if="!val.g"
|
||||
v-for="(val,indexTwo) in item.data[0]">
|
||||
<!-- <div class="process-content-right-top" v-if="indexOne % 2 == 0" :title="val.name">{{ val.name }}</div>-->
|
||||
<div class="process-content-right-button" :title="val.name">{{ val.name }}
|
||||
<div @click="statusClick(val)" class="process-content-right-button" :title="val.name">{{ val.name }}
|
||||
</div>
|
||||
<a-tooltip placement="topLeft" overlayClassName="tooltipColor">
|
||||
<template slot="title">
|
||||
<span>{{ val.time.slice(0, 11) }}</span>
|
||||
</template>
|
||||
<img v-if="val.status == 1" src="../../../assets/huiBottom.png" class="process-content-left"
|
||||
alt="">
|
||||
<img v-else-if="val.status == 2" src="../../../assets/kongBottom.png"
|
||||
<img @click="statusClick(val)" v-if="val.status == 1" src="../../../assets/huiBottom.png"
|
||||
class="process-content-left"
|
||||
alt="">
|
||||
<img v-else-if="val.status == 3" src="../../../assets/shiBottom.png" class="process-content-left"
|
||||
<img @click="statusClick(val)" v-else-if="val.status == 2" src="../../../assets/kongBottom.png"
|
||||
class="process-content-left"
|
||||
alt="">
|
||||
<img @click="statusClick(val)" v-else-if="val.status == 3" src="../../../assets/shiBottom.png"
|
||||
class="process-content-left"
|
||||
alt="">
|
||||
</a-tooltip>
|
||||
|
||||
@@ -152,8 +162,8 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<JLoading :loading="loadingMain">{{ this.$t('dataLoading') }}</JLoading>
|
||||
</div>
|
||||
<JLoading :loading="loadingMain">{{ this.$t('dataLoading') }}</JLoading>
|
||||
</div>
|
||||
<!-- <div class="box-bottom">-->
|
||||
<!-- <span class="box-top-text">{{ $t('projectStatusAndProgress') }}</span>-->
|
||||
@@ -206,11 +216,13 @@
|
||||
<!-- </a-table>-->
|
||||
<!-- </div>-->
|
||||
<!-- </div>-->
|
||||
<statistics ref="statisticsRef"/>
|
||||
</a-card>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, deleteAction, downloadFile } from '@/api/manage'
|
||||
import statistics from './components/statistics'
|
||||
import * as echarts from 'echarts'
|
||||
import moment from 'moment'
|
||||
import { ResizeHeader, ResizeColumnProvide } from '@/mixins/header'
|
||||
@@ -218,6 +230,9 @@
|
||||
export default {
|
||||
name: 'index',
|
||||
mixins: [ResizeHeader, ResizeColumnProvide],
|
||||
components: {
|
||||
statistics
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
queryParam: {},
|
||||
@@ -302,11 +317,22 @@
|
||||
],
|
||||
startTime: undefined,
|
||||
endTime: undefined,
|
||||
handlingTime: ''
|
||||
handlingTime: '',
|
||||
num: 0,
|
||||
queryAllProject: true
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
let boxContentTextColor = document.getElementsByClassName('box-header-text-color')
|
||||
if (boxContentTextColor && boxContentTextColor.length > 0) {
|
||||
boxContentTextColor[0].classList.remove('box-header-text-color')
|
||||
}
|
||||
let boxContentTextText = document.getElementsByClassName('box-header-text-text')
|
||||
if (boxContentTextText && boxContentTextText.length > 0) {
|
||||
boxContentTextText[0].classList.add('box-header-text-color')
|
||||
}
|
||||
this.queryAllProject = true
|
||||
// this.getList()
|
||||
this.getTimeline()
|
||||
this.handlingTime = moment(new Date()).format('YYYY-MM-DD')
|
||||
// this.handlingTime = '2023-04-30'
|
||||
@@ -379,7 +405,8 @@
|
||||
let query = {
|
||||
startTime: this.startTime || this.getNewDate('before', 6),
|
||||
endTime: this.endTime || this.getNewDate('after', 5),
|
||||
...this.queryParam
|
||||
...this.queryParam,
|
||||
queryAllProject: this.queryAllProject
|
||||
}
|
||||
this.loadingMain = true
|
||||
getAction(this.url.timeline, query).then((res) => {
|
||||
@@ -412,7 +439,8 @@
|
||||
let query = {
|
||||
startTime: this.startTime || this.getNewDate('before', 6),
|
||||
endTime: this.endTime || this.getNewDate('after', 5),
|
||||
...this.queryParam
|
||||
...this.queryParam,
|
||||
queryAllProject: this.queryAllProject
|
||||
}
|
||||
getAction(this.url.timelineList, query).then((res) => {
|
||||
if (res.success) {
|
||||
@@ -526,7 +554,7 @@
|
||||
},
|
||||
searchQuery() {
|
||||
this.getTimeline()
|
||||
this.getList()
|
||||
// this.getList()
|
||||
},
|
||||
searchReset() {
|
||||
this.queryParam = {}
|
||||
@@ -534,20 +562,20 @@
|
||||
this.startTime = undefined
|
||||
this.endTime = undefined
|
||||
this.getTimeline()
|
||||
this.getList()
|
||||
},
|
||||
getList() {
|
||||
this.loading = true
|
||||
getAction(this.url.list, this.queryParam).then((res) => {
|
||||
if (res.success) {
|
||||
this.loading = false
|
||||
this.dataSource = res.result || []
|
||||
} else {
|
||||
this.loading = false
|
||||
this.dataSource = []
|
||||
}
|
||||
})
|
||||
// this.getList()
|
||||
},
|
||||
// getList() {
|
||||
// this.loading = true
|
||||
// getAction(this.url.list, this.queryParam).then((res) => {
|
||||
// if (res.success) {
|
||||
// this.loading = false
|
||||
// this.dataSource = res.result || []
|
||||
// } else {
|
||||
// this.loading = false
|
||||
// this.dataSource = []
|
||||
// }
|
||||
// })
|
||||
// },
|
||||
projectNameClick() {
|
||||
let newUrl = this.$router.resolve({
|
||||
path: '/projectStatusAndProgress'
|
||||
@@ -567,10 +595,31 @@
|
||||
let query = {
|
||||
...this.queryParam,
|
||||
startTime: this.startTime || this.getNewDate('before', 6),
|
||||
endTime: this.endTime || this.getNewDate('after', 5)
|
||||
endTime: this.endTime || this.getNewDate('after', 5),
|
||||
queryAllProject: this.queryAllProject
|
||||
}
|
||||
downloadFile('/project/ProjectStatusBoardController/exportXls',
|
||||
this.$t('GRPSystemProjectProgressStatistics') + '.xls', query, this.Deselect)
|
||||
},
|
||||
statusClick(val) {
|
||||
this.$refs.statisticsRef.getData(val)
|
||||
},
|
||||
boxContentClick(num) {
|
||||
let boxContentTextColor = document.getElementsByClassName('box-header-text-color')
|
||||
if (boxContentTextColor && boxContentTextColor.length > 0) {
|
||||
boxContentTextColor[0].classList.remove('box-header-text-color')
|
||||
}
|
||||
let boxContentTextText = document.getElementsByClassName('box-header-text-text')
|
||||
if (boxContentTextText && boxContentTextText.length > 0) {
|
||||
boxContentTextText[num].classList.add('box-header-text-color')
|
||||
}
|
||||
this.num = num
|
||||
if (num == 0) {
|
||||
this.queryAllProject = true
|
||||
} else if (num == 1) {
|
||||
this.queryAllProject = false
|
||||
}
|
||||
this.getTimeline()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -866,6 +915,7 @@
|
||||
font-weight: 400;
|
||||
color: #6F7385;
|
||||
position: absolute;
|
||||
cursor: pointer;
|
||||
background: #fff;
|
||||
left: 50%;
|
||||
top: 36px;
|
||||
@@ -940,4 +990,38 @@
|
||||
margin-top: 8px !important;
|
||||
}
|
||||
|
||||
.box-header-text {
|
||||
height: 30px;
|
||||
background: #F5F6F7;
|
||||
border-radius: 4px;
|
||||
position: absolute;
|
||||
right: 88px;
|
||||
top: -9px;
|
||||
display: flex;
|
||||
z-index: 116;
|
||||
justify-content: space-between;
|
||||
padding: 0 2px 0 2px;
|
||||
|
||||
.box-header-text-text {
|
||||
display: inline-block;
|
||||
font-size: 12px;
|
||||
color: #6F7385;
|
||||
line-height: 30px;
|
||||
margin-right: 10px;
|
||||
cursor: pointer;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.box-header-text-color {
|
||||
box-shadow: 0px 1px 2px rgba(0, 0, 60, 0.01), 0px 2px 4px rgba(0, 22, 60, 0.02), 0px 4px 6px rgba(0, 22, 60, 0.0229458);
|
||||
border-radius: 4px;
|
||||
padding: 4px 6px;
|
||||
background: #FFFFFF;
|
||||
border: 1px solid #E6E7EC;
|
||||
color: #01A0AC;
|
||||
line-height: normal;
|
||||
margin-right: 0;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
+47
-5
@@ -237,9 +237,22 @@
|
||||
</span>
|
||||
|
||||
</a-table>
|
||||
<div class="buttom-box" v-if="dataSource && dataSource.length > 0">
|
||||
{{$t('total')+' '+this.dataSource.length+' '+ $t('strip')}}
|
||||
<div class="page" v-if="dataSource.length > 0">
|
||||
<a-pagination
|
||||
:show-total="total => $t('total')+` ${total} `+$t('strip')"
|
||||
show-quick-jumper
|
||||
show-size-changer
|
||||
:page-size.sync="pageSize"
|
||||
:total="total"
|
||||
:pageSizeOptions="['50','100','200','300']"
|
||||
:current="pageNo"
|
||||
@change="onChangeSize"
|
||||
@showSizeChange="SizeChange"
|
||||
/>
|
||||
</div>
|
||||
<!-- <div class="buttom-box" v-if="dataSource && dataSource.length > 0">-->
|
||||
<!-- {{$t('total')+' '+this.dataSource.length+' '+ $t('strip')}}-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
</a-card>
|
||||
</div>
|
||||
@@ -288,8 +301,11 @@
|
||||
isbutton: false,
|
||||
toggleSearchStatus:false,
|
||||
dataSource: [],
|
||||
pageNo: 1,
|
||||
pageSize: 50,
|
||||
total: 0,
|
||||
url: {
|
||||
list: '/authDummy/authDummyInventoryInfoEO/list',
|
||||
list: '/authDummy/authDummyInventoryInfoEO/page',
|
||||
logList: '/authDummy/authDummyLog/page',//更新log
|
||||
exportTemplate: '/authDummy/authDummyInventoryInfoEO/exportTemplate',//模板下载
|
||||
exportData: '/authDummy/authDummyInventoryInfoEO/exportData',//导出
|
||||
@@ -535,17 +551,35 @@
|
||||
getPersonnelList(){
|
||||
this.getList()
|
||||
},
|
||||
onChangeSize(page, pageSize) {
|
||||
this.pageNo = page
|
||||
this.getList()
|
||||
},
|
||||
SizeChange(page, pageSize) {
|
||||
this.pageNo = 1
|
||||
this.pageSize = pageSize
|
||||
this.getList()
|
||||
},
|
||||
getList() {
|
||||
let query = {
|
||||
...this.queryParam,
|
||||
orderBy: this.orderBy,
|
||||
orderByField: this.orderByField,
|
||||
authDummyInventoryBaseId: this.$route.query.id
|
||||
authDummyInventoryBaseId: this.$route.query.id,
|
||||
pageNo: this.pageNo,
|
||||
pageSize: this.pageSize
|
||||
}
|
||||
this.loading = true
|
||||
getAction(this.url.list, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.dataSource = res.result || []
|
||||
if (res.result.current > 1 && res.result.records.length == 0) {
|
||||
this.pageNo = 1
|
||||
this.getList()
|
||||
return
|
||||
}
|
||||
// this.dataSource = res.result || []
|
||||
this.dataSource = res.result.records || []
|
||||
this.total = res.result.total
|
||||
this.loading = false
|
||||
} else {
|
||||
this.loading = false
|
||||
@@ -723,4 +757,12 @@
|
||||
color: #00B3BE;
|
||||
cursor: pointer;
|
||||
}
|
||||
.page {
|
||||
text-align: right;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
::v-deep .ant-card-body {
|
||||
padding: 14px 32px 0 32px;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user