Merge remote-tracking branch 'origin/master'

This commit is contained in:
wangzhijiang
2022-05-23 20:30:43 +08:00
31 changed files with 1876 additions and 1357 deletions
@@ -1,5 +1,6 @@
package com.jero.common.system.vo;
import java.io.Serializable;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
@@ -21,7 +22,8 @@ import lombok.experimental.Accessors;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class LoginUser {
public class LoginUser implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 登录人id
@@ -24,6 +24,7 @@ import com.jero.common.util.SpringContextUtils;
import com.jero.common.util.oConvertUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.redis.serializer.SerializationException;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@@ -128,7 +129,12 @@ public class ShiroRealm extends AuthorizingRealm {
// 查询用户信息
log.debug("———校验token是否有效————checkUserTokenIsEffect——————— "+ token);
LoginUser loginUser = commonAPI.getUserByName(username);
LoginUser loginUser = null;
try {
loginUser = commonAPI.getUserByName(username);
}catch (SerializationException e){
throw e;
}
if (loginUser == null) {
LoginException.loginException(401,"用户不存在!");
return null;
@@ -488,13 +488,31 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
public List<Map<String, Object>> getHeader(String flag, String cut, String searchFlag) {
List<OnlCgformField> fieldList = onlCgformFieldService.getFieldList(flag);
if (fieldList.size() != 0) {
String titleEn = "";
//过滤列表字段(is_show_list-->列表是否显示0否 1是)
if ("search".equals(searchFlag)) {
fieldList = fieldList.stream().filter(e -> YesOrNoEnum.YES.getValue().equals(String.valueOf(e.getIsShowSearch()))).collect(Collectors.toList());
} else {
fieldList = fieldList.stream().filter(e -> YesOrNoEnum.YES.getValue().equals(String.valueOf(e.getIsShowList()))).collect(Collectors.toList());
for (OnlCgformField onlCgformField : fieldList) {
if(CutEnum.EN.getValue().equals(cut) && "title_en".equals(onlCgformField.getDbFieldName())){
titleEn = onlCgformField.getDbFieldEnName();
break;
}
}
for (OnlCgformField onlCgformField : fieldList) {
if(CutEnum.EN.getValue().equals(cut) && "title".equals(onlCgformField.getDbFieldName())){
onlCgformField.setDbFieldEnName(titleEn);
break;
}
}
fieldList = fieldList.stream()
.filter(e -> YesOrNoEnum.YES.getValue().equals(String.valueOf(e.getIsShowList()))
&& !"title_en".equals(e.getDbFieldName()))
.collect(Collectors.toList());
}
}
//过滤掉英文标题字段
List<Map<String, Object>> list = new ArrayList<>();
for (OnlCgformField onlCgformField : fieldList) {
Map<String, Object> map = new HashMap<>();
@@ -3015,6 +3033,10 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
List<String> idList = new ArrayList<>();
List<String> fileIdLidt = new ArrayList<>();
for (Map record : records) {
//处理标题
if(CutEnum.EN.getValue().equals(cut)){
record.put("title",record.get("title_en"));
}
Map<String, Object> record1 = (Map) record;
idList.add((String) record1.get("id"));
for (Map.Entry<String, Object> entry : record1.entrySet()) {
@@ -3119,15 +3141,17 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
}
//高级搜索 queryConditionVOList List<QueryConditionVO>
List<QueryConditionVO> queryConditionVOList = (List<QueryConditionVO>) parameter.get("queryConditionVOList");
if(ObjectUtils.isNotEmpty(queryConditionVOList)){
String queryCondition = sqlJoint(queryConditionVOList);
if(StringUtils.isNotBlank(queryCondition)){
conditionSb.append(queryCondition);
if(ObjectUtils.isNotEmpty(parameter.get("queryConditionVOList"))){
String queryConditionVOListStr = (String) parameter.get("queryConditionVOList");
List<QueryConditionVO> queryConditionVOList = JSONObject.parseArray(queryConditionVOListStr, QueryConditionVO.class);
if(ObjectUtils.isNotEmpty(queryConditionVOList)){
String queryCondition = sqlJoint(queryConditionVOList);
if(StringUtils.isNotBlank(queryCondition)){
conditionSb.append(" and " + queryCondition);
}
}
}
//处理列表表头排序
if (StringUtils.isNotBlank((String) parameter.get("orderByField"))) {
conditionSb.append(" order by " + (String) parameter.get("orderByField"));
@@ -5067,6 +5091,7 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
fieldListQuery.add("technology_territory");
fieldListQuery.add("xin1_che1_xing2_shi2_shi1_ri4_qi1");
fieldListQuery.add("implement_time");
fieldListQuery.add("corresponding_standard");
List<String> fieldListNew = new ArrayList<>();
fieldListNew.add("id");
@@ -5123,6 +5148,10 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
for (QueryConditionVO queryConditionVO : queryConditionVOList) {
String type = queryConditionVO.getType();//and或or
String rule = queryConditionVO.getRule();
String ruleLike = "";
if(QueryRuleEnum.LEFT_LIKE.getCondition().equals(rule) || QueryRuleEnum.RIGHT_LIKE.getCondition().equals(rule)){
ruleLike = QueryRuleEnum.LIKE.getCondition();
}
String field = queryConditionVO.getField();
String val = queryConditionVO.getVal();
//如果查询字段对应的搜索条件值为空,则不作处理
@@ -5131,7 +5160,11 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
sb.append(" " + field + " ");
//查询类型
String ruleTemp = queryType(rule);
sb.append(ruleTemp + " ");
if(StringUtils.isNotBlank(ruleLike)){
sb.append(ruleLike + " ");
}else{
sb.append(ruleTemp + " ");
}
//..(用in-->特殊处理)
if(val.contains(",")){
StringBuilder sbTemp = new StringBuilder();
@@ -5140,10 +5173,21 @@ public class BussDocumentLibraryEOServiceImpl extends ServiceImpl<BussDocumentLi
}
if(StringUtils.isNotBlank(sbTemp)){
String substring = sbTemp.substring(0, sbTemp.length() - 1);
sb.append(substring);
sb.append("("+substring+")");
}
}else{
sb.append(val);
//like和in需要特殊处理
if(QueryRuleEnum.IN.getCondition().equals(rule)){
sb.append("('" + val + "')");
}else if(QueryRuleEnum.LIKE.getCondition().equals(rule)){
sb.append("'%" + val + "%'");
}else if(QueryRuleEnum.LEFT_LIKE.getCondition().equals(rule)){
sb.append("'%" + val + "'");
}else if(QueryRuleEnum.RIGHT_LIKE.getCondition().equals(rule)){
sb.append("'" + val + "%'");
}else{
sb.append("'" + val + "'");
}
}
if(count > 1){
sb.append(type + " ");
@@ -5,7 +5,6 @@ import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.system.base.controller.JeroController;
import com.jero.modules.project.entity.ProjectRelatedPersonnel;
import com.jero.modules.project.service.IProjectRelatedPersonnelService;
import com.jero.modules.system.entity.SysUser;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -195,7 +194,7 @@ public class ProjectRelatedPersonnelController extends JeroController<ProjectRel
@ApiOperation(value="项目库-相关人员维护表-根据projectId查询认证工程师", notes="项目库-相关人员维护表-根据projectId查询认证工程师")
@GetMapping(value = "/queryCertificationEngineer")
public Result<?> queryCertificationEngineer(@RequestParam(name="projectId",required=true) String projectId){
List<SysUser> certificationEngineerList = projectRelatedPersonnelService.queryCertificationEngineer(projectId);
List<ProjectRelatedPersonnel> certificationEngineerList = projectRelatedPersonnelService.queryCertificationEngineer(projectId);
return Result.OK(certificationEngineerList);
}
}
@@ -4,7 +4,7 @@ public enum ProjectTaskPlanningNameEnum {
LIST_CONFIRMATION("法规清单确认"," Confirmation of regulations list"),
LEGAL_TASK_CONFIRMATION("法规任务确认","Regulatory task confirmation"),
DESIGN_DEADLINE("设计符合性确认","Design Compliance Check"),
PREHOMO_DEADLINE("Pre-Homo确认","Pre-homo Check"),
PREHOMO_DEADLINE("Pre-Homo确认","Pre-Homo Check"),
ATTESTATION_START_TIME("认证开始","Certification start"),
ATTESTATION_END_TIME("认证结束"," Certification end"),
VERIFY_DEADLINE("验证符合性确认截止时间","Verification compliance confirmation deadline"),
@@ -2,7 +2,6 @@ package com.jero.modules.project.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.project.entity.ProjectRelatedPersonnel;
import com.jero.modules.system.entity.SysUser;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.springframework.web.multipart.MultipartFile;
@@ -87,5 +86,5 @@ public interface IProjectRelatedPersonnelService extends IService<ProjectRelated
ProjectRelatedPersonnel queryByProjectIdAndDutyTerritory(String projectId, String dutyTerritory);
List<SysUser> queryCertificationEngineer(String projectId);
List<ProjectRelatedPersonnel> queryCertificationEngineer(String projectId);
}
@@ -11,6 +11,7 @@ import com.jero.common.util.RedisUtil;
import com.jero.common.util.TokenUtils;
import com.jero.modules.dummy.service.impl.DummyInventoryInfoEOServiceImpl;
import com.jero.modules.enums.DictCodeEnum;
import com.jero.modules.project.entity.ProjectLibraryBase;
import com.jero.modules.project.entity.ProjectRelatedPersonnel;
import com.jero.modules.project.mapper.ProjectRelatedPersonnelMapper;
import com.jero.modules.project.service.IProjectRelatedPersonnelService;
@@ -83,6 +84,8 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
@Lazy
private RedisUtil redisUtil;
@Autowired
private ProjectLibraryBaseServiceImpl projectLibraryBaseService;
/**
* 保存
*
@@ -465,9 +468,9 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
try {
String titleOne = "";
if(CutEnum.CN.getValue().equals(cut)){
titleOne = "*责任领域,*法规工程师,*工程接口人,*认证工程师,备注";
titleOne = "责任领域,法规工程师,工程接口人,认证工程师,备注";
}else{
titleOne = "*Responsible Field,*Regulation Engineer,*Engineering Interface,*Homologation Engineer,Comments";
titleOne = "Responsible Field,Regulation Engineer,Engineering Interface,Homologation Engineer,Comments";
}
//创建临时文件夹
@@ -566,92 +569,92 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
String token = request.getHeader("X-Access-Token");
TokenUtils.verifyToken(token, sysBaseAPI, redisUtil);
OutputStream os = null;
HSSFWorkbook workbook = new HSSFWorkbook();
String fileOriName = "";
String filePath = uploadpath + File.separator + fileOriName;
try {
String titleOne = "";
if (CutEnum.CN.getValue().equals(projectRelatedPersonnel.getCut())) {
titleOne = "*责任领域,*法规工程师,*工程接口人,*认证工程师,备注";
fileOriName = "相关人员导入模板.xls";
} else {
titleOne = "*Responsible Field,*Regulation Engineer,*Engineering Interface,*Homologation Engineer,Comments";
fileOriName = "Import template of related personnel.xls";
}
//创建临时文件夹
File nowFile = new File(filePath);
if (nowFile.exists()) {
nowFile.delete();
}
nowFile.mkdirs();
HSSFSheet sheet = workbook.createSheet("虚拟清单导入模板");
sheet.setDefaultColumnWidth(16);//列宽
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setWrapText(true);//自动换行
cellStyle.setAlignment(HorizontalAlignment.CENTER);//垂直居中
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//水平居中
HSSFCellStyle cellStyleTemp = workbook.createCellStyle();
cellStyleTemp.setWrapText(true);//自动换行
int startLine = 0;
int endLine = 4;
//合并单元格
CellRangeAddress region1 =
new CellRangeAddress(1, 1, startLine, endLine); //参数1:起始行 参数2:终止行 参数3:起始列 参数4:终止列
sheet.addMergedRegion(region1);
String explainInfo = null;
if (CutEnum.CN.getValue().equals(projectRelatedPersonnel.getCut())) {
explainInfo = "填写说明\n" +
"1.导入数据从第三行开始\n" +
"2.所有带*号的字段必须填写\n" +
"3.认证类型,认证级别,实施类别,交付物类型,发起人,责任人,字段是单选属性,必须和系统中的对应字段选项相匹配\n" +
"4.责任领域,字段是多选属性,必须和系统中的对应字段选项相匹配,填写多个时采用英文或中文逗号分割\n" +
"5.编号,子标题,WVTA ID,备注,填写文本内容\n" +
"6.交付物模板字段为文件属性,填写时需要在本文件同级目录下以标准号为名称建立文件夹,并在文件夹下放置文件,假设在AAA标准号下放置了B.docx,则应填写AAA/B.docx";
} else {
explainInfo = "filling explanation\n" +
"1.import data starts at the third line\n" +
"2.all fields marked with * must be filled in\n" +
"3.Certification Type,Certification Level,Usage,type of deliverables,initiator,person liable,Fields are radio attributes that must match the corresponding field option in the system\n" +
"4.Responsible Field, field is a multi-select attribute and must match the corresponding field in the system. If multiple fields are filled in, separate them by commas (,)\n" +
"5.Number,Sub-Title,WVTA ID,Comments,Fill in the text\n" +
"6.deliverable template,When filling in the field, you need to create a folder in the directory of the same level as the file with the name of the standard number and place the file in the folder. If b. diocx is stored under the AAA standard number, enter AAA/B. diocx";
}
HSSFRichTextString explain = new HSSFRichTextString(explainInfo);
//表头
Row row = sheet.createRow(0);//开始创建标题行
String[] headerArr = titleOne.split(",");
for (int m = 0; m < headerArr.length; m++) {
row.createCell(m).setCellValue(headerArr[m]);
}
Row rowExplain = sheet.createRow(1);
short height = (short) (7 * 252);
rowExplain.setHeight((short) height);
Cell cell = rowExplain.createCell(0);
cell.setCellValue(explain);
cell.setCellStyle(cellStyleTemp);
response.setHeader("Content-Disposition",
"attachment; filename=\"" + fileOriName + ".xls");
response.setContentType("application/force-download");
response.flushBuffer();
os = response.getOutputStream();
workbook.write(os);
} catch (Exception e) {
e.printStackTrace();
throw new JeroBootException("下载文件失败,请重试");
} finally {
IOUtils.closeQuietly(os);
OutputStream os = null;
HSSFWorkbook workbook = new HSSFWorkbook();
String fileOriName = "";
String filePath = uploadpath + File.separator + fileOriName;
try {
String titleOne = "";
if (CutEnum.CN.getValue().equals(projectRelatedPersonnel.getCut())) {
titleOne = "责任领域,法规工程师,工程接口人,认证工程师,备注";
fileOriName = "相关人员导入模板.xls";
} else {
titleOne = "Responsible Field,Regulation Engineer,Engineering Interface,Homologation Engineer,Comments";
fileOriName = "Import template of related personnel.xls";
}
//创建临时文件夹
File nowFile = new File(filePath);
if (nowFile.exists()) {
nowFile.delete();
}
nowFile.mkdirs();
HSSFSheet sheet = workbook.createSheet("虚拟清单导入模板");
sheet.setDefaultColumnWidth(16);//列宽
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setWrapText(true);//自动换行
cellStyle.setAlignment(HorizontalAlignment.CENTER);//垂直居中
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//水平居中
HSSFCellStyle cellStyleTemp = workbook.createCellStyle();
cellStyleTemp.setWrapText(true);//自动换行
int startLine = 0;
int endLine = 4;
//合并单元格
CellRangeAddress region1 =
new CellRangeAddress(1, 1, startLine, endLine); //参数1:起始行 参数2:终止行 参数3:起始列 参数4:终止列
sheet.addMergedRegion(region1);
String explainInfo = null;
if (CutEnum.CN.getValue().equals(projectRelatedPersonnel.getCut())) {
explainInfo = "填写说明\n" +
"1.导入数据从第三行开始\n" +
"2.所有带*号的字段必须填写\n" +
"3.认证类型,认证级别,实施类别,交付物类型,发起人,责任人,字段是单选属性,必须和系统中的对应字段选项相匹配\n" +
"4.责任领域,字段是多选属性,必须和系统中的对应字段选项相匹配,填写多个时采用英文或中文逗号分割\n" +
"5.编号,子标题,WVTA ID,备注,填写文本内容\n" +
"6.交付物模板字段为文件属性,填写时需要在本文件同级目录下以标准号为名称建立文件夹,并在文件夹下放置文件,假设在AAA标准号下放置了B.docx,则应填写AAA/B.docx";
} else {
explainInfo = "filling explanation\n" +
"1.import data starts at the third line\n" +
"2.all fields marked with * must be filled in\n" +
"3.Certification Type,Certification Level,Usage,type of deliverables,initiator,person liable,Fields are radio attributes that must match the corresponding field option in the system\n" +
"4.Responsible Field, field is a multi-select attribute and must match the corresponding field in the system. If multiple fields are filled in, separate them by commas (,)\n" +
"5.Number,Sub-Title,WVTA ID,Comments,Fill in the text\n" +
"6.deliverable template,When filling in the field, you need to create a folder in the directory of the same level as the file with the name of the standard number and place the file in the folder. If b. diocx is stored under the AAA standard number, enter AAA/B. diocx";
}
HSSFRichTextString explain = new HSSFRichTextString(explainInfo);
//表头
Row row = sheet.createRow(0);//开始创建标题行
String[] headerArr = titleOne.split(",");
for (int m = 0; m < headerArr.length; m++) {
row.createCell(m).setCellValue(headerArr[m]);
}
Row rowExplain = sheet.createRow(1);
short height = (short) (7 * 252);
rowExplain.setHeight((short) height);
Cell cell = rowExplain.createCell(0);
cell.setCellValue(explain);
cell.setCellStyle(cellStyleTemp);
response.setHeader("Content-Disposition",
"attachment; filename=\"" + fileOriName + ".xls");
response.setContentType("application/force-download");
response.flushBuffer();
os = response.getOutputStream();
workbook.write(os);
} catch (Exception e) {
e.printStackTrace();
throw new JeroBootException("下载文件失败,请重试");
} finally {
IOUtils.closeQuietly(os);
}
}
@@ -670,7 +673,7 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
String titleOne = "";
if(CutEnum.CN.getValue().equals(cut)){
titleOne = "*责任领域,*法规工程师,*工程接口人,*认证工程师,备注";
titleOne = "责任领域,法规工程师,工程接口人,认证工程师,备注";
explainInfo = "填写说明\n" +
"1.导入数据从第三行开始\n" +
"2.所有带*号的字段必须填写\n"+
@@ -679,7 +682,7 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
"5.编号,子标题,WVTA ID,备注,填写文本内容\n" +
"6.交付物模板字段为文件属性,填写时需要在本文件同级目录下以标准号为名称建立文件夹,并在文件夹下放置文件,假设在AAA标准号下放置了B.docx,则应填写AAA/B.docx";
}else{
titleOne = "*Responsible Field,*Regulation Engineer,*Engineering Interface,*Homologation Engineer,Comments";
titleOne = "Responsible Field,Regulation Engineer,Engineering Interface,Homologation Engineer,Comments";
explainInfo = "filling explanation\n" +
"1.import data starts at the third line\n" +
"2.all fields marked with * must be filled in\n"+
@@ -710,46 +713,48 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
Row headerRow = sheet.getRow(i);
boolean isBlank = dummyInventoryInfoEOService.isRowEmpty(row);
if (row != null && !isBlank) {
int columNos = headerRow.getLastCellNum();// 表头总共的列数
if (columNos == 5) {//列数对
for (int j = 0; j < columNos; j++) {
Cell cell = row.getCell(j,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
if (i == 0){
if (i == 0 && !cell.getStringCellValue().equals(titleOneList.get(j))) {//检查表头
if (CutEnum.CN.getValue().equals(cut)) {
throw new JeroBootException("读取失败.请检查第 " + (i+1) + " 行表头,请严格按照模板文件导入数据");
} else {
throw new JeroBootException("The data fails to be read.Please check header in line " + (i+1) + " .Import data strictly according to the template file.");
}
// if (row != null && !isBlank) {
int columHeadNos = headerRow.getLastCellNum();// 表头总共的列数
if (columHeadNos == 5) {//列数对
for (int j = 0; j < columHeadNos; j++) {
Cell cell = row.getCell(j,Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
if (i == 0){
if (i == 0 && !cell.getStringCellValue().equals(titleOneList.get(j))) {//检查表头
if (CutEnum.CN.getValue().equals(cut)) {
throw new JeroBootException("读取失败.请检查第 " + (i+1) + " 行表头,请严格按照模板文件导入数据");
} else {
throw new JeroBootException("The data fails to be read.Please check header in line " + (i+1) + " .Import data strictly according to the template file.");
}
}
}
}else if((i!=1 && columNos != 5) || (i==2 && columNos !=1)){
}
}/*else if(i!=1 && columNos != 5) {
if (CutEnum.CN.getValue().equals(cut)) {
throw new JeroBootException("导入的列数不对,请检查");
} else {
throw new JeroBootException("The number of imported columns is wrong. Please check!");
}
}
}else{
if (CutEnum.CN.getValue().equals(cut)) {
throw new JeroBootException("导入的数据不能为空,请检查");
} else {
throw new JeroBootException("The imported data of cannot be empty. Please check!");
}
}
}*/
// }else{
// if (CutEnum.CN.getValue().equals(cut)) {
// throw new JeroBootException("导入的数据不能为空,请检查");
// } else {
// throw new JeroBootException("The imported data of cannot be empty. Please check!");
// }
// }
if (i == 1) {//校验填写说明
row = sheet.getRow(i);
int columNos = row.getLastCellNum();
if(columNos != 1 /*|| (!row.getCell(0).getStringCellValue().equals(explainInfo))*/){
if (CutEnum.CN.getValue().equals(cut)) {
throw new JeroBootException("填写说明列数不对,请严格按照模板文件导入数据");
}else{
throw new JeroBootException("The number of columns of filling explanation is wrong. Please import data strictly according to the template file.");
//if(columNos != 1 /*|| (!row.getCell(0).getStringCellValue().equals(explainInfo))*/){
for (int k = 0; k < columNos; k++){
if (k>0 && StringUtils.isNotBlank(row.getCell(k).getStringCellValue())) {
if (CutEnum.CN.getValue().equals(cut)) {
throw new JeroBootException("填写说明列数不对,请严格按照模板文件导入数据");
} else {
throw new JeroBootException("The number of columns of filling explanation is wrong. Please import data strictly according to the template file.");
}
}
}
}
if (i > 1) {//读取数据
//获取每一行数据
@@ -762,7 +767,7 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
projectRelatedPersonnel.setDutyTerritory(row.getCell(0).toString());
}else{//责任领域不能为空,报错
if(CutEnum.CN.getValue().equals(cut)){
throw new JeroBootException("请填写责任领域,带*的为必填.请检查第 "+ (i+1) + "");
throw new JeroBootException("请填写责任领域,为必填.请检查第 "+ (i+1) + "");
}else{
throw new JeroBootException("Please fill in the Responsible Field and those marked with * are required. .Please check line" + (i+1));
}
@@ -777,18 +782,18 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
projectRelatedPersonnel.setLawEngineerName(lawEngineerName);
projectRelatedPersonnel.setEngineeringInterfacePersonName(engineeringInterfacePersonName);
projectRelatedPersonnel.setCertificationEngineerName(certificationEngineerName);
}else if(StringUtils.isBlank(lawEngineerName) && StringUtils.isBlank(engineeringInterfacePersonName) && StringUtils.isBlank(certificationEngineerName)) {
//除了责任领域,带*的全为空->可以
}else if(StringUtils.isBlank(lawEngineerName) || StringUtils.isBlank(engineeringInterfacePersonName) || StringUtils.isBlank(certificationEngineerName)) {
//除了责任领域,其他的可以全为空->可以
projectRelatedPersonnel.setLawEngineerName("");
projectRelatedPersonnel.setEngineeringInterfacePersonName("");
projectRelatedPersonnel.setCertificationEngineerName("");
}else {//除了责任领域,备注,有一个为空都报错
}/*else {//除了责任领域,备注,有一个为空都报错
if(CutEnum.CN.getValue().equals(cut)){
throw new JeroBootException("请填写必填字段内容,带*的为必填.请检查第 "+ (i+1) + "行");
}else{
throw new JeroBootException("Please fill in the required fields marked with * .Please check line" + (i+1));
}
}
}*/
String remark = row.getCell(4, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK).toString();
if(StringUtils.isNotEmpty(row.getCell(4).toString())) {
@@ -803,7 +808,7 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
}
workbook.close();
//把数据翻译成id,并保存
oppositeDisposeData(list, projectId, cut);
oppositeDisposeData(list, projectId, cut);
}
@@ -1037,28 +1042,32 @@ public class ProjectRelatedPersonnelServiceImpl extends ServiceImpl<ProjectRelat
// }
@Override
public List<SysUser> queryCertificationEngineer(String projectId) {
public List<ProjectRelatedPersonnel> queryCertificationEngineer(String projectId) {
QueryWrapper<ProjectRelatedPersonnel> queryWrapper = new QueryWrapper<>();
List<ProjectRelatedPersonnel> list = list(queryWrapper.eq("project_id",projectId));
List<String> certificationEngineerList = list.stream().map(e -> e.getCertificationEngineer()).collect(Collectors.toList());
StringBuilder userIdBuilder=new StringBuilder();
List<SysUser> certificationEngineerUsers = new ArrayList<>();
if(CollectionUtils.isNotEmpty(certificationEngineerList)){
for(String certificationEngineerId :certificationEngineerList){
if(StringUtils.isNotBlank(certificationEngineerId)) {
userIdBuilder.append(certificationEngineerId).append(",");
}
//查询基础表认证工程师的值
QueryWrapper<ProjectLibraryBase> baseQueryWrapper = new QueryWrapper<>();
List<ProjectLibraryBase> baseDataList = projectLibraryBaseService.list(baseQueryWrapper.eq("id", projectId));
String baseCertificationEngineer = baseDataList.get(0).getCertificationEngineer();
if(StringUtils.isNotBlank(baseCertificationEngineer)) {
for (ProjectRelatedPersonnel projectRelatedPersonnel : list) {
projectRelatedPersonnel.setCertificationEngineer(baseCertificationEngineer);
}
String userId = userIdBuilder.substring(0, userIdBuilder.toString().length() - 1);
List userIdList = Arrays.asList(userId.split(","));
userIdList.stream().distinct().collect(Collectors.toList());
QueryWrapper<SysUser> userqueryWrapper = new QueryWrapper<>();
userqueryWrapper.in("id ", userIdList);
certificationEngineerUsers = sysUserMapper.selectList(userqueryWrapper);
}
return certificationEngineerUsers;
disposeData(list);
List<ProjectRelatedPersonnel> certificationEngineerList = new ArrayList<>();
for(ProjectRelatedPersonnel personnel : list){
ProjectRelatedPersonnel relatedPersonnel =new ProjectRelatedPersonnel();
relatedPersonnel.setCertificationEngineer(personnel.getCertificationEngineer());
relatedPersonnel.setCertificationEngineerName(personnel.getCertificationEngineerName());
certificationEngineerList.add(relatedPersonnel);
}
certificationEngineerList = certificationEngineerList.stream().distinct().collect(Collectors.toList());
return certificationEngineerList;
}
@@ -10,7 +10,7 @@
<a-select v-else-if="tagType=='select'" allowClear :getPopupContainer = "getPopupContainer" :placeholder="placeholder" :disabled="disabled" :value="getValueSting" @change="handleInput">
<!-- <a-select-option :value="null">{{$t('pleaseSelect')}}</a-select-option>-->
<a-select-option v-for="(item, key) in dictOptionsValue" :key="key" :value="item.value">
<span class="itemOption" :title=" item.text || item.label ">
<span class="itemOption-index" :title=" item.text || item.label ">
{{ item.text || item.label }}
</span>
</a-select-option>
@@ -118,7 +118,7 @@
}
</script>
<style scoped>
.itemOption {
.itemOption-index {
display: inline-block;
width: 100%;
overflow: hidden;
@@ -3,37 +3,48 @@
<a-card :bordered="false">
<div class="collection-search-wrapper">
<div class="collection-search-header">
<a-form layout="inline" @keyup.enter.native="searchQuery(queryParams)">
<a-form-model
class="collection-content"
:model="queryParams"
ref="tagEditForm"
>
<a-row :gutter="24" type="flex" justify="start">
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<a-form-model-item :label="$t('standard')">
<a-input :placeholder="$t('enterNumber')" v-model="queryParams.serialNumber"></a-input>
</a-form-model-item>
<div class="box-title-text">
<div class="title-text" :title="$t('standard')">
<span>{{$t('standard')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('standard')"
v-model="queryParams.serialNumber"></a-input>
</div>
</a-col>
<a-col :md="6" :sm="8">
<a-form-model-item :label="$t('title')">
<a-input :placeholder="$t('enterTitle')" v-model="queryParams.title"></a-input>
</a-form-model-item>
<div class="box-title-text">
<div class="title-text" :title="$t('title')">
<span>{{$t('title')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('title')"
v-model="queryParams.title"></a-input>
</div>
</a-col>
<a-col :md="6" :sm="8">
<a-form-model-item :label="$t('status')">
<j-dict-select-tag type="list" v-model="queryParams.state" dictCode="file_type" :placeholder="$t('selectStatus')" />
</a-form-model-item>
</a-col>
<a-col :md="6" :sm="8">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">{{$t('query')}}</a-button>
<a-button @click="searchReset" icon="reload" style="margin-left: 8px">{{ $t('reset') }}</a-button>
</span>
<div class="box-title-text">
<div class="title-text" :title="$t('status')">
<span>{{$t('status')}}</span>
</div>
<j-dict-select-tag class="box-input" v-model="queryParams.state"
:placeholder="$t('PleaseSelect')+$t('status')"
:type="'select'"
:triggerChange="false" :dictCode="'state'"/>
</div>
</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>
</a-col>
</span>
</a-row>
</a-form-model>
</a-form>
</a-form>
</div>
</div>
</div>
<div class="table-operator">
@@ -272,28 +283,64 @@
}
}
}
</style>
<style lang="less">
.collection{
.collection-content{
.ant-form-item-control-wrapper{
min-width: 180px;
}
}
}
.collection-search-header{
.ant-form-item-control-wrapper{
min-width: 200px;
.ant-form-item{
display: flex;
}
}
.ant-col-md-6{
display: flex;
}
.table-page-search-submitButtons{
float: none!important;
}
.box-title-text {
line-height: 1.4;
display: flex;
align-items: center;
margin-bottom: 10px;
}
.title-text {
width: 33px;
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: 100%;
height: 38px;
}
.box-button {
height: 38px;
}
</style>
<style lang="less">
/*.collection{*/
/* .collection-content{*/
/* .ant-form-item-control-wrapper{*/
/* min-width: 180px;*/
/* }*/
/* }*/
/*}*/
/*.collection-search-header{*/
/* .ant-form-item-control-wrapper{*/
/* min-width: 200px;*/
/* .ant-form-item{*/
/* display: flex;*/
/* }*/
/* }*/
/*.ant-col-md-6{*/
/* display: flex;*/
/*}*/
/*.table-page-search-submitButtons{*/
/* float: none!important;*/
/*}*/
/*}*/
.box-input .ant-select-selection__rendered {
line-height: 38px;
height: 38px;
}
.box-input .ant-select-selection--single {
height: 38px;
}
</style>
@@ -1398,6 +1398,6 @@
.box-input .ant-select-selection__rendered {
line-height: 32px;
height: 32px;
overflow-y: auto;
/*overflow-y: auto;*/
}
</style>
@@ -3,41 +3,56 @@
<a-card :bordered="false">
<div class="subscribtion-search-wrapper">
<div class="subscribtion-search-header">
<!-- <search :url="url" :flag="'1'"></search>-->
<a-form layout="inline" @keyup.enter.native="searchQuery">
<!-- <search :url="url" :flag="'1'"></search>-->
<div class="table-page-search-wrapper">
<a-row :gutter="24">
<a-col :md="6" :sm="6">
<a-form-item :label="$t('standard')">
<a-input :placeholder="$t('enterNumber')" v-model="queryParams.serialNumber"></a-input>
</a-form-item>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('standard')">
<span>{{$t('standard')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('standard')"
v-model="queryParams.serialNumber"></a-input>
</div>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item :label="$t('title')">
<a-input :placeholder="$t('enterTitle')" v-model="queryParams.title"></a-input>
</a-form-item>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('title')">
<span>{{$t('title')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('title')"
v-model="queryParams.title"></a-input>
</div>
</a-col>
<a-col :md="6" :sm="6">
<a-form-item :label="$t('status')">
<j-dict-select-tag type="list" v-model="queryParams.state" dictCode="file_type" :placeholder="$t('selectStatus')" />
</a-form-item>
</a-col>
<a-col :md="6" :sm="4">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">{{$t('query')}}</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">{{$t('reset')}}</a-button>
</span>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('status')">
<span>{{$t('status')}}</span>
</div>
<j-dict-select-tag class="box-input" v-model="queryParams.state"
:placeholder="$t('PleaseSelect')+$t('status')"
:type="'select'"
:triggerChange="false" :dictCode="'state'"/>
</div>
</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>
</a-col>
</span>
</a-row>
</a-form>
</div>
</div>
</div>
<div class="table-operator">
<div class="operator-text" @click="handleBatManage">
<a-icon type="plus" />
<a-icon type="plus"/>
{{ $t('SubscriptionManagement') }}
</div>
<div class="operator-text" @click="handleBatCancel">
<a-icon type="delete" />
<a-icon type="delete"/>
{{ $t('BatchCancellation') }}
</div>
</div>
@@ -53,13 +68,13 @@
:rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
>
<span slot="serialNumber" slot-scope="text, record">
<a class="table-del" @click="onDetail(record)">{{record.serialNumber}}</a>
<a class="table-del" @click="onDetail(record)">{{record.serialNumber}}</a>
</span>
<span slot="serialtitle" slot-scope="text, record">
<a class="table-del" @click="onDetail(record)">{{record.title}}</a>
<a class="table-del" @click="onDetail(record)">{{record.title}}</a>
</span>
<span slot="action" slot-scope="text, record">
<a class="table-del" @click="onCancel(record)">{{$t('CancelSubscribe')}}</a>
<a class="table-del" @click="onCancel(record)">{{$t('CancelSubscribe')}}</a>
</span>
</a-table>
<div class="page" v-if="tableData.length > 0">
@@ -82,196 +97,199 @@
<script>
import { getAction, postAction, deleteAction, putAction } from '@/api/manage'
import SubArea from './module/SubArea'
export default {
name:'subscribtion',
components:{
SubArea,
name: 'subscribtion',
components: {
SubArea
},
data(){
return{
selectedRowKeys:[],
queryParams:{
pageNo:1,
pageSize:10
data() {
return {
selectedRowKeys: [],
queryParams: {
pageNo: 1,
pageSize: 10
}, //搜索条件
total:0,
total: 0,
//列表表头
columns: [
{
title: this.$t('standard'),
dataIndex: 'serialNumber',
key: 'serialNumber',
align: "center",
align: 'center',
width: 100,
scopedSlots: {customRender: 'serialNumber'},
ellipsis: true,
scopedSlots: { customRender: 'serialNumber' },
ellipsis: true
},
{
title: this.$t('title'),
align: "center",
align: 'center',
width: 100,
dataIndex: 'title',
scopedSlots: {customRender: 'serialtitle'},
ellipsis: true,
scopedSlots: { customRender: 'serialtitle' },
ellipsis: true
},
{
title: this.$t('status'),
align: "center",
align: 'center',
width: 100,
dataIndex: 'state',
ellipsis: true,
ellipsis: true
},
{
title: this.$t('subscriptionTime'),
align: "center",
align: 'center',
width: 100,
dataIndex: 'createTime',
ellipsis: true,
ellipsis: true
},
{
title: this.$t('operation'),
dataIndex: 'action',
scopedSlots: {customRender: 'action'},
align: "center",
scopedSlots: { customRender: 'action' },
align: 'center',
width: 170
}
],
tableData:[], //列表数据
visible:false,
selecIds:[],
loading:false,
url:{
tableData: [], //列表数据
visible: false,
selecIds: [],
loading: false,
url: {
tableHeader: 'subscribe/onlCgformSubscribe/getHeader', //表格头部字段
seachList: 'subscribe/onlCgformSubscribe/queryCondition', //搜索字段
tableList: 'subscribe/onlCgformSubscribe/page', //表格数据
tableList: 'subscribe/onlCgformSubscribe/page' //表格数据
},
OperationList: [
{
text: this.$t('CancelSubscribe'),
ClickEvent: 'onCancel'
}
],
]
}
},
mounted() {
this.loadData()
},
methods:{
methods: {
//获取列表数据
loadData(){
let params={
loadData() {
let params = {
...this.queryParams
}
this.loading=true
postAction(`subscribe/onlCgformSubscribe/page`,params).then(res=>{
if(res.success){
this.tableData= [ ...res.result.records ]
this.total=res.result.total
this.loading=false
this.loading = true
postAction(`subscribe/onlCgformSubscribe/page`, params).then(res => {
if (res.success) {
this.tableData = [...res.result.records]
this.total = res.result.total
this.loading = false
}
})
},//搜索
searchQuery(){
searchQuery() {
this.loadData()
},
//订阅领域管理
handleBatManage(){
this.visible=true
handleBatManage() {
this.visible = true
},
//批量取消收藏
handleBatCancel(){
let params={
ids:this.selecIds.join(',')
handleBatCancel() {
let params = {
ids: this.selecIds.join(',')
}
if(this.selecIds&&this.selecIds.length>0){
if (this.selecIds && this.selecIds.length > 0) {
this.$confirm({
title: this.$t('confirmBulkUnsubscribe'),
content: '',
onOk:
async () => {
deleteAction(`subscribe/onlCgformSubscribe/deleteBatch`,params).then(res=> {
if(res.success){
deleteAction(`subscribe/onlCgformSubscribe/deleteBatch`, params).then(res => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
if(this.selecIds.length==this.tableData.length&&this.queryParams.pageNo!==1){
this.queryParams.pageNo=this.queryParams.pageNo-1
if (this.selecIds.length == this.tableData.length && this.queryParams.pageNo !== 1) {
this.queryParams.pageNo = this.queryParams.pageNo - 1
}
this.loadData()
}else{
} else {
this.$message.warning(this.$t('operationFailed'))
}
})
},
onCancel() {},
});
}else{
onCancel() {
}
})
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
},
//取消订阅
onCancel(record){
let params={
id:record.id
onCancel(record) {
let params = {
id: record.id
}
this.$confirm({
title: this.$t('unsubscribeConfirm'),
content: '',
onOk:
async () => {
deleteAction(`subscribe/onlCgformSubscribe/delete`,params).then(res=> {
if(res.success){
deleteAction(`subscribe/onlCgformSubscribe/delete`, params).then(res => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
if(this.tableData.length==1&&this.queryParams.pageNo!==1){
this.queryParams.pageNo=this.queryParams.pageNo-1
if (this.tableData.length == 1 && this.queryParams.pageNo !== 1) {
this.queryParams.pageNo = this.queryParams.pageNo - 1
}
this.loadData()
}else{
} else {
this.$message.warning(this.$t('operationFailed'))
}
})
},
onCancel() {},
});
onCancel() {
}
})
},
//清空
searchReset(){
this.queryParams={
searchReset() {
this.queryParams = {
pageNo: 1,
pageSize: 10
}
this.loadData()
},
//点击页数
onChangePage(page,pageSize){
onChangePage(page, pageSize) {
this.queryParams.pageNo = page
this.loadData()
},
//一页显示条数
SizeChange(page,pageSize){
SizeChange(page, pageSize) {
this.queryParams.pageSize = pageSize
this.queryParams.pageNo=1
this.queryParams.pageNo = 1
this.loadData()
},
//选择框
onSelectChange(rows) {
this.selectedRowKeys = rows;
this.selectedRowKeys = rows
// let ids=[]
// if(rows && rows.length>0){
// rows.forEach(item=>{
// ids.push(item.id)
// })
// }
this.selecIds=rows
this.selecIds = rows
},
//点击编号
numberClick(records){
numberClick(records) {
},
//点击名称
titleClick(records){
titleClick(records) {
},
areaVisible(val){
this.visible=val
areaVisible(val) {
this.visible = val
},
//跳转详情
onDetail(item) {
@@ -279,9 +297,9 @@
let newUrl = this.$router.resolve({
path: '/docManage/library/detail',
query: {
id:item.documentId ,
serial_number:item.serialNumber,
title:item.title
id: item.documentId,
serial_number: item.serialNumber,
title: item.title
}
})
window.open(newUrl.href, '_blank')
@@ -291,34 +309,76 @@
</script>
<style lang="less" scoped>
@import '~@assets/less/common.less';
.subscribtion{
.subscribtion-search-wrapper{
margin-bottom: 20px;
}
.page{
margin-top: 20px;
text-align: right;
}
.subscribtion {
.subscribtion-search-wrapper {
margin-bottom: 20px;
}
.page {
margin-top: 20px;
text-align: right;
}
}
.box-title-text {
line-height: 1.4;
display: flex;
align-items: center;
margin-bottom: 10px;
}
.title-text {
width: 33px;
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: 100%;
height: 38px;
}
.box-button {
height: 38px;
}
</style>
<style lang="less">
.subscribtion{
.subscribtion-content{
.ant-form-item-control-wrapper{
.subscribtion {
.subscribtion-content {
.ant-form-item-control-wrapper {
min-width: 180px;
.ant-form-item{
.ant-form-item {
display: flex;
}
}
}
}
.subscribtion-search-header{
.ant-form-item-control-wrapper{
min-width: 200px;
}
.table-page-search-submitButtons{
float: none!important;
.subscribtion-search-header {
.ant-form-item-control-wrapper {
min-width: 200px;
}
/*.table-page-search-submitButtons {*/
/* float: none !important;*/
/*}*/
}
.box-input .ant-select-selection__rendered {
line-height: 38px;
height: 38px;
}
.box-input .ant-select-selection--single {
height: 38px;
}
</style>
@@ -39,16 +39,16 @@
:wrapper-col="wrapperCol"
>
<a-form-model-item :label="$t('name')" prop="itemText" v-if="dictVal=='list'">
<a-input v-model="form.itemText" :placeholder="$t('enterName')" />
<a-input v-model.trim="form.itemText" :placeholder="$t('enterName')" />
</a-form-model-item>
<a-form-model-item :label="$t('name')" prop="name" v-if="dictVal=='tree'">
<a-input v-model="form.name" :placeholder="$t('enterName')" />
<a-input v-model.trim="form.name" :placeholder="$t('enterName')" />
</a-form-model-item>
<!-- <a-form-model-item :label="$t('DataValue')" prop="itemValue">-->
<!-- <a-input v-model="form.itemValue" :placeholder="$t('enterDataValue')" />-->
<!-- </a-form-model-item>-->
<a-form-model-item :label="$t('enName')" prop="enName">
<a-input v-model="form.enName" :placeholder="$t('PleaseEnterYourEnglishName')" />
<a-input v-model.trim="form.enName" :placeholder="$t('PleaseEnterYourEnglishName')" />
</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')" >
@@ -58,7 +58,7 @@
</a-select>
</a-form-model-item>
<a-form-model-item :label="$t('describe')" prop="description">
<a-input v-model="form.description" :placeholder="$t('PleaseEnterDescription')" />
<a-input v-model.trim="form.description" :placeholder="$t('PleaseEnterDescription')" />
</a-form-model-item>
</a-form-model>
@@ -99,11 +99,11 @@
rules:{
name:[
{ required: true, message: this.$t('enterName'), trigger: 'blur' },
{ min:1, max: 30, message: this.$t('cantExeed')+'30'+this.$t('characters'), trigger: 'blur' },
{ min:1, max: 100, message: this.$t('cantExeed')+'100'+this.$t('characters'), trigger: 'blur' },
],
itemText:[
{ required: true, message: this.$t('enterName'), trigger: 'blur' },
{ min:1, max: 30, message: this.$t('cantExeed')+'30'+this.$t('characters'), trigger: 'blur' },
{ min:1, max: 100, message: this.$t('cantExeed')+'100'+this.$t('characters'), trigger: 'blur' },
],
// itemValue:[
// { required: true, message: this.$t('enterDataValue'), trigger: 'blur' },
@@ -111,7 +111,7 @@
// ],
enName:[
{ required: true, message: this.$t('PleaseEnterYourEnglishName'), trigger: 'blur' },
{ min:1, max: 50, message: this.$t('cantExeed')+'50'+this.$t('characters'), trigger: 'blur' },
{ min:1, max: 100, message: this.$t('cantExeed')+'100'+this.$t('characters'), trigger: 'blur' },
],
description:[
// { required: true, message: this.$t('PleaseEnterDescription'), trigger: 'blur' },
@@ -36,13 +36,13 @@
<!-- 属性名称-->
<a-col :span="24">
<a-form-model-item :label="$t('AttributeName')" prop="dbFieldTxt">
<a-input v-model="form.dbFieldTxt" :placeholder="$t('PleaseEnterPropertyName')" :maxLength="120" ></a-input>
<a-input v-model.trim="form.dbFieldTxt" :placeholder="$t('PleaseEnterPropertyName')" :maxLength="120" ></a-input>
</a-form-model-item>
</a-col>
<!-- 英文名称-->
<a-col :span="24">
<a-form-model-item :label="$t('enName')" prop="dbFieldEnName">
<a-input v-model="form.dbFieldEnName" :placeholder="$t('PleaseEnterYourEnglishName')" :maxLength="120" ></a-input>
<a-input v-model.trim="form.dbFieldEnName" :placeholder="$t('PleaseEnterYourEnglishName')" :maxLength="120" ></a-input>
</a-form-model-item>
</a-col>
<!-- 属性类型-->
@@ -1,93 +1,101 @@
<template>
<div class="tag-content">
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="12">
<a-form-item :label="$t('LabelName')">
<a-input :placeholder="$t('PleaseEnter')+$t('LabelName')" v-model="queryParams.dictName"></a-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">{{$t('query')}}</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">{{$t('reset')}}</a-button>
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('LabelName')">
<span>{{$t('LabelName')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('LabelName')"
v-model="queryParams.dictName"></a-input>
</div>
</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>
</a-col>
</span>
</a-col>
</a-row>
</a-form>
</a-row>
</a-form>
</div>
<div class="table-operator">
<div class="operator-text" @click="handleAdd" v-has="'dict:add'">
<a-icon type="plus"/>
{{$t('newlyAdded')}}
</div>
<div class="table-operator">
<div class="operator-text" @click="handleAdd" v-has="'dict:add'">
<a-icon type="plus" />
{{$t('newlyAdded')}}
</div>
<div class="operator-text" @click="batDelete" v-has="'dict:logicDeleteBatch'">
<a-icon type="delete" />
{{$t('BatchDelete')}}
</div>
<div class="operator-text" @click="batDelete" v-has="'dict:logicDeleteBatch'">
<a-icon type="delete"/>
{{$t('BatchDelete')}}
</div>
<a-modal class="show-content" v-model="contentVisible" :visible="contentVisible" :title="title" :ok-text="$t('preservation')" :cancel-text="$t('cancel')" @ok="hideModal" @cancel="cancelModel" v-if="contentVisible">
<a-form-model
class="tag-content"
ref="ruleForm"
:model="form"
:rules="rules"
:label-col="labelCol"
:wrapper-col="wrapperCol"
>
<a-form-model-item ref="tagName" :label="$t('LabeItemName')" prop="dictName" class="tag-item">
<a-input
v-model="form.dictName"
:placeholder="$t('PleaseEnterLabelName')"
/>
</a-form-model-item>
<a-form-model-item :label="$t('LabelType')" prop="attributeType" v-if="isEdit==1" class="tag-item">
<j-dict-select-tag type="list" v-model="form.attributeType" dictCode="attribute_type" :placeholder="$t('PleaseSelectLabelType')" />
</a-form-model-item>
<a-form-model-item ref="describe" :label="$t('describe')" prop="description" class="tag-item">
<a-input
v-model="form.description"
:placeholder="$t('PleaseEnterDescription')"
/>
</a-form-model-item>
</a-form-model>
</a-modal>
<a-table :data-source="tableData" rowKey="id" :columns="columns"
:scroll="{x: true}"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" :pagination="false" :loading="loading" class="tag-con-table">
<template slot="action" slot-scope="text, record">
<a class="action-dict" @click="handleDicPop(record)">{{$t('DictionaryConfiguration')}}</a>
<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>
</a-table>
<div class="page" v-if="tableData.length > 0">
<a-pagination
:show-total="total => $t('total')+` ${total} `+$t('strip')"
show-quick-jumper
show-size-changer
:page-size.sync="queryParams.pageSize"
:total="total"
@change="onChangePage"
@showSizeChange="SizeChange"
/>
</div>
<a-drawer
class="dict-drawer"
:title="$t('DictionaryList')"
placement="right"
:closable="true"
:visible="dicVisible"
:after-visible-change="afterDicVisibleChange"
@close="onDicClose"
width="1000px"
</div>
<a-modal class="show-content" v-model="contentVisible" :visible="contentVisible" :title="title"
:ok-text="$t('preservation')" :cancel-text="$t('cancel')" @ok="hideModal" @cancel="cancelModel"
v-if="contentVisible">
<a-form-model
class="tag-content"
ref="ruleForm"
:model="form"
:rules="rules"
:label-col="labelCol"
:wrapper-col="wrapperCol"
>
<dic-list :dictVal="dictVal" :record="record" v-if="dicVisible"></dic-list>
</a-drawer>
<a-form-model-item ref="tagName" :label="$t('LabeItemName')" prop="dictName" class="tag-item">
<a-input
v-model="form.dictName"
:placeholder="$t('PleaseEnterLabelName')"
/>
</a-form-model-item>
<a-form-model-item :label="$t('LabelType')" prop="attributeType" v-if="isEdit==1" class="tag-item">
<j-dict-select-tag type="list" v-model="form.attributeType" dictCode="attribute_type"
:placeholder="$t('PleaseSelectLabelType')"/>
</a-form-model-item>
<a-form-model-item ref="describe" :label="$t('describe')" prop="description" class="tag-item">
<a-input
v-model="form.description"
:placeholder="$t('PleaseEnterDescription')"
/>
</a-form-model-item>
</a-form-model>
</a-modal>
<a-table :data-source="tableData" rowKey="id" :columns="columns"
:scroll="{x: true}"
:row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" :pagination="false"
:loading="loading" class="tag-con-table">
<template slot="action" slot-scope="text, record">
<a class="action-dict" @click="handleDicPop(record)">{{$t('DictionaryConfiguration')}}</a>
<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>
</a-table>
<div class="page" v-if="tableData.length > 0">
<a-pagination
:show-total="total => $t('total')+` ${total} `+$t('strip')"
show-quick-jumper
show-size-changer
:page-size.sync="queryParams.pageSize"
:total="total"
@change="onChangePage"
@showSizeChange="SizeChange"
/>
</div>
<a-drawer
class="dict-drawer"
:title="$t('DictionaryList')"
placement="right"
:closable="true"
:visible="dicVisible"
:after-visible-change="afterDicVisibleChange"
@close="onDicClose"
width="1000px"
>
<dic-list :dictVal="dictVal" :record="record" v-if="dicVisible"></dic-list>
</a-drawer>
</div>
</template>
@@ -97,137 +105,136 @@
// import tabTable from './tabTable'
import DicList from '../dialog/DicList'
import Vue from 'vue'
import { UI_CACHE_DB_DICT_DATA } from "@/store/mutation-types"
import { UI_CACHE_DB_DICT_DATA } from '@/store/mutation-types'
export default {
name: 'tagContent',
components:{
components: {
// tabTable,
DicList
},
data(){
return{
data() {
return {
title: this.$t('add'),
total:0,
queryParams:{
pageNo:1,
pageSize:10
total: 0,
queryParams: {
pageNo: 1,
pageSize: 10
},
ids:[],
loading:false,
ids: [],
loading: false,
selectedRowKeys: [],
contentVisible:false,
tableData:[],
contentVisible: false,
tableData: [],
columns: [
{
title: this.$t('LabelName'),
dataIndex: 'dictName',
key: 'dictName',
align: "center",
align: 'center',
ellipsis: true,
width: 100,
width: 100
},
{
title: this.$t('LabelType'),
align: "center",
align: 'center',
width: 100,
dataIndex: 'attributeTypeName',
dataIndex: 'attributeTypeName'
},
{
title: this.$t('describe'),
align: "center",
align: 'center',
dataIndex: 'description',
ellipsis: true,
width:300
width: 300
},
{
title: this.$t('operation'),
dataIndex: 'action',
scopedSlots: {customRender: 'action'},
align: "center",
scopedSlots: { customRender: 'action' },
align: 'center',
width: 170
}
],
labelCol: { span:6 },
labelCol: { span: 6 },
wrapperCol: { span: 16 },
form:{},
rules:{
dictName:[{ required: true, message: this.$t('PleaseEnterLabelName'), trigger: 'change' },
{ min:1, max: 30, message: this.$t('cantExeed')+'30'+this.$t('characters'), trigger: 'blur' },],
attributeType:[
{ required: true, message: this.$t('PleaseSelectLabelType'), trigger: 'blur' },
form: {},
rules: {
dictName: [{ required: true, message: this.$t('PleaseEnterLabelName'), trigger: 'change' },
{ min: 1, max: 100, message: this.$t('cantExeed') + '100' + this.$t('characters'), trigger: 'blur' }],
attributeType: [
{ required: true, message: this.$t('PleaseSelectLabelType'), trigger: 'blur' }
],
description:[
{ min:1, max: 200, message: this.$t('cantExeed')+'200'+this.$t('characters'), trigger: 'blur' },
description: [
{ min: 1, max: 200, message: this.$t('cantExeed') + '200' + this.$t('characters'), trigger: 'blur' }
]
},
// typeVisible:{},
dicVisible:false,
dictVal:'list',
dicVisible: false,
dictVal: 'list',
record: {},
isEdit:1,
flag:false, //表单提交标识
isEdit: 1,
flag: false //表单提交标识
}
},
computed:{
},
computed: {},
mounted() {
this.loadData();
this.loadData()
},
methods:{
methods: {
//获取列表数据
loadData(param){
this.loading=true
let params={
loadData(param) {
this.loading = true
let params = {
...this.queryParams,
isTagDict:1,
isTagDict: 1
}
// sys/dict/tagDictPage
// sys/dict/page
postAction(`sys/dict/tagDictPage`,params).then(res=>{
if(res.success){
this.total=res.result.total
this.tableData=[...res.result.records]
postAction(`sys/dict/tagDictPage`, params).then(res => {
if (res.success) {
this.total = res.result.total
this.tableData = [...res.result.records]
}
}).finally(()=>{
this.loading=false
}).finally(() => {
this.loading = false
})
},
//查询
searchQuery(){
this.queryParams.pageNo=1
searchQuery() {
this.queryParams.pageNo = 1
this.loadData()
},
searchReset(){
this.queryParams={
pageNo:1,
searchReset() {
this.queryParams = {
pageNo: 1,
pageSize: 10
}
this.loadData()
},
handleAdd(){
this.title=this.$t('add')
this.isEdit=1
this.contentVisible=true
this.form={}
handleAdd() {
this.title = this.$t('add')
this.isEdit = 1
this.contentVisible = true
this.form = {}
},
hideModal(){
let params={
...this.form,
hideModal() {
let params = {
...this.form
}
this.$refs.ruleForm.validate((valid)=>{
this.$refs.ruleForm.validate((valid) => {
// console.log('valide',valide)
if(valid){
if (valid) {
if(!this.flag){
this.flag=true
if(this.isEdit==1){
if (!this.flag) {
this.flag = true
if (this.isEdit == 1) {
params.id=''
params.isTagDict=1
params.isReadOnly=0
postAction(`sys/dict/add`,params).then(res=> {
params.id = ''
params.isTagDict = 1
params.isReadOnly = 0
postAction(`sys/dict/add`, params).then(res => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.contentVisible = false
@@ -244,26 +251,26 @@
}
}
}).finally(()=>{
this.flag=false
})
}else if(this.isEdit==0){
this.$delete(params,'isReadOnly')
this.$delete(params,'isTagDict')
// console.log('editparams',params)
putAction(`sys/dict/edit`,params).then(res=>{
if(res.success){
this.$message.success( this.$t('OperationSuccessful'))
this.reFresh()
this.loadData()
this.contentVisible=false
this.form={}
}else{
this.$message.warning(this.$t('operationFailed'))
}
}).finally(()=>{
this.flag=false
})
}).finally(() => {
this.flag = false
})
} else if (this.isEdit == 0) {
this.$delete(params, 'isReadOnly')
this.$delete(params, 'isTagDict')
// console.log('editparams',params)
putAction(`sys/dict/edit`, params).then(res => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.reFresh()
this.loadData()
this.contentVisible = false
this.form = {}
} else {
this.$message.warning(this.$t('operationFailed'))
}
}).finally(() => {
this.flag = false
})
}
}
}
@@ -271,7 +278,7 @@
},
//刷新缓存
reFresh(){
reFresh() {
getAction('sys/dict/refleshCache').then((res) => {
if (res.success) {
//重新加载缓存
@@ -286,17 +293,17 @@
console.log('刷新失败', e)
})
},
cancelModel(){
this.contentVisible=false
this.form={}
cancelModel() {
this.contentVisible = false
this.form = {}
},
onCellChange(){
onCellChange() {
},
//删除
onDelete(val){
let param={
id:val.id
onDelete(val) {
let param = {
id: val.id
}
this.$confirm({
title: this.$t('ConfirmDelete'),
@@ -307,12 +314,12 @@
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.reFresh()
if(this.tableData&&this.tableData.length==1&&this.queryParams.pageNo!=1){
this.queryParams.pageNo=this.queryParams.pageNo-1
if (this.tableData && this.tableData.length == 1 && this.queryParams.pageNo != 1) {
this.queryParams.pageNo = this.queryParams.pageNo - 1
}
this.loadData()
}else{
this.$message.warning(this.$t('operationFailed'));
} else {
this.$message.warning(this.$t('operationFailed'))
}
})
}
@@ -320,16 +327,16 @@
},
onSelectChange(selectedRowKeys) {
// console.log('selectedRowKeys changed: ', selectedRowKeys);
this.selectedRowKeys = selectedRowKeys;
this.ids = this.selectedRowKeys;
console.log('selRows',selectedRowKeys)
this.selectedRowKeys = selectedRowKeys
this.ids = this.selectedRowKeys
console.log('selRows', selectedRowKeys)
},
//批量删除
batDelete(){
let params={
ids:this.ids.join(',')
batDelete() {
let params = {
ids: this.ids.join(',')
}
if(this.ids&&this.ids.length>0){
if (this.ids && this.ids.length > 0) {
this.$confirm({
title: this.$t('ConfirmDelete'),
content: '',
@@ -339,46 +346,45 @@
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.reFresh()
this.selectedRowKeys=[]
if(this.ids.length==this.tableData.length&&this.queryParams.pageNo!=1){
this.queryParams.pageNo=this.queryParams.pageNo-1
this.selectedRowKeys = []
if (this.ids.length == this.tableData.length && this.queryParams.pageNo != 1) {
this.queryParams.pageNo = this.queryParams.pageNo - 1
}
this.loadData()
// postAction(`online/cgform/api/doDbSynch/48308196e7b04761b533dc31bc899707/normal
// `,{}).then(res=>{
// })
}else{
// postAction(`online/cgform/api/doDbSynch/48308196e7b04761b533dc31bc899707/normal
// `,{}).then(res=>{
// })
} else {
this.$message.warning(this.$t('operationFailed'))
}
})
}
})
}
else{
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
},
//编辑
actionEdit(val){
this.title=this.$t('edit')
this.isEdit=0
this.form={...val}
this.contentVisible=true
actionEdit(val) {
this.title = this.$t('edit')
this.isEdit = 0
this.form = { ...val }
this.contentVisible = true
},
//字典配置
handleDicPop(record){
this.record=record
if(record.attributeType=='1'){
handleDicPop(record) {
this.record = record
if (record.attributeType == '1') {
// console.log('attribu',record.attributeType,record.attributeType=='1')
// this.typeVisible[record.id]=false
this.dictVal='list'
this.dicVisible=true
this.dictVal = 'list'
this.dicVisible = true
}else if(record.attributeType=='2'){
} else if (record.attributeType == '2') {
// this.typeVisible[record.id]=false
this.dictVal='tree'
this.dicVisible=true
this.dictVal = 'tree'
this.dicVisible = true
}
},
afterDicVisibleChange(val) {
@@ -387,69 +393,107 @@
},
//字典列表关闭
onDicClose() {
this.dicVisible = false;
this.dicVisible = false
},
//点击页数
onChangePage(page,pageSize){
console.log('page',page)
onChangePage(page, pageSize) {
console.log('page', page)
this.queryParams.pageNo = page
this.loadData()
},
//一页显示条数
SizeChange(page,pageSize){
SizeChange(page, pageSize) {
this.queryParams.pageSize = pageSize
this.queryParams.pageNo=1
this.queryParams.pageNo = 1
this.loadData()
},
}
}
}
</script>
<style lang="less" scoped>
@import '~@assets/less/common.less';
.tag-content{
.tag-con-table{
.action-dict,.action-edit{
.tag-content {
.tag-con-table {
.action-dict, .action-edit {
margin-right: 10px;
}
.action-delete{
color:red;
.action-delete {
color: red;
}
}
.page{
.page {
margin-top: 20px;
text-align: right;
}
}
.type-popover{
p{
margin:5px 0;
.type-popover {
p {
margin: 5px 0;
}
p:hover{
p:hover {
cursor: pointer;
color:#0c8fcf;
color: #0c8fcf;
}
}
.dict-drawer{
.ant-drawer-content-wrapper{
.dict-drawer {
.ant-drawer-content-wrapper {
width: 100%;
}
}
</style>
<style lang="less">
.show-content{
.ant-modal-footer{
text-align: center;
.box-title-text {
line-height: 1.4;
display: flex;
align-items: center;
margin-bottom: 10px;
}
}
.tag-content{
.tag-item{
.ant-col-6{
min-width: 130px;
.title-text {
width: 60px;
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-button {
height: 38px;
/*margin-top: 2px;*/
}
</style>
<style lang="less">
.show-content {
.ant-modal-footer {
text-align: center;
}
}
.tag-content {
.tag-item {
.ant-col-6 {
min-width: 130px;
}
}
}
}
</style>
@@ -1,256 +1,279 @@
<template>
<div class="tag-item">
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="12" v-show='submitKey=="1"'>
<a-form-item :label="$t('ChineseName')">
<a-input :placeholder="$t('PleaseEnter')+$t('ChineseName')" v-model="queryParamOne.dbFieldTxt"></a-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="12" v-show='submitKey=="2"'>
<a-form-item :label="$t('ChineseName')">
<a-input :placeholder="$t('PleaseEnter')+$t('ChineseName')" v-model="queryParamTwo.dbFieldTxt"></a-input>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8" v-show='submitKey=="1"'>
<a-form-item :label="$t('DisplayArea')">
<a-select v-model="queryParamOne.showArea" :placeholder="$t('pleaseSelect')">
<a-select-option :value="item.id" v-for="item in areas">{{item.showArea}}</a-select-option>
</a-select>
</a-form-item>
</a-col>
<a-col :md="6" :sm="8">
<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
<a-button type="primary" @click="searchQuery" icon="search">{{$t('query')}}</a-button>
<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">{{$t('reset')}}</a-button>
</span>
</a-col>
</a-row>
</a-form>
</div>
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8" v-show='submitKey=="1"'>
<div class="box-title-text">
<div class="title-text" :title="$t('ChineseName')">
<span>{{$t('ChineseName')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('ChineseName')"
v-model="queryParamOne.dbFieldTxt"></a-input>
</div>
</a-col>
<a-col :md="6" :sm="8" v-show='submitKey=="2"'>
<div class="box-title-text">
<div class="title-text" :title="$t('ChineseName')">
<span>{{$t('ChineseName')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('ChineseName')"
v-model="queryParamOne.dbFieldTxt"></a-input>
</div>
</a-col>
<a-col :md="6" :sm="8" v-show='submitKey=="1"'>
<div class="box-title-text">
<div class="title-text" :title="$t('DisplayArea')">
<span>{{$t('DisplayArea')}}</span>
</div>
<a-select class="box-input" v-model="queryParamOne.showArea" :placeholder="$t('pleaseSelect')">
<a-select-option :value="item.id" v-for="item in areas">{{item.showArea}}</a-select-option>
</a-select>
</div>
</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>
</a-col>
</span>
</a-row>
</a-form>
</div>
<div class="table-operator">
<div class="operator-text" @click="handleAddPop" v-has="'tag:add'">
<a-icon type="plus" />
{{$t('newlyAdded')}}
<a-icon type="plus"/>
{{$t('newlyAdded')}}
</div>
<div class="operator-text" @click="handleShow" v-if="key=='1'">
<a-icon type="rocket" :rotate="45" />
<a-icon type="rocket" :rotate="45"/>
{{$t('ExhibitionAreaManagement')}}
</div>
<div class="operator-text" @click="batDelete" v-has="'tag:logicDeleteBatch'">
<a-icon type="delete" />
<a-icon type="delete"/>
{{$t('BatchDelete')}}
</div>
</div>
<a-drawer class="show-drawer" :title="titleTag" placement="right" width="1000px" @close="close" :visible="drawerVisible" :after-visible-change="afterVisibleChange" >
<a-drawer class="show-drawer" :title="titleTag" placement="right" width="1000px" @close="close"
:visible="drawerVisible" :after-visible-change="afterVisibleChange">
<div class="new-tag-drawer">
<a-spin :spinning="spinningDrawer" style="width: 100%;height:100%">
<tag-form v-if="drawerVisible&&editFlag" ref="realForm" @ok="closeTag" :isTagContent="isTagContent" :editData="editData" :editId=editId :submitEdit="submitEdit" :disableEdit="disableEdit" :disabled="disableSubmit" :submitKey="submitKey" normal> </tag-form>
<div class="new-tag-drawer">
<a-spin :spinning="spinningDrawer" style="width: 100%;height:100%">
<tag-form v-if="drawerVisible&&editFlag" ref="realForm" @ok="closeTag" :isTagContent="isTagContent"
:editData="editData" :editId=editId :submitEdit="submitEdit" :disableEdit="disableEdit"
:disabled="disableSubmit" :submitKey="submitKey" normal></tag-form>
<div class="drawer-footer" v-if="drawerVisible&&editFlag">
<a-button v-if="!disableSubmit" @click="handleOk" type="primary" style="margin-bottom: 0;">{{$t('preservation')}}</a-button>
<a-button @click="handleCancel" style="margin-bottom: 0;">{{$t('close')}}</a-button>
</div>
<div class="drawer-footer" v-if="drawerVisible&&editFlag">
<a-button v-if="!disableSubmit" @click="handleOk" type="primary" style="margin-bottom: 0;">
{{$t('preservation')}}
</a-button>
<a-button @click="handleCancel" style="margin-bottom: 0;">{{$t('close')}}</a-button>
</div>
</a-spin>
</div>
</a-drawer>
<a-modal class="show-area" v-model="areaVisible" :title="$t('ExhibitionAreaManagement')" :footer="null"
@cancel="hideModal">
<area-manage v-if="areaVisible" @diaHide="diaHide" @submitOk="submitOk" @deleteOk="deleteOk"
@updateOk="updateOk"></area-manage>
</a-modal>
<div class="tag-doc-tab">
<a-spin :spinning="spinning">
<a-tabs default-active-key="1" @change="callbackTab">
<a-tab-pane key="1" :tab="$t('DocumentLibrary')">
<tab-table v-if="spinning==false" :tableData="tableData" :columns="taglabColumns" :parm="queryParamOne"
:selectedRowKey="selectedRowKey" @visibleEd="visibleEd" @visibleDelete="visibleDelete"
@queryParams="queryParamsOne" @selecteds="selecteds" :total="total"></tab-table>
</a-tab-pane>
<a-tab-pane key="2" :tab="$t('DocumentSplitting')">
<tab-table v-if="spinning==false" :tableData="tableData" :columns="taglabColumns1" :parm="queryParamTwo"
:selectedRowKey="selectedRowKey" @visibleEd="visibleEd" @visibleDelete="visibleDelete"
@queryParams="queryParamsTwo" @selecteds="selecteds" :total="total"></tab-table>
<!-- <tab-table :tableData="tableData" :columns="taglabColumns" @visibleEd="visibleEd" @visibleDelete="visibleDelete" :total="total" :parm="queryParam"></tab-table>-->
</a-tab-pane>
</a-tabs>
</a-spin>
</div>
</a-drawer>
<a-modal class="show-area" v-model="areaVisible" :title="$t('ExhibitionAreaManagement')" :footer="null" @cancel="hideModal">
<area-manage v-if="areaVisible" @diaHide="diaHide" @submitOk="submitOk" @deleteOk="deleteOk" @updateOk="updateOk"></area-manage>
</a-modal>
<div class="tag-doc-tab">
<a-spin :spinning="spinning">
<a-tabs default-active-key="1" @change="callbackTab">
<a-tab-pane key="1" :tab="$t('DocumentLibrary')">
<tab-table v-if="spinning==false" :tableData="tableData" :columns="taglabColumns" :parm="queryParamOne" :selectedRowKey="selectedRowKey" @visibleEd="visibleEd" @visibleDelete="visibleDelete" @queryParams="queryParamsOne" @selecteds="selecteds" :total="total"></tab-table>
</a-tab-pane>
<a-tab-pane key="2" :tab="$t('DocumentSplitting')">
<tab-table v-if="spinning==false" :tableData="tableData" :columns="taglabColumns1" :parm="queryParamTwo" :selectedRowKey="selectedRowKey" @visibleEd="visibleEd" @visibleDelete="visibleDelete" @queryParams="queryParamsTwo" @selecteds="selecteds" :total="total"></tab-table>
<!-- <tab-table :tableData="tableData" :columns="taglabColumns" @visibleEd="visibleEd" @visibleDelete="visibleDelete" :total="total" :parm="queryParam"></tab-table>-->
</a-tab-pane>
</a-tabs>
</a-spin>
</div>
</div>
</template>
<script>
import { putAction,postAction,getAction,deleteAction } from '@/api/manage'
import { putAction, postAction, getAction, deleteAction } from '@/api/manage'
import JInput from '@/components/jero/JInput'
import TabTable from './TabTable'
import AreaManage from '../dialog/AreaManage'
import TagForm from '../dialog/TagForm'
export default {
name: 'tagItem',
components:{
components: {
JInput,
TabTable,
AreaManage,
TagForm
},
data(){
return{
spinning:false,
queryParamOne:{
pageNo:1,
pageSize:10,
data() {
return {
spinning: false,
queryParamOne: {
pageNo: 1,
pageSize: 10
},
queryParamTwo:{
pageNo:1,
pageSize:10,
queryParamTwo: {
pageNo: 1,
pageSize: 10
},
titleTag:this.$t('NewLabelItem'),
typeVisible:false,
isTagContent:false,
editData:{}, //编辑的数据
editFlag:true,
areas:[],
tableData:[],
titleTag: this.$t('NewLabelItem'),
typeVisible: false,
isTagContent: false,
editData: {}, //编辑的数据
editFlag: true,
areas: [],
tableData: [],
taglabColumns: [
{
title: this.$t('ChineseName'),
align: "center",
align: 'center',
width: 100,
dataIndex: 'dbFieldTxt',
dataIndex: 'dbFieldTxt'
},
{
title: this.$t('enName'),
align: "center",
align: 'center',
width: 100,
dataIndex: 'dbFieldEnName',
dataIndex: 'dbFieldEnName'
},
{
title: this.$t('AttributeType'),
align: "center",
align: 'center',
width: 100,
dataIndex: 'fieldShowTypeName',
dataIndex: 'fieldShowTypeName'
},
{
title: this.$t('FieldLength'),
align: "center",
align: 'center',
width: 80,
dataIndex: 'dbLength'
},
{
title: this.$t('DisplayOrder'),
align: "center",
align: 'center',
width: 80,
dataIndex: 'orderNum'
},
{
title: this.$t('DisplayArea'),
align: "center",
align: 'center',
width: 80,
dataIndex: 'showAreaName'
},
{
title: this.$t('operation'),
dataIndex: 'action',
scopedSlots: {customRender: 'action'},
align: "center",
scopedSlots: { customRender: 'action' },
align: 'center',
width: 170
}
],
taglabColumns1: [
{
title: this.$t('ChineseName'),
align: "center",
align: 'center',
width: 100,
dataIndex: 'dbFieldTxt',
dataIndex: 'dbFieldTxt'
},
{
title: this.$t('enName'),
align: "center",
align: 'center',
width: 100,
dataIndex: 'dbFieldEnName',
dataIndex: 'dbFieldEnName'
},
{
title: this.$t('AttributeType'),
align: "center",
align: 'center',
width: 100,
dataIndex: 'fieldShowTypeName',
dataIndex: 'fieldShowTypeName'
},
{
title: this.$t('FieldLength'),
align: "center",
align: 'center',
width: 80,
dataIndex: 'dbLength'
},
{
title: this.$t('DisplayOrder'),
align: "center",
align: 'center',
width: 80,
dataIndex: 'orderNum'
},
{
title: this.$t('operation'),
dataIndex: 'action',
scopedSlots: {customRender: 'action'},
align: "center",
scopedSlots: { customRender: 'action' },
align: 'center',
width: 170
}
],
areaVisible:false,
areaTable:[],
areaTotal:0,
drawerVisible:false,
value:1,
editId:'',
submitEdit:'add',
key:1,
total:0,
type:'input',
ids:[],
disableSubmit:false,
selectedRowKey:[],
spinningDrawer:false,
disableEdit:true,
submitKey:'1'
areaVisible: false,
areaTable: [],
areaTotal: 0,
drawerVisible: false,
value: 1,
editId: '',
submitEdit: 'add',
key: 1,
total: 0,
type: 'input',
ids: [],
disableSubmit: false,
selectedRowKey: [],
spinningDrawer: false,
disableEdit: true,
submitKey: '1'
}
},
mounted() {
this.loadData(1)
this.loadShowArea()
},
methods:{
methods: {
//获取展示区域
loadShowArea(){
let params = {};
getAction(`tag/onlCgformArea/queryShowArea`,params).then((res)=>{
if(res.success){
this.areas=res.result
loadShowArea() {
let params = {}
getAction(`tag/onlCgformArea/queryShowArea`, params).then((res) => {
if (res.success) {
this.areas = res.result
}
});
})
},
searchQuery(){
this.queryParamOne.pageNo=1
this.queryParamTwo.pageNo=1
if(this.key==1){
searchQuery() {
this.queryParamOne.pageNo = 1
this.queryParamTwo.pageNo = 1
if (this.key == 1) {
this.loadData(1)
}else if(this.key==2){
} else if (this.key == 2) {
this.loadData(0)
}
},
searchReset(){
this.queryParamOne={
pageNo:0,
searchReset() {
this.queryParamOne = {
pageNo: 0,
pageSize: 10
}
this.queryParamTwo={
pageNo:0,
this.queryParamTwo = {
pageNo: 0,
pageSize: 10
}
this.searchQuery()
},
handleAdd(){
this.drawerVisible=true
handleAdd() {
this.drawerVisible = true
},
//区域管理列表数据
handleShow(){
this.areaVisible=true
handleShow() {
this.areaVisible = true
// getAction(`tag/onlCgformArea/page`,{}).then(res=>{
// if(res.success){
// this.areaTable=res.result
@@ -259,99 +282,99 @@
// })
},
//标签项管理文档库初始数据
loadData(val){
this.spinning=true
this.tableData=[]
let paramsOne={
loadData(val) {
this.spinning = true
this.tableData = []
let paramsOne = {
...this.queryParamOne,
isModel:1
isModel: 1
}
let paramsTwo={
let paramsTwo = {
...this.queryParamTwo,
isModel:1
isModel: 1
}
let paramsItem
// console.log('params',params)
if(val==1){
if (val == 1) {
// console.log('1')
paramsOne.isModel=1
paramsOne.isModel = 1
paramsItem = paramsOne
}else if(val==0){
paramsTwo.isModel=0
} else if (val == 0) {
paramsTwo.isModel = 0
paramsItem = paramsTwo
}
postAction(`tag/onlCgformTag/page`,paramsItem).then(res=>{
if(res.success){
this.total=res.result.total
this.tableData= [ ...res.result.records]
this.spinning=false
}else{
postAction(`tag/onlCgformTag/page`, paramsItem).then(res => {
if (res.success) {
this.total = res.result.total
this.tableData = [...res.result.records]
this.spinning = false
} else {
this.$message.warning(res.message)
this.spinning=false
this.spinning = false
}
})
},
//标签项管理tab切换
callbackTab(value){
this.key=value
if(value==1){
this.queryParamOne.dbFieldTxt=''
this.submitKey='1'
this.queryParamOne.pageNo=1
callbackTab(value) {
this.key = value
if (value == 1) {
this.queryParamOne.dbFieldTxt = ''
this.submitKey = '1'
this.queryParamOne.pageNo = 1
this.loadData(1)
// this.tableData=this.taglab
// this.tableData=this.taglabSplit
}else if(value==2){
this.queryParamTwo.dbFieldTxt=''
this.submitKey='2'
this.queryParamTwo.pageNo=1
} else if (value == 2) {
this.queryParamTwo.dbFieldTxt = ''
this.submitKey = '2'
this.queryParamTwo.pageNo = 1
this.loadData(0)
}
},
diaHide(vis){
this.areaVisible=vis
diaHide(vis) {
this.areaVisible = vis
},
hideModal(){
this.visible = false;
hideModal() {
this.visible = false
},
close(){
this.drawerVisible=false
close() {
this.drawerVisible = false
},
submitOk(value){
submitOk(value) {
this.handleShow()
},
deleteOk(value){
deleteOk(value) {
this.handleShow()
},
//编辑按钮
updateOk(value){
updateOk(value) {
this.handleShow()
},
//编辑
visibleEd(val,id,title){
this.editFlag=false
this.disableEdit=true
this.drawerVisible=val
this.titleTag=title
this.editId=id
this.submitEdit='edit'
let params={
id:id,
visibleEd(val, id, title) {
this.editFlag = false
this.disableEdit = true
this.drawerVisible = val
this.titleTag = title
this.editId = id
this.submitEdit = 'edit'
let params = {
id: id
}
this.spinningDrawer=true
getAction(`tag/onlCgformTag/queryById`,params).then(res=>{
if(res.success){
this.editData=res.result
this.editFlag=true
this.spinningDrawer = true
getAction(`tag/onlCgformTag/queryById`, params).then(res => {
if (res.success) {
this.editData = res.result
this.editFlag = true
}
}).finally(()=>{
this.spinningDrawer=false
}).finally(() => {
this.spinningDrawer = false
})
},
//删除
visibleDelete(id){
let params={
id:id
visibleDelete(id) {
let params = {
id: id
}
this.$confirm({
title: this.$t('ConfirmDelete'),
@@ -384,88 +407,87 @@
}
})
},
selecteds(val){
this.ids=val
selecteds(val) {
this.ids = val
},
//批量删除
batDelete(val){
let params={
ids:this.ids.join(',')
batDelete(val) {
let params = {
ids: this.ids.join(',')
}
if(this.ids){
this.$confirm({
title: this.$t('ConfirmDelete'),
content: '',
onOk:
async () => {
if (this.ids) {
this.$confirm({
title: this.$t('ConfirmDelete'),
content: '',
onOk:
async () => {
getAction(`tag/onlCgformTag/logicDeleteBatch`, params).then(res => {
if (res.success) {
if (this.key == 1) {
this.$message.success(this.$t('OperationSuccessful'))
if(this.ids&&this.ids.length==this.tableData.length){
this.queryParamOne.pageNo=this.queryParamOne.pageNo-1
if (this.ids && this.ids.length == this.tableData.length) {
this.queryParamOne.pageNo = this.queryParamOne.pageNo - 1
}
this.selectedRowKey=[]
this.selectedRowKey = []
this.loadData(1)
} else if (this.key == 2) {
this.$message.success(this.$t('OperationSuccessful'))
if(this.ids&&this.ids.length==this.tableData.length){
this.queryParamTwo.pageNo=this.queryParamTwo.pageNo-1
if (this.ids && this.ids.length == this.tableData.length) {
this.queryParamTwo.pageNo = this.queryParamTwo.pageNo - 1
}
this.loadData(0)
}
// postAction(`online/cgform/api/doDbSynch/48308196e7b04761b533dc31bc899707/normal
// `,{}).then(res=>{
// })
}else{
// postAction(`online/cgform/api/doDbSynch/48308196e7b04761b533dc31bc899707/normal
// `,{}).then(res=>{
// })
} else {
this.$message.warning(this.$t('operationFailed'))
}
})
}
})
})
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
else{
this.$message.warning(this.$t('selectLeastOne'))
}
},
//新增关闭
closeTag(val){
this.drawerVisible=val
if(this.key==1){
closeTag(val) {
this.drawerVisible = val
if (this.key == 1) {
this.loadData(1)
}else if(this.key==2){
} else if (this.key == 2) {
this.loadData(0)
}
},
afterVisibleChange(val){
afterVisibleChange(val) {
// console.log('val',val)
},
handleAddPop(val){
this.editData={}
if(this.submitKey=='1'){
this.editData.isModel='1'
}else if(this.submitKey=='2'){
this.editData.isModel='0'
handleAddPop(val) {
this.editData = {}
if (this.submitKey == '1') {
this.editData.isModel = '1'
} else if (this.submitKey == '2') {
this.editData.isModel = '0'
}
this.disableEdit=false
this.drawerVisible=true
this.titleTag=this.$t('NewLabelItem')
this.submitEdit='add'
this.disableEdit = false
this.drawerVisible = true
this.titleTag = this.$t('NewLabelItem')
this.submitEdit = 'add'
// this.type=val
if(val=='input'){
this.typeVisible=false
this.isTagContent=false
} else if(val='select'){
this.typeVisible=false
this.isTagContent=true
if (val == 'input') {
this.typeVisible = false
this.isTagContent = false
} else if (val = 'select') {
this.typeVisible = false
this.isTagContent = true
}
},
queryParamsOne(val) {
this.queryParamOne.pageNo=val.pageNo
this.queryParamOne.pageSize=val.pageSize
if(this.key==1){
this.queryParamOne.pageNo = val.pageNo
this.queryParamOne.pageSize = val.pageSize
if (this.key == 1) {
this.loadData(1)
}
// else if(this.key==2){
@@ -473,12 +495,12 @@
// }
},
queryParamsTwo(val) {
this.queryParamTwo.pageNo=val.pageNo
this.queryParamTwo.pageSize=val.pageSize
this.queryParamTwo.pageNo = val.pageNo
this.queryParamTwo.pageSize = val.pageSize
// if(this.key==1){
// this.loadData(1)
// } else
if(this.key==2){
if (this.key == 2) {
this.loadData(0)
}
},
@@ -493,11 +515,11 @@
// }
//
// },
handleOk () {
this.$refs.realForm.submitForm();
handleOk() {
this.$refs.realForm.submitForm()
},
handleCancel () {
this.drawerVisible=false
handleCancel() {
this.drawerVisible = false
this.close()
}
}
@@ -506,47 +528,90 @@
<style lang="less" scoped>
@import '~@assets/less/common.less';
.type-popover{
p{
margin:5px;
.type-popover {
p {
margin: 5px;
}
p:hover {
color: #0c8fcf;
cursor: pointer;
}
}
p:hover{
color: #0c8fcf;
cursor: pointer;
}
}
.new-tag-drawer{
.drawer-footer{
.new-tag-drawer {
.drawer-footer {
height: 32px;
display: flex;
justify-content: center;
.ant-btn {
margin-left: 30px;
margin-bottom: 30px;
float: right;
}
}
}
.box-title-text {
line-height: 1.4;
display: flex;
align-items: center;
margin-bottom: 10px;
}
.title-text {
width: 60px;
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-button {
height: 38px;
/*margin-top: 2px;*/
}
</style>
<style lang="less">
.show-area{
.ant-modal-wrap{
.ant-modal{
width: 1000px!important;
.show-area {
.ant-modal-wrap {
.ant-modal {
width: 1000px !important;
}
}
.diolag-area{
.table-operator{
.diolag-area {
.table-operator {
text-align: right;
}
.page{
.page {
text-align: right;
}
}
}
.box-input .ant-select-selection__rendered {
line-height: 38px;
height: 38px;
}
.box-input .ant-select-selection--single {
height: 38px;
}
</style>
@@ -10,14 +10,15 @@
style="height: 100%;overflow: auto;padding-bottom: 53px;">
<div style="margin-bottom: 60px">
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="12" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('standard')">
<span>{{$t('standard')}}</span>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('standard')"
v-model="queryParam.serialNumber"></j-input>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('standard')"
v-model="queryParam.serial_number"></a-input>
</div>
</a-col>
<a-col :md="12" :sm="8">
@@ -25,8 +26,8 @@
<div class="title-text" :title="$t('title')">
<span>{{$t('title')}}</span>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('title')"
v-model="queryParam.title"></j-input>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('title')"
v-model="queryParam.title"></a-input>
</div>
</a-col>
<a-col :md="12" :sm="8">
@@ -50,6 +51,7 @@
</a-col>
</span>
</a-row>
</a-form>
</div>
<div style="width: 100%">
<a-table
@@ -108,7 +110,7 @@
columns: [
{
title: this.$t('standard'),
dataIndex: 'serialNumber',
dataIndex: 'serial_number',
align: 'center',
ellipsis: true
},
@@ -120,36 +122,31 @@
},
{
title: this.$t('status'),
dataIndex: 'state_dictText',
dataIndex: 'state',
align: 'center',
ellipsis: true
},
{
title: this.$t('technicalField'),
dataIndex: 'technologyTerritory',
dataIndex: 'technology_territory',
align: 'center',
ellipsis: true
},
// {
// title: this.$t('functionalAreas'),
// dataIndex: 'functionalAreas',
// align: 'center'
// },
{
title: this.$t('ImplementationDate'),
dataIndex: 'xin1Che1Xing2Shi2Shi1Ri4Qi1',
dataIndex: 'xin1_che1_xing2_shi2_shi1_ri4_qi1',
align: 'center',
ellipsis: true
},
{
title: this.$t('vehicleInProductionDate'),
dataIndex: 'implementTime',
dataIndex: 'implement_time',
align: 'center',
ellipsis: true
},
{
title: this.$t('correspondingStandard'),
dataIndex: 'correspondingStandard',
dataIndex: 'corresponding_standard',
align: 'center',
ellipsis: true
}
@@ -159,7 +156,10 @@
loading: false,
pageNo: 1,
pageSize: 10,
total: 0
total: 0,
fieldList: [],
queryParamQuery: {},
queryConditionVOList: [],
}
},
mounted() {
@@ -170,7 +170,9 @@
this.visible = true
this.queryParam = {}
this.selectedRowKeys = []
this.queryConditionVOList = []
this.replacePage()
this.queryConditionInventory()
},
searchQuery() {
this.pageNo = 1
@@ -179,6 +181,9 @@
searchReset() {
this.pageNo = 1
this.queryParam = {}
this.queryConditionVOList = []
this.$refs.globalAdvancedQueryRef.resetLine()
this.$refs.globalAdvancedQueryRef.emitCallback()
this.replacePage()
},
onChange(page, pageSize) {
@@ -191,10 +196,12 @@
this.replacePage()
},
replacePage() {
let queryConditionVOList = JSON.parse(JSON.stringify(this.queryConditionVOList))
let query = {
pageNo: this.pageNo,
pageSize: this.pageSize,
...this.queryParam
...this.queryParam,
queryConditionVOList: JSON.stringify(queryConditionVOList),
}
this.loading = true
postAction(this.url.addModelList, query).then((res) => {
@@ -203,10 +210,24 @@
this.total = res.result.total
this.loading = false
} else {
this.dataList = []
this.total = 0
this.loading = false
}
})
},
queryConditionInventory() {
let query = {
flag: 1
}
getAction(this.url.queryConditionInventory, query).then((res) => {
if (res.success) {
this.fieldList = res.result || []
} else {
this.fieldList = []
}
})
},
onSelectChange(value) {
this.selectedRowKeys = value
},
@@ -240,16 +261,17 @@
handleSuperQuery(params, matchType) {
let sqp = {}
if (!params || (params && params.length == 0)) {
sqp['superQueryParams'] = ''
this.queryConditionVOList = []
this.$refs.globalAdvancedQueryRef.superQueryFlag = false
} else {
this.$refs.globalAdvancedQueryRef.superQueryFlag = true
sqp['superQueryParams'] = encodeURI(JSON.stringify(params))
sqp['superQueryMatchType'] = matchType
this.queryConditionVOList = params
this.queryConditionVOList.forEach(res=>{
res.type = matchType
})
}
this.queryParamQuery = sqp
this.getList()
},
this.replacePage()
}
}
}
</script>
@@ -264,7 +286,7 @@
position: absolute;
bottom: 0;
width: 100%;
z-index:100;
z-index: 100;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
@@ -42,6 +42,7 @@
{{$t('listSubclauses')}}
</div>
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<div class="box-title-text">
@@ -80,6 +81,7 @@
</a-col>
</span>
</a-row>
</a-form>
</div>
<div class="table-operator">
<!-- 导入-->
@@ -260,7 +262,8 @@
}
],
url: {
addModelList: '/project/projectLawsInventoryEO/queryPageInfoBussDocument',
addModelList: '/dummy/dummyInventoryInfoEO/queryPageDummy',
queryConditionInventory:'/dummy/dummyInventoryInfoEO/queryConditionInventory',
list: '/dummy/dummyInventoryInfoEO/list',
addModel: '/dummy/dummyInventoryInfoEO/add',
editModel: '/dummy/dummyInventoryInfoEO/edit',
@@ -1,6 +1,7 @@
<template>
<a-card :bordered="false">
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<div class="box-title-text">
@@ -29,6 +30,7 @@
</a-col>
</span>
</a-row>
</a-form>
</div>
<div class="table-operator">
<div @click="handleAdd" class="operator-text" v-has="'document:getInfoById'">
@@ -1,64 +1,66 @@
<template>
<a-card :bordered="false">
<div class="table-page-search-wrapper">
<!-- 认证参数收集-参数项收集清单-10控件-->
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('NiONumber')">
<span>{{$t('NiONumber')}}</span>
<!-- 认证参数收集-参数项收集清单-10控件-->
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('NiONumber')">
<span>{{$t('NiONumber')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('NiONumber')"
v-model="formInline.nioNumber"></a-input>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('NiONumber')"
v-model="formInline.nioNumber"></a-input>
</div>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('ParameterName')">
<span>{{$t('ParameterName')}}</span>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('ParameterName')">
<span>{{$t('ParameterName')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('ParameterName')"
v-model="formInline.paramsName"></a-input>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('ParameterName')"
v-model="formInline.paramsName"></a-input>
</div>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('certificationCategory')">
<span>{{$t('certificationCategory')}}</span>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('certificationCategory')">
<span>{{$t('certificationCategory')}}</span>
</div>
<j-dict-select-tag class="box-input" v-model="formInline.certCategory"
:placeholder="$t('PleaseSelect')+$t('certificationCategory')"
:type="'select'"
:triggerChange="false" :dictCode="'cert_category'"/>
</div>
<j-dict-select-tag class="box-input" v-model="formInline.certCategory"
:placeholder="$t('PleaseSelect')+$t('certificationCategory')"
:type="'select'"
:triggerChange="false" :dictCode="'cert_category'"/>
</div>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('areaOfResponsibility')">
<span>{{$t('areaOfResponsibility')}}</span>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('areaOfResponsibility')">
<span>{{$t('areaOfResponsibility')}}</span>
</div>
<j-dict-select-tag class="box-input" v-model="formInline.dutyTerritory"
:placeholder="$t('PleaseSelect')+$t('areaOfResponsibility')"
:type="'select'"
:triggerChange="false" :dictCode="'duty_territory'"/>
</div>
<j-dict-select-tag class="box-input" v-model="formInline.dutyTerritory"
:placeholder="$t('PleaseSelect')+$t('areaOfResponsibility')"
:type="'select'"
:triggerChange="false" :dictCode="'duty_territory'"/>
</div>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('completedBy')">
<span>{{$t('completedBy')}}</span>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('completedBy')">
<span>{{$t('completedBy')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('completedBy')"
v-model="formInline.dre"></a-input>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('completedBy')"
v-model="formInline.dre"></a-input>
</div>
</a-col>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
</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>
</a-col>
</span>
</a-row>
</a-row>
</a-form>
</div>
<div class="table-operator">
<a-popconfirm overlayClassName='popconfirm' placement="bottomRight">
@@ -98,37 +100,38 @@
<a-icon type="plus"/>
{{$t('addTo')}}
</div>
<!-- 分配填写人-->
<!-- 分配填写人-->
<div @click="assignedBy" class="operator-text">
<a-icon type="copy"/>
{{$t('Assignedby')}}
</div>
<!-- 提交-->
<!-- 提交-->
<div @click="handleSubmit" class="operator-text">
<a-icon type="plus"/>
{{$t('submit')}}
</div>
<!-- 退回-->
<!-- 退回-->
<div @click="returnDataJurisdiction" class="operator-text">
<a-icon type="plus"/>
{{$t('sendBack')}}
</div>
<!-- 引用参数-->
<!-- 引用参数-->
<div @click="referenceparameter" class="operator-text">
<a-icon type="plus"/>
{{$t('referenceparameter')}}
</div>
<!-- 批量删除-->
<!-- 批量删除-->
<div @click="handleDelJurisdiction" class="operator-text" v-has="'document:deleteBatch'">
<a-icon type="delete"/>
{{$t('BatchDelete')}}
</div>
</div>
<div style="width: 100%">
<!-- 表格-10控件-->
<table-collection ref="CollectionTabel" :url='url' :paramsManifest='paramsManifest' @rowValue='rowValue' :formInline='formInline' @LoginUserType='LoginUserType' @value='value'/>
<!-- 表格-10控件-->
<table-collection ref="CollectionTabel" :url='url' :paramsManifest='paramsManifest' @rowValue='rowValue'
:formInline='formInline' @LoginUserType='LoginUserType' @value='value'/>
</div>
<!-- 添加--->
<!-- 添加--->
<a-modal v-model="areaVisible" :title="$t('ParameterLibrary')" width='750px' :footer="null">
<parameter-library-add v-if='areaVisible' :paramsManifest='paramsManifest'/>
</a-modal>
@@ -159,22 +162,27 @@
<div class="imports-footer">
<div class="imports-footer-wrap">
<a-button class="imports-btn imports-sub" type="primary" @click="handleSubmitFreeze" v-has="'split:sarFileSplitItems:importSplitResult'">{{$t('preservation')}}</a-button>
<a-button class="imports-btn imports-sub" type="primary" @click="handleSubmitFreeze"
v-has="'split:sarFileSplitItems:importSplitResult'">{{$t('preservation')}}
</a-button>
<a-button class="imports-btn" type="primary" @click="cancleImportsFreeze">{{$t('cancel')}}</a-button>
</div>
</div>
</a-modal>
<!-- 分配填写人--->
<a-modal v-model="areaVisibleAssignedby" :title="$t('Assignedby')" width='950px' :footer="null">
<assigned-by v-if='areaVisibleAssignedby' :selectedRowKeysArray='selectedRowKeysArray' @areaVisibleAssignedbyflag='areaVisibleAssignedbyflag'/>
<assigned-by v-if='areaVisibleAssignedby' :selectedRowKeysArray='selectedRowKeysArray'
@areaVisibleAssignedbyflag='areaVisibleAssignedbyflag'/>
</a-modal>
<!-- 截至时间--->
<a-modal v-model="areaVisibleTaskCutOffTime" :title="$t('TaskCutOffTime')" width='650px' :footer="null">
<task-cut-off-time v-if='areaVisibleTaskCutOffTime' :selectedRowKeysArray='selectedRowKeysArray' @areaVisibleTaskCutOffTimeflag='areaVisibleTaskCutOffTimeflag'/>
<task-cut-off-time v-if='areaVisibleTaskCutOffTime' :selectedRowKeysArray='selectedRowKeysArray'
@areaVisibleTaskCutOffTimeflag='areaVisibleTaskCutOffTimeflag'/>
</a-modal>
<!-- 引用参数--->
<a-modal v-model="areaVisiblereferenceparameter" :title="$t('referenceparameter')" width='650px' :footer="null">
<reference-parameter v-if='areaVisiblereferenceparameter' :paramsManifest='paramsManifest' :selectedRowKeysArray='selectedRowKeysArray'/>
<reference-parameter v-if='areaVisiblereferenceparameter' :paramsManifest='paramsManifest'
:selectedRowKeysArray='selectedRowKeysArray'/>
</a-modal>
</a-card>
</template>
@@ -304,7 +312,8 @@ export default {
},
mounted() {},
methods:{
// 工程接口人 退回 权限
// 认证工程师的权限
// 认证工程师 退回 权限
// 仅仅状态为 已提交 可以退回
homoJurisdictionReturn() {
// 定义开关 0为没有权限 1为有权限
@@ -312,7 +321,7 @@ export default {
if(this.homo) {
if(this.selectedRowKeysValue.length == 0) {
flag = 0
this.$message.success(this.$t('selectLeastOne'))
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if(item.state !== '已提交') {
@@ -325,12 +334,48 @@ export default {
this.$message.warning(this.$t('operatethisbutton'))
}
}
}else {
// 工程接口人 退回 权限
// 待工程接口人处理 填写人退回
}else if(this.sdt){
if(this.selectedRowKeysValue.length == 0) {
flag = 0
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if(item.state !== '待工程接口人处理' && item.state !== '填写人退回') {
flag = 0
}
})
if(flag === 1) {
flag = 1
} else {
this.$message.warning(this.$t('operatethisbutton'))
}
}
} else if(this.dre){
// 填写人
// 待填写 认证工程师退回 状态
if(this.selectedRowKeysValue.length == 0) {
flag = 0
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if(item.state !== '待填写' && item.state !== '认证工程师退回') {
flag = 0
}
})
if(flag === 1) {
flag = 1
} else {
this.$message.warning(this.$t('operatethisbutton'))
}
}
} else {
this.$message.success(this.$t('operatethisbutton'))
}
return flag
},
// 工程接口人 批量删除 权限
// 认证工程师 批量删除 权限
// 仅仅状态为 待发起收集 工程接口人退回 变更 可以批量删除
homoJurisdictionBatchdelete() {
// 定义开关 0为没有权限 1为有权限
@@ -338,7 +383,7 @@ export default {
if(this.homo) {
if(this.selectedRowKeysValue.length == 0) {
flag = 0
this.$message.success(this.$t('selectLeastOne'))
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if(item.state !== '待发起收集' && item.state !== '工程接口人退回' && item.state !== '变更') {
@@ -351,12 +396,16 @@ export default {
this.$message.warning(this.$t('operatethisbutton'))
}
}
}else {
this.$message.success(this.$t('operatethisbutton'))
// 工程接口人没有权限
}else if(this.sdt) {
flag = 0
this.$message.warning(this.$t('operatethisbutton'))
} else {
this.$message.warning(this.$t('operatethisbutton'))
}
return flag
},
// 工程接口人 同步上报库 权限
// 认证工程师 同步上报库 权限
// 仅仅状态为 已提交 变更 可以同步上报库
homoJurisdictionSynchronousLibrary() {
// 定义开关 0为没有权限 1为有权限
@@ -364,7 +413,7 @@ export default {
if(this.homo) {
if(this.selectedRowKeysValue.length == 0) {
flag = 0
this.$message.success(this.$t('selectLeastOne'))
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if(item.state !== '已提交' && item.state !== '变更') {
@@ -378,11 +427,11 @@ export default {
}
}
}else {
this.$message.success(this.$t('operatethisbutton'))
this.$message.warning(this.$t('operatethisbutton'))
}
return flag
},
// 工程接口人 强制撤回 权限
// 认证工程师 强制撤回 权限
// 仅仅状态为 待工程接口人处理 填写人退回 可以强制撤回
homoJurisdictionCompulsoryWithdrawal() {
// 定义开关 0为没有权限 1为有权限
@@ -403,37 +452,107 @@ export default {
this.$message.warning(this.$t('operatethisbutton'))
}
}
}else {
// 工程接口人 强制撤回 权限
// 仅仅状态为 待填写 可以强制撤回
}else if(this.sdt){
if(this.selectedRowKeysValue.length == 0) {
flag = 0
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if(item.state !== '待填写') {
flag = 0
}
})
if(flag === 1) {
flag = 1
} else {
this.$message.warning(this.$t('operatethisbutton'))
}
}
} else {
this.$message.success(this.$t('operatethisbutton'))
}
return flag
},
// 工程接口人 分配填写人 权限
// 仅仅状态为 待工程接口人处理 填写人退回 可以分配填写人
sdtJurisdictionAssigned() {
// 定义开关 0为没有权限 1为有权限
let flag = 1
if(this.sdt) {
if (this.selectedRowKeysValue.length == 0) {
flag = 0
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if (item.state !== '待工程接口人处理' && item.state !== '填写人退回') {
flag = 0
}
})
if (flag === 1) {
flag = 1
} else {
this.$message.warning(this.$t('operatethisbutton'))
}
}
} else {
this.$message.success(this.$t('operatethisbutton'))
}
return flag
},
// 填写人 提交 权限
// 仅仅状态为 待填写 认证工程师退回 可以提交
dreJurisdictionSubmit() {
// 定义开关 0为没有权限 1为有权限
let flag = 1
if(this.sdt) {
if (this.selectedRowKeysValue.length == 0) {
flag = 0
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if (item.state !== '待填写' && item.state !== '认证工程师退回') {
flag = 0
}
})
if (flag === 1) {
flag = 1
} else {
this.$message.warning(this.$t('operatethisbutton'))
}
}
} else {
this.$message.success(this.$t('operatethisbutton'))
}
return flag
},
// 填写人 引用参数 权限
// 仅仅状态为 待填写 认证工程师退回 可以引用参数
dreJurisdictionreferenceParameter() {
// 定义开关 0为没有权限 1为有权限
let flag = 1
if(this.sdt) {
if (this.selectedRowKeysValue.length == 0) {
flag = 0
this.$message.warning(this.$t('selectLeastOne'))
} else {
this.selectedRowKeysValue.forEach((item, index) => {
if (item.state !== '待填写' && item.state !== '认证工程师退回') {
flag = 0
}
})
if (flag === 1) {
flag = 1
} else {
this.$message.warning(this.$t('operatethisbutton'))
}
}
} else {
this.$message.success(this.$t('operatethisbutton'))
}
return flag
},
// 工程接口人 下发收集 权限
// 仅仅状态为 待发起收集 工程接口人退回 变更 可以下发收集
// homoJurisdictionDistributionCollection() {
// // 定义开关 0为没有权限 1为有权限
// let flag = 1
// if(this.homo) {
// if(this.selectedRowKeysValue.length == 0) {
// flag = 0
// this.$message.success(this.$t('selectLeastOne'))
// } else {
// this.selectedRowKeysValue.forEach((item, index) => {
// if(item.state !== '待发起收集' && item.state !== '工程接口人退回' && item.state !== '变更') {
// flag = 0
// }
// })
// if(flag === 1) {
// flag = 1
// } else {
// this.$message.warning(this.$t('operatethisbutton'))
// }
// }
// }else {
// this.$message.success(this.$t('operatethisbutton'))
// }
// return flag
// },
LoginUserType(val) {
val.split(',').forEach((item,index) => {
if(item === 'homo') {
@@ -461,6 +580,8 @@ export default {
this.areaVisibleFreeze = true
// 获取冻结配置数据
this.getFreeze()
} else {
this.$message.warning(this.$t('operatethisbutton'))
}
},
// 冻结配置提交
@@ -536,6 +657,7 @@ export default {
distributionAndCollectionJurisdiction() {
let homoJurisdictionBatchdelete = this.homoJurisdictionBatchdelete()
if(homoJurisdictionBatchdelete) {
console.log(';;;;')
this.distributionAndCollection()
}
},
@@ -593,46 +715,52 @@ export default {
if(this.homo) {
// 认证工程师 任意状态 都有此权限
this.areaVisible = true
} else {
this.$message.warning(this.$t('operatethisbutton'))
}
},
// 提交
handleSubmit() {
// 先判断提交权限
if(this.homo) {
// 认证工程师 任意状态 都无此权限
if(this.homo || this.sdt) {
// 认证工程师 工程接口人 任意状态 都无此权限
this.$message.warning(this.$t('operatethisbutton'))
} else {
// 提交数据
let postDate = []
this.selectedRowKeysValue.forEach((item, index) => {
let postDateobj = {}
Object.keys(item).forEach((itemIn, index) => {
if(itemIn !== 'sdt') {
if(item[itemIn] instanceof Object) {
postDateobj[itemIn] = item[itemIn]
// 填写人 权限
let dreJurisdictionSubmit = this.dreJurisdictionSubmit()
if(dreJurisdictionSubmit) {
// 提交数据
let postDate = []
this.selectedRowKeysValue.forEach((item, index) => {
let postDateobj = {}
Object.keys(item).forEach((itemIn, index) => {
if(itemIn !== 'sdt') {
if(item[itemIn] instanceof Object) {
postDateobj[itemIn] = item[itemIn]
}
}
}
})
postDateobj.id = item.id
postDate.push(postDateobj)
})
let configDataList = { configDataList: postDate }
if(this.selectedRowKeys.length == 0) {
this.$message.warning(this.$t('selectLeastOne'))
}else {
postAction(this.url.add, configDataList).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
} else {
this.$message.warning(this.$t('operationFailed'))
}
})
postDateobj.id = item.id
postDate.push(postDateobj)
})
let configDataList = { configDataList: postDate }
if(this.selectedRowKeys.length == 0) {
this.$message.warning(this.$t('selectLeastOne'))
}else {
postAction(this.url.add, configDataList).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
} else {
this.$message.warning(this.$t('operationFailed'))
}
})
}
}
}
},
returnDataJurisdiction() {
// 退回的状态权限
let homoJurisdictionReturn = this.homoJurisdictionReturn
let homoJurisdictionReturn = this.homoJurisdictionReturn()
if (homoJurisdictionReturn) {
this.returnData()
}
@@ -725,7 +853,11 @@ export default {
// 认证工程师 任意状态 都无此权限
this.$message.warning(this.$t('operatethisbutton'))
} else {
this.areaVisibleAssignedby = true
// 工程接口人
let sdtJurisdictionAssigned = this.sdtJurisdictionAssigned()
if(sdtJurisdictionAssigned) {
this.areaVisibleAssignedby = true
}
}
},
// 分配填写人确定后弹框关闭
@@ -734,7 +866,7 @@ export default {
},
// 截止时间
TaskCutOffTime() {
if(this.homo) {
if(this.homo || this.sdt) {
// 认证工程师 任意状态 都无此权限
this.$message.warning(this.$t('operatethisbutton'))
} else {
@@ -748,34 +880,38 @@ export default {
},
//引用参数
referenceparameter() {
if(this.homo) {
// 认证工程师 任意状态 都无此权限
if(this.homo || this.sdt) {
// 认证工程师 工程接口人 任意状态 都无此权限
this.$message.warning(this.$t('operatethisbutton'))
} else {
this.areaVisiblereferenceparameter = true
// 填写人的权限
let dreJurisdictionreferenceParameter = this.dreJurisdictionreferenceParameter()
if(dreJurisdictionreferenceParameter) {
this.areaVisiblereferenceparameter = true
}
}
},
handleModule() {
},
handleCody() {
console.log(this.paramsManifest,'paramsManifestparamsManifestparamsManifestparamsManifest')
},
searchQuery() {
this.pageNo = 1
this.$refs.CollectionTabel.getTableList()
},
searchReset() {
this.$refs.CollectionTabel.getTableListReset()
},
handleDelJurisdiction() {
let homoJurisdictionBatchdelete = this.homoJurisdictionBatchdelete()
if(homoJurisdictionBatchdelete) {
this.handleDel()
}
},
handleDel(){
let param={
},
handleCody() {
console.log(this.paramsManifest, 'paramsManifestparamsManifestparamsManifestparamsManifest')
},
searchQuery() {
this.pageNo = 1
this.$refs.CollectionTabel.getTableList()
},
searchReset() {
this.$refs.CollectionTabel.getTableListReset()
},
handleDelJurisdiction() {
let homoJurisdictionBatchdelete = this.homoJurisdictionBatchdelete()
if (homoJurisdictionBatchdelete) {
this.handleDel()
}
},
handleDel() {
let param = {
ids: this.selectedRowKeysArray
}
if (this.selectedRowKeys.length > 0) {
@@ -787,7 +923,7 @@ export default {
url: '/jero-boot/params/collectManifest/deleteBatch',
method: 'post',
data: param,
transformRequest: [function (data) {
transformRequest: [function(data) {
let ret = ''
for (let it in data) {
ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
@@ -796,158 +932,158 @@ export default {
}],
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'X-Access-Token':_this.token
'X-Access-Token': _this.token
}
})
.then( (res) =>{
.then((res) => {
if (res.data.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.selectedRowKeys = []
_this.$refs.CollectionTabel.getData()
_this.$refs.CollectionTabel.getTableList()
}else{
} else {
_this.$message.warning(_this.$t('operationFailed'))
}
})
.catch( (error) =>{
console.log(error);
});
.catch((error) => {
console.log(error)
})
}
})
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
},
pageOnChange() {
},
pageOnChange() {
},
SizeChange() {
},
SizeChange() {
},
}
}
}
}
</script>
<style lang="less" scoped>
@import '~@assets/less/common.less';
@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;
.doc-detail {
background: #fff;
height: 100%;
.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;
.Virtual-detail-header {
width: 100%;
height: 68px;
line-height: 68px;
padding: 0 32px 0 32px;
box-sizing: border-box;
display: flex;
justify-content: space-between;
border-bottom: 2px #eff1f3 solid;
background: #fff;
.Virtual-detail-title {
display: inline-block;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
font-size: 20px;
font-weight: 400;
color: #040B29;
line-height: 68px;
}
.doc-detail-right {
width: 800px;
line-height: 68px;
display: flex;
}
}
.Virtual-detail-content {
padding: 0 38px 0 38px;
box-sizing: border-box;
font-size: 16px;
.box-title-text-add {
line-height: 1.4;
}
.title-text-add {
display: inline-block;
font-weight: 500;
margin-right: 16px;
height: 42px;
line-height: 42px;
}
}
}
.Virtual-detail-content {
padding: 0 38px 0 38px;
box-sizing: border-box;
.header-text {
font-size: 16px;
.box-title-text-add {
line-height: 1.4;
}
.title-text-add {
display: inline-block;
font-weight: 500;
margin-right: 16px;
height: 42px;
line-height: 42px;
}
font-weight: 400;
height: 60px;
color: #000F16;
line-height: 40px;
}
}
.header-text {
font-size: 16px;
font-weight: 400;
height: 60px;
color: #000F16;
line-height: 40px;
}
.box-title-text {
line-height: 1.4;
display: flex;
align-items: center;
margin-bottom: 10px;
}
.box-title-text {
line-height: 1.4;
display: flex;
align-items: center;
margin-bottom: 10px;
}
.title-text {
width: 20%;
min-width: 110px;
color: #000F16;
display: inline-block;
font-weight: 500;
font-size: 14px;
margin-right: 16px;
margin-top: 3px;
text-align: right;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.title-text {
width: 20%;
min-width: 110px;
color: #000F16;
display: inline-block;
font-weight: 500;
font-size: 14px;
margin-right: 16px;
margin-top: 3px;
text-align: right;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.box-input {
display: inline-block;
width: 70%;
height: 38px;
margin-top: 2px;
}
.box-input {
display: inline-block;
width: 70%;
height: 38px;
margin-top: 2px;
}
.box-button {
height: 38px;
}
.box-button {
height: 38px;
}
.text-operation {
margin-right: 8px;
}
.text-operation {
margin-right: 8px;
}
.page {
text-align: right;
margin-top: 20px;
}
.page {
text-align: right;
margin-top: 20px;
}
.operator-text-left {
font-size: 14px;
margin-right: 20px;
background: #eff1f3;
padding: 8px 8px;
cursor: pointer;
border-radius: 4px;
}
.operator-text-left {
font-size: 14px;
margin-right: 20px;
background: #eff1f3;
padding: 8px 8px;
cursor: pointer;
border-radius: 4px;
}
</style>
<style>
.box-input .ant-select-selection {
height: 38px !important;
}
.box-input .ant-select-selection {
height: 38px !important;
}
.box-input .ant-select-selection__rendered {
line-height: 38px;
}
.box-input .ant-select-selection__rendered {
line-height: 38px;
}
</style>
@@ -1,34 +1,36 @@
<template>
<a-card :bordered="false">
<div class="table-page-search-wrapper">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('standard')">
<span>{{$t('standard')}}</span>
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('standard')">
<span>{{$t('standard')}}</span>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('standard')"
v-model="queryParam.serialNumber"></j-input>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('standard')"
v-model="queryParam.serialNumber"></j-input>
</div>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" style="width: 64px" :title="$t('areaOfResponsibility')">
<span>{{$t('areaOfResponsibility')}}</span>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" style="width: 64px" :title="$t('areaOfResponsibility')">
<span>{{$t('areaOfResponsibility')}}</span>
</div>
<j-dict-select-tag class="box-input" v-model="queryParam.dutyTerritory"
:placeholder="$t('PleaseSelect')+$t('areaOfResponsibility')"
:type="'select'"
:triggerChange="false" :dictCode="'duty_territory'"/>
</div>
<j-dict-select-tag class="box-input" v-model="queryParam.dutyTerritory"
:placeholder="$t('PleaseSelect')+$t('areaOfResponsibility')"
:type="'select'"
:triggerChange="false" :dictCode="'duty_territory'"/>
</div>
</a-col>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
</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>
</a-col>
</span>
</a-row>
</a-row>
</a-form>
</div>
<div class="table-operator">
<div @click="CertificationDirectory" class="operator-text">
@@ -212,7 +214,7 @@
'To be tracked': 'TrackedColor',
'NA': 'notInvolvedColor',
'No rating': 'submittedColor',
'Termination of task': 'nonConformityColor',
'Termination of task': 'nonConformityColor'
},
statusText: {
'Compliance': this.$t('accord'),
@@ -220,7 +222,7 @@
'To be tracked': this.$t('Tracked'),
'NA': this.$t('notInvolved'),
'No rating': this.$t('toBeConfirmed'),
'Termination of task': this.$t('taskTermination'),
'Termination of task': this.$t('taskTermination')
},
CertificationColor: {
'Test passed': 'accordColor',
@@ -299,7 +301,7 @@
projectName: this.$route.query.projectName,
projectNameId: this.$route.query.projectNameId,
primaryKeyId: val.designTaskDetailId,
PersonChargeFeedback:val.designPersonChargeFeedback,
PersonChargeFeedback: val.designPersonChargeFeedback
}
break
case 2:
@@ -323,7 +325,7 @@
projectName: this.$route.query.projectName,
projectNameId: this.$route.query.projectNameId,
primaryKeyId: val.prehomoTaskDetailId,
PersonChargeFeedback:val.prehomoPersonChargeFeedback,
PersonChargeFeedback: val.prehomoPersonChargeFeedback
}
break
case 3:
@@ -347,7 +349,7 @@
projectName: this.$route.query.projectName,
projectNameId: this.$route.query.projectNameId,
primaryKeyId: val.verifyTaskDetailId,
PersonChargeFeedback:val.verifyPersonChargeFeedback,
PersonChargeFeedback: val.verifyPersonChargeFeedback
}
break
}
@@ -1,23 +1,25 @@
<template>
<a-card :bordered="false">
<div class="table-page-search-wrapper">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('title')">
<span>{{$t('title')}}</span>
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('title')">
<span>{{$t('title')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('title')"
v-model="queryParam.title"></a-input>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('title')"
v-model="queryParam.title"></a-input>
</div>
</a-col>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
</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>
</a-col>
</span>
</a-row>
</a-row>
</a-form>
</div>
<div class="table-operator">
<div @click="handleAdd" class="operator-text">
@@ -53,7 +55,7 @@
<span slot="paramsManifestClick" slot-scope="text,record">
<a @click="paramsManifestClick(record)">{{text}}</a>
</span>
<span slot="operation" slot-scope="text,record">
<span slot="operation" slot-scope="text,record">
<a class="text-operation" @click="configure(record)">{{$t('configure')}}</a>
<a class="text-operation" @click="edit(record)">{{$t('edit')}}</a>
<a class="text-operation" @click="deleteLib(record)">{{$t('deleteLib')}}</a>
@@ -72,21 +74,23 @@
@showSizeChange="SizeChange"
/>
</div>
<!-- 参数模板-->
<!-- 参数模板-->
<a-modal v-model="areaVisible" :title="$t('parameterTemplate')" width='750px' :footer="null">
<parameter-template-add v-if='areaVisible' @areaVisible='handleCancel' :templateTitle='templatetitle'
:selectedRowKeyS='selectedRowKeys' :rowId='rowId' :version='version' :projectId='this.$route.query.id'></parameter-template-add>
:selectedRowKeyS='selectedRowKeys' :rowId='rowId' :version='version'
:projectId='this.$route.query.id'></parameter-template-add>
</a-modal>
<!-- 配置-->
<!-- 配置-->
<configure ref="configureRef" :url='url' :itemId='itemId'/>
<!-- 历史版本-->
<!-- 历史版本-->
<a-modal v-model="historicalVisible" :title="$t('historicalVersion')" width='750px' :footer="null">
<historical-version v-if='historicalVisible' :historicalRow='historicalRow'></historical-version>
</a-modal>
<!-- 复制参数模板-->
<a-modal v-model="areaVisibleCody" :title="$t('CopyProjectCollectionparameters')" width='750px' :footer="null">
<parameter-template-cody v-if='areaVisibleCody' @areaVisible='handleCancel' :templateTitle='templatetitle'
:selectedRowKeyS='selectedRowKeys' :rowId='rowId' :version='version' :projectId='this.$route.query.id'></parameter-template-cody>
:selectedRowKeyS='selectedRowKeys' :rowId='rowId' :version='version'
:projectId='this.$route.query.id'></parameter-template-cody>
</a-modal>
</a-card>
</template>
@@ -96,107 +100,108 @@
import ParameterTemplateAdd from '../dialog/ParameterTemplateAdd'
import ParameterTemplateCody from '../dialog/ParameterTemplateCody'
import HistoricalVersion from '../dialog/historicalVersion'
import { getAction,postAction } from '../../../api/manage'
import { getAction, postAction } from '../../../api/manage'
import Configure from '../dialog/configure'
import axios from 'axios'
import Vue from 'vue'
import { ACCESS_TOKEN } from '@/store/mutation-types'
export default {
name: 'TaskParameterCollection',
components:{
components: {
ImportFile,
ParameterTemplateAdd,
Configure,
HistoricalVersion,
ParameterTemplateCody
},
data(){
return{
columns:[
{
title: this.$t('title'),
align: 'center',
dataIndex: 'title',
scopedSlots: { customRender: 'paramsManifestClick' }
},
{
title: this.$t('status'),
align: 'center',
dataIndex: 'state',
},
{
title: this.$t('parameterTemplateName'),
align: 'center',
dataIndex: 'paramsTemplateName',
},
{
title: this.$t('collectionCompletionTime'),
align: 'center',
dataIndex: 'finishTime',
},
{
title: this.$t('Version'),
align: 'center',
dataIndex: 'version',
},
{
title: this.$t('creator'),
align: 'center',
dataIndex: 'createBy',
},
{
title: this.$t('createTime'),
align: 'center',
dataIndex: 'createTime',
},
{
title: this.$t('operation'),
align: 'center',
fixed: 'right',
width: 200,
scopedSlots: { customRender: 'operation' }
}
],
token:Vue.ls.get(ACCESS_TOKEN),
selectedRowKeys: [],
queryParam: {},
url: {
list: 'params/manifest/page',
add: 'params/manifest/add',
edit: 'params/manifest/edit',
queryById: 'params/manifest/queryById',
deleteBatch: 'params/manifest/delete',
deleteAll: 'params/manifest/deleteBatch',
conAdd: 'params/config/addBatch',
conList: 'params/config/list',
},
loading: false,
dataSource: [],
areaVisible: false, // 弹框的控制
configureareaVisible: false, // 配置的彈框
pageNo: 1,
pageSize: 10,
total: 0,
selectedRowKeysArray: '',
templatetitle: '',
templatetitleId: '',
rowId: '',
version: 0,
itemId: '',
historicalVisible: false,
historicalRow: {}, // 历史版本得数据
areaVisibleCody: false, // 复制参数清单得弹框
}
data() {
return {
columns: [
{
title: this.$t('title'),
align: 'center',
dataIndex: 'title',
scopedSlots: { customRender: 'paramsManifestClick' }
},
{
title: this.$t('status'),
align: 'center',
dataIndex: 'state'
},
{
title: this.$t('parameterTemplateName'),
align: 'center',
dataIndex: 'paramsTemplateName'
},
{
title: this.$t('collectionCompletionTime'),
align: 'center',
dataIndex: 'finishTime'
},
{
title: this.$t('Version'),
align: 'center',
dataIndex: 'version'
},
{
title: this.$t('creator'),
align: 'center',
dataIndex: 'createBy'
},
{
title: this.$t('createTime'),
align: 'center',
dataIndex: 'createTime'
},
{
title: this.$t('operation'),
align: 'center',
fixed: 'right',
width: 200,
scopedSlots: { customRender: 'operation' }
}
],
token: Vue.ls.get(ACCESS_TOKEN),
selectedRowKeys: [],
queryParam: {},
url: {
list: 'params/manifest/page',
add: 'params/manifest/add',
edit: 'params/manifest/edit',
queryById: 'params/manifest/queryById',
deleteBatch: 'params/manifest/delete',
deleteAll: 'params/manifest/deleteBatch',
conAdd: 'params/config/addBatch',
conList: 'params/config/list'
},
loading: false,
dataSource: [],
areaVisible: false, // 弹框的控制
configureareaVisible: false, // 配置的彈框
pageNo: 1,
pageSize: 10,
total: 0,
selectedRowKeysArray: '',
templatetitle: '',
templatetitleId: '',
rowId: '',
version: 0,
itemId: '',
historicalVisible: false,
historicalRow: {}, // 历史版本得数据
areaVisibleCody: false // 复制参数清单得弹框
}
},
mounted() {
this.getlist()
},
methods:{
methods: {
paramsManifestClick(item) {
localStorage.setItem('paramsManifest',JSON.stringify(item))
localStorage.setItem('paramsManifest', JSON.stringify(item))
let newUrl = this.$router.resolve({
path: '/ParameterItemCollection',
query: this.$route.query,
query: this.$route.query
})
window.open(newUrl.href, '_blank')
},
@@ -247,7 +252,7 @@
this.selectedRowKeys = val
this.selectedRowKeysArray = val.join(',')
},
edit(edit){
edit(edit) {
this.areaVisible = true
let _this = this
let query = {
@@ -263,15 +268,15 @@
}
})
},
handleAdd(){
handleAdd() {
this.areaVisible = true
},
handleModule(){
handleModule() {
let _this = this
axios({
url: `/jero-boot/params/manifest/changeExtension?id=${this.selectedRowKeys[0]}`,
method: 'get',
transformRequest: [function (data) {
transformRequest: [function(data) {
let ret = ''
for (let it in data) {
ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&'
@@ -280,22 +285,22 @@
}],
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'X-Access-Token':_this.token
'X-Access-Token': _this.token
}
})
.then( (res) =>{
.then((res) => {
if (res.data.success) {
_this.$message.success(res.data.message)
}else{
} else {
_this.$message.warning(res.data.message)
}
})
.catch( (error) =>{
console.log(error);
});
.catch((error) => {
console.log(error)
})
},
handleDel(){
let param={
handleDel() {
let param = {
ids: this.selectedRowKeysArray
}
if (this.selectedRowKeys.length > 0) {
@@ -320,7 +325,7 @@
handleCody() {
this.areaVisibleCody = true
},
getPersonnelList(){
getPersonnelList() {
},
pageOnChange() {
@@ -337,8 +342,8 @@
...this.queryParam
}
getAction(this.url.list, query).then((res) => {
if(res.success) {
this.total = res.result.total
if (res.success) {
this.total = res.result.total
this.dataSource = res.result.records || []
this.loading = false
} else {
@@ -346,7 +351,7 @@
}
})
}
},
}
}
</script>
@@ -30,6 +30,12 @@
{{ $t('delete') }}
</a>
</span>
<span slot="operationFile" slot-scope="text,record">
<a @click="viewFileClick(text)" v-if="text">
{{$t('viewFile')}}
</a>
<span v-else>--</span>
</span>
</a-table>
<div class="page" v-if="dataList.length > 0">
<a-pagination
@@ -51,6 +57,7 @@
</a-drawer>
<certificationDirectoryAdd @certificationDirectoryList="certificationDirectoryList"
ref="certificationDirectoryAddRef"/>
<viewFileModel ref="viewFileModelRef"/>
</div>
</template>
@@ -58,11 +65,13 @@
<script>
import { getAction, postAction, deleteAction } from '@/api/manage'
import certificationDirectoryAdd from './certificationDirectoryAdd'
import viewFileModel from '@/components/viewFileModel/index'
export default {
name: 'certificationDirectory',
components: {
certificationDirectoryAdd
certificationDirectoryAdd,
viewFileModel
},
data() {
return {
@@ -87,13 +96,15 @@
title: this.$t('catalogFile'),
dataIndex: 'directoryFile',
align: 'center',
ellipsis: true
ellipsis: true,
scopedSlots: { customRender: 'operationFile' }
},
{
title: this.$t('testScheme'),
dataIndex: 'experimentFile',
align: 'center',
ellipsis: true
ellipsis: true,
scopedSlots: { customRender: 'operationFile' }
},
{
title: this.$t('testReportLocation'),
@@ -164,7 +175,7 @@
let query = {
pageNo: this.pageNo,
pageSize: this.pageSize,
projectLibraryId:this.$route.query.id,
projectLibraryId: this.$route.query.id,
...this.queryParam
}
this.loading = true
@@ -209,6 +220,9 @@
certificationDirectoryList() {
this.pageNo = 1
this.replacePage()
},
viewFileClick(item) {
this.$refs.viewFileModelRef.clickButtonToUpload(item)
}
}
}
@@ -10,14 +10,15 @@
style="height: 100%;overflow: auto;padding-bottom: 53px;">
<div style="margin-bottom: 60px">
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="12" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('standard')">
<span>{{$t('standard')}}</span>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('standard')"
v-model="queryParam.serialNumber"></j-input>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('standard')"
v-model="queryParam.serial_number"></a-input>
</div>
</a-col>
<a-col :md="12" :sm="8">
@@ -25,8 +26,8 @@
<div class="title-text" :title="$t('title')">
<span>{{$t('title')}}</span>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('title')"
v-model="queryParam.title"></j-input>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('title')"
v-model="queryParam.title"></a-input>
</div>
</a-col>
<a-col :md="12" :sm="8">
@@ -42,11 +43,15 @@
</a-col>
<span style="float: right;overflow: hidden;" class="table-page-search-submitButtons">
<a-col :md="12" :sm="24">
<globalAdvancedQuery ref="globalAdvancedQueryRef"
@handleSuperQuery="handleSuperQuery"
:fieldList="fieldList"/>
<a-button class="box-button" type="primary" @click="searchQuery">{{$t('query')}}</a-button>
<a-button class="box-button" style="margin-left: 8px" @click="searchReset">{{$t('reset')}}</a-button>
</a-col>
</span>
</a-row>
</a-form>
</div>
<a-table
:columns="columns"
@@ -79,25 +84,25 @@
</template>
<script>
import currencySearch from '@/components/currencySearch/index'
import { getAction, postAction } from '@/api/manage'
import globalAdvancedQuery from '@/components/globalAdvancedQuery/index'
export default {
name: 'listAddModel',
components: {
currencySearch
globalAdvancedQuery
},
props:['url'],
props: ['url'],
data() {
return {
visible: false,
queryParam:{},
queryParam: {},
confirmLoading: false,
selectedRowKeys: [],
columns: [
{
title: this.$t('standard'),
dataIndex: 'serialNumber',
dataIndex: 'serial_number',
align: 'center',
ellipsis: true
},
@@ -109,31 +114,31 @@
},
{
title: this.$t('status'),
dataIndex: 'state_dictText',
dataIndex: 'state',
align: 'center',
ellipsis: true
},
{
title: this.$t('technicalField'),
dataIndex: 'technologyTerritory',
dataIndex: 'technology_territory',
align: 'center',
ellipsis: true
},
{
title: this.$t('ImplementationDate'),
dataIndex: 'xin1Che1Xing2Shi2Shi1Ri4Qi1',
dataIndex: 'xin1_che1_xing2_shi2_shi1_ri4_qi1',
align: 'center',
ellipsis: true
},
{
title: this.$t('vehicleInProductionDate'),
dataIndex: 'implementTime',
dataIndex: 'implement_time',
align: 'center',
ellipsis: true
},
{
title: this.$t('correspondingStandard'),
dataIndex: 'correspondingStandard',
dataIndex: 'corresponding_standard',
align: 'center',
ellipsis: true
}
@@ -144,6 +149,8 @@
pageNo: 1,
pageSize: 10,
total: 0,
fieldList: [],
queryConditionVOList: []
}
},
mounted() {
@@ -154,7 +161,9 @@
this.visible = true
this.queryParam = {}
this.selectedRowKeys = []
this.queryConditionVOList = []
this.replacePage()
this.queryConditionInventory()
},
searchQuery() {
this.pageNo = 1
@@ -163,6 +172,9 @@
searchReset() {
this.pageNo = 1
this.queryParam = {}
this.queryConditionVOList = []
this.$refs.globalAdvancedQueryRef.resetLine()
this.$refs.globalAdvancedQueryRef.emitCallback()
this.replacePage()
},
onChange(page, pageSize) {
@@ -175,10 +187,12 @@
this.replacePage()
},
replacePage() {
let queryConditionVOList = JSON.parse(JSON.stringify(this.queryConditionVOList))
let query = {
pageNo: this.pageNo,
pageSize: this.pageSize,
...this.queryParam
...this.queryParam,
queryConditionVOList: JSON.stringify(queryConditionVOList)
}
this.loading = true
postAction(this.url.addModelList, query).then((res) => {
@@ -187,6 +201,8 @@
this.total = res.result.total
this.loading = false
} else {
this.dataList = []
this.total = 0
this.loading = false
}
})
@@ -201,7 +217,10 @@
if (this.selectedRowKeys && this.selectedRowKeys.length > 0) {
this.confirmLoading = true
let selectedRowKeys = JSON.parse(JSON.stringify(this.selectedRowKeys))
postAction(this.url.addModel, { ids: selectedRowKeys.join(','),projectLibraryId: this.$route.query.id }).then((res) => {
postAction(this.url.addModel, {
ids: selectedRowKeys.join(','),
projectLibraryId: this.$route.query.id
}).then((res) => {
if (res.success) {
this.confirmLoading = false
this.$message.success(this.$t('OperationSuccessful'))
@@ -217,6 +236,32 @@
} else {
this.$message.warning(this.$t('selectLeastOne'))
}
},
queryConditionInventory() {
let query = {
flag: 1
}
getAction(this.url.queryConditionInventory, query).then((res) => {
if (res.success) {
this.fieldList = res.result || []
} else {
this.fieldList = []
}
})
},
handleSuperQuery(params, matchType) {
let sqp = {}
if (!params || (params && params.length == 0)) {
this.queryConditionVOList = []
this.$refs.globalAdvancedQueryRef.superQueryFlag = false
} else {
this.$refs.globalAdvancedQueryRef.superQueryFlag = true
this.queryConditionVOList = params
this.queryConditionVOList.forEach(res => {
res.type = matchType
})
}
this.replacePage()
}
}
}
@@ -232,7 +277,7 @@
position: absolute;
bottom: 0;
width: 100%;
z-index:100;
z-index: 100;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
text-align: right;
@@ -4,6 +4,7 @@
{{ $t('DocumentStandard') }}
</div>
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<div class="box-title-text">
@@ -43,6 +44,7 @@
</a-col>
</span>
</a-row>
</a-form>
</div>
<div class="table-operator" style="overflow:hidden;">
<div style="float: left;margin-bottom: 10px;margin-left: 20px" v-if="isDisplay">
@@ -650,7 +652,8 @@
},
queryParam: {},
url: {
addModelList: '/project/projectLawsInventoryEO/queryPageInfoBussDocument',
addModelList: '/project/projectLawsInventoryEO/queryPageDummy',
queryConditionInventory:'/project/projectLawsInventoryEO/queryConditionInventory',
list: '/project/projectLawsInventoryEO/list',
addModel: 'project/projectLawsInventoryEO/add',
editModel: '/project/projectLawsInventoryEO/edit',
@@ -124,10 +124,10 @@
v-model="formInline.certificationEngineer"
:placeholder="$t('certifiedEngineer')+$t('areaOfResponsibility')">
<a-select-option v-for="(item, key) in dictOptionsValue"
:key="item.id"
:value="item.id">
<span class="itemOption" :title=" item.username ">
{{ item.username }}
:key="item.certificationEngineer"
:value="item.certificationEngineer">
<span class="itemOption" :title=" item.certificationEngineerName ">
{{ item.certificationEngineerName }}
</span>
</a-select-option>
</a-select>
@@ -1,6 +1,7 @@
<template>
<a-card :bordered="false">
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<div class="box-title-text">
@@ -38,6 +39,7 @@
</a-col>
</span>
</a-row>
</a-form>
</div>
<div class="table-operator">
<div @click="handleExport" class="operator-text">
@@ -10,23 +10,25 @@
style="height: 100%;overflow: auto;padding-bottom: 53px;">
<div style="margin-bottom: 60px">
<div class="table-page-search-wrapper">
<a-row :gutter="24">
<a-col :md="12" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('VirtualListName')">
<span>{{$t('VirtualListName')}}</span>
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="12" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('VirtualListName')">
<span>{{$t('VirtualListName')}}</span>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('VirtualListName')"
v-model="queryParam.name"></j-input>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('VirtualListName')"
v-model="queryParam.name"></j-input>
</div>
</a-col>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
</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>
</a-col>
</span>
</a-row>
</a-row>
</a-form>
</div>
<a-table
:columns="columns"
@@ -210,7 +212,7 @@
.drawer-bootom-button {
position: absolute;
bottom: 0;
z-index:100;
z-index: 100;
width: 100%;
border-top: 1px solid #e8e8e8;
padding: 10px 16px;
@@ -4,35 +4,36 @@
{{ $t('DocumentStandard') }}
</div>
<div class="table-page-search-wrapper">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('standard')">
<span>{{ $t('standard') }}</span>
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('standard')">
<span>{{ $t('standard') }}</span>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('standard')"
v-model="queryParam.serialNumber"></j-input>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('standard')"
v-model="queryParam.serialNumber"></j-input>
</div>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('title')">
<span>{{ $t('title') }}</span>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('title')">
<span>{{ $t('title') }}</span>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('title')"
v-model="queryParam.title"></j-input>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('title')"
v-model="queryParam.title"></j-input>
</div>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" style="width: 44px" :title="$t('subtitle')">
<span>{{ $t('subtitle') }}</span>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" style="width: 44px" :title="$t('subtitle')">
<span>{{ $t('subtitle') }}</span>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('subtitle')"
v-model="queryParam.subtitle"></j-input>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('subtitle')"
v-model="queryParam.subtitle"></j-input>
</div>
</a-col>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
</a-col>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
<a-col :md="6" :sm="24">
<globalAdvancedQuery ref="globalAdvancedQueryRef"
@handleSuperQuery="handleSuperQuery"
@@ -42,7 +43,8 @@
@click="searchReset">{{ $t('reset') }}</a-button>
</a-col>
</span>
</a-row>
</a-row>
</a-form>
</div>
<div style="width: 100%">
<a-table
@@ -1,6 +1,7 @@
<template>
<a-card :bordered="false">
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<div class="box-title-text">
@@ -94,6 +95,7 @@
</a-col>
</span>
</a-row>
</a-form>
</div>
<div class="table-operator">
<div @click="handleAdd" class="operator-text" v-has="'document:getInfoById'">
@@ -1,6 +1,7 @@
<template>
<a-card :bordered="false">
<div class="table-page-search-wrapper">
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<div class="box-title-text">
@@ -22,7 +23,7 @@
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" style="width: 64px" :title="$t('areaOfResponsibility')">
<div class="title-text" :title="$t('areaOfResponsibility')">
<span>{{$t('areaOfResponsibility')}}</span>
</div>
<j-dict-select-tag class="box-input" v-model="queryParam.dutyTerritory"
@@ -138,6 +139,7 @@
</a-col>
</span>
</a-row>
</a-form>
</div>
<div class="table-operator">
<div @click="handleExport" class="operator-text">
@@ -1,34 +1,36 @@
<template>
<a-card :bordered="false">
<div class="table-page-search-wrapper">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('entryName')">
<span>{{$t('entryName')}}</span>
<a-form layout="inline" @keyup.enter.native="searchQuery">
<a-row :gutter="24">
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('entryName')">
<span>{{$t('entryName')}}</span>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('entryName')"
v-model="queryParam.projectName"></j-input>
</div>
<j-input class="box-input" :placeholder="$t('PleaseEnter')+$t('entryName')"
v-model="queryParam.projectName"></j-input>
</div>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('targetMarket')">
<span>{{$t('targetMarket')}}</span>
</a-col>
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('targetMarket')">
<span>{{$t('targetMarket')}}</span>
</div>
<j-dict-select-tag class="box-input" v-model="queryParam.targetMarket"
:placeholder="$t('PleaseSelect')+$t('targetMarket')"
:type="'select'"
:triggerChange="false" :dictCode="'region'"/>
</div>
<j-dict-select-tag class="box-input" v-model="queryParam.targetMarket"
:placeholder="$t('PleaseSelect')+$t('targetMarket')"
:type="'select'"
:triggerChange="false" :dictCode="'region'"/>
</div>
</a-col>
<span style="float: right;overflow: hidden;margin-right: 11px" class="table-page-search-submitButtons">
</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>
</a-col>
</span>
</a-row>
</a-row>
</a-form>
</div>
<div class="box-top">
<span class="box-top-text">{{$t('regulatoryCertificationTaskPlan')}}</span>
@@ -315,7 +317,7 @@
fontFamily: 'Blue Sky Noto',
color: '#000F16',
fontSize: '16'
},
}
},
axisLine: {
show: false