Merge remote-tracking branch 'origin/dev_2nd_LCYH' into dev_2nd_LCYH

This commit is contained in:
高嵩
2023-04-04 18:29:15 +08:00
30 changed files with 1712 additions and 482 deletions
@@ -101,6 +101,7 @@ public class SysDictItem implements Serializable {
private java.lang.String attributeType;
/**逻辑删除标识*/
/**value0可用,1逻辑删除**/
@TableLogic
public Integer delFlag;
@@ -4,16 +4,17 @@ package com.jero.modules.system.enums;
* 数据字典code枚举类
*/
public enum DicCodeEnum {
REGION("适用地区","0","region"),
REGION("适用地区","1493782108399820801","region"),
DUTY_TERRITORY("责任领域","1513417672023441409","duty_territory"),
;
String name;
String value;
String id;
String code;
private DicCodeEnum(String name, String value, String code) {
private DicCodeEnum(String name, String id, String code) {
this.name = name;
this.value = value;
this.id = id;
this.code = code;
}
@@ -25,13 +26,14 @@ public enum DicCodeEnum {
this.name = name;
}
public String getValue() {
return value;
public String getId() {
return id;
}
public void setValue(String value) {
this.value = value;
public void setId(String id) {
this.id = id;
}
public String getCode() {
return code;
}
@@ -40,10 +42,10 @@ public enum DicCodeEnum {
this.code = code;
}
public static String getTextByValue(String value) {
public static String getTextByCode(String code) {
DicCodeEnum[] values = values();
for (DicCodeEnum dicCodeEnum : values) {
if (dicCodeEnum.value.equals(value)) {
if (dicCodeEnum.code.equals(code)) {
return dicCodeEnum.name;
}
}
@@ -26,7 +26,7 @@ public interface SysDictItemMapper extends BaseMapper<SysDictItem> {
@Select("SELECT sys_dict_item.* FROM sys_dict_item LEFT JOIN sys_dict ON sys_dict_item.dict_id = sys_dict.id WHERE DICT_CODE = #{dictCode} order by sys_dict_item.item_text asc")
public List<SysDictItem> selectItemsOrderBySortOrder(String dictCode);
@Select("SELECT sys_dict.dict_code,sys_dict_item.* from sys_dict_item LEFT JOIN sys_dict ON sys_dict_item.dict_id = sys_dict.id where status = 1")
@Select("SELECT sys_dict.dict_code,sys_dict_item.* from sys_dict_item LEFT JOIN sys_dict ON sys_dict_item.dict_id = sys_dict.id where status = 1 and sys_dict_item.del_flag = 0")
List<SysDictItem> selectItemsAll();
/**
@@ -65,12 +65,12 @@ public class AuthDummyInventoryInfoEOEn implements Serializable {
private String category;
/**检验项目*/
@Excel(name = "Inspection Items", width = 15)
@Excel(name = "Inspection Items", width = 30)
@ApiModelProperty(value = "检验项目")
private String inspectionItem;
/**配置项*/
@Excel(name = "Configuration Item", width = 15)
@Excel(name = "Configuration Item", width = 30)
@ApiModelProperty(value = "配置项")
private String configItem;
@@ -88,7 +88,7 @@ public class AuthDummyInventoryInfoEOEn implements Serializable {
@ApiModelProperty(value = "责任领域")
private String dutyTerritory;
@TableField(exist = false)
@Excel(name = "Responsible Field", width = 15)
@Excel(name = "Responsible Field", width = 30)
// 责任领域名称
private String dutyTerritoryName;
/**责任领域名称-英文**/
@@ -100,25 +100,27 @@ public class AuthDummyInventoryInfoEOEn implements Serializable {
@ApiModelProperty(value = "交付物")
private String deliverable;
/**交付物模板*/
@ApiModelProperty(value = "交付物模板")
private java.lang.String deliverableTemplate;
/**交付物模板名称**/
@TableField(exist = false)
@Excel(name = "Deliverable Template", width = 40)
private String deliverableTemplateName;
/**交付物类型*/
@ApiModelProperty(value = "交付物类型")
private String deliverableType;
@TableField(exist = false)
@Excel(name = "Deliverable Type", width = 15)
@Excel(name = "Deliverable Type", width = 30)
// 交付物类型名称
private String deliverableTypeName;
// 交付物类型名称-英文
@TableField(exist = false)
private String deliverableTypeNameEn;
/**交付物模板*/
@ApiModelProperty(value = "交付物模板")
private java.lang.String deliverableTemplate;
/**交付物模板名称**/
@TableField(exist = false)
@Excel(name = "Deliverable Template", width = 30)
private String deliverableTemplateName;
/**文档库id*/
// @Excel(name = "文档库id", width = 15)
@ApiModelProperty(value = "文档库id")
@@ -37,6 +37,7 @@ import com.jero.modules.project.enums.ProjectInventoryFieldEnum;
import com.jero.modules.split.common.FileUnZip;
import com.jero.modules.system.entity.SysCategory;
import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.enums.DicCodeEnum;
import com.jero.modules.system.enums.SysCategoryValueTypeEnum;
import com.jero.modules.system.mapper.SysCategoryMapper;
import com.jero.modules.system.mapper.SysDictItemMapper;
@@ -1218,6 +1219,8 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
String value = "";
boolean flag = true;
List<SysDictItem> dutyTerritoryDictItemList = this.sysDictItemService.selectItemsByDictCode(DicCodeEnum.DUTY_TERRITORY.getCode());
//编号验证
verifySerialNumber(datas,authDummyInventoryInfoEOTemp);
for(AuthDummyInventoryInfoEO authDummyInventoryInfoEO :datas){
@@ -1306,7 +1309,7 @@ public class AuthDummyInventoryInfoEOServiceImpl extends ServiceImpl<AuthDummyIn
}
//责任领域
if(StringUtils.isNotBlank(dutyTerritory)){
value = pullMore(dictItemList, authDummyInventoryInfoEO, errorMsg, dutyTerritory,msgList,"责任领域","Responsible Field","duty_territory");
value = pullMore(dutyTerritoryDictItemList, authDummyInventoryInfoEO, errorMsg, dutyTerritory,msgList,"责任领域","Responsible Field","duty_territory");
if(StringUtils.isNotBlank(value)){
authDummyInventoryInfoEO.setDutyTerritory(value);
}
@@ -5993,6 +5993,16 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
for (String phasedImplDetails : phasedImplDetailsList) {
PhasedImplementationDetailsEO phasedImplementationDetailsEO = new PhasedImplementationDetailsEO();
String[] phasedImplDetailsArr = phasedImplDetails.split("<n>");
if(phasedImplDetailsArr.length < 3){
if(CutEnum.CN.getValue().equals(cut)){
errorMsg += "分阶段实施详情-必填项不能为空, ";
}else{
errorMsg += "Phased Implementation Details - Required items cannot be empty,";
}
countError++;
break;
}
if(phasedImplDetailsArr.length >= 1){
String standNumberOrClause = phasedImplDetailsArr[0];
if(StringUtils.isEmpty(standNumberOrClause)){
@@ -249,7 +249,7 @@ public class DummyInventoryInfoEO implements Serializable {
private java.lang.String prehomoDeliverableTemplate;
@TableField(exist = false)
@Excel(name = "Prehomo-交付物模板", width = 15)
// @Excel(name = "Prehomo-交付物模板", width = 15)
private java.lang.String prehomoDeliverableTemplateName;
/**prehomo确认-发起人*/
@@ -164,6 +164,8 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
private IOSSFileService iOSSFileService;
@Autowired
private SysUserMapper sysUserMapper;
@Autowired
private IProjectLibraryRoleRelEOService projectLibraryRoleRelEOService;
/**
* 保存
@@ -266,10 +268,22 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
saveOrUpdate(projectCertificationInventoryEO);
// //获取责任人的所有用户
// List<SysUser> listUserName = new ArrayList<>();
// listUserName = sysUserMapper.getListUserName();
// listUserName = listUserName.stream().distinct().collect(Collectors.toList());
//获取当前的projectId
String projectId = projectCertificationInventoryEO.getProjectLibraryId();
String cut = projectCertificationInventoryEO.getCut();
//获取当前用户
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
Map<String,Object> params = new HashMap<>();
params.put("projectLibraryId",projectId);
params.put("userId",currentUser.getId());
params.put("modelType",RoleRelModelTypeEnum.CERTIFICATION_INVENTORY.getValue());
ProjectLibraryRoleRelEO projectLibraryRoleRelEO = projectLibraryRoleRelEOService.queryByProjectLibraryIdAndUserId(params);
String roleCode = projectLibraryRoleRelEO.getRoleCode();
// //判断当前用户与studio工程师是否一致,一致的话具有studio角色的切换
// if(studionList.contains(currentUser)){
// //用户有studio工程师的操作
// }
//获取当前的责任人
String dutyPerson = projectCertificationInventoryEO.getDutyPerson();
@@ -277,30 +291,115 @@ public class ProjectCertificationInventoryEOServiceImpl extends ServiceImpl<Proj
List<String> dutyTerritoryList = new ArrayList<>();
dutyTerritoryList = Arrays.asList(projectCertificationInventoryEO.getDutyTerritory().split(","));
dutyTerritoryList = dutyTerritoryList.stream().distinct().collect(Collectors.toList());
//获取当前的projectId
String projectId = projectCertificationInventoryEO.getProjectLibraryId();
//根据责任领域个projectId去查相关人员名单
List<ProjectRelatedPersonnel> projectRelatedPersonnelList = projectRelatedPersonnelService.queryByProjectIdAndDutyTerritoy(projectId, dutyTerritoryList);
//根据相关人员名单获取的工程接口人
List<String> allList = new ArrayList<>();
List<String> enginnerList = new ArrayList<>();
List<String> lawEnginnerList = new ArrayList<>();
List<String> enginnerLawSetList = new ArrayList<>();
List<String> enginnerAttSetList = new ArrayList<>();
//根据相关人员名单获取的工程接口人
for(ProjectRelatedPersonnel relatedPersonnel : projectRelatedPersonnelList){
enginnerList.add(relatedPersonnel.getEngineeringInterfacePerson());
}
for(ProjectRelatedPersonnel relatedPersonnel : projectRelatedPersonnelList){
//如果工程接口人不为空的话
if(enginnerList.size()>0){
//判断哪个不存在 再去去存入
if(!enginnerList.contains(dutyPerson)){
relatedPersonnel.setEngineerAttSet(dutyPerson);
// projectRelatedPersonnelService.editById(relatedPersonnel);
}
}else {
//工程接口人为空的话,直接将责任设置到认证工程师下
relatedPersonnel.setEngineerAttSet(dutyPerson);
// projectRelatedPersonnelService.editById(relatedPersonnel);
String enginneringInterfacePerson = relatedPersonnel.getEngineeringInterfacePerson();
if(!StringUtils.isEmpty(enginneringInterfacePerson)){
enginnerList = Arrays.stream(enginneringInterfacePerson.split(",")).collect(Collectors.toList());
allList.addAll(enginnerList);
}
}
//获取相关人员名单中的法规工程师
for(ProjectRelatedPersonnel relatedPersonnel : projectRelatedPersonnelList){
String lawEngineer = relatedPersonnel.getLawEngineer();
if(!StringUtils.isEmpty(lawEngineer)){
lawEnginnerList = Arrays.stream(lawEngineer.split(",")).collect(Collectors.toList());
allList.addAll(lawEnginnerList);
}
}
//获取相关人员名单中的工程接口-法规工程师设置
for(ProjectRelatedPersonnel relatedPersonnel : projectRelatedPersonnelList){
String engineerLawSet = relatedPersonnel.getEngineerLawSet();
if(!StringUtils.isEmpty(engineerLawSet)){
enginnerLawSetList = Arrays.stream(engineerLawSet.split(",")).collect(Collectors.toList());
allList.addAll(enginnerLawSetList);
}
}
//获取相关人员名单中的工程接口-认证工程师设置
for(ProjectRelatedPersonnel relatedPersonnel : projectRelatedPersonnelList){
String engineerAttSet = relatedPersonnel.getEngineerAttSet();
if(!StringUtils.isEmpty(engineerAttSet)){
enginnerAttSetList = Arrays.stream(engineerAttSet.split(",")).collect(Collectors.toList());
allList.addAll(enginnerAttSetList);
}
}
//获取当前项目库id的studio工程师和认证工程师
List<String> studionList = new ArrayList<>();
List<String> certificationEngineerList = new ArrayList<>();
List<ProjectLibraryBase> projectLibraryBases = projectLibraryBaseService.queryById(projectId, cut);
for(ProjectLibraryBase projectLibraryBase : projectLibraryBases){
studionList.add(projectLibraryBase.getStudioEngineer());
String certificationEngineer = projectLibraryBase.getCertificationEngineer();
if(!StringUtils.isEmpty(certificationEngineer)){
certificationEngineerList = Arrays.stream(certificationEngineer.split(",")).collect(Collectors.toList());
allList.addAll(certificationEngineerList);
}
}
// studionList = studionList.stream().distinct().collect(Collectors.toList());
// certificationEngineerList = certificationEngineerList.stream().distinct().collect(Collectors.toList());
allList = allList.stream().distinct().collect(Collectors.toList());
for(String all : allList){
if(all.equals("")){
allList.remove(all);
}
}
//遍历所有人alllist中是否包含责任人,如果包含,不用操作。
//-------如果不包含,再去判断当前用户的角色是studio、法规还是认证
for(ProjectRelatedPersonnel relatedPersonnel : projectRelatedPersonnelList){
if(allList.size()>0){
if(!allList.contains(dutyPerson)){
if(roleCode.equals(com.jero.modules.project.enums.ProjectRoleEnum.STUDIO_ENGINEER.getValue())){
if(relatedPersonnel.getEngineeringInterfacePerson() != null){
String engineeringInterfacePerson = dutyPerson+","+relatedPersonnel.getEngineeringInterfacePerson();
relatedPersonnel.setEngineeringInterfacePerson(engineeringInterfacePerson);
}else {
relatedPersonnel.setEngineeringInterfacePerson(dutyPerson);
}
}else if(roleCode.equals(com.jero.modules.project.enums.ProjectRoleEnum.REGULATI_ENGINEER.getValue())){
if(relatedPersonnel.getEngineerLawSet() != null){
String engineerLawSet = dutyPerson+","+relatedPersonnel.getEngineerLawSet();
relatedPersonnel.setEngineerLawSet(engineerLawSet);
}else {
relatedPersonnel.setEngineerLawSet(dutyPerson);
}
}else if(roleCode.equals(com.jero.modules.project.enums.ProjectRoleEnum.HOMOLOGATION_ENGINEER.getValue())){
if(relatedPersonnel.getEngineerAttSet() !=null){
String engineerAttSet = dutyPerson+","+relatedPersonnel.getEngineerAttSet();
relatedPersonnel.setEngineerAttSet(engineerAttSet);
}else {
relatedPersonnel.setEngineerAttSet(dutyPerson);
}
}
}
}
}
// for(ProjectRelatedPersonnel relatedPersonnel : projectRelatedPersonnelList){
// //如果工程接口人不为空的话
// if(enginnerList.size()>0){
// //判断哪个不存在 再去去存入
// if(!enginnerList.contains(dutyPerson)){
// relatedPersonnel.setEngineerAttSet(dutyPerson);
//// projectRelatedPersonnelService.editById(relatedPersonnel);
// }
// }else {
// //工程接口人为空的话,直接将责任设置到认证工程师下
// relatedPersonnel.setEngineerAttSet(dutyPerson);
//// projectRelatedPersonnelService.editById(relatedPersonnel);
// }
// }
this.projectRelatedPersonnelService.updateBatchById(projectRelatedPersonnelList);
@@ -422,11 +422,11 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
engineerLawSetUsers = sysUserMapper.selectList(userqueryWrapper);
}
if(CollectionUtils.isNotEmpty(engineerLawSetUsers)) {
String engineerAttSetId = projectRelatedPersonnel.getEngineerAttSet();
String engineerLawSetId = projectRelatedPersonnel.getEngineerLawSet();
String engineerLawSetName = null;
StringBuilder lawSetName = new StringBuilder();
for (String data : engineerLawSetIdList) {
if (StringUtils.isNotEmpty(engineerAttSetId)) {
if (StringUtils.isNotEmpty(engineerLawSetId)) {
engineerLawSetName = engineerLawSetUsers.stream().filter(e -> data.equals(e.getId()))
.map(sysUser -> sysUser.getUsername()).collect(Collectors.joining(","));
}
@@ -837,10 +837,10 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
try {
String titleOne = "";
if (CutEnum.CN.getValue().equals(projectRelatedPersonnel.getCut())) {
titleOne = "责任领域,法规工程师,工程接口人,工程接口人-法规工程师设置,工程接口人-认证工程师设置,备注";
titleOne = "责任领域,法规工程师,工程接口人,备注";
fileOriName = "相关人员导入模板.xls";
} else {
titleOne = "Responsible Field,Regulation Engineer,Engineering Interface,Project Interface Person - Regulation Engineer Setting,Project Interface Person - Certification Engineer Setting,Comments";
titleOne = "Responsible Field,Regulation Engineer,Engineering Interface,Comments";
fileOriName = "Import template of related personnel.xls";
}
@@ -867,7 +867,7 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
cellStyleTemp.setWrapText(true);//自动换行
int startLine = 0;
int endLine = 5;
int endLine = 3;
//合并单元格
CellRangeAddress region1 =
new CellRangeAddress(1, 1, startLine, endLine); //参数1:起始行 参数2:终止行 参数3:起始列 参数4:终止列
@@ -881,14 +881,14 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
+ "1.导入数据从第三行开始,第一行为表头,第二行为填写说明,第三行是正式数据;\n"
+ "2.填写人员时,必须使用人员账号进行填写;\n"
+ "3.填写的人员账号必须与系统中账号保持一致;\n"
+ "4.填写任意一责任领域内工程师人员时,必须填写法规工程师、工程接口人、工程接口人-法规工程师设置、工程接口人-认证工程师设置四个字段信息。";
+ "4.填写任意一责任领域内工程师人员时,必须填写法规工程师、工程接口人个字段信息。";
} else {
explainInfo =
"filling explanation\n"
+ "1. Import data from the third line, the first line is header, the second line is description, and the third line is official data;\n"
+ "2. When filling in personnel, personnel account must be used to fill in;\n"
+ "3. The personnel account number filled in must be consistent with the account number in the system;\n"
+ "4. When filling in the engineers in any responsibility field, you must fill in the information of three fields: legal engineer, engineering interface person ,Project Interface Person - Regulation Engineer Setting and Project Interface Person - Certification Engineer Setting.";
+ "4. When filling in the engineers in any responsibility field, you must fill in the information of three fields: legal engineer, engineering interface person .";
}
HSSFRichTextString explain = new HSSFRichTextString(explainInfo);
@@ -134,6 +134,7 @@ public class LawsWarnService {
List<SysDictItem> sysDictItems = sysDictItemServiceImpl.selectItemsAll();
List<OnlCgformField> onlCgformFieldListTemp = onlCgformFieldList.stream().filter(e -> fieldList.contains(e.getDbFieldName())).collect(Collectors.toList());
List<Map> records = infoPage.getRecords();
this.disposeData(records,cut);
for (Map record : records) {
//处理标题
if(CutEnum.EN.getValue().equals(cut)){
@@ -201,9 +202,6 @@ public class LawsWarnService {
}
}
}
this.disposeData(records,cut);
return infoPage;
}
@@ -205,4 +205,11 @@ public interface WorkFlowFeignClient {
@RequestMapping(value = "/bat-wkflow/task/getTaskConfirmAskedEngineer",method = RequestMethod.GET)
Set<String> getTaskConfirmAskedEngineer(@RequestParam("projectLawInventoryId")String projectLawInventoryId);
/**
* 批量改派任务
* @return
*/
@RequestMapping(value = "/bat-wkflow/changeAssigneeBatch",method = RequestMethod.GET)
Result<String> changeAssigneeBatch(@RequestParam("taskIds") String taskIds,@RequestParam("newAssignee") String newAssignee);
}
@@ -212,4 +212,13 @@ public class WorkFlowFeignClientImpl{
public Result dispostHistoryBusProcessNewData() {
return workFlowFeignClient.dispostHistoryBusProcessNewData();
}
/**
* 批量改派任务
* @return
*/
public Result<String> changeAssigneeBatch(@RequestParam("taskIds") String taskIds,@RequestParam("newAssignee") String newAssignee){
Result<String> run = workFlowFeignClient.changeAssigneeBatch(taskIds,newAssignee);
return run;
}
}
+13 -3
View File
@@ -1383,7 +1383,7 @@ module.exports = {
allsubitemsitem:'Whether to delete all subitems under this item',
contactTheFounder:'Contact author',
certificationCategoryNumber: 'certification Category Number',
historicalrecord:'historical Record',
historicalrecord:'Historical Record',
Referenceparametercolumn:'Reference Parameter Column',
Updateparametercolumn:'Update The Parameter Column',
columnfirst:'Reference the parameter column first',
@@ -1407,9 +1407,9 @@ module.exports = {
nameOfManufacturer:'Name Of Manufacturer',
regulationNo:'Regulation No',
itemInformation:'Item Information',
modifyHistory:'Modify History',
modifyHistory:'Historical Record',
returnToStudio:'Return to Studio',
Approved:'Approved',
Approved:'Review and pass',
returnedForApproval:'Returned For Approval',
changeSetting:'Change Setting',
referenceDeliverables:'Reference Deliverables',
@@ -1746,4 +1746,14 @@ module.exports = {
andTheProcessStatusTheList:'And the process status cannot be the data to be checked in the list',
pleasefillintherange:'Please fill in the range',
databasereportingtime:'Synchronize the database reporting time',
synchronizationtime:'Synchronization time',
listToBeReleased:'List to be released',
listToBeChecked:'List to be checked',
taskToBeConfirmed:'Task to be confirmed',
resultsToBeSubmitted:'Results to be submitted',
resultsToBeReviewed:'Results to be reviewed',
compliance:'Compliance',
nonCompliance:'Non-Compliance',
toBeTracked:'To be tracked',
NA:'NA',
}
+12 -2
View File
@@ -1509,9 +1509,9 @@ module.exports = {
nameOfManufacturer:'生产企业名称',
regulationNo:'法规编号',
itemInformation:'条目信息',
modifyHistory:'修改历史',
modifyHistory:'历史记录',
returnToStudio:'退回至Studio',
Approved:'通过',
Approved:'通过',
returnedForApproval:'审批退回',
changeSetting:'修改配置',
referenceDeliverables:'引用交付物',
@@ -1848,4 +1848,14 @@ module.exports = {
andTheProcessStatusTheList:'并且流程状态不能为清单待校核的数据',
pleasefillintherange:'请填写范围',
databasereportingtime:'同步上报库时间',
synchronizationtime:'同步时间',
listToBeReleased:'清单待发布',
listToBeChecked:'清单待校核',
taskToBeConfirmed:'任务待确认',
resultsToBeSubmitted:'结果待提交',
resultsToBeReviewed:'结果待审查',
compliance:'符合',
nonCompliance:'不符合',
toBeTracked:'待追踪',
NA:'不涉及',
}
@@ -132,6 +132,16 @@
tree-checkable
:placeholder="$t('PleaseSelect')"
/>
<a-tree-select
v-else-if="item.type==='treeChoice'"
tree-node-filter-prop="title"
v-model="item.val"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
style="width: 100%"
:tree-data="item.tree"
:placeholder="$t('PleaseSelect')"
/>
<PersonnelSelection
v-else-if="item.type == 'Personnel'"
:query="{db_field_name:'valueId',db_field_txt:'',subscript:index}"
@@ -51,11 +51,15 @@
{{val}}
</div>
<div class="content-text" v-if="val == $t('essentialInformation')">
<div class="text-field" :class="{'text-content-button-one':ol.field_show_type == 8 ? true :false}"
<div class="text-field"
:class="{'text-content-button-one':ol.field_show_type == 8 ? true :false,
'text-content-button-Two':index1 == 1 || index1 == 9? true:false}"
v-for="(ol,index1) in item[val]">
<span v-if="ol.field_show_type == 10" class="text-field-left-Index" :title="ol.db_field_txt">{{ol.db_field_txt}}</span>
<span v-else class="text-field-left" :title="ol.db_field_txt">{{ol.db_field_txt}}</span>
<span class="text-field-right text-field-right-color" v-if="ol.urlClick" @click="urlClick(ol)"
<span class="text-field-right text-field-right-text" v-if="index1 == 9"
:title="ol.value">{{ol.value ? ol.value+'的时间更好的付款就给和看景点风光和的空间古典风格' : '--'}}</span>
<span class="text-field-right text-field-right-color" v-else-if="ol.urlClick" @click="urlClick(ol)"
:title="ol.value">{{ol.value ? ol.value : '--'}}</span>
<span class="text-field-right" v-else-if="ol.field_show_type == 7">
<a-button type="primary" class="button-text"
@@ -809,7 +813,6 @@
overflow: hidden;
margin-right: 6px;
float: left;
margin-top: 3px;
}
.text-field-right {
@@ -825,6 +828,39 @@
font-weight: bold;
}
}
.text-content-button-Two {
width: 67%;
.text-field-left {
width: 114px;
display: inline-block;
font-size: 14px;
font-weight: 400;
color: #6F7385;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
margin-right: 6px;
float: left;
}
.text-field-right {
width: calc(100% - 130px);
display: inline-block;
font-size: 14px;
text-overflow: ellipsis;
white-space: nowrap;
word-break: break-word;
overflow: hidden;
float: left;
color: #040B29;
font-weight: bold;
}
.text-field-right-text{
width: calc(50% - 140px);
}
}
}
}
}
@@ -990,7 +1026,7 @@
}
.TextInformation-box-box-text {
width: calc(25% - 20px);
width: calc(50% - 20px);
margin-right: 20px;
height: 36px;
float: left;
@@ -32,11 +32,11 @@
</a-col>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
<a-button class="box-button" type="primary" @click="searchQuery">{{$t('query')}}</a-button>
<a-button class="box-button" style="margin-left: 8px" @click="searchReset">{{$t('reset')}}</a-button>
<globalAdvancedQuery ref="globalAdvancedQueryRef"
@handleSuperQuery="handleSuperQuery"
:fieldList="fieldList"/>
<a-button class="box-button" type="primary" @click="searchQuery">{{$t('query')}}</a-button>
<a-button class="box-button" style="margin-left: 8px" @click="searchReset">{{$t('reset')}}</a-button>
</a-col>
</span>
</a-row>
@@ -48,7 +48,7 @@
:scroll="{x: 800,y:600}"
:data-source="dataList"
:pagination="false"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange,columnTitle:' ' }"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
:loading="loading">
</a-table>
@@ -96,7 +96,7 @@ export default {
align: 'left',
dataIndex: 'serialNumber',
width: 100,
fixed: 'left',
ellipsis: true,
scopedSlots: { customRender: 'standard' }
},
{
@@ -104,7 +104,7 @@ export default {
align: 'left',
dataIndex: 'title',
width: 100,
fixed: 'left',
ellipsis: true,
scopedSlots: { customRender: 'titleName' }
},
{
@@ -144,8 +144,8 @@
</a-select>
</div>
</div>
</a-form-model-item>
</div>
@@ -187,6 +187,7 @@ export default {
projectNameList2: [],
selectListPc: [],
selectListMb: [],
flag:'',
rules: {
babh: [
{ required: true, message: this.$t('upgraderecordnumber') + this.$t('cannotEmpty'), trigger: 'blur' }
@@ -277,14 +278,17 @@ export default {
this.form.otaId = otaId
postAction('/ota/otaBaSjSjmbcx/add', { otaId: otaId, ...this.form }).then(res => {
if (res.code == 200) {
this.flag = 1
localStorage.setItem('otaId', res.result.otaId)
this.$message.success(this.$t('SavedSuccessfully'))
this.getData()
}
})
} else {
this.form.bapc = undefined
}
// else {
// this.form.bapc = undefined
// }
})
},
@@ -295,11 +299,17 @@ export default {
// this.$refs.ruleForm.clearValidate('bapc')
// })
// }
this.$refs.ruleForm.validate(valid => {
if (valid) {
// this.$refs.ruleForm.validate(valid => {
// if (valid) {
setTimeout(()=>{
console.log(this.flag)
if(this.flag == 1){
this.$emit('basicInformationForm')
}
})
},1000)
// }
// })
},
@@ -343,10 +353,9 @@ export default {
},
changeId(value, option) {
debugger
this.$nextTick(() => {
this.form = { ...this.form }
this.$refs.ruleForm.validateField('bapc')
this.$refs.ruleForm.clearValidate('bapc')
})
this.selectListPc.map(item => {
if (item.id == value) {
@@ -305,7 +305,7 @@ import { message } from 'ant-design-vue'
if(item.cpxh==null){
item.cpxh=''
}
obj.value=item.ggpc+'-'+item.cpmc+'-'+item.cpxh
obj.value=item.cpdjbh+'-'+item.ggpc+'-'+item.cpxh
this.selectList.push(obj)
})
}
@@ -342,14 +342,14 @@ import { message } from 'ant-design-vue'
this.form.cxmb = res.result.cxmb ? res.result.cxmb : undefined
}
}
if(res.result.dllx1 == null ){
if(res.result.dllx1 == '' ){
res.result.dllx1 = undefined
}
if(res.result.dllx2 == null){
if(res.result.dllx2 == ''){
res.result.dllx2 = undefined
}
if(res.result.cplb == null){
if(res.result.cplb == ''){
res.result.cplb = undefined
}
if(res.result.qymc == null){
@@ -100,6 +100,36 @@
<a-icon type="export" :rotate="-90"/>
{{$t('CustomExport')}}
</div>
<!-- 列表设置-->
<a-popconfirm :visible="customizevisible" overlayClassName="popconfirm"
placement="bottomRight" v-if="!this.$route.query.it">
<template slot="title" id="popconfirmmize">
<div style="max-height:360px;overflow:scroll;overflow-x: auto;width: 188px">
<a-checkbox
style="margin-bottom: 22px;"
v-if="customizeList && customizeList.length"
v-model="checkAll"
:indeterminate="indeterminate"
@change="onCheckAllChange"
>{{ $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"
:key="key" :value="item.field">{{ item.name }}
</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>
</div>
</div>
</template>
<div class="operator-text" style="position: relative" @click="getcustomize">
<a-icon type="setting"/>
{{ $t('customize') }}
</div>
</a-popconfirm>
</div>
<div style="width: 100%">
<!-- 表格-10控件-->
@@ -233,7 +263,110 @@
NotSelectedRowKeysValue: [],
NoEngineer: 1, // 下发收集的权限,0为没有接口人 1为由接口人 默认有
NotSelectedNoEngineerValue: [],
paramsManifest: {}
paramsManifest: {},
customizevisible: false,
indeterminate: false,
checkAll: false,
selectedValue: [],
checkedList: ['NiONumber', 'ParameterName', 'operation'],
customizeList: [
{
sort: '1',
name: this.$t('NiONumber'),
disabled: true,
headFieldCn: 'NIO编号',
headFieldEn: 'NiONumber',
field: 'NiONumber',
key: 1,
moduleFlag: '上报库',
status: 1
},
{
sort: '2',
disabled: true,
name: this.$t('ParameterName'),
headFieldCn: '参数名称',
headFieldEn: 'Parameter Name',
field: 'ParameterName',
key: 2,
moduleFlag: '上报库',
status: 2
},
{
sort: '',
name: this.$t('ParameterDescription'),
headFieldCn: '参数说明',
headFieldEn: 'Parameter Description',
field: 'ParameterDescription',
key: 3,
moduleFlag: '上报库'
},
{
sort: '',
name: this.$t('status'),
headFieldCn: '状态',
headFieldEn: 'status',
field: 'status',
key: 4,
moduleFlag: '上报库'
},
{
sort: '',
name: this.$t('areaOfResponsibility'),
headFieldCn: '责任领域',
headFieldEn: 'Responsible Field',
field: 'areaOfResponsibility',
key: 5,
moduleFlag: '上报库'
},
{
sort: '',
name: this.$t('engineeringInterfacePerson'),
headFieldCn: '工程接口人',
headFieldEn: 'Eng. Interface',
field: 'engineeringInterfacePerson',
key: 6,
moduleFlag: '上报库'
},
{
sort: '',
name: this.$t('completedBy'),
headFieldCn: '填写人',
headFieldEn: 'Filled by',
field: 'completedBy',
key: 15,
moduleFlag: '上报库'
},
{
sort: '',
name: this.$t('Version'),
headFieldCn: '版本',
headFieldEn: 'Version',
field: 'Version',
key: 23,
moduleFlag: '上报库'
},
{
sort: '',
name: this.$t('synchronizationtime'),
headFieldCn: '同步时间',
headFieldEn: 'Synchronization time',
field: 'synchronizationtime',
key: 21,
moduleFlag: '上报库'
},
{
sort: '',
disabled: true,
name: this.$t('operation'),
headFieldCn: '操作',
headFieldEn: 'Operation',
key: 35,
field: 'operation',
moduleFlag: '上报库',
status: 2
}
],
}
},
props: {},
@@ -243,6 +376,52 @@
document.title = this.$t('ParameterViewPage')
},
methods: {
onCheckAllChange(e) {
let selectedValue = ['NiONumber', 'ParameterName', 'operation']
this.checkedList = e.target.checked ? this.customizeList.map(item => item.field) : selectedValue
this.selectedValue = this.checkedList
this.indeterminate = false
},
onChange() {
this.selectedValue = this.checkedList
},
getcustomize() {
this.customizevisible = true
},
cancel() {
this.customizevisible = false
},
handleSubmitcustomize() {
let list = []
let uniqueArray = this.selectedValue.filter((item, index, array) => {
return array.indexOf(item) === index
})
uniqueArray.forEach(item => {
this.customizeList.forEach((val, index) => {
if (item == val.field) {
val.sort = index + 1
list.push(val)
}
})
})
this.confirmLoading = true
let headCustomEOList = JSON.parse(JSON.stringify(list))
let query = {
headCustomEOList: headCustomEOList
}
postAction('head/headCustomEO/add', query).then((res) => {
if (res.success) {
this.confirmLoading = false
this.$message.success(this.$t('OperationSuccessful'))
this.customizevisible = false
this.$refs.CollectionTabel.getHeader()
} else {
this.$message.warning(this.$t('operationFailed'))
this.confirmLoading = false
this.customizevisible = false
}
})
},
handleToggleSearch() {
this.toggleSearchStatus = !this.toggleSearchStatus
},
@@ -588,7 +767,43 @@
text-align: right;
margin-top: 20px;
}
.customize-text {
/*height: 1533px;*/
display: flex;
flex-direction: column;
align-items: flex-start;
}
.customize-text-title {
margin-left: 0;
font-size: 14px;
font-weight: 400;
color: #040B29;
margin-bottom: 22px;
}
.drawer-bootom-button {
position: absolute;
bottom: 0;
z-index: 100;
width: 100%;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
background: #fff;
border-radius: 0 0 2px 2px;
}
.ant-table-placeholder {
padding: 0;
border-top: none;
}
.itemModelComment .ant-form-item-control-wrapper {
width: 100% !important;
}
.second {
padding: 0 !important;
}
.operator-text-left {
font-size: 14px;
margin-right: 20px;
@@ -641,4 +856,38 @@
.Required {
color: red;
}
</style>
<style lang="less">
.popconfirm {
z-index: 999;
}
.popconfirm .ant-popover-buttons {
display: none !important;
}
.popconfirm .anticon-exclamation-circle {
display: none !important;
}
::v-deep .ant-table-fixed-header .ant-table-body-inner {
overflow: visible;
}
popconfirmmize {
z-index: 999;
}
::v-deep .popconfirmmize .ant-popover-buttons {
display: none !important;
}
.popconfirmmize .anticon-exclamation-circle {
display: none !important;
}
.popconfirmmize .ant-popover-message {
padding: 4px 0 36px !important;
}
::v-deep .ant-popover-buttons {
display: none !important;
}
</style>
@@ -133,7 +133,7 @@
<!-- // R&H Manager manager-->
<!-- // 系统管理员 admin-->
<!-- // 游客 guest-->
<a-popconfirm overlayClassName='popconfirm' placement="bottomRight" v-if='currentPersonRole == "homo"'>
<a-popconfirm overlayClassName='popconfirmIndex' placement="bottomRight" v-if='currentPersonRole == "homo"'>
<template slot="title" id="popconfirm">
<!-- 添加-->
<div @click="handleAdd" class="operator-text-title" v-if='currentPersonRole == "homo"'>
@@ -268,7 +268,36 @@
<a-icon type="undo" :rotate="90"/>
{{$t('CompulsoryWithdrawal')}}
</div>
<!-- 列表设置-->
<a-popconfirm :visible="customizevisible" overlayClassName="popconfirmIndex"
placement="bottomRight" v-if="!this.$route.query.it">
<template slot="title" id="popconfirmmize">
<div style="max-height:360px;overflow:scroll;overflow-x: auto;width: 188px">
<a-checkbox
style="margin-bottom: 22px;"
v-if="customizeList && customizeList.length"
v-model="checkAll"
:indeterminate="indeterminate"
@change="onCheckAllChange"
>{{ $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"
:key="key" :value="item.field">{{ item.name }}
</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>
</div>
</div>
</template>
<div class="operator-text" style="position: relative" @click="getcustomize">
<a-icon type="setting"/>
{{ $t('customize') }}
</div>
</a-popconfirm>
<!-- 角色切换 -->
<div class="operator-text"
v-if="!this.$route.query.it"
@@ -530,6 +559,7 @@
</a-modal>
<JLoading :loading="textLoading">{{this.$t('pleaseWaitWhileRunning')}}</JLoading>
<batchUpdateDeadline ref="batchUpdateDeadlineRef" @batchUpdateDeadlineForm="batchUpdateDeadlineForm"/>
<customizeList :url="url" @customizeListForm="customizeListForm" ref="customizeListRef"/>
</div>
</template>
@@ -539,6 +569,7 @@
import parameterColumn from '../dialog/parametercolumn'
import { getAction, postAction, downloadFile } from '../../../api/manage'
import eventBUs from '../../../common/event'
import customizeList from './customizeList'
import ParameterLibraryAdd from '@/components/ParameterLibraryAdd/index'
import globalAdvancedQuery from '@/components/globalAdvancedQuery/index'
import SynchronousSubmissionLibrary from '@/components/SynchronousSubmissionLibrary/index'
@@ -560,6 +591,7 @@
components: {
TableCollection,
ParameterLibraryAdd,
customizeList,
parameterColumn,
AssignedBy,
AssignedByHomo,
@@ -711,6 +743,110 @@
dictCode: 'dre'//只要 dictCode 有值无论 type 是什么都显示为字典下拉框
}
],
customizevisible: false,
indeterminate: false,
checkAll: false,
selectedValue: [],
checkedList: ['NiONumber', 'ParameterName', 'operation'],
customizeList: [
{
sort: '1',
name: this.$t('NiONumber'),
disabled: true,
headFieldCn: 'NIO编号',
headFieldEn: 'NiONumber',
field: 'NiONumber',
key: 1,
moduleFlag: '参数收集',
status: 1
},
{
sort: '2',
disabled: true,
name: this.$t('ParameterName'),
headFieldCn: '参数名称',
headFieldEn: 'Parameter Name',
field: 'ParameterName',
key: 2,
moduleFlag: '参数收集',
status: 2
},
{
sort: '',
name: this.$t('ParameterDescription'),
headFieldCn: '参数说明',
headFieldEn: 'Parameter Description',
field: 'ParameterDescription',
key: 3,
moduleFlag: '参数收集'
},
{
sort: '',
name: this.$t('status'),
headFieldCn: '状态',
headFieldEn: 'status',
field: 'status',
key: 4,
moduleFlag: '参数收集'
},
{
sort: '',
name: this.$t('areaOfResponsibility'),
headFieldCn: '责任领域',
headFieldEn: 'Responsible Field',
field: 'areaOfResponsibility',
key: 5,
moduleFlag: '参数收集'
},
{
sort: '',
name: this.$t('engineeringInterfacePerson'),
headFieldCn: '工程接口人',
headFieldEn: 'Eng. Interface',
field: 'engineeringInterfacePerson',
key: 6,
moduleFlag: '参数收集'
},
{
sort: '',
name: this.$t('completedBy'),
headFieldCn: '填写人',
headFieldEn: 'Filled by',
field: 'completedBy',
key: 15,
moduleFlag: '参数收集'
},
{
sort: '',
name: this.$t('Deadline'),
headFieldCn: '截止时间',
headFieldEn: 'Due Date',
field: 'designDueDate',
key: 23,
moduleFlag: '参数收集'
},
{
sort: '',
name: this.$t('databasereportingtime'),
headFieldCn: '同步上报库时间',
headFieldEn: 'database reporting time',
field: 'databasereportingtime',
key: 23,
moduleFlag: '参数收集'
},
{
sort: '',
disabled: true,
name: this.$t('operation'),
headFieldCn: '操作',
headFieldEn: 'Operation',
key: 35,
field: 'operation',
moduleFlag: '参数收集',
status: 2
}
],
selectedRowKeys: [],
textLoading: false,
formInline: {},
@@ -1587,6 +1723,52 @@
}
})
},
onCheckAllChange(e) {
let selectedValue = ['NiONumber', 'ParameterName', 'operation']
this.checkedList = e.target.checked ? this.customizeList.map(item => item.field) : selectedValue
this.selectedValue = this.checkedList
this.indeterminate = false
},
onChange() {
this.selectedValue = this.checkedList
},
getcustomize() {
this.customizevisible = true
},
cancel() {
this.customizevisible = false
},
handleSubmitcustomize() {
let list = []
let uniqueArray = this.selectedValue.filter((item, index, array) => {
return array.indexOf(item) === index
})
uniqueArray.forEach(item => {
this.customizeList.forEach((val, index) => {
if (item == val.field) {
val.sort = index + 1
list.push(val)
}
})
})
this.confirmLoading = true
let headCustomEOList = JSON.parse(JSON.stringify(list))
let query = {
headCustomEOList: headCustomEOList
}
postAction('head/headCustomEO/add', query).then((res) => {
if (res.success) {
this.confirmLoading = false
this.$message.success(this.$t('OperationSuccessful'))
this.customizevisible = false
this.$refs.CollectionTabel.getHeader()
} else {
this.$message.warning(this.$t('operationFailed'))
this.confirmLoading = false
this.customizevisible = false
}
})
},
// // 下发收集---请求接口
// distributionAndCollection() {
//
@@ -2177,16 +2359,37 @@
}
}
</script>
<style>
.popconfirm {
<style lang="less">
.popconfirmIndex {
z-index: 999;
}
.popconfirm .ant-popover-buttons {
.popconfirmIndex .ant-popover-buttons {
display: none !important;
}
.popconfirm .anticon-exclamation-circle {
.popconfirmIndex .anticon-exclamation-circle {
display: none !important;
}
::v-deep .ant-table-fixed-header .ant-table-body-inner {
overflow: visible;
}
popconfirmmize {
z-index: 999;
}
::v-deep .popconfirmmize .ant-popover-buttons {
display: none !important;
}
.popconfirmmize .anticon-exclamation-circle {
display: none !important;
}
.popconfirmmize .ant-popover-message {
padding: 4px 0 36px !important;
}
::v-deep .ant-popover-buttons {
display: none !important;
}
</style>
@@ -2295,7 +2498,43 @@
.Required {
color: red;
}
.customize-text {
/*height: 1533px;*/
display: flex;
flex-direction: column;
align-items: flex-start;
}
.customize-text-title {
margin-left: 0;
font-size: 14px;
font-weight: 400;
color: #040B29;
margin-bottom: 22px;
}
.drawer-bootom-button {
position: absolute;
bottom: 0;
z-index: 100;
width: 100%;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
left: 0;
background: #fff;
border-radius: 0 0 2px 2px;
}
.ant-table-placeholder {
padding: 0;
border-top: none;
}
.itemModelComment .ant-form-item-control-wrapper {
width: 100% !important;
}
.second {
padding: 0 !important;
}
.doc-detail {
background: #fff;
height: 100%;
@@ -2395,6 +2634,7 @@
height: 42px;
line-height: 42px;
}
}
}
@@ -2403,7 +2643,7 @@
}
</style>
<style lang='less'>
.ant-popover-message-title {
margin-bottom: -30px;
.popconfirmIndex .ant-popover-message-title {
margin-bottom: 50px;
}
</style>
@@ -92,7 +92,7 @@
</div>
</a-col>
</a-row>
<a-row :gutter="24">
<a-row :gutter="24" v-if="this.code == '0'">
<a-col :span="12">
<div class="box-title-text">
<div class="title-text">
@@ -258,6 +258,7 @@
ref="table"
class="customizetable"
:loading="loading"
:components="drag(columns,'columnsAll')"
:pagination="false"
:scroll="{x: '100%',y:'calc(100vh - 300px)'}"
rowKey="id"
@@ -265,6 +266,11 @@
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:columns="columns"
>
<span slot="serialNumber" slot-scope="text,record">
<a class="textName" @click="standardClick(record)">
{{ text }}
</a>
</span>
<span slot="operation" slot-scope="text,record">
<a class="text-operation"
v-if="roleSwitchingCode == 0 || roleSwitchingCode == 2"
@@ -489,12 +495,14 @@
import SelectedBy from '@/components/SelectedBy/index'
import referenceDeliverablesList from './components/referenceDeliverablesList'
import { getAction, postAction, downloadFile, deleteAction } from '@/api/manage'
import { ResizeHeader, ResizeColumnProvide } from '@/mixins/header'
import moment from 'moment'
import { mapGetters } from 'vuex'
export default {
name: 'index',
props: ['isDisplayNum'],
mixins: [ResizeColumnProvide, ResizeHeader],
components: {
globalAdvancedQuery,
ImportFile,
@@ -560,7 +568,7 @@
type: 'date',
value: 'endTime',
text: this.$t('closingDate')
}
},
],
disabled: false,
queryParamQuery: {},
@@ -645,7 +653,8 @@
align: 'left',
dataIndex: 'serialNumber',
width: 180,
ellipsis: true
ellipsis: true,
scopedSlots: { customRender: 'serialNumber' }
},
{
title: this.$t('areaOfResponsibility'),
@@ -750,7 +759,8 @@
long: '',
toDoIds: [],
toDoNotConditions: [],
userInfoQuery: {}
userInfoQuery: {},
DeliverableTreeList:[],
}
},
mounted() {
@@ -759,6 +769,7 @@
this.loading = true
this.userInfoQuery = this.userInfo()
this.getProcessStatus()
this.getDeliverableTree()
this.getRoleByUserId(() => {
this.getAndUserId()
})
@@ -801,6 +812,21 @@
},
methods: {
...mapGetters(['userInfo']),
getDeliverableTree() {
getAction('/sys/category/getCertificationDeliverableTree', {}).then((res) => {
if (res.success) {
this.DeliverableTreeList = res.result
this.fieldList.push({
type: 'treeChoice',
value: 'deliverableType',
text: this.$t('typeOfDeliverables'),
tree:this.DeliverableTreeList
})
} else {
this.DeliverableTreeList = []
}
})
},
getProcessStatus() {
getAction('/project/projectCertificationInventoryEO/getFlowStatusList', {}).then((res) => {
if (res.success) {
@@ -1801,7 +1827,16 @@
viewFileClick(item) {
this.$refs.viewFileModelRef.clickButtonToUpload(item)
}
},
standardClick(row) {
let newUrl = this.$router.resolve({
path: '/docManage/library/detail',
query: {
id: row.bussDocumentLibraryId
}
})
window.open(newUrl.href, '_blank')
},
}
}
</script>
@@ -1115,7 +1115,109 @@
value: 'engineeringInterfacePerson',
valueName: 'engineeringInterfacePersonName',
text: this.$t('engineeringInterfacePerson')
}
},
{
value: 'designFlowStatus',
text: this.$t('designComplianceReview')+this.$t('ProcessStatus'),
options:[
{
value: 'List to be released',
key: 'List to be released',
label: this.$t('listToBeReleased')
},
{
value: 'List to be checked',
key: 'List to be checked',
label: this.$t('listToBeChecked')
},
{
value: 'Task to be confirmed',
key: 'Task to be confirmed',
label: this.$t('taskToBeConfirmed')
},
{
value: 'Results to be submitted',
key: 'Results to be submitted',
label: this.$t('resultsToBeSubmitted')
},
{
value: 'Results to be reviewed',
key: 'Results to be reviewed',
label: this.$t('resultsToBeReviewed')
},
{
value: 'Compliance',
key: 'Compliance',
label: this.$t('compliance')
},
{
value: 'Non-Compliance',
key: 'Non-Compliance',
label: this.$t('nonCompliance')
},
{
value: 'To be tracked',
key: 'To be tracked',
label: this.$t('toBeTracked')
},
{
value: 'NA',
key: 'NA',
label: this.$t('NA')
}
],
},
{
value: 'verifyFlowStatus',
text: this.$t('verificationAndConformityconfirmation')+this.$t('ProcessStatus'),
options:[
{
value: 'List to be released',
key: 'List to be released',
label: this.$t('listToBeReleased')
},
{
value: 'List to be checked',
key: 'List to be checked',
label: this.$t('listToBeChecked')
},
{
value: 'Task to be confirmed',
key: 'Task to be confirmed',
label: this.$t('taskToBeConfirmed')
},
{
value: 'Results to be submitted',
key: 'Results to be submitted',
label: this.$t('resultsToBeSubmitted')
},
{
value: 'Results to be reviewed',
key: 'Results to be reviewed',
label: this.$t('resultsToBeReviewed')
},
{
value: 'Compliance',
key: 'Compliance',
label: this.$t('compliance')
},
{
value: 'Non-Compliance',
key: 'Non-Compliance',
label: this.$t('nonCompliance')
},
{
value: 'To be tracked',
key: 'To be tracked',
label: this.$t('toBeTracked')
},
{
value: 'NA',
key: 'NA',
label: this.$t('NA')
}
],
},
],
listOptions: [
{
@@ -1931,6 +2033,7 @@
getList() {
let roleCode = this.roleSwitchingCode
let queryParam = JSON.parse(JSON.stringify(this.queryParam))
this.getRoleByUserId()
Object.keys(queryParam).forEach(val => {
if (queryParam[val] instanceof Array) {
queryParam[val] = queryParam[val].join(',')
@@ -1949,7 +2052,6 @@
}
this.loading = true
getAction(this.url.list, query).then((res) => {
this.getRoleByUserId()
if (res.success) {
this.dataSource = res.result || []
this.loading = false
@@ -2399,8 +2501,11 @@
}
if (this.requestsNum == 0) {
this.$message.warning(_this.$t('theDataYouInitiate'))
// _this.promptInformation(_this.detailedWarningList)
if (_this.detailedWarningList && _this.detailedWarningList.length > 0){
_this.promptInformation(_this.detailedWarningList)
}else{
this.$message.warning(_this.$t('theDataYouInitiate'))
}
this.JTextLoading = false
}
},
@@ -32,11 +32,11 @@
</a-col>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
<a-col :md="12" :sm="24">
<a-button class="box-button" type="primary" @click="searchQuery">{{$t('query')}}</a-button>
<a-button class="box-button" style="margin-left: 8px" @click="searchReset">{{$t('reset')}}</a-button>
<globalAdvancedQuery ref="globalAdvancedQueryRef"
@handleSuperQuery="handleSuperQuery"
:fieldList="fieldList"/>
<a-button class="box-button" type="primary" @click="searchQuery">{{$t('query')}}</a-button>
<a-button class="box-button" style="margin-left: 8px" @click="searchReset">{{$t('reset')}}</a-button>
</a-col>
</span>
</a-row>
@@ -48,7 +48,7 @@
:scroll="{x: 800,y:600}"
:data-source="dataList"
:pagination="false"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange,columnTitle:'' }"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }"
:loading="loading">
</a-table>
@@ -53,7 +53,7 @@
ref="table"
:loading="loading"
:pagination="false"
:scroll="{x: true}"
:scroll="{x: '100%'}"
rowKey="id"
:data-source="dataSource"
:row-selection="{ selectedRowKeys: selectedRowKeys}"
@@ -172,6 +172,7 @@
width: 180,
fixed: 'left',
sorter: true,
ellipsis: true,
scopedSlots: { customRender: 'standard' }
},
{
@@ -180,6 +181,7 @@
dataIndex: 'title',
width: 180,
fixed: 'left',
ellipsis: true,
scopedSlots: { customRender: 'titleName' }
},
{
@@ -415,7 +417,7 @@
}
query = {
actiProcInstId: row.designPId,
projectTaskInventoryId: row.id,
projectTaskInventoryId: row.projectLawsInventoryId,
projectLibraryId: row.projectLibraryId,
TaskKey: TaskKey,
isDisplay: false,
@@ -445,7 +447,7 @@
}
query = {
actiProcInstId: row.verifyPId,
projectTaskInventoryId: row.id,
projectTaskInventoryId: row.projectLawsInventoryId,
projectLibraryId: row.projectLibraryId,
TaskKey: TaskKey,
flowType: 4,
@@ -584,7 +586,9 @@
<style lang="less" scoped>
@import '~@assets/less/common.less';
::v-deep .ant-table-fixed-left table, .ant-table-fixed-right table{
width: min-content;
}
.doc-detail {
background: #fff;
height: 100%;
@@ -155,14 +155,11 @@
ellipsis: true
},
{
title: this.$t('OperationTime'),
dataIndex: 'createTime',
title: this.$t('feedback'),
dataIndex: 'approvalOpinion',
align: 'left',
width: 200,
ellipsis: true,
customRender: function(t, r, index) {
return moment(t).format('YYYY-MM-DD HH:mm:ss')
}
ellipsis: true
},
{
title: this.$t('resultofhandling'),
@@ -172,13 +169,6 @@
ellipsis: true,
scopedSlots: { customRender: 'resultofhandling' }
},
{
title: this.$t('feedback'),
dataIndex: 'approvalOpinion',
align: 'left',
width: 200,
ellipsis: true
},
{
title: this.$t('enclosure'),
dataIndex: 'approvalFile',
@@ -186,7 +176,17 @@
width: 100,
ellipsis: true,
scopedSlots: { customRender: 'approvalFile' }
}
},
{
title: this.$t('OperationTime'),
dataIndex: 'createTime',
align: 'left',
width: 200,
ellipsis: true,
customRender: function(t, r, index) {
return moment(t).format('YYYY-MM-DD HH:mm:ss')
}
},
]
}
},
@@ -1,7 +1,7 @@
<template>
<div>
<a-drawer
:title="$t('edit')"
:title="title"
:maskClosable="false"
:width="900"
placement="right"
@@ -20,6 +20,7 @@
</div>
<a-form-model-item class="itemModel" prop="serialNumber">
<a-input @click.native="serialNumberClick"
:disabled="disabled"
class="box-input"
:placeholder="$t('PleaseSelect')+$t('regulationNo')"
v-model="formInline.serialNumber"></a-input>
@@ -99,7 +100,9 @@
<a-form-model-item class="itemModel" prop="configItem">
<a-input class="box-input"
v-model="formInline.configItem"
:placeholder="$t('PleaseEnter')+$t('configurationItem')"/>
:placeholder="$t('PleaseEnter')+$t('configurationItem')"
:disabled="disabled"
/>
</a-form-model-item>
</div>
</a-col>
@@ -112,7 +115,7 @@
<a-form-model-item class="itemModel"
prop="deliverableType"
:rules="[{ required: true, message: $t('typeOfDeliverables') + $t('cannotEmpty'), trigger: 'change'},]"
>
>
<a-tree-select
tree-node-filter-prop="title"
v-model="formInline.deliverableType"
@@ -122,6 +125,7 @@
style="width: 100%"
:tree-data="DeliverableTreeList"
:placeholder="$t('PleaseSelect')+$t('typeOfDeliverables')"
:disabled="disabled"
/>
</a-form-model-item>
</div>
@@ -136,7 +140,8 @@
</div>
<a-form-model-item class="itemModel" prop="deliverableTemplate">
<a-button type="primary" class="button-text"
@click="clickButtonToUpload('deliverableTemplate')">
@click="clickButtonToUpload('deliverableTemplate')"
>
{{ (formInline.deliverableTemplate === 'null' || formInline.deliverableTemplate === ''
||
formInline.deliverableTemplate == null) ? $t('clickUpload') : $t('viewUploadedFiles')
@@ -148,13 +153,13 @@
</a-row>
</a-form-model>
</a-spin>
<div class="drawer-bootom-button">
<div class="drawer-bootom-button" v-if="button">
<a-button style="margin-right: .8rem" @click="handleCancel">{{$t('cancel')}}</a-button>
<a-button @click="handleSubmit" type="primary" :loading="confirmLoading">{{$t('submit')}}</a-button>
</div>
</a-drawer>
<codeNumber ref="codeNumber" @regulation="regulation" />
<uploadFile ref="uploadFile" @uploadSuccess="uploadSuccess"/>
<uploadFile ref="uploadFile" @uploadSuccess="uploadSuccess" :disabled="disabled"/>
</div>
</template>
@@ -172,7 +177,9 @@ export default {
},
data() {
return {
title: '',
visible: false,
button: true,
confirmLoading: false,
formInline: {},
disabled: false,
@@ -245,8 +252,9 @@ export default {
serialNumberClick(){
this.$refs.codeNumber.add()
},
editModel(item) {
editModel(item,data) {
this.visible = true
this.title = this.$t('edit')
this.$nextTick(() => {
this.formInline = item || {}
if (this.formInline.deliverableType) {
@@ -254,6 +262,11 @@ export default {
}
this.$refs.ruleForm.clearValidate()
})
if(data == 1) {
this.title = this.$t('view')
this.disabled = true,
this.button = false
}
},
handleSubmit() {
this.$refs.ruleForm.validate(valid => {
@@ -395,7 +395,7 @@
this.toggleSearchStatus = !this.toggleSearchStatus
},
UpdateLogClick() {
this.$refs.UpdateLogRef.getList({ dummyInventoryBaseId: this.$route.query.id })
this.$refs.UpdateLogRef.getList({ authDummyInventoryBaseId: this.$route.query.id })
},
//搜索
searchQuery() {
@@ -540,6 +540,9 @@
edit(item) {
this.$refs.editModelRef.editModel(JSON.parse(JSON.stringify(item)))
},
view(item) {
this.$refs.editModelRef.editModel(JSON.parse(JSON.stringify(item)),1)
},
deleteLib(val) {
let _this = this
this.$confirm({