合并分支 'dev_third_stage' 到 'master'

Dev third stage

查看合并请求 laws-nio/laws-weilai!186
This commit is contained in:
高嵩
2022-10-10 21:07:25 +08:00
23 changed files with 970 additions and 491 deletions
@@ -1263,6 +1263,9 @@ public class ParamsReportDetailEOServiceImpl extends ServiceImpl<ParamsReportDet
}
List<String> configIdList = Arrays.asList(paramsReportDetailVO.getConfigIds().split(",")); // 需要导出的配置列
List<Map<String, Object>> dataList = paramsReportDetailEOMapper.listInfoForExport(idList, paramsReportDetailVO); // 查询需要导出的数据
dataList = dataList.stream().collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(p -> (String) p.get("id")))),
ArrayList::new)); // 去重
List<ParamsReportConfigEO> paramsConfigEOList = paramsReportConfigEOService.queryList(paramsReportDetailVO.getParamsManifestId()); // 查询所有配置列
@@ -8,8 +8,10 @@ public class SarFileCompareResultVO {
private String infoId;
private String serialNumberLeft;
private String fileNameLeft;
private String fileIdLeft;
private String serialNumberRight;
private String fileNameRight;
private String fileIdRight;
private List<SarFileCompareItemComVO> resList;
private String comments;
@@ -78,4 +80,20 @@ public class SarFileCompareResultVO {
public void setComments(String comments) {
this.comments = comments;
}
public String getFileIdLeft() {
return fileIdLeft;
}
public void setFileIdLeft(String fileIdLeft) {
this.fileIdLeft = fileIdLeft;
}
public String getFileIdRight() {
return fileIdRight;
}
public void setFileIdRight(String fileIdRight) {
this.fileIdRight = fileIdRight;
}
}
@@ -0,0 +1,21 @@
package com.jero.modules.compare.enums;
public enum AssessConsistencyEnum {
SAME("一致"),
DIFFERENT("差异");
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
AssessConsistencyEnum(String value) {
this.value = value;
}
}
@@ -7,6 +7,7 @@ import com.jero.common.constant.enums.CutEnum;
import com.jero.common.exception.JeroBootException;
import com.jero.common.util.oss.CosBootUtil;
import com.jero.modules.compare.entity.*;
import com.jero.modules.compare.enums.AssessConsistencyEnum;
import com.jero.modules.compare.mapper.SarFileCompareItemCommentMapper;
import com.jero.modules.compare.service.ISarFileCompareInfoService;
import com.jero.modules.compare.service.ISarFileCompareItemCommentService;
@@ -143,8 +144,10 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl<SarFileCom
resultVO.setInfoId(infoId);
resultVO.setSerialNumberLeft(sfcInfo.getSerialNumberLeft());
resultVO.setFileNameLeft(sfcInfo.getFileNameLeft());
resultVO.setFileIdLeft(sfcInfo.getFileIdLeft());
resultVO.setSerialNumberRight(sfcInfo.getSerialNumberRight());
resultVO.setFileNameRight(sfcInfo.getFileNameRight());
resultVO.setFileIdRight(sfcInfo.getFileIdRight());
resultVO.setComments(sfcInfo.getComments());
List<SarFileCompareItemComment> list = queryListByInfoId(infoId,comment);
@@ -180,7 +183,11 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl<SarFileCom
public List<SarFileCompareItemComment> queryListByInfoId(String infoId,String comment) {
LambdaQueryWrapper<SarFileCompareItemComment> queryWrapper = new LambdaQueryWrapper<>();
if (ObjectUtils.isNotEmpty(comment)) {
queryWrapper.eq(SarFileCompareItemComment::getComment, comment);
if (AssessConsistencyEnum.SAME.getValue().equals(comment)) {
queryWrapper.eq(SarFileCompareItemComment::getComment, comment);
} else if (AssessConsistencyEnum.DIFFERENT.getValue().equals(comment)) {
queryWrapper.ne(SarFileCompareItemComment::getComment, AssessConsistencyEnum.SAME.getValue());
}
}
queryWrapper.eq(SarFileCompareItemComment::getInfoId, infoId);
queryWrapper.orderBy(true, true, SarFileCompareItemComment::getCreateTime);
@@ -201,7 +208,11 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl<SarFileCom
queryWrapper.in(SarFileCompareItemComment::getId, Arrays.asList(selectIds.split(",")));
}
if (ObjectUtils.isNotEmpty(comment)) {
queryWrapper.eq(SarFileCompareItemComment::getComment, comment);
if (AssessConsistencyEnum.SAME.getValue().equals(comment)) {
queryWrapper.eq(SarFileCompareItemComment::getComment, comment);
} else if (AssessConsistencyEnum.DIFFERENT.getValue().equals(comment)) {
queryWrapper.ne(SarFileCompareItemComment::getComment, AssessConsistencyEnum.SAME.getValue());
}
}
queryWrapper.orderBy(true, true, SarFileCompareItemComment::getCreateTime);
list = this.list(queryWrapper);
@@ -288,9 +299,9 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl<SarFileCom
if (ObjectUtils.isEmpty(row2)) {
row2 = sheet.createRow(j + i);
}
imgToExcel(workbook, dir, patriarch, cellStyleLink, byteArrayOut, row2, i, j, leftSplit[j], 3);
handleSpecificData(workbook, dir, patriarch, cellStyleLink, byteArrayOut, row2, i, j, leftSplit[j], 3);
} else {
imgToExcel(workbook, dir, patriarch, cellStyleLink, byteArrayOut, row, i, j, leftSplit[j], 3);
handleSpecificData(workbook, dir, patriarch, cellStyleLink, byteArrayOut, row, i, j, leftSplit[j], 3);
}
}
}
@@ -322,9 +333,9 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl<SarFileCom
if (ObjectUtils.isEmpty(row2)) {
row2 = sheet.createRow(j + i);
}
imgToExcel(workbook, dir, patriarch, cellStyleLink, byteArrayOut, row2, i, j, rightSplit[j], 7);
handleSpecificData(workbook, dir, patriarch, cellStyleLink, byteArrayOut, row2, i, j, rightSplit[j], 7);
} else {
imgToExcel(workbook, dir, patriarch, cellStyleLink, byteArrayOut, row, i, j, rightSplit[j], 7);
handleSpecificData(workbook, dir, patriarch, cellStyleLink, byteArrayOut, row, i, j, rightSplit[j], 7);
}
}
}
@@ -401,7 +412,7 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl<SarFileCom
}
/**
* 将图片添加到excel指定单元格中
* 处理图片跟表格类型的数据
* @param workbook
* @param dir
* @param patriarch
@@ -414,7 +425,7 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl<SarFileCom
* @param cellNum
* @throws IOException
*/
private void imgToExcel(Workbook workbook, String dir, HSSFPatriarch patriarch, CellStyle cellStyleLink, ByteArrayOutputStream byteArrayOut, Row row, int i, int j, String text, int cellNum) throws IOException {
private void handleSpecificData(Workbook workbook, String dir, HSSFPatriarch patriarch, CellStyle cellStyleLink, ByteArrayOutputStream byteArrayOut, Row row, int i, int j, String text, int cellNum) throws IOException {
if (text.contains("/upFiles")) {
row.setHeight((short) 3000); //设置行高
//先将图片下载到本地
@@ -439,7 +450,7 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl<SarFileCom
} else {
Cell cell = row.createCell(cellNum);
if (text.contains("<table")) {
tableAssociations(workbook, cellStyleLink, cell, text);
tableAssociate(workbook, cellStyleLink, cell, text);
} else {
cell.setCellValue(text);
}
@@ -453,7 +464,7 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl<SarFileCom
* @param cell
* @param tableHtml
*/
private void tableAssociations(Workbook workbook, CellStyle cellStyleLink, Cell cell, String tableHtml) {
private void tableAssociate(Workbook workbook, CellStyle cellStyleLink, Cell cell, String tableHtml) {
cell.setCellValue("点击查看详情");
//新开sheet生成表格
if (org.apache.commons.lang.StringUtils.isNotEmpty(tableHtml) && tableHtml.indexOf("<tbody>") < 0) {
@@ -487,7 +498,7 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl<SarFileCom
private String getSplitContent(HttpServletRequest request, String text) {
text = text.replace("<p>", "").replace("</p>", "\r\n");
//分割图片
addImgdata(text, request.getSession());
splitImg(text, request.getSession());
//分割表格
String txtAndImg = (String) request.getSession().getAttribute("txtAndImg");
txtAndImg = txtAndImg.replaceAll("table", "replaceTable");
@@ -514,18 +525,19 @@ public class SarFileCompareItemCommentServiceImpl extends ServiceImpl<SarFileCom
}
/**
* 提取字符串中<img>标签内容中的图片路径,并重新按顺序拼接
* 分割图片
* @param text
* @param session
* @return
*/
private void addImgdata(String text,HttpSession session) {
private void splitImg(String text,HttpSession session) {
if (text.contains("<img")) {
String txtLeft = text.substring(0, text.indexOf("<img"));
String txtRight = text.substring(text.indexOf("g\">") + 3);
String img = text.substring(text.indexOf("<img"), text.indexOf("g\">"));
String path = img.substring(img.lastIndexOf("=") + 1)+"g";
text = txtLeft + "---" + path + "---" + txtRight;
addImgdata(text, session);
splitImg(text, session);
} else {
session.setAttribute("txtAndImg", text);
}
@@ -25,6 +25,7 @@ import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
@@ -92,7 +93,11 @@ public class ExtRepoDataController extends JeroController<ExtRepoData, IExtRepoD
queryWrapper.eq(ExtRepoData::getSupFolder, extRepoData.getSupFolder());
queryWrapper.orderBy(true, false, ExtRepoData::getCreateTime);
IPage<ExtRepoData> pageList = extRepoDataService.page(page, queryWrapper);
ExtRepoDataPage res = new ExtRepoDataPage(extRepoFolderService.haveManageAuth(extRepoData.getSupFolder()), pageList);
//判断当前文件夹或者上级文件夹是否有权限
HttpSession session = req.getSession();
session.setAttribute("haveSuperiorManageAuth", false);
extRepoFolderService.haveSuperiorManageAuth(extRepoData.getSupFolder(),session);
ExtRepoDataPage res = new ExtRepoDataPage((Boolean)session.getAttribute("haveSuperiorManageAuth"), pageList);
return Result.OK(res);
}
@@ -99,6 +99,41 @@ public class ExtRepoFolderController extends JeroController<ExtRepoFolder, IExtR
return result;
}
/**
* 是否允许增加同级文件夹
* @param extRepoFolder
* @return
*/
@AutoLog(value = "是否允许增加同级文件夹")
@ApiOperation(value = "是否允许增加同级文件夹", notes = "是否允许增加同级文件夹")
@PostMapping(value = "/isAllowSiblingFolder")
public Result<?> isAllowSiblingFolder(@Validated @RequestBody ExtRepoFolder extRepoFolder,
HttpSession session) {
Result<ExtRepoFolder> result = new Result();
session.setAttribute("haveSuperiorManageAuth", false);
ExtRepoFolder folder = extRepoFolderService.queryById(extRepoFolder.getId());
extRepoFolderService.haveSuperiorManageAuth(folder.getSupFolder(),session);
//上层是否有权限
boolean boo = (Boolean)session.getAttribute("haveSuperiorManageAuth");
if (boo || extRepoFolderService.haveManageAuth(extRepoFolder.getId())) {
if (!boo) {
if (CutEnum.CN.getValue().equals(extRepoFolder.getCut())) {
return result.error500("无法创建同级文件夹!请联系管理员!");
} else {
return result.error500("Unable to create a sibling folder ! Please Contact your administrator !");
}
}
} else {
if (CutEnum.CN.getValue().equals(extRepoFolder.getCut())) {
return result.error500("没有权限!");
} else {
return result.error500("You do not have permission !");
}
}
return result.success("");
}
/**
* 编辑
*
@@ -111,7 +146,7 @@ public class ExtRepoFolderController extends JeroController<ExtRepoFolder, IExtR
public Result<?> edit(@Validated @RequestBody ExtRepoFolder extRepoFolder, HttpSession session) {
Result<ExtRepoFolder> result = new Result();
session.setAttribute("haveSuperiorManageAuth", false);
extRepoFolderService.haveSuperiorManageAuth(extRepoFolder.getSupFolder(),session);
extRepoFolderService.haveSuperiorManageAuth(extRepoFolder.getId(),session);
if (ObjectUtils.isNotEmpty(session.getAttribute("haveSuperiorManageAuth"))&&(Boolean) session.getAttribute("haveSuperiorManageAuth")) {
extRepoFolderService.editById(extRepoFolder);
if (CutEnum.CN.getValue().equals(extRepoFolder.getCut())) {
@@ -241,7 +241,7 @@ public class ExtRepoFolderServiceImpl extends ServiceImpl<ExtRepoFolderMapper, E
List<ERFTreeData> resList = new ArrayList<>();
for (ExtRepoFolder erf : list) {
if (supId.equals(erf.getSupFolder())) {
int childLevel = level + 1;
//int childLevel = level + 1;
if (haveViewAuth(erf.getId())) {
ERFTreeData date = new ERFTreeData(erf.getFolderName(), erf.getId(), level, erf.getOrderId());
boolean parentRightClick = haveManageAuth(erf.getId());
@@ -252,11 +252,11 @@ public class ExtRepoFolderServiceImpl extends ServiceImpl<ExtRepoFolderMapper, E
date.setAuthManageIds(erf.getAuthManageIds());
date.setAuthViewIdsName(erf.getAuthViewIdsName());
date.setAuthViewIds(erf.getAuthViewIds());
date.setChildren(subFolderTree(erf.getId(),new ArrayList<ERFTreeData>(),childLevel,parentRightClick));
date.setChildren(subFolderTree(erf.getId(),new ArrayList<ERFTreeData>(),level,parentRightClick));
date.sortChildren();
resList.add(date);
} else {
resList.addAll(getSubFolder(erf.getId(), list, childLevel));
resList.addAll(getSubFolder(erf.getId(), list, level));
}
}
}
@@ -189,7 +189,7 @@ public class WordUtil {
Drawing drawing = factory.createDrawing();
drawing.getAnchorOrInline().add(inline);
run.getContent().add(drawing);
replaceTextToImage(bm, text, wordMLPackage, bytes);
replaceTextToImage(bm, "\\$\\{" + key + "\\}", text, wordMLPackage, bytes);
}
}
} catch (Exception var17) {
@@ -218,7 +218,7 @@ public class WordUtil {
byte[] bytes = (byte[]) picMap.get("bytes");
for(Text bm : textList) {
if (bm.getValue().equals("${" + key + "}")) {
if (bm.getValue().contains("${" + key + "}")) {
BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordMLPackage, bytes);
Inline inline = imagePart.createImageInline("", "", 0, 1, true);
ObjectFactory factory = new ObjectFactory();
@@ -226,7 +226,7 @@ public class WordUtil {
Drawing drawing = factory.createDrawing();
drawing.getAnchorOrInline().add(inline);
run.getContent().add(drawing);
replaceTextToImage(bm, text, wordMLPackage, bytes);
replaceTextToImage(bm, "\\$\\{" + key + "\\}", text, wordMLPackage, bytes);
}
}
}
@@ -387,7 +387,7 @@ public class WordUtil {
* @throws Exception
* @author liyawei
*/
public static void replaceTextToImage(Text bm, Object object, WordprocessingMLPackage wordMLPackage , byte[] bytes) throws Exception {
public static void replaceTextToImage(Text bm, String key, Object object, WordprocessingMLPackage wordMLPackage , byte[] bytes) throws Exception {
if (wordMLPackage == null) {
return;
}
@@ -423,16 +423,49 @@ public class WordUtil {
BinaryPartAbstractImage imagePart = BinaryPartAbstractImage.createImagePart(wordMLPackage, bytes);
Inline inline = imagePart.createImageInline("", "", 0, 1, true);
ObjectFactory factory = Context.getWmlObjectFactory();
R run = factory.createR();
// R run = factory.createR();
Drawing drawing = factory.createDrawing();
if(text != null){
Text txt = factory.createText();
txt.setValue(text);
run.getContent().add(txt);
for(int j=0;j<r.getContent().size();j++) {
r.getContent().remove(j);
}
run.getContent().add(drawing);
drawing.getAnchorOrInline().add(inline);
theList.add(rangeStart, run); // 添加图片到原占位符位置
String values = bm.getValue().replaceAll(key,"#");
int length = values.length();
String[] valueStr = new String[length];
for(int v=0; v<length; v++) {
valueStr[v] = values.charAt(v) + "";
}
int index = 0;
for(int k=0;k<valueStr.length;k++){
if(valueStr[k].equals("#")){
if(k>0 && !valueStr[k-1].equals("#")) {
Text txt = factory.createText();
txt.setValue(values.substring(index, k));
r.getContent().add(txt);
}
if (text != null) {
Text txtp = factory.createText();
txtp.setValue(text);
r.getContent().add(txtp);
}
r.getContent().add(drawing);
drawing.getAnchorOrInline().add(inline);
index = k + 1;
}
}
if(!values.endsWith("#")) {
Text txt = factory.createText();
txt.setValue(values.substring(index));
r.getContent().add(txt);
}
theList.add(rangeStart, r); // 添加图片到原占位符位置
} else {
return;
@@ -3754,7 +3754,26 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
@Override
public int insertForeach(List<SarFileSplitItemsEO> messageList) {
return dao.insertForeach(messageList);
// 解决一次批量插入太多 PacketTooBigException 异常
int total = messageList.size();
int count = 0;
int pageSum = 1;
if(total > 100) {
pageSum = total / 100; // 总页数
if ((total % 100) > 0) {
pageSum += 1;
}
}
List<SarFileSplitItemsEO> subList = new ArrayList<>();
for(int i = 0; i < pageSum; i++) {
int j = i*100+100;
if (i == pageSum -1) {
j = total;
}
subList = messageList.subList(i*100, j);
count += dao.insertForeach(subList);
}
return count;
}
/**
@@ -1784,7 +1784,7 @@ public class FileSplitPdfService {
if(StringUtils.isNotBlank(preName)) {
List<String> nowStartList = fileSpiltService.getNewNowStart(preName);
List<String> subList1 = startDigitList.subList(preNameNum, startDigitList.size()-1);
List<String> subList1 = startDigitList.subList(preNameNum, startDigitList.size());
// 后文有一级以下的标题
for (int i = nowStartList.size() - 1; i >= 1; i--) {
int index1 = subList1.indexOf(nowStartList.get(i));
@@ -12,6 +12,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@@ -79,8 +80,26 @@ public class SarFileSplitItemsValEOServiceImpl extends ServiceImpl<SarFileSplitI
@Override
public int insertForeach(List<SarFileSplitItemsValEO> itemValList) {
return dao.insertForeach(itemValList);
// 解决一次批量插入太多 PacketTooBigException 异常
int total = itemValList.size();
int count = 0;
int pageSum = 1;
if(total > 100) {
pageSum = total / 100; // 总页数
if ((total % 100) > 0) {
pageSum += 1;
}
}
List<SarFileSplitItemsValEO> subList = new ArrayList<>();
for(int i = 0; i < pageSum; i++) {
int j = i*100+100;
if (i == pageSum -1) {
j = total;
}
subList = itemValList.subList(i*100, j);
count += dao.insertForeach(subList);
}
return count;
}
}
+4 -2
View File
@@ -1312,10 +1312,12 @@ module.exports = {
firstLevelDirectory:'First level directory',
deselectAll:'Deselect All',
classification:'Classification',
consistentAssessment:'Consistent assessment',
viewConsistentAssessment:'View Consistent Assessment',
consistentAssessment:'Consistent',
viewConsistentAssessment:'View Consistent',
viewVarianceAssessment:'View Variance',
viewAll:'View All',
endProcess:'End Process',
thereForTheCurrentlySelectedData:'There is no standard breakdown for the currently selected data',
secondaryDirectory:'Secondary directory',
OnlyPersonsCanBeSelected:'The maximum upper limit is exceeded; Only 100 persons can be selected',
}
+4 -2
View File
@@ -1413,10 +1413,12 @@ module.exports = {
firstLevelDirectory:'一级目录',
deselectAll:'取消全选',
classification:'分类',
consistentAssessment:'一致评估',
viewConsistentAssessment:'查看一致评估',
consistentAssessment:'一致',
viewConsistentAssessment:'查看一致项',
viewVarianceAssessment:'查看差异项',
viewAll:'查看全部',
endProcess:'结束流程',
thereForTheCurrentlySelectedData:'当前所选数据暂无标准分解单',
secondaryDirectory:'二级目录',
OnlyPersonsCanBeSelected:'超出最大上限;最多只能选择100个人员',
}
@@ -32,39 +32,39 @@
v-model="searchModel" @search="onSearch"/>
<div class="drawer-content">
<JLoading :loading="loading">{{$t('dataLoading')}}</JLoading>
<!-- <virtualNodeTree-->
<!-- v-if="treeVisible"-->
<!-- ref="virtualNodeTreeRef"-->
<!-- :keeps="40"-->
<!-- show-checkbox-->
<!-- v-model="checkboxList"-->
<!-- class="treeWrap"-->
<!-- :defaultCheckedKeys="defaultCheckedKeys"-->
<!-- :defaultExpandAll="defaultExpandAll"-->
<!-- :check-strictly="false"-->
<!-- node-key="id"-->
<!-- @check="handleCheckChange"-->
<!-- @check-change="checkChange"-->
<!-- :data.sync="gData">-->
<!-- <span slot-scope="{ data }">-->
<!-- <span :class="{'active':data.color ? true:false}">-->
<!-- {{ data.title }}-->
<!-- </span>-->
<!-- </span>-->
<!-- </virtualNodeTree>-->
<a-tree
style="margin-bottom: 60px;height: 600px"
<virtualNodeTree
v-if="treeVisible"
checkable
checkStrictly
:loading="loading"
:tree-data="gData"
@check="onCheck"
@expand="onExpand"
v-model:checkedKeys="defaultCheckedKeys"
:defaultExpandedKeys="defaultExpandedKeys"
>
</a-tree>
ref="virtualNodeTreeRef"
:keeps="40"
show-checkbox
v-model="checkboxList"
class="treeWrap"
:defaultCheckedKeys="defaultCheckedKeys"
:defaultExpandAll="defaultExpandAll"
:check-strictly="false"
node-key="id"
@check="handleCheckChange"
@check-change="checkChange"
:data.sync="gData">
<span slot-scope="{ data }">
<span :class="{'active':data.color ? true:false}">
{{ 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>
@@ -114,137 +114,137 @@
},
methods: {
// checkChange(val, checked, indeterminate) {
// if (!checked && this.searchData) {
// this.userName = this.userName.filter(res => {
// return res != val.title
// })
// this.userIds = this.userIds.filter(res => {
// return res != val.id
// })
// for (let i = 0; i < this.userIds.length; i++) {
// if (this.userIds[i] == val.parentId) {
// this.userIds.splice(i, 1)
// this.userName.splice(i, 1)
// i--
// }
// }
// } else if (checked && this.searchData) {
// this.userName.push(val.title)
// this.userIds.push(val.id)
// }
// },
// handleCheckChange(val, data, checked) {
// if (!this.searchData) {
// this.userName = []
// this.userIds = []
// if (data.checkedNodes && data.checkedNodes.length > 0) {
// data.checkedNodes.forEach(res => {
// this.userName.push(res.title)
// this.userIds.push(res.id)
// })
// }
// }
// },
checkChange(val, checked, indeterminate) {
if (!checked && this.searchData) {
this.userName = this.userName.filter(res => {
return res != val.title
})
this.userIds = this.userIds.filter(res => {
return res != val.id
})
for (let i = 0; i < this.userIds.length; i++) {
if (this.userIds[i] == val.parentId) {
this.userIds.splice(i, 1)
this.userName.splice(i, 1)
i--
}
}
} else if (checked && this.searchData) {
this.userName.push(val.title)
this.userIds.push(val.id)
}
},
handleCheckChange(val, data, checked) {
if (!this.searchData) {
this.userName = []
this.userIds = []
if (data.checkedNodes && data.checkedNodes.length > 0) {
data.checkedNodes.forEach(res => {
this.userName.push(res.title)
this.userIds.push(res.id)
})
}
}
},
standardClick() {
this.treeVisible = false
this.departId = ''
// this.departId = ''
this.searchModel = ''
this.searchData = ''
this.userIds = []
this.userName = []
this.queryDepartUserTreeList(1)
// this.userIds = []
// this.userName = []
// this.queryDepartUserTreeList(1)
this.visible = true
// 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.defaultExpandAll = false
// this.treeVisible = true
// } else {
// this.queryDepartUserTreeList(1)
// }
// }, 200)
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.defaultExpandAll = false
this.treeVisible = true
} else {
this.queryDepartUserTreeList(1)
}
}, 200)
},
deleteChildren(value, arr) {
let newarr = []
arr.forEach(element => {
if (element.title.indexOf(value) > -1) { // 判断条件
newarr.push(element)
} else {
if (element.children && element.children.length > 0) {
let redata = this.deleteChildren(value, element.children)
if (redata && redata.length > 0) {
let obj = {
...element,
children: redata
}
newarr.push(obj)
}
}
}
})
return newarr
},
// 将数据拼成树形结构
toTree(config, num) {
// 删除 所有 children,以防止多次调用
config.forEach(function(item) {
delete item.children
})
// 将数据存储为 以 id 为 KEY 的 map 索引数据列
let map = {}
config.forEach((item) => {
item.label = item.name
item.key = item.id
item.title = item.name + (item.itemName ? ' ' + item.itemName : '')
map[item.id] = item
})
let val = []
config.forEach((item) => {
// 以当前遍历项,的pid,去map对象中找到索引的id
let parent = map[item.parentId]
// 如果找到索引,那么说明此项不在顶级当中,那么需要把此项添加到,他对应的父级中
if (parent) {
(parent.children || (parent.children = [])).push(item)
} else {
//如果没有在map中找到对应的索引ID,那么直接把 当前的item添加到 val结果集中,作为顶级
val.push(item)
}
})
return val
},
// deleteChildren(value, arr) {
// let newarr = []
// arr.forEach(element => {
// if (element.title.indexOf(value) > -1) { // 判断条件
// newarr.push(element)
// } else {
// if (element.children && element.children.length > 0) {
// let redata = this.deleteChildren(value, element.children)
// if (redata && redata.length > 0) {
// let obj = {
// ...element,
// children: redata
// }
// newarr.push(obj)
// }
// }
// }
// })
// return newarr
// },
//将数据拼成树形结构
// toTree(config, num) {
// // 删除 所有 children,以防止多次调用
// config.forEach(function(item) {
// delete item.children
// })
// // 将数据存储为 以 id 为 KEY 的 map 索引数据列
// let map = {}
// config.forEach((item) => {
// item.label = item.name
// item.key = item.id
//
// item.title = item.name + (item.itemName ? ' ' + item.itemName : '')
// map[item.id] = item
// })
// let val = []
// config.forEach((item) => {
// // 以当前遍历项,的pid,去map对象中找到索引的id
// let parent = map[item.parentId]
//
// // 如果找到索引,那么说明此项不在顶级当中,那么需要把此项添加到,他对应的父级中
// if (parent) {
// (parent.children || (parent.children = [])).push(item)
// } else {
// //如果没有在map中找到对应的索引ID,那么直接把 当前的item添加到 val结果集中,作为顶级
// val.push(item)
// }
// })
// return val
// },
standardDelete() {
this.$emit('input', null)
this.$forceUpdate()
@@ -255,67 +255,71 @@
// this.selectedKey = selectedKeys
// },
onCheck(checkedKeys, info) {
this.userIds = checkedKeys.checked
this.userName = []
if (this.userIds.length > 0) {
for (let i = 0; i < this.userIds.length; i++) {
for (let j = 0; j < this.defaultCheckedKeysName.length; j++) {
if (this.userIds[i] == this.defaultCheckedKeysName[j].id) {
this.userName.push(this.defaultCheckedKeysName[j].name)
}
}
}
}
if (info.checkedNodes && info.checkedNodes.length > 0) {
info.checkedNodes.forEach(res => {
if (res.data.props.dataRef.key) {
this.content.push({
id: res.data.props.dataRef.key,
title: res.data.props.dataRef.title
})
} else {
this.content.push({
id: res.data.props.id,
title: res.data.props.title
})
}
})
}
if (this.content && this.content.length > 0) {
for (let i = 0; i < this.content.length; i++) {
for (let j = i + 1; j < this.content.length; j++) {
if (this.content[i].id == this.content[j].id) {
this.content.splice(j, 1)
j--
}
}
}
this.userIds.forEach(res => {
this.content.forEach(val => {
if (res == val.id) {
this.userName.push(val.title)
}
})
})
}
if (this.userName.length > 0) {
for (let i = 0; i < this.userName.length; i++) {
for (let j = i + 1; j < this.userName.length; j++) {
if (this.userName[i] == this.userName[j]) {
this.userName.splice(j, 1)
j--
}
}
}
}
},
// onCheck(checkedKeys, info) {
// this.userIds = checkedKeys.checked
// this.userName = []
// if (this.userIds.length > 0) {
// for (let i = 0; i < this.userIds.length; i++) {
// for (let j = 0; j < this.defaultCheckedKeysName.length; j++) {
// if (this.userIds[i] == this.defaultCheckedKeysName[j].id) {
// this.userName.push(this.defaultCheckedKeysName[j].name)
// }
// }
// }
// }
// if (info.checkedNodes && info.checkedNodes.length > 0) {
// info.checkedNodes.forEach(res => {
// if (res.data.props.dataRef.key) {
// this.content.push({
// id: res.data.props.dataRef.key,
// title: res.data.props.dataRef.title
// })
// } else {
// this.content.push({
// id: res.data.props.id,
// title: res.data.props.title
// })
// }
// })
// }
// if (this.content && this.content.length > 0) {
// for (let i = 0; i < this.content.length; i++) {
// for (let j = i + 1; j < this.content.length; j++) {
// if (this.content[i].id == this.content[j].id) {
// this.content.splice(j, 1)
// j--
// }
// }
// }
// this.userIds.forEach(res => {
// this.content.forEach(val => {
// if (res == val.id) {
// this.userName.push(val.title)
// }
// })
// })
// }
// if (this.userName.length > 0) {
// for (let i = 0; i < this.userName.length; i++) {
// for (let j = i + 1; j < this.userName.length; j++) {
// if (this.userName[i] == this.userName[j]) {
// this.userName.splice(j, 1)
// j--
// }
// }
// }
// }
// },
handleCancel() {
this.visible = false
this.treeVisible = false
},
handleSubmit() {
// if (this.userIds && this.userIds.length > 0) {
if (this.userIds.length > 100 && this.selectDepartment) {
this.$message.warning(this.$t('OnlyPersonsCanBeSelected'))
return
}
if (this.isSingleChoice) {
if (this.userIds.length > 1) {
this.$message.warning(this.$t('onlyOnePersonCanBeSelected'))
@@ -347,119 +351,120 @@
this.defaultCheckedKeys = []
},
onSearch(e) {
// this.treeVisible = false
// let p = new Promise((resolve, reject) => {
// resolve()
// })
// p.then(() => {
// this.searchData = e
// 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)) {
// res.color = true
// content.push(res)
// }
// }
// // else if(res.type == 'Depart'){
// // content.push(res)
// // }
// })
// let gDataAdmin = this.toTree(content)
// this.gData = this.deleteChildren(e, gDataAdmin)
// this.defaultExpandAll = true
// this.treeVisible = true
// this.defaultCheckedKeys = this.userIds
// this.defaultCheckedKeys = [...this.defaultCheckedKeys]
// this.loading = false
// } else {
// let content = JSON.parse(gData)
// if (!this.selectDepartment) {
// content.forEach(res => {
// if (res.type == 'Depart') {
// res.disabled = true
// }
// })
// }
// this.gData = this.toTree(content)
// this.defaultExpandAll = false
// 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
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(() => {
this.searchData = e
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)) {
res.color = true
content.push(res)
}
}
// else if(res.type == 'Depart'){
// content.push(res)
// }
})
let gDataAdmin = this.toTree(content)
this.gData = this.deleteChildren(e, gDataAdmin)
this.defaultExpandAll = true
this.treeVisible = true
this.defaultCheckedKeys = this.userIds
this.defaultCheckedKeys = [...this.defaultCheckedKeys]
this.loading = false
} else {
this.departId = val.node.value
this.queryDepartUserTreeList(2)
let content = JSON.parse(gData)
if (!this.selectDepartment) {
content.forEach(res => {
if (res.type == 'Depart') {
res.disabled = true
}
})
}
this.gData = this.toTree(content)
this.defaultExpandAll = false
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'
//queryDepartUserTreeList post
//queryUserTreeList get
//换接口需要改请求
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.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)
this.gData = res.result
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)
// this.gData = res.result
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']) {
@@ -481,15 +486,15 @@
}
this.defaultCheckedKeys = this.userIds
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.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.defaultExpandAll = false
this.treeVisible = true
+292 -100
View File
@@ -15,18 +15,38 @@
allowClear
:placeholder="$t('NodeQuickLookup')"/>
<div class="drawer-content">
<a-tree
v-if="visibleTree"
style="margin-bottom: 60px;height: 600px"
checkable
:autoExpandParent="false"
:tree-data="gData"
@select="onSelect"
@check="checkChange"
@expand="onExpand"
:defaultExpandedKeys="defaultExpandedKeys"
>
</a-tree>
<virtualNodeTree
v-if="treeVisible"
ref="virtualNodeTreeRef"
:keeps="40"
show-checkbox
v-model="checkboxList"
class="treeWrap"
:defaultCheckedKeys="defaultCheckedKeys"
:defaultExpandAll="defaultExpandAll"
:check-strictly="false"
node-key="id"
@check="handleCheckChange"
@check-change="checkChange"
:data.sync="gData">
<span slot-scope="{ data }">
<span :class="{'active':data.color ? true:false}">
{{ data.title }}
</span>
</span>
</virtualNodeTree>
<!-- <a-tree-->
<!-- v-if="visibleTree"-->
<!-- style="margin-bottom: 60px;height: 600px"-->
<!-- checkable-->
<!-- :autoExpandParent="false"-->
<!-- :tree-data="gData"-->
<!-- @select="onSelect"-->
<!-- @check="checkChange"-->
<!-- @expand="onExpand"-->
<!-- :defaultExpandedKeys="defaultExpandedKeys"-->
<!-- >-->
<!-- </a-tree>-->
</div>
</a-spin>
<div class="drawer-bootom-button">
@@ -40,15 +60,20 @@
<script>
import { getAction, postAction } from '@/api/manage'
import eventBUs from '../../common/event'
import virtualNodeTree from '@/components/virtualNodeTree/tree'
export default {
name: 'index',
components: {
virtualNodeTree
},
data() {
return {
gData: [],
searchModel: '',
autoExpandParent: true,
expandedKeys: [],
checkboxList: [],
visible: false,
confirmLoading: false,
selectedKey: [],
@@ -56,42 +81,149 @@
userIds: [],
departId: '',
defaultExpandedKeys: [],
defaultExpandAll: false,
defaultCheckedKeys: [],
content: [],
userName: [],
submitLoading: false,
visibleTree: false
visibleTree: false,
treeVisible: false
}
},
mounted() {
},
methods: {
getPush(data) {
this.tableKey = data
this.userName = []
this.content = []
this.searchModel = ''
this.visible = true
this.visibleTree = false
this.$nextTick(() => {
this.departId = ''
this.queryDepartUserTreeList()
})
},
onSelect(selectedKeys) {
this.selectedKey = selectedKeys
},
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()
checkChange(val, checked, indeterminate) {
if (!checked && this.searchData) {
this.userName = this.userName.filter(res => {
return res != val.title
})
this.userIds = this.userIds.filter(res => {
return res != val.id
})
for (let i = 0; i < this.userIds.length; i++) {
if (this.userIds[i] == val.parentId) {
this.userIds.splice(i, 1)
this.userName.splice(i, 1)
i--
}
}
} else if (checked && this.searchData) {
this.userName.push(val.title)
this.userIds.push(val.id)
}
},
handleCheckChange(val, data, checked) {
if (!this.searchData) {
this.userName = []
this.userIds = []
if (data.checkedNodes && data.checkedNodes.length > 0) {
data.checkedNodes.forEach(res => {
this.userName.push(res.title)
this.userIds.push(res.id)
})
}
}
},
getPush(data) {
this.tableKey = data
this.userName = []
this.userIds = []
this.content = []
this.defaultCheckedKeys = []
this.searchModel = ''
this.visible = true
this.visibleTree = false
this.treeVisible = false
// this.$nextTick(() => {
// this.departId = ''
// this.queryDepartUserTreeList()
// })
let gData = localStorage.getItem('gData')
if (gData) {
let dataList = JSON.parse(gData)
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
} else {
this.queryDepartUserTreeList(1)
}
}, 200)
},
deleteChildren(value, arr) {
let newarr = []
arr.forEach(element => {
if (element.title.indexOf(value) > -1) { // 判断条件
newarr.push(element)
} else {
if (element.children && element.children.length > 0) {
let redata = this.deleteChildren(value, element.children)
if (redata && redata.length > 0) {
let obj = {
...element,
children: redata
}
newarr.push(obj)
}
}
}
})
return newarr
},
// 将数据拼成树形结构
toTree(config, num) {
// 删除 所有 children,以防止多次调用
config.forEach(function(item) {
delete item.children
})
// 将数据存储为 以 id 为 KEY 的 map 索引数据列
let map = {}
config.forEach((item) => {
item.label = item.name
item.key = item.id
item.title = item.name + (item.itemName ? ' ' + item.itemName : '')
map[item.id] = item
})
let val = []
config.forEach((item) => {
// 以当前遍历项,的pid,去map对象中找到索引的id
let parent = map[item.parentId]
// 如果找到索引,那么说明此项不在顶级当中,那么需要把此项添加到,他对应的父级中
if (parent) {
(parent.children || (parent.children = [])).push(item)
} else {
//如果没有在map中找到对应的索引ID,那么直接把 当前的item添加到 val结果集中,作为顶级
val.push(item)
}
})
return val
},
// onSelect(selectedKeys) {
// this.selectedKey = selectedKeys
// },
// 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()
// }
// }
// }
// },
handleCancel() {
this.visible = false
this.visibleTree = false
@@ -125,84 +257,137 @@
})
},
onSearch(e) {
this.gData = []
this.departId = ''
this.visibleTree = false
if (e) {
this.getUserAndDepart()
} else {
this.queryDepartUserTreeList()
}
},
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.treeVisible = false
let p = new Promise((resolve, reject) => {
resolve()
})
p.then(() => {
this.searchData = e
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)) {
res.color = true
content.push(res)
}
}
})
let gDataAdmin = this.toTree(content)
this.gData = this.deleteChildren(e, gDataAdmin)
this.defaultExpandAll = true
this.treeVisible = true
this.defaultCheckedKeys = this.userIds
this.defaultCheckedKeys = [...this.defaultCheckedKeys]
this.loading = false
} else {
let content = JSON.parse(gData)
content.forEach(res => {
if (res.type == 'Depart') {
res.disabled = true
}
})
this.gData = this.toTree(content)
this.defaultExpandAll = false
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.queryDepartUserTreeList()
// }
},
// 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
// })
// },
queryDepartUserTreeList() {
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
postAction('sys/user/queryDepartUserTreeList', {
departId: this.departId,
flag: '1',
json: gData
getAction('sys/user/queryUserTreeList', {
// departId: this.departId,
// flag: '1',
// json: gData
}).then((res) => {
this.confirmLoading = false
if (res.success) {
this.gData = res.result
this.defaultExpandedKeys = [this.departId]
let content = JSON.parse(JSON.stringify(res.result))
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)
this.gData = [...this.gData]
// this.gData = res.result
// this.defaultExpandedKeys = [this.departId]
this.defaultExpandAll = false
this.treeVisible = true
this.visibleTree = true
} else {
this.gData = []
}
})
},
checkChange(e, info) {
this.userIds = e
this.userName = []
if (info.checkedNodes && info.checkedNodes.length > 0) {
info.checkedNodes.forEach(res => {
if (res.data.props.dataRef.key) {
this.content.push({
id: res.data.props.dataRef.key,
title: res.data.props.dataRef.title
})
} else {
this.content.push({
id: res.data.props.id,
title: res.data.props.title
})
}
})
}
if (this.content && this.content.length > 0) {
for (let i = 0; i < this.content.length; i++) {
for (let j = i + 1; j < this.content.length; j++) {
if (this.content[i].id == this.content[j].id) {
this.content.splice(j, 1)
j--
}
}
}
this.userIds.forEach(res => {
this.content.forEach(val => {
if (res == val.id) {
this.userName.push(val.title)
}
})
})
}
}
// checkChange(e, info) {
// this.userIds = e
// this.userName = []
// if (info.checkedNodes && info.checkedNodes.length > 0) {
// info.checkedNodes.forEach(res => {
// if (res.data.props.dataRef.key) {
// this.content.push({
// id: res.data.props.dataRef.key,
// title: res.data.props.dataRef.title
// })
// } else {
// this.content.push({
// id: res.data.props.id,
// title: res.data.props.title
// })
// }
// })
// }
// if (this.content && this.content.length > 0) {
// for (let i = 0; i < this.content.length; i++) {
// for (let j = i + 1; j < this.content.length; j++) {
// if (this.content[i].id == this.content[j].id) {
// this.content.splice(j, 1)
// j--
// }
// }
// }
// this.userIds.forEach(res => {
// this.content.forEach(val => {
// if (res == val.id) {
// this.userName.push(val.title)
// }
// })
// })
// }
// }
}
}
</script>
@@ -243,4 +428,11 @@
height: calc(100% - 60px);
overflow: auto;
}
.treeWrap {
height: calc(100vh - 240px);
}
.active {
color: #21c9cc;
display: inline-block;
}
</style>
@@ -759,8 +759,8 @@
}
.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before {
background-color: #c0c4cc;
border-color: #c0c4cc
background-color: #fff;
border-color: #fff;
}
.el-checkbox__input.is-checked .el-checkbox__inner, .el-checkbox__input.is-indeterminate .el-checkbox__inner {
@@ -927,7 +927,6 @@
.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner {
border-left-color: #409eff
}
.el-checkbox-button.is-disabled .el-checkbox-button__inner {
color: #c0c4cc;
cursor: not-allowed;
@@ -41,10 +41,10 @@
<template v-if="toggleSearchStatus">
<a-col :md="6" :sm="8">
<div class="box-title-text">
<div class="title-text" :title="$t('collectResults')">
<span>{{$t('collectResults')}}</span>
<div class="title-text" :title="$t('ProcessStatus')">
<span>{{$t('ProcessStatus')}}</span>
</div>
<a-select :placeholder="$t('PleaseSelect')+$t('collectResults')"
<a-select :placeholder="$t('PleaseSelect')+$t('ProcessStatus')"
class="box-input"
:getPopupContainer="triggerNode=> triggerNode.parentNode"
allowClear
@@ -187,7 +187,7 @@
dataIndex: 'technologyTerritoryName'
},
{
title: this.$t('collectResults'),
title: this.$t('ProcessStatus'),
align: 'center',
width: 140,
ellipsis: true,
@@ -662,12 +662,12 @@
margin-top: 10px;
.content-box-content-botton-text {
width: 118px;
max-width: 198px;
height: 32px;
display: inline-block;
text-align: center;
line-height: 32px;
padding: 0 6px;
padding: 0 10px;
background: #EFF1F3;
border-radius: 4px;
text-overflow: ellipsis;
@@ -222,7 +222,7 @@
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
}else if(fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg'){
} else if (fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadImgUrl + '/' + fileQuery.id + fileSuffix)
window.open(url, '_blank')
} else {
@@ -494,12 +494,13 @@
margin-top: 10px;
.content-box-content-botton-text {
width: 140px;
max-width: 200px;
/*min-width: 120px;*/
height: 32px;
display: inline-block;
text-align: center;
line-height: 32px;
padding: 0 6px;
padding: 0 10px;
background: #EFF1F3;
border-radius: 4px;
text-overflow: ellipsis;
@@ -512,7 +513,7 @@
cursor: pointer;
.file-text {
width: 90px;
width: calc(100% - 30px);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
@@ -522,6 +523,7 @@
}
.icon-text {
width: 24px;
font-size: 16px;
overflow: hidden;
margin-bottom: 9px;
@@ -262,6 +262,13 @@
ellipsis: true,
dataIndex: 'flowStatusName'
},
{
title: this.$t('Sponsor'),
align: 'center',
width: 140,
ellipsis: true,
dataIndex: 'createBy'
},
{
title: this.$t('dateOfInitiation'),
align: 'center',
@@ -464,8 +471,8 @@
lawsTechnologyEvaluationId: row.id,
standId: row.standId,
remark: row.remark,
createBy:row.createBy,
flowStatus:row.flowStatus
createBy: row.createBy,
flowStatus: row.flowStatus
}
})
window.open(newUrl.href, '_blank')
@@ -479,8 +486,8 @@
lawsTechnologyEvaluationId: row.id,
standId: row.standId,
remark: row.remark,
createBy:row.createBy,
flowStatus:row.flowStatus
createBy: row.createBy,
flowStatus: row.flowStatus
}
})
window.open(newUrl.href, '_blank')
@@ -9,12 +9,21 @@
<span> {{$t('comparisonResults')}}</span>
</div>
<div class="doc-detail-right">
<div @click="viewVarianceAssessmentClick"
class="operator-text-text"
:class="{'operator-text-text-text':isVarianceOne?true:false}"
:title="$t('viewVarianceAssessment')">
<a-icon type="eye"/>
{{$t('viewVarianceAssessment')}}
</div>
<div @click="viewConsistentAssessmentClick" class="operator-text-text"
:class="{'operator-text-text-text':isVarianceTwo?true:false}"
:title="$t('viewConsistentAssessment')">
<a-icon type="eye"/>
{{$t('viewConsistentAssessment')}}
</div>
<div @click="viewAllClick" class="operator-text-text"
:class="{'operator-text-text-text':isVarianceThe?true:false}"
:title="$t('viewAll')">
<a-icon type="eye"/>
{{$t('viewAll')}}
@@ -40,12 +49,19 @@
<div class="detail-content-header-content-left"
:title="resultData.serialNumberLeft + resultData.fileNameLeft"
:class="{'detail-content-header-content-left-active':isDisplay}">
{{$t('selectedStandard')}}:{{resultData.serialNumberLeft}} {{resultData.fileNameLeft}}
{{$t('selectedStandard')}}:{{resultData.serialNumberLeft}}
<span style="cursor: pointer"
@click="fileClick(resultData.fileNameLeft,resultData.fileIdLeft)">{{resultData.fileNameLeft}}</span>
</div>
<div class="detail-content-header-content-content"
:title="resultData.serialNumberRight + resultData.fileNameRight"
:class="{'detail-content-header-content-left-active':isDisplay}">
{{$t('selectedStandard')}}:{{resultData.serialNumberRight}} {{resultData.fileNameRight}}
{{$t('selectedStandard')}}:{{resultData.serialNumberRight}}
<span style="cursor: pointer"
@click="fileClick(resultData.fileNameRight,resultData.fileIdRight)">{{resultData.fileNameRight}}</span>
</div>
<div class="detail-content-header-content-rightOne">
{{$t('comparisonDifferenceComment')}}
</div>
<div class="detail-content-header-content-right" v-if="!isDisplay">
{{$t('operation')}}
@@ -75,19 +91,24 @@
</div>
<div class="detail-content-left-button" v-html="item.itemsTextRight"></div>
</div>
<div class="detail-content-bottom"
:class="{'detail-content-bottom-color':checkboxList.join(',').includes(item.id)}">
<div class="detail-content-bottom-left"
:class="{'detail-content-bottom-left-text':language == 'en-us' ? true:false}"
:title="$t('comparisonDifferenceComment')">
<a-icon type="message"/>
{{$t('comparisonDifferenceComment')}}:
</div>
<div class="detail-content-bottom-right"
:class="{'detail-content-bottom-right-text':language == 'en-us' ? true:false}">
<div class="detail-content-right-one">
<div class="detail-content-left-button">
{{item.comment}}
</div>
</div>
<!-- <div class="detail-content-bottom"-->
<!-- :class="{'detail-content-bottom-color':checkboxList.join(',').includes(item.id)}">-->
<!-- <div class="detail-content-bottom-left"-->
<!-- :class="{'detail-content-bottom-left-text':language == 'en-us' ? true:false}"-->
<!-- :title="$t('comparisonDifferenceComment')">-->
<!-- <a-icon type="message"/>-->
<!-- {{$t('comparisonDifferenceComment')}}:-->
<!-- </div>-->
<!-- <div class="detail-content-bottom-right"-->
<!-- :class="{'detail-content-bottom-right-text':language == 'en-us' ? true:false}">-->
<!-- {{item.comment}}-->
<!-- </div>-->
<!-- </div>-->
</div>
<div class="detail-content-content-text-right" v-if="!isDisplay">
<span class="text-button-one">
@@ -167,6 +188,8 @@
import { getAction, postAction, downloadFile, deleteAction } from '@/api/manage'
import commentList from './commentList'
import { putAction } from '../../../../api/manage'
import { Base64 } from 'js-base64'
import { mapGetters } from 'vuex'
export default {
name: 'comparisonResults',
@@ -177,7 +200,12 @@
return {
loading: false,
checkboxList: [],
isVarianceOne: false,
isVarianceTwo: false,
isVarianceThe: false,
confirmLoading: false,
downLoadFileUrl: window._CONFIG['domianPreviewURL'] + '/sys/common/download',
downLoadImgUrl: window._CONFIG['domianWebImgURL'] + '/sys/common/download',
visible: false,
formInlineText: {},
rulesText: {},
@@ -205,6 +233,7 @@
this.getData()
},
methods: {
...mapGetters(['userInfo']),
Fallback() {
this.$router.push({
path: '/documentComparison'
@@ -232,12 +261,45 @@
},
viewConsistentAssessmentClick() {
this.comment = '一致'
this.isVarianceTwo = true
this.isVarianceOne = false
this.isVarianceThe = false
this.getData()
},
viewVarianceAssessmentClick() {
this.isVarianceOne = true
this.isVarianceTwo = false
this.isVarianceThe = false
this.comment = '差异'
this.getData()
},
viewAllClick() {
this.comment = ''
this.isVarianceThe = true
this.isVarianceOne = false
this.isVarianceTwo = false
this.getData()
},
fileClick(name, id) {
let fileName = name
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=' + id + '&userName=' + this.userInfo().username))
} else if (fileSuffix == '.docx' || fileSuffix == '.doc') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + id + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.xlsx' || fileSuffix == '.xls') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadFileUrl + '/' + id + fileSuffix)
window.open(url, '_blank')
} else if (fileSuffix == '.png' || fileSuffix == '.jpeg' || fileSuffix == '.gif' || fileSuffix == '.jpg') {
let url = window._CONFIG['onlinePreviewDomainURL'] + '?url=' + Base64.encode(this.downLoadImgUrl + '/' + id + fileSuffix)
window.open(url, '_blank')
} else {
downloadFile('/sys/common/downLoadFile', name, { id: id })
}
},
getData() {
let query = {
id: this.$route.query.id,
@@ -466,7 +528,7 @@
color: #040B29;
.detail-content-header-content-left {
width: calc(50% - 64px);
width: calc(50% - 194px);
height: 56px;
display: inline-block;
background: rgba(4, 11, 41, 0.0300);
@@ -479,7 +541,7 @@
}
.detail-content-header-content-content {
width: calc(50% - 64px);
width: calc(50% - 194px);
display: inline-block;
height: 56px;
background: rgba(4, 11, 41, 0.0300);
@@ -491,6 +553,19 @@
white-space: nowrap;
}
.detail-content-header-content-rightOne {
width: 260px;
display: inline-block;
height: 56px;
background: rgba(4, 11, 41, 0.0300);
border-radius: 4px 0px 0px 4px;
padding-left: 24px;
border-right: 1px #EFF1F3 solid;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.detail-content-header-content-right {
width: 128px;
display: inline-block;
@@ -562,7 +637,7 @@
}
.detail-content-left {
width: 50%;
width: calc(50% - 130px);
display: inline-block;
float: left;
padding-right: 24px;
@@ -570,10 +645,20 @@
}
.detail-content-right {
width: 50%;
width: calc(50% - 104px);
display: inline-block;
float: left;
padding-left: 24px;
padding-right: 24px;
border-right: 1px #EFF1F3 solid;
}
.detail-content-right-one {
width: 234px;
display: inline-block;
float: left;
padding-left: 24px;
/*border-right: 1px #EFF1F3 solid;*/
}
.detail-content-left-top {
@@ -675,4 +760,7 @@
.detail-content-bottom-right-text {
width: calc(50% - 256px);
}
.operator-text-text-text{
color: #00B3BE!important;
}
</style>
+17 -1
View File
@@ -619,7 +619,23 @@ export default {
let supFolder = ''
this.supFolder = this.nodeItem.key
this.addSub = false
this.menuRightVisible = true
let params = {}
let long = localStorage.getItem('language')
let cut = ''
if (long && long == 'zh-cn') {
this.cut = 'cn'
} else if (long && long == 'en-us') {
this.cut = 'en'
}
params.id = this.supFolder
params.cut = this.cut
postAction(`extRepo/extRepoFolder/isAllowSiblingFolder`, params).then(res => {
if (res.success) {
this.menuRightVisible = true
} else {
this.$message.warning(res.message)
}
})
},
orgAdds(){
@@ -112,6 +112,7 @@
<PersonnelSelection
:query="{db_field_name:'certificationEngineer',db_field_txt:$t('certifiedEngineer')}"
:personneQuery="formInline"
:selectDepartment="true"
@change="PersonnelSelectionChange"
:disabled="disabled"
v-model="formInline.certificationEngineerName"/>