├── .gitignore ├── .npmignore ├── index.html ├── src ├── index.js ├── Checkbox │ └── index.vue ├── TableTree │ ├── utils │ │ ├── tableTree.js │ │ └── index.js │ └── index.vue └── App.vue ├── package.json ├── webpack.config.js └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .* 2 | *.md 3 | node_modules/ 4 | src/ -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 | 12 |
|
15 |
16 |
20 | |
21 |
|---|
| 31 | |
|
47 |
48 |
52 | |
53 |
|---|
|
63 |
64 |
84 | {{ tdData.isFold ? '-' : '+' }}
65 |
66 |
67 | |
85 |
| 88 | |
| 参数 | 37 |说明 | 38 |类型 | 39 |可选值 | 40 |默认值 | 41 |
|---|---|---|---|---|
| tableColumns | 46 |动态表头 | 47 |Array | 48 |- | 49 |[] | 50 |
| originData | 53 |树形数据 | 54 |Array | 55 |- | 56 |[] | 57 |
| isFold | 60 |是否折叠 | 61 |Boolean | 62 |- | 63 |false | 64 |
| foldNum | 67 |折叠层级,仅当foldNum为true时生效,到某一层级时子级能全部展开,默认是一层一层的展开 | 68 |Number | 69 |- | 70 |0 | 71 |
| showCheckbox | 74 |是否显示复选框 | 75 |Boolean | 76 |- | 77 |false | 78 |
| showCheckboxAndSlot | 81 |是否同时显示复选框和slot,仅当showCheckbox为true时生效 | 82 |Boolean | 83 |- | 84 |false | 85 |
| checkStrictly | 88 |是否严格的遵循父子不互相关联,仅当showCheckbox为true时生效 | 89 |Boolean | 90 |- | 91 |false | 92 |
| trueCheckLabel | 95 |checkbox选中的别名,仅当showCheckbox为true时生效 | 96 |Boolean, String, Number | 97 |- | 98 |true | 99 |
| falseCheckLabel | 102 |checkbox未选中的别名,仅当showCheckbox为true时生效 | 103 |Boolean, String, Number | 104 |- | 105 |false | 106 |
| trueEditLabel | 109 |checkbox置灰的别名,仅当showCheckbox为true时生效 | 110 |Boolean, String, Number | 111 |- | 112 |false | 113 |
| falseEditLabel | 116 |checkbox不置灰的别名,仅当showCheckbox为true时生效 | 117 |Boolean, String, Number | 118 |- | 119 |true | 120 |
| disabledCheckboxNodeLevel | 123 |置灰checkbox的前几个层级,仅当showCheckbox为true时生效 | 124 |Number | 125 |- | 126 |0 | 127 |
| disabledCheckboxLevels | 130 |置灰checkbox的层级,仅当showCheckbox为true时生效 | 131 |Array | 132 |- | 133 |[] | 134 |
| disabledCheckboxIds | 137 |置灰checkbox的ids,仅当showCheckbox为true时生效 | 138 |Array | 139 |- | 140 |[] | 141 |
| isShowTableHead | 144 |是否显示表头 | 145 |Boolean | 146 |- | 147 |true | 148 |
| height | 151 |table传入的高度 | 152 |String, Number | 153 |- | 154 |'auto' | 155 |
| extraColumn | 158 |是否后面额外有固定的列拼接 | 159 |Boolean | 160 |- | 161 |false | 162 |
| extraColumnObj | 165 |额外列的数据,仅当extraColumn为true时生效 | 166 |Object | 167 |- | 168 |{columns: [], list: []} | 169 |
175 | [
176 | {
177 | id: 'body1', // 节点id
178 | nodeLevel: 1, // 节点层级
179 | nodeName: '节点1', // 节点名称
180 | step: 1, // 节点所占列数
181 | parentId: null, // 父节点id
182 | isChecked: false, // 节点是否选择
183 | editable: false, // 节点是否可选
184 | chidrenList: [] // 节点包含的子节点
185 | }
186 | ]
187 |
188 | 示例数据
189 |190 | [ 191 | { 192 | id: 'body1', 193 | nodeLevel: 1, 194 | nodeName: '节点1', 195 | step: 1, 196 | parentId: null, 197 | isChecked: false, 198 | editable: false, 199 | chidrenList: [ 200 | { 201 | id: 'body1-1', 202 | nodeLevel: 2, 203 | nodeName: '节点1-1', 204 | step: 1, 205 | parentId: 'body1', 206 | isChecked: false, 207 | editable: false, 208 | chidrenList: [ 209 | { 210 | id: 'body1-1-1', 211 | nodeLevel: 3, 212 | nodeName: '节点1-1-1', 213 | step: 1, 214 | parentId: 'body1-1', 215 | isChecked: false, 216 | editable: false, 217 | chidrenList: [ 218 | { 219 | id: 'body1-1-1-1', 220 | nodeLevel: 4, 221 | nodeName: '节点1-1-1-1', 222 | step: 1, 223 | parentId: 'body1-1-1', 224 | isChecked: false, 225 | editable: false, 226 | chidrenList: [ 227 | { 228 | id: 'body1-1-1-1-1', 229 | nodeLevel: 5, 230 | nodeName: '节点1-1-1-1-1', 231 | step: 1, 232 | parentId: 'body1-1-1-1', 233 | isChecked: false, 234 | editable: false, 235 | chidrenList: [ 236 | { 237 | id: 'body1-1-1-1-1-1', 238 | nodeLevel: 6, 239 | nodeName: '节点1-1-1-1-1-1', 240 | step: 1, 241 | parentId: 'body1-1-1-1-1', 242 | isChecked: false, 243 | editable: false, 244 | chidrenList: [ 245 | 246 | ] 247 | }, 248 | { 249 | id: 'body1-1-1-1-1-2', 250 | nodeLevel: 6, 251 | nodeName: '节点1-1-1-1-1-2', 252 | step: 1, 253 | parentId: 'body1-1-1-1-1', 254 | isChecked: false, 255 | editable: false, 256 | chidrenList: [ 257 | 258 | ] 259 | } 260 | ] 261 | } 262 | ] 263 | }, 264 | { 265 | id: 'body1-1-1-2', 266 | nodeLevel: 4, 267 | nodeName: '节点1-1-1-2', 268 | step: 1, 269 | parentId: 'body1-1-1', 270 | isChecked: false, 271 | editable: false, 272 | chidrenList: [] 273 | }, 274 | { 275 | id: 'body1-1-1-3', 276 | nodeLevel: 4, 277 | nodeName: '节点1-1-1-3', 278 | step: 1, 279 | parentId: 'body1-1-1', 280 | isChecked: false, 281 | editable: false, 282 | chidrenList: [ 283 | { 284 | id: 'body1-1-1-3-1', 285 | nodeLevel: 5, 286 | nodeName: '节点1-1-1-3-1', 287 | step: 1, 288 | parentId: 'body1-1-1-3', 289 | isChecked: false, 290 | editable: false, 291 | chidrenList: [] 292 | }, 293 | { 294 | id: 'body1-1-1-3-2', 295 | nodeLevel: 5, 296 | nodeName: '节点1-1-1-3-2', 297 | step: 2, 298 | parentId: 'body1-1-1-3', 299 | isChecked: false, 300 | editable: false, 301 | chidrenList: [] 302 | } 303 | ] 304 | } 305 | ] 306 | }, 307 | { 308 | id: 'body1-1-2', 309 | nodeLevel: 3, 310 | nodeName: '节点1-1-2', 311 | step: 1, 312 | parentId: 'body1-1', 313 | isChecked: false, 314 | editable: false, 315 | chidrenList: [ 316 | { 317 | id: 'body1-1-2-1', 318 | nodeLevel: 4, 319 | nodeName: '节点1-1-2-1', 320 | step: 1, 321 | parentId: 'body1-1-2', 322 | isChecked: false, 323 | editable: false, 324 | chidrenList: [ 325 | { 326 | id: 'body1-1-2-1-1', 327 | nodeLevel: 5, 328 | nodeName: '节点1-1-2-1-1', 329 | step: 1, 330 | parentId: 'body1-1-2-1', 331 | isChecked: false, 332 | editable: false, 333 | chidrenList: [ 334 | { 335 | id: 'body1-1-2-1-1-1', 336 | nodeLevel: 6, 337 | nodeName: '节点1-1-2-1-1-1', 338 | step: 1, 339 | parentId: 'body1-1-2-1-1', 340 | isChecked: false, 341 | editable: false, 342 | chidrenList: [ 343 | 344 | ] 345 | }, 346 | { 347 | id: 'body1-1-2-1-1-2', 348 | nodeLevel: 6, 349 | nodeName: '节点1-1-2-1-1-2', 350 | step: 1, 351 | parentId: 'body1-1-2-1-1', 352 | isChecked: false, 353 | editable: false, 354 | chidrenList: [ 355 | 356 | ] 357 | } 358 | ] 359 | } 360 | ] 361 | } 362 | ] 363 | } 364 | ] 365 | } 366 | ] 367 | }, 368 | { 369 | id: 'body2', 370 | nodeLevel: 1, 371 | nodeName: '节点2', 372 | step: 1, 373 | parentId: null, 374 | isChecked: false, 375 | editable: false, 376 | chidrenList: [ 377 | { 378 | id: 'body2-1', 379 | nodeLevel: 2, 380 | nodeName: '节点2-1', 381 | step: 1, 382 | parentId: 'body2', 383 | isChecked: false, 384 | editable: false, 385 | chidrenList: [ 386 | { 387 | id: 'body2-1-1', 388 | nodeLevel: 3, 389 | nodeName: '节点2-1-1', 390 | step: 1, 391 | parentId: 'body2-1', 392 | isChecked: false, 393 | editable: false, 394 | chidrenList: [ 395 | 396 | ] 397 | }, 398 | { 399 | id: 'body2-1-2', 400 | nodeLevel: 3, 401 | nodeName: '节点2-1-2', 402 | step: 1, 403 | parentId: 'body2-1', 404 | isChecked: false, 405 | editable: false, 406 | chidrenList: [ 407 | { 408 | id: 'body2-1-2-1', 409 | nodeLevel: 4, 410 | nodeName: '节点2-1-2-1', 411 | step: 1, 412 | parentId: 'body2-1-2', 413 | isChecked: false, 414 | editable: false, 415 | chidrenList: [ 416 | { 417 | id: 'body2-1-2-1-1', 418 | nodeLevel: 5, 419 | nodeName: '节点2-1-2-1-1', 420 | step: 1, 421 | parentId: 'body2-1-2-1', 422 | isChecked: false, 423 | editable: false, 424 | chidrenList: [ 425 | { 426 | id: 'body2-1-2-1-1-1', 427 | nodeLevel: 6, 428 | nodeName: '节点2-1-2-1-1-1', 429 | step: 1, 430 | parentId: 'body2-1-2-1-1', 431 | isChecked: false, 432 | editable: false, 433 | chidrenList: [ 434 | 435 | ] 436 | } 437 | ] 438 | } 439 | ] 440 | } 441 | ] 442 | } 443 | ] 444 | } 445 | ] 446 | }, 447 | { 448 | id: 'body3', 449 | nodeLevel: 1, 450 | nodeName: '节点3', 451 | step: 1, 452 | parentId: null, 453 | isChecked: false, 454 | editable: false, 455 | chidrenList: [] 456 | }, 457 | { 458 | id: 'body4', 459 | nodeLevel: 1, 460 | nodeName: '节点4', 461 | step: 1, 462 | parentId: null, 463 | isChecked: false, 464 | editable: false, 465 | chidrenList: [ 466 | { 467 | id: 'body4-1', 468 | nodeLevel: 2, 469 | nodeName: '节点4-1', 470 | step: 1, 471 | parentId: 'body4', 472 | isChecked: false, 473 | editable: false, 474 | chidrenList: [] 475 | } 476 | ] 477 | } 478 | ] 479 |
480 |注意:这是一个二维数组
482 |
483 | [
484 | [
485 | {
486 | id: 'head1', // 表头id
487 | nodeName: '节点1', // 表头名称
488 | rowSpan: 2, // 表头占据行
489 | colSpan: 1 // 表头占据列
490 | }
491 | ]
492 | ]
493 |
494 | 示例数据
495 |496 | [ 497 | [ 498 | { 499 | id: 'head1', 500 | nodeName: '表头1', 501 | rowSpan: 2, 502 | colSpan: 1 503 | }, 504 | { 505 | id: 'head2', 506 | nodeName: '表头2', 507 | rowSpan: 2, 508 | colSpan: 1 509 | }, 510 | { 511 | id: 'head3', 512 | nodeName: '表头3', 513 | rowSpan: 1, 514 | colSpan: 4 515 | } 516 | ], 517 | [ 518 | { 519 | id: 'head4', 520 | nodeName: '表头4', 521 | rowSpan: 1, 522 | colSpan: 1 523 | }, 524 | { 525 | id: 'head5', 526 | nodeName: '表头5', 527 | rowSpan: 1, 528 | colSpan: 3 529 | } 530 | ] 531 | ] 532 |
533 |
535 | {
536 | columns: [
537 | {
538 | colspan: 1, // 表头占据列
539 | id: null, // 表头id,可为空
540 | nodeName: "额外表头1", // 表头名称
541 | nodeType: "extra", // 表明是额外列的类型,必须是extra
542 | rowspan: 1 // 表头占据行
543 | }
544 | ],
545 | list: [
546 | {
547 | colspan: 1, // 节点占据列
548 | id: "extra-0-0", // 节点id
549 | nodeName: "extra-0-0", // 节点名称
550 | nodeType: "extra", // 表明是额外列的类型,必须是extra
551 | rowspan: 1, // 节点占据行
552 | value: "" // 额外带的数据,可以为其他属性
553 | }
554 | ]
555 | }
556 |
557 | 示例数据
558 |559 | {"columns":[{"id":null,"nodeType":"extra","nodeName":"额外表头1","rowspan":1,"colspan":1},{"id":null,"nodeType":"extra","nodeName":"额外表头2","rowspan":1,"colspan":1}],"list":[[{"nodeType":"extra","id":"extra-0-0","colspan":1,"rowspan":1,"nodeName":"extra-0-0","value":""},{"nodeType":"extra","id":"extra-0-1","colspan":1,"rowspan":1,"nodeName":"extra-0-1","value":""}],[{"nodeType":"extra","id":"extra-1-0","colspan":1,"rowspan":1,"nodeName":"extra-1-0","value":""},{"nodeType":"extra","id":"extra-1-1","colspan":1,"rowspan":1,"nodeName":"extra-1-1","value":""}],[{"nodeType":"extra","id":"extra-2-0","colspan":1,"rowspan":1,"nodeName":"extra-2-0","value":""},{"nodeType":"extra","id":"extra-2-1","colspan":1,"rowspan":1,"nodeName":"extra-2-1","value":""}],[{"nodeType":"extra","id":"extra-3-0","colspan":1,"rowspan":1,"nodeName":"extra-3-0","value":""},{"nodeType":"extra","id":"extra-3-1","colspan":1,"rowspan":1,"nodeName":"extra-3-1","value":""}],[{"nodeType":"extra","id":"extra-4-0","colspan":1,"rowspan":1,"nodeName":"extra-4-0","value":""},{"nodeType":"extra","id":"extra-4-1","colspan":1,"rowspan":1,"nodeName":"extra-4-1","value":""}],[{"nodeType":"extra","id":"extra-5-0","colspan":1,"rowspan":1,"nodeName":"extra-5-0","value":""},{"nodeType":"extra","id":"extra-5-1","colspan":1,"rowspan":1,"nodeName":"extra-5-1","value":""}],[{"nodeType":"extra","id":"extra-6-0","colspan":1,"rowspan":1,"nodeName":"extra-6-0","value":""},{"nodeType":"extra","id":"extra-6-1","colspan":1,"rowspan":1,"nodeName":"extra-6-1","value":""}],[{"nodeType":"extra","id":"extra-7-0","colspan":1,"rowspan":1,"nodeName":"extra-7-0","value":""},{"nodeType":"extra","id":"extra-7-1","colspan":1,"rowspan":1,"nodeName":"extra-7-1","value":""}],[{"nodeType":"extra","id":"extra-8-0","colspan":1,"rowspan":1,"nodeName":"extra-8-0","value":""},{"nodeType":"extra","id":"extra-8-1","colspan":1,"rowspan":1,"nodeName":"extra-8-1","value":""}],[{"nodeType":"extra","id":"extra-9-0","colspan":1,"rowspan":1,"nodeName":"extra-9-0","value":""},{"nodeType":"extra","id":"extra-9-1","colspan":1,"rowspan":1,"nodeName":"extra-9-1","value":""}],[{"nodeType":"extra","id":"extra-10-0","colspan":1,"rowspan":1,"nodeName":"extra-10-0","value":""},{"nodeType":"extra","id":"extra-10-1","colspan":1,"rowspan":1,"nodeName":"extra-10-1","value":""}]]} 560 |
561 |step设置数值,默认为1
563 |参考节点1-1-1-3-2
564 |showCheckbox设置为true,默认设置为false
570 |父子间关联,checkStrictly默认设置为false
571 |父子间不关联,checkStrictly设置为true
577 |checkbox设置值的别名,默认是Boolean
584 |类型Boolean| String | Number
585 |trueCheckLabel: 选中时的值
586 |falseCheckLabel: 未选中时的值
587 |参考节点2-1-2-1和节点2-1-2-1-1
588 |checkbox设置disabled的别名,默认是Boolean
590 |类型Boolean| String | Number
591 |trueEditLabel: 可点击的值
592 |falseEditLabel: 不可点击时的值
593 |参考节点2-1-1和节点2-1-2-1-1
594 |同时显示checkbox和slot,showCheckboxAndSlot设置为true,默认为false
604 |参考节点1-1
605 |参考节点1-1和表头3
619 |isFold设置为true,默认为false
634 |逐级展开
635 |到某级时全部展开,设置foldNum值
642 |以下示例设为2,即展开第二级时后面的子孙节点全部展开
643 |isShowTableHead设置为false,默认为true
652 |height设置一个值,默认是'auto',可设置为String或者Number
659 |例如:100 | '100px' | 'auto' | '100%'等
660 |disabledCheckboxNodeLevel设置一个值,默认是0
667 |设为2即置灰前两列
668 |disabledCheckboxLevels设置一个array,默认是[]
675 |设为[2, 4]即置灰第二列和第四列
676 |disabledCheckboxIds设置一个array,默认是[]
683 |设为['body1-1', 'body1-1-1']即置灰节点1-1和节点1-1-1
684 |可以在树的每一个叶子节点后拼接额外的列用于展示其他信息
692 |extraColumn需要设置为true,默认是false
693 |extraColumnObj需要设置一个Object,包括columns和list
694 || 方法名 | 705 |说明 | 706 |参数 | 707 |
|---|---|---|
| getTreeData() | 712 |获取树的数据 | 713 |- | 714 |
| getCheckedNodeList() | 717 |获取所有选中的节点 | 718 |- | 719 |
| resetCheckedNode(list) | 722 |重置节点勾选状态 | 723 |list: Array | 724 |
| changeNodeValue(list, key, value) | 727 |修改节点属性的值 | 728 |- | 729 |
| getExtraNodeList() | 732 |获取额外列的节点数据 | 733 |- | 734 |