异步请求树型组件 API
示例参考: http://git.yonyou.com/nc-pub/ncpub-multipage-demosrc/public/module/treeDemo树——数据结构参考注:根节点没有pid,子节点都要有pid;必须添加isleaf, pid, refcode, refname, refpk字段,字段值参考下方示例注释treeData = {"data": {"page": {"pageIndex": "0", "pageSize": "10", "total": "0", "totalPage": "3"},"rows": [{"isleaf": false, // 有子节点为false, 没有子节点为true// "pid": "1001A110000000001UPS", //父节点pk"refcode": "040001", //编码"refname": "中国建设银行上海支行", //名称"refpk": "1001A110000000001UPa", //pk"values": {}, //自定义属性},{"isleaf": false,// "pid": "1001A110000000001UPS","refcode": "040001","refname": "中国建设银行天安支行","refpk": "1001A110000000001Uvv","values": {}},]}, "error": null, "success": true};this.props.asyncTree.setTreeData('tree1', treeData.data.rows)// 树节点 点击事件selectTree = (pk) => {console.log(pk)};// 树展开子节点事件,ajax请求子节点数据loadTreeData = (pk,treeNode) => {this.queryTreeData(pk,treeNode)};// 请求树 根节点—数据queryTreeData = (pk, treeNode) => {let that = this;let data = {"pid":pk,"keyword":"","pageInfo":{"pageIndex":0,"pageSize":10,"total":0,"totalPage":0},"queryCondition":{}};ajax({loading: true,url: '/ncdemo-web/bd/basedoc/regiontree.do',data: data,success: function (res) {if(res.success){props.asyncTree.setTreeData('tree1', res.data.rows, treeNode)//设置树组件数据}else {alert(res.message)}},error: function (res) {alert(res.message)}});};editNodeCallBack(item,formData) {let data = {isleaf: true,pid: item.pid,refcode: '040001',refname: '中国建设银行上海北京路支行888',refpk: item.refpk,values: {}};this.props.asyncTree.editTreeData('tree1', data);}addNodeCallBack(item, formData) {}delNodeCallBack(item) {}render(){const {table, button, search, form, editTable, asyncTree, modal } = this.props;const { createAsyncTree } = asyncTree;return(<div>{createAsyncTree({treeId: 'tree1',metaId: 'treeForm',onSelectEve: this.selectTree.bind(this), //节点选中事件loadTreeData: this.loadTreeData.bind(this), //加载子节点数据editType: true, //是否需要编辑功能onMouseEnterEve: this.onMouseEnterEve.bind(this), //鼠标滑过节点事件// onSelectedChange:this.onSelectedChange.bind(this), // 节点选中改变事件editNodeCallBack: this.editNodeCallBack.bind(this), //编辑 回调addNodeCallBack: this.addNodeCallBack.bind(this), //新增回调delNodeCallBack: this.delNodeCallBack.bind(this) // 删除回调})}</div>)}
| 方法 | 参数描述/类型 | 名称 |
|---|---|---|
| createAsyncTree({ treeId, onSelect, loadTreeData, onSelectedChange, userDefine, showLine }) |
1、treeId:组件id(string) onSelect:节点点击事件(function) 2、loadTreeData: 父节点展开事件(function) 3、onSelectedChange:节点选择改变监听事件(fun) 4、userDefine:业务组自定义dom方法(fun) 5、showLine:是否显示连线(true/false) 6、onMouseEnterEve:鼠标滑过节点事件(fun) 7、editType:是否可编辑(bollen),默认false 8、editNodeCallBack:编辑 回调(fun) 9、addNodeCallBack:新增回调 10、delNodeCallBack:删除回调 11、metaId:树模板的id,类似表单模板,用于弹出编辑 12、openIcon: 替换展开状态图标(fun) 13、closeIcon:替换关闭状态图标(fun) |
创建树 |
| setTreeData(id, data) | id:组件id(string) data: 树型组件数据(array) |
点开子节点时,设置树数据 |
| addTreeData(id, datas) | id:组件id; datas:节点数据,如果有pid字段,插入到指定父节点;若无pid,插入到根节点 |
添加树节点 |
| getAsyncTreeValue(id,pk) | id:组件id; pk:节点pk(string);(非必输) 若传pk,获取指定节点;若无,获取所有节点数据 |
获取指定节点或所有节点数据 |
| delTreeData(id, pk) | id:组件id; pk:节点pk(string) |
删除指定节点 |
| editTreeData(id, newItem) | id:组件id; newItem:修改后的节点对象(object) |
修改节点 |
| setAsyncNodeDisable(id, disable, pk) | id:组件id disable: 是否可用(boolean); false:可用; true: 不可用; pk: 节点pk (非必输)。若有,设置某个节点是否可用;若无,设置所有节点是否可用 |
设置某个节点或所有节点是否可用 |
| getSelectNodeAsync(id) | id:组件id | 获取当前选中节点信息 |
| openNodeByPkAsync(id, key) | id:组件id; key: 节点key值;异步树key为节点refpk,同步树key为节点refname;(字符串\数组) |
展开单个节点或多个节点,同时触发loadTreeData方法,去请求展开节点的数据 |
| closeNodeByPkAsync(id ,key ) | id:组件id;key:节点key(字符串/数组;若不传,则关闭所有展开节点) | 关闭单个节点或多个节点或所有节点 |
