Merge remote-tracking branch 'origin/master'
This commit is contained in:
+19
-1
@@ -76,7 +76,7 @@ public class ParamsManifestEOController extends JeroController<ParamsManifestEO,
|
||||
@ApiOperation(value="参数清单-参数模板列表查询", notes="参数清单-参数模板列表查询")
|
||||
@GetMapping(value = "/getParamsTemplatePage")
|
||||
// @RequiresPermissions("params:manifest:add")
|
||||
public Result<?> getParamsTemplateList(ParamsTemplateEO paramsTemplateEO,
|
||||
public Result<?> getParamsTemplatePage(ParamsTemplateEO paramsTemplateEO,
|
||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||
@RequestParam(name="cut") String cut) {
|
||||
@@ -233,6 +233,24 @@ public class ParamsManifestEOController extends JeroController<ParamsManifestEO,
|
||||
return Result.OK(paramsManifestVOPage);
|
||||
}
|
||||
|
||||
/**
|
||||
* 参数模板列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "参数清单-复制-参数模板列表查询")
|
||||
@ApiOperation(value="参数清单-复制-参数模板列表查询", notes="参数清单-复制-参数模板列表查询")
|
||||
@GetMapping(value = "/getParamsTemplatePageOfCopy")
|
||||
// @RequiresPermissions("params:manifest:copy")
|
||||
public Result<?> getParamsTemplatePageOfCopy(ParamsTemplateEO paramsTemplateEO,
|
||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||
@RequestParam(name="cut") String cut) {
|
||||
Page<ParamsTemplateEO> page = new Page<ParamsTemplateEO>(pageNo, pageSize);
|
||||
IPage<ParamsTemplateEO> pageList = paramsManifestEOService.getNewestPublishPage(page, paramsTemplateEO);
|
||||
return Result.OK(cut, pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制清单
|
||||
* 分页
|
||||
|
||||
+2
-3
@@ -28,7 +28,6 @@ import org.jeecgframework.poi.excel.entity.ExportParams;
|
||||
import org.jeecgframework.poi.excel.entity.ImportParams;
|
||||
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||
@@ -100,8 +99,8 @@ public class SysCategoryController {
|
||||
@AutoLog(value = "标签内容-查询字典配置的父级名称")
|
||||
@ApiOperation(value = "标签内容-查询字典配置的父级名称", notes = "标签内容-查询字典配置的父级名称")
|
||||
@GetMapping(value = "/queryPid")
|
||||
public Result<List<SysCategory>> queryPid() {
|
||||
List<SysCategory> list = sysCategoryService.queryPid();
|
||||
public Result<List<SysCategory>> queryPid(SysCategory sysCategory) {
|
||||
List<SysCategory> list = sysCategoryService.queryPid(sysCategory);
|
||||
|
||||
return Result.OK(list);
|
||||
}
|
||||
|
||||
+1
-1
@@ -84,7 +84,7 @@ public class SysDictItemController {
|
||||
@CacheEvict(value= CacheConstant.SYS_DICT_CACHE, allEntries=true)
|
||||
public Result<SysDictItem> add(@RequestBody SysDictItem sysDictItem) {
|
||||
Result<SysDictItem> result = new Result<SysDictItem>();
|
||||
sysDictItemService.setAddOrdderNum(sysDictItem);
|
||||
sysDictItemService.setAddOrderNum(sysDictItem);
|
||||
//查询同名数据
|
||||
List<SysDictItem> exitDictItemList = sysDictItemMapper.selctItemByName(sysDictItem.getItemText(),sysDictItem.getDictId());
|
||||
if(CollectionUtils.isNotEmpty(exitDictItemList)){
|
||||
|
||||
+1
-1
@@ -90,5 +90,5 @@ public interface ISysCategoryService extends IService<SysCategory> {
|
||||
|
||||
void setEditOrderNum(SysCategory sysCategory);
|
||||
|
||||
List<SysCategory> queryPid();
|
||||
List<SysCategory> queryPid(SysCategory sysCategory);
|
||||
}
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ public interface ISysDictItemService extends IService<SysDictItem> {
|
||||
*/
|
||||
public void updateDictDelFlag(int delFlag,String id);
|
||||
|
||||
void setAddOrdderNum(SysDictItem sysDictItem);
|
||||
void setAddOrderNum(SysDictItem sysDictItem);
|
||||
|
||||
void setEditOrderNum(SysDictItem sysDictItem);
|
||||
}
|
||||
|
||||
+4
-2
@@ -387,9 +387,11 @@ public class SysCategoryServiceImpl extends ServiceImpl<SysCategoryMapper, SysCa
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysCategory> queryPid() {
|
||||
public List<SysCategory> queryPid(SysCategory sysCategory) {
|
||||
QueryWrapper<SysCategory> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("pid",0);
|
||||
queryWrapper.eq("sys_dict_id",sysCategory.getSysDictId())
|
||||
.eq("pid",0)
|
||||
.orderByDesc("sort_order");
|
||||
List<SysCategory> list = list(queryWrapper);
|
||||
return list;
|
||||
}
|
||||
|
||||
+9
-5
@@ -57,23 +57,25 @@ public class SysDictItemServiceImpl extends ServiceImpl<SysDictItemMapper, SysDi
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAddOrdderNum(SysDictItem sysDictItem) {
|
||||
public void setAddOrderNum(SysDictItem sysDictItem) {
|
||||
Integer inputOrderNum = sysDictItem.getSortOrder();
|
||||
if(inputOrderNum != null) {
|
||||
//查询展示顺序相同的
|
||||
QueryWrapper<SysDictItem> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0)
|
||||
.eq("dict_id",sysDictItem.getDictId())
|
||||
.orderByAsc("order_num");
|
||||
queryWrapper.eq("order_num", inputOrderNum);
|
||||
.eq("is_tag_dict",sysDictItem.getIsTagDict())
|
||||
.orderByAsc("sort_order");
|
||||
queryWrapper.eq("sort_order", inputOrderNum);
|
||||
Integer orderNumCount = sysDictItemMapper.selectCount(queryWrapper);
|
||||
if (orderNumCount > 0) {//有重复展示顺序的,后面的号全+1
|
||||
//设置排序
|
||||
QueryWrapper<SysDictItem> orderNumQueryWrapper = new QueryWrapper<>();
|
||||
orderNumQueryWrapper.ge("order_num", inputOrderNum)
|
||||
orderNumQueryWrapper.ge("sort_order", inputOrderNum)
|
||||
.eq("dict_id",sysDictItem.getDictId())
|
||||
.eq("del_flag", CommonConstant.DEL_FLAG_0)
|
||||
.orderByAsc("order_num");
|
||||
.eq("is_tag_dict",sysDictItem.getIsTagDict())
|
||||
.orderByAsc("sort_order");
|
||||
List<SysDictItem> geOrderNumList = list(orderNumQueryWrapper);
|
||||
|
||||
//判断相邻的序号,去掉不邻的
|
||||
@@ -101,6 +103,7 @@ public class SysDictItemServiceImpl extends ServiceImpl<SysDictItemMapper, SysDi
|
||||
QueryWrapper<SysDictItem> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("del_flag", CommonConstant.DEL_FLAG_0)
|
||||
.eq("dict_id",sysDictItem.getDictId())
|
||||
.eq("is_tag_dict",sysDictItem.getIsTagDict())
|
||||
.orderByAsc("sort_order");
|
||||
Integer orderNumData = list(queryWrapper).stream().filter(e -> e.getId().equals(sysDictItem.getId()))
|
||||
.map(e -> e.getSortOrder()).collect(Collectors.toList()).get(0);
|
||||
@@ -112,6 +115,7 @@ public class SysDictItemServiceImpl extends ServiceImpl<SysDictItemMapper, SysDi
|
||||
orderNumQueryWrapper.ge("sort_order", inputOrderNum)
|
||||
.eq("dict_id",sysDictItem.getDictId())
|
||||
.eq("del_flag", CommonConstant.DEL_FLAG_0)
|
||||
.eq("is_tag_dict",sysDictItem.getIsTagDict())
|
||||
.orderByAsc("sort_order");
|
||||
List<SysDictItem> geOrderNumList = list(orderNumQueryWrapper);
|
||||
|
||||
|
||||
+37
@@ -725,17 +725,31 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
|
||||
List<OnlCgformField> treeOnlCgformFieldList = fieldList.stream().filter(e -> FieldTypeEnum.TREE.getValue().equals(e.getFieldShowType())).collect(Collectors.toList());
|
||||
List<String> treeList = treeOnlCgformFieldList.stream().map(OnlCgformField::getDbFieldName).collect(Collectors.toList());
|
||||
List<OnlCgformField> onlCgformFieldDateMoreList = fieldList.stream().filter(e -> FieldTypeEnum.DATE_MORE.getValue().equals(e.getFieldShowType())).collect(Collectors.toList());
|
||||
List<OnlCgformField> onlCgformFieldPersonList = fieldList.stream().filter(e -> FieldTypeEnum.PERSON.getValue().equals(e.getFieldShowType())).collect(Collectors.toList());
|
||||
List<String> personList = onlCgformFieldPersonList.stream().map(OnlCgformField::getDbFieldName).collect(Collectors.toList());
|
||||
List<String> dateMoreList = onlCgformFieldDateMoreList.stream().map(OnlCgformField::getDbFieldName).collect(Collectors.toList());
|
||||
//通过id查询数据
|
||||
List<Map<String, Object>> dataList = bussDocumentLibraryEOMapper.selectMapsAll(id);
|
||||
//多选日期
|
||||
List<String> userNameList = new ArrayList<>();
|
||||
for (Map.Entry<String, Object> entry : dataList.get(0).entrySet()) {
|
||||
String key = entry.getKey();
|
||||
if(personList.contains(key)){
|
||||
String value = (String) entry.getValue();
|
||||
userNameList.addAll(Arrays.asList(value.split(",")));
|
||||
}
|
||||
if(dateMoreList.contains(key) && ObjectUtils.isNotEmpty(entry.getValue())){
|
||||
String value = (String) entry.getValue();
|
||||
entry.setValue(Arrays.asList(value.split(",")));
|
||||
}
|
||||
}
|
||||
List<SysUser> userList = new ArrayList<>();
|
||||
if(userNameList.size() != 0){
|
||||
LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.in(SysUser::getUsername,userNameList);
|
||||
userList = sysUserService.list(wrapper);
|
||||
}
|
||||
|
||||
|
||||
//查询所有
|
||||
List<Map<String, Object>> mapList = bussDocumentLibraryEOMapper.selectMapsAll(null);
|
||||
@@ -750,6 +764,7 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
|
||||
}
|
||||
}
|
||||
dataList.get(0).put("replaced_standard", StringUtils.join(replacedStandardNameList, ","));
|
||||
List<String> personKeyList = new ArrayList<>();
|
||||
for (Map.Entry<String, Object> entry : dataList.get(0).entrySet()) {
|
||||
if(treeList.contains(entry.getKey())){
|
||||
String value = (String) entry.getValue();
|
||||
@@ -759,6 +774,28 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
|
||||
dataList.get(0).put(entry.getKey(), null);
|
||||
}
|
||||
}
|
||||
if(personList.contains(entry.getKey())){
|
||||
if(StringUtils.isNotBlank((String)entry.getValue())){
|
||||
personKeyList.add(entry.getKey());
|
||||
}
|
||||
}
|
||||
}
|
||||
//标准选择字段,添加id(用于回显)
|
||||
if(personKeyList.size() != 0){
|
||||
for (String personKey : personKeyList) {
|
||||
String value = (String)dataList.get(0).get(personKey);
|
||||
List<SysUser> users = new ArrayList<>();
|
||||
if(userList.size() != 0 && StringUtils.isNotBlank(value)){
|
||||
for (String s : value.split(",")) {
|
||||
List<SysUser> sysUserList = userList.stream().filter(e -> e.getUsername().equals(s)).collect(Collectors.toList());
|
||||
users.addAll(sysUserList);
|
||||
}
|
||||
if(users.size() != 0){
|
||||
List<String> userIdList = users.stream().map(SysUser::getId).collect(Collectors.toList());
|
||||
dataList.get(0).put(personKey + "_id",StringUtils.join(userIdList,","));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return dataList;
|
||||
}
|
||||
|
||||
+6
-6
@@ -186,13 +186,13 @@ public class DummyInventoryInfoEOEn implements Serializable {
|
||||
private String designDeliverableTemplateName;
|
||||
|
||||
/**设计符合性确认-发起人*/
|
||||
@Excel(name = "design-Initiator", width = 15,dicCode ="fa1_qi3_ren2")
|
||||
@Excel(name = "design-Initiator", width = 15)
|
||||
@ApiModelProperty(value = "设计符合性确认-发起人")
|
||||
@Dict(dicCode ="fa1_qi3_ren2")
|
||||
private String designInitiator;
|
||||
|
||||
/**设计符合性确认-责任人*/
|
||||
@Excel(name = "design-Assignee", width = 15,dicCode ="ze2_ren4_ren2")
|
||||
@Excel(name = "design-Assignee", width = 15)
|
||||
@ApiModelProperty(value = "设计符合性确认-责任人")
|
||||
@Dict(dicCode ="ze2_ren4_ren2")
|
||||
private String designDuty;
|
||||
@@ -213,13 +213,13 @@ public class DummyInventoryInfoEOEn implements Serializable {
|
||||
private String prehomoDeliverableTemplateName;
|
||||
|
||||
/**prehomo确认-发起人*/
|
||||
@Excel(name = "Prehomo-Initiator", width = 15,dicCode ="fa1_qi3_ren2")
|
||||
@Excel(name = "Prehomo-Initiator", width = 15)
|
||||
@ApiModelProperty(value = "prehomo确认-发起人")
|
||||
@Dict(dicCode ="fa1_qi3_ren2")
|
||||
private String prehomoInitiator;
|
||||
|
||||
/**prehomo确认-责任人*/
|
||||
@Excel(name = "Prehomo-Assignee", width = 15,dicCode ="ze2_ren4_ren2")
|
||||
@Excel(name = "Prehomo-Assignee", width = 15)
|
||||
@ApiModelProperty(value = "prehomo确认-责任人")
|
||||
@Dict(dicCode ="ze2_ren4_ren2")
|
||||
private String prehomoDuty;
|
||||
@@ -240,13 +240,13 @@ public class DummyInventoryInfoEOEn implements Serializable {
|
||||
private String verifyDeliverableTemplateName;
|
||||
|
||||
/**验证符合性确认-发起人*/
|
||||
@Excel(name = "verify-Initiator", width = 15,dicCode ="fa1_qi3_ren2")
|
||||
@Excel(name = "verify-Initiator", width = 15)
|
||||
@ApiModelProperty(value = "验证符合性确认-发起人")
|
||||
@Dict(dicCode ="fa1_qi3_ren2")
|
||||
private String verifyInitiator;
|
||||
|
||||
/**验证符合性确认-责任人*/
|
||||
@Excel(name = "verify-Assignee", width = 15,dicCode ="ze2_ren4_ren2")
|
||||
@Excel(name = "verify-Assignee", width = 15)
|
||||
@ApiModelProperty(value = "验证符合性确认-责任人")
|
||||
@Dict(dicCode ="ze2_ren4_ren2")
|
||||
private String verifyDuty;
|
||||
|
||||
+2
-2
@@ -174,7 +174,7 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
|
||||
//订阅标识
|
||||
List<String> ids = records.stream().map(DummyInventoryBaseEO::getId).collect(Collectors.toList());
|
||||
LambdaQueryWrapper<DummyReadEO> wrapper = new LambdaQueryWrapper<>();
|
||||
wrapper.in(DummyReadEO::getDummyInventoryBaseId, ids);
|
||||
wrapper.in(DummyReadEO::getDummyInventoryBaseId, ids).in(DummyReadEO::getCreateBy,sysUser.getUsername());
|
||||
List<DummyReadEO> dummyReadEOS = iDummyReadEOService.list(wrapper);
|
||||
List<String> dummyReadIdList = dummyReadEOS.stream().map(DummyReadEO::getDummyInventoryBaseId).collect(Collectors.toList());
|
||||
for (DummyInventoryBaseEO record : pageList.getRecords()) {
|
||||
@@ -685,7 +685,7 @@ public class DummyInventoryBaseEOServiceImpl extends ServiceImpl<DummyInventoryB
|
||||
//封装消息的实体类
|
||||
SysAnnouncement sysAnnouncement = bussDocumentLibraryEOService.getSysAnnouncement(userIdList, content, contentInfo);
|
||||
sysAnnouncementService.saveAnnouncement(sysAnnouncement);
|
||||
bussDocumentLibraryEOService.sendWebsocket(idTemp, idTemp);
|
||||
bussDocumentLibraryEOService.sendWebsocket(idTemp, contentInfo);
|
||||
//飞书
|
||||
try {
|
||||
iFeishuService.batchSendMessage(thirdIdList.toArray(new String[]{}), contentInfo, MessageTypeEnum.PUSH.getName(), href);
|
||||
|
||||
+72
-29
@@ -148,7 +148,7 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String username = sysUser.getUsername();
|
||||
String serialNumber = list.stream().map(e->e.getSerialNumber()).collect(Collectors.joining(","));
|
||||
String contentLog = username+"向清单中添加了标准\""+serialNumber+"\"";
|
||||
String contentLog = username+"向清单中添加了标准“"+serialNumber+"”";
|
||||
dummyLogEOService.updateLog(contentLog, dummyInventoryInfoEO.getDummyInventoryBaseId());
|
||||
}
|
||||
}
|
||||
@@ -167,7 +167,7 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
//更新log
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String username = sysUser.getUsername();
|
||||
String contentLog = username+"编辑了清单中的\"" + dummyInventoryInfoEO.getSerialNumber() + "\"标准:";
|
||||
String contentLog = username+"编辑了清单中的“" + dummyInventoryInfoEO.getSerialNumber() + "”标准:";
|
||||
List<DummyInventoryInfoEO> infoEOList = new ArrayList<>();
|
||||
infoEOList.add(dummyInventoryInfoEO);
|
||||
//查询数据库里原来的数据
|
||||
@@ -234,7 +234,7 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
String username = sysUser.getUsername();
|
||||
String projectId = dummyInventoryInfoEOList.get(0).getDummyInventoryBaseId();
|
||||
String serialNumber = dummyInventoryInfoEOList.stream().map(e->e.getSerialNumber()).collect(Collectors.joining(","));
|
||||
String contentLog = username+"删除了清单中的\""+serialNumber+"\"标准";
|
||||
String contentLog = username+"删除了清单中的“"+serialNumber+"”标准";
|
||||
dummyLogEOService.updateLog(contentLog, projectId);
|
||||
}
|
||||
|
||||
@@ -258,7 +258,7 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
public List<DummyInventoryInfoEO> queryList(DummyInventoryInfoEO dummyInventoryInfoEO,HttpServletRequest req) {
|
||||
QueryWrapper<DummyInventoryInfoEO> queryWrapper = QueryGenerator.initQueryWrapper(dummyInventoryInfoEO,req.getParameterMap());
|
||||
// queryWrapper.in("dummy_inventory_base_id",dummyInventoryInfoEO.getDummyInventoryBaseId());
|
||||
queryWrapper.orderByDesc("create_time");
|
||||
queryWrapper.orderByDesc("create_time","serial_number");
|
||||
|
||||
List<DummyInventoryInfoEO> dummyInventoryInfoEOList = this.list(queryWrapper);
|
||||
//技术领域处理
|
||||
@@ -287,7 +287,7 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
String username = sysUser.getUsername();
|
||||
String projectId = dummyInventoryInfoEOList.get(0).getDummyInventoryBaseId();
|
||||
String serialNumber = dummyInventoryInfoEOList.stream().map(e->e.getSerialNumber()).collect(Collectors.joining(","));
|
||||
String contentLog = username+"复制了\""+serialNumber+"\"";
|
||||
String contentLog = username+"复制了“"+serialNumber+"”";
|
||||
dummyLogEOService.updateLog(contentLog, projectId);
|
||||
}
|
||||
}
|
||||
@@ -303,7 +303,7 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
//更新log
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String username = sysUser.getUsername();
|
||||
String contentLog = username+"批量设置了";
|
||||
String contentLog = username+"批量设置了“";
|
||||
StringBuilder contentLogBuilder = new StringBuilder(contentLog);
|
||||
|
||||
//根据id查询数据库中完整信息,翻译
|
||||
@@ -423,6 +423,7 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
this.updateBatchById(dummyInventoryInfoEOList);
|
||||
|
||||
contentLog = contentLogBuilder.substring(0, contentLogBuilder.length() - 1);
|
||||
contentLog += "”";
|
||||
dummyLogEOService.updateLog(contentLog, projectId);
|
||||
}
|
||||
}
|
||||
@@ -1193,7 +1194,7 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
String serialNumber = serialNumberBuilder.substring(0, serialNumberBuilder.length() - 1);
|
||||
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
|
||||
String username = sysUser.getUsername();
|
||||
String contentLog = username+"向清单中导入了\""+serialNumber+"\"标准";
|
||||
String contentLog = username+"向清单中导入了“"+serialNumber+"”标准";
|
||||
dummyLogEOService.updateLog(contentLog, dataList.get(0).getDummyInventoryBaseId());
|
||||
}
|
||||
}
|
||||
@@ -1538,7 +1539,7 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
|
||||
//文件
|
||||
List<OSSFile> fileInfos = getOssFiles(dataList);
|
||||
//数据转换(文件名称,技术领域,对应标准)
|
||||
//数据转换(文件名称,技术领域,对应标准,发起人,责任人)
|
||||
dataTransition(dataList, fileInfos,dummyInventoryInfoEO);
|
||||
|
||||
OutputStream os = null;
|
||||
@@ -1713,6 +1714,11 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
private void dataTransition(List<DummyInventoryInfoEO> dataList, List<OSSFile> fileInfos,DummyInventoryInfoEO dummyInventoryInfoEO) {
|
||||
//技术领域
|
||||
List<SysCategory> sysCategoryList = sysCategoryService.list();
|
||||
//普通数据字典
|
||||
List<SysDictItem> dictItemList = sysDictItemServiceImpl.selectItemsAll();
|
||||
List<SysDictItem> sysDictItemInitiator = dictItemList.stream().filter(e -> "fa1_qi3_ren2".equals(e.getDictCode())).collect(Collectors.toList());
|
||||
List<SysDictItem> sysDictItemDuty = dictItemList.stream().filter(e -> "ze2_ren4_ren2".equals(e.getDictCode())).collect(Collectors.toList());
|
||||
|
||||
//文档库数据
|
||||
List<String> correspondingStandardIdList = new ArrayList<>();
|
||||
for (DummyInventoryInfoEO inventoryInfoEO : dataList) {
|
||||
@@ -1721,33 +1727,49 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
correspondingStandardIdList.addAll(Arrays.asList(correspondingStandard.split(",")));
|
||||
}
|
||||
}
|
||||
// LambdaQueryWrapper<BussDocumentLibraryEO> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
// lambdaQueryWrapper.in(BussDocumentLibraryEO::getId,correspondingStandardIdList);
|
||||
// List<BussDocumentLibraryEO> bussDocumentLibraryEOList = iBussDocumentLibraryEOService.list(lambdaQueryWrapper);
|
||||
|
||||
for (DummyInventoryInfoEO inventoryInfoEO : dataList) {
|
||||
String correspondingStandard = inventoryInfoEO.getCorrespondingStandard();
|
||||
String technologyTerritory = inventoryInfoEO.getTechnologyTerritory();
|
||||
String designDeliverableTemplate = inventoryInfoEO.getDesignDeliverableTemplate();
|
||||
String prehomoDeliverableTemplate = inventoryInfoEO.getPrehomoDeliverableTemplate();
|
||||
String verifyDeliverableTemplate = inventoryInfoEO.getVerifyDeliverableTemplate();
|
||||
//对应标准
|
||||
// if(StringUtils.isNotBlank(correspondingStandard)){
|
||||
// StringBuilder sb = new StringBuilder();
|
||||
// for (String s : correspondingStandard.split(",")) {
|
||||
// List<BussDocumentLibraryEO> collect = bussDocumentLibraryEOList.stream()
|
||||
// .filter(e -> s.equals(e.getId())).collect(Collectors.toList());
|
||||
// if(collect.size() != 0){
|
||||
// sb.append(collect.get(0).getSerialNumber() + ",");
|
||||
// }else{
|
||||
// sb.append(s + ",");
|
||||
// }
|
||||
// }
|
||||
// if(StringUtils.isNotBlank(sb)){
|
||||
// String substring = sb.substring(0, sb.length() - 1);
|
||||
// inventoryInfoEO.setCorrespondingStandard(substring);
|
||||
// }
|
||||
// }
|
||||
//技术的发起人,责任人
|
||||
String designInitiator = inventoryInfoEO.getDesignInitiator();
|
||||
String designInitiatorPerson = getPerson(dummyInventoryInfoEO, sysDictItemInitiator, designInitiator);
|
||||
if(StringUtils.isNotBlank(designInitiatorPerson)){
|
||||
inventoryInfoEO.setDesignInitiator(designInitiatorPerson);
|
||||
}
|
||||
String designDuty = inventoryInfoEO.getDesignDuty();
|
||||
String designDutyPerson = getPerson(dummyInventoryInfoEO, sysDictItemDuty, designDuty);
|
||||
if(StringUtils.isNotBlank(designDutyPerson)){
|
||||
inventoryInfoEO.setDesignDuty(designDutyPerson);
|
||||
}
|
||||
|
||||
//pre的发起人,责任人
|
||||
String prehomoInitiator = inventoryInfoEO.getPrehomoInitiator();
|
||||
String prehomoInitiatorPerson = getPerson(dummyInventoryInfoEO, sysDictItemInitiator, prehomoInitiator);
|
||||
if(StringUtils.isNotBlank(prehomoInitiatorPerson)){
|
||||
inventoryInfoEO.setPrehomoInitiator(prehomoInitiatorPerson);
|
||||
}
|
||||
String prehomoDuty = inventoryInfoEO.getPrehomoDuty();
|
||||
String prehomoDutyPerson = getPerson(dummyInventoryInfoEO, sysDictItemDuty, prehomoDuty);
|
||||
if(StringUtils.isNotBlank(prehomoDutyPerson)){
|
||||
inventoryInfoEO.setPrehomoDuty(prehomoDutyPerson);
|
||||
}
|
||||
|
||||
//验证的发起人,责任人
|
||||
String verifyInitiator = inventoryInfoEO.getVerifyInitiator();
|
||||
String verifyInitiatorPerson = getPerson(dummyInventoryInfoEO, sysDictItemInitiator, verifyInitiator);
|
||||
if(StringUtils.isNotBlank(verifyInitiatorPerson)){
|
||||
inventoryInfoEO.setVerifyInitiator(verifyInitiatorPerson);
|
||||
}
|
||||
String verifyDuty = inventoryInfoEO.getVerifyDuty();
|
||||
String verifyDutyPerson = getPerson(dummyInventoryInfoEO, sysDictItemDuty, verifyDuty);
|
||||
if(StringUtils.isNotBlank(verifyDutyPerson)){
|
||||
inventoryInfoEO.setVerifyDuty(verifyDutyPerson);
|
||||
}
|
||||
|
||||
|
||||
//技术领域
|
||||
if(StringUtils.isNotBlank(technologyTerritory)){
|
||||
StringBuilder sb = new StringBuilder();
|
||||
@@ -1786,6 +1808,27 @@ public class DummyInventoryInfoEOServiceImpl extends ServiceImpl<DummyInventoryI
|
||||
}
|
||||
}
|
||||
|
||||
private String getPerson(DummyInventoryInfoEO dummyInventoryInfoEO, List<SysDictItem> sysDictItemList, String designInitiator) {
|
||||
if(StringUtils.isNotBlank(designInitiator)){
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (String s : designInitiator.split(",")) {
|
||||
List<SysDictItem> itemList = sysDictItemList.stream().filter(e -> s.equals(e.getItemValue())).collect(Collectors.toList());
|
||||
if(itemList.size() != 0){
|
||||
if(CutEnum.CN.getValue().equals(dummyInventoryInfoEO.getCut())){
|
||||
sb.append(itemList.get(0).getItemText()+",");
|
||||
}else{
|
||||
sb.append(itemList.get(0).getEnName()+",");
|
||||
}
|
||||
}
|
||||
if(StringUtils.isNotBlank(sb)){
|
||||
String substring = sb.substring(0, sb.length() - 1);
|
||||
return substring;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 模板名称转换
|
||||
* @param fileInfos
|
||||
|
||||
+1
-1
@@ -112,7 +112,7 @@ public class HomeFunctionModuleEOServiceImpl extends ServiceImpl<HomeFunctionMod
|
||||
LambdaQueryWrapper<HomeFunctionModuleEO> wrapperTemp = new LambdaQueryWrapper<>();
|
||||
wrapperTemp.in(HomeFunctionModuleEO::getCreateBy,loginUser.getUsername()).orderByAsc(HomeFunctionModuleEO::getState).orderByAsc(HomeFunctionModuleEO::getSort);
|
||||
List<HomeFunctionModuleEO> homeFunctionModuleEOS = this.list(wrapperTemp);
|
||||
if(homeFunctionModuleEOList.size() == 0){
|
||||
if(homeFunctionModuleEOS.size() == 0){
|
||||
if(CutEnum.EN.getValue().equals(cut)){
|
||||
for (HomeFunctionModuleEO homeFunctionModuleEO : homeFunctionModuleEOList) {
|
||||
homeFunctionModuleEO.setIconName(homeFunctionModuleEO.getIconNameEn());
|
||||
|
||||
+3
-1
@@ -1473,7 +1473,9 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
|
||||
|
||||
//翻译传入的数据
|
||||
List<ProjectLawsInventoryEO> inputList = new ArrayList<>();
|
||||
inputList.add(projectLawsInventoryEO);
|
||||
ProjectLawsInventoryEO projectLawsInventoryEONew = new ProjectLawsInventoryEO();
|
||||
BeanUtils.copyProperties(projectLawsInventoryEO,projectLawsInventoryEONew);
|
||||
inputList.add(projectLawsInventoryEONew);
|
||||
translateData(inputList);
|
||||
ProjectLawsInventoryEO inputInfoEO = inputList.get(0);
|
||||
|
||||
|
||||
+1
-1
@@ -259,7 +259,7 @@ public class FileSplitItemsEOController extends JeroController<SarFileSplitItems
|
||||
@RequiresPermissions("split:sarFileSplitItems:page")
|
||||
public Result<List<Map<String, Object>>> getHeader(@RequestParam(name = "flag") String flag,
|
||||
@RequestParam(name = "cut") String cut) {
|
||||
List<Map<String, Object>> list = languageSwitchService.getHeader(flag, cut);
|
||||
List<Map<String, Object>> list = fileSplitItemsEOService.getHeader(flag, cut);
|
||||
return Result.OK(list);
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -243,7 +243,7 @@ public class SarFileSplitInfoController extends JeroController<SarFileSplitInfoE
|
||||
@RequiresPermissions("split:sarFileSplitInfo:page")
|
||||
public Result<List<Map<String, Object>>> getHeader(@RequestParam(name = "flag") String flag,
|
||||
@RequestParam(name = "cut") String cut) {
|
||||
List<Map<String, Object>> list = languageSwitchService.getHeader(flag, cut);
|
||||
List<Map<String, Object>> list = sarFileSplitInfoService.getHeader(flag, cut);
|
||||
return Result.OK(list);
|
||||
}
|
||||
|
||||
|
||||
+2
@@ -81,4 +81,6 @@ public interface IFileSplitItemsEOService extends IService<SarFileSplitItemsEO>
|
||||
String getFieldForExport();
|
||||
|
||||
int insertForeach(List<SarFileSplitItemsEO> messageList); // 拆分已入库文件专用
|
||||
|
||||
List<Map<String, Object>> getHeader(String flag, String cut);
|
||||
}
|
||||
|
||||
+4
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.jero.modules.split.entity.SarFileSplitInfoEO;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @Description: 文档拆分表
|
||||
@@ -65,4 +66,7 @@ public interface ISarFileSplitInfoService extends IService<SarFileSplitInfoEO> {
|
||||
boolean bindToDocumentLibrary(String id, String connectId, String fileName);
|
||||
|
||||
void dataProcessing(String cut, List<SarFileSplitInfoEO> sarFileSplitInfoEOList);
|
||||
|
||||
List<Map<String, Object>> getHeader(String flag, String cut);
|
||||
|
||||
}
|
||||
|
||||
+44
@@ -23,6 +23,7 @@ import com.jero.generater.modules.online.cgform.entity.OnlCgformField;
|
||||
import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServiceImpl;
|
||||
import com.jero.modules.document.enums.FieldTypeEnum;
|
||||
import com.jero.modules.document.service.IBussDocumentLibraryEOService;
|
||||
import com.jero.modules.ocr.util.LineHumpUtil;
|
||||
import com.jero.modules.ocr.util.UUIDUtils;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
@@ -3574,4 +3575,47 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
|
||||
return dao.insertForeach(messageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表表头中英文切换
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> getHeader(String flag, String cut) {
|
||||
List<OnlCgformField> fieldList = onlCgformFieldService.getFieldList(flag);
|
||||
if (fieldList.size() != 0) {
|
||||
//过滤列表字段(is_show_list-->列表是否显示0否 1是)
|
||||
fieldList = fieldList.stream().filter(e -> YesOrNoEnum.YES.getValue().equals(String.valueOf(e.getIsShowList()))).collect(Collectors.toList());
|
||||
}
|
||||
List<Map<String, Object>> list = new ArrayList<>();
|
||||
for (OnlCgformField onlCgformField : fieldList) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
if(FieldTypeEnum.TEXT_LINK.getValue().equals(onlCgformField.getFieldShowType())){
|
||||
map.put("urlClick","true");
|
||||
}
|
||||
if("file_name".equals(onlCgformField.getDbFieldName())
|
||||
|| "iterms_conditions".equals(onlCgformField.getDbFieldName())){
|
||||
//跳转详情的标识
|
||||
map.put("click","true");
|
||||
}
|
||||
//日期添加排序标识
|
||||
if ("create_time".equals(onlCgformField.getDbFieldName())) {
|
||||
map.put("sort", "true");//列表排序标识
|
||||
}
|
||||
if ("update_time".equals(onlCgformField.getDbFieldName())) {
|
||||
map.put("sort", "true");//列表排序标识
|
||||
}
|
||||
|
||||
String dbFieldName = onlCgformField.getDbFieldName();
|
||||
map.put("db_field_name", dbFieldName);
|
||||
|
||||
if(CutEnum.CN.getValue().equals(cut)){
|
||||
map.put("db_field_txt", onlCgformField.getDbFieldTxt());//字段中文名
|
||||
}else{
|
||||
map.put("db_field_txt", onlCgformField.getDbFieldEnName());//字段英文名
|
||||
}
|
||||
list.add(map);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
|
||||
+48
@@ -10,6 +10,8 @@ import com.jero.common.constant.enums.YesOrNoEnum;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.generater.modules.online.cgform.entity.OnlCgformField;
|
||||
import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServiceImpl;
|
||||
import com.jero.modules.document.enums.FieldTypeEnum;
|
||||
import com.jero.modules.ocr.util.LineHumpUtil;
|
||||
import com.jero.modules.oss.entity.OSSFile;
|
||||
import com.jero.modules.oss.service.IOSSFileService;
|
||||
import com.jero.modules.split.entity.SarFileSplitInfoEO;
|
||||
@@ -263,4 +265,50 @@ public class SarFileSplitInfoServiceImpl extends ServiceImpl<SarFileSplitInfoMap
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表表头中英文切换
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> getHeader(String flag, String cut) {
|
||||
List<OnlCgformField> fieldList = onlCgformFieldService.getFieldList(flag);
|
||||
if (fieldList.size() != 0) {
|
||||
//过滤列表字段(is_show_list-->列表是否显示0否 1是)
|
||||
fieldList = fieldList.stream().filter(e -> YesOrNoEnum.YES.getValue().equals(String.valueOf(e.getIsShowList()))).collect(Collectors.toList());
|
||||
}
|
||||
List<Map<String, Object>> list = new ArrayList<>();
|
||||
for (OnlCgformField onlCgformField : fieldList) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
if(FieldTypeEnum.TEXT_LINK.getValue().equals(onlCgformField.getFieldShowType())){
|
||||
map.put("urlClick","true");
|
||||
}
|
||||
if("file_name".equals(onlCgformField.getDbFieldName())
|
||||
|| "serial_number".equals(onlCgformField.getDbFieldName())
|
||||
|| "title".equals(onlCgformField.getDbFieldName())){
|
||||
//跳转详情的标识
|
||||
map.put("click","true");
|
||||
}
|
||||
//日期添加排序标识
|
||||
if ("create_time".equals(onlCgformField.getDbFieldName())) {
|
||||
map.put("sort", "true");//列表排序标识
|
||||
}
|
||||
if ("update_time".equals(onlCgformField.getDbFieldName())) {
|
||||
map.put("sort", "true");//列表排序标识
|
||||
}
|
||||
|
||||
String dbFieldName = onlCgformField.getDbFieldName();
|
||||
map.put("db_field_name", LineHumpUtil.lineToHump(dbFieldName));
|
||||
|
||||
if(CutEnum.CN.getValue().equals(cut)){
|
||||
map.put("db_field_txt", onlCgformField.getDbFieldTxt());//字段中文名
|
||||
}else{
|
||||
map.put("db_field_txt", onlCgformField.getDbFieldEnName());//字段英文名
|
||||
}
|
||||
list.add(map);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 765 B |
@@ -73,7 +73,7 @@ module.exports = {
|
||||
lessOrEqual: 'Less Than Or Equal To',
|
||||
user: 'User',
|
||||
numericalValue: 'Numerical Value',
|
||||
not: 'No',
|
||||
not: 'No.',
|
||||
EnterValue: 'Please Enter a Value',
|
||||
SavedQuery: 'Saved Query',
|
||||
NoQueriesSaved: 'No Queries Were Saved',
|
||||
@@ -612,7 +612,7 @@ module.exports = {
|
||||
task: 'Task',
|
||||
TaskCutOffTime: 'Due Date',
|
||||
Transfer: 'Transfer',
|
||||
CertificationDirectory: 'Certification directory',
|
||||
CertificationDirectory: 'Certification Catalogue',
|
||||
TaskRequirements: 'Task requirements',
|
||||
CertificationProgress: 'Homo Progress',
|
||||
CurrentProjectStatusEvaluation: 'Current State',
|
||||
@@ -675,7 +675,7 @@ module.exports = {
|
||||
The: 'The',
|
||||
submitted: 'Data has been submitted and cannot be submitted again',
|
||||
basicInformationOfParameters: 'Basic information of parameters',
|
||||
regulatoryCertificationTaskPlan: 'Regulatory / certification task plan',
|
||||
regulatoryCertificationTaskPlan: 'Regulatory / Certification Task Plan',
|
||||
bringInRelevantPersonnel: 'Bring in relevant personnel',
|
||||
confirmBringInRelevantPersonnel: 'Confirm Bring in relevant personnel',
|
||||
problemType: 'Problem type',
|
||||
@@ -781,7 +781,7 @@ module.exports = {
|
||||
notEvaluated: 'Not evaluated',
|
||||
cannotExceed: 'Cannot exceed',
|
||||
Characters: 'Characters',
|
||||
standardInformation: 'StandardInformation',
|
||||
standardInformation: 'Standard Information',
|
||||
VirtualList: 'VirtualList',
|
||||
importTemplate: 'Import Template',
|
||||
verificationConfirmationDeadline: 'Verification compliance confirmation deadline',
|
||||
@@ -811,9 +811,9 @@ module.exports = {
|
||||
yellow: 'Yellow',
|
||||
resultReported: 'Result Reported',
|
||||
TheDoesNotContainData: 'The maintenance list of the virtual list does not contain data',
|
||||
number: 'No',
|
||||
number: 'No.',
|
||||
Deadline: 'Deadline',
|
||||
toBeConfirmed: 'To be confirmed',
|
||||
toBeConfirmed: 'No rating',
|
||||
designComplianceReview: 'Confirm design conformance',
|
||||
preHomeConfirmation: 'Pre-Homo confirmation',
|
||||
verificationComplianceReview: 'Verify conformance validation',
|
||||
@@ -893,4 +893,5 @@ module.exports = {
|
||||
ExportReport:'Export Report',
|
||||
basicInformation:'Basic Information',
|
||||
replyFromProjectContact:'Reply from project contact person',
|
||||
pleaseUpload:'Please Upload',
|
||||
}
|
||||
@@ -898,4 +898,5 @@ module.exports = {
|
||||
ExportReport:'导出报告',
|
||||
basicInformation:'基础信息',
|
||||
replyFromProjectContact:'工程接口人回复',
|
||||
pleaseUpload:'请上传',
|
||||
}
|
||||
@@ -109,6 +109,7 @@
|
||||
if (this.isSingleChoice) {
|
||||
if (this.userIds.length > 1) {
|
||||
this.$message.warning(this.$t('onlyOnePersonCanBeSelected'))
|
||||
return
|
||||
}
|
||||
}
|
||||
let userIds = JSON.parse(JSON.stringify(this.userIds))
|
||||
|
||||
@@ -13,12 +13,12 @@
|
||||
@change="tableOnChange"
|
||||
>
|
||||
<span slot="showContent" slot-scope="text, record" class="item-solt">
|
||||
<a-tooltip placement="top" class="item-content-tooltip" >
|
||||
<template slot="title" class="item-content-title">
|
||||
<span class="item-content-show" v-html="record.iterms_conditions"></span>
|
||||
</template>
|
||||
<span class="content-show" href="javascript:;" @click="showContent">{{record.iterms_conditions&&record.iterms_conditions!=='null'?record.iterms_conditions.replace(/<.*?>/ig, ' ') : ''}}</span>
|
||||
</a-tooltip>
|
||||
<!-- <a-tooltip placement="top" class="item-content-tooltip" >-->
|
||||
<!-- <template slot="title" class="item-content-title">-->
|
||||
<!-- <span class="item-content-show" v-html="record.iterms_conditions"></span>-->
|
||||
<!-- </template>-->
|
||||
<span class="content-show" href="javascript:;" @click="showContent(text,record)">{{record.iterms_conditions&&record.iterms_conditions!=='null'?record.iterms_conditions.replace(/<.*?>/ig, ' ') : ''}}</span>
|
||||
<!-- </a-tooltip>-->
|
||||
</span>
|
||||
|
||||
<span slot="operation" slot-scope="record" class="operate">
|
||||
|
||||
@@ -34,16 +34,11 @@
|
||||
{{text && text.length > 18?text.slice(0,17)+'...':text}}
|
||||
</span>
|
||||
</span>
|
||||
<!-- <span slot="numberText" slot-scope="text,record">-->
|
||||
<!-- <span class="text" :title="text">-->
|
||||
<!-- {{text && text.length > 18?text.slice(0,17)+'...':text}}-->
|
||||
<!-- </span>-->
|
||||
<!-- </span>-->
|
||||
<!-- <span slot="titleText" slot-scope="text,record">-->
|
||||
<!-- <span class="text" :title="text">-->
|
||||
<!-- {{text && text.length > 18?text.slice(0,17)+'...':text}}-->
|
||||
<!-- </span>-->
|
||||
<!-- </span>-->
|
||||
<span slot="detail" slot-scope="text,record">
|
||||
<a class="text" :title="text" @click="urlClick(text,record)">
|
||||
{{text}}
|
||||
</a>
|
||||
</span>
|
||||
</a-table>
|
||||
</div>
|
||||
<div class="page" v-if="dataSource.length > 0">
|
||||
@@ -130,7 +125,9 @@
|
||||
this.getTableList()
|
||||
},
|
||||
methods: {
|
||||
|
||||
urlClick(text,record) {
|
||||
this.$emit('detailClick', record)
|
||||
},
|
||||
getTextWith(text, fontStyle) {
|
||||
var canvas = document.createElement('canvas')
|
||||
var context = canvas.getContext('2d')
|
||||
@@ -159,9 +156,14 @@
|
||||
// scope.row.itermsConditions ? scope.row.itermsConditions.replace(/<.*?>/ig, ' ') : ''
|
||||
}
|
||||
|
||||
this.columns[index].scopedSlots = {
|
||||
customRender: 'detailText'
|
||||
}
|
||||
if(res.db_field_txt === "编号" || res.db_field_txt === "标题" ){
|
||||
this.columns[index].scopedSlots = {
|
||||
customRender: 'detailText'
|
||||
customRender: 'detail'
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
let width = 0
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
@change="handleChange">
|
||||
<!-- <p><a-icon style="font-size: 67px;color: #c0c4cc;" type="cloud-upload" /></p>-->
|
||||
<a-icon type="export" :rotate="-90" />
|
||||
拆分文件
|
||||
{{$t('splitFile')}}
|
||||
</a-upload>
|
||||
<!-- </a-modal>-->
|
||||
</div>
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 9999900;
|
||||
z-index: 999;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(255, 255, 255, 0.9);
|
||||
|
||||
@@ -93,6 +93,8 @@
|
||||
this.$route.path == '/taskListProcess' ||
|
||||
this.$route.path == '/ProjectDetails' ||
|
||||
this.$route.path == '/handshakeProcess' ||
|
||||
this.$route.path == '/projectStatusAndProgress' ||
|
||||
this.$route.path == '/TaskPlanList' ||
|
||||
this.$route.path == '/historicalVersion' ||
|
||||
this.$route.path == '/dashboard/analysis' ||
|
||||
this.$route.path == '/processDetails') {
|
||||
|
||||
@@ -572,6 +572,7 @@
|
||||
display: inline-block;
|
||||
margin-top: 2px;
|
||||
height: 40px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.itemModel-text {
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
:collapsible="collapsible"
|
||||
v-model="collapsed"
|
||||
:trigger="null">
|
||||
<logo/>
|
||||
<logo :collapsed="collapsed"/>
|
||||
<s-menu
|
||||
:collapsed="collapsed"
|
||||
:menu="menus"
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<div v-else :class="['top-nav-header-index', theme]">
|
||||
<div class="header-index-wide">
|
||||
<div class="header-index-left" :style="topMenuStyle.headerIndexLeft">
|
||||
<logo class="top-nav-header" :show-title="device !== 'mobile'" :style="topMenuStyle.topNavHeader"/>
|
||||
<logo class="top-nav-header" :show-title="device !== 'mobile'" :style="topMenuStyle.topNavHeader"/>
|
||||
<div v-if="device !== 'mobile'" :style="topMenuStyle.topSmenuStyle">
|
||||
<s-menu
|
||||
mode="horizontal"
|
||||
|
||||
@@ -2,10 +2,11 @@
|
||||
<div class="logo">
|
||||
<router-link :to="{name:'dashboard'}">
|
||||
<!-- update-begin- author:sunjianlei --- date:20190814 --- for: logo颜色根据主题颜色变化 -->
|
||||
<img src="~@/assets/logo.png" alt="logo" class="logoImg">
|
||||
<img v-if="!collapsed" src="~@/assets/logo.png" alt="logo" class="logoImg">
|
||||
<img v-if="collapsed" src="~@/assets/logoOne.png" alt="logo" class="logoImgOne">
|
||||
<!-- <img v-else src="~@/assets/logo.png" alt="logo">-->
|
||||
<!-- update-begin- author:sunjianlei --- date:20190814 --- for: logo颜色根据主题颜色变化 -->
|
||||
<span v-if="showTitle" class="logoTitle">{{ title }}</span>
|
||||
<span v-if="showTitle && !collapsed" class="logoTitle">{{ title }}</span>
|
||||
</router-link>
|
||||
</div>
|
||||
</template>
|
||||
@@ -26,8 +27,16 @@
|
||||
type: Boolean,
|
||||
default: true,
|
||||
required: false
|
||||
},
|
||||
collapsed: {
|
||||
type: Boolean,
|
||||
required: false,
|
||||
default: false
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
console.log(this.collapsed)
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style lang="less" scoped>
|
||||
@@ -63,6 +72,9 @@
|
||||
height: 29px;
|
||||
}
|
||||
|
||||
/*.logoImgOne{*/
|
||||
/* width: ;*/
|
||||
/*} */
|
||||
.logoTitle {
|
||||
font-size: 25px;
|
||||
font-weight: 300 !important;
|
||||
|
||||
@@ -372,6 +372,16 @@ export const constantRouterMap = [
|
||||
name: 'ocrSplit',
|
||||
component: () => import(/* webpackChunkName: "user" */ '@/views/documentManage/ocr/OcrSplit')
|
||||
},
|
||||
{
|
||||
path: '/projectStatusAndProgress',
|
||||
name: 'projectStatusAndProgress',
|
||||
component: () => import(/* webpackChunkName: "user" */ '@/views/projectManagement/projectStatusBoard/components/projectStatusAndProgress')
|
||||
},
|
||||
{
|
||||
path: '/TaskPlanList',
|
||||
name: 'TaskPlanList',
|
||||
component: () => import(/* webpackChunkName: "user" */ '@/views/projectManagement/projectStatusBoard/components/TaskPlanList')
|
||||
},
|
||||
// {
|
||||
// path: '/',
|
||||
// name: 'index',
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
</div>
|
||||
<div class="solid"></div>
|
||||
</div>
|
||||
<div v-else style="height: 240px;position: relative">
|
||||
<div v-else style="height: 200px;position: relative">
|
||||
<JNoData/>
|
||||
</div>
|
||||
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
<span class="top-admin" :title="prcTypeName[item.prcType]">{{prcTypeName[item.prcType]}}</span>
|
||||
</div>
|
||||
<div class="button">
|
||||
{{moment(item.createTime).format('YYYY-MM-DD HH:mm:ss')}}
|
||||
{{item.creatTime}}
|
||||
</div>
|
||||
<div class="with">
|
||||
{{$t('Pending')}}
|
||||
|
||||
@@ -77,6 +77,7 @@
|
||||
import { ACCESS_TOKEN } from '@/store/mutation-types'
|
||||
import ImportFile from '@/components/ImportFile/index'
|
||||
import Vue from 'vue'
|
||||
import moment from 'moment'
|
||||
|
||||
export default {
|
||||
name: 'docLibrary',
|
||||
@@ -141,7 +142,8 @@
|
||||
...this.$refs.searchRef.queryParam,
|
||||
id: this.idList.join(',')
|
||||
}
|
||||
downloadFile('document/bussDocumentLibraryEO/exportExcel', this.$t('DocumentLibrary')+'.xls', query, this.Deselect)
|
||||
let handlingTime = moment(new Date()).format('YYYY-MM-DD')
|
||||
downloadFile('document/bussDocumentLibraryEO/exportExcel', this.$t('DocumentLibrary')+handlingTime+'.xls', query, this.Deselect)
|
||||
},
|
||||
Deselect() {
|
||||
this.$refs.tableDataRef.selectedRowKeys = []
|
||||
@@ -154,7 +156,8 @@
|
||||
id: this.idList.join(','),
|
||||
flag: 'file'
|
||||
}
|
||||
downloadFile('document/bussDocumentLibraryEO/exportZip', '文档库.zip', query, this.Deselect)
|
||||
let handlingTime = moment(new Date()).format('YYYY-MM-DD')
|
||||
downloadFile('document/bussDocumentLibraryEO/exportZip', this.$t('DocumentLibrary')+handlingTime+'.zip', query, this.Deselect)
|
||||
},
|
||||
//新增
|
||||
handleAdd() {
|
||||
@@ -162,7 +165,8 @@
|
||||
},
|
||||
//下载模板
|
||||
handleModule() {
|
||||
downloadFile('document/bussDocumentLibraryEO/exportTemplate', '文档库导入模板.xls', {})
|
||||
|
||||
downloadFile('document/bussDocumentLibraryEO/exportTemplate', this.$t('importTemplate')+this.$t('importTemplate')+'.xls', {})
|
||||
},
|
||||
//批量删除
|
||||
handleDel() {
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
</div>
|
||||
<div class="operator-text" @click="downLoad" v-has="'split:sarFileSplitItems:template'">
|
||||
<a-icon type="download" />
|
||||
模板下载
|
||||
{{$t('templateDownload')}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="imports-table-detail">
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
:footer="false"
|
||||
@cancel="handleCancel"
|
||||
>
|
||||
<p>{{contentValue}}</p>
|
||||
<p v-html='contentValue'></p>
|
||||
</a-modal>
|
||||
<!-- 添加节点-->
|
||||
<a-modal
|
||||
@@ -332,8 +332,9 @@
|
||||
},
|
||||
methods: {
|
||||
//显示条款内容弹框
|
||||
showContent(){
|
||||
// this.contentVisible=true
|
||||
showContent(val){
|
||||
this.contentVisible=true
|
||||
this.contentValue = val
|
||||
},
|
||||
//关闭条款内容弹框
|
||||
handleCancel(){
|
||||
@@ -1283,6 +1284,10 @@
|
||||
}
|
||||
|
||||
}
|
||||
.ant-modal-body{
|
||||
max-height: 500px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
.split-detail-table{
|
||||
.ant-table-body{
|
||||
overflow: auto!important;
|
||||
|
||||
@@ -52,11 +52,14 @@
|
||||
</a-form-model-item>
|
||||
<a-form-model-item :label="$t('ParentName')" prop="pid" v-if="parentVisible">
|
||||
<a-select v-model="form.pid" @change="handleChange" :placeholder="$t('pleaseSelect')" allowClear>
|
||||
<a-select-option :value="item.id" v-for="(item, index) in parentData" :key="item.id">
|
||||
<a-select-option :value="item.id" v-for="(item, index) in parentDataPid" :key="item.id">
|
||||
{{item.name}}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
</a-form-model-item>
|
||||
<a-form-model-item :label="$t('DisplayOrder')" prop="sortOrder">
|
||||
<a-input-number v-model="form.sortOrder" :placeholder="$t('PleaseEnterDisplayOrder')" style="width: 100%" :min="1" :formatter="limitNumber" :parser="limitNumber" />
|
||||
</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>
|
||||
@@ -105,6 +108,9 @@
|
||||
{ required: true, message: this.$t('enterName'), trigger: 'blur' },
|
||||
{ min:1, max: 100, message: this.$t('cantExeed')+'100'+this.$t('characters'), trigger: 'blur' },
|
||||
],
|
||||
sortOrder: [
|
||||
{ required: true, message: this.$t('PleaseEnterDisplayOrder'),trigger: 'blur'},
|
||||
],
|
||||
// itemValue:[
|
||||
// { required: true, message: this.$t('enterDataValue'), trigger: 'blur' },
|
||||
// { min:1, max: 30, message: this.$t('cantExeed')+'30'+this.$t('characters'), trigger: 'blur' },
|
||||
@@ -131,6 +137,7 @@
|
||||
editPId:'',
|
||||
tabletreeDataSource:[],
|
||||
flag:false, //提交表单标识
|
||||
parentDataPid: []
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
@@ -194,7 +201,16 @@
|
||||
})
|
||||
}
|
||||
},
|
||||
|
||||
//正则替换小数点
|
||||
limitNumber(value) {
|
||||
if (typeof value === 'string') {
|
||||
return !isNaN(Number(value)) ? value.replace(/\./g, '') : 0
|
||||
} else if (typeof value === 'number') {
|
||||
return !isNaN(value) ? String(value).replace(/\./g, '') : 0
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
},
|
||||
//将数据拼成树形结构
|
||||
toTree(config) {
|
||||
config.forEach(function(item) {
|
||||
@@ -249,23 +265,17 @@
|
||||
this.parentVisible=true
|
||||
this.editPId=''
|
||||
//
|
||||
// this.getAllTree()
|
||||
this.getAllTree()
|
||||
}
|
||||
},
|
||||
// getAllTree() {
|
||||
// postAction(`sys/category/queryPageList`,{
|
||||
// sysDictId:this.record.id,
|
||||
// isTagDict:1
|
||||
// }).then(res=>{
|
||||
// console.log(res,'res,,,')
|
||||
// // this.tabletreeDataSource=[...res.result.records]
|
||||
// // this.total=res.result.total
|
||||
// // let data = this.toTree(this.tabletreeDataSource)
|
||||
// // this.tabletreeData=data
|
||||
// // this.parentData=this.getParents
|
||||
// // this.dataFlag=true
|
||||
// })
|
||||
// },
|
||||
getAllTree() {
|
||||
getAction(`sys/category/queryPid`,{
|
||||
sysDictId:this.record.id,
|
||||
isTagDict:1
|
||||
}).then(res=>{
|
||||
this.parentDataPid = res.result
|
||||
})
|
||||
},
|
||||
//保存
|
||||
hideModal(){
|
||||
this.$refs.ruleForm.validate(valid => {
|
||||
|
||||
@@ -52,7 +52,9 @@
|
||||
<j-dict-select-tag type="list" v-model="form.attributeType" dictCode="attribute_type"
|
||||
:placeholder="$t('PleaseSelectLabelType')"/>
|
||||
</a-form-model-item>
|
||||
|
||||
<a-form-model-item :label="$t('DisplayOrder')" prop="orderNum" class="tag-item">
|
||||
<a-input-number v-model="form.orderNum" :placeholder="$t('PleaseEnterDisplayOrder')" style="width: 100%" :min="1" :formatter="limitNumber" :parser="limitNumber" />
|
||||
</a-form-model-item>
|
||||
<a-form-model-item ref="describe" :label="$t('describe')" prop="description" class="tag-item">
|
||||
<a-input
|
||||
v-model.trim="form.description"
|
||||
@@ -72,6 +74,11 @@
|
||||
<a class="action-edit" @click="actionEdit(record)" v-has="'dict:edit'">{{$t('edit')}}</a>
|
||||
<a class="action-delete" href="javascript:;" @click="onDelete(record)" v-has="'dict:logicDelete'">{{$t('delete')}}</a>
|
||||
</template>
|
||||
<template slot="describe" slot-scope="text, record">
|
||||
<span class="text" :title="text">
|
||||
{{text && text.length > 18?text.slice(0,17)+'...':text}}
|
||||
</span>
|
||||
</template>
|
||||
</a-table>
|
||||
<div class="page" v-if="tableData.length > 0">
|
||||
<a-pagination
|
||||
@@ -145,9 +152,16 @@
|
||||
title: this.$t('describe'),
|
||||
align: 'center',
|
||||
dataIndex: 'description',
|
||||
scopedSlots: { customRender: 'describe' },
|
||||
ellipsis: true,
|
||||
width: 300
|
||||
},
|
||||
{
|
||||
title: this.$t('DisplayOrder'),
|
||||
align: 'center',
|
||||
width: 100,
|
||||
dataIndex: 'orderNum'
|
||||
},
|
||||
{
|
||||
title: this.$t('operation'),
|
||||
dataIndex: 'action',
|
||||
@@ -166,6 +180,9 @@
|
||||
{ required: true, message: this.$t('PleaseSelectLabelType'), trigger: 'blur' }
|
||||
|
||||
],
|
||||
orderNum: [
|
||||
{ required: true, message: this.$t('PleaseEnterDisplayOrder'),trigger: 'blur'},
|
||||
],
|
||||
description: [
|
||||
{ min: 1, max: 200, message: this.$t('cantExeed') + '200' + this.$t('characters'), trigger: 'blur' }
|
||||
]
|
||||
@@ -183,6 +200,16 @@
|
||||
this.loadData()
|
||||
},
|
||||
methods: {
|
||||
//正则替换小数点
|
||||
limitNumber(value) {
|
||||
if (typeof value === 'string') {
|
||||
return !isNaN(Number(value)) ? value.replace(/\./g, '') : 0
|
||||
} else if (typeof value === 'number') {
|
||||
return !isNaN(value) ? String(value).replace(/\./g, '') : 0
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
},
|
||||
//获取列表数据
|
||||
loadData(param) {
|
||||
this.loading = true
|
||||
|
||||
@@ -11,24 +11,30 @@
|
||||
{{item.db_field_txt}}
|
||||
</a-select-option>
|
||||
</a-select>
|
||||
<a-input-search
|
||||
allowClear
|
||||
<a-input
|
||||
:maxLength="100"
|
||||
v-model="selectValueTwo"
|
||||
style="width: calc(100% - 128px)"
|
||||
:placeholder="$t('pleaseEnter')+$t('searchContent')"
|
||||
@search="onSearch"
|
||||
></a-input-search>
|
||||
></a-input>
|
||||
</a-input-group>
|
||||
<a-input-search
|
||||
<a-input
|
||||
v-model="selectValueTwo"
|
||||
:maxLength="100"
|
||||
v-else-if="active === $t('whole')"
|
||||
class="inputSearch"
|
||||
allow-clear
|
||||
:placeholder="$t('pleaseEnter')+$t('searchContent')"
|
||||
@search="wholeOnSearch"
|
||||
></a-input-search>
|
||||
></a-input>
|
||||
<a-button class="textSearch"
|
||||
v-if="active === $t('DocumentLibrary')"
|
||||
@click="onSearch(selectValueTwo)"
|
||||
>{{$t('query')}}
|
||||
</a-button>
|
||||
<a-button class="textSearch"
|
||||
v-if="active === $t('whole')"
|
||||
@click="wholeOnSearch(selectValueTwo)"
|
||||
>{{$t('query')}}
|
||||
</a-button>
|
||||
<a-button class="textSearch"
|
||||
v-if="active === $t('whole') || active === $t('DocumentLibrary')"
|
||||
@click="wholeTextSearch(selectValueTwo)"
|
||||
@@ -237,7 +243,7 @@
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
.inputSearch .ant-input {
|
||||
.inputSearch {
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
}
|
||||
|
||||
@@ -774,6 +774,7 @@
|
||||
display: inline-block;
|
||||
margin-top: 2px;
|
||||
height: 40px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.itemModel-text {
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<div class="header-text">
|
||||
{{$t('engineeringConfirmation')}}
|
||||
<a-icon :title="$t('pleaseReviewTask')"
|
||||
type="question-circle" />
|
||||
type="question-circle"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="header-content">
|
||||
@@ -395,7 +395,7 @@
|
||||
{
|
||||
title: 'ID',
|
||||
dataIndex: 'serialNumber',
|
||||
align: 'left',
|
||||
align: 'left'
|
||||
},
|
||||
{
|
||||
title: this.$t('completedBy'),
|
||||
@@ -604,7 +604,7 @@
|
||||
this.dataSourceTable.forEach(val => {
|
||||
this.distributionEngineerList.push({
|
||||
name: val.userName,
|
||||
id:val.id,
|
||||
id: val.id,
|
||||
userId: val.userId,
|
||||
deliveryInstructions: val.deliveryInstructions
|
||||
})
|
||||
@@ -614,7 +614,7 @@
|
||||
}
|
||||
this.formInline.userId = userId.join(',')
|
||||
this.formInline.userName = userName.join(',')
|
||||
this.formInline = {...this.formInline}
|
||||
this.formInline = { ...this.formInline }
|
||||
}
|
||||
this.loadingTable = false
|
||||
} else {
|
||||
@@ -670,6 +670,7 @@
|
||||
},
|
||||
PersonnelSelectionChange(value, id) {
|
||||
this.formInline[value] = id
|
||||
this.distributionEngineerList = []
|
||||
if (id) {
|
||||
this.formInline.userName.split(',').forEach((res, index) => {
|
||||
this.distributionEngineerList.push({
|
||||
|
||||
@@ -190,7 +190,6 @@
|
||||
postAction('/workFlow/completeTask', query).then((res) => {
|
||||
if (res.success) {
|
||||
this.$message.success(this.$t('OperationSuccessful'))
|
||||
this.loading = false
|
||||
if (this.$route.query.taskDefinitionKey == 'zrrjsrw' || this.$route.query.taskDefinitionKey == 'zrrqr') {
|
||||
if (value.flag == 0) {
|
||||
if (this.queryProject.verifyDeliverableType) {
|
||||
@@ -204,21 +203,32 @@
|
||||
}
|
||||
if (!this.queryProject.verifyDeliverableType && !this.queryProject.prehomoDeliverableType &&
|
||||
!this.queryProject.designDeliverableType) {
|
||||
window.close()
|
||||
setTimeout(() => {
|
||||
this.loading = false
|
||||
window.close()
|
||||
}, 1000)
|
||||
// this.$router.push({
|
||||
// path: '/ProcessCenter'
|
||||
// })
|
||||
}
|
||||
} else {
|
||||
window.close()
|
||||
setTimeout(() => {
|
||||
this.loading = false
|
||||
window.close()
|
||||
}, 1000)
|
||||
// this.$router.push({
|
||||
// path: '/ProcessCenter'
|
||||
// })
|
||||
}
|
||||
} else {
|
||||
this.$router.push({
|
||||
path: '/ProcessCenter'
|
||||
})
|
||||
setTimeout(() => {
|
||||
this.loading = false
|
||||
window.close()
|
||||
}, 1000)
|
||||
|
||||
// this.$router.push({
|
||||
// path: '/ProcessCenter'
|
||||
// })
|
||||
}
|
||||
} else {
|
||||
this.loading = false
|
||||
@@ -252,13 +262,12 @@
|
||||
if (res.success) {
|
||||
this.visible = false
|
||||
setTimeout(() => {
|
||||
this.loading = false
|
||||
window.close()
|
||||
}, 2000)
|
||||
}, 3000)
|
||||
// this.$router.push({
|
||||
// path: '/ProcessCenter'
|
||||
// })
|
||||
} else {
|
||||
this.$message.warning(this.$t('operationFailed'))
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
@@ -302,13 +302,16 @@
|
||||
}
|
||||
putAction(this.url.dreSubmit, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.loading = false
|
||||
this.$message.success(this.$t('OperationSuccessful'))
|
||||
// this.$router.push({
|
||||
// path: '/ProjectDetails',
|
||||
// query: this.$route.query
|
||||
// })
|
||||
window.close()
|
||||
setTimeout(() => {
|
||||
this.loading = false
|
||||
window.close()
|
||||
}, 1000)
|
||||
|
||||
} else {
|
||||
this.loading = false
|
||||
this.$message.warning(this.$t('operationFailed'))
|
||||
@@ -326,7 +329,6 @@
|
||||
postAction('/workFlow/completeTask', query).then((res) => {
|
||||
if (res.success) {
|
||||
this.$message.success(this.$t('OperationSuccessful'))
|
||||
this.loading = false
|
||||
this.edit()
|
||||
// this.$router.push({
|
||||
// path: '/ProjectDetails',
|
||||
@@ -345,7 +347,10 @@
|
||||
}
|
||||
putAction(this.url.edit, query).then((res) => {
|
||||
if (res.success) {
|
||||
window.close()
|
||||
setTimeout(() => {
|
||||
this.loading = false
|
||||
window.close()
|
||||
}, 1000)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
+14
-3
@@ -50,9 +50,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="Virtual-detail-right">
|
||||
<ProjectDetailsName v-if="textTitle === '项目详情'"/>
|
||||
<ProjectDetailsName @TaskListChange="TaskListChange" v-if="textTitle === '项目详情'"/>
|
||||
<listOfRegulations v-else-if="textTitle === '法规清单'"/>
|
||||
<TaskList :isDisplayNum="isDisplayNum" v-else-if="textTitle === '任务清单'"/>
|
||||
<TaskList :isDisplayNum="isDisplayNum" :areaOfResponsibility="areaOfResponsibility" v-else-if="textTitle === '任务清单'"/>
|
||||
<ParameterItemCollectionList v-else-if="textTitle === '认证参数收集'" :paramsManifest='paramsManifest'/>
|
||||
<nonConformance v-else-if="textTitle === '未符合项'"/>
|
||||
</div>
|
||||
@@ -92,6 +92,7 @@
|
||||
title: this.$t('projectDetails'),
|
||||
textTitle: '认证参数收集',
|
||||
isDisplayNum: '',
|
||||
areaOfResponsibility:{},
|
||||
url: {
|
||||
logList: '/project/projectLawsInventoryLogEO/page',
|
||||
historicalVersionUrl: '',
|
||||
@@ -144,7 +145,17 @@
|
||||
this.isDisplayNum = res.result
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
TaskListChange(item){
|
||||
this.areaOfResponsibility = item
|
||||
this.textTitle = '任务清单'
|
||||
let textColor = document.getElementsByClassName('Virtual-detail-left-text-color')
|
||||
if (textColor && textColor.length > 0) {
|
||||
textColor[0].classList.remove('Virtual-detail-left-text-color')
|
||||
}
|
||||
let text = document.getElementsByClassName('Virtual-detail-left-text')
|
||||
text[2].classList.add('Virtual-detail-left-text-color')
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -51,7 +51,8 @@
|
||||
<div class="Virtual-detail-right">
|
||||
<ProjectDetailsName @TaskListChange="TaskListChange" v-if="textTitle === '项目详情'"/>
|
||||
<listOfRegulations v-else-if="textTitle === '法规清单'"/>
|
||||
<TaskList :isDisplayNum="isDisplayNum" :areaOfResponsibility="areaOfResponsibility" v-else-if="textTitle === '任务清单'"/>
|
||||
<TaskList :isDisplayNum="isDisplayNum" :areaOfResponsibility="areaOfResponsibility"
|
||||
v-else-if="textTitle === '任务清单'"/>
|
||||
<TaskParameterCollection v-else-if="textTitle === '认证参数收集'"/>
|
||||
<nonConformance v-else-if="textTitle === '未符合项'"/>
|
||||
</div>
|
||||
@@ -89,29 +90,47 @@
|
||||
data() {
|
||||
return {
|
||||
title: this.$t('projectDetails'),
|
||||
isDisplayNum:'',
|
||||
isDisplayNum: '',
|
||||
textTitle: '项目详情',
|
||||
url: {
|
||||
logList: '/project/projectLawsInventoryLogEO/page',
|
||||
historicalVersionUrl: '',
|
||||
queryUserPremissionByProjectLibraryId: '/project/projectCertificationDirectoryEO/queryUserPremissionByProjectLibraryId'
|
||||
},
|
||||
areaOfResponsibility:{},
|
||||
areaOfResponsibility: {}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.textColor()
|
||||
this.textColor(0)
|
||||
this.getTaskId()
|
||||
if (this.$route.query.type) {
|
||||
if (this.$route.query.type == '101') {
|
||||
this.textColor(0)
|
||||
this.textTitle = '详情详情'
|
||||
} else if (this.$route.query.type == '102') {
|
||||
this.textColor(1)
|
||||
this.textTitle = '法规清单'
|
||||
} else if (this.$route.query.type == '103') {
|
||||
this.textColor(2)
|
||||
this.textTitle = '任务清单'
|
||||
} else if (this.$route.query.type == '104') {
|
||||
this.textColor(3)
|
||||
this.textTitle = '未符合项'
|
||||
} else if (this.$route.query.type == '105') {
|
||||
this.textColor(4)
|
||||
this.textTitle = '认证参数收集'
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
textColor() {
|
||||
textColor(num) {
|
||||
let textColor = document.getElementsByClassName('Virtual-detail-left-text-color')
|
||||
if (textColor && textColor.length > 0) {
|
||||
textColor[0].classList.remove('Virtual-detail-left-text-color')
|
||||
}
|
||||
let text = document.getElementsByClassName('Virtual-detail-left-text')
|
||||
if (text && text.length > 0) {
|
||||
text[0].classList.add('Virtual-detail-left-text-color')
|
||||
text[num].classList.add('Virtual-detail-left-text-color')
|
||||
}
|
||||
},
|
||||
textClick(num, name) {
|
||||
@@ -138,11 +157,11 @@
|
||||
}
|
||||
getAction(this.url.queryUserPremissionByProjectLibraryId, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.isDisplayNum = res.result
|
||||
this.isDisplayNum = res.result
|
||||
}
|
||||
})
|
||||
},
|
||||
TaskListChange(item){
|
||||
TaskListChange(item) {
|
||||
this.areaOfResponsibility = item
|
||||
this.textTitle = '任务清单'
|
||||
let textColor = document.getElementsByClassName('Virtual-detail-left-text-color')
|
||||
@@ -151,7 +170,7 @@
|
||||
}
|
||||
let text = document.getElementsByClassName('Virtual-detail-left-text')
|
||||
text[2].classList.add('Virtual-detail-left-text-color')
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -415,7 +415,7 @@
|
||||
font-size: 14px;
|
||||
margin-right: 16px;
|
||||
margin-top: 3px;
|
||||
text-align: right;
|
||||
text-align: left;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
</span>
|
||||
</a-select-option>
|
||||
|
||||
<a-select-option :value="'4'">
|
||||
<a-select-option :value="'4'" disabled>
|
||||
<span style="display: inline-block;width: 100%">
|
||||
{{ $t('blue') }}
|
||||
</span>
|
||||
@@ -127,7 +127,7 @@
|
||||
</span>
|
||||
</a-select-option>
|
||||
|
||||
<a-select-option :value="'4'">
|
||||
<a-select-option :value="'4'" disabled>
|
||||
<span style="display: inline-block;width: 100%">
|
||||
{{ $t('blue') }}
|
||||
</span>
|
||||
|
||||
@@ -486,6 +486,7 @@
|
||||
display: inline-block;
|
||||
margin-top: 2px;
|
||||
height: 40px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.Required {
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<a-form-model-item class="itemModel">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.directoryName"
|
||||
v-model.trim="formInline.directoryName"
|
||||
:placeholder="$t('PleaseEnter')+$t('directoryName')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -33,7 +33,7 @@
|
||||
<a-form-model-item class="itemModel">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.lot"
|
||||
v-model.trim="formInline.lot"
|
||||
:placeholder="$t('PleaseEnter')+$t('batch')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -80,7 +80,7 @@
|
||||
<a-form-model-item class="itemModel">
|
||||
<a-input class="box-input"
|
||||
:disabled="disabled"
|
||||
v-model="formInline.detectionReportLocation"
|
||||
v-model.trim="formInline.detectionReportLocation"
|
||||
:placeholder="$t('PleaseEnter')+$t('testReportLocation')"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
@@ -97,7 +97,7 @@
|
||||
<a-textarea
|
||||
style="width: 100%"
|
||||
:placeholder="$t('PleaseEnter')+$t('explain')"
|
||||
v-model="formInline.explainInfo" :rows="4"/>
|
||||
v-model.trim="formInline.explainInfo" :rows="4"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
@@ -257,6 +257,7 @@
|
||||
display: inline-block;
|
||||
margin-top: 2px;
|
||||
height: 40px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.title-text-text {
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
name: this.$t('experimentFailed'),
|
||||
status: res.certificationProgress
|
||||
})
|
||||
color.push('#FF8543')
|
||||
color.push('#E83030')
|
||||
this.dataSource[0].experimentFailed = res.certificationProgressCount
|
||||
} else if (res.certificationProgress == 'Test passed') {
|
||||
data.push({
|
||||
|
||||
@@ -1256,6 +1256,7 @@
|
||||
display: inline-block;
|
||||
margin-top: 2px;
|
||||
height: 40px;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.itemModel-text {
|
||||
|
||||
@@ -1077,9 +1077,11 @@
|
||||
}
|
||||
})
|
||||
} else {
|
||||
let index = 0
|
||||
for (let i = 0; i < this.dataSource.length; i++) {
|
||||
for (let j = 0; j < selectedRowKeys.length; j++) {
|
||||
if (this.dataSource[i].id == selectedRowKeys[j]) {
|
||||
index++
|
||||
this.dataSource[i].taskAffirmDueDate = this.formInline.taskAffirmDueDate
|
||||
Object.keys(this.dataSource[i]).forEach(res => {
|
||||
if (this.dataSource[i][res] && this.dataSource[i][res] instanceof String) {
|
||||
@@ -1089,7 +1091,7 @@
|
||||
})
|
||||
setTimeout(() => {
|
||||
this.confirmLoading = true
|
||||
this.startProcess(this.dataSource[i])
|
||||
this.startProcess(this.dataSource[i],index)
|
||||
}, 500)
|
||||
}
|
||||
}
|
||||
@@ -1099,7 +1101,7 @@
|
||||
})
|
||||
},
|
||||
|
||||
startProcess(value) {
|
||||
startProcess(value,index) {
|
||||
let query = {
|
||||
type: 1,
|
||||
msg: JSON.stringify(value).replace(/\"/g, '\''),
|
||||
@@ -1110,12 +1112,12 @@
|
||||
}
|
||||
postAction('/workFlow/startProcess', query).then((res) => {
|
||||
if (res.success) {
|
||||
this.completeTask(value, res.result)
|
||||
this.completeTask(value, res.result,index)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
completeTask(value, taskId) {
|
||||
completeTask(value, taskId,index) {
|
||||
let handlingTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
|
||||
value.handlingTime = handlingTime
|
||||
let query = {
|
||||
@@ -1125,11 +1127,13 @@
|
||||
}
|
||||
postAction('/workFlow/completeTask', query).then((res) => {
|
||||
if (res.success) {
|
||||
this.visible = false
|
||||
this.selectedRowKeys = []
|
||||
this.$message.success(this.$t('OperationSuccessful'))
|
||||
this.confirmLoading = false
|
||||
this.getList()
|
||||
if (index == this.selectedRowKeys.length){
|
||||
this.visible = false
|
||||
this.selectedRowKeys = []
|
||||
this.$message.success(this.$t('OperationSuccessful'))
|
||||
this.confirmLoading = false
|
||||
this.getList()
|
||||
}
|
||||
} else {
|
||||
this.$message.warning(this.$t('operationFailed'))
|
||||
}
|
||||
|
||||
@@ -0,0 +1,207 @@
|
||||
<template>
|
||||
<div>
|
||||
<a-modal v-model="visible"
|
||||
:maskClosable="false"
|
||||
@ok="handleOk"
|
||||
:confirm-loading="confirmLoading"
|
||||
@cancel="handleCancel"
|
||||
:title="title">
|
||||
<a-upload-dragger
|
||||
accept='*.*'
|
||||
:disabled="disabled"
|
||||
class="ant-upload-list"
|
||||
:class="{'uploadFile':isUploadFile}"
|
||||
name="file"
|
||||
:file-list="myfileList"
|
||||
:multiple="true"
|
||||
:action="uploadAction+'?state='+state+'&cut='+cut"
|
||||
:headers="headers"
|
||||
@preview="preview"
|
||||
:before-upload="beforeUpload"
|
||||
:remove='remove'
|
||||
@change="handleChange">
|
||||
<p v-if="!isUploadFile">
|
||||
<a-icon class="action-upload" type="cloud-upload"/>
|
||||
</p>
|
||||
<p v-if="!isUploadFile" class="ant-upload-text" style="font-size: 14px;line-height: 30px">
|
||||
{{this.$t('clickUpload')}}</p>
|
||||
</a-upload-dragger>
|
||||
</a-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Vue from 'vue'
|
||||
import { ACCESS_TOKEN } from '@/store/mutation-types'
|
||||
import { getAction, postAction, downFile, downloadFile } from '@/api/manage'
|
||||
import { Base64 } from 'js-base64'
|
||||
|
||||
export default {
|
||||
name: 'resultReportedUpload',
|
||||
props: ['disableds', 'disabled', 'thisFileUploadUrl', 'readonly', 'thisFileType', 'isUploadFile'],
|
||||
data() {
|
||||
return {
|
||||
visible: false,
|
||||
title: this.$t('upload1') + this.$t('resultReported'),
|
||||
uploadAction: window._CONFIG['domianURL'] + '/sys/common/upload',
|
||||
state: undefined,
|
||||
myuploadAction: window._CONFIG['domianURL'] + this.thisFileUploadUrl,
|
||||
upDataList: [],
|
||||
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
|
||||
fileList: [],
|
||||
myfileList: [],
|
||||
isLoding: false,
|
||||
cut: '',
|
||||
confirmLoading: false,
|
||||
uploadQuery: {},
|
||||
}
|
||||
},
|
||||
created() {
|
||||
const token = Vue.ls.get(ACCESS_TOKEN)
|
||||
this.headers = { 'X-Access-Token': token }
|
||||
this.containerId = 'container-ty-' + new Date().getTime()
|
||||
},
|
||||
mounted() {
|
||||
let long = localStorage.getItem('language')
|
||||
this.cut = ''
|
||||
if (long && long == 'zh-cn') {
|
||||
this.cut = 'cn'
|
||||
} else if (long && long == 'en-us') {
|
||||
this.cut = 'en'
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
clickButtonToUploadFile(item) {
|
||||
this.uploadQuery = item
|
||||
this.myfileList = []
|
||||
this.visible = true
|
||||
getAction('sys/common/getFileInfos', { id: item }).then((res) => {
|
||||
if (res.success) {
|
||||
let data = res.result
|
||||
if (data && data.length > 0) {
|
||||
this.myfileList.forEach((res) => {
|
||||
res.name = res.fileName
|
||||
res.uid = res.id
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
handleOk() {
|
||||
if (this.myfileList && this.myfileList.length == 0) {
|
||||
this.$message.warning(this.$t('pleaseUpload') + this.$t('resultReported'))
|
||||
} else {
|
||||
|
||||
}
|
||||
},
|
||||
handleCancel() {
|
||||
this.visible = false
|
||||
},
|
||||
beforeUpload(file) {
|
||||
this.fileTypeSatus = true
|
||||
this.$message.destroy()
|
||||
},
|
||||
remove() {
|
||||
this.fileTypeSatus = true
|
||||
},
|
||||
handleChange(info) {
|
||||
let { file } = info
|
||||
const status = info.file.status
|
||||
info.fileList.forEach((val, index) => {
|
||||
if (val.response && !val.response.result) {
|
||||
this.$message.error(val.response.message)
|
||||
info.fileList.splice(index, 1)
|
||||
}
|
||||
})
|
||||
if (status === 'error') {
|
||||
this.$message.destroy()
|
||||
this.$message.error(`${info.file.name}` + this.$t('FileUploadFailed'))
|
||||
} else if (status === 'removed') {
|
||||
this.myfileList = info.fileList
|
||||
this.fileList = []
|
||||
this.myfileList.forEach((res) => {
|
||||
if (res.response) {
|
||||
this.fileList.push(res.response.result)
|
||||
} else {
|
||||
this.fileList.push(res)
|
||||
}
|
||||
})
|
||||
if (this.myfileList.length > 0) {
|
||||
this.$message.destroy()
|
||||
this.$message.success(`${info.file.name}` + this.$t('DeletedSuccessfully'))
|
||||
}
|
||||
} else if (status === 'done') {
|
||||
this.fileList = []
|
||||
this.myfileList = info.fileList
|
||||
if (info.fileList.length > 20) {
|
||||
info.fileList.splice(20)
|
||||
this.myfileList = info.fileList
|
||||
this.myfileList.forEach((res) => {
|
||||
if (res.response) {
|
||||
this.fileList.push(res.response.result)
|
||||
} else {
|
||||
this.fileList.push(res)
|
||||
}
|
||||
})
|
||||
this.$message.destroy()
|
||||
this.$message.error(this.$t('UploadMost'))
|
||||
return
|
||||
}
|
||||
this.myfileList.forEach((res) => {
|
||||
if (res.response) {
|
||||
this.fileList.push(res.response.result)
|
||||
} else {
|
||||
this.fileList.push(res)
|
||||
}
|
||||
})
|
||||
if (this.myfileList.length > 0) {
|
||||
this.$message.destroy()
|
||||
if (file.response.success) {
|
||||
this.$message.success(`${info.file.name}` + this.$t('FileUploadedSuccessfully'))
|
||||
}
|
||||
}
|
||||
} else if (status === 'uploading') {
|
||||
this.myfileList = info.fileList
|
||||
// this.$message.success(`${info.file.name} 文件上传成功。`);
|
||||
}
|
||||
},
|
||||
resetFileList() {
|
||||
this.myfileList = []
|
||||
this.fileList = []
|
||||
},
|
||||
preview(file) {
|
||||
let fileQuery = file.response ? file.response.result : file
|
||||
let fileName = fileQuery.fileName
|
||||
let index1 = fileName.lastIndexOf('.')
|
||||
let index2 = fileName.length
|
||||
let fileSuffix = fileName.substring(index1, index2)
|
||||
if (fileSuffix === '.pdf') {
|
||||
window.open('/pdf/web/viewer.html?file=' + encodeURIComponent('/jero-boot/sys/common/pdf/viewFile?id=' + fileQuery.id))
|
||||
} else if (fileSuffix === '.docx') {
|
||||
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
|
||||
window.open(url, '_blank')
|
||||
} else if (fileSuffix === '.xlsx' || fileSuffix === '.xls') {
|
||||
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
|
||||
window.open(url, '_blank')
|
||||
} else {
|
||||
downloadFile('/sys/common/downLoadFile', fileQuery.fileName, { id: fileQuery.id })
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.ant-upload-list-item-name {
|
||||
color: rgba(0, 0, 0, 0.65) !important;
|
||||
}
|
||||
|
||||
.action-upload {
|
||||
font-size: 67px;
|
||||
color: #c0c4cc;
|
||||
}
|
||||
|
||||
.uploadFile {
|
||||
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,372 @@
|
||||
<template>
|
||||
<div class="doc-detail">
|
||||
<div class="Virtual-detail-header" style="position: fixed;top: 0">
|
||||
<div class="Virtual-detail-title">
|
||||
<span>
|
||||
{{this.$t('regulatoryCertificationTaskPlan')}}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div style="padding: 87px 0 0 0;background: #ffffff;height:100%">
|
||||
<div class="detail-content" style="height: 100%">
|
||||
<span style="float: right" class="box-top-text-right">
|
||||
<a-range-picker
|
||||
:placeholder="[this.$t('startMonth'), this.$t('endMonth')]"
|
||||
format="YYYY-MM"
|
||||
v-model="getTime"
|
||||
:mode="mode2"
|
||||
:open="open"
|
||||
@openChange="openChange"
|
||||
@panelChange="panelChange"
|
||||
@change="hodeChange"
|
||||
>
|
||||
<div slot="renderExtraFooter" style="width: 100%;display: block">
|
||||
<div style="text-align: right;width: 100%">
|
||||
<a @click="okChange">{{$t('determine')}}</a>
|
||||
</div>
|
||||
</div>
|
||||
</a-range-picker>
|
||||
</span>
|
||||
<div class="box-top-content">
|
||||
<div id="main"></div>
|
||||
<div class="axis-tip"></div>
|
||||
<JLoading :loading="loadingMain">{{this.$t('dataLoading')}}</JLoading>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, deleteAction } from '@/api/manage'
|
||||
import moment from 'moment'
|
||||
import * as echarts from 'echarts'
|
||||
|
||||
export default {
|
||||
name: 'TaskPlanList',
|
||||
data() {
|
||||
return {
|
||||
url: {
|
||||
timeline: '/project/ProjectStatusBoardController/timeline',
|
||||
timelineList: '/project/ProjectStatusBoardController/timelineList'
|
||||
},
|
||||
startTime: undefined,
|
||||
endTime: undefined,
|
||||
mode2: ['month', 'month'],
|
||||
loading: false,
|
||||
loadingMain: false,
|
||||
dataSource: [],
|
||||
open: false,
|
||||
getTime: []
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getTimeline()
|
||||
},
|
||||
methods: {
|
||||
getTimeline() {
|
||||
let query = {
|
||||
startTime: this.startTime,
|
||||
endTime: this.endTime
|
||||
}
|
||||
this.loadingMain = true
|
||||
getAction(this.url.timeline, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.getTimelineList(res.result)
|
||||
}
|
||||
})
|
||||
},
|
||||
openChange(val) {
|
||||
this.open = val
|
||||
},
|
||||
okChange() {
|
||||
this.open = false
|
||||
this.getTimeline()
|
||||
},
|
||||
hodeChange() {
|
||||
this.getTime = []
|
||||
this.startTime = undefined
|
||||
this.endTime = undefined
|
||||
this.getTimeline()
|
||||
},
|
||||
panelChange(value, mode) {
|
||||
this.getTime = value
|
||||
this.startTime = moment(value[0]).format('YYYY-MM')
|
||||
this.endTime = moment(value[1]).format('YYYY-MM')
|
||||
},
|
||||
getTimelineList(time) {
|
||||
let query = {
|
||||
startTime: this.startTime,
|
||||
endTime: this.endTime
|
||||
}
|
||||
getAction(this.url.timelineList, query).then((res) => {
|
||||
if (res.success) {
|
||||
this.getEcharts(time, res.result)
|
||||
}
|
||||
})
|
||||
},
|
||||
getEcharts(timeList, timeData) {
|
||||
var chartDom = document.getElementById('main')
|
||||
var myChart = echarts.init(chartDom)
|
||||
var option
|
||||
let list = []
|
||||
let listTime = []
|
||||
for (let i = 0; i < timeList.length; i++) {
|
||||
for (let j = 0; j < 31; j++) {
|
||||
let num
|
||||
if ((j + 1) < 10) {
|
||||
num = '0' + (j + 1)
|
||||
} else {
|
||||
num = (j + 1)
|
||||
}
|
||||
listTime.push(timeList[i])
|
||||
list.push(timeList[i] + '-' + num)
|
||||
}
|
||||
}
|
||||
const hours = listTime
|
||||
const days = []
|
||||
let content = []
|
||||
if (timeData && timeData.length > 0) {
|
||||
timeData.forEach(res => {
|
||||
days.push(res.projectName)
|
||||
content.push(res.data[0])
|
||||
})
|
||||
}
|
||||
let timeDataList = []
|
||||
let data = []
|
||||
for (let j = 0; j < content.length; j++) {
|
||||
for (let k = 0; k < content[j].length; k++) {
|
||||
content[j][k].index = j
|
||||
timeDataList.push(content[j][k])
|
||||
}
|
||||
}
|
||||
for (let i = 0; i < list.length; i++) {
|
||||
for (let j = 0; j < timeDataList.length; j++) {
|
||||
let time = JSON.stringify(timeDataList[j].time).slice(1, 11)
|
||||
if (time == list[i]) {
|
||||
data.push([i, timeDataList[j].index, 14, j])
|
||||
}
|
||||
}
|
||||
}
|
||||
let num = timeList.length * 3
|
||||
if (num < 31) {
|
||||
num = 31
|
||||
}
|
||||
option = {
|
||||
legend: {
|
||||
data: ['Punch Card'],
|
||||
left: 'right'
|
||||
},
|
||||
tooltip: {
|
||||
position: 'left',
|
||||
formatter: function(params) {
|
||||
return (
|
||||
timeDataList[params.value[3]].name + '<br/>' +
|
||||
timeDataList[params.value[3]].time.slice(0, 11)
|
||||
)
|
||||
}
|
||||
},
|
||||
grid: {
|
||||
top: 10,
|
||||
left: 40,
|
||||
right: 40,
|
||||
containLabel: true
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: hours,
|
||||
boundaryGap: false,
|
||||
splitLine: {
|
||||
show: false
|
||||
},
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
position: 'top',
|
||||
axisLabel: {
|
||||
showMinLabel: true,
|
||||
interval: num,
|
||||
textStyle: {
|
||||
fontFamily: 'Blue Sky Noto',
|
||||
color: '#000F16',
|
||||
fontSize: '16'
|
||||
}
|
||||
},
|
||||
axisLine: {
|
||||
show: false
|
||||
}
|
||||
},
|
||||
yAxis: {
|
||||
type: 'category',
|
||||
data: days,
|
||||
splitLine: {
|
||||
show: false
|
||||
},
|
||||
axisLine: {
|
||||
show: false
|
||||
},
|
||||
axisTick: {
|
||||
show: false
|
||||
},
|
||||
scale: true,
|
||||
triggerEvent: true,
|
||||
axisLabel: {
|
||||
textStyle: {
|
||||
fontFamily: 'Blue Sky Noto',
|
||||
color: '#000F16',
|
||||
fontSize: '16'
|
||||
},
|
||||
margin: 50,
|
||||
formatter: function(params) {
|
||||
var val = ''
|
||||
if (params.length > 8) {
|
||||
val = params.substr(0, 8) + '...'
|
||||
return val
|
||||
} else {
|
||||
return params
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
series: [
|
||||
{
|
||||
type: 'scatter',
|
||||
symbolSize: function(val) {
|
||||
return val[2] * 2
|
||||
},
|
||||
data: data,
|
||||
animationDelay: function(idx) {
|
||||
return idx * 5
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
this.loadingMain = false
|
||||
option && myChart.setOption(option, true)
|
||||
window.onresize = () => {
|
||||
myChart.resize()
|
||||
}
|
||||
myChart.on('mouseover', 'yAxis.category', function(e) {
|
||||
console.log(e)
|
||||
let axisTip = document.querySelector('.axis-tip')
|
||||
console.log(axisTip)
|
||||
axisTip.innerText = e.value
|
||||
axisTip.style.left = 100 + 'px'
|
||||
axisTip.style.top = (e.event.event.y) - 180 + 'px'
|
||||
axisTip.style.display = 'block'
|
||||
})
|
||||
myChart.on('mouseout', 'yAxis.category', function(e) {
|
||||
let axisTip = document.querySelector('.axis-tip')
|
||||
axisTip.innerText = ''
|
||||
axisTip.style.display = 'none'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import '~@assets/less/common.less';
|
||||
|
||||
.doc-detail {
|
||||
background: #fff;
|
||||
height: 100%;
|
||||
|
||||
.Virtual-detail-header {
|
||||
width: 100%;
|
||||
height: 68px;
|
||||
line-height: 68px;
|
||||
padding: 0 32px 0 32px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
border-bottom: 2px #eff1f3 solid;
|
||||
background: #fff;
|
||||
|
||||
.Virtual-detail-title {
|
||||
display: inline-block;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
font-size: 20px;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
line-height: 68px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.box-title-text {
|
||||
line-height: 1.4;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.title-text {
|
||||
width: 70px;
|
||||
color: #000F16;
|
||||
display: inline-block;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
margin-right: 16px;
|
||||
margin-top: 3px;
|
||||
text-align: right;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.box-input {
|
||||
display: inline-block;
|
||||
width: 70%;
|
||||
height: 38px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
.box-top-text {
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: #000F16;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.box-top-content {
|
||||
width: 100%;
|
||||
height: calc(100vh - 160px);
|
||||
margin-bottom: 20px;
|
||||
padding: 10px 20px;
|
||||
box-sizing: border-box;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.box-button {
|
||||
height: 38px;
|
||||
}
|
||||
|
||||
#main {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.axis-tip {
|
||||
display: none;
|
||||
position: absolute;
|
||||
padding: 5px 5px;
|
||||
font-size: 12px;
|
||||
line-height: 18px;
|
||||
color: #575757;
|
||||
background: #ffffff;
|
||||
box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.2);
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.box-top-text-right {
|
||||
display: inline-block;
|
||||
float: right;
|
||||
height: 38px;
|
||||
width: 300px;
|
||||
margin-top: -4px;
|
||||
margin-right: 20px;
|
||||
}
|
||||
</style>
|
||||
+215
@@ -0,0 +1,215 @@
|
||||
<template>
|
||||
<div class="doc-detail">
|
||||
<div class="Virtual-detail-header" style="position: fixed;top: 0">
|
||||
<div class="Virtual-detail-title">
|
||||
<span>
|
||||
{{this.$t('projectStatusAndProgress')}}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div style="padding: 77px 0 0 0;background: #ffffff;height:100%">
|
||||
<div class="detail-content" style="height: 100%">
|
||||
<a-table
|
||||
ref="table"
|
||||
size="middle"
|
||||
:loading="loading"
|
||||
:pagination="false"
|
||||
:scroll="{x: true,y:'calc(100vh - 180px)'}"
|
||||
:data-source="dataSource"
|
||||
:columns="columns"
|
||||
>
|
||||
<span slot="projectStatusTitle">
|
||||
<span>{{this.$t('projectStatus')}}</span><br/>
|
||||
<span>{{'('+$t('red')+'/'+$t('yellow')+'/'+$t('green')+')'}}</span>
|
||||
</span>
|
||||
<span slot="CertificationProgressTitle">
|
||||
<span>{{this.$t('CertificationProgress')}}</span><br/>
|
||||
<span>{{'('+$t('notInvolved')+'/'+$t('toBeStarted')+'/'+$t('inProgress')+'/'+$t('experimentFailed')+'/'+$t('experimentPassed')+')'}}</span>
|
||||
</span>
|
||||
<span slot="listConfirmationStatusTitle">
|
||||
<span>{{this.$t('listConfirmationStatus')}}</span><br/>
|
||||
<span>{{'('+$t('notLaunch')+'/'+$t('toBeConfirmed')+'/'+$t('accept')+'/'+$t('refuse')+')'}}</span>
|
||||
</span>
|
||||
<span slot="taskAffirmStatusTitle">
|
||||
<span>{{this.$t('taskAffirmStatus')}}</span><br/>
|
||||
<span>{{'('+$t('notLaunch')+'/'+$t('toBeConfirmed')+'/'+$t('accept')+'/'+$t('refuse')+')'}}</span>
|
||||
</span>
|
||||
<span slot="designComplianceReviewTitle">
|
||||
<span>{{this.$t('designComplianceReview')}}</span><br/>
|
||||
<span>{{'('+$t('toBeConfirmed')+'/'+$t('accord')+'/'+$t('nonConformity')+'/'+$t('Tracked')+'/'+$t('notInvolved')+'/'+$t('taskTermination')+')'}}</span>
|
||||
</span>
|
||||
<span slot="preHomeConfirmationTitle">
|
||||
<span>{{this.$t('preHomeConfirmation')}}</span><br/>
|
||||
<span>{{'('+$t('toBeConfirmed')+'/'+$t('accord')+'/'+$t('nonConformity')+'/'+$t('Tracked')+'/'+$t('notInvolved')+'/'+$t('taskTermination')+')'}}</span>
|
||||
</span>
|
||||
<span slot="verificationComplianceReviewTitle">
|
||||
<span>{{this.$t('verificationComplianceReview')}}</span><br/>
|
||||
<span>{{'('+$t('toBeConfirmed')+'/'+$t('accord')+'/'+$t('nonConformity')+'/'+$t('Tracked')+'/'+$t('notInvolved')+'/'+$t('taskTermination')+')'}}</span>
|
||||
</span>
|
||||
</a-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { getAction, postAction, deleteAction } from '@/api/manage'
|
||||
|
||||
export default {
|
||||
name: 'projectStatusAndProgress',
|
||||
data() {
|
||||
return {
|
||||
url: {
|
||||
list: '/project/ProjectStatusBoardController/scheduleInfoList'
|
||||
},
|
||||
loading: false,
|
||||
dataSource: [],
|
||||
columns: [
|
||||
{
|
||||
title: this.$t('entryName'),
|
||||
align: 'center',
|
||||
dataIndex: 'projectName',
|
||||
width: 180
|
||||
},
|
||||
{
|
||||
title: this.$t('targetMarket'),
|
||||
align: 'center',
|
||||
dataIndex: 'targetMarket',
|
||||
width: 180
|
||||
},
|
||||
{
|
||||
align: 'center',
|
||||
dataIndex: 'projectStatus',
|
||||
scopedSlots: { title: 'projectStatusTitle' },
|
||||
width: 240
|
||||
},
|
||||
{
|
||||
align: 'center',
|
||||
dataIndex: 'certificationProgress',
|
||||
width: 340,
|
||||
scopedSlots: { title: 'CertificationProgressTitle' }
|
||||
},
|
||||
{
|
||||
align: 'center',
|
||||
dataIndex: 'inventory',
|
||||
width: 340,
|
||||
scopedSlots: { title: 'listConfirmationStatusTitle' }
|
||||
},
|
||||
{
|
||||
align: 'center',
|
||||
dataIndex: 'task',
|
||||
width: 340,
|
||||
scopedSlots: { title: 'taskAffirmStatusTitle' }
|
||||
},
|
||||
{
|
||||
align: 'center',
|
||||
dataIndex: 'design',
|
||||
width: 440,
|
||||
scopedSlots: { title: 'designComplianceReviewTitle' }
|
||||
},
|
||||
{
|
||||
dataIndex: 'pre',
|
||||
align: 'center',
|
||||
width: 440,
|
||||
scopedSlots: { title: 'preHomeConfirmationTitle' }
|
||||
},
|
||||
{
|
||||
dataIndex: 'verify',
|
||||
align: 'center',
|
||||
width: 440,
|
||||
scopedSlots: { title: 'verificationComplianceReviewTitle' }
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.getList()
|
||||
},
|
||||
methods: {
|
||||
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 = []
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import '~@assets/less/common.less';
|
||||
|
||||
.doc-detail {
|
||||
background: #fff;
|
||||
height: 100%;
|
||||
|
||||
.Virtual-detail-header {
|
||||
width: 100%;
|
||||
height: 68px;
|
||||
line-height: 68px;
|
||||
padding: 0 32px 0 32px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
border-bottom: 2px #eff1f3 solid;
|
||||
background: #fff;
|
||||
|
||||
.Virtual-detail-title {
|
||||
display: inline-block;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
font-size: 20px;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
line-height: 68px;
|
||||
}
|
||||
|
||||
.doc-detail-right {
|
||||
width: 800px;
|
||||
line-height: 68px;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
.Virtual-detail-left {
|
||||
width: 240px;
|
||||
padding: 16px 24px;
|
||||
box-sizing: border-box;
|
||||
font-size: 16px;
|
||||
line-height: 3;
|
||||
float: left;
|
||||
|
||||
.Virtual-detail-left-text {
|
||||
padding: 2px 12px;
|
||||
cursor: pointer;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
.Virtual-detail-right {
|
||||
border-left: 2px #eff1f3 solid;
|
||||
width: calc(100% - 240px);
|
||||
height: 100%;
|
||||
float: left;
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
|
||||
.Virtual-detail-left-text-color {
|
||||
background: #eff1f3;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.Virtual-detail-text-right {
|
||||
|
||||
}
|
||||
</style>
|
||||
@@ -65,6 +65,7 @@
|
||||
ref="table"
|
||||
size="middle"
|
||||
:loading="loading"
|
||||
:customRow="projectNameClick"
|
||||
:pagination="false"
|
||||
:scroll="{x: true,y:500}"
|
||||
:data-source="dataSource"
|
||||
@@ -374,9 +375,7 @@
|
||||
myChart.resize()
|
||||
}
|
||||
myChart.on('mouseover', 'yAxis.category', function(e) {
|
||||
console.log(e)
|
||||
let axisTip = document.querySelector('.axis-tip')
|
||||
console.log(axisTip)
|
||||
axisTip.innerText = e.value
|
||||
axisTip.style.left = 100 + 'px'
|
||||
axisTip.style.top = (e.event.event.y) - 180 + 'px'
|
||||
@@ -387,6 +386,12 @@
|
||||
axisTip.innerText = ''
|
||||
axisTip.style.display = 'none'
|
||||
})
|
||||
myChart.on('click', (params) => {
|
||||
let newUrl = this.$router.resolve({
|
||||
path: '/TaskPlanList'
|
||||
})
|
||||
window.open(newUrl.href, '_blank')
|
||||
})
|
||||
},
|
||||
searchQuery() {
|
||||
this.getList()
|
||||
@@ -406,6 +411,18 @@
|
||||
this.dataSource = []
|
||||
}
|
||||
})
|
||||
},
|
||||
projectNameClick() {
|
||||
return {
|
||||
on: {
|
||||
click: () => {
|
||||
let newUrl = this.$router.resolve({
|
||||
path: '/projectStatusAndProgress'
|
||||
})
|
||||
window.open(newUrl.href, '_blank')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user