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

This commit is contained in:
CD
2022-09-30 18:17:25 +08:00
52 changed files with 3583 additions and 333 deletions
@@ -253,7 +253,7 @@ public class OSSFileServiceImpl extends ServiceImpl<OSSFileMapper, OSSFile> impl
String[] fileTypeArr = {".doc", ".DOC", ".txt", ".TXT", ".docx", ".DOCX",
".xls", ".XLS", ".xlsx", ".XLSX", ".pdf", ".PDF", ".png", ".PNG",
".jfif", ".JFIF", ".pjpeg", ".PJPEG", ".jpeg", ".JPEG", ".pjp", ".PJP",
".jpg", ".JPG", ".swf", ".SWF", ".bmp", ".BMP", ".rar", ".RAR", ".zip", ".ZIP", ".ppt", ".PPT", ".pptx", ".PPTX", ".csv", ".CSV"};
".jpg", ".JPG", ".swf", ".SWF", ".bmp", ".BMP", ".rar", ".RAR", ".zip", ".ZIP", ".ppt", ".PPT", ".pptx", ".PPTX", ".csv", ".CSV", ".gif", ".GIF"};
boolean flag = true;
for (String fileTypeTemp : fileTypeArr) {
if (fileTypeTemp.equalsIgnoreCase(fileType)) {
@@ -262,9 +262,9 @@ public class OSSFileServiceImpl extends ServiceImpl<OSSFileMapper, OSSFile> impl
}
if (flag) {
if (cut.equals(CutEnum.CN.getValue())) {
throw new JeroBootException("只能够上传pdf/word/excel/csv/ppt/txt/zip/rar/静态图片类型的文件。请重新选择文件!");
throw new JeroBootException("只能够上传pdf/word/excel/csv/ppt/txt/zip/rar/gif/静态图片类型的文件。请重新选择文件!");
} else {
throw new JeroBootException("Only upload pdf/word/excel/csv/ppt/txt/zip/rar/Static image type file. Please re select the file!");
throw new JeroBootException("Only upload pdf/word/excel/csv/ppt/txt/zip/rar/gif/Static image type file. Please re select the file!");
}
}
}
@@ -21,6 +21,7 @@ import com.jero.common.system.util.JwtUtil;
import com.jero.common.system.vo.LoginUser;
import com.jero.common.system.vo.SysDepartTreeModel;
import com.jero.common.system.vo.SysDepartUserTreeModel;
import com.jero.common.system.vo.SysUserTreeModel;
import com.jero.common.util.ImportExcelUtil;
import com.jero.common.util.PasswordUtil;
import com.jero.common.util.RedisUtil;
@@ -63,6 +64,7 @@ import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
* 用户表 前端控制器
@@ -1533,7 +1535,53 @@ public class SysUserController {
result.setSuccess(true);
return result;
}
/**
* 查询数据 查出所有部门及其用户
*
* @return
*/
@ApiOperation(value = "用户管理-查出所有部门及其用户")
@RequestMapping(value = "/queryUserTreeList", method = RequestMethod.GET)
public Result<List<DepartUserTree>> queryUserTreeList(String cut) {
Result<List<DepartUserTree>> result = new Result<>();
List<DepartUserTree> dutList = new ArrayList<>();
List<SysDepartTreeModel> departTreeModelList = sysDepartService.queryTreeList(cut);
for (SysDepartTreeModel sdtm: departTreeModelList) {
dutList.addAll(findChildNode(sdtm));
}
result.setResult(dutList);
result.setSuccess(true);
return result;
}
private List<DepartUserTree> findChildNode(SysDepartTreeModel sdtModel) {
List<DepartUserTree> resList = new ArrayList<>();
DepartUserTree dut = new DepartUserTree();
dut.setId(sdtModel.getId());
dut.setName(sdtModel.getDepartName());
dut.setParentId(sdtModel.getParentId());
dut.setType("Depart");
resList.add(dut);
List<String> departIds = new ArrayList<>();
departIds.add(sdtModel.getId());
List<SysUser> sysUserList = sysUserService.getUserListByDepIds(departIds);
for (SysUser user: sysUserList) {
DepartUserTree dut1 = new DepartUserTree();
dut1.setId(user.getId());
dut1.setName(user.getUsername());
dut1.setParentId(sdtModel.getId());
dut1.setType("User");
resList.add(dut1);
}
if (sdtModel.getChildren() != null && sdtModel.getChildren().size() > 0) {
for (SysDepartTreeModel sdtModel1 : sdtModel.getChildren()) {
resList.addAll(findChildNode(sdtModel1));
}
}
return resList;
}
@AutoLog(value = "文档库推送部门和人员的模糊搜索")
@ApiOperation(value="文档库推送部门和人员的模糊搜索", notes="文档库推送部门和人员的模糊搜索")
@@ -0,0 +1,50 @@
package com.jero.modules.system.entity;
public class DepartUserTree {
private String id;
private String parentId;
private String name;
private String type;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@Override
public String toString() {
return "DepartUserTree{" +
"id='" + id + '\'' +
", parentId='" + parentId + '\'' +
", name='" + name + '\'' +
", type='" + type + '\'' +
'}';
}
}
@@ -127,4 +127,7 @@ public class DocTranslationEO implements Serializable {
@ApiModelProperty(value = "目标文件id")
private java.lang.String targetFileId;
/**翻译后文件名称*/
@TableField(exist = false)
private String targetFileName;
}
@@ -20,6 +20,7 @@ import com.jero.modules.docTranslation.service.IDocTranslationEOService;
import com.jero.modules.docTranslation.utils.TranslationDocumentUtils;
import com.jero.modules.document.enums.FieldTypeEnum;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
import me.zhyd.oauth.utils.StringUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.shiro.SecurityUtils;
@@ -47,6 +48,8 @@ public class DocTranslationEOServiceImpl extends ServiceImpl<DocTranslationEOMap
@Autowired
private OnlCgformFieldServiceImpl onlCgformFieldService;
@Autowired
private IOSSFileService iOSSFileService;
/**
* 保存
*
@@ -155,6 +158,8 @@ public class DocTranslationEOServiceImpl extends ServiceImpl<DocTranslationEOMap
*/
public void disposeData(List<DocTranslationEO> datas,String cut){
if(CollectionUtils.isNotEmpty(datas)){
String targetFileIds = datas.stream().map(DocTranslationEO::getTargetFileId).distinct().collect(Collectors.joining(","));
List<OSSFile> targetFileList = this.iOSSFileService.getFileInfos(targetFileIds);
for (DocTranslationEO data : datas) {
String textStatus_dictText = "";
OnlCgformField fileTypeField = this.onlCgformFieldService.queryById(data.getTextStatus());
@@ -166,6 +171,17 @@ public class DocTranslationEOServiceImpl extends ServiceImpl<DocTranslationEOMap
}
}
data.setTextStatus_dictText(textStatus_dictText);
if(StringUtils.isNotEmpty(data.getTargetFileId())){
String targetFileName = targetFileList.stream().filter(targetFile -> {
boolean flag = false;
if (org.apache.commons.lang3.StringUtils.equals(data.getTargetFileId(), targetFile.getId())) {
flag = true;
}
return flag;
}).map(OSSFile::getFileName).collect(Collectors.joining(","));
data.setTargetFileName(targetFileName);
}
}
}
}
@@ -115,8 +115,9 @@ public class TranslationDocumentUtils {
//翻译后的文件路径
String translateAfterFilePath = uploadpath + "/tempZip/translationTempFile";
String translateAfterFileName = sourceOssFile.getFileName().substring(0, sourceOssFile.getFileName().lastIndexOf("."));
try {
translateAfterFile = createTranslateAfterFile(translateAfterFilePath, translateAfterSb.toString(),sourceOssFile.getFileName());
translateAfterFile = createTranslateAfterFile(translateAfterFilePath, translateAfterSb.toString(),translateAfterFileName);
} catch (Exception ex) {
ex.printStackTrace();
logger.error("翻译文档-写入文档失败:" + ex.getMessage());
@@ -137,7 +138,7 @@ public class TranslationDocumentUtils {
if (!newFilePath.exists()) {
newFilePath.mkdirs();
}
translateAfterFilePath = translateAfterFilePath + "/" + fileName;
translateAfterFilePath = translateAfterFilePath + "/" + fileName + ".doc";
File newFile = new File(translateAfterFilePath);
if (!newFile.exists()) {
newFile.createNewFile();
@@ -127,8 +127,8 @@ public class LawsOpinionGatherEOController extends JeroController<LawsOpinionGat
@AutoLog(value = "法规意见收集表-批量删除")
@ApiOperation(value="法规意见收集表-批量删除", notes="法规意见收集表-批量删除")
@DeleteMapping(value = "/deleteBatch")
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.lawsOpinionGatherEOService.deleteByIds(Arrays.asList(ids.split(",")));
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids,@RequestParam(name="cut",required=true) String cut) {
this.lawsOpinionGatherEOService.deleteByIds(Arrays.asList(ids.split(",")),cut);
return Result.OK("批量删除成功!");
}
@@ -184,4 +184,10 @@ public class LawsOpinionGatherEOController extends JeroController<LawsOpinionGat
return this.lawsOpinionGatherEOService.processCall(jsonObject);
}
@AutoLog(value = "法规意见收集表-批量完成任务")
@ApiOperation(value="法规意见收集表-批量完成任务", notes="法规意见收集表-批量完成任务")
@PostMapping(value = "/batchCompleteTask")
public Result<?> batchCompleteTask(@RequestBody JSONObject jsonObject){
return this.lawsOpinionGatherEOService.batchCompleteTask(jsonObject);
}
}
@@ -34,7 +34,8 @@ public class LawsOpinionGatherJob implements Job {
@Override
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
log.info("法规意见收集流程,定时任务开启 =====================================================");
QueryWrapper<LawsOpinionGatherEO> lawsOpinionGatherEOQueryWrapper = new QueryWrapper<>();
//TODO 2022-09-29 该功能被手动按钮替代 对应禅道bug编号 59979
/*QueryWrapper<LawsOpinionGatherEO> lawsOpinionGatherEOQueryWrapper = new QueryWrapper<>();
lawsOpinionGatherEOQueryWrapper.lambda().eq(LawsOpinionGatherEO::getGatherResult, GatherResultEnum.UNDERWAY.getValue());
List<LawsOpinionGatherEO> lawsOpinionGatherEOList = this.lawsOpinionGatherEOService.list(lawsOpinionGatherEOQueryWrapper);
if (CollectionUtils.isNotEmpty(lawsOpinionGatherEOList)) {
@@ -58,7 +59,7 @@ public class LawsOpinionGatherJob implements Job {
this.lawsOpinionGatherEOService.updateBatchById(updateLawsOpinionGatherEOList);
}
}
}
}*/
log.info("法规意见收集流程,定时任务结束 =====================================================");
}
}
@@ -44,7 +44,7 @@ public interface ILawsOpinionGatherEOService extends IService<LawsOpinionGatherE
* @param ids
* @return
*/
void deleteByIds(List<String> ids);
void deleteByIds(List<String> ids,String cut);
/**
* 通过id查询
@@ -75,4 +75,6 @@ public interface ILawsOpinionGatherEOService extends IService<LawsOpinionGatherE
void disposeData(List<LawsOpinionGatherEO> lawsOpinionGatherEOList,String cut);
void workFlowSendMsg(JSONObject jsonObject);
Result<?> batchCompleteTask(JSONObject jsonObject);
}
@@ -28,8 +28,10 @@ import com.jero.modules.system.entity.SysCategory;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.system.service.impl.SysCategoryServiceImpl;
import com.jero.modules.wkflow.feginClient.WorkFlowFeignClient;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.modules.jmreport.common.constant.CommonConstant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -64,6 +66,9 @@ public class LawsOpinionGatherEOServiceImpl extends ServiceImpl<LawsOpinionGathe
@Autowired
private ILawsOpinionAssessmentResultEOService lawsOpinionAssessmentResultEOService;
@Autowired
private WorkFlowFeignClient workFlowFeignClient;
/**
* 保存
*
@@ -109,12 +114,26 @@ public class LawsOpinionGatherEOServiceImpl extends ServiceImpl<LawsOpinionGathe
* @return
*/
@Override
public void deleteByIds(List<String> ids) {
removeByIds(ids);
public void deleteByIds(List<String> ids,String cut) {
QueryWrapper<LawsOpinionGatherEO> lawsOpinionGatherEOQueryWrapper = new QueryWrapper<>();
lawsOpinionGatherEOQueryWrapper.lambda().in(LawsOpinionGatherEO::getId, ids);
List<LawsOpinionGatherEO> lawsOpinionGatherEOList = this.list(lawsOpinionGatherEOQueryWrapper);
QueryWrapper deleteWrapper = new QueryWrapper();
deleteWrapper.in("laws_opinion_gather_id",ids);
this.lawsOpinionAssessmentResultEOService.remove(deleteWrapper);
List<String> actiProcInstIdList = lawsOpinionGatherEOList.stream().map(LawsOpinionGatherEO::getActiProcInstId).distinct().collect(Collectors.toList());
String prcIds = org.apache.commons.lang.StringUtils.join(actiProcInstIdList,",");
Result<String> result = this.workFlowFeignClient.deleteProcessInstanceByPrcIds(prcIds);
if(result.getCode().equals(CommonConstant.SC_OK_200)){
removeByIds(ids);
QueryWrapper deleteWrapper = new QueryWrapper();
deleteWrapper.in("laws_opinion_gather_id",ids);
this.lawsOpinionAssessmentResultEOService.remove(deleteWrapper);
}else {
if(StringUtils.equals(cut,CutEnum.CN.getValue())){
throw new JeroBootException("删除失败,请联系管理员!");
}else if(StringUtils.equals(cut,CutEnum.EN.getValue())){
throw new JeroBootException("Delete failed, please contact the administrator!");
}
}
}
/**
@@ -283,4 +302,36 @@ public class LawsOpinionGatherEOServiceImpl extends ServiceImpl<LawsOpinionGathe
SendMessageUtils.sendMessage(msgTitle,msgContentEN,userIdList,lawsOpinionGatherId,sendMessageMap,null,MessageTypeEnum.COLLECTION_OF_LEGISLATIVE_COMMENTS,initiator);
}
@Override
public Result<?> batchCompleteTask(JSONObject jsonObject) {
String ids = jsonObject.getString("ids");
String cut = jsonObject.getString("cut");
if(StringUtils.isEmpty(ids)){
if(StringUtils.equals(cut,CutEnum.CN.getValue())){
throw new JeroBootException("至少选择一条数据进行手动结束!");
}else if(StringUtils.equals(cut,CutEnum.EN.getValue())){
throw new JeroBootException("Select at least one piece of data for manual termination!");
}
}
List<String> lawsOpinionGatherIdList = Arrays.asList(ids.split(","));
QueryWrapper<LawsOpinionGatherEO> lawsOpinionGatherEOQueryWrapper = new QueryWrapper<>();
lawsOpinionGatherEOQueryWrapper.lambda().eq(LawsOpinionGatherEO::getGatherResult, GatherResultEnum.UNDERWAY.getValue());
lawsOpinionGatherEOQueryWrapper.lambda().in(LawsOpinionGatherEO::getId, lawsOpinionGatherIdList);
List<LawsOpinionGatherEO> lawsOpinionGatherEOList = this.list(lawsOpinionGatherEOQueryWrapper);
if (CollectionUtils.isNotEmpty(lawsOpinionGatherEOList)) {
List<String> actiProcInstIdList = lawsOpinionGatherEOList.stream().map(LawsOpinionGatherEO::getActiProcInstId).distinct().collect(Collectors.toList());
String actiProcInstIds = org.apache.commons.lang.StringUtils.join(actiProcInstIdList,",");
//将这些流程实例下的待办任务提交
Result<String> result = this.workFlowFeignClient.completeTaskByPids(actiProcInstIds);
if(result.getCode().equals(CommonConstant.SC_OK_200)){
lawsOpinionGatherEOList.forEach(lawsOpinionGatherEO -> {
lawsOpinionGatherEO.setGatherResult(GatherResultEnum.COMPLETED.getValue());
});
this.updateBatchById(lawsOpinionGatherEOList);
}
}
return new Result<>().success("手动结束成功!");
}
}
@@ -130,8 +130,8 @@ public class LawsTechnologyEvaluationEOController extends JeroController<LawsTec
@AutoLog(value = "法规技术评估-批量删除")
@ApiOperation(value="法规技术评估-批量删除", notes="法规技术评估-批量删除")
@DeleteMapping(value = "/deleteBatch")
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.lawsTechnologyEvaluationEOService.deleteByIds(Arrays.asList(ids.split(",")));
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids,@RequestParam(name="cut",required=true) String cut) {
this.lawsTechnologyEvaluationEOService.deleteByIds(Arrays.asList(ids.split(",")),cut);
return Result.OK("批量删除成功!");
}
@@ -180,8 +180,8 @@ public class LawsTechnologyEvaluationEOController extends JeroController<LawsTec
* @param jsonObject
* @return
*/
@AutoLog(value = "法规意见收集表-流程调用")
@ApiOperation(value="法规意见收集表-流程调用", notes="法规意见收集细表-流程调用")
@AutoLog(value = "法规技术评估-流程调用")
@ApiOperation(value="法规技术评估-流程调用", notes="法规技术评估-流程调用")
@PostMapping(value = "/processCall")
public Result<?> processCall(@RequestBody JSONObject jsonObject){
return this.lawsTechnologyEvaluationEOService.processCall(jsonObject);
@@ -218,4 +218,11 @@ public class LawsTechnologyEvaluationEOController extends JeroController<LawsTec
List<Map<String, Object>> result = this.lawsTechnologyEvaluationEOService.queryPageDummyById(parameter);
return Result.OK(result);
}
@AutoLog(value = "法规技术评估-批量完成任务")
@ApiOperation(value="法规技术评估-批量完成任务", notes="法规技术评估-批量完成任务")
@PostMapping(value = "/batchCompleteTask")
public Result<?> batchCompleteTask(@RequestBody JSONObject jsonObject){
return this.lawsTechnologyEvaluationEOService.batchCompleteTask(jsonObject);
}
}
@@ -38,7 +38,8 @@ public class LawsTechnologyEvaluationJob implements Job {
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
log.info("法规技术评估流程,定时任务开启 =====================================================");
QueryWrapper<LawsTechnologyEvaluationEO> queryWrapper = new QueryWrapper<>();
//TODO 2022-09-29 该功能被手动按钮替代 对应禅道bug编号 59979
/*QueryWrapper<LawsTechnologyEvaluationEO> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(LawsTechnologyEvaluationEO::getFlowStatus, GatherResultEnum.UNDERWAY.getValue());
List<LawsTechnologyEvaluationEO> lawsTechnologyEvaluationEOList = this.lawsTechnologyEvaluationEOService.list(queryWrapper);
@@ -73,7 +74,7 @@ public class LawsTechnologyEvaluationJob implements Job {
}
}
}
}*/
log.info("法规技术评估流程,定时任务结束 =====================================================");
}
@@ -50,7 +50,7 @@ public interface ILawsTechnologyEvaluationEOService extends IService<LawsTechnol
* @param ids
* @return
*/
void deleteByIds(List<String> ids);
void deleteByIds(List<String> ids,String cut);
/**
* 通过id查询
@@ -90,4 +90,6 @@ public interface ILawsTechnologyEvaluationEOService extends IService<LawsTechnol
List<Map<String, Object>> queryPageDummyById(Map<String, Object> parameter);
void workFlowSendMsg(JSONObject jsonObject);
Result<?> batchCompleteTask(JSONObject jsonObject);
}
@@ -16,6 +16,7 @@ import com.jero.modules.document.mapper.BussDocumentLibraryEOMapper;
import com.jero.modules.document.service.impl.BussDocumentLibraryEOServiceImpl;
import com.jero.modules.lawsOpinionGather.enums.GatherResultEnum;
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationEO;
import com.jero.modules.lawsTechnologyEvaluation.entity.LawsTechnologyEvaluationFlowDetailEO;
import com.jero.modules.lawsTechnologyEvaluation.mapper.LawsTechnologyEvaluationEOMapper;
import com.jero.modules.lawsTechnologyEvaluation.service.*;
import com.jero.modules.project.enums.JumpLinkEnum;
@@ -31,12 +32,14 @@ import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import com.jero.modules.system.service.impl.SysCategoryServiceImpl;
import com.jero.modules.system.service.impl.SysDictItemServiceImpl;
import com.jero.modules.wkflow.feginClient.WorkFlowFeignClient;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.jeecg.modules.jmreport.common.constant.CommonConstant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -90,6 +93,8 @@ public class LawsTechnologyEvaluationEOServiceImpl extends ServiceImpl<LawsTechn
private ILawsTechnologyEvaluationItemResultEOService lawsTechnologyEvaluationItemResultEOService;
@Autowired
private ILawsTechnologyEvaluationComplianceResultEOService lawsTechnologyEvaluationComplianceResultEOService;
@Autowired
private WorkFlowFeignClient workFlowFeignClient;
/**
* 保存
@@ -136,18 +141,41 @@ public class LawsTechnologyEvaluationEOServiceImpl extends ServiceImpl<LawsTechn
* @return
*/
@Override
public void deleteByIds(List<String> ids) {
removeByIds(ids);
public void deleteByIds(List<String> ids,String cut) {
QueryWrapper<LawsTechnologyEvaluationEO> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().in(LawsTechnologyEvaluationEO::getId, ids);
List<LawsTechnologyEvaluationEO> lawsTechnologyEvaluationEOList = this.list(queryWrapper);
QueryWrapper deleteWrapper = new QueryWrapper();
deleteWrapper.in("laws_technology_evaluation_id",ids);
this.lawsTechnologyEvaluationFlowDetailEOService.remove(deleteWrapper);
List<String> lawsTechnologyEvaluationIdList = lawsTechnologyEvaluationEOList.stream().map(LawsTechnologyEvaluationEO::getId).distinct().collect(Collectors.toList());
this.lawsTechnologyEvaluationItemResultEOService.remove(deleteWrapper);
//获取这些法规技术评估数据的下级流程明细数据
QueryWrapper<LawsTechnologyEvaluationFlowDetailEO> flowDetailEOQueryWrapper = new QueryWrapper<>();
flowDetailEOQueryWrapper.lambda().in(LawsTechnologyEvaluationFlowDetailEO::getLawsTechnologyEvaluationId,lawsTechnologyEvaluationIdList);
List<LawsTechnologyEvaluationFlowDetailEO> lawsTechnologyEvaluationFlowDetailEOList = lawsTechnologyEvaluationFlowDetailEOService.list(flowDetailEOQueryWrapper);
this.lawsTechnologyEvaluationResultEOService.remove(deleteWrapper);
if(CollectionUtils.isNotEmpty(lawsTechnologyEvaluationFlowDetailEOList)){
String prcIds = lawsTechnologyEvaluationFlowDetailEOList.stream().map(LawsTechnologyEvaluationFlowDetailEO::getActiProcInstId).distinct().collect(Collectors.joining(","));
Result<String> result = this.workFlowFeignClient.deleteProcessInstanceByPrcIds(prcIds);
if(result.getCode().equals(CommonConstant.SC_OK_200)){
removeByIds(ids);
this.lawsTechnologyEvaluationComplianceResultEOService.remove(deleteWrapper);
QueryWrapper deleteWrapper = new QueryWrapper();
deleteWrapper.in("laws_technology_evaluation_id",ids);
this.lawsTechnologyEvaluationFlowDetailEOService.remove(deleteWrapper);
this.lawsTechnologyEvaluationItemResultEOService.remove(deleteWrapper);
this.lawsTechnologyEvaluationResultEOService.remove(deleteWrapper);
this.lawsTechnologyEvaluationComplianceResultEOService.remove(deleteWrapper);
}else {
if(StringUtils.equals(cut,CutEnum.CN.getValue())){
throw new JeroBootException("删除失败,请联系管理员!");
}else if(StringUtils.equals(cut,CutEnum.EN.getValue())){
throw new JeroBootException("Delete failed, please contact the administrator!");
}
}
}
}
/**
@@ -629,6 +657,45 @@ public class LawsTechnologyEvaluationEOServiceImpl extends ServiceImpl<LawsTechn
SendMessageUtils.sendMessage(msgTitle,msgContentEN,userIdList,lawsTechnologyEvaluationId,sendMessageMap,null, MessageTypeEnum.REGULATORY_AND_TECHNICAL_ASSESSMENT,initiator);
}
@Override
public Result<?> batchCompleteTask(JSONObject jsonObject) {
String ids = jsonObject.getString("ids");
String cut = jsonObject.getString("cut");
if(StringUtils.isEmpty(ids)){
if(StringUtils.equals(cut,CutEnum.CN.getValue())){
throw new JeroBootException("至少选择一条数据进行手动结束!");
}else if(StringUtils.equals(cut,CutEnum.EN.getValue())){
throw new JeroBootException("Select at least one piece of data for manual termination!");
}
}
QueryWrapper<LawsTechnologyEvaluationEO> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(LawsTechnologyEvaluationEO::getFlowStatus, GatherResultEnum.UNDERWAY.getValue());
queryWrapper.lambda().in(LawsTechnologyEvaluationEO::getId, Arrays.asList(ids.split(",")));
List<LawsTechnologyEvaluationEO> lawsTechnologyEvaluationEOList = this.list(queryWrapper);
if (CollectionUtils.isNotEmpty(lawsTechnologyEvaluationEOList)) {
List<String> lawsTechnologyEvaluationIdList = lawsTechnologyEvaluationEOList.stream().map(LawsTechnologyEvaluationEO::getId).distinct().collect(Collectors.toList());
//获取这些法规技术评估数据的下级流程明细数据
QueryWrapper<LawsTechnologyEvaluationFlowDetailEO> flowDetailEOQueryWrapper = new QueryWrapper<>();
flowDetailEOQueryWrapper.lambda().in(LawsTechnologyEvaluationFlowDetailEO::getLawsTechnologyEvaluationId,lawsTechnologyEvaluationIdList);
List<LawsTechnologyEvaluationFlowDetailEO> lawsTechnologyEvaluationFlowDetailEOList = lawsTechnologyEvaluationFlowDetailEOService.list(flowDetailEOQueryWrapper);
if(CollectionUtils.isNotEmpty(lawsTechnologyEvaluationFlowDetailEOList)){
String actiProcInstIds = lawsTechnologyEvaluationFlowDetailEOList.stream().map(LawsTechnologyEvaluationFlowDetailEO::getActiProcInstId).distinct().collect(Collectors.joining(","));
Result<String> result = this.workFlowFeignClient.completeLawsTechnologyEvaluationTaskByPids(actiProcInstIds);
if(result.getCode().equals(CommonConstant.SC_OK_200)){
lawsTechnologyEvaluationEOList.forEach(lawsTechnologyEvaluationEO -> {
lawsTechnologyEvaluationEO.setFlowStatus(GatherResultEnum.COMPLETED.getValue());
});
this.updateBatchById(lawsTechnologyEvaluationEOList);
}
}
}
return new Result<>().success("手动结束成功!");
}
private String getTreeName(String cut, List<SysCategory> categoryList, List<String> technologyTerritoryList) {
StringBuilder sb = new StringBuilder();
for (String technologyTerritory : technologyTerritoryList) {
@@ -267,10 +267,10 @@ public class LawsTechnologyEvaluationItemResultEOServiceImpl extends ServiceImpl
String fileName = "";
if(StringUtils.equals(cut, CutEnum.CN.getValue())){
title = "条款号,条款名称,条款内容,评估人,评估方式,技术文件名称,章节,符合性结果,意见,附件,反馈时间";
fileName = "条款评估结果 " + ".xlsx";
fileName = "条款评估结果" + ".xls";
}else if(StringUtils.equals(cut,CutEnum.EN.getValue())){
title = "Item No.,Item Name,Item Content,Assessor,Evaluation method,Name of technical document,Chapter,Compliance Results,Opinion,Enclosure,Feedback Time";
fileName = "Item Evaluation results " + ".xlsx";
fileName = "Item Evaluation results" + ".xls";
}
OutputStream os = null;
@@ -40,6 +40,8 @@ import com.jero.modules.system.util.StringUtils;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.shiro.SecurityUtils;
import org.jetbrains.annotations.NotNull;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@@ -117,10 +119,11 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
//如果该条问题知识库的展示权限为私密则创建权限表数据
if(StringUtils.equals(problemKnowledgeBaseEO.getShowPermissions(), ShowPermissionsEnum.PRIVACY.getValue())){
this.batchInsertProblemKnowledgeBaseUserEO(problemKnowledgeBaseEO);
}else {
}
/*else {
//如果展示权限是公开则把该数据插入到搜索中心中
this.addOrUpdateElasticsearch(problemKnowledgeBaseEO);
}
}*/
this.addOrUpdateElasticsearch(problemKnowledgeBaseEO);
}
@@ -300,8 +303,12 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
}*/
if(StringUtils.isNotEmpty(problemKnowledgeBaseEO.getContent())){
//处理内容将富文本标签去掉搜索中心的时候不要富文本标签样式
String content = problemKnowledgeBaseEO.getContent();
Document document = Jsoup.parse(content);
content = document.text();
sbCn.append("</br>");
sbCn.append("正文" + ":" + problemKnowledgeBaseEO.getContent() + " ");
sbCn.append("正文" + ":" + content + " ");
}else {
sbCn.append("</br>");
sbCn.append("正文" + ":" + "-- ");
@@ -363,8 +370,12 @@ public class ProblemKnowledgeBaseEOServiceImpl extends ServiceImpl<ProblemKnowle
}*/
if(StringUtils.isNotEmpty(problemKnowledgeBaseEO.getContent())){
//处理内容将富文本标签去掉搜索中心的时候不要富文本标签样式
String content = problemKnowledgeBaseEO.getContent();
Document document = Jsoup.parse(content);
content = document.text();
sbEn.append("</br>");
sbEn.append("Text" + ":" + problemKnowledgeBaseEO.getContent() + " ");
sbEn.append("Text" + ":" + content + " ");
}else {
sbEn.append("</br>");
sbEn.append("Text" + ":" + "-- ");
@@ -51,7 +51,8 @@
pti.prehomo_person_charge_feedback as "prehomoPersonChargeFeedback",
pti.verify_person_charge_feedback as "verifyPersonChargeFeedback",
plb.studio_engineer as "studioEngineer",
plb.target_market as "targetMarket"
plb.target_market as "targetMarket",
pti.id as "projectTaskInventoryId"
FROM
project_laws_inventory pli
LEFT JOIN project_task_inventory pti ON ( pli.id = pti.project_laws_inventory_id )
@@ -886,6 +886,8 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl<LawsMonthly
false, false, "Blue Sky Noto Regular",null,null,flag);
WordUtil.exportWord(document, moth+"\r\n", null, ParagraphAlignment.CENTER, 0, 12,
false, true, "Blue Sky Noto Regular",null,null,flag);
//添加下一页
document.createParagraph().createRun().addBreak(BreakType.PAGE);
}
//封面
private void coverEn(List<LawsMonthlyReportWriteEO> lawsMonthlyReportWriteEOS,
@@ -900,6 +902,8 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl<LawsMonthly
false, false, "Blue Sky Noto Regular",null,null,flag);
WordUtil.exportWord(document, moth+"\r\n", null, ParagraphAlignment.CENTER, 0, 12,
false, true, "Blue Sky Noto Regular",null,null,flag);
//添加下一页
document.createParagraph().createRun().addBreak(BreakType.PAGE);
}
private void wordContent(List<LawsMonthlyReportWriteEO> lawsMonthlyReportWriteEOS,
List<LawsMonthlyReportTitleTemplateEO> lawsMonthlyReportTitleTemplateEOS,
@@ -42,6 +42,7 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPageSz;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTR;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSectPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSpacing;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTString;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTStyle;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblLayoutType;
@@ -107,17 +108,17 @@ public class WordUtil {
//设置行间距
// if(!"cover".equals(flag) && !"oneTitle".equals(flag)){
// CTP ctp = titleParagraph.getCTP();
// CTPPr ppr = ctp.isSetPPr() ? ctp.getPPr() : ctp.addNewPPr();
// CTSpacing spacing = ppr.isSetSpacing()? ppr.getSpacing() : ppr.addNewSpacing();
// spacing.setAfter(BigInteger.valueOf(0));
// spacing.setBefore(BigInteger.valueOf(0));
if(!"cover".equals(flag) && !"oneTitle".equals(flag)){
CTP ctp = titleParagraph.getCTP();
CTPPr ppr = ctp.isSetPPr() ? ctp.getPPr() : ctp.addNewPPr();
CTSpacing spacing = ppr.isSetSpacing()? ppr.getSpacing() : ppr.addNewSpacing();
spacing.setAfter(BigInteger.valueOf(120));//行间距后段为6磅
spacing.setBefore(BigInteger.valueOf(300));//行间距前段为15磅, 300是通过单位换算来的
// //设置行距类型为 EXACT
// spacing.setLineRule(STLineSpacingRule.EXACT);
// //1磅数是20
// spacing.setLine(BigInteger.valueOf(40*20));
// }
// spacing.setLine(BigInteger.valueOf(1*20));
}
//设置段落左对齐
if (align == null) {
@@ -1079,7 +1080,7 @@ public class WordUtil {
run.setText(text);
}
//设置字体样式,大小
run.setFontSize(10);
run.setFontSize(11);
run.setFontFamily("Blue Sky Noto Regular");
}
@@ -1134,7 +1135,7 @@ public class WordUtil {
}
//设置字体样式,大小
run.setFontSize(10);
run.setFontSize(11);
run.setFontFamily("Blue Sky Noto Regular");
}
@@ -338,7 +338,6 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
queryMap.put(key, queryMapTemp);
map.put("match",queryMap);
}
must.add(map);
}
}
@@ -350,11 +349,18 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
String key = entry.getKey();
String value = (String) entry.getValue();
if("technology_territory".equals(key) && ObjectUtils.isNotEmpty(value)){
Map<String, Object> queryMapNew = new HashMap<>();
Map<String, Object> queryMapTempNew = new HashMap<>();
queryMapTempNew.put(key, "*"+value.replaceAll(",","*")+"*");
queryMapNew.put("wildcard", queryMapTempNew);
must.add(queryMapNew);
JSONArray should = new JSONArray();
List<Map<String,Object>> mapList = new ArrayList<>();
for (String s : value.split(",")) {
Map<String,Object> map = new HashMap();
map.put(key,"*"+s+"*");
Map<String,Object> map1 = new HashMap<>();
map1.put("wildcard",map);
should.add(map1);
}
JSONObject jsonObject = jeroElasticsearchTemplate.buildBoolQuery(null, null, should);
must.add(jsonObject);
}else{
Map<String, Object> map = new HashMap<>();
Map<String, Object> queryMap = new HashMap<>();
@@ -520,6 +526,7 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
}
JSONObject sort = new JSONObject();
// JSONObject sort = new JSONObject(new LinkedHashMap<>());
if(StringUtils.isEmpty(selectValue) || StringUtils.equals(selectValue,SEARCH_FLAG)){
Map<String,Object> createTime = new HashMap<>();
Map<String,Object> createTime1 = new HashMap<>();
@@ -531,7 +538,12 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
Map<String,Object> score1 = new HashMap<>();
score.put("order","desc");
score1.put("_score",score);
// Map<String,Object> score2 = new HashMap<>();
// Map<String,Object> score3 = new HashMap<>();
// score2.put("order","desc");
// score3.put("_id",score2);
sort.putAll(score1);
// sort.putAll(score3);
}
log.info("搜索中心-全部索引,排序方式为:" + sort.toJSONString());
@@ -557,13 +569,13 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
if("serial_number".equals(field)){
map31.put("boost",10);
}else if("title".equals(field)){
map31.put("boost",10);
map31.put("boost",8);
}else if("file_text".equals(field)){
map31.put("boost",0.01);
}else if("content".equals(field)){
map31.put("boost",0.01);
}else if("file_name".equals(field)){
map31.put("boost",10);
map31.put("boost",5);
}
map31.put("value", selectValue);
map21.put(field + ".keyword", map31);
@@ -577,13 +589,13 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
if("serial_number".equals(field)){
map32.put("boost",10);
}else if("title".equals(field)){
map32.put("boost",10);
map32.put("boost",8);
}else if("file_text".equals(field)){
map32.put("boost",0.01);
}else if("content".equals(field)){
map32.put("boost",0.01);
}else if("file_name".equals(field)){
map32.put("boost",10);
map32.put("boost",5);
}
map32.put("query", selectValue);
map22.put(field, map32);
@@ -598,13 +610,13 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
if("serial_number".equals(field)){
map33.put("boost",10);
}else if("title".equals(field)){
map33.put("boost",10);
map33.put("boost",8);
}else if("file_text".equals(field)){
map33.put("boost",0.01);
}else if("content".equals(field)){
map33.put("boost",0.01);
}else if("file_name".equals(field)){
map33.put("boost",10);
map33.put("boost",5);
}
map33.put("query", selectValue);
map23.put(field, map33);
@@ -615,7 +627,21 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
//情况举例用户只记得中间那段字
Map<String, Object> map24 = new HashMap<>();
Map<String, Object> map44 = new HashMap<>();
map24.put(field, "*" + selectValue + "*");
Map<String, Object> map55 = new HashMap<>();
map55.put("value","*" + selectValue + "*");
if("serial_number".equals(field)){
map55.put("boost",10);
}else if("title".equals(field)){
map55.put("boost",8);
}else if("file_text".equals(field)){
map55.put("boost",0.01);
}else if("content".equals(field)){
map55.put("boost",0.01);
}else if("file_name".equals(field)){
map55.put("boost",5);
}
map24.put(field, map55);
map44.put("wildcard",map24);
queryMapJson.add(map44);
}
@@ -575,6 +575,14 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
entry.setValue(value);
}
}
//如果value中包含英文单双引号替换成中文的 英文的符号影响到法规技术评估流程了
if(entry.getValue() != null){
if(StringUtils.contains(entry.getValue().toString(),"'") || StringUtils.contains(entry.getValue().toString(),"\"")){
String key = entry.getKey();
String value = entry.getValue().toString().replaceAll("'", "").replaceAll("\"", "");
record1.put(key,value);
}
}
}
}
// 拼接文件名
@@ -178,4 +178,7 @@ public interface WorkFlowFeignClient {
@RequestMapping(value = "/bat-wkflow/task/getTaskAssigneeListByPrcIds",method = RequestMethod.GET)
List<String> getTaskAssigneeListByPrcIds(@RequestParam("actiProcInstIds") String actiProcInstIds);
@RequestMapping(value = "/bat-wkflow/deleteProcessInstanceByPrcIds",method = RequestMethod.GET)
Result<String> deleteProcessInstanceByPrcIds(@RequestParam("prcIds") String prcIds);
}
+377 -10
View File
@@ -5,7 +5,6 @@
"requires": true,
"packages": {
"": {
"name": "jero-web",
"version": "2.4.2",
"dependencies": {
"@antv/data-set": "^0.11.4",
@@ -19,6 +18,7 @@
"dayjs": "^1.8.0",
"dom-align": "1.12.0",
"echarts": "^5.0.2",
"element-ui": "^2.15.10",
"enquire.js": "^2.1.6",
"jquery": "^3.6.0",
"js-base64": "^3.7.2",
@@ -26,6 +26,7 @@
"jsencrypt": "^3.0.0-rc.1",
"lodash.get": "^4.4.2",
"lodash.pick": "^4.4.0",
"mammoth": "^1.4.21",
"md5": "^2.2.1",
"nprogress": "^0.2.0",
"tinymce": "^5.3.2",
@@ -40,6 +41,7 @@
"vue-ls": "^3.2.0",
"vue-photo-preview": "^1.1.3",
"vue-print-nb-jeecg": "^1.0.9",
"vue-quill-editor": "^3.0.6",
"vue-router": "^3.0.1",
"vue-splitpane": "^1.0.4",
"vuedraggable": "^2.20.0",
@@ -7447,7 +7449,6 @@
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz",
"integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -7797,6 +7798,11 @@
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
"integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw=="
},
"node_modules/dingbat-to-unicode": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dingbat-to-unicode/-/dingbat-to-unicode-1.0.1.tgz",
"integrity": "sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w=="
},
"node_modules/dir-glob": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
@@ -8019,6 +8025,14 @@
"ignored": "bin/ignored"
}
},
"node_modules/duck": {
"version": "0.1.12",
"resolved": "https://registry.npmjs.org/duck/-/duck-0.1.12.tgz",
"integrity": "sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==",
"dependencies": {
"underscore": "^1.13.1"
}
},
"node_modules/duplexer": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
@@ -8089,6 +8103,38 @@
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.644.tgz",
"integrity": "sha512-N7FLvjDPADxad+OXXBuYfcvDvCBG0aW8ZZGr7G91sZMviYbnQJFxdSvUus4SJ0K7Q8dzMxE+Wx1d/CrJIIJ0sw=="
},
"node_modules/element-ui": {
"version": "2.15.10",
"resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.15.10.tgz",
"integrity": "sha512-jmD++mU2wKXbisvx4fxOl2mHaU+HWHTAq/3Wf8x9Bwyu4GdDZPLABb+CGi3DWN6fPqdgRcd74aX39DO+YHObLw==",
"dependencies": {
"async-validator": "~1.8.1",
"babel-helper-vue-jsx-merge-props": "^2.0.0",
"deepmerge": "^1.2.0",
"normalize-wheel": "^1.0.1",
"resize-observer-polyfill": "^1.5.0",
"throttle-debounce": "^1.0.1"
},
"peerDependencies": {
"vue": "^2.5.17"
}
},
"node_modules/element-ui/node_modules/async-validator": {
"version": "1.8.5",
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz",
"integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
"dependencies": {
"babel-runtime": "6.x"
}
},
"node_modules/element-ui/node_modules/throttle-debounce": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz",
"integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg==",
"engines": {
"node": ">=4"
}
},
"node_modules/elliptic": {
"version": "6.5.4",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
@@ -9319,8 +9365,7 @@
"node_modules/extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
"node_modules/extend-shallow": {
"version": "3.0.2",
@@ -9506,6 +9551,11 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"node_modules/fast-diff": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz",
"integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig=="
},
"node_modules/fast-glob": {
"version": "2.2.7",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz",
@@ -10692,6 +10742,11 @@
"node": ">=0.10.0"
}
},
"node_modules/immediate": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
"integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
},
"node_modules/import-cwd": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
@@ -11517,6 +11572,17 @@
"verror": "1.10.0"
}
},
"node_modules/jszip": {
"version": "3.10.1",
"resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
"integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
"dependencies": {
"lie": "~3.3.0",
"pako": "~1.0.2",
"readable-stream": "~2.3.6",
"setimmediate": "^1.0.5"
}
},
"node_modules/killable": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
@@ -11675,6 +11741,14 @@
"node": ">= 0.8.0"
}
},
"node_modules/lie": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
"integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
"dependencies": {
"immediate": "~3.0.5"
}
},
"node_modules/lines-and-columns": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
@@ -11981,6 +12055,16 @@
"loose-envify": "cli.js"
}
},
"node_modules/lop": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/lop/-/lop-0.4.1.tgz",
"integrity": "sha512-9xyho9why2A2tzm5aIcMWKvzqKsnxrf9B5I+8O30olh6lQU8PH978LqZoI4++37RBgS1Em5i54v1TFs/3wnmXQ==",
"dependencies": {
"duck": "^0.1.12",
"option": "~0.2.1",
"underscore": "^1.13.1"
}
},
"node_modules/loud-rejection": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
@@ -12032,6 +12116,35 @@
"semver": "bin/semver.js"
}
},
"node_modules/mammoth": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/mammoth/-/mammoth-1.5.1.tgz",
"integrity": "sha512-7ZioZBf/1HjYrm1qZJOO+DD+rYxLvwrHS+HVOwW89hwIp+r6ZqJ/Eq2rXSS+8ezZ3/DuW6FUUp2Dfz6e7B2pBQ==",
"dependencies": {
"argparse": "~1.0.3",
"bluebird": "~3.4.0",
"dingbat-to-unicode": "^1.0.1",
"jszip": "^3.7.1",
"lop": "^0.4.1",
"path-is-absolute": "^1.0.0",
"sax": "~1.1.1",
"underscore": "^1.13.1",
"xmlbuilder": "^10.0.0"
},
"bin": {
"mammoth": "bin/mammoth"
}
},
"node_modules/mammoth/node_modules/bluebird": {
"version": "3.4.7",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
"integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA=="
},
"node_modules/mammoth/node_modules/sax": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.1.6.tgz",
"integrity": "sha512-8zci48uUQyfqynGDSkUMD7FCJB96hwLnlZOXlgs1l3TX+LW27t3psSWKUxC0fxVgA86i8tL4NwGcY1h/6t3ESg=="
},
"node_modules/map-cache": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
@@ -12769,6 +12882,11 @@
"node": ">=4"
}
},
"node_modules/normalize-wheel": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
"integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA=="
},
"node_modules/npm-run-path": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
@@ -13062,6 +13180,11 @@
"node": ">=4"
}
},
"node_modules/option": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/option/-/option-0.2.4.tgz",
"integrity": "sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A=="
},
"node_modules/optionator": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
@@ -13259,6 +13382,11 @@
"no-case": "^2.2.0"
}
},
"node_modules/parchment": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz",
"integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg=="
},
"node_modules/parent-module": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -16427,6 +16555,45 @@
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
},
"node_modules/quill": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz",
"integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==",
"dependencies": {
"clone": "^2.1.1",
"deep-equal": "^1.0.1",
"eventemitter3": "^2.0.3",
"extend": "^3.0.2",
"parchment": "^1.1.4",
"quill-delta": "^3.6.2"
}
},
"node_modules/quill-delta": {
"version": "3.6.3",
"resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz",
"integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==",
"dependencies": {
"deep-equal": "^1.0.1",
"extend": "^3.0.2",
"fast-diff": "1.1.2"
},
"engines": {
"node": ">=0.10"
}
},
"node_modules/quill/node_modules/clone": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
"integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
"engines": {
"node": ">=0.8"
}
},
"node_modules/quill/node_modules/eventemitter3": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz",
"integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg=="
},
"node_modules/raf": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
@@ -18953,6 +19120,11 @@
"node": ">=0.10.0"
}
},
"node_modules/underscore": {
"version": "1.13.6",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
"integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
},
"node_modules/unicode-canonical-property-names-ecmascript": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
@@ -20058,6 +20230,19 @@
"babel-plugin-transform-runtime": "^6.23.0"
}
},
"node_modules/vue-quill-editor": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/vue-quill-editor/-/vue-quill-editor-3.0.6.tgz",
"integrity": "sha512-g20oSZNWg8Hbu41Kinjd55e235qVWPLfg4NvsLW6d+DhgBTFbEuMpcWlUdrD6qT3+Noim6DRu18VLM9lVShXOQ==",
"dependencies": {
"object-assign": "^4.1.1",
"quill": "^1.3.4"
},
"engines": {
"node": ">= 4.0.0",
"npm": ">= 3.0.0"
}
},
"node_modules/vue-ref": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/vue-ref/-/vue-ref-2.0.0.tgz",
@@ -21124,6 +21309,14 @@
"resolved": "https://registry.npmjs.org/xe-utils/-/xe-utils-2.4.8.tgz",
"integrity": "sha512-/95ZaQK9GJE/EYrpMv9lgKdkEMQwWv4a4TF4dddi4gSzZ33vp/rZvzJNNV9XknaOkMizK9IBSX8CB/nL+SAk0Q=="
},
"node_modules/xmlbuilder": {
"version": "10.1.1",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-10.1.1.tgz",
"integrity": "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg==",
"engines": {
"node": ">=4.0"
}
},
"node_modules/xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
@@ -27565,8 +27758,7 @@
"deepmerge": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz",
"integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==",
"dev": true
"integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ=="
},
"default-gateway": {
"version": "5.0.5",
@@ -27837,6 +28029,11 @@
}
}
},
"dingbat-to-unicode": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dingbat-to-unicode/-/dingbat-to-unicode-1.0.1.tgz",
"integrity": "sha512-98l0sW87ZT58pU4i61wa2OHwxbiYSbuxsCBozaVnYX2iCnr3bLM3fIes1/ej7h1YdOKuKt/MLs706TVnALA65w=="
},
"dir-glob": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
@@ -28034,6 +28231,14 @@
"minimatch": "^3.0.4"
}
},
"duck": {
"version": "0.1.12",
"resolved": "https://registry.npmjs.org/duck/-/duck-0.1.12.tgz",
"integrity": "sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==",
"requires": {
"underscore": "^1.13.1"
}
},
"duplexer": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
@@ -28099,6 +28304,34 @@
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.644.tgz",
"integrity": "sha512-N7FLvjDPADxad+OXXBuYfcvDvCBG0aW8ZZGr7G91sZMviYbnQJFxdSvUus4SJ0K7Q8dzMxE+Wx1d/CrJIIJ0sw=="
},
"element-ui": {
"version": "2.15.10",
"resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.15.10.tgz",
"integrity": "sha512-jmD++mU2wKXbisvx4fxOl2mHaU+HWHTAq/3Wf8x9Bwyu4GdDZPLABb+CGi3DWN6fPqdgRcd74aX39DO+YHObLw==",
"requires": {
"async-validator": "~1.8.1",
"babel-helper-vue-jsx-merge-props": "^2.0.0",
"deepmerge": "^1.2.0",
"normalize-wheel": "^1.0.1",
"resize-observer-polyfill": "^1.5.0",
"throttle-debounce": "^1.0.1"
},
"dependencies": {
"async-validator": {
"version": "1.8.5",
"resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz",
"integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
"requires": {
"babel-runtime": "6.x"
}
},
"throttle-debounce": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz",
"integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg=="
}
}
},
"elliptic": {
"version": "6.5.4",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
@@ -29083,8 +29316,7 @@
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
"extend-shallow": {
"version": "3.0.2",
@@ -29233,6 +29465,11 @@
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
},
"fast-diff": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz",
"integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig=="
},
"fast-glob": {
"version": "2.2.7",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz",
@@ -30202,6 +30439,11 @@
"dev": true,
"optional": true
},
"immediate": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
"integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="
},
"import-cwd": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
@@ -30829,6 +31071,17 @@
"verror": "1.10.0"
}
},
"jszip": {
"version": "3.10.1",
"resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz",
"integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==",
"requires": {
"lie": "~3.3.0",
"pako": "~1.0.2",
"readable-stream": "~2.3.6",
"setimmediate": "^1.0.5"
}
},
"killable": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
@@ -30952,6 +31205,14 @@
"type-check": "~0.3.2"
}
},
"lie": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz",
"integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==",
"requires": {
"immediate": "~3.0.5"
}
},
"lines-and-columns": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
@@ -31219,6 +31480,16 @@
"js-tokens": "^3.0.0 || ^4.0.0"
}
},
"lop": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/lop/-/lop-0.4.1.tgz",
"integrity": "sha512-9xyho9why2A2tzm5aIcMWKvzqKsnxrf9B5I+8O30olh6lQU8PH978LqZoI4++37RBgS1Em5i54v1TFs/3wnmXQ==",
"requires": {
"duck": "^0.1.12",
"option": "~0.2.1",
"underscore": "^1.13.1"
}
},
"loud-rejection": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
@@ -31260,6 +31531,34 @@
}
}
},
"mammoth": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/mammoth/-/mammoth-1.5.1.tgz",
"integrity": "sha512-7ZioZBf/1HjYrm1qZJOO+DD+rYxLvwrHS+HVOwW89hwIp+r6ZqJ/Eq2rXSS+8ezZ3/DuW6FUUp2Dfz6e7B2pBQ==",
"requires": {
"argparse": "~1.0.3",
"bluebird": "~3.4.0",
"dingbat-to-unicode": "^1.0.1",
"jszip": "^3.7.1",
"lop": "^0.4.1",
"path-is-absolute": "^1.0.0",
"sax": "~1.1.1",
"underscore": "^1.13.1",
"xmlbuilder": "^10.0.0"
},
"dependencies": {
"bluebird": {
"version": "3.4.7",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.4.7.tgz",
"integrity": "sha512-iD3898SR7sWVRHbiQv+sHUtHnMvC1o3nW5rAcqnq3uOn07DSAppZYUkIGslDz6gXC7HfunPe7YVBgoEJASPcHA=="
},
"sax": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.1.6.tgz",
"integrity": "sha512-8zci48uUQyfqynGDSkUMD7FCJB96hwLnlZOXlgs1l3TX+LW27t3psSWKUxC0fxVgA86i8tL4NwGcY1h/6t3ESg=="
}
}
},
"map-cache": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
@@ -31878,6 +32177,11 @@
"sort-keys": "^1.0.0"
}
},
"normalize-wheel": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
"integrity": "sha512-1OnlAPZ3zgrk8B91HyRj+eVv+kS5u+Z0SCsak6Xil/kmgEia50ga7zfkumayonZrImffAxPU/5WcyGhzetHNPA=="
},
"npm-run-path": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
@@ -32092,6 +32396,11 @@
"is-wsl": "^1.1.0"
}
},
"option": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/option/-/option-0.2.4.tgz",
"integrity": "sha512-pkEqbDyl8ou5cpq+VsnQbe/WlEy5qS7xPzMS1U55OCG9KPvwFD46zDbxQIj3egJSFc3D+XhYOPUzz49zQAVy7A=="
},
"optionator": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
@@ -32251,6 +32560,11 @@
"no-case": "^2.2.0"
}
},
"parchment": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz",
"integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg=="
},
"parent-module": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -34870,6 +35184,41 @@
"resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ=="
},
"quill": {
"version": "1.3.7",
"resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz",
"integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==",
"requires": {
"clone": "^2.1.1",
"deep-equal": "^1.0.1",
"eventemitter3": "^2.0.3",
"extend": "^3.0.2",
"parchment": "^1.1.4",
"quill-delta": "^3.6.2"
},
"dependencies": {
"clone": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
"integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w=="
},
"eventemitter3": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz",
"integrity": "sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg=="
}
}
},
"quill-delta": {
"version": "3.6.3",
"resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz",
"integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==",
"requires": {
"deep-equal": "^1.0.1",
"extend": "^3.0.2",
"fast-diff": "1.1.2"
}
},
"raf": {
"version": "3.4.1",
"resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
@@ -36915,6 +37264,11 @@
}
}
},
"underscore": {
"version": "1.13.6",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
"integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
},
"unicode-canonical-property-names-ecmascript": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
@@ -37268,8 +37622,7 @@
"integrity": "sha512-ERAREN+6k/ywrwT+swcMo4CDIAq6dBjnB0+lhmsSfaip06BGHSBfNKg6yl7/4GJ9Nk2kioUw3llNhEboJuIKmQ==",
"requires": {
"@types/node": "*",
"viser": "^2.0.0",
"vue": "^2.5.3"
"viser": "^2.0.0"
}
},
"vm-browserify": {
@@ -37814,6 +38167,15 @@
"babel-plugin-transform-runtime": "^6.23.0"
}
},
"vue-quill-editor": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/vue-quill-editor/-/vue-quill-editor-3.0.6.tgz",
"integrity": "sha512-g20oSZNWg8Hbu41Kinjd55e235qVWPLfg4NvsLW6d+DhgBTFbEuMpcWlUdrD6qT3+Noim6DRu18VLM9lVShXOQ==",
"requires": {
"object-assign": "^4.1.1",
"quill": "^1.3.4"
}
},
"vue-ref": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/vue-ref/-/vue-ref-2.0.0.tgz",
@@ -38665,6 +39027,11 @@
"resolved": "https://registry.npmjs.org/xe-utils/-/xe-utils-2.4.8.tgz",
"integrity": "sha512-/95ZaQK9GJE/EYrpMv9lgKdkEMQwWv4a4TF4dddi4gSzZ33vp/rZvzJNNV9XknaOkMizK9IBSX8CB/nL+SAk0Q=="
},
"xmlbuilder": {
"version": "10.1.1",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-10.1.1.tgz",
"integrity": "sha512-OyzrcFLL/nb6fMGHbiRDuPup9ljBycsdCypwuyg5AAHvyWzGfChJpCXMG88AGTIMFhGZ9RccFN1e6lhg3hkwKg=="
},
"xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+2
View File
@@ -21,6 +21,7 @@
"dayjs": "^1.8.0",
"dom-align": "1.12.0",
"echarts": "^5.0.2",
"element-ui": "^2.15.10",
"enquire.js": "^2.1.6",
"jquery": "^3.6.0",
"js-base64": "^3.7.2",
@@ -46,6 +47,7 @@
"vue-quill-editor": "^3.0.6",
"vue-router": "^3.0.1",
"vue-splitpane": "^1.0.4",
"vue-virtual-scroll-list": "^2.3.4",
"vuedraggable": "^2.20.0",
"vuex": "^3.1.0",
"vxe-table": "2.9.13",
+2
View File
@@ -1315,4 +1315,6 @@ module.exports = {
consistentAssessment:'Consistent assessment',
viewConsistentAssessment:'View Consistent Assessment',
viewAll:'View All',
endProcess:'End Process',
thereForTheCurrentlySelectedData:'There is no standard breakdown for the currently selected data',
}
+2
View File
@@ -1416,4 +1416,6 @@ module.exports = {
consistentAssessment:'一致评估',
viewConsistentAssessment:'查看一致评估',
viewAll:'查看全部',
endProcess:'结束流程',
thereForTheCurrentlySelectedData:'当前所选数据暂无标准分解单',
}
@@ -31,68 +31,63 @@
<a-input-search style="margin-bottom: 8px" :placeholder="$t('NodeQuickLookup')"
v-model="searchModel" @search="onSearch"/>
<div class="drawer-content">
<!-- <a-checkbox-group v-model="checkboxList">-->
<!-- <vxe-list height="540" class="my-tree" :loading="loading" :data="gData">-->
<!-- <template #default="{ items }">-->
<!-- <div-->
<!-- class="my-tree-item"-->
<!-- v-for="item in items"-->
<!-- :key="item.id"-->
<!-- :class="[`level-${item._LEVEL}`, {'has-child': item._HAS_CHILDREN, 'is-expand': item._EXPAND}]"-->
<!-- :style="{paddingLeft: `${item._LEVEL * 20}px`}">-->
<!-- <a-icon type="caret-right"-->
<!-- v-if="item._HAS_CHILDREN && !item._EXPAND"-->
<!-- class="caret-right"-->
<!-- @click="toggleTreeNode(item)"/>-->
<!-- <a-icon type="caret-down"-->
<!-- class="caret-right"-->
<!-- v-if="item._HAS_CHILDREN && item._EXPAND"-->
<!-- @click="toggleTreeNode(item)"/>-->
<!-- <a-checkbox-->
<!-- :indeterminate="item._HAS_CHILDREN"-->
<!-- :checked="item._HAS_CHILDREN"-->
<!-- class="checkbox"-->
<!-- :value="item.id">-->
<!-- </a-checkbox>-->
<!-- &lt;!&ndash; <i class="tree-icon fa fa-chevron-right" @click="toggleTreeNode(item)"></i>&ndash;&gt;-->
<!-- <span class="tree-label">{{ item.name }}</span>-->
<!-- </div>-->
<!-- </template>-->
<!-- </vxe-list>-->
<!-- </a-checkbox-group>-->
<a-tree
style="margin-bottom: 60px;height: 600px"
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
<virtualNodeTree
v-if="treeVisible"
checkable
:loading="loading"
:tree-data="gData"
@check="onCheck"
@expand="onExpand"
v-model:checkedKeys="defaultCheckedKeys"
:defaultExpandedKeys="defaultExpandedKeys"
>
</a-tree>
:keeps="40"
show-checkbox
v-model="checkboxList"
class="treeWrap"
:props="{
isLeaf: 'leaf'
}"
:defaultCheckedKeys="defaultCheckedKeys"
:check-strictly="false"
node-key="id"
@check-change="handleCheckChange"
:data.sync="gData">
<span slot-scope="{ data }">
<span>{{ data.title }}</span>
</span>
</virtualNodeTree>
<!-- <a-tree-->
<!-- style="margin-bottom: 60px;height: 600px"-->
<!-- v-if="treeVisible"-->
<!-- checkable-->
<!-- checkStrictly-->
<!-- :loading="loading"-->
<!-- :tree-data="gData"-->
<!-- @check="onCheck"-->
<!-- @expand="onExpand"-->
<!-- v-model:checkedKeys="defaultCheckedKeys"-->
<!-- :defaultExpandedKeys="defaultExpandedKeys"-->
<!-- >-->
<!-- </a-tree>-->
</div>
<div class="drawer-bootom-button">
<a-button @click="handleCancel" style="margin-right: 16px">{{$t('cancel')}}</a-button>
<a-button @click="handleSubmit" type="primary">{{$t('submit')}}</a-button>
</div>
</a-drawer>
</div>
</template>
<script>
import { getAction, postAction } from '@/api/manage'
import virtualNodeTree from '@/components/virtualNodeTree/tree'
import XEUtils from 'xe-utils'
import VXETable from 'vxe-table'
export default {
name: 'index',
props: ['query', 'value', 'personneQuery', 'isSingleChoice', 'isInput', 'isClass', 'isDelete', 'disabled'],
props: ['query', 'value', 'personneQuery', 'isSingleChoice', 'isInput', 'isClass', 'isDelete', 'disabled', 'selectDepartment'],
components: {
virtualNodeTree
},
data() {
return {
loading: true,
loading: false,
gData: [],
autoExpandParent: true,
checkboxList: [],
@@ -107,71 +102,78 @@
defaultExpandedKeys: [],
defaultCheckedKeys: [],
defaultCheckedKeysName: [],
content: []
content: [],
dataList: []
}
},
mounted() {
},
methods: {
// loadTree(size) {
// this.loading = true
// setTimeout(() => {
// const trerData = JSON.parse(JSON.stringify(this.gData))
// // 将树结构拍平构建列表树结构
// XEUtils.eachTree(trerData, (item, index, items, paths, parent, nodes) => {
// // 层级
// item._LEVEL = nodes.length - 1
// // 是否展开
// item._EXPAND = false
// // 是否可视
// item._VISIBLE = !item._LEVEL
// // 是否有子节点
// item._HAS_CHILDREN = item.children && item.children.length > 0
// // 是否叶子节点
// item._IS_LEAF = !item._HAS_CHILDREN
// })
// this.tree = trerData
// this.refreshTree()
// this.loading = false
// }, 200)
// },
// // 切换树节点的展开收缩
// toggleTreeNode(row) {
// if (row._HAS_CHILDREN) {
// this.setTreeExpand(row, !row._EXPAND)
// }
// },
// setTreeExpand(row, isExpand) {
// const matchObj = XEUtils.findTree(this.tree, item => item === row)
// row._EXPAND = isExpand
// if (matchObj) {
// XEUtils.eachTree(matchObj.item.children, (item, index, items, path, parent) => {
// item._VISIBLE = parent ? parent._EXPAND && parent._VISIBLE : isExpand
// })
// }
// this.refreshTree()
// },
// refreshTree() {
// const treeList = XEUtils.toTreeArray(this.tree)
// this.fullList = treeList
// this.gData = treeList.filter(item => item._VISIBLE)
// },
handleCheckChange(val, checked, indeterminate) {
if (checked) {
this.userName.push(val.title)
this.userIds.push(val.id)
} else {
for (let i = 0; i < this.userName.length; i++) {
if (this.userName[i] == val.title) {
this.userName.splice(i, 1)
i--
}
}
for (let i = 0; i < this.userIds.length; i++) {
if (this.userIds[i] == val.id) {
this.userIds.splice(i, 1)
i--
}
}
}
},
standardClick() {
this.visible = true
this.treeVisible = false
this.departId = ''
this.searchModel = ''
this.userIds = []
this.userName = []
// let gData = localStorage.getItem('gData')
// if (gData) {
// this.gData = this.toTree(JSON.parse(gData))
// this.treeVisible = true
// this.loadTree()
// } else {
this.queryDepartUserTreeList(1)
// }
this.visible = true
this.userIds = []
let gData = localStorage.getItem('gData')
if (gData) {
let dataList = JSON.parse(gData)
if (!this.selectDepartment) {
dataList.forEach(res => {
if (res.type == 'Depart') {
res.disabled = true
}
})
}
this.dataList = this.toTree(dataList)
}
setTimeout(() => {
if (gData) {
this.gData = this.dataList
this.gData = [...this.gData]
// this.treeVisible = true
if (this.personneQuery[this.query.db_field_name + 'Name']) {
this.userName = this.personneQuery[this.query.db_field_name + 'Name'].split(',')
} else if (this.personneQuery[this.query.db_field_name]) {
this.userName = this.personneQuery[this.query.db_field_name].split(',')
} else {
this.userName = []
}
if (this.personneQuery[this.query.db_field_name + '_id']) {
this.userIds = this.personneQuery[this.query.db_field_name + '_id'].split(',')
} else if (this.personneQuery[this.query.db_field_name]) {
this.userIds = this.personneQuery[this.query.db_field_name].split(',')
} else {
this.userIds = []
}
this.defaultCheckedKeys = this.userIds
this.defaultCheckedKeys = [...this.defaultCheckedKeys]
this.treeVisible = true
} else {
this.queryDepartUserTreeList(1)
}
}, 200)
},
//将数据拼成树形结构
toTree(config) {
@@ -213,7 +215,7 @@
// },
onCheck(checkedKeys, info) {
this.userIds = checkedKeys
this.userIds = checkedKeys.checked
this.userName = []
if (this.userIds.length > 0) {
for (let i = 0; i < this.userIds.length; i++) {
@@ -281,6 +283,12 @@
}
let userIds = JSON.parse(JSON.stringify(this.userIds))
let userName = JSON.parse(JSON.stringify(this.userName))
userName = userName.filter(function(item, index) {
return userName.indexOf(item) === index // 因为indexOf 只能查找到第一个
})
userIds = userIds.filter(function(item, index) {
return userIds.indexOf(item) === index // 因为indexOf 只能查找到第一个
})
this.$emit('input', userName.join(','))
this.$emit('change', this.query.db_field_name, userIds.join(','), this.query.subscript)
this.visible = false
@@ -298,88 +306,132 @@
this.defaultCheckedKeys = []
},
onSearch(e) {
this.gData = []
this.departId = ''
this.visibleTree = false
if (e) {
this.getUserAndDepart()
} else {
this.treeVisible = false
this.queryDepartUserTreeList(2)
}
},
getUserAndDepart() {
getAction('sys/user/getUserAndDepart', { name: this.searchModel }).then((res) => {
if (res) {
this.gData = res.filter(ele => ele.flag === 'DEPART')
} else {
this.gData = []
}
this.visibleTree = true
this.loading = true
// this.treeVisible = false
let p = new Promise((resolve, reject) => {
resolve()
})
},
onExpand(selectedKeys, val) {
if (this.searchModel == '' || !this.searchModel) {
if (val.expanded) {
if (this.departId == val.node.value) {
p.then(() => {
let gData = localStorage.getItem('gData')
let content = []
if (gData) {
if (e) {
JSON.parse(gData).forEach(res => {
if (res.type == 'User') {
if (res.name.includes(e)) {
content.push(res)
}
} else if (res.type == 'Depart') {
content.push(res)
}
})
this.gData = this.toTree(content)
} else {
this.departId = val.node.value
this.queryDepartUserTreeList(2)
this.gData = this.toTree(JSON.parse(gData))
}
}
}
this.defaultCheckedKeys = this.userIds
this.defaultCheckedKeys = [...this.defaultCheckedKeys]
// this.treeVisible = true
this.loading = false
})
// this.gData = []
// this.departId = ''
// this.visibleTree = false
// if (e) {
// this.getUserAndDepart()
// } else {
// this.treeVisible = false
// this.queryDepartUserTreeList(2)
// }
},
// getUserAndDepart() {
// getAction('sys/user/getUserAndDepart', { name: this.searchModel }).then((res) => {
// if (res) {
// this.gData = res.filter(ele => ele.flag === 'DEPART')
// } else {
// this.gData = []
// }
// this.visibleTree = true
// })
// },
// onExpand(selectedKeys, val) {
// if (this.searchModel == '' || !this.searchModel) {
// if (val.expanded) {
// if (this.departId == val.node.value) {
// } else {
// this.departId = val.node.value
// this.queryDepartUserTreeList(2)
// }
// }
// }
// },
queryDepartUserTreeList(num) {
let gData = JSON.parse(JSON.stringify(this.gData))
if (gData && gData.length > 0) {
gData = JSON.stringify(gData)
} else {
gData = ''
}
// let gData = JSON.parse(JSON.stringify(this.gData))
// if (gData && gData.length > 0) {
// gData = JSON.stringify(gData)
// } else {
// gData = ''
// }
this.confirmLoading = true
this.loading = true
//queryDepartUserTreeList
//queryUserTreeList
postAction('sys/user/queryDepartUserTreeList', {
departId: this.departId,
json: gData,
flag: '1'
getAction('sys/user/queryUserTreeList', {
// departId: this.departId,
// json: gData,
// flag: '1'
}).then((res) => {
this.confirmLoading = false
if (res.success) {
this.loading = false
// localStorage.setItem('gData', JSON.stringify(res.result))
this.gData = res.result
// this.toTree(dataList)
let content = JSON.parse(JSON.stringify(res.result))
if (!this.selectDepartment) {
res.result.forEach(res => {
if (res.type == 'Depart') {
res.disabled = true
}
})
}
localStorage.removeItem('gData')
localStorage.setItem('gData', JSON.stringify(content))
this.gData = this.toTree(res.result)
console.log(this.gData)
this.gData = [...this.gData]
// this.gData[0].isLeaf = false
this.defaultExpandedKeys = [this.departId]
// this.defaultExpandedKeys = [this.departId]
if (num == 1) {
if (this.userName && this.userName.length == 0) {
if (this.personneQuery[this.query.db_field_name + 'Name']) {
this.userName = this.personneQuery[this.query.db_field_name + 'Name'].split(',')
} else if (this.personneQuery[this.query.db_field_name]) {
this.userName = this.personneQuery[this.query.db_field_name].split(',')
} else {
this.userName = []
}
// if (this.userName && this.userName.length == 0) {
if (this.personneQuery[this.query.db_field_name + 'Name']) {
this.userName = this.personneQuery[this.query.db_field_name + 'Name'].split(',')
} else if (this.personneQuery[this.query.db_field_name]) {
this.userName = this.personneQuery[this.query.db_field_name].split(',')
} else {
this.userName = []
}
if (this.userIds && this.userIds.length == 0) {
if (this.personneQuery[this.query.db_field_name + '_id']) {
this.userIds = this.personneQuery[this.query.db_field_name + '_id'].split(',')
} else if (this.personneQuery[this.query.db_field_name]) {
this.userIds = this.personneQuery[this.query.db_field_name].split(',')
} else {
this.userIds = []
}
// }
// if (this.userIds && this.userIds.length == 0) {
if (this.personneQuery[this.query.db_field_name + '_id']) {
this.userIds = this.personneQuery[this.query.db_field_name + '_id'].split(',')
} else if (this.personneQuery[this.query.db_field_name]) {
this.userIds = this.personneQuery[this.query.db_field_name].split(',')
} else {
this.userIds = []
}
// }
this.defaultCheckedKeys = this.userIds
this.defaultCheckedKeysName = []
if (this.defaultCheckedKeys.length > 0) {
for (let i = 0; i < this.defaultCheckedKeys.length; i++) {
this.defaultCheckedKeysName.push({
id: this.defaultCheckedKeys[i],
name: this.userName[i]
})
}
}
this.defaultCheckedKeys = [...this.defaultCheckedKeys]
// this.defaultCheckedKeysName = []
// if (this.defaultCheckedKeys.length > 0) {
// for (let i = 0; i < this.defaultCheckedKeys.length; i++) {
// this.defaultCheckedKeysName.push({
// id: this.defaultCheckedKeys[i],
// name: this.userName[i]
// })
// }
// }
}
this.treeVisible = true
} else {
@@ -426,6 +478,7 @@
.drawer-content {
height: calc(100% - 60px);
overflow: auto;
position: relative;
}
.my-tree {
@@ -469,4 +522,8 @@
width: 100%;
height: 600px;
}
.treeWrap {
height: 600px;
}
</style>
@@ -24,7 +24,10 @@
<span style='padding-right: 20px'>{{ item.db_field_txt }} </span>
<a-button @click='onClickSee(item)'>{{$t('See')}}</a-button>
</div>
<span slot="ParameterDescription" slot-scope="text,record" :title="text">
<a-button @click='onClickTitle(record)'>{{$t('See')}}</a-button>
</span>
<!-- <span slot="operationbtn" slot-scope="record">-->
<!-- <span v-if='currentPersonRole === "homo"'>-->
<!--&lt;!&ndash; 认证工程师 &ndash;&gt;-->
@@ -130,6 +133,17 @@
</div>
</div>
</a-modal>
<!-- 参数说明--->
<a-modal v-model="seeVisibleView" :title="$t('ParameterDescription')" width='550px' :footer="null">
<div class="content-text">
<div class="textfield">
<span class="textfield-left" :title="$t('ParameterDescription')">{{$t('ParameterDescription')}}:</span>
<span class="textfield-right"
:title="this.description"
>{{this.description}}</span>
</div>
</div>
</a-modal>
</div>
</template>
@@ -232,6 +246,7 @@
sdt: 0, // 工程接口人
dre: 0, // 填写人
areaVisible: false,
seeVisibleView:false,
form: {},
rules: {
querySdt: [
@@ -278,6 +293,12 @@
return 'rowClassRed'
}
},
onClickTitle(val){
console.log(val)
this.description = val.description
this.seeVisibleView = true
},
pageOnChange(page, pageSize) {
this.pageNo = page
// this.$emit('handlePreservation')
@@ -492,6 +513,11 @@
customRender: 'operationbtn'
}
}
if(res.click2){
this.columns[index].scopedSlots = {
customRender: 'ParameterDescription'
}
}
}
})
this.columns = [...this.columns]
@@ -705,6 +731,34 @@
::v-deep .ant-table-body {
background: transparent!important;
}
.textfield {
width: 100%;
margin-bottom: 8px;
display: flex;
.textfield-left {
width: 80px;
display: inline-block;
font-size: 16px;
color: #040B29;
font-weight: 400;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
}
.textfield-right {
display: inline-block;
font-size: 16px;
//text-overflow: ellipsis;
//white-space: nowrap;
width: 100%;
overflow: hidden;
word-break: break-word;
color: #040B29;
font-weight: 400;
}
}
.content-text {
width: 100%;
display: flex;
@@ -0,0 +1,116 @@
import { getNodeKey } from '../model/util';
export default {
methods: {
creator(parent, nodeTag) {
const node = this[nodeTag];
if (parent.isTree) {
this.tree = parent;
} else {
this.tree = parent.tree;
}
const tree = this.tree;
if (!tree) {
console.warn('Can not find node\'s tree.');
}
const props = tree.props || {};
const childrenKey = props['children'] || 'children';
this.$watch(`${nodeTag}.data.${childrenKey}`, () => {
node.updateChildren();
});
if (node.expanded) {
this.expanded = true;
this.childNodeRendered = true;
}
if (this.tree.accordion) {
this.$on('tree-node-expand', currentNode => {
if (node !== currentNode) {
node.collapse();
}
});
}
},
getNodeKey(node) {
return getNodeKey(this.tree.nodeKey, node.data);
},
handleSelectChange(checked, indeterminate) {
const node = this.node || this.source;
if (this.oldChecked !== checked && this.oldIndeterminate !== indeterminate) {
this.tree.$emit('check-change', node.data, checked, indeterminate);
}
this.oldChecked = checked;
this.indeterminate = indeterminate;
},
handleClick() {
const node = this.node || this.source;
const store = this.tree.store;
store.setCurrentNode(node);
this.tree.$emit('current-change', store.currentNode ? store.currentNode.data : null, store.currentNode);
this.tree.currentNode = this;
if (this.tree.expandOnClickNode) {
this.handleExpandIconClick();
}
if (this.tree.checkOnClickNode && !node.disabled) {
this.handleCheckChange(null, {
target: { checked: !node.checked }
});
}
this.tree.$emit('node-click', node.data, node, this);
},
handleContextMenu(event) {
const node = this.node || this.source;
if (this.tree._events['node-contextmenu'] && this.tree._events['node-contextmenu'].length > 0) {
event.stopPropagation();
event.preventDefault();
}
this.tree.$emit('node-contextmenu', event, node.data, node, this);
},
handleExpandIconClick() {
const node = this.node || this.source;
if (node.isLeaf) return;
if (this.expanded) {
this.tree.$emit('node-collapse', node.data, node, this);
node.collapse();
} else {
node.expand();
this.$emit('node-expand', node.data, node, this);
}
},
handleCheckChange(_, ev) {
const node = this.node || this.source;
node.setChecked(ev.target.checked, !this.tree.checkStrictly);
this.$nextTick(() => {
const store = this.tree.store;
this.tree.$emit('check', node.data, {
checkedNodes: store.getCheckedNodes(),
checkedKeys: store.getCheckedKeys(),
halfCheckedNodes: store.getHalfCheckedNodes(),
halfCheckedKeys: store.getHalfCheckedKeys()
});
});
},
handleChildNodeExpand(nodeData, node, instance) {
this.broadcast('ElTreeNode', 'tree-node-expand', node);
this.tree.$emit('node-expand', nodeData, node, instance);
}
}
};
@@ -0,0 +1,486 @@
import objectAssign from 'element-ui/src/utils/merge';
import { markNodeData, NODE_KEY } from './util';
import { arrayFindIndex } from 'element-ui/src/utils/util';
export const getChildState = node => {
let all = true;
let none = true;
let allWithoutDisable = true;
for (let i = 0, j = node.length; i < j; i++) {
const n = node[i];
if (n.checked !== true || n.indeterminate) {
all = false;
if (!n.disabled) {
allWithoutDisable = false;
}
}
if (n.checked !== false || n.indeterminate) {
none = false;
}
}
return { all, none, allWithoutDisable, half: !all && !none };
};
const reInitChecked = function(node) {
if (node.childNodes.length === 0) return;
const {all, none, half} = getChildState(node.childNodes);
if (all) {
node.checked = true;
node.indeterminate = false;
} else if (half) {
node.checked = false;
node.indeterminate = true;
} else if (none) {
node.checked = false;
node.indeterminate = false;
}
const parent = node.parent;
if (!parent || parent.level === 0) return;
if (!node.store.checkStrictly) {
reInitChecked(parent);
}
};
const getPropertyFromData = function(node, prop) {
const props = node.store.props;
const data = node.data || {};
const config = props[prop];
if (typeof config === 'function') {
return config(data, node);
} else if (typeof config === 'string') {
return data[config];
} else if (typeof config === 'undefined') {
const dataProp = data[prop];
return dataProp === undefined ? '' : dataProp;
}
};
let nodeIdSeed = 0;
export default class Node {
constructor(options) {
this.id = nodeIdSeed++;
this.text = null;
this.checked = false;
this.indeterminate = false;
this.data = null;
this.expanded = false;
this.parent = null;
this.visible = true;
this.isCurrent = false;
// console.log(22, Object.prototype.hasOwnProperty.call(options, name));
for (let name in options) {
if (Object.prototype.hasOwnProperty.call(options, name)) {
// if (options.hasOwnProperty(name)) {
this[name] = options[name];
}
}
// internal
this.level = 0;
this.loaded = false;
this.childNodes = [];
this.loading = false;
if (this.parent) {
this.level = this.parent.level + 1;
}
const store = this.store;
if (!store) {
throw new Error('[Node]store is required!');
}
store.registerNode(this);
const props = store.props;
if (props && typeof props.isLeaf !== 'undefined') {
const isLeaf = getPropertyFromData(this, 'isLeaf');
if (typeof isLeaf === 'boolean') {
this.isLeafByUser = isLeaf;
}
}
if (store.lazy !== true && this.data) {
this.setData(this.data);
if (store.defaultExpandAll) {
this.expanded = true;
}
} else if (this.level > 0 && store.lazy && store.defaultExpandAll) {
this.expand();
}
if (!Array.isArray(this.data)) {
markNodeData(this, this.data);
}
if (!this.data) return;
const defaultExpandedKeys = store.defaultExpandedKeys;
const key = store.key;
if (key && defaultExpandedKeys && defaultExpandedKeys.indexOf(this.key) !== -1) {
this.expand(null, store.autoExpandParent);
}
if (key && store.currentNodeKey !== undefined && this.key === store.currentNodeKey) {
store.currentNode = this;
store.currentNode.isCurrent = true;
}
if (store.lazy) {
store._initDefaultCheckedNode(this);
}
this.updateLeafState();
}
setData(data) {
if (!Array.isArray(data)) {
markNodeData(this, data);
}
this.data = data;
this.childNodes = [];
let children;
if (this.level === 0 && this.data instanceof Array) {
children = this.data;
} else {
children = getPropertyFromData(this, 'children') || [];
}
for (let i = 0, j = children.length; i < j; i++) {
this.insertChild({ data: children[i] });
}
}
get label() {
return getPropertyFromData(this, 'label');
}
get key() {
const nodeKey = this.store.key;
if (this.data) return this.data[nodeKey];
return null;
}
get disabled() {
return getPropertyFromData(this, 'disabled');
}
get nextSibling() {
const parent = this.parent;
if (parent) {
const index = parent.childNodes.indexOf(this);
if (index > -1) {
return parent.childNodes[index + 1];
}
}
return null;
}
get previousSibling() {
const parent = this.parent;
if (parent) {
const index = parent.childNodes.indexOf(this);
if (index > -1) {
return index > 0 ? parent.childNodes[index - 1] : null;
}
}
return null;
}
contains(target, deep = true) {
const walk = function(parent) {
const children = parent.childNodes || [];
let result = false;
for (let i = 0, j = children.length; i < j; i++) {
const child = children[i];
if (child === target || (deep && walk(child))) {
result = true;
break;
}
}
return result;
};
return walk(this);
}
remove() {
const parent = this.parent;
if (parent) {
parent.removeChild(this);
}
}
insertChild(child, index, batch) {
if (!child) throw new Error('insertChild error: child is required.');
if (!(child instanceof Node)) {
if (!batch) {
const children = this.getChildren(true) || [];
if (children.indexOf(child.data) === -1) {
if (typeof index === 'undefined' || index < 0) {
children.push(child.data);
} else {
children.splice(index, 0, child.data);
}
}
}
objectAssign(child, {
parent: this,
store: this.store
});
child = new Node(child);
}
child.level = this.level + 1;
if (typeof index === 'undefined' || index < 0) {
this.childNodes.push(child);
} else {
this.childNodes.splice(index, 0, child);
}
this.updateLeafState();
}
insertBefore(child, ref) {
let index;
if (ref) {
index = this.childNodes.indexOf(ref);
}
this.insertChild(child, index);
}
insertAfter(child, ref) {
let index;
if (ref) {
index = this.childNodes.indexOf(ref);
if (index !== -1) index += 1;
}
this.insertChild(child, index);
}
removeChild(child) {
const children = this.getChildren() || [];
const dataIndex = children.indexOf(child.data);
if (dataIndex > -1) {
children.splice(dataIndex, 1);
}
const index = this.childNodes.indexOf(child);
if (index > -1) {
this.store && this.store.deregisterNode(child);
child.parent = null;
this.childNodes.splice(index, 1);
}
this.updateLeafState();
}
removeChildByData(data) {
let targetNode = null;
for (let i = 0; i < this.childNodes.length; i++) {
if (this.childNodes[i].data === data) {
targetNode = this.childNodes[i];
break;
}
}
if (targetNode) {
this.removeChild(targetNode);
}
}
expand(callback, expandParent) {
const done = () => {
if (expandParent) {
let parent = this.parent;
while (parent.level > 0) {
parent.expanded = true;
parent = parent.parent;
}
}
this.expanded = true;
if (callback) callback();
};
if (this.shouldLoadData()) {
this.loadData((data) => {
if (data instanceof Array) {
if (this.checked) {
this.setChecked(true, true);
} else if (!this.store.checkStrictly) {
reInitChecked(this);
}
done();
}
});
} else {
done();
}
}
doCreateChildren(array, defaultProps = {}) {
array.forEach((item) => {
this.insertChild(objectAssign({ data: item }, defaultProps), undefined, true);
});
}
collapse() {
this.expanded = false;
}
shouldLoadData() {
return this.store.lazy === true && this.store.load && !this.loaded;
}
updateLeafState() {
if (this.store.lazy === true && this.loaded !== true && typeof this.isLeafByUser !== 'undefined') {
this.isLeaf = this.isLeafByUser;
return;
}
const childNodes = this.childNodes;
if (!this.store.lazy || (this.store.lazy === true && this.loaded === true)) {
this.isLeaf = !childNodes || childNodes.length === 0;
return;
}
this.isLeaf = false;
}
setChecked(value, deep, recursion, passValue) {
this.indeterminate = value === 'half';
this.checked = value === true;
if (this.store.checkStrictly) return;
if (!(this.shouldLoadData() && !this.store.checkDescendants)) {
let { all, allWithoutDisable } = getChildState(this.childNodes);
if (!this.isLeaf && (!all && allWithoutDisable)) {
this.checked = false;
value = false;
}
const handleDescendants = () => {
if (deep) {
const childNodes = this.childNodes;
for (let i = 0, j = childNodes.length; i < j; i++) {
const child = childNodes[i];
passValue = passValue || value !== false;
const isCheck = child.disabled ? child.checked : passValue;
child.setChecked(isCheck, deep, true, passValue);
}
const { half, all } = getChildState(childNodes);
if (!all) {
this.checked = all;
this.indeterminate = half;
}
}
};
if (this.shouldLoadData()) {
// Only work on lazy load data.
this.loadData(() => {
handleDescendants();
reInitChecked(this);
}, {
checked: value !== false
});
return;
} else {
handleDescendants();
}
}
const parent = this.parent;
if (!parent || parent.level === 0) return;
if (!recursion) {
reInitChecked(parent);
}
}
getChildren(forceInit = false) { // this is data
if (this.level === 0) return this.data;
const data = this.data;
if (!data) return null;
const props = this.store.props;
let children = 'children';
if (props) {
children = props.children || 'children';
}
if (data[children] === undefined) {
data[children] = null;
}
if (forceInit && !data[children]) {
data[children] = [];
}
return data[children];
}
updateChildren() {
const newData = this.getChildren() || [];
const oldData = this.childNodes.map((node) => node.data);
const newDataMap = {};
const newNodes = [];
newData.forEach((item, index) => {
const key = item[NODE_KEY];
const isNodeExists = !!key && arrayFindIndex(oldData, data => data[NODE_KEY] === key) >= 0;
if (isNodeExists) {
newDataMap[key] = { index, data: item };
} else {
newNodes.push({ index, data: item });
}
});
if (!this.store.lazy) {
oldData.forEach((item) => {
if (!newDataMap[item[NODE_KEY]]) this.removeChildByData(item);
});
}
newNodes.forEach(({ index, data }) => {
this.insertChild({ data }, index);
});
this.updateLeafState();
}
loadData(callback, defaultProps = {}) {
if (this.store.lazy === true && this.store.load && !this.loaded && (!this.loading || Object.keys(defaultProps).length)) {
this.loading = true;
const resolve = (children) => {
this.loaded = true;
this.loading = false;
this.childNodes = [];
this.doCreateChildren(children, defaultProps);
this.updateLeafState();
if (callback) {
callback.call(this, children);
}
};
this.store.load(this, resolve);
} else {
if (callback) {
callback.call(this);
}
}
}
}
@@ -0,0 +1,342 @@
import Node from './node';
import { getNodeKey } from './util';
export default class TreeStore {
constructor(options) {
this.currentNode = null;
this.currentNodeKey = null;
for (let option in options) {
if (Object.prototype.hasOwnProperty.call(options, option)) {
// if (options.hasOwnProperty(option)) {
this[option] = options[option];
}
}
this.nodesMap = {};
this.root = new Node({
data: this.data,
store: this
});
if (this.lazy && this.load) {
const loadFn = this.load;
loadFn(this.root, (data) => {
this.root.doCreateChildren(data);
this._initDefaultCheckedNodes();
});
} else {
this._initDefaultCheckedNodes();
}
}
filter(value) {
const filterNodeMethod = this.filterNodeMethod;
const lazy = this.lazy;
const traverse = function(node) {
const childNodes = node.root ? node.root.childNodes : node.childNodes;
childNodes.forEach((child) => {
child.visible = filterNodeMethod.call(child, value, child.data, child);
traverse(child);
});
if (!node.visible && childNodes.length) {
let allHidden = true;
allHidden = !childNodes.some(child => child.visible);
if (node.root) {
node.root.visible = allHidden === false;
} else {
node.visible = allHidden === false;
}
}
if (!value) return;
if (node.visible && !node.isLeaf && !lazy) node.expand();
};
traverse(this);
}
setData(newVal) {
const instanceChanged = newVal !== this.root.data;
if (instanceChanged) {
this.root.setData(newVal);
this._initDefaultCheckedNodes();
} else {
this.root.updateChildren();
}
}
getNode(data) {
if (data instanceof Node) return data;
const key = typeof data !== 'object' ? data : getNodeKey(this.key, data);
return this.nodesMap[key] || null;
}
insertBefore(data, refData) {
const refNode = this.getNode(refData);
refNode.parent.insertBefore({ data }, refNode);
}
insertAfter(data, refData) {
const refNode = this.getNode(refData);
refNode.parent.insertAfter({ data }, refNode);
}
remove(data) {
const node = this.getNode(data);
if (node && node.parent) {
if (node === this.currentNode) {
this.currentNode = null;
}
node.parent.removeChild(node);
}
}
append(data, parentData) {
const parentNode = parentData ? this.getNode(parentData) : this.root;
if (parentNode) {
parentNode.insertChild({ data });
}
}
_initDefaultCheckedNodes() {
const defaultCheckedKeys = this.defaultCheckedKeys || [];
const nodesMap = this.nodesMap;
defaultCheckedKeys.forEach((checkedKey) => {
const node = nodesMap[checkedKey];
if (node) {
node.setChecked(true, !this.checkStrictly);
}
});
}
_initDefaultCheckedNode(node) {
const defaultCheckedKeys = this.defaultCheckedKeys || [];
if (defaultCheckedKeys.indexOf(node.key) !== -1) {
node.setChecked(true, !this.checkStrictly);
}
}
setDefaultCheckedKey(newVal) {
if (newVal !== this.defaultCheckedKeys) {
this.defaultCheckedKeys = newVal;
this._initDefaultCheckedNodes();
}
}
registerNode(node) {
const key = this.key;
if (!key || !node || !node.data) return;
const nodeKey = node.key;
if (nodeKey !== undefined) this.nodesMap[node.key] = node;
}
deregisterNode(node) {
const key = this.key;
if (!key || !node || !node.data) return;
node.childNodes.forEach(child => {
this.deregisterNode(child);
});
delete this.nodesMap[node.key];
}
getCheckedNodes(leafOnly = false, includeHalfChecked = false) {
const checkedNodes = [];
const traverse = function(node) {
const childNodes = node.root ? node.root.childNodes : node.childNodes;
childNodes.forEach((child) => {
if ((child.checked || (includeHalfChecked && child.indeterminate)) && (!leafOnly || (leafOnly && child.isLeaf))) {
checkedNodes.push(child.data);
}
traverse(child);
});
};
traverse(this);
return checkedNodes;
}
getCheckedKeys(leafOnly = false) {
return this.getCheckedNodes(leafOnly).map((data) => (data || {})[this.key]);
}
getHalfCheckedNodes() {
const nodes = [];
const traverse = function(node) {
const childNodes = node.root ? node.root.childNodes : node.childNodes;
childNodes.forEach((child) => {
if (child.indeterminate) {
nodes.push(child.data);
}
traverse(child);
});
};
traverse(this);
return nodes;
}
getHalfCheckedKeys() {
return this.getHalfCheckedNodes().map((data) => (data || {})[this.key]);
}
_getAllNodes() {
const allNodes = [];
const nodesMap = this.nodesMap;
for (let nodeKey in nodesMap) {
if (Object.prototype.hasOwnProperty.call(nodesMap, nodeKey)) {
// if (nodesMap.hasOwnProperty(nodeKey)) {
allNodes.push(nodesMap[nodeKey]);
}
}
return allNodes;
}
updateChildren(key, data) {
const node = this.nodesMap[key];
if (!node) return;
const childNodes = node.childNodes;
for (let i = childNodes.length - 1; i >= 0; i--) {
const child = childNodes[i];
this.remove(child.data);
}
for (let i = 0, j = data.length; i < j; i++) {
const child = data[i];
this.append(child, node.data);
}
}
_setCheckedKeys(key, leafOnly = false, checkedKeys) {
const allNodes = this._getAllNodes().sort((a, b) => b.level - a.level);
const cache = Object.create(null);
const keys = Object.keys(checkedKeys);
allNodes.forEach(node => node.setChecked(false, false));
for (let i = 0, j = allNodes.length; i < j; i++) {
const node = allNodes[i];
const nodeKey = node.data[key].toString();
let checked = keys.indexOf(nodeKey) > -1;
if (!checked) {
if (node.checked && !cache[nodeKey]) {
node.setChecked(false, false);
}
continue;
}
let parent = node.parent;
while (parent && parent.level > 0) {
cache[parent.data[key]] = true;
parent = parent.parent;
}
if (node.isLeaf || this.checkStrictly) {
node.setChecked(true, false);
continue;
}
node.setChecked(true, true);
if (leafOnly) {
node.setChecked(false, false);
const traverse = function(node) {
const childNodes = node.childNodes;
childNodes.forEach((child) => {
if (!child.isLeaf) {
child.setChecked(false, false);
}
traverse(child);
});
};
traverse(node);
}
}
}
setCheckedNodes(array, leafOnly = false) {
const key = this.key;
const checkedKeys = {};
array.forEach((item) => {
checkedKeys[(item || {})[key]] = true;
});
this._setCheckedKeys(key, leafOnly, checkedKeys);
}
setCheckedKeys(keys, leafOnly = false) {
this.defaultCheckedKeys = keys;
const key = this.key;
const checkedKeys = {};
keys.forEach((key) => {
checkedKeys[key] = true;
});
this._setCheckedKeys(key, leafOnly, checkedKeys);
}
setDefaultExpandedKeys(keys) {
keys = keys || [];
this.defaultExpandedKeys = keys;
keys.forEach((key) => {
const node = this.getNode(key);
if (node) node.expand(null, this.autoExpandParent);
});
}
setChecked(data, checked, deep) {
const node = this.getNode(data);
if (node) {
node.setChecked(!!checked, deep);
}
}
getCurrentNode() {
return this.currentNode;
}
setCurrentNode(currentNode) {
const prevCurrentNode = this.currentNode;
if (prevCurrentNode) {
prevCurrentNode.isCurrent = false;
}
this.currentNode = currentNode;
this.currentNode.isCurrent = true;
}
setUserCurrentNode(node) {
const key = node[this.key];
const currNode = this.nodesMap[key];
this.setCurrentNode(currNode);
}
setCurrentNodeKey(key) {
if (key === null || key === undefined) {
this.currentNode && (this.currentNode.isCurrent = false);
this.currentNode = null;
return;
}
const node = this.getNode(key);
if (node) {
this.setCurrentNode(node);
}
}
}
@@ -0,0 +1,27 @@
export const NODE_KEY = '$treeNodeId';
export const markNodeData = function(node, data) {
if (!data || data[NODE_KEY]) return;
Object.defineProperty(data, NODE_KEY, {
value: node.id,
enumerable: false,
configurable: false,
writable: false
});
};
export const getNodeKey = function(key, data) {
if (!key) return data[NODE_KEY];
return data[key];
};
export const findNearestComponent = (element, componentName) => {
let target = element;
while (target && target.tagName !== 'BODY') {
if (target.__vue__ && target.__vue__.$options.name === componentName) {
return target.__vue__;
}
target = target.parentNode;
}
return null;
};
@@ -0,0 +1,138 @@
<template>
<div
class="el-tree-node"
@click.stop="handleClick"
@contextmenu="($event) => this.handleContextMenu($event)"
v-if="source.visible"
:class="{
'is-expanded': expanded,
'is-current': source.isCurrent,
'is-hidden': !!!source.visible,
'is-focusable': !!!source.disabled,
'is-checked': !!!source.disabled && source.checked
}"
role="treeitem"
tabindex="-1"
:aria-expanded="expanded"
:aria-disabled="source.disabled"
:aria-checked="source.checked"
ref="node"
>
<div class="el-tree-node__content">
<span aria-hidden="true" :style="{ 'padding-left': (source.level - 1) * tree.indent + 'px' }"></span>
<span
:class="[
{ 'is-leaf': source.isLeaf, expanded: !source.isLeaf && expanded },
'el-tree-node__expand-icon',
tree.iconClass ? tree.iconClass : 'el-icon-caret-right'
]"
>
</span>
<el-checkbox
v-if="showCheckbox"
v-model="source.checked"
:indeterminate="source.indeterminate"
:disabled="!!source.disabled"
@click.native.stop
@change="handleCheckChange"
>
</el-checkbox>
<span
v-if="source.loading"
class="el-tree-node__loading-icon el-icon-loading">
</span>
<node-content :node="source"></node-content>
</div>
</div>
</template>
<script type="text/jsx">
import ElCheckbox from 'element-ui/packages/checkbox';
import emitter from 'element-ui/src/mixins/emitter';
import mixinNode from './mixin/node';
export default {
name: 'ElTreeVirtualNode',
componentName: 'ElTreeVirtualNode',
mixins: [emitter, mixinNode],
props: {
source: {
default() {
return {};
}
},
renderContent: Function,
showCheckbox: {
type: Boolean,
default: false
},
props: Object
},
components: {
ElCheckbox,
NodeContent: {
props: {
node: {
required: true
}
},
render(h) {
const parent = this.$parent;
const tree = parent.tree;
const node = this.node;
const { data, store } = node;
const props = this.$parent.props
return parent.renderContent
? parent.renderContent.call(parent._renderProxy, h, { _self: tree.$vnode.context, node, data, store })
: tree.$scopedSlots.default
? tree.$scopedSlots.default({ node, data })
: h('span', {
style: {
display: 'inline-block',
width: '100%'
}
}, [
h('span', {
class: 'el-tree-node__label',
}, [data[ props.treeLabel || props.label]])
], node[props.treeLabel || props.label] )
}
}
},
data() {
return {
tree: null,
expanded: false,
childNodeRendered: false,
oldChecked: null,
oldIndeterminate: null
};
},
watch: {
'source.indeterminate'(val) {
this.handleSelectChange(this.source.checked, val);
},
'source.checked'(val) {
this.handleSelectChange(val, this.source.indeterminate);
},
'source.expanded'(val) {
this.$nextTick(() => this.expanded = val);
if (val) {
this.childNodeRendered = true;
}
}
},
created() {
const parent = this.$parent.$parent.$parent;
this.creator(parent, 'source');
}
};
</script>
File diff suppressed because it is too large Load Diff
+9
View File
@@ -142,6 +142,14 @@ const user = {
//Vue.ls.set(USER_AUTH,authData);
sessionStorage.setItem(USER_AUTH, JSON.stringify(authData))
sessionStorage.setItem(SYS_BUTTON_AUTH, JSON.stringify(allAuthData))
let gData = localStorage.getItem('gData')
if (!gData) {
getAction('sys/user/queryUserTreeList', {}).then((res) => {
if (res.success) {
localStorage.setItem('gData', JSON.stringify(res.result))
}
})
}
if (menuData && menuData.length > 0) {
//update--begin--autor:qinfeng-----date:20200109------forJEECG-63 一级菜单的子菜单全部是隐藏路由则一级菜单不显示------
menuData.forEach((item, index) => {
@@ -178,6 +186,7 @@ const user = {
Vue.ls.remove(USER_NAME)
Vue.ls.remove(UI_CACHE_DB_DICT_DATA)
Vue.ls.remove(CACHE_INCLUDED_ROUTES)
localStorage.removeItem('gData')
//console.log('logoutToken: '+ logoutToken)
logout(logoutToken).then(() => {
if (process.env.VUE_APP_SSO == 'true') {
@@ -8,6 +8,14 @@
<!-- </span>-->
{{$route.query.serialNumber +' '+$t('evaluationResults')}}
</div>
<div class="doc-detail-right">
<div @click="endProcessClick"
v-if="(formInline.createBy == this.userInfoQuery.username || administrators) && formInline.gatherResult == 'Underway'"
class="operator-text-text" :title="$t('endProcess')">
<a-icon type="profile"/>
{{$t('endProcess')}}
</div>
</div>
</div>
<div style="padding-top: 68px;background: #fff">
<div class="detail-content" style="padding:12px 24px">
@@ -70,6 +78,7 @@
import viewFileModel from '@/components/viewFileModel/index'
import { getAction, putAction, downloadFile } from '@/api/manage'
import { mapGetters } from 'vuex'
import { postAction } from '../../../../api/manage'
export default {
name: 'evaluationResultsList',
@@ -85,6 +94,7 @@
pageNo: 1,
dataSource: [],
formInline: {},
administrators:false,
userInfoQuery: {},
columns: [
{
@@ -143,6 +153,14 @@
mounted() {
this.userInfoQuery = this.userInfo()
this.getData()
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: {
...mapGetters(['userInfo']),
@@ -232,6 +250,20 @@
},
seeFileClick(item) {
this.$refs.viewFileModelRef.clickButtonToUpload(item)
},
endProcessClick() {
let query = {
ids: this.$route.query.id
}
postAction('/lawsOpinionGather/lawsOpinionGatherEO/batchCompleteTask', query).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.pageNo = 1
this.getList()
} else {
this.$message.warning(this.$t('operationFailed'))
}
})
}
}
}
@@ -239,6 +271,7 @@
<style scoped lang="less">
@import '~@assets/less/common.less';
.doc-detail {
background: #fff;
height: 100%;
@@ -268,7 +301,7 @@
}
.doc-detail-right {
width: 800px;
/*width: 800px;*/
line-height: 68px;
display: flex;
@@ -329,4 +362,17 @@
::v-deep .ant-table-body {
background: transparent !important;
}
.operator-text-text {
cursor: pointer;
margin-right: 23px;
font-size: 14px;
font-weight: 400;
color: #040B29;
display: inline-block;
text-overflow: ellipsis;
white-space: nowrap;
overflow: hidden;
text-align: right;
}
</style>
@@ -53,11 +53,14 @@
:class="{'content-box-box-text-admin':!item2.lableName || item2.lableName == 'null' || item2.lableName == 'undefined'? true : false}"
class="content-box-box-text content-box-box-text-index"
v-else-if="item2.lableType == 7 && item2.lableName && index2 != 0">
<!-- <span v-if="item2.lableName && item2.lableName.split(',').length == 1">-->
<!-- <span class="file-text">{{item2.lableName}}</span>-->
<!-- <a-icon @click="download(item2)" type="download" class="icon-text"/>-->
<!-- </span>-->
<span @click="viewFileClick(item2.lableName)">
<span v-if="item2.lableName && item2.lableName.split(',').length == 1">
<span class="file-text" @click="pdfPreview(item2)" :title="item2.contentFileName">
{{item2.contentFileName}}
</span>
<a-icon @click="download(item2)" type="download" class="icon-text"/>
</span>
<span v-else :title="$t('viewFile')"
@click="viewFileClick(item2.lableName)">
{{$t('viewFile')}}
</span>
</span>
@@ -102,6 +105,7 @@
import countryCardViewAdd from './countryCardViewAdd'
import viewFileModel from '@/components/viewFileModel/index'
import { mapGetters } from 'vuex'
import { Base64 } from 'js-base64'
export default {
name: 'countryCardView',
@@ -122,6 +126,7 @@
countryCardViewList: [],
applyMarkets: '',
header_text: '',
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
url: {
list: '/problemKnowledgeBase/countryCardTempEO/list',
deleteOne: ''
@@ -137,6 +142,25 @@
},
methods: {
...mapGetters(['userInfo']),
pdfPreview(fileQuery) {
let fileName = fileQuery.contentFileName
fileQuery.id = fileQuery.lableName
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'
|| fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else {
downloadFile('/sys/common/downLoadFile', fileQuery.contentFileName, { id: fileQuery.id })
}
},
displayInformationClick() {
this.$refs.displayInformationModelRef.getData(JSON.parse(JSON.stringify(this.displayList)))
},
@@ -149,7 +173,7 @@
this.$refs.countryCardViewAddRef.add(this.countryCardViewList)
},
download(item) {
downloadFile('/sys/common/downLoadFile', item.fileName, { id: item.id, userName: this.userInfo().username })
downloadFile('/sys/common/downLoadFile', item.contentFileName, { id: item.lableName, userName: this.userInfo().username })
},
countryCardViewAddForm(val) {
this.countryCardViewList = JSON.parse(JSON.stringify(val))
@@ -222,12 +246,14 @@
if (val.lableType == 3) {
res1.list.push({
lableName: val.contentDropDownValue,
lableType: val.lableType
lableType: val.lableType,
contentFileName:val.contentFileName || ''
})
} else {
res1.list.push({
lableName: val.content,
lableType: val.lableType
lableType: val.lableType,
contentFileName:val.contentFileName || ''
})
}
}
@@ -490,6 +516,7 @@
text-overflow: ellipsis;
white-space: nowrap;
float: left;
color: #040B29
}
.icon-text {
@@ -139,12 +139,16 @@
<div class="title-text">
<span class="title-text-text">{{$t('content')}}</span>
</div>
<a-form-model-item style="height: 357px" class="itemModel itemModel-explain" prop="content">
<a-form-model-item style="height: 357px"
class="itemModel itemModel-explain ql-snow" prop="content">
<quill-editor
v-if="isDisplayIndex"
class="text-editor"
ref="myQuillEditor"
@ready="onEditorReady($event)"
v-model="formInline.content"
style="height: 300px"
:content="formInline.content"
style="height: 300px"
:options="editorOption"
@blur="quilleditorBlur"
@change="onEditorChange($event)"
@@ -242,6 +246,7 @@
loading: false,
headers: '',
dictOptions: [],
isDisplayIndex: false,
uploadAction: window._CONFIG['domianURL'] + '/sys/common/upload',
editorOption: { // 富文本框配置
placeholder: '',
@@ -319,6 +324,7 @@
add: '/problemKnowledgeBase/problemKnowledgeBaseEO/add',
edit: '/problemKnowledgeBase/problemKnowledgeBaseEO/edit'
},
formInlineOne: {},
isDisplay: false,
disabled: false,
content: '<h2>I am Example</h2>',
@@ -345,53 +351,14 @@
},
mounted() {
this.getBase()
let quill = this.$refs.myQuillEditor.quill
this.$forceUpdate()
quill.root.addEventListener(
'paste',
(evt) => {
if (
evt.clipboardData &&
evt.clipboardData.files &&
evt.clipboardData.files.length
) {
evt.preventDefault();
[].forEach.call(evt.clipboardData.files, (file) => {
if (!file.type.match(/^image\/(gif|jpe?g|a?png|bmp)/i)) {
return
}
const formData = new FormData()
formData.append('file', file)
axios({
url: this.uploadAction,
method: 'post',
data: formData,
headers: {
'Content-Type': 'multipart/form-data',
'X-Access-Token': Vue.ls.get(ACCESS_TOKEN)
}
})
.then((res) => {
if (res.data.success) {
let quill = this.$refs.myQuillEditor.quill
let length = quill.getSelection().index
let fileName = res.data.result.fileName
let index1 = fileName.lastIndexOf('.')
let index2 = fileName.length
let fileSuffix = fileName.substring(index1, index2)
quill.insertEmbed(length, 'image', window._CONFIG['domianWebImgURL'] + '/sys/common/download/' + res.data.result.id + fileSuffix)
quill.setSelection(length + 1)
}
})
})
}
},
false
)
if (this.$route.query.id) {
this.queryById()
document.title = this.$t('problemKnowledgeBase') + this.$t('edit')
} else {
this.isDisplayIndex = true
this.$nextTick(()=>{
this.myQuillEditor()
})
document.title = this.$t('problemKnowledgeBase') + this.$t('newlyAdded')
}
},
@@ -408,6 +375,51 @@
Delta.ops = ops
return Delta
},
myQuillEditor() {
let quill = this.$refs.myQuillEditor.quill
this.$forceUpdate()
quill.root.addEventListener(
'paste',
(evt) => {
if (
evt.clipboardData &&
evt.clipboardData.files &&
evt.clipboardData.files.length
) {
evt.preventDefault();
[].forEach.call(evt.clipboardData.files, (file) => {
if (!file.type.match(/^image\/(gif|jpe?g|a?png|bmp)/i)) {
return
}
const formData = new FormData()
formData.append('file', file)
axios({
url: this.uploadAction,
method: 'post',
data: formData,
headers: {
'Content-Type': 'multipart/form-data',
'X-Access-Token': Vue.ls.get(ACCESS_TOKEN)
}
})
.then((res) => {
if (res.data.success) {
let quill = this.$refs.myQuillEditor.quill
let length = quill.getSelection().index
let fileName = res.data.result.fileName
let index1 = fileName.lastIndexOf('.')
let index2 = fileName.length
let fileSuffix = fileName.substring(index1, index2)
quill.insertEmbed(length, 'image', window._CONFIG['domianWebImgURL'] + '/sys/common/download/' + res.data.result.id + fileSuffix)
quill.setSelection(length + 1)
}
})
})
}
},
false
)
},
quilleditorBlur() {
this.$refs.ruleForm.validateField('content')
},
@@ -428,12 +440,15 @@
this.formInline = { ...this.formInline }
},
queryById() {
this.loading = true
this.isDisplayIndex = false
let query = {
id: this.$route.query.id
}
getAction('/problemKnowledgeBase/problemKnowledgeBaseEO/queryById', query).then((res) => {
if (res.success) {
this.formInline = res.result || {}
this.formInlineOne = JSON.parse(JSON.stringify(res.result))
if (this.formInline.showPermissions == 'Privacy') {
this.isDisplay = true
if (this.formInline.permissionUserList && this.formInline.permissionUserList.length > 0) {
@@ -458,16 +473,28 @@
id: this.formInline.bussDocumentLibraryId.split(',')[index]
})
})
} else {
this.formInline.standNumber = []
}
this.formInline = { ...this.formInline }
} else {
this.formInline = {}
}
this.isDisplayIndex = true
this.$nextTick(() => {
this.myQuillEditor()
})
this.loading = false
})
},
backClick() {
this.$router.go(-1)
},
onEditorReady(quill) {
if (this.formInlineOne.content){
document.getElementsByClassName('ql-editor')[0].innerHTML = this.formInlineOne.content
}
},
showPermissionsChange(event, name) {
if (event == 'Open') {
this.isDisplay = false
@@ -481,9 +508,6 @@
onEditorFocus(quill) {
console.log('editor focus!', quill)
},
onEditorReady(quill) {
console.log('editor ready!', quill)
},
PersonnelSelectionChange(value, id) {
this.formInline[value] = id
this.formInline = { ...this.formInline }
@@ -575,9 +599,11 @@
this.$refs.ruleForm.validate(valid => {
if (valid) {
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){
formInline.standNumber = formInline.standNumber.join(',')
}
// }
this.loading = true
this.confirmLoading = true
let url = ''
@@ -805,6 +831,7 @@
height: 38px;
margin-right: 10px;
}
.itemOption {
display: inline-block;
width: 100%;
@@ -14,7 +14,7 @@
</span>
</div>
<div class="content-box-content">
<div class="content-box-content-top" v-html="queryForm.content">
<div class="content-box-content-top ql-editor" v-html="queryForm.content">
</div>
<div class="content-box-content-botton">
@@ -102,7 +102,7 @@
<div class="commentContent-text-one" v-for="(val,index1) in item.problemKnowledgeBaseCommentVOList"
v-if="item.problemKnowledgeBaseCommentVOList && item.problemKnowledgeBaseCommentVOList.length > 0">
<div class="commentContent-header">
<!-- <span class="commentContent-yuan"></span>-->
<!-- <span class="commentContent-yuan"></span>-->
<span class="commentContent-title">{{val.createBy}}</span>
<span class="commentContent-time">{{val.createTime}}</span>
</div>
@@ -151,6 +151,10 @@
<script>
import { getAction, postAction, downloadFile, putAction } from '@/api/manage'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
import { quillEditor } from 'vue-quill-editor'
import SelectedBy from '@/components/SelectedBy/index'
import { mapGetters } from 'vuex'
import { Base64 } from 'js-base64'
@@ -210,7 +214,7 @@
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))
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')
@@ -223,7 +227,7 @@
}
},
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 })
},
getData(val) {
this.queryBase = val
@@ -426,6 +430,7 @@
border-bottom: 1px solid #E6E6E9;
display: flex;
align-items: center;
.icon-left {
font-size: 16px;
margin-right: 6px;
@@ -700,6 +705,7 @@
display: inline-block;
margin-left: 3px;
}
.Required {
color: red;
margin-right: 4px;
@@ -158,13 +158,13 @@
})
},
titleClick(item) {
let newUrl = this.$router.resolve({
path: '/problemKnowledgeBaseView',
query: {
id: item.id
}
})
window.open(newUrl.href, '_blank')
// let newUrl = this.$router.resolve({
// path: '/problemKnowledgeBaseView',
// query: {
// id: item.id
// }
// })
// window.open(newUrl.href, '_blank')
},
edit(val) {
this.$router.push({
@@ -296,6 +296,12 @@
if (dataList[i].evaluationMethods && dataList[i].evaluationMethods instanceof Array) {
dataList[i].evaluationMethods = dataList[i].evaluationMethods.join(',')
}
Object.keys(dataList[i]).forEach(res=>{
if (dataList[i][res] && typeof dataList[i][res] == 'string') {
dataList[i][res] = dataList[i][res].replace(/\"/g, '“')
dataList[i][res] = dataList[i][res].replace(/\'/g, '')
}
})
dataList[i].lawsTechnologyEvaluationId = this.$route.query.lawsTechnologyEvaluationId || this.getUUID
if (!dataList[i].evaluatorIds) {
this.$message.warning(this.$t('pleaseCompleteTheEvaluationMethodorEvaluator'))
@@ -10,19 +10,26 @@
</div>
<div class="doc-detail-right">
<div @click="CurrentStandard" class="operator-text-text" :title="$t('initiateSupplementaryProcess')">
<a-icon type="profile" />
<a-icon type="profile"/>
{{$t('initiateSupplementaryProcess')}}
</div>
<div @click="endProcessClick"
v-if="this.$route.query.createBy == this.userInfoQuery.username
&& this.$route.query.flowStatus == 'Underway'"
class="operator-text-text" :title="$t('endProcess')">
<a-icon type="profile"/>
{{$t('endProcess')}}
</div>
</div>
</div>
<div style="padding-top: 68px;background: #fff">
<div class="detail-content">
<div class="content-box">
<!-- <div class="header-text">-->
<!-- <a-button class="box-button-top" type="primary" @click="CurrentStandard">-->
<!-- {{$t('initiateSupplementaryProcess')}}-->
<!-- </a-button>-->
<!-- </div>-->
<!-- <div class="header-text">-->
<!-- <a-button class="box-button-top" type="primary" @click="CurrentStandard">-->
<!-- {{$t('initiateSupplementaryProcess')}}-->
<!-- </a-button>-->
<!-- </div>-->
<div class="processBackground-text">
<span style="font-size: 16px;font-weight: 400;color: #000F16;"> {{$t('processBackground')}}:</span>
{{$route.query.processBackground}}
@@ -122,6 +129,7 @@
import PersonnelSelection from '@/components/PersonnelSelection/index'
import { getAction, postAction, downloadFile } from '@/api/manage'
import viewFileModel from '@/components/viewFileModel/index'
import { mapGetters } from 'vuex'
export default {
name: 'evaluationResultsClause',
@@ -228,14 +236,30 @@
ellipsis: true,
width: 160
}
]
],
userInfoQuery: {}
}
},
mounted() {
document.title = this.$route.query.serialNumber + ' ' + this.$t('regulatoryTechnicalEvaluationResults')
this.userInfoQuery = this.userInfo()
this.getList()
},
methods: {
...mapGetters(['userInfo']),
endProcessClick() {
let query = {
ids: this.$route.query.id
}
postAction('/lawsTechnologyEvaluation/lawsTechnologyEvaluationEO/batchCompleteTask', query).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.getList()
} else {
this.$message.warning(this.$t('operationFailed'))
}
})
},
CurrentStandard() {
let query = {
firstInitiation: '2',
@@ -439,6 +463,7 @@
::v-deep .ant-table-body {
background: transparent !important;
}
.operator-text-text {
cursor: pointer;
margin-right: 23px;
@@ -13,6 +13,13 @@
<a-icon type="profile"/>
{{$t('initiateSupplementaryProcess')}}
</div>
<div @click="endProcessClick"
v-if="this.$route.query.createBy == this.userInfoQuery.username
&& this.$route.query.flowStatus == 'Underway'"
class="operator-text-text" :title="$t('endProcess')">
<a-icon type="profile"/>
{{$t('endProcess')}}
</div>
</div>
</div>
<div style="padding-top: 68px;background: #fff">
@@ -77,6 +84,7 @@
import PersonnelSelection from '@/components/PersonnelSelection/index'
import { getAction, postAction, downloadFile } from '@/api/manage'
import viewFileModel from '@/components/viewFileModel/index'
import { mapGetters } from 'vuex'
export default {
name: 'evaluationResultsWhole',
@@ -88,6 +96,8 @@
return {
queryParam: {},
dataSource: [],
userInfoQuery:{},
administrators:false,
url: {
list: '/lawsTechnologyEvaluation/lawsTechnologyEvaluationComplianceResultEO/list',
exportData: 'lawsTechnologyEvaluation/lawsTechnologyEvaluationComplianceResultEO/exportZip'
@@ -121,10 +131,33 @@
}
},
mounted() {
this.userInfoQuery = this.userInfo()
document.title = this.$route.query.serialNumber + ' ' + this.$t('regulatoryTechnicalEvaluationResults')
this.getList()
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: {
...mapGetters(['userInfo']),
endProcessClick() {
let query = {
ids: this.$route.query.id
}
postAction('/lawsTechnologyEvaluation/lawsTechnologyEvaluationEO/batchCompleteTask', query).then((res) => {
if (res.success) {
this.$message.success(this.$t('OperationSuccessful'))
this.getList()
} else {
this.$message.warning(this.$t('operationFailed'))
}
})
},
CurrentStandard() {
let query = {
firstInitiation: '2',
@@ -491,7 +491,11 @@
},
standardDecompositionDocumentClick() {
if (this.standardDecomposition && this.standardDecomposition.length > 0) {
this.$refs.standardDecompositionSheetRef.getData(JSON.parse(JSON.stringify(this.standardDecomposition[0])), this.standardList)
if (this.standardDecomposition[0].sarFileSplitInfoList && this.standardDecomposition[0].sarFileSplitInfoList.length > 0) {
this.$refs.standardDecompositionSheetRef.getData(JSON.parse(JSON.stringify(this.standardDecomposition[0])), this.standardList)
} else {
this.$message.warning(this.$t('thereForTheCurrentlySelectedData'))
}
} else {
this.$message.warning(this.$t('pleaseSelectStandardFirst'))
}
@@ -55,9 +55,9 @@
<span>{{$t('informationCategory')}}</span>
</div>
<j-dict-select-tag class="box-input" v-model="queryParam.information_category"
:placeholder="$t('PleaseSelect')+$t('informationCategory')"
:type="'select'"
:triggerChange="false" :dictCode="'information_category'"/>
:placeholder="$t('PleaseSelect')+$t('informationCategory')"
:type="'select'"
:triggerChange="false" :dictCode="'information_category'"/>
</div>
</a-col>
<span style="float: right;overflow: hidden;" class="table-page-search-submitButtons">
@@ -136,7 +136,7 @@
confirmLoading: false,
selectedRowKeys: [],
sarFileSplitInfoList: [],
informationCategoryList:[],
informationCategoryList: [],
url: {
list: '/split/sarFileSplitItems/getSplitItemsByPage'
},
@@ -226,7 +226,7 @@
this.sarFileSplitInfoList = this.standData.sarFileSplitInfoList || []
this.sarFileSplitInfoList = [...this.sarFileSplitInfoList]
this.queryParam = {}
this.queryParam.info_id = this.sarFileSplitInfoList && this.sarFileSplitInfoList.length > 0 ? this.sarFileSplitInfoList[0].id : ''
this.queryParam.info_id = this.sarFileSplitInfoList && this.sarFileSplitInfoList.length > 0 ? this.sarFileSplitInfoList[0].id : null
this.visible = true
if (this.queryParam.info_id) {
this.pageNo = 1
@@ -244,14 +244,18 @@
}
},
searchQuery() {
this.pageNo = 1
this.replacePage()
if (this.queryParam.info_id) {
this.pageNo = 1
this.replacePage()
}
},
searchReset() {
this.pageNo = 1
this.queryParam = {}
this.queryParam.info_id = this.sarFileSplitInfoList && this.sarFileSplitInfoList.length > 0 ? this.sarFileSplitInfoList[0].id : ''
this.replacePage()
this.queryParam.info_id = this.sarFileSplitInfoList && this.sarFileSplitInfoList.length > 0 ? this.sarFileSplitInfoList[0].id : null
if (this.queryParam.info_id) {
this.pageNo = 1
this.replacePage()
}
},
onChange(page, pageSize) {
this.pageNo = page
@@ -270,15 +274,15 @@
let pageNo = JSON.parse(JSON.stringify(this.pageNo))
let pageSize = JSON.parse(JSON.stringify(this.pageSize))
let queryParam = JSON.parse(JSON.stringify(this.queryParam))
if (queryParam.technology_territory && queryParam.technology_territory.length > 0){
if (queryParam.technology_territory && queryParam.technology_territory.length > 0) {
queryParam.technology_territory = queryParam.technology_territory.join(',')
}
let query = {
pageNo: pageNo + '',
pageSize: pageSize + '',
info_id: this.queryParam.info_id,
technology_territory:queryParam.technology_territory,
information_category:queryParam.information_category,
technology_territory: queryParam.technology_territory,
information_category: queryParam.information_category,
menu_id: ''
}
this.loading = true
@@ -463,7 +463,9 @@
serialNumber: row.serialNumber,
lawsTechnologyEvaluationId: row.id,
standId: row.standId,
remark: row.remark
remark: row.remark,
createBy:row.createBy,
flowStatus:row.flowStatus
}
})
window.open(newUrl.href, '_blank')
@@ -476,7 +478,9 @@
serialNumber: row.serialNumber,
lawsTechnologyEvaluationId: row.id,
standId: row.standId,
remark: row.remark
remark: row.remark,
createBy:row.createBy,
flowStatus:row.flowStatus
}
})
window.open(newUrl.href, '_blank')
@@ -312,7 +312,8 @@
//
// },
downloadData(fileQuery) {
downloadFile('/sys/common/downLoadFile', fileQuery.fileName, { id: fileQuery.targetFileId })
console.log(fileQuery.targetFileName);
downloadFile('/sys/common/downLoadFile', fileQuery.targetFileName, { id: fileQuery.targetFileId })
},
subscribe(record) {
let _this = this
@@ -208,6 +208,7 @@
<a-form-model-item class="itemModel" prop="authManageIdsName">
<PersonnelSelection class="box-input add-input"
:personneQuery="form"
selectDepartment
:query="{db_field_name:'authManageIds',db_field_txt:$t('Administrativeprivileges')}"
@change="PersonnelSelectionChange"
v-model="form.authManageIdsName"/>
@@ -225,6 +226,7 @@
<a-form-model-item class="itemModel" prop="authViewIdsName">
<PersonnelSelection
class="box-input add-input"
selectDepartment
:personneQuery="form"
:query="{db_field_name:'authViewIds',db_field_txt:$t('Checkthepermissions')}"
@change="PersonnelSelectionChange"
@@ -345,6 +345,12 @@
this.$message.warning(this.$t('PleaseCompleteList'))
return
}
Object.keys(this.dataSource[i]).forEach(res=>{
if (this.dataSource[i][res] && typeof this.dataSource[i][res] == 'string') {
this.dataSource[i][res] = this.dataSource[i][res].replace(/\"/g, '“')
this.dataSource[i][res] = this.dataSource[i][res].replace(/\'/g, '')
}
})
}
if (this.$route.query.taskDefinitionKey == 'pgrqr'){
let feedbackTime = moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
@@ -335,6 +335,7 @@
})
this.yearNameDataList = content[0].yearNameDataList || []
this.formInline = value
this.formInline = { ...this.formInline }
}
} else {
this.projectNameList = []
@@ -348,6 +349,7 @@
this.getNameList()
this.formInline.studioEngineerName = this.userInfo().username
this.formInline.studioEngineer = this.userInfo().id
this.formInline = { ...this.formInline }
this.$nextTick(() => {
this.$refs.ruleForm.clearValidate()
})
@@ -296,8 +296,14 @@
},
verifyTaskClick(val, num, isTrue) {
let query = {}
let isDisplay = false
switch (num) {
case 1:
if (val.designTaskStatus == 'NotDone'){
isDisplay = true
}else{
isDisplay = false
}
query = {
taskIds: val.designTaskId,
actiProcInstId: val.designPId,
@@ -307,7 +313,7 @@
studioEngineer: val.studioEngineer,
serialNumber: val.serialNumber,
TaskKey: val.designTaskDefinitionKey,
isDisplay: isTrue,
isDisplay: isDisplay,
flowType: 2,
Sponsor: 'designInitiatorName',
personLiable: 'designDutyName',
@@ -323,6 +329,11 @@
}
break
case 2:
if (val.prehomoTaskStatus == 'NotDone'){
isDisplay = true
}else{
isDisplay = false
}
query = {
taskIds: val.prehomoTaskId,
actiProcInstId: val.prehomoPId,
@@ -332,7 +343,7 @@
serialNumber: val.serialNumber,
TaskKey: val.prehomoTaskDefinitionKey,
flowType: 3,
isDisplay: isTrue,
isDisplay: isDisplay,
id: val.projectLibraryId,
Sponsor: 'prehomoInitiatorName',
personLiable: 'prehomoDutyName',
@@ -348,6 +359,11 @@
}
break
case 3:
if (val.verifyTaskStatus == 'NotDone'){
isDisplay = true
}else{
isDisplay = false
}
query = {
taskIds: val.verifyTaskId,
actiProcInstId: val.verifyPId,
@@ -358,7 +374,7 @@
projectTaskInventoryId: val.projectLawsInventoryId,
TaskKey: val.verifyTaskDefinitionKey,
flowType: 4,
isDisplay: isTrue,
isDisplay: isDisplay,
Sponsor: 'verifyInitiatorName',
personLiable: 'verifyDutyName',
typeOfDeliverables: 'verifyDeliverableTypeName',
+6 -6
View File
@@ -107,7 +107,7 @@
{
title: this.$t('MenuName'),
dataIndex: 'name',
align: 'center',
align: 'left',
key: 'name',
ellipsis: true,
width: 180
@@ -115,7 +115,7 @@
{
title: this.$t('MenuEnName'),
dataIndex: 'menuEn',
align: 'center',
align: 'left',
key: 'menuEn',
ellipsis: true,
width: 180
@@ -123,7 +123,7 @@
{
title: 'icon',
dataIndex: 'icon',
align: 'center',
align: 'left',
key: 'icon',
ellipsis: true,
width: 180
@@ -131,7 +131,7 @@
{
title: this.$t('assembly'),
dataIndex: 'component',
align: 'center',
align: 'left',
key: 'component',
width: 240,
ellipsis: true,
@@ -140,7 +140,7 @@
{
title: this.$t('route'),
dataIndex: 'url',
align: 'center',
align: 'left',
key: 'url',
width: 240,
ellipsis: true,
@@ -149,7 +149,7 @@
{
title: this.$t('sort'),
dataIndex: 'sortNo',
align: 'center',
align: 'left',
width: 80,
ellipsis: true,
key: 'sortNo'