异步请求树型组件 API

  1. 示例参考: http://git.yonyou.com/nc-pub/ncpub-multipage-demo
  2. src/public/module/treeDemo
  3. 树——数据结构参考
  4. 注:
  5. 根节点没有pid,子节点都要有pid;
  6. 必须添加isleaf, pid, refcode, refname, refpk字段,字段值参考下方示例注释
  7. treeData = {
  8. "data": {
  9. "page": {"pageIndex": "0", "pageSize": "10", "total": "0", "totalPage": "3"},
  10. "rows": [
  11. {
  12. "isleaf": false, // 有子节点为false, 没有子节点为true
  13. // "pid": "1001A110000000001UPS", //父节点pk
  14. "refcode": "040001", //编码
  15. "refname": "中国建设银行上海支行", //名称
  16. "refpk": "1001A110000000001UPa", //pk
  17. "values": {}, //自定义属性
  18. },
  19. {
  20. "isleaf": false,
  21. // "pid": "1001A110000000001UPS",
  22. "refcode": "040001",
  23. "refname": "中国建设银行天安支行",
  24. "refpk": "1001A110000000001Uvv",
  25. "values": {}
  26. },
  27. ]
  28. }, "error": null, "success": true
  29. };
  30. this.props.asyncTree.setTreeData('tree1', treeData.data.rows)
  31. // 树节点 点击事件
  32. selectTree = (pk) => {
  33. console.log(pk)
  34. };
  35. // 树展开子节点事件,ajax请求子节点数据
  36. loadTreeData = (pk,treeNode) => {
  37. this.queryTreeData(pk,treeNode)
  38. };
  39. // 请求树 根节点—数据
  40. queryTreeData = (pk, treeNode) => {
  41. let that = this;
  42. let data = {
  43. "pid":pk,
  44. "keyword":"",
  45. "pageInfo":{
  46. "pageIndex":0,
  47. "pageSize":10,
  48. "total":0,
  49. "totalPage":0
  50. },
  51. "queryCondition":{}
  52. };
  53. ajax({
  54. loading: true,
  55. url: '/ncdemo-web/bd/basedoc/regiontree.do',
  56. data: data,
  57. success: function (res) {
  58. if(res.success){
  59. props.asyncTree.setTreeData('tree1', res.data.rows, treeNode)//设置树组件数据
  60. }else {
  61. alert(res.message)
  62. }
  63. },
  64. error: function (res) {
  65. alert(res.message)
  66. }
  67. });
  68. };
  69. editNodeCallBack(item,formData) {
  70. let data = {
  71. isleaf: true,
  72. pid: item.pid,
  73. refcode: '040001',
  74. refname: '中国建设银行上海北京路支行888',
  75. refpk: item.refpk,
  76. values: {}
  77. };
  78. this.props.asyncTree.editTreeData('tree1', data);
  79. }
  80. addNodeCallBack(item, formData) {
  81. }
  82. delNodeCallBack(item) {
  83. }
  84. render(){
  85. const {table, button, search, form, editTable, asyncTree, modal } = this.props;
  86. const { createAsyncTree } = asyncTree;
  87. return(
  88. <div>
  89. {createAsyncTree({
  90. treeId: 'tree1',
  91. metaId: 'treeForm',
  92. onSelectEve: this.selectTree.bind(this), //节点选中事件
  93. loadTreeData: this.loadTreeData.bind(this), //加载子节点数据
  94. editType: true, //是否需要编辑功能
  95. onMouseEnterEve: this.onMouseEnterEve.bind(this), //鼠标滑过节点事件
  96. // onSelectedChange:this.onSelectedChange.bind(this), // 节点选中改变事件
  97. editNodeCallBack: this.editNodeCallBack.bind(this), //编辑 回调
  98. addNodeCallBack: this.addNodeCallBack.bind(this), //新增回调
  99. delNodeCallBack: this.delNodeCallBack.bind(this) // 删除回调
  100. })}
  101. </div>
  102. )
  103. }
方法 参数描述/类型 名称
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(字符串/数组;若不传,则关闭所有展开节点) 关闭单个节点或多个节点或所有节点