/**
* 树型组件编辑:新增、修改、删除,根据名称过滤节点操作
* @param {*} dlgId 对话框随机id,防止id冲突与数据集id统一命名引用
* @param {*} dsId 绑定过滤数据集ID
* @param {*} option 扩展选项
* @returns
*/
import pinyin from "pinyin";
import { JsonUtil } from "@birt/funclib/JsonUtil"
export function treeEditFilter(dlgId, dsId, option) {
debugger
let filterField = option.hcTree.labelField;
let lazy = option.hcTree.lazy;
let fireAction = lazy ? "" : "keyup";
let treeId = "HcTree_org";
// 过滤编辑器
let inputFilter = {
controlName: "HcInputFilter",
controlId: "HcInputFilter_" + dlgId,
size: "small",
fireAction: fireAction,
events: {
filterChange: function (filterKey) {
this.getRefCompt(treeId).filter(
filterKey
);
},
}
};
// 删除
let btnDeleteId = "HcLookup_delete_" + dlgId;
let buttonDelete = {
controlName: "HcLookup",
controlId: btnDeleteId,
dataset: dsId,
lookDialog: {
footer: ["cancel", "delete"],
// events: {
// deleted:function() {
// var _this = this.getWorkBook().dataset[dsId]
// var vm = this
// setDatas(_this, vm, 'delete')
// },
// },
},
children: [
{
controlName: "HcButton",
title: "删除",
icon: "el-icon-delete",
size: "mini",
style: "float:left;margin-left:5px;width:80px;",
vshow: false,
events: {
click: function () {
debugger
let treeMenu = this.getRefCompt(treeId);
let currentRow = treeMenu.elTree().getCurrentNode();
if (!currentRow || currentRow._isVirtualRoot) {
this.$message({
message: '请选择要删除的节点',
type: 'warning'
});
return;
}
let btnDelete = this.getRefCompt(btnDeleteId);
let pushRecd = btnDelete.getPushAddMapRecds(currentRow);
let pushParam = {
pushType: "delete",
dataset: btnDelete.lookDataset.dataset,
// data: [pushRecd]
};
Object.assign(pushParam,pushRecd);
btnDelete.openLookDialog({ __push: pushParam })
},
},
}
]
}
function remove(node,data,store,_this){
debugger
let wb = _this.getWorkBook();
wb.param.node = node
wb.param.treeData = data
let btnDelete = _this.getRefCompt(btnDeleteId);
var pushRecd = data;
var pushParam = {
pushType: "delete",
dataset: btnDelete.lookDataset.dataset,
data: [pushRecd]
};
Object.assign(pushParam,pushRecd);
btnDelete.openLookDialog({ __push: pushParam })
}
JsonUtil.deepMerge(buttonDelete, option.hcLookupDelete);
JsonUtil.deepMerge(buttonDelete, option.hcLookup);
// 编辑树型按钮工具条
let treeEditToolbar = {
controlName: "HcRow",
style: "margin-top:5px;",
children: [
buttonDelete,
]
}
// 编辑树组件
let hcTree = {
controlName: "HcTree",
controlId: treeId,
dataset: dsId,
labelField: filterField,
// defaultExpandAll: true,
// accordion: true,
highlightCurrent: true,
expandOnClickNode: false,
lazy: false,
filterNodeMethod:function(value, data,node) {
if (!value){
return true
}else{
let key =node.label +"_" + pinyin.getCamelChars(node.label);
return key.indexOf(value.toUpperCase()) !== -1;
}
},
height: function (parentHeight) {
return parentHeight - 80;
},
style: "overflow: auto;border:1px solid rgb(235, 238, 245);margin-top: 5px;",
renderContent(h, { node, data, store}) {
var _this = this
var iconClass = ''
switch (data.FORGKIND) {
case '.ROOT':
iconClass = 'iconfont icon-root'
break;
case '.ORG':
iconClass = 'iconfont icon-org'
break;
case '.DPT':
iconClass = 'iconfont icon-dpt'
break;
case '.PTM':
iconClass = 'iconfont icon-ptm'
break;
case '.PSM':
iconClass = 'el-icon-user'
break;
default:
iconClass = ''
break;
}
return (
<span class="custom-tree-node">
<span title={data.FORGKINDNAME}>
<i class={iconClass}></i>
{node.label}
</span>
{/* <span class="btn">
<el-button size="large" title="删除" type="text" icon="el-icon-delete" on-click={ () => remove(node,data,store,_this) }></el-button>
</span> */}
</span>);
}
};
// 应用树个性化配置
Object.assign(hcTree, option.hcTree);
// 返回布局结构
return [
inputFilter,
treeEditToolbar,
hcTree
]
}