树状表API

树状表样式

treeTable.png

使用说明

树状表API

  1. let datas = {
  2. "data": {
  3. "gird1": {
  4. "pageInfo": {
  5. "pageIndex": "0",
  6. "pageSize": "10",
  7. "total": "23",
  8. "totalPage": "3"
  9. },
  10. "rows": [
  11. {
  12. "status": 0,
  13. "isleaf":false, //异步时需要添加isleaf字段。false:有子节点;true:没有子节点
  14. "values": {
  15. "refpk":{
  16. "display": null,
  17. "scale": 0,
  18. "value": "a",
  19. },
  20. "pk":{
  21. "display": null,
  22. "scale": 0,
  23. "value": "a",
  24. },
  25. "name": {
  26. "display": null,
  27. "scale": 0,
  28. "value": "老大",
  29. },
  30. "age": {
  31. "display": null,
  32. "scale": 0,
  33. "value": "66"
  34. },
  35. "address": {
  36. "display": null,
  37. "scale": 0,
  38. "value": "中国"
  39. },
  40. }
  41. },
  42. // {
  43. // "status": 0,
  44. // "values": {
  45. // "pid":{
  46. // "display": null,
  47. // "scale": 0,
  48. // "value": "a",
  49. // },
  50. // "pk":{
  51. // "display": null,
  52. // "scale": 0,
  53. // "value": "a1",
  54. // },
  55. // "refpk":{
  56. // "display": null,
  57. // "scale": 0,
  58. // "value": "a1",
  59. // },
  60. // "name": {
  61. // "display": null,
  62. // "scale": 0,
  63. // "value": "老二"
  64. // },
  65. // "age": {
  66. // "display": null,
  67. // "scale": 0,
  68. // "value": "55"
  69. // },
  70. // "address": {
  71. // "display": null,
  72. // "scale": 0,
  73. // "value": "中国山东"
  74. // },
  75. //
  76. // }
  77. // },
  78. // {
  79. // "status": 0,
  80. // "values": {
  81. // "pid":{
  82. // "display": null,
  83. // "scale": 0,
  84. // "value": "a",
  85. // },
  86. // "pk":{
  87. // "display": null,
  88. // "scale": 0,
  89. // "value": "a2",
  90. // },
  91. // "refpk":{
  92. // "display": null,
  93. // "scale": 0,
  94. // "value": "a2",
  95. // },
  96. // "name": {
  97. // "display": null,
  98. // "scale": 0,
  99. // "value": "老三"
  100. // },
  101. // "age": {
  102. // "display": null,
  103. // "scale": 0,
  104. // "value": "44"
  105. // },
  106. // "address": {
  107. // "display": null,
  108. // "scale": 0,
  109. // "value": "中国新疆"
  110. // },
  111. //
  112. // }
  113. // },
  114. {
  115. "status": 0,
  116. "isleaf":false, //
  117. "values": {
  118. "refpk":{
  119. "display": null,
  120. "scale": 0,
  121. "value": "b",
  122. },
  123. "pk":{
  124. "display": null,
  125. "scale": 0,
  126. "value": "b",
  127. },
  128. "name": {
  129. "display": null,
  130. "scale": 0,
  131. "value": "北京",
  132. },
  133. "age": {
  134. "display": null,
  135. "scale": 0,
  136. "value": "66666"
  137. },
  138. "address": {
  139. "display": null,
  140. "scale": 0,
  141. "value": "中国"
  142. },
  143. }
  144. },
  145. // {
  146. // "status": 0,
  147. // "values": {
  148. // "pid":{
  149. // "display": null,
  150. // "scale": 0,
  151. // "value": "b",
  152. // },
  153. // "pk":{
  154. // "display": null,
  155. // "scale": 0,
  156. // "value": "b1",
  157. // },
  158. // "refpk":{
  159. // "display": null,
  160. // "scale": 0,
  161. // "value": "b1",
  162. // },
  163. // "name": {
  164. // "display": null,
  165. // "scale": 0,
  166. // "value": "北京东城区"
  167. // },
  168. // "age": {
  169. // "display": null,
  170. // "scale": 0,
  171. // "value": "55"
  172. // },
  173. // "address": {
  174. // "display": null,
  175. // "scale": 0,
  176. // "value": "中国山东"
  177. // },
  178. //
  179. // }
  180. // },
  181. // {
  182. // "status": 0,
  183. // "values": {
  184. // "pid":{
  185. // "display": null,
  186. // "scale": 0,
  187. // "value": "b",
  188. // },
  189. // "pk":{
  190. // "display": null,
  191. // "scale": 0,
  192. // "value": "b2",
  193. // },
  194. // "refpk":{
  195. // "display": null,
  196. // "scale": 0,
  197. // "value": "b2",
  198. // },
  199. // "name": {
  200. // "display": null,
  201. // "scale": 0,
  202. // "value": "北京西城区"
  203. // },
  204. // "age": {
  205. // "display": null,
  206. // "scale": 0,
  207. // "value": "44"
  208. // },
  209. // "address": {
  210. // "display": null,
  211. // "scale": 0,
  212. // "value": "中国新疆"
  213. // },
  214. //
  215. // }
  216. // },
  217. {
  218. "status": 0,
  219. "values": {
  220. "refpk":{
  221. "display": null,
  222. "scale": 0,
  223. "value": "c",
  224. },
  225. "pk":{
  226. "display": null,
  227. "scale": 0,
  228. "value": "c",
  229. },
  230. "name": {
  231. "display": null,
  232. "scale": 0,
  233. "value": "新世界",
  234. },
  235. "age": {
  236. "display": null,
  237. "scale": 0,
  238. "value": "66"
  239. },
  240. "address": {
  241. "display": null,
  242. "scale": 0,
  243. "value": "中国"
  244. },
  245. }
  246. },
  247. ]
  248. }
  249. },
  250. "error": null,
  251. "success": true
  252. };
  253. console.log(datas.data.gird1.rows);
  254. //同步时,将数据转换成组件需要的数据结构。需要先添加refpk(值为自身主键的值)、pid(值为父元素主键的值)两个字段。
  255. // this.newdata = this.props.treeTableManyCol.createNewData(datas.data.gird1.rows);
  256. //异步时,需要添加isleaf字段,表示当前行有子节点
  257. this.newdata = datas.data.gird1.rows;
  258. console.log(this.newdata)
  259. expandEve (item){
  260. console.log(item)
  261. let child = {"rows": [
  262. {
  263. "status": 0,
  264. "values": {
  265. "pid":{
  266. "display": null,
  267. "scale": 0,
  268. "value": item.refpk,
  269. },
  270. "refpk":{
  271. "display": null,
  272. "scale": 0,
  273. "value": "1111",
  274. },
  275. "pk":{
  276. "display": null,
  277. "scale": 0,
  278. "value": "1111",
  279. },
  280. "name": {
  281. "display": null,
  282. "scale": 0,
  283. "value": "老二"
  284. },
  285. "age": {
  286. "display": null,
  287. "scale": 0,
  288. "value": "55"
  289. },
  290. "address": {
  291. "display": null,
  292. "scale": 0,
  293. "value": "中国山东"
  294. },
  295. }
  296. },
  297. {
  298. "status": 0,
  299. "values": {
  300. "pid":{
  301. "display": null,
  302. "scale": 0,
  303. "value": item.refpk,
  304. },
  305. "refpk":{
  306. "display": null,
  307. "scale": 0,
  308. "value": "2222",
  309. },
  310. "pk":{
  311. "display": null,
  312. "scale": 0,
  313. "value": "2222",
  314. },
  315. "name": {
  316. "display": null,
  317. "scale": 0,
  318. "value": "老三"
  319. },
  320. "age": {
  321. "display": null,
  322. "scale": 0,
  323. "value": "44"
  324. },
  325. "address": {
  326. "display": null,
  327. "scale": 0,
  328. "value": "中国新疆"
  329. },
  330. }
  331. },
  332. ]}
  333. setTimeout(() => {
  334. this.props.treeTableManyCol.setChildNode('treeTableCol', child.rows, item)
  335. },1000)
  336. render() {
  337. const {table, button, search, form, editTable, treeTableManyCol, modal } = this.props;
  338. let { treeTableCol } = treeTableManyCol;
  339. let { createModal } = modal;
  340. return (
  341. <div className="treeTableCol">
  342. <div className="leftBox">
  343. { treeTableCol( 'treeTableCol',{
  344. expandEve: this.expandEve.bind(this) ,//异步执行,点击加号展开子节点
  345. collapandEve:this.collapandEve.bind(this) ,//异步执行,点击加号收起子节点
  346. async:true //数据同步加载为false,异步加载为true
  347. editNodeCallBack:this.editNodeCallBack.bind(this), //编辑 回调
  348. addNodeCallBack:this.addNodeCallBack.bind(this), //新增回调
  349. delNodeCallBack:this.delNodeCallBack.bind(this), // 删除回调
  350. checkboxChange:this.checkboxChange.bind(this), //新增勾选onChange事件
  351. showCheckBox:true, // 是否显示复选框 ,默认false不显示
  352. checkedType:'radio', // 勾选方式,单选radio,多选 checkbox; 默认多选
  353. scrollConfig:{x:'130%',y:'80px'},
  354. ncOnRowDoubleClick:this.ncOnRowDoubleClick.bind(this),
  355. isDrag : true, //设置表格可拖拽 默认true
  356. adaptionHeight: true //表格高度是否自适应,默认true
  357. } ) }
  358. </div>
  359. </div>
  360. )
  361. }

树表前端数据查询


searchHandle() {
    this.props.treeTableManyCol.searchTreeTable({moduleId: 'treeTableCol', searchValue: this.searchValue.value, filters: ['dataoriginflag', 'name']});
}
方法 参数描述/类型 名称
treeTableCol(id,{
expandEve
collapandEve
async
editNodeCallBack,
addNodeCallBack,
delNodeCallBack,
})
id:组件id(string)
expandEve:异步时,点加号展开子节点事件(fun);
async:同步加载\异步加载(false, true)
创建树状表
initTreeTableData(moduleId, data, rowId, defaultExpandAllRows, expandedRowKeys) data: 数据;
rowId: 表示当前行pk的字段名;
defaultExpandAllRows:是否默认展开全部,默认值false;
expandedRowKeys:Array, 指定展开节点
初始化组件
setChildNode(moduleId, child, parent) child:子元素数据;
parent:当前行信息
异步加载时,设置子表数据
editRowEve(moduleId, newData) newData:编辑成功后的新数据 修改行
checkboxChange(record, index, e) record:勾选项数据 勾选onChange事件
addChildRowEve(moduleId, newData, parent) newData:新增行数据;
parent:当前行信息
新增子元素
addBrotherRow(moduleId, newData, brother) newData:新增行数据;
brother:当前行信息
新增兄弟行
delRowByPk(moduleId, record) record:当前行信息; 删除行
createNewData (data) data:业务组数据,格式参考上方示例说明 同步时,组装树状表所需要的数据结构。异步加载不需要调用该方法
getAllValue(moduleId) moduleId:组件id 获取当前表格所有数据
getValueByRowId(moduleId, rowId) rowId:行id; 获取某行数据
emptyAllData( moduleId ) 清空表格数据
openRow( moduleId, key ) key: 行数据中的主键值 展开某行
closeRow( moduleId, key ) key: 行数据中的主键值 收起某行
getSelectedRow( moduleId ) 获取勾选的选中行
scrollConfig Obj 配置表格滚动条
isDrag 布尔 设置表格可拖拽 默认true
ncOnRowDoubleClick(record, index, event) record, index, event 双击行事件
searchTreeTable({ moduleId: XmoduleId, searchValue: XsearchValue, filters: Xfilters, expanded: true, defaultExpandAllRows: false}) 传入参数是个对象,filters是数组或者null,为null标识全部字段查询 收起某行
adaptionHeight 布尔 表格高度是否自适应 默认 true