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

This commit is contained in:
liyawei
2022-10-14 11:39:37 +08:00
53 changed files with 2256 additions and 1333 deletions
@@ -1179,4 +1179,10 @@ update onl_cgform_field set is_query = '1', is_read_only = '1' where id = '09fa6
-- 配置表,增加问题知识库预览图片配置 2022-09-27 已同步生产环境 -- 配置表,增加问题知识库预览图片配置 2022-09-27 已同步生产环境
INSERT INTO `laws_weilai`.`sys_config` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `config`, `config_name`) VALUES ('4', 'admin', '2022-09-28 14:35:30', NULL, NULL, 'A01', 'http://grp.nioint.com/', 'domianWebImgURL'); INSERT INTO `laws_weilai`.`sys_config` (`id`, `create_by`, `create_time`, `update_by`, `update_time`, `sys_org_code`, `config`, `config_name`) VALUES ('4', 'admin', '2022-09-28 14:35:30', NULL, NULL, 'A01', 'http://grp.nioint.com/', 'domianWebImgURL');
--问题知识库,增加字段 发布状态 2022-10-13 未同步生产环境
ALTER TABLE `laws_weilai`.`problem_knowledge_base`
ADD COLUMN `release_status` varchar(50) NULL COMMENT '发布状态' AFTER `release_time`;
--处理问题知识库数据,发布人,发布时间,发布状态数据sql 2022-10-13 未同步生产环境
update problem_knowledge_base pkd set pkd.release_status = 'Have released',pkd.release_time = pkd.create_time,pkd.release_user_id = (select su.id from sys_user su where su.username = pkd.create_by)
@@ -0,0 +1,62 @@
package com.jero.modules.system.enums;
public enum RoleEnum {
ADMIN_ID("R&H Manager","R&H Manager","manager","1534020391015444481",2),
MANAGER_ID("系统管理员","Administrator","admin","f6817f48af4fb3af11b9e8bf182f618b",3),
COUNTRU_CARD_MANAGE("countryCard管理员","countryCardManage","countryCardManage","1564916346120916993",4),
;
String name;
String enName;
String value;
String id;
Integer order;
RoleEnum(String name, String enName, String value, String id, Integer order) {
this.name = name;
this.enName = enName;
this.value = value;
this.id = id;
this.order = order;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getEnName() {
return enName;
}
public void setEnName(String enName) {
this.enName = enName;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Integer getOrder() {
return order;
}
public void setOrder(Integer order) {
this.order = order;
}
}
@@ -270,4 +270,10 @@ public interface ISysUserService extends IService<SysUser> {
* @return * @return
*/ */
List<SysRole> queryUserRoleListInfoByUserId(String userId); List<SysRole> queryUserRoleListInfoByUserId(String userId);
/**
* 验证当前登录用户是否是超级管理员。
* @return
*/
boolean isAdministrator();
} }
@@ -17,6 +17,7 @@ import com.jero.common.util.oConvertUtils;
import com.jero.modules.base.service.BaseCommonService; import com.jero.modules.base.service.BaseCommonService;
import com.jero.modules.system.entity.*; import com.jero.modules.system.entity.*;
import com.jero.modules.system.enums.PPSyncEnum; import com.jero.modules.system.enums.PPSyncEnum;
import com.jero.modules.system.enums.RoleEnum;
import com.jero.modules.system.mapper.*; import com.jero.modules.system.mapper.*;
import com.jero.modules.system.model.SysUserSysDepartModel; import com.jero.modules.system.model.SysUserSysDepartModel;
import com.jero.modules.system.service.ISysUserService; import com.jero.modules.system.service.ISysUserService;
@@ -24,6 +25,7 @@ import com.jero.modules.system.vo.SysUserDepVo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -586,4 +588,30 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
} }
return result; return result;
} }
/**
* 验证当前登录用户是否是超级管理员
* @return
*/
@Override
public boolean isAdministrator() {
boolean result = false;
RoleEnum administrator = RoleEnum.MANAGER_ID;
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
List<SysUserRole> userRoleList = this.sysUserRoleMapper.selectList(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, currentUser.getId())); // 查询用户所有角色
if(CollectionUtils.isNotEmpty(userRoleList)){
List<SysUserRole> userRoles = userRoleList.stream().filter(userRole -> {
boolean flag = false;
if(StringUtils.equals(userRole.getRoleId(),administrator.getId())){
flag = true;
}
return flag;
}).collect(Collectors.toList());
if(CollectionUtils.isNotEmpty(userRoles)){
result = true;
}
}
return result;
}
} }
@@ -8,7 +8,7 @@ import org.apache.commons.lang3.StringUtils;
*/ */
public enum ReleaseConditionEnum { public enum ReleaseConditionEnum {
PUBLISHED("已发布","published","Have published"), PUBLISHED("已发布","published","Published"),
DRAFT("草稿","draft","Draft"), DRAFT("草稿","draft","Draft"),
; ;
@@ -8,13 +8,16 @@ import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.jero.common.api.vo.Result; import com.jero.common.api.vo.Result;
import com.jero.common.system.query.QueryGenerator; import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.lawsOpinionGather.entity.LawsOpinionGatherEO; import com.jero.modules.lawsOpinionGather.entity.LawsOpinionGatherEO;
import com.jero.modules.lawsOpinionGather.service.ILawsOpinionGatherEOService; import com.jero.modules.lawsOpinionGather.service.ILawsOpinionGatherEOService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController; import com.jero.common.system.base.controller.JeroController;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -37,6 +40,8 @@ import com.jero.common.aspect.annotation.AutoLog;
public class LawsOpinionGatherEOController extends JeroController<LawsOpinionGatherEO, ILawsOpinionGatherEOService> { public class LawsOpinionGatherEOController extends JeroController<LawsOpinionGatherEO, ILawsOpinionGatherEOService> {
@Autowired @Autowired
private ILawsOpinionGatherEOService lawsOpinionGatherEOService; private ILawsOpinionGatherEOService lawsOpinionGatherEOService;
@Autowired
private ISysUserService sysUserService;
/** /**
* 分页列表查询 * 分页列表查询
@@ -57,6 +62,19 @@ public class LawsOpinionGatherEOController extends JeroController<LawsOpinionGat
HttpServletRequest req) { HttpServletRequest req) {
QueryWrapper<LawsOpinionGatherEO> queryWrapper = QueryGenerator.initQueryWrapper(lawsOpinionGatherEO, req.getParameterMap()); QueryWrapper<LawsOpinionGatherEO> queryWrapper = QueryGenerator.initQueryWrapper(lawsOpinionGatherEO, req.getParameterMap());
queryWrapper.orderByDesc("start_time"); queryWrapper.orderByDesc("start_time");
/**
* 创建查询数据权限,超级管理员可以看到所有的数据,并且能删除,其它用户只能看到自己创建、或自己为评估人的数据。
*/
boolean administrator = this.sysUserService.isAdministrator();
if(!administrator){
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
//如果不是超级管理员,获取自己所有参与过的法规意见收集
queryWrapper.and(query -> {
query.eq("create_by",currentUser.getUsername());
query.or().like("evaluator_ids",currentUser.getId());
});
}
Page<LawsOpinionGatherEO> page = new Page<LawsOpinionGatherEO>(pageNo, pageSize); Page<LawsOpinionGatherEO> page = new Page<LawsOpinionGatherEO>(pageNo, pageSize);
IPage<LawsOpinionGatherEO> pageList = lawsOpinionGatherEOService.page(page, queryWrapper); IPage<LawsOpinionGatherEO> pageList = lawsOpinionGatherEOService.page(page, queryWrapper);
this.lawsOpinionGatherEOService.disposeData(pageList.getRecords(),cut); this.lawsOpinionGatherEOService.disposeData(pageList.getRecords(),cut);
@@ -122,4 +122,8 @@ public class LawsOpinionGatherEO implements Serializable {
@ApiModelProperty(value = "评估人ids,多个之间使用英文逗号分隔") @ApiModelProperty(value = "评估人ids,多个之间使用英文逗号分隔")
private String evaluatorIds; private String evaluatorIds;
/**删除标识 true 可以删除,false,没有权限删除**/
@TableField(exist = false)
private boolean deleteFlag = false;
} }
@@ -6,6 +6,7 @@ import com.jero.common.api.vo.Result;
import com.jero.common.constant.enums.CutEnum; import com.jero.common.constant.enums.CutEnum;
import com.jero.common.constant.enums.MessageTypeEnum; import com.jero.common.constant.enums.MessageTypeEnum;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.feishu.vo.FeishuMsgVo; import com.jero.modules.feishu.vo.FeishuMsgVo;
import com.jero.modules.lawsOpinionGather.entity.LawsOpinionGatherEO; import com.jero.modules.lawsOpinionGather.entity.LawsOpinionGatherEO;
import com.jero.modules.lawsOpinionGather.enums.GatherResultEnum; import com.jero.modules.lawsOpinionGather.enums.GatherResultEnum;
@@ -31,6 +32,7 @@ import com.jero.modules.system.service.impl.SysCategoryServiceImpl;
import com.jero.modules.wkflow.feginClient.WorkFlowFeignClient; import com.jero.modules.wkflow.feginClient.WorkFlowFeignClient;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.jeecg.modules.jmreport.common.constant.CommonConstant; import org.jeecg.modules.jmreport.common.constant.CommonConstant;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
@@ -197,6 +199,8 @@ public class LawsOpinionGatherEOServiceImpl extends ServiceImpl<LawsOpinionGathe
@Override @Override
public void disposeData(List<LawsOpinionGatherEO> lawsOpinionGatherEOList,String cut) { public void disposeData(List<LawsOpinionGatherEO> lawsOpinionGatherEOList,String cut) {
if(CollectionUtils.isNotEmpty(lawsOpinionGatherEOList)){ if(CollectionUtils.isNotEmpty(lawsOpinionGatherEOList)){
boolean administrator = this.sysUserService.isAdministrator();
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
//树形数据字典 //树形数据字典
List<SysCategory> technologyTerritoryList = sysCategoryService.list(); List<SysCategory> technologyTerritoryList = sysCategoryService.list();
lawsOpinionGatherEOList.forEach(lawsOpinionGather -> { lawsOpinionGatherEOList.forEach(lawsOpinionGather -> {
@@ -211,6 +215,10 @@ public class LawsOpinionGatherEOServiceImpl extends ServiceImpl<LawsOpinionGathe
List<OSSFile> opinionArchiveFileList = iOSSFileService.getFileInfosByConnectId(StringUtils.join(lawsOpinionGather.getOpinionArchiveId(), ",")); List<OSSFile> opinionArchiveFileList = iOSSFileService.getFileInfosByConnectId(StringUtils.join(lawsOpinionGather.getOpinionArchiveId(), ","));
lawsOpinionGather.setOpinionArchiveFileList(opinionArchiveFileList); lawsOpinionGather.setOpinionArchiveFileList(opinionArchiveFileList);
} }
//如果当前用户是超级管理员,或是这条数据的创建人,给删除权限。
if(StringUtils.equals(lawsOpinionGather.getCreateBy(),currentUser.getUsername()) || administrator){
lawsOpinionGather.setDeleteFlag(true);
}
}); });
} }
} }
@@ -3,19 +3,26 @@ package com.jero.modules.lawsTechnologyEvaluation.controller;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.jero.common.api.vo.Result; import com.jero.common.api.vo.Result;
import com.jero.common.system.query.QueryGenerator; import com.jero.common.system.query.QueryGenerator;
import com.jero.common.system.vo.LoginUser;
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationEO; import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationEO;
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationFlowDetailEO;
import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationEOService; import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationEOService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.modules.lawsTechnologyEvaluation.service.ILawsTechnologyEvaluationFlowDetailEOService;
import com.jero.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController; import com.jero.common.system.base.controller.JeroController;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@@ -40,6 +47,10 @@ import com.jero.common.aspect.annotation.AutoLog;
public class LawsTechnologyEvaluationEOController extends JeroController<LawsTechnologyEvaluationEO, ILawsTechnologyEvaluationEOService> { public class LawsTechnologyEvaluationEOController extends JeroController<LawsTechnologyEvaluationEO, ILawsTechnologyEvaluationEOService> {
@Autowired @Autowired
private ILawsTechnologyEvaluationEOService lawsTechnologyEvaluationEOService; private ILawsTechnologyEvaluationEOService lawsTechnologyEvaluationEOService;
@Autowired
private ISysUserService sysUserService;
@Autowired
private ILawsTechnologyEvaluationFlowDetailEOService lawsTechnologyEvaluationFlowDetailEOService;
/** /**
* 分页列表查询 * 分页列表查询
@@ -60,6 +71,10 @@ public class LawsTechnologyEvaluationEOController extends JeroController<LawsTec
HttpServletRequest req) { HttpServletRequest req) {
QueryWrapper<LawsTechnologyEvaluationEO> queryWrapper = QueryGenerator.initQueryWrapper(lawsTechnologyEvaluationEO, req.getParameterMap()); QueryWrapper<LawsTechnologyEvaluationEO> queryWrapper = QueryGenerator.initQueryWrapper(lawsTechnologyEvaluationEO, req.getParameterMap());
queryWrapper.orderByDesc("start_time"); queryWrapper.orderByDesc("start_time");
boolean administrator = this.sysUserService.isAdministrator();
if(!administrator){
this.lawsTechnologyEvaluationEOService.createQueryPermission(queryWrapper,lawsTechnologyEvaluationEO,administrator);
}
Page<LawsTechnologyEvaluationEO> page = new Page<LawsTechnologyEvaluationEO>(pageNo, pageSize); Page<LawsTechnologyEvaluationEO> page = new Page<LawsTechnologyEvaluationEO>(pageNo, pageSize);
IPage<LawsTechnologyEvaluationEO> pageList = lawsTechnologyEvaluationEOService.page(page, queryWrapper); IPage<LawsTechnologyEvaluationEO> pageList = lawsTechnologyEvaluationEOService.page(page, queryWrapper);
this.lawsTechnologyEvaluationEOService.disposeData(pageList.getRecords(),cut); this.lawsTechnologyEvaluationEOService.disposeData(pageList.getRecords(),cut);
@@ -149,4 +149,7 @@ public class LawsTechnologyEvaluationEO implements Serializable {
@ApiModelProperty(value = "流程编号") @ApiModelProperty(value = "流程编号")
private String prcNum; private String prcNum;
/**删除标识 true 可以删除,false,没有权限删除**/
@TableField(exist = false)
private boolean deleteFlag = false;
} }
@@ -1,6 +1,7 @@
package com.jero.modules.lawsTechnologyEvaluation.service; package com.jero.modules.lawsTechnologyEvaluation.service;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.jero.common.api.vo.Result; import com.jero.common.api.vo.Result;
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationEO; import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationEO;
@@ -92,4 +93,6 @@ public interface ILawsTechnologyEvaluationEOService extends IService<LawsTechnol
void workFlowSendMsg(JSONObject jsonObject); void workFlowSendMsg(JSONObject jsonObject);
Result<?> batchCompleteTask(JSONObject jsonObject); Result<?> batchCompleteTask(JSONObject jsonObject);
void createQueryPermission(QueryWrapper<LawsTechnologyEvaluationEO> queryWrapper, LawsTechnologyEvaluationEO lawsTechnologyEvaluationEO,boolean administrator);
} }
@@ -9,6 +9,7 @@ import com.jero.common.constant.enums.CutEnum;
import com.jero.common.constant.enums.MessageTypeEnum; import com.jero.common.constant.enums.MessageTypeEnum;
import com.jero.common.constant.enums.ModuleEnum; import com.jero.common.constant.enums.ModuleEnum;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.system.vo.LoginUser;
import com.jero.generater.modules.online.cgform.entity.OnlCgformField; import com.jero.generater.modules.online.cgform.entity.OnlCgformField;
import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServiceImpl; import com.jero.generater.modules.online.cgform.service.impl.OnlCgformFieldServiceImpl;
import com.jero.modules.document.enums.FieldTypeEnum; import com.jero.modules.document.enums.FieldTypeEnum;
@@ -39,6 +40,7 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.usermodel.*;
import org.apache.shiro.SecurityUtils;
import org.jeecg.modules.jmreport.common.constant.CommonConstant; import org.jeecg.modules.jmreport.common.constant.CommonConstant;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
@@ -229,6 +231,8 @@ public class LawsTechnologyEvaluationEOServiceImpl extends ServiceImpl<LawsTechn
@Override @Override
public void disposeData(List<LawsTechnologyEvaluationEO> datas, String cut) { public void disposeData(List<LawsTechnologyEvaluationEO> datas, String cut) {
if(CollectionUtils.isNotEmpty(datas)){ if(CollectionUtils.isNotEmpty(datas)){
boolean administrator = this.sysUserService.isAdministrator();
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
List<SysCategory> categoryList = sysCategoryService.list(); List<SysCategory> categoryList = sysCategoryService.list();
for (LawsTechnologyEvaluationEO data : datas) { for (LawsTechnologyEvaluationEO data : datas) {
if(StringUtils.isNotEmpty(data.getEvaluationMethods())){ if(StringUtils.isNotEmpty(data.getEvaluationMethods())){
@@ -244,6 +248,9 @@ public class LawsTechnologyEvaluationEOServiceImpl extends ServiceImpl<LawsTechn
String name = getTreeName(cut, categoryList, technologyTerritory); String name = getTreeName(cut, categoryList, technologyTerritory);
data.setTechnologyTerritoryName(name); data.setTechnologyTerritoryName(name);
} }
if(administrator || StringUtils.equals(data.getCreateBy(),currentUser.getUsername())){
data.setDeleteFlag(true);
}
} }
} }
} }
@@ -696,6 +703,29 @@ public class LawsTechnologyEvaluationEOServiceImpl extends ServiceImpl<LawsTechn
return new Result<>().success("手动结束成功!"); return new Result<>().success("手动结束成功!");
} }
@Override
public void createQueryPermission(QueryWrapper<LawsTechnologyEvaluationEO> queryWrapper, LawsTechnologyEvaluationEO lawsTechnologyEvaluationEO,boolean administrator) {
if(!administrator){
//如果不是超级管理员,获取自己创建的和所有参与过的法规技术评估数据。
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
QueryWrapper<LawsTechnologyEvaluationFlowDetailEO> flowDetailQueryWrap = new QueryWrapper<>();
flowDetailQueryWrap.lambda().eq(LawsTechnologyEvaluationFlowDetailEO::getEvaluatorId,currentUser.getId());
List<LawsTechnologyEvaluationFlowDetailEO> flowDetailEOList = this.lawsTechnologyEvaluationFlowDetailEOService.list(flowDetailQueryWrap);
if(CollectionUtils.isNotEmpty(flowDetailEOList)){
List<String> lawsTechnologyEvaluationIdList = flowDetailEOList.stream().map(LawsTechnologyEvaluationFlowDetailEO::getLawsTechnologyEvaluationId).distinct().collect(Collectors.toList());
queryWrapper.and(query -> {
query.eq("create_by",currentUser.getUsername());
query.or(q -> {
for (String lawsTechnologyEvaluationId : lawsTechnologyEvaluationIdList) {
q.or().like("id",lawsTechnologyEvaluationId);
}
});
});
}
}
}
private String getTreeName(String cut, List<SysCategory> categoryList, List<String> technologyTerritoryList) { private String getTreeName(String cut, List<SysCategory> categoryList, List<String> technologyTerritoryList) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
for (String technologyTerritory : technologyTerritoryList) { for (String technologyTerritory : technologyTerritoryList) {
@@ -13,6 +13,7 @@ import com.jero.modules.problemKnowledgeBase.service.IProblemKnowledgeBaseEOServ
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.modules.system.service.ISysUserService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController; import com.jero.common.system.base.controller.JeroController;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@@ -37,6 +38,8 @@ import com.jero.common.aspect.annotation.AutoLog;
public class ProblemKnowledgeBaseEOController extends JeroController<ProblemKnowledgeBaseEO, IProblemKnowledgeBaseEOService> { public class ProblemKnowledgeBaseEOController extends JeroController<ProblemKnowledgeBaseEO, IProblemKnowledgeBaseEOService> {
@Autowired @Autowired
private IProblemKnowledgeBaseEOService problemKnowledgeBaseEOService; private IProblemKnowledgeBaseEOService problemKnowledgeBaseEOService;
@Autowired
private ISysUserService sysUserService;
/** /**
* 分页列表查询 * 分页列表查询
@@ -54,6 +57,11 @@ public class ProblemKnowledgeBaseEOController extends JeroController<ProblemKnow
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) { HttpServletRequest req) {
boolean administrator = this.sysUserService.isAdministrator();
//如果当前登录人是超级管理员角色,进入到管理发布页面时,查询所有的数据,其它用户只能查询自己创建的数据。
if(administrator){
problemKnowledgeBaseEO.setCreateBy(null);
}
QueryWrapper<ProblemKnowledgeBaseEO> queryWrapper = QueryGenerator.initQueryWrapper(problemKnowledgeBaseEO, req.getParameterMap()); QueryWrapper<ProblemKnowledgeBaseEO> queryWrapper = QueryGenerator.initQueryWrapper(problemKnowledgeBaseEO, req.getParameterMap());
this.problemKnowledgeBaseEOService.createQueryPermission(queryWrapper,problemKnowledgeBaseEO); this.problemKnowledgeBaseEOService.createQueryPermission(queryWrapper,problemKnowledgeBaseEO);
queryWrapper.orderByDesc("create_time"); queryWrapper.orderByDesc("create_time");
@@ -1,6 +1,7 @@
package com.jero.modules.problemKnowledgeBase.entity; package com.jero.modules.problemKnowledgeBase.entity;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
@@ -156,7 +157,7 @@ public class ProblemKnowledgeBaseEO implements Serializable {
/**发布日期*/ /**发布日期*/
@Excel(name = "发布日期", width = 15) @Excel(name = "发布日期", width = 15)
@ApiModelProperty(value = "发布日期") @ApiModelProperty(value = "发布日期")
private java.lang.String releaseTime; private Date releaseTime;
/**点赞总数量*/ /**点赞总数量*/
@TableField(exist = false) @TableField(exist = false)
@@ -195,4 +196,9 @@ public class ProblemKnowledgeBaseEO implements Serializable {
/**附件展示数组*/ /**附件展示数组*/
@TableField(exist = false) @TableField(exist = false)
private List<OSSFile> accessoryFileNameList; private List<OSSFile> accessoryFileNameList;
/**发布状态*/
@Excel(name = "发布状态", width = 15)
@ApiModelProperty(value = "发布状态")
private String releaseStatus;
} }
@@ -24,6 +24,7 @@ import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.problemKnowledgeBase.entity.*; import com.jero.modules.problemKnowledgeBase.entity.*;
import com.jero.modules.problemKnowledgeBase.enums.CollectStatusEnum; import com.jero.modules.problemKnowledgeBase.enums.CollectStatusEnum;
import com.jero.modules.problemKnowledgeBase.enums.PraiseStatusEnum; import com.jero.modules.problemKnowledgeBase.enums.PraiseStatusEnum;
import com.jero.modules.problemKnowledgeBase.enums.ReleaseStatusEnum;
import com.jero.modules.problemKnowledgeBase.enums.ShowPermissionsEnum; import com.jero.modules.problemKnowledgeBase.enums.ShowPermissionsEnum;
import com.jero.modules.problemKnowledgeBase.mapper.ProblemKnowledgeBaseEOMapper; import com.jero.modules.problemKnowledgeBase.mapper.ProblemKnowledgeBaseEOMapper;
import com.jero.modules.problemKnowledgeBase.service.*; import com.jero.modules.problemKnowledgeBase.service.*;
@@ -114,17 +115,19 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
Date now = new Date(); Date now = new Date();
problemKnowledgeBaseEO.setCreateTime(now); problemKnowledgeBaseEO.setCreateTime(now);
problemKnowledgeBaseEO.setUpdateTime(now); problemKnowledgeBaseEO.setUpdateTime(now);
save(problemKnowledgeBaseEO);
//如果该条问题知识库的展示权限为私密,则创建权限表数据 //如果该条问题知识库的展示权限为私密,则创建权限表数据
if(StringUtils.equals(problemKnowledgeBaseEO.getShowPermissions(), ShowPermissionsEnum.PRIVACY.getValue())){ if(StringUtils.equals(problemKnowledgeBaseEO.getShowPermissions(), ShowPermissionsEnum.PRIVACY.getValue())){
this.batchInsertProblemKnowledgeBaseUserEO(problemKnowledgeBaseEO); this.batchInsertProblemKnowledgeBaseUserEO(problemKnowledgeBaseEO);
} }
/*else { //如果是已发布,将数据更新到es中。
//如果展示权限是公开,则把该数据插入到搜索中心中。 if(StringUtils.equals(problemKnowledgeBaseEO.getReleaseStatus(), ReleaseStatusEnum.HAVE_RELEASED.getValue())){
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
problemKnowledgeBaseEO.setReleaseUserId(currentUser.getId());
problemKnowledgeBaseEO.setReleaseTime(now);
this.addOrUpdateElasticsearch(problemKnowledgeBaseEO); this.addOrUpdateElasticsearch(problemKnowledgeBaseEO);
}*/ }
this.addOrUpdateElasticsearch(problemKnowledgeBaseEO); save(problemKnowledgeBaseEO);
} }
/** /**
@@ -382,9 +385,9 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
} }
if(StringUtils.isNotEmpty(fileText)){ if(StringUtils.isNotEmpty(fileText)){
sbEn.append("Accessory File content" + ":" + fileText + " "); sbEn.append("Attachment" + ":" + fileText + " ");
}else { }else {
sbEn.append("Accessory File content" + ":" + "-- "); sbEn.append("Attachment" + ":" + "-- ");
} }
} }
} }
@@ -435,15 +438,23 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
public void editById(ProblemKnowledgeBaseEO problemKnowledgeBaseEO) { public void editById(ProblemKnowledgeBaseEO problemKnowledgeBaseEO) {
Date now = new Date(); Date now = new Date();
problemKnowledgeBaseEO.setUpdateTime(now); problemKnowledgeBaseEO.setUpdateTime(now);
saveOrUpdate(problemKnowledgeBaseEO);
//如果该条问题知识库的展示权限为私密,则创建权限表数据 //如果该条问题知识库的展示权限为私密,则创建权限表数据
if(StringUtils.equals(problemKnowledgeBaseEO.getShowPermissions(), ShowPermissionsEnum.PRIVACY.getValue())){ if(StringUtils.equals(problemKnowledgeBaseEO.getShowPermissions(), ShowPermissionsEnum.PRIVACY.getValue())){
this.batchInsertProblemKnowledgeBaseUserEO(problemKnowledgeBaseEO); this.batchInsertProblemKnowledgeBaseUserEO(problemKnowledgeBaseEO);
//this.deleteElasticsearchData(problemKnowledgeBaseEO.getId());
} }
this.addOrUpdateElasticsearch(problemKnowledgeBaseEO); //如果是已发布,将数据更新到es中。
if(StringUtils.equals(problemKnowledgeBaseEO.getReleaseStatus(), ReleaseStatusEnum.HAVE_RELEASED.getValue())){
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
problemKnowledgeBaseEO.setReleaseUserId(currentUser.getId());
problemKnowledgeBaseEO.setReleaseTime(now);
this.addOrUpdateElasticsearch(problemKnowledgeBaseEO);
}else if(StringUtils.equals(problemKnowledgeBaseEO.getReleaseStatus(), ReleaseStatusEnum.DRAFT.getValue())){
//如果是草稿,将es中的数据删掉。
this.deleteElasticsearchData(problemKnowledgeBaseEO.getId());
}
saveOrUpdate(problemKnowledgeBaseEO);
} }
/** /**
@@ -750,26 +761,32 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
@Override @Override
public void createQueryPermission(QueryWrapper<ProblemKnowledgeBaseEO> queryWrapper,ProblemKnowledgeBaseEO problemKnowledgeBaseEO) { public void createQueryPermission(QueryWrapper<ProblemKnowledgeBaseEO> queryWrapper,ProblemKnowledgeBaseEO problemKnowledgeBaseEO) {
/** /**
* 查询权限 * 2022-10-13增加权限,超级管理员可以看到所有的问题知识库数据。
* 公开:所有人都可以看到。
* 私密:只有配置了的权限用户可以看到。
*/ */
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); boolean administrator = this.sysUserService.isAdministrator();
QueryWrapper<ProblemKnowledgeBaseUserEO> userPermissionQueryWrapper = new QueryWrapper<>(); if(!administrator){
userPermissionQueryWrapper.lambda().eq(ProblemKnowledgeBaseUserEO::getUserId,currentUser.getId()); /**
List<ProblemKnowledgeBaseUserEO> problemKnowledgeBaseUserEOList = problemKnowledgeBaseUserEOService.list(userPermissionQueryWrapper); * 查询权限
* 公开:所有人都可以看到。
* 私密:只有配置了的权限用户可以看到。
*/
LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
QueryWrapper<ProblemKnowledgeBaseUserEO> userPermissionQueryWrapper = new QueryWrapper<>();
userPermissionQueryWrapper.lambda().eq(ProblemKnowledgeBaseUserEO::getUserId,currentUser.getId());
List<ProblemKnowledgeBaseUserEO> problemKnowledgeBaseUserEOList = problemKnowledgeBaseUserEOService.list(userPermissionQueryWrapper);
List<String> problemKnowledgeBaseIdList = problemKnowledgeBaseUserEOList.stream().map(ProblemKnowledgeBaseUserEO::getProblemKnowledgeBaseId).distinct().collect(Collectors.toList()); List<String> problemKnowledgeBaseIdList = problemKnowledgeBaseUserEOList.stream().map(ProblemKnowledgeBaseUserEO::getProblemKnowledgeBaseId).distinct().collect(Collectors.toList());
queryWrapper.lambda().and(query -> { queryWrapper.lambda().and(query -> {
query.eq(ProblemKnowledgeBaseEO::getShowPermissions,ShowPermissionsEnum.OPEN.getValue()); query.eq(ProblemKnowledgeBaseEO::getShowPermissions,ShowPermissionsEnum.OPEN.getValue());
if(CollectionUtils.isNotEmpty(problemKnowledgeBaseIdList)){ if(CollectionUtils.isNotEmpty(problemKnowledgeBaseIdList)){
query.or(o -> { query.or(o -> {
o.eq(ProblemKnowledgeBaseEO::getShowPermissions,ShowPermissionsEnum.PRIVACY.getValue()); o.eq(ProblemKnowledgeBaseEO::getShowPermissions,ShowPermissionsEnum.PRIVACY.getValue());
o.in(ProblemKnowledgeBaseEO::getId,problemKnowledgeBaseIdList); o.in(ProblemKnowledgeBaseEO::getId,problemKnowledgeBaseIdList);
}); });
} }
}); });
}
String searchStr = problemKnowledgeBaseEO.getSearchStr(); String searchStr = problemKnowledgeBaseEO.getSearchStr();
if(StringUtils.isNotEmpty(searchStr)){ if(StringUtils.isNotEmpty(searchStr)){
@@ -1,6 +1,7 @@
package com.jero.modules.report.controller; package com.jero.modules.report.controller;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result; import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog; import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.system.base.controller.JeroController; import com.jero.common.system.base.controller.JeroController;
@@ -62,9 +63,29 @@ public class LawsMonthlyReportWriteEOController extends JeroController<LawsMonth
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize, @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
HttpServletRequest req) { HttpServletRequest req) {
IPage<LawsMonthlyReportWriteEO> pageList = lawsMonthlyReportWriteEOService.getPageInfo(lawsMonthlyReportWriteEO, pageNo,pageSize,req); List<LawsMonthlyReportWriteEO> listInfo = lawsMonthlyReportWriteEOService.getListInfo(lawsMonthlyReportWriteEO, pageNo, pageSize, req);
return Result.OK(pageList); Page pages = lawsMonthlyReportWriteEOService.getPages(pageNo, pageSize, listInfo);
return Result.OK(pages);
} }
// /**
// * 分页列表查询
// *
// * @param lawsMonthlyReportWriteEO
// * @param pageNo
// * @param pageSize
// * @param req
// * @return
// */
// @AutoLog(value = "月报填写-分页列表查询")
// @ApiOperation(value="月报填写-分页列表查询", notes="月报填写-分页列表查询")
// @GetMapping(value = "/page")
// public Result<?> queryPageList(LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO,
// @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
// @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
// HttpServletRequest req) {
// IPage<LawsMonthlyReportWriteEO> pageList = lawsMonthlyReportWriteEOService.getPageInfo(lawsMonthlyReportWriteEO, pageNo,pageSize,req);
// return Result.OK(pageList);
// }
/** /**
* 列表查询 * 列表查询
@@ -13,7 +13,6 @@ import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel; import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -29,7 +28,7 @@ import java.util.List;
@Accessors(chain = true) @Accessors(chain = true)
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@ApiModel(value="laws_monthly_report_title_template对象", description="月报标题模板") @ApiModel(value="laws_monthly_report_title_template对象", description="月报标题模板")
public class LawsMonthlyReportTitleTemplateEO implements Serializable { public class LawsMonthlyReportTitleTemplateEO implements Comparable<LawsMonthlyReportTitleTemplateEO> {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**主键*/ /**主键*/
@@ -84,4 +83,10 @@ public class LawsMonthlyReportTitleTemplateEO implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private String key; private String key;
@Override
public int compareTo(LawsMonthlyReportTitleTemplateEO o) {
return this.sort-o.sort;//升序
// return o.id-this.id;//降序
}
} }
@@ -7,8 +7,8 @@ package com.jero.modules.report.enums;
* @auth zhn * @auth zhn
*/ */
public enum ExportStateEnum { public enum ExportStateEnum {
NOT_EXPORT("未导出","Not export","1"), NOT_EXPORT("未导出","Not exported","1"),
HAS_BEEN_EXPORT("已导出","Has been export","2"); HAS_BEEN_EXPORT("已导出","Exported","2");
String name; String name;
@@ -1,6 +1,7 @@
package com.jero.modules.report.service; package com.jero.modules.report.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.report.entity.LawsMonthlyReportWriteEO; import com.jero.modules.report.entity.LawsMonthlyReportWriteEO;
@@ -72,7 +73,11 @@ public interface ILawsMonthlyReportWriteEOService extends IService<LawsMonthlyRe
* @param req * @param req
* @return * @return
*/ */
IPage<LawsMonthlyReportWriteEO> getPageInfo(LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO, // IPage<LawsMonthlyReportWriteEO> getPageInfo(LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO,
// Integer pageNo,
// Integer pageSize,
// HttpServletRequest req);
List<LawsMonthlyReportWriteEO> getListInfo(LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO,
Integer pageNo, Integer pageNo,
Integer pageSize, Integer pageSize,
HttpServletRequest req); HttpServletRequest req);
@@ -82,4 +87,6 @@ public interface ILawsMonthlyReportWriteEOService extends IService<LawsMonthlyRe
LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO); LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO);
IPage queryPageDocument(Map<String, Object> parameter); IPage queryPageDocument(Map<String, Object> parameter);
Page getPages(Integer currentPage, Integer pageSize, List<LawsMonthlyReportWriteEO> list);
} }
@@ -60,8 +60,10 @@ import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -288,7 +290,7 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl<LawsMonthly
} }
@Override @Override
public IPage<LawsMonthlyReportWriteEO> getPageInfo(LawsMonthlyReportWriteEO lawsMonthlyReportWriteEOTemp, public List<LawsMonthlyReportWriteEO> getListInfo(LawsMonthlyReportWriteEO lawsMonthlyReportWriteEOTemp,
Integer pageNo, Integer pageNo,
Integer pageSize, Integer pageSize,
HttpServletRequest req) { HttpServletRequest req) {
@@ -300,11 +302,48 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl<LawsMonthly
if(!rolesList.contains(ProjectRoleEnum.ADMIN.getCode())){ if(!rolesList.contains(ProjectRoleEnum.ADMIN.getCode())){
queryWrapper.in("create_by",currentUser.getUsername()); queryWrapper.in("create_by",currentUser.getUsername());
} }
Page<LawsMonthlyReportWriteEO> page = new Page<LawsMonthlyReportWriteEO>(pageNo, pageSize); // Page<LawsMonthlyReportWriteEO> page = new Page<LawsMonthlyReportWriteEO>(pageNo, pageSize);
Page<LawsMonthlyReportWriteEO> pageInfo = this.page(page, queryWrapper); // Page<LawsMonthlyReportWriteEO> pageInfo = this.page(page, queryWrapper);
//所有的月报
List<LawsMonthlyReportWriteEO> lawsMonthlyReportWriteEOList = this.list(queryWrapper);
//所有月报的一级目录
List<String> oneMenuIdLIst = lawsMonthlyReportWriteEOList.stream().map(LawsMonthlyReportWriteEO::getMemoriesChapterOne).distinct().collect(Collectors.toList());
//月报标题模板
LambdaQueryWrapper<LawsMonthlyReportTitleTemplateEO> wrapperTemp = new LambdaQueryWrapper<>();
wrapperTemp.orderByAsc(LawsMonthlyReportTitleTemplateEO::getSort);
List<LawsMonthlyReportTitleTemplateEO> list = lawsMonthlyReportTitleTemplateEOService.list(wrapperTemp);
//1. 一级目录
List<LawsMonthlyReportTitleTemplateEO> oneList = list.stream().filter(e -> StringUtils.isBlank(e.getParentId())).collect(Collectors.toList());
oneList = oneList.stream().filter(e -> oneMenuIdLIst.contains(e.getId())).collect(Collectors.toList());
Collections.sort(oneList);//正序排序
List<LawsMonthlyReportWriteEO> lawsMonthlyReportWriteEOS = new LinkedList<>();
for (LawsMonthlyReportTitleTemplateEO lawsMonthlyReportTitleTemplateEO : oneList) {
String oneId = lawsMonthlyReportTitleTemplateEO.getId();
//一级目录下的二级目录
List<LawsMonthlyReportTitleTemplateEO> twoList = list.stream().filter(e -> StringUtils.isNotBlank(e.getParentId()) && oneId.equals(e.getParentId())).collect(Collectors.toList());
Collections.sort(twoList);//正序排序
//一级目录下的月报
for (LawsMonthlyReportTitleTemplateEO monthlyReportTitleTemplateEO : twoList) {
for (LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO : lawsMonthlyReportWriteEOList) {
if(oneId.equals(lawsMonthlyReportWriteEO.getMemoriesChapterOne()) && monthlyReportTitleTemplateEO.getId().equals(lawsMonthlyReportWriteEO.getMemoriesChapter())){
lawsMonthlyReportWriteEOS.add(lawsMonthlyReportWriteEO);
}
}
}
// List<LawsMonthlyReportWriteEO> lawsMonthlyReportWriteEOListOne = lawsMonthlyReportWriteEOList.stream()
// .filter(e -> oneId.equals(e.getMemoriesChapterOne())).collect(Collectors.toList());
// lawsMonthlyReportWriteEOS.addAll(lawsMonthlyReportWriteEOListOne);
}
//法规月报id //法规月报id
List<String> lawsMonthlyReportIdList = pageInfo.getRecords().stream().map(LawsMonthlyReportWriteEO::getId).collect(Collectors.toList()); List<String> lawsMonthlyReportIdList = lawsMonthlyReportWriteEOS.stream().map(LawsMonthlyReportWriteEO::getId).collect(Collectors.toList());
List<String> userIdList = pageInfo.getRecords().stream().map(LawsMonthlyReportWriteEO::getLawsContact).collect(Collectors.toList()); List<String> userIdList = lawsMonthlyReportWriteEOS.stream().map(LawsMonthlyReportWriteEO::getLawsContact).collect(Collectors.toList());
List<String> userIds = new ArrayList<>(); List<String> userIds = new ArrayList<>();
for (String s : userIdList) { for (String s : userIdList) {
if(StringUtils.isNotBlank(s)){ if(StringUtils.isNotBlank(s)){
@@ -343,7 +382,7 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl<LawsMonthly
} }
for (LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO : pageInfo.getRecords()) { for (LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO : lawsMonthlyReportWriteEOS) {
//处理法规联系人 //处理法规联系人
lawsContact(userList, lawsMonthlyReportWriteEO,lawsMonthlyReportWriteEOTemp.getCut()); lawsContact(userList, lawsMonthlyReportWriteEO,lawsMonthlyReportWriteEOTemp.getCut());
//处理章节目录 //处理章节目录
@@ -398,8 +437,121 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl<LawsMonthly
} }
} }
} }
return pageInfo; return lawsMonthlyReportWriteEOS;
} }
// @Override
// public IPage<LawsMonthlyReportWriteEO> getPageInfo(LawsMonthlyReportWriteEO lawsMonthlyReportWriteEOTemp,
// Integer pageNo,
// Integer pageSize,
// HttpServletRequest req) {
// QueryWrapper<LawsMonthlyReportWriteEO> queryWrapper = QueryGenerator.initQueryWrapper(lawsMonthlyReportWriteEOTemp, req.getParameterMap());
// queryWrapper.orderByDesc("memories_chapter_one","memories_chapter","create_time");
// //管理员查看全部数据,其余人只能查看自己的数据
// LoginUser currentUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// List<String> rolesList = sysBaseApi.getRolesByUsername(currentUser.getUsername());
// if(!rolesList.contains(ProjectRoleEnum.ADMIN.getCode())){
// queryWrapper.in("create_by",currentUser.getUsername());
// }
// Page<LawsMonthlyReportWriteEO> page = new Page<LawsMonthlyReportWriteEO>(pageNo, pageSize);
// Page<LawsMonthlyReportWriteEO> pageInfo = this.page(page, queryWrapper);
// //法规月报id
// List<String> lawsMonthlyReportIdList = pageInfo.getRecords().stream().map(LawsMonthlyReportWriteEO::getId).collect(Collectors.toList());
// List<String> userIdList = pageInfo.getRecords().stream().map(LawsMonthlyReportWriteEO::getLawsContact).collect(Collectors.toList());
// List<String> userIds = new ArrayList<>();
// for (String s : userIdList) {
// if(StringUtils.isNotBlank(s)){
// if(s.contains(",")){
// userIds.addAll(Arrays.asList(s.split(",")));
// }else{
// userIds.add(s);
// }
// }
// }
// List<JSONObject> jsonObjects = sysBaseApi.queryUsersByIds(StringUtils.join(userIds, ","));
// List<LoginUser> userList = new ArrayList<>();
// for (JSONObject jsonObject : jsonObjects) {
// LoginUser loginUser = JSONObject.parseObject(jsonObject.toJSONString(), LoginUser.class);
// userList.add(loginUser);
// }
//
// //获取章节目录
// List<LawsMonthlyReportTitleTemplateEO> lawsMonthlyReportTitleTemplateEOList = lawsMonthlyReportTitleTemplateEOService.list();
//
// //新征求意见清单模板
// List<NewOpinionTemplateEO> newOpinionTemplateEOList = new ArrayList<>();
// if(lawsMonthlyReportIdList.size() != 0){
// LambdaQueryWrapper<NewOpinionTemplateEO> wrapper = new LambdaQueryWrapper<>();
// wrapper.in(NewOpinionTemplateEO::getLawsMonthlyReportWriteId,lawsMonthlyReportIdList);
// newOpinionTemplateEOList = iNewOpinionTemplateEOService.list(wrapper);
// }
//
//
// //新发布标准清单模板
// List<NewStandardTemplateEO> newStandardTemplateEOList = new ArrayList<>();
// if(lawsMonthlyReportIdList.size() != 0){
// LambdaQueryWrapper<NewStandardTemplateEO> qrapperTemp = new LambdaQueryWrapper<>();
// qrapperTemp.in(NewStandardTemplateEO::getLawsMonthlyReportWriteId,lawsMonthlyReportIdList);
// newStandardTemplateEOList = iNewStandardTemplateEOService.list(qrapperTemp);
// }
//
//
// for (LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO : pageInfo.getRecords()) {
// //处理法规联系人
// lawsContact(userList, lawsMonthlyReportWriteEO,lawsMonthlyReportWriteEOTemp.getCut());
// //处理章节目录
// if(StringUtils.isNotBlank(lawsMonthlyReportWriteEO.getMemoriesChapter())){
// List<LawsMonthlyReportTitleTemplateEO> lawsMonthlyReportTitleTemplateEOS = lawsMonthlyReportTitleTemplateEOList.stream()
// .filter(e -> lawsMonthlyReportWriteEO.getMemoriesChapter().equals(e.getId())).collect(Collectors.toList());
// if(CutEnum.CN.getValue().equals(lawsMonthlyReportWriteEOTemp.getCut()) && lawsMonthlyReportTitleTemplateEOS.size() != 0){
// lawsMonthlyReportWriteEO.setMemoriesChapterName(lawsMonthlyReportTitleTemplateEOS.get(0).getTitleCn());
// }else if(CutEnum.EN.getValue().equals(lawsMonthlyReportWriteEOTemp.getCut()) && lawsMonthlyReportTitleTemplateEOS.size() != 0){
// lawsMonthlyReportWriteEO.setMemoriesChapterName(lawsMonthlyReportTitleTemplateEOS.get(0).getTitleEn());
// }
// }
// //处理章节目录对应的一级目录
// if(StringUtils.isNotBlank(lawsMonthlyReportWriteEO.getMemoriesChapterOne())){
// List<LawsMonthlyReportTitleTemplateEO> lawsMonthlyReportTitleTemplateEOS = lawsMonthlyReportTitleTemplateEOList.stream()
// .filter(e -> lawsMonthlyReportWriteEO.getMemoriesChapterOne().equals(e.getId())).collect(Collectors.toList());
// if(CutEnum.CN.getValue().equals(lawsMonthlyReportWriteEOTemp.getCut()) && lawsMonthlyReportTitleTemplateEOS.size() != 0){
// lawsMonthlyReportWriteEO.setMemoriesChapterOneName(lawsMonthlyReportTitleTemplateEOS.get(0).getTitleCn());
// }else if(CutEnum.EN.getValue().equals(lawsMonthlyReportWriteEOTemp.getCut()) && lawsMonthlyReportTitleTemplateEOS.size() != 0){
// lawsMonthlyReportWriteEO.setMemoriesChapterOneName(lawsMonthlyReportTitleTemplateEOS.get(0).getTitleEn());
// }
// }
//
// if(ContentTemplateEnum.NEW_REQUEST_LIST_TEMPLATE.getValue().equals(lawsMonthlyReportWriteEO.getContentTemplate())){
// //新征求意见清单模板
// List<NewOpinionTemplateEO> collect = newOpinionTemplateEOList.stream()
// .filter(e -> lawsMonthlyReportWriteEO.getId().equals(e.getLawsMonthlyReportWriteId())).collect(Collectors.toList());
// lawsMonthlyReportWriteEO.setNewOpinionTemplateEOList(collect);
//
// }else if(ContentTemplateEnum.NEW_RELEASE_STANDARD_MANIFEST_TEMPLATE.getValue().equals(lawsMonthlyReportWriteEO.getContentTemplate())){
// //新发布标准清单模板
// List<NewStandardTemplateEO> collect = newStandardTemplateEOList.stream()
// .filter(e -> lawsMonthlyReportWriteEO.getId().equals(e.getLawsMonthlyReportWriteId())).collect(Collectors.toList());
// lawsMonthlyReportWriteEO.setNewStandardTemplateEOList(collect);
// }
//
// //处理导出状态
// String exportState = lawsMonthlyReportWriteEO.getExportState();
// if(StringUtils.isNotBlank(exportState)){
// if(ExportStateEnum.NOT_EXPORT.getValue().equals(exportState)){
// if(CutEnum.CN.getValue().equals(lawsMonthlyReportWriteEOTemp.getCut())){
// lawsMonthlyReportWriteEO.setExportStateName(ExportStateEnum.NOT_EXPORT.getName());
// }else{
// lawsMonthlyReportWriteEO.setExportStateName(ExportStateEnum.NOT_EXPORT.getNameEn());
// }
// }else if(ExportStateEnum.HAS_BEEN_EXPORT.getValue().equals(exportState)){
// if(CutEnum.CN.getValue().equals(lawsMonthlyReportWriteEOTemp.getCut())){
// lawsMonthlyReportWriteEO.setExportStateName(ExportStateEnum.HAS_BEEN_EXPORT.getName());
// }else{
// lawsMonthlyReportWriteEO.setExportStateName(ExportStateEnum.HAS_BEEN_EXPORT.getNameEn());
// }
// }
// }
// }
// return pageInfo;
// }
private void lawsContact(List<LoginUser> userList, LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO,String cut) { private void lawsContact(List<LoginUser> userList, LawsMonthlyReportWriteEO lawsMonthlyReportWriteEO,String cut) {
String lawsContact = lawsMonthlyReportWriteEO.getLawsContact(); String lawsContact = lawsMonthlyReportWriteEO.getLawsContact();
@@ -881,11 +1033,30 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl<LawsMonthly
String flag = "cover"; String flag = "cover";
String moth = lawsMonthlyReportWriteEOS.get(0).getMonth().replaceAll("-", "年") + "月"; String moth = lawsMonthlyReportWriteEOS.get(0).getMonth().replaceAll("-", "年") + "月";
titleCN = "\r\n\r\n" + titleCN + "\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"; titleCN = "\r\n\r\n" + titleCN + "\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n";
WordUtil.exportWord(document, titleCN, null, ParagraphAlignment.CENTER, 0, 18, WordUtil.exportWord(document, titleCN, null, ParagraphAlignment.CENTER, 0, 18,
false, false, "Blue Sky Noto Regular",null,null,flag); false, false, "Blue Sky Noto Regular",null,null,flag);
WordUtil.exportWord(document, moth, null, ParagraphAlignment.CENTER, 0, 12, WordUtil.exportWord(document, moth, null, ParagraphAlignment.CENTER, 0, 12,
false, false, "Blue Sky Noto Regular",null,null,flag); false, false, "Blue Sky Noto Regular",null,null,flag);
String year = lawsMonthlyReportWriteEOS.get(0).getMonth().split("-")[0];
String mothNew = lawsMonthlyReportWriteEOS.get(0).getMonth().split("-")[1];
int mothLast = Integer.valueOf(mothNew) + 1;
//添加说明 2022/7/15 至 2022/8/14 期间发布的主要内容
String text = year + "/" + mothNew +"/15 至 "+year+"/"+mothLast+"/14期间发布的主要内容";
WordUtil.exportWord(document, text, null, ParagraphAlignment.CENTER, 0, 11,
false, false, "Blue Sky Noto Regular",null,null,flag);
//添加换行
WordUtil.exportWord(document, "\r\n", null, ParagraphAlignment.CENTER, 0, null,
false, false, null,null,null,flag);
//添加说明 编辑: 整车工程 - 法规与认证&环保与材料科团队
String text1 = "编辑: 整车工程 - 法规与认证&环保与材料科团队";
WordUtil.exportWord(document, text1, null, ParagraphAlignment.CENTER, 0, 11,
false, false, "Blue Sky Noto Regular",null,null,flag);
//添加下一页 //添加下一页
document.createParagraph().createRun().addBreak(BreakType.PAGE); document.createParagraph().createRun().addBreak(BreakType.PAGE);
} }
@@ -895,16 +1066,87 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl<LawsMonthly
XWPFDocument document) { XWPFDocument document) {
//封面标识 //封面标识
String flag = "cover"; String flag = "cover";
String moth = lawsMonthlyReportWriteEOS.get(0).getMonth().replaceAll("-", "年") + "月";
titleCN = "\r\n\r\n" + titleCN + "\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n"; String year = lawsMonthlyReportWriteEOS.get(0).getMonth().split("-")[0];
String mothNew = lawsMonthlyReportWriteEOS.get(0).getMonth().split("-")[1];
int mothLast = Integer.valueOf(mothNew) + 1;
String moth = mothNew+"/"+year;
String mothNewEn = getMothEn(mothNew);
String mothLastEn = getMothEn(String.valueOf(mothLast));
// String moth = lawsMonthlyReportWriteEOS.get(0).getMonth().replaceAll("-", "年") + "月";
titleCN = "\r\n\r\n" + titleCN + "\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n";
WordUtil.exportWord(document, titleCN, null, ParagraphAlignment.CENTER, 0, 18, WordUtil.exportWord(document, titleCN, null, ParagraphAlignment.CENTER, 0, 18,
false, false, "Blue Sky Noto Regular",null,null,flag); false, false, "Blue Sky Noto Regular",null,null,flag);
WordUtil.exportWord(document, moth, null, ParagraphAlignment.CENTER, 0, 12, WordUtil.exportWord(document, moth, null, ParagraphAlignment.CENTER, 0, 12,
false, false, "Blue Sky Noto Regular",null,null,flag); false, false, "Blue Sky Noto Regular",null,null,flag);
//添加说明 Update between July 15, 2022 and August 14, 2022
String text = "Update between "+mothNewEn+" 15,"+year+" and "+mothLastEn+" 14,"+year;
WordUtil.exportWord(document, text, null, ParagraphAlignment.CENTER, 0, 11,
false, false, "Blue Sky Noto Regular",null,null,flag);
//添加换行
WordUtil.exportWord(document, "\r\n", null, ParagraphAlignment.CENTER, 0, null,
false, false, null,null,null,flag);
//添加说明 编辑: 整车工程 - 法规与认证&环保与材料科团队
String text1 = "Edit By: Regulation & Homologation, Environmental & Materials Team";
WordUtil.exportWord(document, text1, null, ParagraphAlignment.CENTER, 0, 11,
false, false, "Blue Sky Noto Regular",null,null,flag);
//添加下一页 //添加下一页
document.createParagraph().createRun().addBreak(BreakType.PAGE); document.createParagraph().createRun().addBreak(BreakType.PAGE);
} }
private String getMothEn(String moth){
String result = "";
switch (moth) {
// 心跳检测
case "1":
result = "January";
break;
case "2":
result = "February";
break;
case "3":
result = "March";
break;
case "4":
result = "April";
break;
case "5":
result = "May";
break;
case "6":
result = "June";
break;
case "7":
result = "July";
break;
case "8":
result = "August";
break;
case "9":
result = "September";
break;
case "10":
result = "October";
break;
case "11":
result = "November";
break;
case "12":
result = "December";
break;
default:
break;
}
return result;
}
private void wordContent(List<LawsMonthlyReportWriteEO> lawsMonthlyReportWriteEOS, private void wordContent(List<LawsMonthlyReportWriteEO> lawsMonthlyReportWriteEOS,
List<LawsMonthlyReportTitleTemplateEO> lawsMonthlyReportTitleTemplateEOS, List<LawsMonthlyReportTitleTemplateEO> lawsMonthlyReportTitleTemplateEOS,
List<LawsMonthlyReportTitleTemplateEO> reportTitleOneList, List<LawsMonthlyReportTitleTemplateEO> reportTitleOneList,
@@ -1179,4 +1421,32 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl<LawsMonthly
return infoPage; return infoPage;
} }
public Page getPages(Integer currentPage, Integer pageSize, List<LawsMonthlyReportWriteEO> list){
Page page =new Page();
if(list==null){
return null;
}
int size = list.size();
if(pageSize > size){
pageSize = size;
}
if(pageSize!=0){
//求出最⼤页数,防⽌currentPage越界
int maxPage = size % pageSize ==0? size / pageSize : size / pageSize +1;
if(currentPage > maxPage){
currentPage = maxPage;
}
}
//当前页第⼀条数据的下标
int curIdx = currentPage >1?(currentPage -1)* pageSize :0;
List pageList =new ArrayList();
//将当前页的数据放进pageList
for(int i =0; i < pageSize && curIdx + i < size; i++){
pageList.add(list.get(curIdx + i));
}
page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList);
return page;
}
} }
@@ -454,7 +454,7 @@ public class WordUtil {
String applyScope = lawsMonthlyReportWriteEO.getApplyScope();//适用范围 String applyScope = lawsMonthlyReportWriteEO.getApplyScope();//适用范围
String state = lawsMonthlyReportWriteEO.getState();//状态 String state = lawsMonthlyReportWriteEO.getState();//状态
String useMethod = lawsMonthlyReportWriteEO.getUseMethod();//用法 String useMethod = lawsMonthlyReportWriteEO.getUseMethod();//用法
String implementCar = lawsMonthlyReportWriteEO.getImplementCar();//实施车型 // String implementCar = lawsMonthlyReportWriteEO.getImplementCar();//实施车型
String newCarImplementTime = lawsMonthlyReportWriteEO.getNewCarImplementTime();//新车型实施日期 String newCarImplementTime = lawsMonthlyReportWriteEO.getNewCarImplementTime();//新车型实施日期
String productionCarImplementTime = lawsMonthlyReportWriteEO.getProductionCarImplementTime();//在产车实施日期 String productionCarImplementTime = lawsMonthlyReportWriteEO.getProductionCarImplementTime();//在产车实施日期
String contentCn = lawsMonthlyReportWriteEO.getContentCn();//主要内容中文 String contentCn = lawsMonthlyReportWriteEO.getContentCn();//主要内容中文
@@ -504,7 +504,7 @@ public class WordUtil {
String stateName = dictItem(sysDictItems, state,cut, DictCodeReportEnum.STATE.getValue()); String stateName = dictItem(sysDictItems, state,cut, DictCodeReportEnum.STATE.getValue());
String useMethodName = dictItem(sysDictItems, useMethod,cut, DictCodeReportEnum.USEMETHOD.getValue()); String useMethodName = dictItem(sysDictItems, useMethod,cut, DictCodeReportEnum.USEMETHOD.getValue());
XWPFTable table = document.createTable(11, 2); XWPFTable table = document.createTable(10, 2);
//表格属性 //表格属性
CTTblPr tablePr = table.getCTTbl().addNewTblPr(); CTTblPr tablePr = table.getCTTbl().addNewTblPr();
//固定列宽(英文和数字的时候自动换行) //固定列宽(英文和数字的时候自动换行)
@@ -534,19 +534,19 @@ public class WordUtil {
//第5行 //第5行
setCellThree(table,3, "用法",useMethodName,sysDictItems,DictCodeReportEnum.USEMETHOD.getValue()); setCellThree(table,3, "用法",useMethodName,sysDictItems,DictCodeReportEnum.USEMETHOD.getValue());
//第6行 //第6行
setCell(table,4, "实施车型",implementCar); // setCell(table,4, "实施车型",implementCar);
//第7行 //第7行
setCell(table,5, "新车型实施日期",newCarImplementTime); setCell(table,4, "新车型实施日期",newCarImplementTime);
//第8行 //第8行
setCell(table,6, "在产车实施日期",productionCarImplementTime); setCell(table,5, "在产车实施日期",productionCarImplementTime);
//第9行 //第9行
setCell(table,7, "主要内容",contentCn); setCell(table,6, "主要内容",contentCn);
//第10行 //第10行
setCell(table,8, "NIO工作进展",workProgressCn); setCell(table,7, "NIO工作进展",workProgressCn);
//第11行 //第11行
setCell(table,9, "法规联系人",lawsContact); setCell(table,8, "法规联系人",lawsContact);
//第12行 //第12行
setCell(table,10, "链接",link); setCell(table,9, "链接",link);
}else{ }else{
//第1行 //第1行
setCell(table,0, "Related Areas",technologyTerritoryName); setCell(table,0, "Related Areas",technologyTerritoryName);
@@ -559,19 +559,19 @@ public class WordUtil {
//第5行 //第5行
setCellThree(table,3,"Usage",useMethodName,sysDictItems,DictCodeReportEnum.APPLYSCOPE.getValue()); setCellThree(table,3,"Usage",useMethodName,sysDictItems,DictCodeReportEnum.APPLYSCOPE.getValue());
//第6行 //第6行
setCell(table,4,"Implementation Model",implementCar); // setCell(table,4,"Implementation Model",implementCar);
//第7行 //第7行
setCell(table,5,"New Type Execution Date",newCarImplementTime); setCell(table,4,"New Type Execution Date",newCarImplementTime);
//第8行 //第8行
setCell(table,6,"New Vehicle Execution Date",productionCarImplementTime); setCell(table,5,"New Vehicle Execution Date",productionCarImplementTime);
//第9行 //第9行
setCell(table,7,"Main Content",contentEn); setCell(table,6,"Main Content",contentEn);
//第10行 //第10行
setCell(table,8,"NIO Work Progress",workProgressEn); setCell(table,7,"NIO Work Progress",workProgressEn);
//第11行 //第11行
setCell(table,9,"Regulatory Contact",lawsContact); setCell(table,8,"Regulatory Contact",lawsContact);
//第12行 //第12行
setCell(table, 10,"Link",link); setCell(table, 9,"Link",link);
} }
// ctTblLayoutType.setType(STTblLayoutType.FIXED); // ctTblLayoutType.setType(STTblLayoutType.FIXED);
@@ -1040,7 +1040,7 @@ public class WordUtil {
for (String s : lawsContact.split(",")) { for (String s : lawsContact.split(",")) {
List<LoginUser> loginUserList = collect.stream().filter(e -> e.getId().equals(s)).collect(Collectors.toList()); List<LoginUser> loginUserList = collect.stream().filter(e -> e.getId().equals(s)).collect(Collectors.toList());
if(loginUserList.size() != 0){ if(loginUserList.size() != 0){
sb.append(loginUserList.get(0).getUsername()+","); sb.append(loginUserList.get(0).getRealname()+",");
} }
} }
if(com.jero.modules.system.util.StringUtils.isNotBlank(sb)){ if(com.jero.modules.system.util.StringUtils.isNotBlank(sb)){
@@ -1136,7 +1136,7 @@ public class WordUtil {
setBlank(text, run, sb, itemText); setBlank(text, run, sb, itemText);
} }
if("Usage".equals(fieldName)){ if("Usage".equals(fieldName)){
String itemText = "Constraint,Recommend,Installation Is Compliant"; String itemText = "Mandatory,Voluntary,Mandatory if fitted";
setBlank(text, run, sb, itemText); setBlank(text, run, sb, itemText);
} }
} }
@@ -1231,13 +1231,13 @@ public class WordUtil {
case "安装需符合": case "安装需符合":
blank = ""; blank = "";
break; break;
case "Constraint": case "Mandatory":
blank = " "; blank = " ";
break; break;
case "Recommend": case "Voluntary":
blank = " "; blank = " ";
break; break;
case "Installation Is Compliant": case "Mandatory if fitted":
blank = ""; blank = "";
break; break;
default: default:
+66 -59
View File
@@ -193,8 +193,13 @@ module.exports = {
OperationLog: 'Operation Log', OperationLog: 'Operation Log',
SearchLog: 'Search Log', SearchLog: 'Search Log',
enterSearchKeyword: 'Please enter a search keyword', enterSearchKeyword: 'Please enter a search keyword',
enterSearchContent:'Please enter Search Content',
enterStandard:'Please enter Number',
entertitle:'Please enter Title',
OperationType: 'Operation Type', OperationType: 'Operation Type',
selectOperationType: 'Please select Operation type', selectOperationType: 'Please select Operation type',
selectProblemClassification:'Please select Problem Classification',
selectMarket:'Please select Market',
RequestMethod: 'Request Method', RequestMethod: 'Request Method',
RequestParameters: 'Request Parameters', RequestParameters: 'Request Parameters',
logManagementPage: 'This is the log management page', logManagementPage: 'This is the log management page',
@@ -386,7 +391,7 @@ module.exports = {
DocumentComparison: 'Doc Comparison', DocumentComparison: 'Doc Comparison',
KnowledgeDatabase: 'Q&A Knowledge', KnowledgeDatabase: 'Q&A Knowledge',
StandardDetails: 'Standard Details', StandardDetails: 'Standard Details',
whole: 'Whole', whole: 'All',
DocumentLibrary: 'Document Library', DocumentLibrary: 'Document Library',
GeneralExportInformation: 'General export information', GeneralExportInformation: 'General export information',
CustomizeExportInformation: 'Customize export information', CustomizeExportInformation: 'Customize export information',
@@ -500,7 +505,7 @@ module.exports = {
ProcessName: 'Process Name', ProcessName: 'Process Name',
ProcessType: 'Process Type', ProcessType: 'Process Type',
AddProcess: 'Add Process', AddProcess: 'Add Process',
RelatedItems: 'Relevant Project', RelatedItems: 'Project',
Sponsor: 'Creator', Sponsor: 'Creator',
CurrentProcessor: 'Current Processor', CurrentProcessor: 'Current Processor',
LastProcessor: 'Last Processor', LastProcessor: 'Last Processor',
@@ -721,7 +726,7 @@ module.exports = {
directoryName: 'Catalogue Name', directoryName: 'Catalogue Name',
batch: 'Batch', batch: 'Batch',
uploadTime: 'Upload Time', uploadTime: 'Upload Time',
enclosure: 'Enclosure', enclosure: 'Attachments',
// 认证 // 认证
// 认证状态 // 认证状态
timeOperation: 'You have permission to operate this button.', timeOperation: 'You have permission to operate this button.',
@@ -916,7 +921,7 @@ module.exports = {
deliveryHistory: 'Delivery History', deliveryHistory: 'Delivery History',
projectDeliveryRequirements: 'Project delivery requirements', projectDeliveryRequirements: 'Project delivery requirements',
personLiableConfirm: 'PersonLiable Confirm', personLiableConfirm: 'PersonLiable Confirm',
complianceResults: 'Compliance Results', complianceResults: 'Feedback',
noData: 'No Data', noData: 'No Data',
confirmOperation: 'Confirm Operation', confirmOperation: 'Confirm Operation',
sponsorReview: 'Sponsor Review', sponsorReview: 'Sponsor Review',
@@ -983,25 +988,25 @@ module.exports = {
taskConfirmationResponsiblePerson: 'Task confirmation of responsible person', taskConfirmationResponsiblePerson: 'Task confirmation of responsible person',
or: 'or', or: 'or',
warningTime: 'Warning Time', warningTime: 'Warning Time',
RegulationMonthlyManagement: 'Regulation Monthly Management', RegulationMonthlyManagement: 'Manage Monthly Report',
RegulationMonthlyFill: 'Regulation Monthly Fill', RegulationMonthlyFill: 'Fill in Monthly Report',
RegulationMonthlyName: 'Regulation monthly name', RegulationMonthlyName: 'Report Name',
monthlyLanguage: 'Monthly Language', monthlyLanguage: 'Language',
releaseStatus: 'Release Status', releaseStatus: 'Release Status',
uploadedBy: 'Uploaded By', uploadedBy: 'Uploaded By',
uploadMonthly: 'Upload Monthly', uploadMonthly: 'Upload Report',
chapterContents: 'Chapter Contents', chapterContents: 'Chapter',
chineseTitle: 'Chinese Title', chineseTitle: 'Chinese Title',
englishTitle: 'English Title', englishTitle: 'English Title',
regulatoryContact: 'Regulatory Contact', regulatoryContact: 'Reg. Contact',
exportStatus: 'Export Status', exportStatus: 'Export Status',
monthlyTitleTemplate: 'Monthly Title Template', monthlyTitleTemplate: 'Title Template',
monthlyIntegrationAndExport: 'Monthly integration and export', monthlyIntegrationAndExport: 'Export Report',
addContent: 'Add Content', addContent: 'Add Content',
editContent: 'Edit Content', editContent: 'Edit Content',
viewContent: 'View Content', viewContent: 'View Content',
fillInTheMonth: 'Fill in the month', fillInTheMonth: 'Filled in (Month)',
monthSelection: 'Month Selection', monthSelection: 'Select Month',
bringInStandardInformation: 'Bring in standard Information', bringInStandardInformation: 'Bring in standard Information',
contentTemplate: 'Content Template', contentTemplate: 'Content Template',
moveUp: 'Move Up', moveUp: 'Move Up',
@@ -1009,32 +1014,32 @@ module.exports = {
vehicleType: 'Vehicle Type', vehicleType: 'Vehicle Type',
usage: 'Usage', usage: 'Usage',
implementationModel: 'Implementation Model', implementationModel: 'Implementation Model',
primaryCoverageCn: 'Primary Coverage (Cn)', primaryCoverageCn: 'Description (Cn)',
primaryCoverageEn: 'Primary Coverage (En)', primaryCoverageEn: 'Description (En)',
workProgressCn: 'NIO Work Progress (Cn)', workProgressCn: 'NIO Work Progress (Cn)',
workProgressEn: 'NIO Work Progress (En)', workProgressEn: 'NIO Work Progress (En)',
initiatingProcess: 'Initiating Process', initiatingProcess: 'Initiate Process',
collectResults: 'Collect Results', collectResults: 'Collect Results',
dateOfInitiation: 'Date Of Initiation', dateOfInitiation: 'Date Of Initiation',
closingDate: 'Closing Date', closingDate: 'Due Date',
viewProcess: 'View Process', viewProcess: 'View Process',
evaluationResults: 'Evaluation Results', evaluationResults: 'Evaluation Results',
Assessor: 'Assessor', Assessor: 'Assessor',
collectionOfRegulatoryOpinions: 'Collection Of Regulatory Opinions', collectionOfRegulatoryOpinions: 'Collection Of Regulatory Opinions',
collectionOfRegulatoryOpinionsProcess: 'Collection Of Regulatory Opinions Process', collectionOfRegulatoryOpinionsProcess: 'Collection Of Regulatory Opinions Process',
feedbackInformation: 'Feedback Information', feedbackInformation: 'Feedback',
relevantSections: 'Relevant Sections', relevantSections: 'Chapter',
questionsSuggestions: 'Questions Or Suggestions', questionsSuggestions: 'Questions/Suggestions',
reason: 'Reason', reason: 'Reason',
proposedTime: 'Proposed Time', proposedTime: 'Proposed Time',
feedbackPoint: 'Feedback Point', feedbackPoint: 'Feedback Point',
link: 'Link', link: 'Link',
planNoChinese: 'Plan No.', planNoChinese: 'Plan No.',
standardNameCn: 'Standard Name Cn', standardNameCn: 'Standard Title Cn',
standardNameEn: 'Standard Name En', standardNameEn: 'Standard Title En',
deadlineForComments: 'Deadline for comments', deadlineForComments: 'Deadline for Comments',
standardNo: 'Standard No', standardNo: 'Standard No',
implemenDate: 'Implementation Date', implemenDate: 'Effective Date',
// 上报库 // 上报库
Enable: 'Enable', Enable: 'Enable',
Latestupdatetime: 'Latest Update Time', Latestupdatetime: 'Latest Update Time',
@@ -1115,7 +1120,7 @@ module.exports = {
PreHomoNotification: 'Pre-Homo Notification', PreHomoNotification: 'Pre-Homo Notification',
ValidationComplianceNotification: 'Validation Compliance Notification', ValidationComplianceNotification: 'Validation Compliance Notification',
RegulationTaskConfirmationNotification: 'Regulation Task Confirmation Notification', RegulationTaskConfirmationNotification: 'Regulation Task Confirmation Notification',
evaluationMethod: 'Evaluation method', evaluationMethod: 'Check Method',
uploadRelevantMaterials: 'Upload relevant materials', uploadRelevantMaterials: 'Upload relevant materials',
processBackground: 'Process Background', processBackground: 'Process Background',
selectedStandard: 'Selected Standard', selectedStandard: 'Selected Standard',
@@ -1123,13 +1128,13 @@ module.exports = {
pleaseSelectStandardFirst: 'Please select a standard first', pleaseSelectStandardFirst: 'Please select a standard first',
RelevantMaterials: 'RelevantMaterials', RelevantMaterials: 'RelevantMaterials',
evaluatorFeedback: 'Evaluator Feedback', evaluatorFeedback: 'Evaluator Feedback',
nameTechnicalDocument: 'Name of technical document', nameTechnicalDocument: 'Technical Document',
chapter: 'Chapter', chapter: 'Chapter',
problemDescription: 'Problem Description', problemDescription: 'Problem Description',
filingExternalOpinions: 'Filing of external opinions', filingExternalOpinions: 'Filing of external opinions',
regulatoryTechnicalEvaluationResults: 'Regulatory technical evaluation results', regulatoryTechnicalEvaluationResults: 'Regulatory technical evaluation results',
initiateProcessForCurrentStandard: 'Initiate process for current standard', initiateProcessForCurrentStandard: 'Initiate process for current standard',
engineerFeedbackResults: 'Engineer feedback results', engineerFeedbackResults: 'Engineer Feedback',
fileExport: 'File Export', fileExport: 'File Export',
feedbackTime: 'Feedback Time', feedbackTime: 'Feedback Time',
regulatoryTechnologyAssessmentProcess: 'Regulatory technology assessment process', regulatoryTechnologyAssessmentProcess: 'Regulatory technology assessment process',
@@ -1147,29 +1152,30 @@ module.exports = {
releaseSituation: 'Release situation', releaseSituation: 'Release situation',
comparisonResults: 'Comparison results', comparisonResults: 'Comparison results',
Published: 'Published', Published: 'Published',
initiateComparison: 'Initiate comparison', initiateComparison: 'Initiate Comparison',
translationLanguage: 'Translation language', translationLanguage: 'Translation language',
translationResults: 'Translation results', translationResults: 'Translation results',
conversionTime: 'Conversion time', conversionTime: 'Conversion time',
category: 'Category', category: 'Category',
RegulatoryProcessEvaluationResults: 'Regulatory Process Evaluation Results', RegulatoryProcessEvaluationResults: 'Regulatory Process Evaluation Results',
ViewConformanceResults: 'View Conformance Results', ViewConformanceResults: 'View Conformance Results',
CommentsCollectionResultsForReference: 'Comments Collection Results For', CommentsCollectionResultsForReference: 'Opinion Collection Results',
TechnicalEvaluationResultsForReference: 'Technical Evaluation Results For', TechnicalEvaluationResultsForReference: 'Technical Assessment Results',
ComplianceConfirmationRecord: 'Compliance Confirmation Record', ComplianceConfirmationRecord: 'Compliance Confirmation Record',
complianceConfirmation: 'Compliance Confirmation', complianceConfirmation: 'Compliance Confirmation',
noComparisonDocumentSelected: 'No comparison document selected', noComparisonDocumentSelected: 'No comparison document selected',
RemarkInfo: 'Remarks Info', RemarkInfo: 'Remarks Info',
initiateDocumentComparison: 'Initiate Document Comparison', initiateDocumentComparison: 'Initiate Document Comparison',
comparativeComments: 'Comparative Comments', comparativeComments: 'Comparative Comments',
viewTheComparisonResults: 'View The Comparison Results', viewTheComparisonResults: 'View Results',
addFullTextComment: 'Add Full Text Comment', addFullTextComment: 'Full Text Comment',
turnOffAutomaticMatching: 'Turn Off Automatic Matching', turnOffAutomaticMatching: 'Turn Off Auto Match',
Deriveconformanceresults: 'Derive Conformance Results', Deriveconformanceresults: 'Export Results',
Regulatorycompliancekanban: 'Regulatory Compliance Kanban', Regulatorycompliancekanban: 'Regulatory Compliance Kanban',
exportComparisonReport: 'Export Comparison Report', exportComparisonReport: 'Export Comparison Report',
comparisonDifferenceComment: 'Comparison Difference Comment', comparisonDifferenceComment: 'Comparison Difference Comment',
fullTextComments: 'Full text comments', fullTextComments: 'Full Text Comment',
pleaseEnterfullTextComments:'Please enter Full Text Comment',
fileDeclaration: 'File Declaration', fileDeclaration: 'File Declaration',
FileForDetails: 'File For Details', FileForDetails: 'File For Details',
Converting: 'Converting', Converting: 'Converting',
@@ -1177,7 +1183,7 @@ module.exports = {
convertFailed: 'Convert Failed', convertFailed: 'Convert Failed',
standardData: 'Standard Data', standardData: 'Standard Data',
Theorganization: 'The Organization', Theorganization: 'The Organization',
Addingfolder: 'Adding a folder', Addingfolder: 'Create New Folder',
Addingsubfolders: 'Adding Subfolders', Addingsubfolders: 'Adding Subfolders',
Editfolder: 'Edit Folder', Editfolder: 'Edit Folder',
Deletefolders: 'Delete Folders', Deletefolders: 'Delete Folders',
@@ -1188,8 +1194,8 @@ module.exports = {
Openpersonnel: 'Open Personnel', Openpersonnel: 'Open Personnel',
originalText: 'Original Text', originalText: 'Original Text',
translatedText: 'Translated Text', translatedText: 'Translated Text',
Administrativeprivileges: 'Administrativ Pprivileges', Administrativeprivileges: 'Administrative Permissions',
Checkthepermissions: 'Check The Permissions', Checkthepermissions: 'Read Permissions',
onlyFilesUploaded: 'Only.Docx,.Doc files can be uploaded', onlyFilesUploaded: 'Only.Docx,.Doc files can be uploaded',
selectDirectorylocation: 'Please select the directory location to add the folder', selectDirectorylocation: 'Please select the directory location to add the folder',
Fileuploaded: 'File uploaded, please wait', Fileuploaded: 'File uploaded, please wait',
@@ -1199,10 +1205,10 @@ module.exports = {
Parametercollection: 'Parameter Collection', Parametercollection: 'Parameter Collection',
Collectlist: 'Colle Ctlist', Collectlist: 'Colle Ctlist',
Statisticalmodels: 'Statisti Calmodels', Statisticalmodels: 'Statisti Calmodels',
Inthecollection: 'In the collection', Inthecollection: 'During collection',
Notatthe: 'Not at the', Notatthe: 'Not started',
Thepercentage: 'The Percentage', Thepercentage: 'The Percentage',
problemKnowledgeBase: 'Problem Knowledge Base', problemKnowledgeBase: 'Q&A Knowledge',
recentHotSpots: 'Recent Hot Spots', recentHotSpots: 'Recent Hot Spots',
disseminationMaterials: 'Dissemination Materials', disseminationMaterials: 'Dissemination Materials',
informationSafety: 'Information Safety', informationSafety: 'Information Safety',
@@ -1211,36 +1217,37 @@ module.exports = {
productHighlights: 'Product Highlights', productHighlights: 'Product Highlights',
financialReimbursement: 'Financial Reimbursement', financialReimbursement: 'Financial Reimbursement',
classificationMaintenance: 'Classification Maintenance', classificationMaintenance: 'Classification Maintenance',
managePublishing: 'Manage Publishing', managePublishing: 'Release Management',
displayPermission: 'Display permission', displayPermission: 'Display Permission',
authorizedUser: 'Authorized user', authorizedUser: 'Authorized user',
problemClassification: 'Problem classification', problemClassification: 'Problem Classification',
market: 'Market', market: 'Market',
documentNumber: 'Document Number', documentNumber: 'Document Number',
documentTitle: 'Document Title', documentTitle: 'Document Title',
bringInDocumentInformation: 'Bring in document information', bringInDocumentInformation: 'Bring in document information',
addStandardInformation:'Add standard information',
thereWhichCannotDeleted: 'There are sub headings under this title, which cannot be deleted', thereWhichCannotDeleted: 'There are sub headings under this title, which cannot be deleted',
sdt: 'Sdt', sdt: 'Sdt',
dre: 'Dre', dre: 'Dre',
applicableInstructionsMarketList: 'Applicable instructions of market list', applicableInstructionsMarketList: 'Applicable instructions of market list',
pleaseSelectTheDataCompared: 'Please select the data to be compared', pleaseSelectTheDataCompared: 'Please select the data to be compared',
problemLabel: 'Problem label', problemLabel: 'Topic Tag',
personCharge: 'Person in charge', personCharge: 'Person in charge',
addLabel: 'Add Label', addLabel: 'Add Tag',
editLabel: 'Edit Label', editLabel: 'Edit Label',
applicableMarket: 'Applicable market', applicableMarket: 'Applicable Market',
templateMaintenance: 'Template maintenance', templateMaintenance: 'Template Maintenance',
associatedWebsite: 'Associated website', associatedWebsite: 'Associated website',
dropDownOptions: 'Drop down options', dropDownOptions: 'Drop down options',
dropDownOptionMaintenance: 'Drop down option maintenance', dropDownOptionMaintenance: 'Drop down option maintenance',
displayInformation: 'Display information', displayInformation: 'Display Information',
addComparison: 'Add comparison', addComparison: 'Add Comparison',
showOrNot: 'Show or not', showOrNot: 'Show or not',
comparisonMarket: 'Comparison Market', comparisonMarket: 'Comparison Market',
share: 'Share', share: 'Share',
simplifiedChinese:'Simplified Chinese', simplifiedChinese:'Simplified Chinese',
uploadOnly:'Upload only', uploadOnly:'Upload only',
turnOnAutoMatch:'Turn on auto match', turnOnAutoMatch:'Turn On Auto Match',
Adjustareasofresponsibility:'Adjust areas of responsibility', Adjustareasofresponsibility:'Adjust areas of responsibility',
regulatoryTechnicalAssessment:'Regulatory Technical Assessment', regulatoryTechnicalAssessment:'Regulatory Technical Assessment',
punctuationmark:'You can only enter English punctuation marks except the # sign and commas', punctuationmark:'You can only enter English punctuation marks except the # sign and commas',
@@ -1266,8 +1273,8 @@ module.exports = {
onlyTheDataWhoseStatusNotInitiatedAcceptedChanged:'Only the data whose list confirmation status is accepted and the task list status is not initiated or the task list status is accepted can be changed', onlyTheDataWhoseStatusNotInitiatedAcceptedChanged:'Only the data whose list confirmation status is accepted and the task list status is not initiated or the task list status is accepted can be changed',
thereTitleWhichCannotBeDeleted:'There are new contents under this title, which cannot be deleted', thereTitleWhichCannotBeDeleted:'There are new contents under this title, which cannot be deleted',
industryInformationDynamicTemplate:'Industry information dynamic template', industryInformationDynamicTemplate:'Industry information dynamic template',
relatedFields:'Related fields', relatedFields:'Relaevant Area',
relatedFieldsEn:'Related fields (English)', relatedFieldsEn:'Relaevant Area (English)',
source:'Source', source:'Source',
sourceEn:'Source (English)', sourceEn:'Source (English)',
onlyone:'Only one merge delimiter can be entered', onlyone:'Only one merge delimiter can be entered',
@@ -1307,9 +1314,9 @@ module.exports = {
inRecentYear2:'In recent 2 year', inRecentYear2:'In recent 2 year',
selectAll:'Select All', selectAll:'Select All',
importLocalDisassemblyOrder:'Import local disassembly order', importLocalDisassemblyOrder:'Import local disassembly order',
notExport:'Not export', notExport:'Not exported',
hasBeenExport:'Has been export', hasBeenExport:'Exported',
firstLevelDirectory:'First level directory', firstLevelDirectory:'Primary Directory',
deselectAll:'Deselect All', deselectAll:'Deselect All',
classification:'Classification', classification:'Classification',
consistentAssessment:'Consistent', consistentAssessment:'Consistent',
@@ -1318,6 +1325,6 @@ module.exports = {
viewAll:'View All', viewAll:'View All',
endProcess:'End Process', endProcess:'End Process',
thereForTheCurrentlySelectedData:'There is no standard breakdown for the currently selected data', thereForTheCurrentlySelectedData:'There is no standard breakdown for the currently selected data',
secondaryDirectory:'Secondary directory', secondaryDirectory:'Secondary Directory',
OnlyPersonsCanBeSelected:'The maximum upper limit is exceeded; Only 100 persons can be selected', OnlyPersonsCanBeSelected:'The maximum upper limit is exceeded; Only 100 persons can be selected',
} }
+7
View File
@@ -195,8 +195,13 @@ module.exports = {
OperationLog: '操作日志', OperationLog: '操作日志',
SearchLog: '搜索日志', SearchLog: '搜索日志',
enterSearchKeyword: '请输入搜索关键词', enterSearchKeyword: '请输入搜索关键词',
enterSearchContent:'请输入搜索内容',
enterStandard:'请输入编号',
enterTitle:'请输入标题',
OperationType: '操作类型', OperationType: '操作类型',
selectOperationType: '请选择操作类型', selectOperationType: '请选择操作类型',
selectProblemClassification:'请选择问题分类',
selectMarket:'请选择市场',
RequestMethod: '请求方法', RequestMethod: '请求方法',
RequestParameters: '请求参数', RequestParameters: '请求参数',
logManagementPage: '这是日志管理页面', logManagementPage: '这是日志管理页面',
@@ -1173,6 +1178,7 @@ module.exports = {
exportComparisonReport: '导出对比报告', exportComparisonReport: '导出对比报告',
comparisonDifferenceComment: '对比差异评论', comparisonDifferenceComment: '对比差异评论',
fullTextComments: '全文评论', fullTextComments: '全文评论',
pleaseEnterfullTextComments:'请输入全文评论',
fileDeclaration: '文件说明', fileDeclaration: '文件说明',
FileForDetails: '文件详情', FileForDetails: '文件详情',
Converting: '转换中', Converting: '转换中',
@@ -1321,6 +1327,7 @@ module.exports = {
documentNumber: '文档编号', documentNumber: '文档编号',
documentTitle: '文档标题', documentTitle: '文档标题',
bringInDocumentInformation: '带入文档信息', bringInDocumentInformation: '带入文档信息',
addStandardInformation:'添加标准信息',
thereWhichCannotDeleted: '该标题下存在子标题无法进行删除', thereWhichCannotDeleted: '该标题下存在子标题无法进行删除',
sdt: '工程接口人', sdt: '工程接口人',
dre: '填写人', dre: '填写人',
@@ -1,16 +1,33 @@
<template> <template>
<div> <div>
<div class="box-title-text" v-if="!isInput"> <div class="itemModelStand-select" v-if="!isInput">
<a-input class="box-input" :value="value" @input="indexclick($event)" <a-select
:disabled="true" class="itemModelStand-input"
:title="value" :value="valueSelect"
:placeholder="$t('PleaseSelect')+query.db_field_txt"/> @change="onChange"
mode="multiple"
:disabled="disabled"
:placeholder="$t('PleaseSelect')+query.db_field_txt"
:getPopupContainer="triggerNode=> triggerNode.parentNode">
<a-select-option
v-for="(item,index) in dictOptions"
:key="index"
:value="item.value">
<span class="itemOption" :title="item.title">
{{ item.title }}
</span>
</a-select-option>
</a-select>
<!-- <a-input class="box-input" :value="value" @input="indexclick($event)"-->
<!-- :disabled="true"-->
<!-- :title="value"-->
<!-- :placeholder="$t('PleaseSelect')+query.db_field_txt"/>-->
<a-button type="primary" class="button-box" :disabled="disabled" @click="standardClick"> <a-button type="primary" class="button-box" :disabled="disabled" @click="standardClick">
{{this.$t('PersonnelSelection')}} {{this.$t('PersonnelSelection')}}
</a-button> </a-button>
<a-button type="primary" v-if='isDelete' class="button-box" @click="standardDelete"> <!-- <a-button type="primary" v-if='isDelete' class="button-box" @click="standardDelete">-->
{{this.$t('delete')}} <!-- {{this.$t('delete')}}-->
</a-button> <!-- </a-button>-->
</div> </div>
<div class="box-title-text" v-if="isInput"> <div class="box-title-text" v-if="isInput">
<a-input :class="{'box-input':!isClass}" :value="value" <a-input :class="{'box-input':!isClass}" :value="value"
@@ -71,7 +88,6 @@
<a-button @click="handleSubmit" type="primary">{{$t('submit')}}</a-button> <a-button @click="handleSubmit" type="primary">{{$t('submit')}}</a-button>
</div> </div>
</a-drawer> </a-drawer>
</div> </div>
</template> </template>
@@ -91,6 +107,8 @@
return { return {
loading: false, loading: false,
gData: [], gData: [],
valueSelect: [],
dictOptions: [],
autoExpandParent: false, autoExpandParent: false,
checkboxList: [], checkboxList: [],
expandedKeys: [], expandedKeys: [],
@@ -111,7 +129,35 @@
} }
}, },
mounted() { mounted() {
this.valueSelect = []
this.dictOptions = []
setTimeout(() => {
if (this.value) {
let contentName = []
let contentId = []
if (this.personneQuery[this.query.db_field_name + 'Name']) {
contentName = this.personneQuery[this.query.db_field_name + 'Name'].split(',')
} else if (this.personneQuery[this.query.db_field_name]) {
contentName = this.personneQuery[this.query.db_field_name].split(',')
} else {
contentName = []
}
if (this.personneQuery[this.query.db_field_name + '_id']) {
contentId = this.personneQuery[this.query.db_field_name + '_id'].split(',')
} else if (this.personneQuery[this.query.db_field_name]) {
contentId = this.personneQuery[this.query.db_field_name].split(',')
} else {
contentId = []
}
contentId.forEach((res, index) => {
this.dictOptions.push({
value: res,
title: contentName[index]
})
this.valueSelect.push(res)
})
}
}, 600)
}, },
methods: { methods: {
// checkChange(val, checked, indeterminate) { // checkChange(val, checked, indeterminate) {
@@ -314,6 +360,28 @@
this.visible = false this.visible = false
this.treeVisible = false this.treeVisible = false
}, },
onChange(value) {
this.valueSelect = value
console.log(this.valueSelect)
console.log(this.dictOptions)
this.userIds = []
this.userName = []
if (this.valueSelect && this.valueSelect.length > 0) {
value.forEach(res => {
this.dictOptions.forEach(val => {
if (res == val.value) {
this.userIds.push(val.value)
this.userName.push(val.title)
}
})
})
}
let userIds = JSON.parse(JSON.stringify(this.userIds))
let userName = JSON.parse(JSON.stringify(this.userName))
console.log(userIds)
this.$emit('input', userName.join(','))
this.$emit('change', this.query.db_field_name, userIds.join(','), this.query.subscript)
},
handleSubmit() { handleSubmit() {
// if (this.userIds && this.userIds.length > 0) { // if (this.userIds && this.userIds.length > 0) {
if (this.isSingleChoice) { if (this.isSingleChoice) {
@@ -330,6 +398,19 @@
// userIds = userIds.filter(function(item, index) { // userIds = userIds.filter(function(item, index) {
// return userIds.indexOf(item) === index // 因为indexOf 只能查找到第一个 // return userIds.indexOf(item) === index // 因为indexOf 只能查找到第一个
// }) // })
if (!this.isInput) {
this.dictOptions = []
this.valueSelect = []
if (userIds && userIds.length > 0) {
userIds.forEach((res, index) => {
this.dictOptions.push({
title: userName[index],
value: res
})
this.valueSelect.push(res)
})
}
}
this.$emit('input', userName.join(',')) this.$emit('input', userName.join(','))
this.$emit('change', this.query.db_field_name, userIds.join(','), this.query.subscript) this.$emit('change', this.query.db_field_name, userIds.join(','), this.query.subscript)
this.visible = false this.visible = false
@@ -514,11 +595,18 @@
width: 100%; width: 100%;
} }
.itemModelStand-input {
width: calc(100% - 100px);
display: inline-block;
height: 38px;
}
.button-box { .button-box {
width: 90px;
margin-left: 10px; margin-left: 10px;
height: 38px; height: 38px;
line-height: 38px; line-height: 38px;
float: right;
} }
.drawer-bootom-button { .drawer-bootom-button {
@@ -590,4 +678,18 @@
color: #21c9cc; color: #21c9cc;
display: inline-block; display: inline-block;
} }
.itemOption {
display: inline-block;
width: 100%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
-o-text-overflow: ellipsis;
}
</style>
<style>
.itemModelStand-select .ant-select-dropdown--multiple {
display: none !important;
}
</style> </style>
@@ -150,6 +150,7 @@
</div> </div>
<a-form-model-item class="itemModel" :prop="item.db_field_name"> <a-form-model-item class="itemModel" :prop="item.db_field_name">
<PersonnelSelection :query="item" <PersonnelSelection :query="item"
v-if="isFormInline"
:personneQuery="formInline" :personneQuery="formInline"
@change="PersonnelSelectionChange" @change="PersonnelSelectionChange"
:disabled="disabled" :disabled="disabled"
@@ -11,7 +11,6 @@
:data-source="dataSource" :data-source="dataSource"
:loading="loading" :loading="loading"
sticky sticky
:components="components"
:columns="columns" :columns="columns"
:rowClassName="rowClassName" :rowClassName="rowClassName"
@change="tableOnChange" @change="tableOnChange"
@@ -34,6 +34,7 @@
</div> </div>
<a-form-model-item class="itemModel" prop="chargePersonIdName"> <a-form-model-item class="itemModel" prop="chargePersonIdName">
<PersonnelSelection <PersonnelSelection
v-if="visible"
:isSingleChoice="true" :isSingleChoice="true"
:query="{db_field_name:'chargePersonId',db_field_txt:$t('personCharge')}" :query="{db_field_name:'chargePersonId',db_field_txt:$t('personCharge')}"
:personneQuery="formInline" :personneQuery="formInline"
@@ -36,7 +36,9 @@
</a-form> </a-form>
</div> </div>
<div class="box-content-right"> <div class="box-content-right">
<div @click="managePublishingClick" class="operator-text"> <div @click="managePublishingClick"
v-has="'countryCard:managePublishing'"
class="operator-text">
<a-icon type="carry-out"/> <a-icon type="carry-out"/>
{{$t('managePublishing')}} {{$t('managePublishing')}}
</div> </div>
@@ -34,9 +34,10 @@
<span class="title-text-text" <span class="title-text-text"
:title="$t('problemClassification')">{{$t('problemClassification')}}</span> :title="$t('problemClassification')">{{$t('problemClassification')}}</span>
</div> </div>
<a-form-model-item class="itemModel" prop="problemType"> <a-form-model-item class="itemModel itemModel-multi" prop="problemType">
<a-select :placeholder="$t('PleaseSelect')+$t('problemClassification')" <a-select :placeholder="$t('PleaseSelect')+$t('problemClassification')"
@change="problemTypeChange" @change="problemTypeChange"
mode="multiple"
v-model="formInline.problemType"> v-model="formInline.problemType">
<a-select-option v-for="(item, key) in problemTypeList" <a-select-option v-for="(item, key) in problemTypeList"
:key="key" :key="key"
@@ -94,7 +95,7 @@
<span class="Required">*</span> <span class="Required">*</span>
<span class="title-text-text" :title="$t('authorizedUser')">{{$t('authorizedUser')}}</span> <span class="title-text-text" :title="$t('authorizedUser')">{{$t('authorizedUser')}}</span>
</div> </div>
<a-form-model-item class="itemModel" prop="studioEngineerName"> <a-form-model-item class="itemModel-multi" prop="studioEngineerName">
<PersonnelSelection :query="{db_field_name:'studioEngineer',db_field_txt:$t('authorizedUser')}" <PersonnelSelection :query="{db_field_name:'studioEngineer',db_field_txt:$t('authorizedUser')}"
:personneQuery="formInline" :personneQuery="formInline"
@change="PersonnelSelectionChange" @change="PersonnelSelectionChange"
@@ -125,9 +126,9 @@
</a-select-option> </a-select-option>
</a-select> </a-select>
<a-button class="box-button-index" <a-button class="box-button-index"
:title="$t('bringInDocumentInformation')" :title="$t('addStandardInformation')"
type="primary" @click="bringInDocumentInformationClick"> type="primary" @click="bringInDocumentInformationClick">
{{$t('bringInDocumentInformation')}} {{$t('addStandardInformation')}}
</a-button> </a-button>
</a-form-model-item> </a-form-model-item>
</div> </div>
@@ -178,7 +179,10 @@
</a-row> </a-row>
</a-form-model> </a-form-model>
<div class="submit-button"> <div class="submit-button">
<a-button class="box-button" type="primary" @click="submit">{{$t('submit')}}</a-button> <a-button class="box-button" type="primary" @click="submit('Draft')">
{{$t('tempSave')}}
</a-button>
<a-button class="box-button" type="primary" @click="submit('Have released')">{{$t('release')}}</a-button>
</div> </div>
</div> </div>
</div> </div>
@@ -356,7 +360,7 @@
document.title = this.$t('problemKnowledgeBase') + this.$t('edit') document.title = this.$t('problemKnowledgeBase') + this.$t('edit')
} else { } else {
this.isDisplayIndex = true this.isDisplayIndex = true
this.$nextTick(()=>{ this.$nextTick(() => {
this.myQuillEditor() this.myQuillEditor()
}) })
document.title = this.$t('problemKnowledgeBase') + this.$t('newlyAdded') document.title = this.$t('problemKnowledgeBase') + this.$t('newlyAdded')
@@ -476,6 +480,11 @@
} else { } else {
this.formInline.standNumber = [] this.formInline.standNumber = []
} }
if (this.formInline.problemType) {
this.formInline.problemType = this.formInline.problemType.split(',')
} else {
this.formInline.problemType = []
}
this.formInline = { ...this.formInline } this.formInline = { ...this.formInline }
} else { } else {
this.formInline = {} this.formInline = {}
@@ -491,7 +500,7 @@
this.$router.go(-1) this.$router.go(-1)
}, },
onEditorReady(quill) { onEditorReady(quill) {
if (this.formInlineOne.content){ if (this.formInlineOne.content) {
document.getElementsByClassName('ql-editor')[0].innerHTML = this.formInlineOne.content document.getElementsByClassName('ql-editor')[0].innerHTML = this.formInlineOne.content
} }
}, },
@@ -595,14 +604,20 @@
this.formInline[this.uploadName] = attIdList.join(',') this.formInline[this.uploadName] = attIdList.join(',')
this.formInline = { ...this.formInline } this.formInline = { ...this.formInline }
}, },
submit() { tempSaveClick(){
},
submit(releaseStatus) {
this.$refs.ruleForm.validate(valid => { this.$refs.ruleForm.validate(valid => {
if (valid) { if (valid) {
let formInline = JSON.parse(JSON.stringify(this.formInline)) let formInline = JSON.parse(JSON.stringify(this.formInline))
// if (formInline.standNumber && formInline.standNumber.length > 0) { // if (formInline.standNumber && formInline.standNumber.length > 0) {
if (formInline.standNumber instanceof Array){ if (formInline.standNumber instanceof Array) {
formInline.standNumber = formInline.standNumber.join(',') formInline.standNumber = formInline.standNumber.join(',')
} }
if (formInline.problemType instanceof Array) {
formInline.problemType = formInline.problemType.join(',')
}
// } // }
this.loading = true this.loading = true
this.confirmLoading = true this.confirmLoading = true
@@ -624,6 +639,7 @@
}) })
}) })
} }
formInline.releaseStatus = releaseStatus
Action(url, formInline).then((res) => { Action(url, formInline).then((res) => {
if (res.success) { if (res.success) {
this.$message.success(this.$t('OperationSuccessful')) this.$message.success(this.$t('OperationSuccessful'))
@@ -775,6 +791,7 @@
.box-button { .box-button {
height: 38px; height: 38px;
margin-top: 4px; margin-top: 4px;
margin-left: 10px;
} }
.box-button-index { .box-button-index {
@@ -15,7 +15,9 @@
</template> </template>
</div> </div>
<div class="box-content-content"> <div class="box-content-content">
<div class="box-content-content-index" :title="$t('classificationMaintenance')" <div class="box-content-content-index"
v-has="'problemKnowledgeBase:classificationMaintenance'"
:title="$t('classificationMaintenance')"
@click="classificationClick"> @click="classificationClick">
<a-icon type="setting"/> <a-icon type="setting"/>
{{$t('classificationMaintenance')}} {{$t('classificationMaintenance')}}
@@ -42,11 +44,15 @@
<!-- <a-icon type="setting"/>--> <!-- <a-icon type="setting"/>-->
<!-- {{$t('classificationMaintenance')}}--> <!-- {{$t('classificationMaintenance')}}-->
<!-- </div>--> <!-- </div>-->
<div @click="managePublishingClick" class="operator-text-text-index"> <div @click="managePublishingClick"
v-has="'problemKnowledgeBase:release'"
class="operator-text-text-index">
<a-icon type="carry-out"/> <a-icon type="carry-out"/>
{{$t('managePublishing')}} {{$t('managePublishing')}}
</div> </div>
<div @click="newlyAddedClick" class="operator-text-text-index"> <div @click="newlyAddedClick"
v-has="'problemKnowledgeBase:add'"
class="operator-text-text-index">
<a-icon type="plus"/> <a-icon type="plus"/>
{{$t('newlyAdded')}} {{$t('newlyAdded')}}
</div> </div>
@@ -65,16 +71,16 @@
{{val}} {{val}}
</span> </span>
</div> </div>
<div class="content-box-content" @click="detailClcik(item)"> <div class="content-box-content">
<div class="content-box-content-top" v-html="item.contentOne"> <div class="content-box-content-top" @click="detailClcik(item)"
v-html="item.contentOne">
</div> </div>
<div class="content-box-content-botton"> <div class="content-box-content-botton">
<div class="content-box-content-botton-text" <div class="content-box-content-botton-text"
v-if="item.accessoryFileNameList && item.accessoryFileNameList.length > 0" v-if="item.accessoryFileNameList && item.accessoryFileNameList.length > 0"
:title="val.fileName" :title="val.fileName"
v-for="val in item.accessoryFileNameList"> v-for="val in item.accessoryFileNameList">
{{val.fileName}} <span @click="fileClick(val)">{{val.fileName}}</span>
</div> </div>
</div> </div>
</div> </div>
@@ -85,9 +91,13 @@
<a-icon type="user"/> <a-icon type="user"/>
{{item.createBy}} {{item.createBy}}
</div> </div>
<div class="content-box-button-text"> <div class="content-box-button-text" v-if="item.standNumber">
<a-icon type="audit"/> <a-icon type="audit"/>
{{item.problemTypeName}} {{item.standNumber}}
</div>
<div class="content-box-button-text" v-if="item.targetMarket_dicText">
<a-icon type="idcard"/>
{{item.targetMarket_dicText}}
</div> </div>
<div class="content-box-button-text"> <div class="content-box-button-text">
<a-icon type="history"/> <a-icon type="history"/>
@@ -170,6 +180,7 @@
import SelectedBy from '@/components/SelectedBy/index' import SelectedBy from '@/components/SelectedBy/index'
import problemKnowledgeBaseListView from './problemKnowledgeBaseListView' import problemKnowledgeBaseListView from './problemKnowledgeBaseListView'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import { Base64 } from 'js-base64'
export default { export default {
name: 'problemKnowledgeBaseList', name: 'problemKnowledgeBaseList',
@@ -193,6 +204,7 @@
queryForm: {}, queryForm: {},
tagList: [], tagList: [],
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download', downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
downLoadImgUrl: window._CONFIG['domianWebImgURL'] + '/sys/common/download',
pageNo: 1, pageNo: 1,
url: { url: {
getInfoList: '/problemKnowledgeBase/problemKnowledgeBaseEO/page' getInfoList: '/problemKnowledgeBase/problemKnowledgeBaseEO/page'
@@ -255,6 +267,26 @@
this.getList() this.getList()
}) })
}, },
fileClick(fileQuery) {
let fileName = fileQuery.fileName
let index1 = fileName.lastIndexOf('.')
let index2 = fileName.length
let fileSuffix = fileName.substring(index1, index2)
if (fileSuffix == '.pdf') {
window.open('/pdf/web/viewer.html?file=' + encodeURIComponent('/jero-boot/sys/common/pdf/viewFile?id=' + fileQuery.id + '&userName=' + this.userInfo().username))
} else if (fileSuffix == '.docx' || fileSuffix == '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadImgUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else {
downloadFile('/sys/common/downLoadFile', fileQuery.fileName, { id: fileQuery.id })
}
},
problemKnowledgeBase() { problemKnowledgeBase() {
this.pageNo = 1 this.pageNo = 1
this.isTrue = true this.isTrue = true
@@ -309,7 +341,8 @@
}, },
getText(str) { getText(str) {
let words = str.replace(/<[^<>]+>/g, '').replace(/&nbsp;/gi, '') //这里是去除标签 let words = str.replace(/<[^<>]+>/g, '').replace(/&nbsp;/gi, '') //这里是去除标签
return words.replace(/\s/g, '') //这里是去除空格 //.replace(/\s/g, '') //这里是去除空格
return words
}, },
getList() { getList() {
let selectedTags = JSON.parse(JSON.stringify(this.selectedTags)) let selectedTags = JSON.parse(JSON.stringify(this.selectedTags))
@@ -317,7 +350,8 @@
pageNo: this.pageNo, pageNo: this.pageNo,
pageSize: this.pageSize, pageSize: this.pageSize,
searchStr: this.searchStr, searchStr: this.searchStr,
problemTypes: selectedTags.join(',') problemTypes: selectedTags.join(','),
releaseStatus:'Have released'
} }
this.loading = true this.loading = true
getAction(this.url.getInfoList, query).then((res) => { getAction(this.url.getInfoList, query).then((res) => {
@@ -629,7 +663,7 @@
background: #DBF2F3; background: #DBF2F3;
border-radius: 3px; border-radius: 3px;
margin-left: 6px; margin-left: 6px;
max-width: 120px; max-width: 140px;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
@@ -662,22 +696,22 @@
margin-top: 10px; margin-top: 10px;
.content-box-content-botton-text { .content-box-content-botton-text {
max-width: 198px; /*max-width: 198px;*/
height: 32px; height: 32px;
display: inline-block; display: inline-block;
text-align: center; text-align: center;
line-height: 32px; line-height: 32px;
padding: 0 10px; /*background: #EFF1F3;*/
background: #EFF1F3;
border-radius: 4px; border-radius: 4px;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
font-size: 12px; font-size: 14px;
font-weight: 400; font-weight: 400;
color: #040B29; color: #040B29;
margin-right: 10px; margin-right: 20px;
cursor: pointer; cursor: pointer;
text-decoration: underline;
} }
} }
} }
@@ -789,7 +823,7 @@
background: #fff; background: #fff;
background: rgba(4, 11, 41, 0.06); background: rgba(4, 11, 41, 0.06);
color: #363C54; color: #363C54;
max-width: 150px; max-width: 280px;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
text-overflow: ellipsis; text-overflow: ellipsis;
@@ -33,9 +33,13 @@
<a-icon type="user"/> <a-icon type="user"/>
{{queryForm.createBy}} {{queryForm.createBy}}
</div> </div>
<div class="content-box-button-text"> <div class="content-box-button-text" v-if="queryForm.standNumber">
<a-icon type="audit"/> <a-icon type="file-markdown"/>
{{queryForm.problemTypeName}} {{queryForm.standNumber}}
</div>
<div class="content-box-button-text" v-if="queryForm.targetMarket_dicText">
<a-icon type="idcard"/>
{{queryForm.targetMarket_dicText}}
</div> </div>
<div class="content-box-button-text"> <div class="content-box-button-text">
<a-icon type="history"/> <a-icon type="history"/>
@@ -96,8 +100,16 @@
<div class="commentContent-content"> <div class="commentContent-content">
{{item.commentContent}} {{item.commentContent}}
</div> </div>
<div class="answer-text" style="margin-bottom: 14px" @click="messageClick(item)"> <div class="answer-text-index"
{{$t('answer')}} style="margin-bottom: 14px">
<span class="answer-text" @click="messageClick(item)">
{{$t('answer')}}
</span>
<span class="answer-text"
v-if="administrators || item.createBy == userInfoQuery.username"
@click="deleteClick(item)">
{{$t('delete')}}
</span>
</div> </div>
<div class="commentContent-text-one" v-for="(val,index1) in item.problemKnowledgeBaseCommentVOList" <div class="commentContent-text-one" v-for="(val,index1) in item.problemKnowledgeBaseCommentVOList"
v-if="item.problemKnowledgeBaseCommentVOList && item.problemKnowledgeBaseCommentVOList.length > 0"> v-if="item.problemKnowledgeBaseCommentVOList && item.problemKnowledgeBaseCommentVOList.length > 0">
@@ -109,8 +121,15 @@
<div class="commentContent-content"> <div class="commentContent-content">
{{val.commentContent}} {{val.commentContent}}
</div> </div>
<div class="answer-text" @click="messageClick(item)"> <div class="answer-text-index">
<span class="answer-text" @click="messageClick(item)">
{{$t('answer')}} {{$t('answer')}}
</span>
<span class="answer-text"
v-if="administrators || val.createBy == userInfoQuery.username"
@click="deleteClick(val)">
{{$t('delete')}}
</span>
</div> </div>
</div> </div>
</div> </div>
@@ -158,6 +177,7 @@
import SelectedBy from '@/components/SelectedBy/index' import SelectedBy from '@/components/SelectedBy/index'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import { Base64 } from 'js-base64' import { Base64 } from 'js-base64'
import { deleteAction } from '../../../../api/manage'
export default { export default {
name: 'problemKnowledgeBaseListView', name: 'problemKnowledgeBaseListView',
@@ -167,6 +187,8 @@
data() { data() {
return { return {
visibleComment: false, visibleComment: false,
administrators: false,
userInfoQuery: {},
releaseList: [], releaseList: [],
loading: false, loading: false,
formInline: {}, formInline: {},
@@ -205,7 +227,15 @@
} }
}, },
mounted() { mounted() {
this.administrators = false
this.userInfoQuery = this.userInfo()
if (this.userInfo().userRoleList && this.userInfo().userRoleList.length > 0) {
this.userInfo().userRoleList.forEach(res => {
if (res.roleCode == 'admin') {
this.administrators = true
}
})
}
}, },
methods: { methods: {
...mapGetters(['userInfo']), ...mapGetters(['userInfo']),
@@ -229,6 +259,28 @@
downloadFile('/sys/common/downLoadFile', fileQuery.fileName, { id: fileQuery.id }) downloadFile('/sys/common/downLoadFile', fileQuery.fileName, { id: fileQuery.id })
} }
}, },
deleteClick(item) {
let _this = this
this.$confirm({
content: _this.$t('ConfirmDelete'),
onOk() {
let url = ''
if (item.problemKnowledgeBaseId) {
url = '/problemKnowledgeBase/problemKnowledgeBaseCommentEO/deleteBatch'
} else {
url = '/project/problemKnowledgeBaseReplyEO/deleteBatch'
}
deleteAction(url, { ids: item.id }).then((res) => {
if (res.success) {
_this.$message.success(_this.$t('OperationSuccessful'))
_this.releaseData()
} else {
_this.$message.warning(res.message)
}
})
}
})
},
download(item) { download(item) {
downloadFile('/sys/common/downLoadFile', item.fileName, { id: item.id, userName: this.userInfo().username }) downloadFile('/sys/common/downLoadFile', item.fileName, { id: item.id, userName: this.userInfo().username })
}, },
@@ -494,22 +546,22 @@
margin-top: 10px; margin-top: 10px;
.content-box-content-botton-text { .content-box-content-botton-text {
max-width: 200px; /*max-width: 200px;*/
/*min-width: 120px;*/ /*min-width: 120px;*/
height: 32px; height: 32px;
display: inline-block; display: inline-block;
text-align: center; text-align: center;
line-height: 32px; line-height: 32px;
padding: 0 10px; /*padding: 0 10px;*/
background: #EFF1F3; /*background: #EFF1F3;*/
border-radius: 4px; border-radius: 4px;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
font-size: 12px; font-size: 14px;
font-weight: 400; font-weight: 400;
color: #040B29; color: #040B29;
margin-right: 10px; margin-right: 20px;
cursor: pointer; cursor: pointer;
.file-text { .file-text {
@@ -517,6 +569,7 @@
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
text-decoration: underline;
display: inline-block; display: inline-block;
margin-right: 6px; margin-right: 6px;
cursor: pointer; cursor: pointer;
@@ -632,6 +685,10 @@
margin-top: 6px; margin-top: 6px;
} }
.answer-text-index {
width: 100%;
}
.answer-text { .answer-text {
display: inline-block; display: inline-block;
padding: 3px 14px; padding: 3px 14px;
@@ -3,25 +3,49 @@
<div class="doc-detail-wrap"> <div class="doc-detail-wrap">
<div class="doc-detail-header" style="position: fixed;top: 0"> <div class="doc-detail-header" style="position: fixed;top: 0">
<div class="doc-detail-title"> <div class="doc-detail-title">
<!-- <span style="line-height: 66px;display: inline-block;float: left" @click="backClick">--> <!-- <span style="line-height: 66px;display: inline-block;float: left" @click="backClick">-->
<!-- <a-icon type="arrow-left" style="margin-right: 6px;"/>--> <!-- <a-icon type="arrow-left" style="margin-right: 6px;"/>-->
<!-- </span>--> <!-- </span>-->
{{$t('managePublishing')}} {{$t('managePublishing')}}
</div> </div>
</div> </div>
<div style="padding-top: 68px;background: #fff"> <div style="padding-top: 68px;background: #fff">
<div class="detail-content" style="padding: 30px"> <div class="detail-content" style="padding: 30px">
<div class="search-detail-wrap"> <div class="search-detail-wrap">
<a-form layout="inline" @keyup.enter.native="onSearch"> <a-form layout="inline" style="width: 1200px;margin: 0 auto" @keyup.enter.native="onSearch">
<div class="box-title-text"> <a-row :gutter="24">
<div class="title-text" :title="$t('searchContent')"> <a-col :span="10">
<span>{{$t('searchContent')}}</span> <div class="box-title-text">
<div class="title-text" :title="$t('searchContent')">
<span>{{$t('searchContent')}}</span>
</div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('searchContent')"
v-model="queryParam.searchStr"></a-input>
</div>
</a-col>
<a-col :span="10">
<div class="box-title-text">
<div class="title-text" :title="$t('releaseStatus')">
<span>{{$t('releaseStatus')}}</span>
</div>
<a-select :placeholder="$t('PleaseSelect')+$t('releaseStatus')"
v-model="queryParam.releaseStatus">
<a-select-option v-for="(item, key) in releaseStatusList"
:key="key"
:value="item.value">
<span class="selectText" :title=" item.name ">
{{ item.name}}
</span>
</a-select-option>
</a-select>
</div>
</a-col>
<div style="text-align: right">
<a-button class="box-button" type="primary" @click="onSearch">{{$t('query')}}</a-button>
<a-button class="box-button" style="margin-left: 8px" @click="ResetSearch">{{$t('reset')}}
</a-button>
</div> </div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('searchContent')" </a-row>
v-model="searchStr"></a-input>
<a-button class="box-button" type="primary" @click="onSearch">{{$t('query')}}</a-button>
<a-button class="box-button" style="margin-left: 8px" @click="ResetSearch">{{$t('reset')}}</a-button>
</div>
</a-form> </a-form>
</div> </div>
<div v-if="conList.length > 0" style="height: calc(100vh - 240px);overflow:auto;"> <div v-if="conList.length > 0" style="height: calc(100vh - 240px);overflow:auto;">
@@ -41,9 +65,14 @@
<div class="text-content"> <div class="text-content">
{{item.contentOne}} {{item.contentOne}}
</div> </div>
<div class="text-text-right-text-One">
{{item.releaseStatus == 'Draft'?$t('draft'):$t('HaveReleased')}}
</div>
<div class="text-text-right-text"> <div class="text-text-right-text">
<a style="margin-right: 10px" @click="edit(item)">{{$t('edit')}}</a> <a style="margin-right: 10px" @click="edit(item)"
<a @click="deleteData(item)">{{$t('delete')}}</a> v-if="userInfoQuery.username == item.createBy || administrators">{{$t('edit')}}</a>
<a @click="deleteData(item)"
v-if="userInfoQuery.username == item.createBy || administrators">{{$t('delete')}}</a>
</div> </div>
</div> </div>
</div> </div>
@@ -83,10 +112,22 @@
conList: [], conList: [],
total: 0, total: 0,
pageSize: 10, pageSize: 10,
searchStr: '', queryParam: {},
releaseStatusList: [
{
name: this.$t('draft'),
value: 'Draft'
},
{
name: this.$t('HaveReleased'),
value: 'Have released'
}
],
loading: false, loading: false,
administrators: false,
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download', downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
pageNo: 1, pageNo: 1,
userInfoQuery: {},
url: { url: {
getInfoList: '/problemKnowledgeBase/problemKnowledgeBaseEO/page', getInfoList: '/problemKnowledgeBase/problemKnowledgeBaseEO/page',
deleteBatch: '/problemKnowledgeBase/problemKnowledgeBaseEO/deleteBatch' deleteBatch: '/problemKnowledgeBase/problemKnowledgeBaseEO/deleteBatch'
@@ -96,6 +137,15 @@
mounted() { mounted() {
this.getList() this.getList()
document.title = this.$t('managePublishing') document.title = this.$t('managePublishing')
this.administrators = false
this.userInfoQuery = this.userInfo()
if (this.userInfo().userRoleList && this.userInfo().userRoleList.length > 0) {
this.userInfo().userRoleList.forEach(res => {
if (res.roleCode == 'admin') {
this.administrators = true
}
})
}
}, },
methods: { methods: {
...mapGetters(['userInfo']), ...mapGetters(['userInfo']),
@@ -113,20 +163,21 @@
this.getList() this.getList()
}, },
ResetSearch() { ResetSearch() {
this.searchStr = '' this.queryParam = {}
this.pageNo = 1 this.pageNo = 1
this.getList() this.getList()
}, },
getText(str) { getText(str) {
let words = str.replace(/<[^<>]+>/g, '').replace(/&nbsp;/gi, '') //这里是去除标签 let words = str.replace(/<[^<>]+>/g, '').replace(/&nbsp;/gi, '') //这里是去除标签
return words.replace(/\s/g, '') //这里是去除空格 //.replace(/\s/g, '') //这里是去除空格
return words
}, },
getList() { getList() {
let query = { let query = {
pageNo: this.pageNo, pageNo: this.pageNo,
pageSize: this.pageSize, pageSize: this.pageSize,
createBy: this.userInfo().username, createBy: this.userInfo().username,
searchStr: this.searchStr ...this.queryParam
} }
this.loading = true this.loading = true
getAction(this.url.getInfoList, query).then((res) => { getAction(this.url.getInfoList, query).then((res) => {
@@ -271,11 +322,21 @@
.text-text-right { .text-text-right {
padding: 19px 19px; padding: 19px 19px;
width: calc(100% - 180px); width: calc(100% - 300px);
box-sizing: border-box; box-sizing: border-box;
/*margin-left: 38px;*/ /*margin-left: 38px;*/
} }
.text-text-right-text-One {
width: 120px;
height: 100%;
text-align: center;
position: absolute;
right: 180px;
top: 50%;
transform: translate-Y(-50%);
}
.text-text-right-text { .text-text-right-text {
width: 180px; width: 180px;
height: 100%; height: 100%;
@@ -351,16 +412,13 @@
.search-detail-wrap { .search-detail-wrap {
width: 100%; width: 100%;
margin: 0 auto; margin-bottom: 16px;
} }
.box-title-text { .box-title-text {
line-height: 1.4; line-height: 1.4;
display: flex; display: flex;
align-items: center; align-items: center;
margin-bottom: 10px;
text-align: center;
justify-content: center;
} }
.title-text { .title-text {
@@ -380,7 +438,7 @@
.box-input { .box-input {
/*min-width: 200px;*/ /*min-width: 200px;*/
display: inline-block; display: inline-block;
width: 50%; width: 100%;
height: 38px; height: 38px;
margin-top: 2px; margin-top: 2px;
margin-right: 16px; margin-right: 16px;
@@ -44,19 +44,27 @@
</a-form> </a-form>
</div> </div>
<div class="table-operator"> <div class="table-operator">
<div @click="monthlyTitleTemplateClick" class="operator-text"> <div @click="monthlyTitleTemplateClick"
v-has="'monthlyReportFilling:titleTemplate'"
class="operator-text">
<a-icon type="apartment"/> <a-icon type="apartment"/>
{{$t('monthlyTitleTemplate')}} {{$t('monthlyTitleTemplate')}}
</div> </div>
<div @click="monthlyIntegrationAndExportClick" class="operator-text"> <div @click="monthlyIntegrationAndExportClick"
v-has="'monthlyReportFilling:integratedExport'"
class="operator-text">
<a-icon type="import"/> <a-icon type="import"/>
{{$t('monthlyIntegrationAndExport')}} {{$t('monthlyIntegrationAndExport')}}
</div> </div>
<div @click="addContentClick" class="operator-text"> <div @click="addContentClick"
v-has="'monthlyReportFilling:adding'"
class="operator-text">
<a-icon type="plus"/> <a-icon type="plus"/>
{{$t('addContent')}} {{$t('addContent')}}
</div> </div>
<div @click="BatchDeleteClick" class="operator-text"> <div @click="BatchDeleteClick"
v-has="'monthlyReportFilling:batchDelete'"
class="operator-text">
<a-icon type="delete"/> <a-icon type="delete"/>
{{$t('BatchDelete')}} {{$t('BatchDelete')}}
</div> </div>
@@ -74,10 +82,28 @@
:columns="columns" :columns="columns"
> >
<span slot="operation" slot-scope="text,record"> <span slot="operation" slot-scope="text,record">
<a class="text-operation" @click="copyClick(record)">{{$t('copy')}}</a> <a class="text-operation"
<a class="text-operation" @click="viewClick(record)">{{$t('view')}}</a> v-has="'monthlyReportFilling:copy'"
<a class="text-operation" @click="edit(record)">{{$t('edit')}}</a> @click="copyClick(record)">
<a class="text-operation" @click="deleteLib(record)">{{$t('deleteLib')}}</a> {{$t('copy')}}
</a>
<a class="text-operation"
v-has="'monthlyReportFilling:view'"
@click="viewClick(record)">
{{$t('view')}}
</a>
<a class="text-operation"
v-if="record.createBy == userData.username || administrators"
v-has="'monthlyReportFilling:edit'"
@click="edit(record)">
{{$t('edit')}}
</a>
<a class="text-operation"
v-if="record.createBy == userData.username || administrators"
v-has="'monthlyReportFilling:delete'"
@click="deleteLib(record)">
{{$t('deleteLib')}}
</a>
</span> </span>
</a-table> </a-table>
<div class="page" v-if="dataSource && dataSource.length > 0"> <div class="page" v-if="dataSource && dataSource.length > 0">
@@ -103,6 +129,7 @@
import fillTable from './modules/fillTable' import fillTable from './modules/fillTable'
import fillAdd from './modules/fillAdd' import fillAdd from './modules/fillAdd'
import moment from 'moment' import moment from 'moment'
import { mapGetters } from 'vuex'
export default { export default {
name: 'RegulationMonthlyFill', name: 'RegulationMonthlyFill',
@@ -118,14 +145,14 @@
list: '/report/lawsMonthlyReportWriteEO/page', list: '/report/lawsMonthlyReportWriteEO/page',
exportData: '/report/lawsMonthlyReportWriteEO/exportMonthlyReport' exportData: '/report/lawsMonthlyReportWriteEO/exportMonthlyReport'
}, },
exportStatusList:[ exportStatusList: [
{ {
value:'2', value: '2',
name:this.$t('hasBeenExport') name: this.$t('hasBeenExport')
}, },
{ {
value:'1', value: '1',
name:this.$t('notExport') name: this.$t('notExport')
} }
], ],
loading: false, loading: false,
@@ -192,15 +219,27 @@
width: 190, width: 190,
scopedSlots: { customRender: 'operation' } scopedSlots: { customRender: 'operation' }
} }
] ],
userData:{},
administrators:false
} }
}, },
mounted() { mounted() {
this.queryParam.month = moment(new Date()).format('YYYY-MM') this.queryParam.month = moment(new Date()).format('YYYY-MM')
this.getList() this.getList()
this.userData = this.userInfo()
this.administrators = false
if (this.userInfo().userRoleList && this.userInfo().userRoleList.length > 0) {
this.userInfo().userRoleList.forEach(res => {
if (res.roleCode == 'admin') {
this.administrators = true
}
})
}
}, },
methods: { methods: {
copyClick(row){ ...mapGetters(['userInfo']),
copyClick(row) {
let _this = this let _this = this
this.$confirm({ this.$confirm({
content: _this.$t('ConfirmReplication'), content: _this.$t('ConfirmReplication'),
@@ -22,7 +22,7 @@
</a-form> </a-form>
</div> </div>
<div class="table-operator"> <div class="table-operator">
<div @click="uploadMonthlyClick" class="operator-text"> <div @click="uploadMonthlyClick" v-has="'monthlyReportManagement:upload'" class="operator-text">
<a-icon type="cloud-upload"/> <a-icon type="cloud-upload"/>
{{$t('uploadMonthly')}} {{$t('uploadMonthly')}}
</div> </div>
@@ -51,14 +51,16 @@
</span> </span>
<span slot="operation" slot-scope="text,record"> <span slot="operation" slot-scope="text,record">
<a class="text-operation" <a class="text-operation"
v-if="record.createBy == userData.username" v-has="'monthlyReportManagement:release'"
v-if="record.createBy == userData.username || administrators"
@click="withdraw(record)"> @click="withdraw(record)">
{{record.issueStatus == 2 ? $t('release') : $t('withdraw')}} {{record.issueStatus == 2 ? $t('release') : $t('withdraw')}}
</a> </a>
<a class="text-operation" <a class="text-operation"
v-if="record.createBy == userData.username && record.issueStatus == 2" v-if="(record.createBy == userData.username || administrators) && record.issueStatus == 2"
@click="deleteLib(record)">{{$t('deleteLib')}}</a> @click="deleteLib(record)">{{$t('deleteLib')}}</a>
<a class="text-operation" <a class="text-operation"
v-has="'monthlyReportManagement:download'"
v-if="record.createBy == userData.username || record.issueStatus == 1" v-if="record.createBy == userData.username || record.issueStatus == 1"
@click="download(record)">{{$t('download')}}</a> @click="download(record)">{{$t('download')}}</a>
</span> </span>
@@ -110,6 +112,7 @@
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download', downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
downLoadImgUrl: window._CONFIG['domianWebImgURL'] + '/sys/common/download', downLoadImgUrl: window._CONFIG['domianWebImgURL'] + '/sys/common/download',
userData: {}, userData: {},
administrators:false,
columns: [ columns: [
{ {
title: this.$t('RegulationMonthlyName'), title: this.$t('RegulationMonthlyName'),
@@ -161,6 +164,14 @@
mounted() { mounted() {
this.getList() this.getList()
this.userData = this.userInfo() this.userData = this.userInfo()
this.administrators = false
if (this.userInfo().userRoleList && this.userInfo().userRoleList.length > 0) {
this.userInfo().userRoleList.forEach(res => {
if (res.roleCode == 'admin') {
this.administrators = true
}
})
}
}, },
methods: { methods: {
...mapGetters(['userInfo']), ...mapGetters(['userInfo']),
@@ -255,7 +255,7 @@
<span class="Required" v-if="!disabled">*</span> <span class="Required" v-if="!disabled">*</span>
<span class="title-text-text" :title="$t('regulatoryContact')">{{$t('regulatoryContact')}}</span> <span class="title-text-text" :title="$t('regulatoryContact')">{{$t('regulatoryContact')}}</span>
</div> </div>
<a-form-model-item class="itemModel" prop="lawsContactName"> <a-form-model-item class="itemModel-multi" prop="lawsContactName">
<PersonnelSelection <PersonnelSelection
:query="{db_field_name:'lawsContact',db_field_txt:$t('regulatoryContact')}" :query="{db_field_name:'lawsContact',db_field_txt:$t('regulatoryContact')}"
:personneQuery="formInline" :personneQuery="formInline"
@@ -205,7 +205,8 @@
}, },
getText(str) { getText(str) {
let words = str.replace(/<[^<>]+>/g, '').replace(/&nbsp;/gi, '') //这里是去除标签 let words = str.replace(/<[^<>]+>/g, '').replace(/&nbsp;/gi, '') //这里是去除标签
return words.replace(/\s/g, '') //这里是去除空格 //.replace(/\s/g, '') //这里是去除空格
return words
}, },
getList() { getList() {
let query = { let query = {
@@ -155,6 +155,7 @@
</div> </div>
<a-form-model-item class="itemModel" :prop="item.db_field_name"> <a-form-model-item class="itemModel" :prop="item.db_field_name">
<PersonnelSelection :query="item" <PersonnelSelection :query="item"
v-if="visible"
:personneQuery="formInline" :personneQuery="formInline"
@change="PersonnelSelectionChange" @change="PersonnelSelectionChange"
:disabled="disabled" :disabled="disabled"
@@ -60,7 +60,7 @@
<span style="cursor: pointer" <span style="cursor: pointer"
@click="fileClick(resultData.fileNameRight,resultData.fileIdRight)">{{resultData.fileNameRight}}</span> @click="fileClick(resultData.fileNameRight,resultData.fileIdRight)">{{resultData.fileNameRight}}</span>
</div> </div>
<div class="detail-content-header-content-rightOne"> <div class="detail-content-header-content-rightOne" :title="$t('comparisonDifferenceComment')">
{{$t('comparisonDifferenceComment')}} {{$t('comparisonDifferenceComment')}}
</div> </div>
<div class="detail-content-header-content-right" v-if="!isDisplay"> <div class="detail-content-header-content-right" v-if="!isDisplay">
@@ -162,7 +162,7 @@
<span>{{$t('fullTextComments')}}</span> <span>{{$t('fullTextComments')}}</span>
</div> </div>
<a-form-model-item class="itemModel" style="width: calc(100% - 113px)" prop="comment"> <a-form-model-item class="itemModel" style="width: calc(100% - 113px)" prop="comment">
<a-textarea :placeholder="$t('pleaseEnter')+$t('fullTextComments')" <a-textarea :placeholder="$t('pleaseEnterfullTextComments')"
v-model.trim="formInlineText.comment" v-model.trim="formInlineText.comment"
:rows="4"/> :rows="4"/>
</a-form-model-item> </a-form-model-item>
@@ -494,6 +494,7 @@
.operator-text-text { .operator-text-text {
cursor: pointer; cursor: pointer;
margin-right: 53px; margin-right: 53px;
max-width: 138px;
font-size: 14px; font-size: 14px;
font-weight: 400; font-weight: 400;
color: #040B29; color: #040B29;
@@ -91,7 +91,9 @@
</div> </div>
</div> </div>
<div class="Remarks"> <div class="Remarks">
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm"> <a-form-model :model="formInline"
class="formAdd" :rules="rules"
ref="ruleForm">
<div class="box-title-text-Remarks"> <div class="box-title-text-Remarks">
<div class="title-text-Remarks" :title="$t('comparativeComments')"> <div class="title-text-Remarks" :title="$t('comparativeComments')">
<span>{{$t('comparativeComments')}}</span> <span>{{$t('comparativeComments')}}</span>
@@ -99,7 +101,7 @@
<a-form-model-item class="itemModel" prop="comment"> <a-form-model-item class="itemModel" prop="comment">
<a-textarea :placeholder="$t('pleaseEnter')+$t('comparativeComments')" <a-textarea :placeholder="$t('pleaseEnter')+$t('comparativeComments')"
v-model="formInline.comment" v-model="formInline.comment"
:rows="4"/> :rows="3"/>
</a-form-model-item> </a-form-model-item>
</div> </div>
</a-form-model> </a-form-model>
@@ -135,7 +137,7 @@
<span>{{$t('fullTextComments')}}</span> <span>{{$t('fullTextComments')}}</span>
</div> </div>
<a-form-model-item class="itemModel" style="width: calc(100% - 113px)" prop="comment"> <a-form-model-item class="itemModel" style="width: calc(100% - 113px)" prop="comment">
<a-textarea :placeholder="$t('pleaseEnter')+$t('fullTextComments')" <a-textarea :placeholder="$t('PleaseEnter')+' '+$t('fullTextComments')"
v-model.trim="formInlineText.comment" v-model.trim="formInlineText.comment"
:rows="4"/> :rows="4"/>
</a-form-model-item> </a-form-model-item>
@@ -536,7 +538,7 @@
.detail-content-left { .detail-content-left {
width: 50%; width: 50%;
float: left; float: left;
height: 620px; height: calc(100vh - 210px);
border-right: 2px #EFF1F3 solid; border-right: 2px #EFF1F3 solid;
padding: 24px 32px; padding: 24px 32px;
box-sizing: border-box; box-sizing: border-box;
@@ -545,7 +547,7 @@
.detail-content-right { .detail-content-right {
width: 50%; width: 50%;
height: 620px; height: calc(100vh - 210px);
float: left; float: left;
padding: 24px 32px; padding: 24px 32px;
box-sizing: border-box; box-sizing: border-box;
@@ -593,6 +595,7 @@
.Remarks { .Remarks {
margin-top: 20px; margin-top: 20px;
width: 50%; width: 50%;
display: inline-block;
padding: 0 32px; padding: 0 32px;
box-sizing: border-box; box-sizing: border-box;
} }
@@ -602,7 +605,8 @@
} }
.submit-button { .submit-button {
width: 100%; display: inline-block;
width: 50%;
margin-top: 20px; margin-top: 20px;
text-align: right; text-align: right;
padding: 0 32px; padding: 0 32px;
@@ -8,7 +8,7 @@
<div class="title-text" :title="$t('standard')"> <div class="title-text" :title="$t('standard')">
<span>{{$t('standard')}}</span> <span>{{$t('standard')}}</span>
</div> </div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('standard')" <a-input class="box-input" :placeholder="$t('enterStandard')"
v-model="queryParam.serialNumber"></a-input> v-model="queryParam.serialNumber"></a-input>
</div> </div>
</a-col> </a-col>
@@ -17,7 +17,7 @@
<div class="title-text" :title="$t('title')"> <div class="title-text" :title="$t('title')">
<span>{{$t('title')}}</span> <span>{{$t('title')}}</span>
</div> </div>
<a-input class="box-input" :placeholder="$t('PleaseEnter')+$t('title')" <a-input class="box-input" :placeholder="$t('entertitle')"
v-model="queryParam.title"></a-input> v-model="queryParam.title"></a-input>
</div> </div>
</a-col> </a-col>
@@ -42,11 +42,11 @@
</a-form> </a-form>
</div> </div>
<div class="table-operator"> <div class="table-operator">
<div @click="initiatingProcessClick" class="operator-text"> <div @click="initiatingProcessClick" v-has="'documentComparison:Initiate'" class="operator-text">
<a-icon type="apartment"/> <a-icon type="apartment"/>
{{$t('initiateComparison')}} {{$t('initiateComparison')}}
</div> </div>
<div @click="BatchDelete" class="operator-text"> <div @click="BatchDelete" v-has="'documentComparison:batchDelete'" class="operator-text">
<a-icon type="delete"/> <a-icon type="delete"/>
{{$t('BatchDelete')}} {{$t('BatchDelete')}}
</div> </div>
@@ -67,15 +67,15 @@
<span slot="operation" slot-scope="text,record"> <span slot="operation" slot-scope="text,record">
<a class="text-operation" @click="comparisonResultsClick(record)">{{$t('comparisonResults')}}</a> <a class="text-operation" @click="comparisonResultsClick(record)">{{$t('comparisonResults')}}</a>
<a class="text-operation" <a class="text-operation"
v-if="record.createBy == userInfoQuery.username" v-if="record.createBy == userInfoQuery.username || administrators"
@click="subscribe(record)"> @click="subscribe(record)">
{{!record.releaseState || record.releaseState == 'draft' ? $t('release') :$t('withdraw')}} {{!record.releaseState || record.releaseState == 'draft' ? $t('release') :$t('withdraw')}}
</a> </a>
<a class="text-operation" <a class="text-operation"
v-if="record.createBy == userInfoQuery.username && record.releaseState == 'draft'" v-if="(record.createBy == userInfoQuery.username || administrators) && record.releaseState == 'draft'"
@click="edit(record)">{{$t('edit')}}</a> @click="edit(record)">{{$t('edit')}}</a>
<a class="text-operation" <a class="text-operation"
v-if="record.createBy == userInfoQuery.username && record.releaseState == 'draft'" v-if="(record.createBy == userInfoQuery.username || administrators) && record.releaseState == 'draft'"
@click="deleteData(record)">{{$t('delete')}}</a> @click="deleteData(record)">{{$t('delete')}}</a>
</span> </span>
<span slot="serialNumberRight" :title="text" slot-scope="text,record"> <span slot="serialNumberRight" :title="text" slot-scope="text,record">
@@ -132,10 +132,11 @@
pageNo: 1, pageNo: 1,
queryParam: {}, queryParam: {},
userInfoQuery: {}, userInfoQuery: {},
administrators:false,
selectedRowKeysRecord: [], selectedRowKeysRecord: [],
columns: [ columns: [
{ {
title: this.$t('standard') + 1, title: this.$t('standard') + ' 1',
align: 'center', align: 'center',
dataIndex: 'serialNumberLeft', dataIndex: 'serialNumberLeft',
width: 170, width: 170,
@@ -143,7 +144,7 @@
scopedSlots: { customRender: 'serialNumberLeft' } scopedSlots: { customRender: 'serialNumberLeft' }
}, },
{ {
title: this.$t('title') + 1, title: this.$t('title') + ' 1',
align: 'center', align: 'center',
dataIndex: 'titleLeft', dataIndex: 'titleLeft',
width: 170, width: 170,
@@ -151,7 +152,7 @@
scopedSlots: { customRender: 'serialNumberLeft' } scopedSlots: { customRender: 'serialNumberLeft' }
}, },
{ {
title: this.$t('TextStatus') + 1, title: this.$t('TextStatus') + ' 1',
align: 'center', align: 'center',
width: 200, width: 200,
ellipsis: true, ellipsis: true,
@@ -166,7 +167,7 @@
// scopedSlots: { customRender: 'fileNameLeft' } // scopedSlots: { customRender: 'fileNameLeft' }
// }, // },
{ {
title: this.$t('standard') + 2, title: this.$t('standard') + ' 2',
align: 'center', align: 'center',
dataIndex: 'serialNumberRight', dataIndex: 'serialNumberRight',
ellipsis: true, ellipsis: true,
@@ -174,7 +175,7 @@
width: 170 width: 170
}, },
{ {
title: this.$t('title') + 2, title: this.$t('title') + ' 2',
align: 'center', align: 'center',
dataIndex: 'titleRight', dataIndex: 'titleRight',
scopedSlots: { customRender: 'serialNumberRight' }, scopedSlots: { customRender: 'serialNumberRight' },
@@ -182,7 +183,7 @@
width: 170 width: 170
}, },
{ {
title: this.$t('TextStatus') + 2, title: this.$t('TextStatus') + ' 2',
align: 'center', align: 'center',
width: 200, width: 200,
ellipsis: true, ellipsis: true,
@@ -233,6 +234,14 @@
this.queryParam = { ...this.queryParam } this.queryParam = { ...this.queryParam }
} }
this.userInfoQuery = this.userInfo() this.userInfoQuery = this.userInfo()
this.administrators = false
if (this.userInfo().userRoleList && this.userInfo().userRoleList.length > 0) {
this.userInfo().userRoleList.forEach(res => {
if (res.roleCode == 'admin') {
this.administrators = true
}
})
}
this.getList() this.getList()
}, },
methods: { methods: {
@@ -59,15 +59,15 @@
</a-form> </a-form>
</div> </div>
<div class="table-operator"> <div class="table-operator">
<div @click="uploadClick" class="operator-text"> <div @click="uploadClick" v-has="'documentTranslation:upload'" class="operator-text">
<a-icon type="cloud-upload"/> <a-icon type="cloud-upload"/>
{{$t('upload1')}} {{$t('upload1')}}
</div> </div>
<div @click="RetrieveFilesClick" class="operator-text"> <div @click="RetrieveFilesClick" v-has="'documentTranslation:retrieval'" class="operator-text">
<a-icon type="database"/> <a-icon type="database"/>
{{$t('RetrieveFiles')}} {{$t('RetrieveFiles')}}
</div> </div>
<div @click="BatchDelete" class="operator-text"> <div @click="BatchDelete" v-has="'documentTranslation:batchDeletion'" class="operator-text">
<a-icon type="delete"/> <a-icon type="delete"/>
{{$t('BatchDelete')}} {{$t('BatchDelete')}}
</div> </div>
@@ -86,18 +86,22 @@
> >
<!-- --> <!-- -->
<span slot="operation" slot-scope="text,record"> <span slot="operation" slot-scope="text,record">
<a class="text-operation" @click="viewClick(record)">{{$t('view')}}</a> <a class="text-operation"
v-has="'documentTranslation:view'"
@click="viewClick(record)">{{$t('view')}}</a>
<!-- <a class="text-operation" @click="checkClick(record)">{{$t('check')}}</a>--> <!-- <a class="text-operation" @click="checkClick(record)">{{$t('check')}}</a>-->
<a class="text-operation" <a class="text-operation"
v-if="record.createBy == userInfoQuery.username" v-if="record.createBy == userInfoQuery.username || administrators"
@click="subscribe(record)"> @click="subscribe(record)">
{{!record.releaseCondition || record.releaseCondition == 'draft' ? $t('release') :$t('withdraw')}} {{!record.releaseCondition || record.releaseCondition == 'draft' ? $t('release') :$t('withdraw')}}
</a> </a>
<a class="text-operation" <a class="text-operation"
v-has="'documentTranslation:download'"
v-if="record.translationResult == 'Translation done'" v-if="record.translationResult == 'Translation done'"
@click="downloadData(record)">{{$t('download')}}</a> @click="downloadData(record)">{{$t('download')}}</a>
<a class="text-operation" <a class="text-operation"
v-if="record.createBy == userInfoQuery.username && record.releaseCondition == 'draft'" v-has="'documentTranslation:delete'"
v-if="(record.createBy == userInfoQuery.username || administrators) && record.releaseCondition == 'draft'"
@click="deleteData(record)">{{$t('delete')}}</a> @click="deleteData(record)">{{$t('delete')}}</a>
</span> </span>
<span slot="standardTitle" slot-scope="text,record" :title="text"> <span slot="standardTitle" slot-scope="text,record" :title="text">
@@ -158,6 +162,7 @@
queryParam: {}, queryParam: {},
userInfoQuery: {}, userInfoQuery: {},
selectedRowKeysRecord: [], selectedRowKeysRecord: [],
administrators:false,
columns: [ columns: [
{ {
title: this.$t('standard'), title: this.$t('standard'),
@@ -233,6 +238,14 @@
} }
this.getList() this.getList()
this.userInfoQuery = this.userInfo() this.userInfoQuery = this.userInfo()
this.administrators = false
if (this.userInfo().userRoleList && this.userInfo().userRoleList.length > 0) {
this.userInfo().userRoleList.forEach(res => {
if (res.roleCode == 'admin') {
this.administrators = true
}
})
}
}, },
methods: { methods: {
...mapGetters(['userInfo']), ...mapGetters(['userInfo']),
@@ -5,7 +5,7 @@
<div class="text-left-wrap"> <div class="text-left-wrap">
<div class="text-left-select"> <div class="text-left-select">
<span class="text-sel" :title="$t('problemClassification')">{{$t('problemClassification')}}</span> <span class="text-sel" :title="$t('problemClassification')">{{$t('problemClassification')}}</span>
<a-select :placeholder="$t('PleaseSelect')+$t('problemClassification')" <a-select :placeholder="$t('selectProblemClassification')"
class="text-select" class="text-select"
mode="multiple" mode="multiple"
:getPopupContainer="triggerNode=> triggerNode.parentNode" :getPopupContainer="triggerNode=> triggerNode.parentNode"
@@ -23,7 +23,7 @@
<div class="text-left-select"> <div class="text-left-select">
<span class="text-sel" :title="$t('market')">{{$t('market')}}</span> <span class="text-sel" :title="$t('market')">{{$t('market')}}</span>
<j-multi-select-tag class="text-select" v-model="queryParamOne.target_market" <j-multi-select-tag class="text-select" v-model="queryParamOne.target_market"
:placeholder="$t('PleaseSelect')+$t('market')" :placeholder="$t('selectMarket')"
:type="'select'" :type="'select'"
:triggerChange="false" :dictCode="'region'"/> :triggerChange="false" :dictCode="'region'"/>
</div> </div>
@@ -222,7 +222,8 @@
}, },
getText(str) { getText(str) {
let words = str.replace(/<[^<>]+>/g, '').replace(/&nbsp;/gi, '') //这里是去除标签 let words = str.replace(/<[^<>]+>/g, '').replace(/&nbsp;/gi, '') //这里是去除标签
return words.replace(/\s/g, '') //这里是去除空格 //.replace(/\s/g, '') //这里是去除空格
return words
}, },
getParagraphInfoList() { getParagraphInfoList() {
let queryParamIndex = JSON.parse(JSON.stringify(this.queryParam)) let queryParamIndex = JSON.parse(JSON.stringify(this.queryParam))
@@ -201,7 +201,8 @@
}, },
getText(str) { getText(str) {
let words = str.replace(/<[^<>]+>/g, '').replace(/&nbsp;/gi, '') //这里是去除标签 let words = str.replace(/<[^<>]+>/g, '').replace(/&nbsp;/gi, '') //这里是去除标签
return words.replace(/\s/g, '') //这里是去除空格 //.replace(/\s/g, '') //这里是去除空格
return words
}, },
getList() { getList() {
let queryParam = JSON.parse(JSON.stringify(this.queryParam)) let queryParam = JSON.parse(JSON.stringify(this.queryParam))
@@ -26,7 +26,7 @@
v-else-if="active === $t('whole') || active === $t('problemKnowledgeBase') v-else-if="active === $t('whole') || active === $t('problemKnowledgeBase')
|| active === $t('monthlyReportRegulations')" || active === $t('monthlyReportRegulations')"
class="inputSearch" class="inputSearch"
:placeholder="$t('pleaseEnter')+$t('searchContent')" :placeholder="$t('enterSearchContent')"
></a-input> ></a-input>
<a-button class="textSearch" <a-button class="textSearch"
v-if="active === $t('DocumentLibrary')" v-if="active === $t('DocumentLibrary')"
@@ -18,7 +18,7 @@
<div class="title-text"> <div class="title-text">
<span class="Required">*</span> <span class="Required">*</span>
<span class="title-text-text" <span class="title-text-text"
:title="$t('file')">{{$t('file')}}</span> :title="$t('fileName')">{{$t('fileName')}}</span>
</div> </div>
<a-form-model-item class="itemModel" prop="fileKey"> <a-form-model-item class="itemModel" prop="fileKey">
<a-button type="primary" class="button-text" <a-button type="primary" class="button-text"
File diff suppressed because it is too large Load Diff
@@ -99,6 +99,7 @@
<PersonnelSelection <PersonnelSelection
:query="{db_field_name:'userId',db_field_txt:$t('engineer')}" :query="{db_field_name:'userId',db_field_txt:$t('engineer')}"
:personneQuery="formInline" :personneQuery="formInline"
v-if="visible"
:distributionEngineerList="distributionEngineerList" :distributionEngineerList="distributionEngineerList"
@change="PersonnelSelectionChange" @change="PersonnelSelectionChange"
v-model="formInline.userIdName"/> v-model="formInline.userIdName"/>
@@ -93,10 +93,11 @@
<span class="Required">*</span> <span class="Required">*</span>
<span class="title-text-text" :title="$t('StudioEngineer')">{{$t('StudioEngineer')}}</span> <span class="title-text-text" :title="$t('StudioEngineer')">{{$t('StudioEngineer')}}</span>
</div> </div>
<a-form-model-item class="itemModel" :prop="'studioEngineerName'"> <a-form-model-item class="itemModel-multi" :prop="'studioEngineerName'">
<PersonnelSelection :query="{db_field_name:'studioEngineer',db_field_txt:$t('StudioEngineer')}" <PersonnelSelection :query="{db_field_name:'studioEngineer',db_field_txt:$t('StudioEngineer')}"
:isSingleChoice="true" :isSingleChoice="true"
:personneQuery="formInline" :personneQuery="formInline"
v-if="visible"
@change="PersonnelSelectionChange" @change="PersonnelSelectionChange"
:disabled="disabled" :disabled="disabled"
v-model="formInline.studioEngineerName"/> v-model="formInline.studioEngineerName"/>
@@ -108,10 +109,11 @@
<div class="title-text"> <div class="title-text">
<span class="title-text-text" :title="$t('certifiedEngineer')">{{$t('certifiedEngineer')}}</span> <span class="title-text-text" :title="$t('certifiedEngineer')">{{$t('certifiedEngineer')}}</span>
</div> </div>
<a-form-model-item class="itemModel" :prop="'certificationEngineerName'"> <a-form-model-item class="itemModel-multi" :prop="'certificationEngineerName'">
<PersonnelSelection <PersonnelSelection
:query="{db_field_name:'certificationEngineer',db_field_txt:$t('certifiedEngineer')}" :query="{db_field_name:'certificationEngineer',db_field_txt:$t('certifiedEngineer')}"
:personneQuery="formInline" :personneQuery="formInline"
v-if="visible"
@change="PersonnelSelectionChange" @change="PersonnelSelectionChange"
:disabled="disabled" :disabled="disabled"
v-model="formInline.certificationEngineerName"/> v-model="formInline.certificationEngineerName"/>
@@ -176,8 +176,9 @@
<span class="title-text-text" :title="$t('regulatoryEngineer')">{{$t('regulatoryEngineer')}}</span> <span class="title-text-text" :title="$t('regulatoryEngineer')">{{$t('regulatoryEngineer')}}</span>
</div> </div>
<!-- :prop="'lawEngineerName'"--> <!-- :prop="'lawEngineerName'"-->
<a-form-model-item class="itemModel"> <a-form-model-item class="itemModel-multi">
<PersonnelSelection <PersonnelSelection
v-if="editVisible"
:query="{db_field_name:'lawEngineer',db_field_txt:$t('regulatoryEngineer')}" :query="{db_field_name:'lawEngineer',db_field_txt:$t('regulatoryEngineer')}"
:personneQuery="formInline" :personneQuery="formInline"
:isDelete='true' :isDelete='true'
@@ -196,8 +197,9 @@
<span class="title-text-text" :title="$t('engineeringInterfacePerson')">{{$t('engineeringInterfacePerson')}}</span> <span class="title-text-text" :title="$t('engineeringInterfacePerson')">{{$t('engineeringInterfacePerson')}}</span>
</div> </div>
<!-- :prop="'engineeringInterfacePersonName'"--> <!-- :prop="'engineeringInterfacePersonName'"-->
<a-form-model-item class="itemModel"> <a-form-model-item class="itemModel-multi">
<PersonnelSelection <PersonnelSelection
v-if="editVisible"
:query="{db_field_name:'engineeringInterfacePerson',db_field_txt:$t('engineeringInterfacePerson')}" :query="{db_field_name:'engineeringInterfacePerson',db_field_txt:$t('engineeringInterfacePerson')}"
:personneQuery="formInline" :personneQuery="formInline"
:isDelete='true' :isDelete='true'
@@ -20,6 +20,7 @@
<PersonnelSelection <PersonnelSelection
:query="{db_field_name:'lawEngineer',db_field_txt:$t('regulatoryEngineer')}" :query="{db_field_name:'lawEngineer',db_field_txt:$t('regulatoryEngineer')}"
:personneQuery="formInline" :personneQuery="formInline"
v-if="visible"
@change="PersonnelSelectionChange" @change="PersonnelSelectionChange"
v-model="formInline.lawEngineerName"/> v-model="formInline.lawEngineerName"/>
</a-form-model-item> </a-form-model-item>
@@ -36,6 +37,7 @@
<PersonnelSelection <PersonnelSelection
:query="{db_field_name:'engineeringInterfacePerson',db_field_txt:$t('engineeringInterfacePerson')}" :query="{db_field_name:'engineeringInterfacePerson',db_field_txt:$t('engineeringInterfacePerson')}"
:personneQuery="formInline" :personneQuery="formInline"
v-if="visible"
@change="PersonnelSelectionChange" @change="PersonnelSelectionChange"
v-model="formInline.engineeringInterfacePersonName"/> v-model="formInline.engineeringInterfacePersonName"/>
</a-form-model-item> </a-form-model-item>
@@ -13,6 +13,7 @@
<a-col :span='9'> <a-col :span='9'>
<a-form-model-item class="itemAddAdmin" :label="$t('title')" prop='title'> <a-form-model-item class="itemAddAdmin" :label="$t('title')" prop='title'>
<a-input style='width: 420px' <a-input style='width: 420px'
class='box-input'
:placeholder="$t('PleaseEnter')+$t('title')" :placeholder="$t('PleaseEnter')+$t('title')"
v-model='formData.title'/> v-model='formData.title'/>
</a-form-model-item> </a-form-model-item>
@@ -24,7 +25,7 @@
</a-row> </a-row>
<a-row :gutter='24'> <a-row :gutter='24'>
<a-col :span='9'> <a-col :span='9'>
<div class="box-title-text" style="margin-left: -58px;"> <div class="box-title-text">
<div class="title-text"> <div class="title-text">
<!-- <span class="Required">*</span>--> <!-- <span class="Required">*</span>-->
<span class="title-text-text" :title="$t('zoneOfApplication')">{{$t('zoneOfApplication')}}</span> <span class="title-text-text" :title="$t('zoneOfApplication')">{{$t('zoneOfApplication')}}</span>
@@ -34,9 +35,9 @@
<!-- :disabled="disabled"--> <!-- :disabled="disabled"-->
<!-- v-model="formInline[item.db_field_name]"--> <!-- v-model="formInline[item.db_field_name]"-->
<!-- :placeholder="$t('PleaseEnter')+item.db_field_txt"/>--> <!-- :placeholder="$t('PleaseEnter')+item.db_field_txt"/>-->
<!-- <a-input--> <!-- <a-input-->
<!-- :placeholder="$t('PleaseEnter')+$t('parameterTemplate')"--> <!-- :placeholder="$t('PleaseEnter')+$t('parameterTemplate')"-->
<!-- v-model='form.paramsTemplateName'/>--> <!-- v-model='form.paramsTemplateName'/>-->
<j-dict-select-tag class='box-input' v-model='form.region' <j-dict-select-tag class='box-input' v-model='form.region'
:placeholder="$t('PleaseSelect')+$t('zoneOfApplication')" :placeholder="$t('PleaseSelect')+$t('zoneOfApplication')"
:type="'select'" :type="'select'"
@@ -44,14 +45,14 @@
:triggerChange='false' :dictCode="'region'"/> :triggerChange='false' :dictCode="'region'"/>
</a-form-model-item> </a-form-model-item>
</div> </div>
<!-- <a-form-model-item ref='region' :label="$t('zoneOfApplication')" prop='region'>--> <!-- <a-form-model-item ref='region' :label="$t('zoneOfApplication')" prop='region'>-->
<!-- <a-form-model-item class='itemModel' prop='region'>--> <!-- <a-form-model-item class='itemModel' prop='region'>-->
<!-- <j-dict-select-tag class='box-input' v-model='form.region'--> <!-- <j-dict-select-tag class='box-input' v-model='form.region'-->
<!-- :placeholder="$t('PleaseSelect')+$t('zoneOfApplication')"--> <!-- :placeholder="$t('PleaseSelect')+$t('zoneOfApplication')"-->
<!-- :type="'select'"--> <!-- :type="'select'"-->
<!-- :triggerChange='false' :dictCode="'region'"/>--> <!-- :triggerChange='false' :dictCode="'region'"/>-->
<!-- </a-form-model-item>--> <!-- </a-form-model-item>-->
<!-- </a-form-model-item>--> <!-- </a-form-model-item>-->
</a-col> </a-col>
<a-col :span='9'> <a-col :span='9'>
<div class="box-title-text"> <div class="box-title-text">
@@ -65,16 +66,17 @@
<!-- v-model="formInline[item.db_field_name]"--> <!-- v-model="formInline[item.db_field_name]"-->
<!-- :placeholder="$t('PleaseEnter')+item.db_field_txt"/>--> <!-- :placeholder="$t('PleaseEnter')+item.db_field_txt"/>-->
<a-input <a-input
class='box-input'
:placeholder="$t('PleaseEnter')+$t('parameterTemplate')" :placeholder="$t('PleaseEnter')+$t('parameterTemplate')"
:title="$t('PleaseSelect')+$t('parameterTemplate')" :title="$t('PleaseSelect')+$t('parameterTemplate')"
v-model='form.paramsTemplateName'/> v-model='form.paramsTemplateName'/>
</a-form-model-item> </a-form-model-item>
</div> </div>
<!-- <a-form-model-item ref='paramsTemplateName' :label="$t('parameterTemplate')" prop='paramsTemplateName'>--> <!-- <a-form-model-item ref='paramsTemplateName' :label="$t('parameterTemplate')" prop='paramsTemplateName'>-->
<!-- <a-input--> <!-- <a-input-->
<!-- :placeholder="$t('PleaseEnter')+$t('parameterTemplate')"--> <!-- :placeholder="$t('PleaseEnter')+$t('parameterTemplate')"-->
<!-- v-model='form.paramsTemplateName'/>--> <!-- v-model='form.paramsTemplateName'/>-->
<!-- </a-form-model-item>--> <!-- </a-form-model-item>-->
</a-col> </a-col>
<a-col :span='6' style='margin-top: 5px'> <a-col :span='6' style='margin-top: 5px'>
<a-button class='box-button' type='primary' @click='searchQuery'>{{ $t('query') }}</a-button> <a-button class='box-button' type='primary' @click='searchQuery'>{{ $t('query') }}</a-button>
@@ -92,7 +94,7 @@
:dataSource='areaTable' :dataSource='areaTable'
:pagination='false' :pagination='false'
:loading='loading' :loading='loading'
:scroll='{x: 600}' :scroll='{x: 600,y:300}'
:rowSelection='{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}' :rowSelection='{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}'
@change='handleTableChange'> @change='handleTableChange'>
</a-table> </a-table>
@@ -376,13 +378,14 @@
.drawer-bootom-button { .drawer-bootom-button {
display: flex; display: flex;
justify-content: center; justify-content: flex-end;
} }
.Required { .Required {
color: red; color: red;
margin-right: 4px; margin-right: 4px;
} }
.box-title-text { .box-title-text {
line-height: 1.4; line-height: 1.4;
display: flex; display: flex;
@@ -390,7 +393,7 @@
} }
.title-text { .title-text {
width: 114px; width: 85px;
text-align: right; text-align: right;
display: inline-block; display: inline-block;
font-weight: 500; font-weight: 500;
@@ -410,7 +413,7 @@
} }
.itemModel { .itemModel {
width: calc(100% - 130px); width: calc(100% - 101px);
display: inline-block; display: inline-block;
margin-top: 2px; margin-top: 2px;
height: 40px; height: 40px;
@@ -466,6 +469,10 @@
line-height: 6px; line-height: 6px;
color: #fff; color: #fff;
} }
.box-button {
height: 38px;
}
</style> </style>
<style lang='less'> <style lang='less'>
.area-module { .area-module {
@@ -481,7 +488,7 @@
} }
</style> </style>
<style> <style>
.itemAddAdmin .ant-form-item-control-wrapper .has-error .ant-form-explain { .itemAddAdmin .ant-form-item-control-wrapper .has-error .ant-form-explain {
white-space: nowrap!important; white-space: nowrap !important;
} }
</style> </style>
@@ -65,7 +65,9 @@
</div> </div>
<div class="table-operator" style="overflow:hidden;margin-bottom: 20px"> <div class="table-operator" style="overflow:hidden;margin-bottom: 20px">
<div style="float: right;margin-bottom: 0px;margin-left: 20px"> <div style="float: right;margin-bottom: 0px;margin-left: 20px">
<div class="operator-text" @click="deriveconformanceresults()"> <div class="operator-text"
v-has="'complianceKanban:export'"
@click="deriveconformanceresults()">
<a-icon type="solution"/> <a-icon type="solution"/>
{{ $t('Deriveconformanceresults') }} {{ $t('Deriveconformanceresults') }}
</div> </div>
@@ -96,7 +98,7 @@
<!-- {{ text && text.length > 15 ? text.slice(0, 14) + '...' : text }}--> <!-- {{ text && text.length > 15 ? text.slice(0, 14) + '...' : text }}-->
<!-- </span>--> <!-- </span>-->
<span slot="operation" slot-scope="text,record"> <span slot="operation" slot-scope="text,record">
<a class="text-operation" @click="handlecody(record)">{{$t('view')}}</a> <a class="text-operation" v-has="'complianceKanban:view'" @click="handlecody(record)">{{$t('view')}}</a>
</span> </span>
</a-table> </a-table>
</div> </div>
@@ -8,11 +8,14 @@
:url="url"/> :url="url"/>
</div> </div>
<div class="table-operator"> <div class="table-operator">
<div @click="handleCompare" class="operator-text"> <div @click="handleCompare" v-has="'regulatoryEarlyWarning:push'"
class="operator-text">
<a-icon type="rocket" :rotate="45"/> <a-icon type="rocket" :rotate="45"/>
{{$t('Push')}} {{$t('Push')}}
</div> </div>
<div @click="handleExport" class="operator-text"> <div @click="handleExport"
v-has="'regulatoryEarlyWarning:export'"
class="operator-text">
<a-icon type="export" :rotate="-90"/> <a-icon type="export" :rotate="-90"/>
{{$t('export')}} {{$t('export')}}
</div> </div>