Authored by 王涛

优化

... ... @@ -6,6 +6,7 @@ import org.jeecg.modules.jmreport.ext.pojo.PageDetail;
import org.jeecg.modules.jmreport.ext.pojo.PageTreeNode;
import java.util.List;
import java.util.Map;
/**
* (ExtPageConfig)表服务接口
... ... @@ -27,6 +28,6 @@ public interface ExtPageConfigService extends IService<ExtPageConfig> {
* 获取报表页面详细信息
* @return
*/
PageDetail getPageDetail(String pageCode);
Map<String,Object> getPageDetail(String pageCode);
}
... ...
... ... @@ -11,7 +11,9 @@ import org.jeecg.modules.jmreport.ext.service.ExtPageConfigService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
... ... @@ -31,7 +33,7 @@ public class ExtPageConfigServiceImpl extends ServiceImpl<ExtPageConfigDao, ExtP
@Override
public PageTreeNode getTree() {
PageTreeNode root = new PageTreeNode(-1,"页面配置");
PageTreeNode root = new PageTreeNode(-1, "页面配置");
LambdaQueryWrapper<ExtPageConfig> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.orderByAsc(ExtPageConfig::getSort);
... ... @@ -40,11 +42,11 @@ public class ExtPageConfigServiceImpl extends ServiceImpl<ExtPageConfigDao, ExtP
// 获取所有父节点
List<ExtPageConfig> parentList = list.stream().filter(item -> item.getParentId() == null).collect(Collectors.toList());
parentList.stream().forEach(item ->{
parentList.stream().forEach(item -> {
PageTreeNode node = new PageTreeNode(item.getId(),item.getPageName());
node.getProps().put("reportCode",item.getReportCode());
getChild(node,list,item);
PageTreeNode node = new PageTreeNode(item.getId(), item.getPageName());
node.getProps().put("reportCode", item.getReportCode());
getChild(node, list, item);
root.getChildren().add(node);
});
... ... @@ -58,67 +60,72 @@ public class ExtPageConfigServiceImpl extends ServiceImpl<ExtPageConfigDao, ExtP
* @return
*/
@Override
public PageDetail getPageDetail(String pageCode) {
if(StringUtils.isBlank(pageCode)){
return null;
public Map<String, Object> getPageDetail(String pageCode) {
Map<String, Object> maps = new HashMap<>();
if (StringUtils.isBlank(pageCode)) {
return maps;
}
Map<String, String> codeMap = new HashMap<>();
LambdaQueryWrapper<ExtPageConfig> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ExtPageConfig::getPageCode,pageCode);
queryWrapper.eq(ExtPageConfig::getPageCode, pageCode);
ExtPageConfig one = this.getOne(queryWrapper);
if(one == null){
if (one == null) {
return null;
}
// 获取子菜单
PageDetail root = PageDetail.builder()
.pageCode(one.getPageCode())
.pageName(one.getPageName())
.reportCode(one.getReportCode())
.child(new ArrayList<>())
.build();
PageDetail root = PageDetail.builder().pageCode(one.getPageCode()).pageName(one.getPageName()).reportCode(one.getReportCode()).child(new ArrayList<>()).build();
Integer id = one.getId();
getPageNode(id,root);
getPageNode(id, root, codeMap);
return root;
maps.put("root", root);
maps.put("codeMaps", codeMap);
return maps;
}
private void getPageNode( Integer id ,PageDetail root){
private void getPageNode(Integer id, PageDetail root, Map<String, String> codeMap) {
setMapData(root, codeMap);
LambdaQueryWrapper<ExtPageConfig> queryWrapper1 = new LambdaQueryWrapper<>();
queryWrapper1.eq(ExtPageConfig::getParentId,id);
queryWrapper1.eq(ExtPageConfig::getParentId, id);
queryWrapper1.orderByAsc(ExtPageConfig::getSort);
List<ExtPageConfig> list = this.list(queryWrapper1);
if(list == null || list.isEmpty()){
if (list == null || list.isEmpty()) {
return;
}
list.stream().forEach(item ->{
PageDetail child = PageDetail.builder()
.pageCode(item.getPageCode())
.pageName(item.getPageName())
.reportCode(item.getReportCode())
.child(new ArrayList<>())
.build();
getPageNode(item.getId(), child);
list.stream().forEach(item -> {
PageDetail child = PageDetail.builder().pageCode(item.getPageCode()).pageName(item.getPageName()).reportCode(item.getReportCode()).child(new ArrayList<>()).build();
setMapData(child, codeMap);
getPageNode(item.getId(), child, codeMap);
root.getChild().add(child);
});
}
private void setMapData(PageDetail root, Map<String, String> codeMap){
String pageCode = root.getPageCode();
String reportCode = root.getReportCode();
if(StringUtils.isNotBlank(pageCode) && StringUtils.isNotBlank(reportCode)){
codeMap.put(pageCode, reportCode);
}
}
private void getChild(PageTreeNode root,List<ExtPageConfig> list,ExtPageConfig pageConfig){
private void getChild(PageTreeNode root, List<ExtPageConfig> list, ExtPageConfig pageConfig) {
// 获取子节点
List<ExtPageConfig> childList = list.stream().filter(item -> item.getParentId() == root.getId()).collect(Collectors.toList());
if(!childList.isEmpty()){
childList.stream().forEach(item ->{
PageTreeNode node = new PageTreeNode(item.getId(),item.getPageName());
node.getProps().put("reportCode",item.getReportCode());
if (!childList.isEmpty()) {
childList.stream().forEach(item -> {
PageTreeNode node = new PageTreeNode(item.getId(), item.getPageName());
node.getProps().put("reportCode", item.getReportCode());
root.getChildren().add(node);
});
}
... ...
... ... @@ -902,6 +902,13 @@
savePageConfig(){
var that = this;
let arr = that.$refs.treeTable.getSelection();
if(arr.length != 1){
that.$Message.warning('页面只能配置一个报表页面!');
return;
}
let id = this.treeNode.id
let code = that.$refs.treeTable.getSelection()[0].id;
... ...
... ... @@ -70,13 +70,13 @@
{{dataSource.pageName}}
</template>
<span v-for="(item,index) in dataSource.child">
<Menu-Item :name="item.pageCode" v-if="item.child && item.child.length == 0">
<Menu-Item @click.native="clickMneuItem(item.pageCode)" :name="item.pageCode" v-if="item.child && item.child.length == 0">
<span>{{item.pageName}}</span>
</Menu-Item>
<Submenu :name="item.pageCode" v-else>
<template slot="title">{{item.pageName}}</template>
<Menu-Item :name="item1.pageCode" v-for="(item1,index) in item.child">
<Menu-Item @click.native="clickMneuItem(item1.pageCode)" :name="item1.pageCode" v-for="(item1,index) in item.child">
<span>{{item1.pageName}}</span>
</Menu-Item>
</Submenu>
... ... @@ -108,6 +108,7 @@
src: '',
height: document.documentElement.clientHeight,
dataSource: {},
codeMaps:[]
},
computed: {
menuitemClasses: function () {
... ... @@ -139,18 +140,18 @@
token: that.token
},
success: (result) => {
that.dataSource = result;
let flg = false;
that.dataSource = result.root;
that.codeMaps = result.codeMaps;
if (result.reportCode) {
that.setReportSrc(result.reportCode);
} else {
if (result.child) {
result.child.forEach(function (d) {
if (d.reportCode && !flg) {
flg = true;
that.setReportSrc(d.reportCode);
}
})
for (var code in that.codeMaps){
let reportCode = that.codeMaps[code];
if(reportCode){
that.setReportSrc(reportCode);
break;
}
}
}
},
... ... @@ -177,17 +178,18 @@
that.setReportSrc(code);
}
} else {
if (ds.child) {
let flg = false;
ds.child.forEach(function (d) {
if (d.reportCode && d.pageCode == key && !flg) {
flg = true;
that.setReportSrc(d.reportCode);
}
})
let code = that.codeMaps[key];
if(code){
that.setReportSrc(code);
} else {
that.$Message.success('当前页面未配置报表页面!');
}
}
console.log(key);
},
clickMneuItem : function (code) {
console.log(22222);
}
}
})
... ...