@idooel/components 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/README.md +99 -0
  2. package/dist/@idooel/components.esm.js +13956 -1882
  3. package/dist/@idooel/components.umd.js +14000 -1891
  4. package/jsconfig.json +8 -0
  5. package/package.json +12 -6
  6. package/packages/alert/index.js +5 -0
  7. package/packages/alert/src/index.vue +46 -0
  8. package/packages/batch-export/index.js +5 -0
  9. package/packages/batch-export/src/index.vue +105 -0
  10. package/packages/business-components/modal-fsm/index.js +5 -0
  11. package/packages/business-components/modal-fsm/src/index.vue +164 -0
  12. package/packages/business-components/modal-import/index.js +5 -0
  13. package/packages/business-components/modal-import/src/index.vue +140 -0
  14. package/packages/business-components/modal-timeline/index.js +5 -0
  15. package/packages/business-components/modal-timeline/src/index.vue +78 -0
  16. package/packages/business-components/tabs-sub-center/index.js +5 -0
  17. package/packages/business-components/tabs-sub-center/src/index.vue +117 -0
  18. package/packages/button/index.js +4 -4
  19. package/packages/button/src/index.vue +65 -24
  20. package/packages/checkbox/index.js +5 -0
  21. package/packages/checkbox/src/index.vue +53 -0
  22. package/packages/composite-components/button-group/index.js +4 -4
  23. package/packages/composite-components/button-group/src/index.vue +151 -46
  24. package/packages/composite-components/form-attachment/src/index.vue +15 -0
  25. package/packages/composite-components/form-img-crop/index.js +5 -0
  26. package/packages/composite-components/form-img-crop/src/index.vue +121 -0
  27. package/packages/composite-components/modal-confirm/index.js +5 -0
  28. package/packages/composite-components/modal-confirm/src/index.vue +104 -0
  29. package/packages/composite-components/modal-form/index.js +5 -0
  30. package/packages/composite-components/modal-form/src/index.vue +231 -0
  31. package/packages/composite-components/modal-img-crop/index.js +5 -0
  32. package/packages/composite-components/modal-img-crop/src/index.vue +299 -0
  33. package/packages/composite-components/modal-table/index.js +5 -0
  34. package/packages/composite-components/modal-table/src/index.vue +156 -0
  35. package/packages/composite-components/modal-table-transfer/index.js +0 -0
  36. package/packages/composite-components/modal-tree/index.js +5 -0
  37. package/packages/composite-components/modal-tree/src/index.vue +76 -0
  38. package/packages/composite-components/search-area/index.js +4 -4
  39. package/packages/composite-components/search-area/src/index.vue +237 -128
  40. package/packages/composite-components/search-area/src/label.vue +35 -35
  41. package/packages/composite-components/select-entity-modal-table/index.js +5 -0
  42. package/packages/composite-components/select-entity-modal-table/src/index.vue +172 -0
  43. package/packages/composite-components/table-transfer/index.js +0 -0
  44. package/packages/date/index.js +4 -4
  45. package/packages/date/src/index.vue +113 -40
  46. package/packages/date-range/index.js +5 -0
  47. package/packages/date-range/src/index.vue +47 -0
  48. package/packages/form/index.js +5 -0
  49. package/packages/form/src/index.vue +319 -0
  50. package/packages/icon/index.js +5 -0
  51. package/packages/icon/src/index.vue +32 -0
  52. package/packages/index.js +153 -50
  53. package/packages/input/index.js +4 -4
  54. package/packages/input/src/index.vue +35 -23
  55. package/packages/input-number/index.js +5 -0
  56. package/packages/input-number/src/index.vue +24 -0
  57. package/packages/loading/index.js +5 -0
  58. package/packages/loading/src/index.vue +37 -0
  59. package/packages/modal/index.js +5 -0
  60. package/packages/modal/src/index.vue +185 -0
  61. package/packages/models/form-group-model/index.js +5 -0
  62. package/packages/models/form-group-model/src/index.vue +274 -0
  63. package/packages/models/form-model/index.js +5 -0
  64. package/packages/models/form-model/src/index.vue +233 -0
  65. package/packages/models/step-model/index.js +5 -0
  66. package/packages/models/step-model/src/index.vue +224 -0
  67. package/packages/{tree-table-model → models/tree-table-model}/index.js +4 -4
  68. package/packages/models/tree-table-model/src/index.vue +689 -0
  69. package/packages/radio/index.js +5 -0
  70. package/packages/radio/src/index.vue +57 -0
  71. package/packages/select/index.js +4 -4
  72. package/packages/select/src/index.vue +105 -34
  73. package/packages/select-entity/index.js +5 -0
  74. package/packages/select-entity/src/index.vue +120 -0
  75. package/packages/table/index.js +4 -4
  76. package/packages/table/src/action.vue +172 -103
  77. package/packages/table/src/index.vue +289 -88
  78. package/packages/tabs/index.js +5 -0
  79. package/packages/tabs/src/index.vue +56 -0
  80. package/packages/text/index.js +5 -0
  81. package/packages/text/src/index.vue +48 -0
  82. package/packages/text-editor/index.js +5 -0
  83. package/packages/text-editor/src/index.vue +73 -0
  84. package/packages/textarea/index.js +5 -0
  85. package/packages/textarea/src/index.vue +58 -0
  86. package/packages/theme/form.scss +22 -0
  87. package/packages/theme/index.scss +43 -0
  88. package/packages/theme/overrid.scss +8 -0
  89. package/packages/theme/styleClass.scss +3 -0
  90. package/packages/theme/variables.scss +56 -0
  91. package/packages/timeline/index.js +5 -0
  92. package/packages/timeline/src/index.vue +258 -0
  93. package/packages/tpl/index.js +4 -4
  94. package/packages/tpl/src/index.vue +56 -47
  95. package/packages/tree/index.js +4 -4
  96. package/packages/tree/src/TreeNode.vue +29 -29
  97. package/packages/tree/src/index.vue +101 -96
  98. package/packages/tree-select/index.js +5 -0
  99. package/packages/tree-select/src/index.vue +143 -0
  100. package/packages/upload/index.js +5 -0
  101. package/packages/upload/src/index.vue +445 -0
  102. package/packages/utils/index.js +63 -0
  103. package/scripts/rollup.config.js +42 -35
  104. package/scripts/rollup.esm.config.js +11 -11
  105. package/scripts/rollup.umd.config.js +14 -14
  106. package/packages/tree-table-model/src/index.vue +0 -290
  107. /package/packages/{tree-table-model/README.md → composite-components/form-attachment/index.js} +0 -0
@@ -0,0 +1,43 @@
1
+ @import 'variables.scss';
2
+ @import 'form.scss';
3
+ @import 'styleClass.scss';
4
+
5
+ $primary: $primary-06;
6
+
7
+ :root {
8
+ --idooel-primary-color: #{$primary};
9
+ --idoole-black-02: #{$black-02};
10
+ --idoole-black-06: #{$black-06};
11
+ --idoole-black-07: #{$black-07};
12
+ --idoole-black-064: #{$black-07};
13
+ --idoole-black-088: #{$black-08};
14
+ --idoole-black-016: #{$black-04};
15
+ --idooel-disabled-border-color: #{$black-04};
16
+
17
+ --idoole-success-06: #{$success-06};
18
+ --idoole-warning-06: #{$warning-06};
19
+ --idoole-error-06: #{$error-06};
20
+ //Table
21
+ --idooel-border-width: 2;
22
+ --idooel-border-color: #53a8ff;
23
+ --idooel-column-border-width: 1;
24
+ --idooel-column-border-color: #d9ecff;
25
+ --idooel-row-even-color: #F0FAFF;
26
+ --idooel-row-odd-color: #FFF;
27
+
28
+ //Form
29
+ --idooel-form-title-border-color: #{$black-04};
30
+ --idooel-form-upload-bg-color: #{$black-01};
31
+ --idooel-form-upload-border-hover-color: #{$primary-05};
32
+ --idooel-form-border-radius: #{$border-radius-base}px;
33
+ --idooel-form-border-err-color: #{$error-06};
34
+
35
+ //Link
36
+ --idooel-link-06: #{$link-06};
37
+ --idooel-link-03: #{$link-03};
38
+
39
+ //img-crop
40
+ --idooel-img-crop-err-color: #{$error-03};
41
+ }
42
+
43
+ @import './overrid.scss';
@@ -0,0 +1,8 @@
1
+ .ant-input-disabled {
2
+ border-color: var(--idooel-disabled-border-color) !important;
3
+ }
4
+ .ant-select-disabled {
5
+ .ant-select-selection {
6
+ border-color: var(--idooel-disabled-border-color) !important;
7
+ }
8
+ }
@@ -0,0 +1,3 @@
1
+ .margin-t-8 {
2
+ margin-top: 8px;
3
+ }
@@ -0,0 +1,56 @@
1
+ $primary-01: #E6F7FF !default;
2
+ $primary-02: #BAE7FF !default;
3
+ $primary-03: #91D5FF !default;
4
+ $primary-04: #69C0FF !default;
5
+ $primary-05: #40A9FF !default;
6
+ $primary-06: #1890FF !default;
7
+ $primary-07: #096DD9 !default;
8
+ $primary-08: #0050B3 !default;
9
+ $primary-09: #003A8C !default;
10
+ $primary-10: #002766 !default;
11
+
12
+ $link-01: #E6F7FF;
13
+ $link-03: #91D5FF;
14
+ $link-05: #40A9FF;
15
+ $link-06: #1890FF;
16
+ $link-07: #096DD9;
17
+
18
+ $error-01: #FFF1F0;
19
+ $error-03: #FFA39E;
20
+ $error-05: #FF4D4F;
21
+ $error-06: #F5222D;
22
+ $error-07: #CF1322;
23
+
24
+ $warning-01: #FFFBE6;
25
+ $warning-03: #FFE58F;
26
+ $warning-05: #FFC53D;
27
+ $warning-06: #FAAD14;
28
+ $warning-07: #D48806;
29
+
30
+ $success-01: #F6FFED;
31
+ $success-03: #B7EB8F;
32
+ $success-05: #73D13D;
33
+ $success-06: #52C41A;
34
+ $success-07: #389E0D;
35
+
36
+ //White
37
+ $black-01: rgba(0, 0, 0, 0.02);
38
+ $black-02: rgba(0, 0, 0, 0.04);
39
+ $black-03: rgba(0, 0, 0, 0.08);
40
+ $black-04: rgba(0, 0, 0, 0.16);
41
+ $black-05: rgba(0, 0, 0, 0.24);
42
+ $black-06: rgba(0, 0, 0, 0.44);
43
+ $black-07: rgba(0, 0, 0, 0.64);
44
+ $black-08: rgba(0, 0, 0, 0.88);
45
+
46
+ //Black
47
+ $white-01: rgba(255, 255, 255, 0.04);
48
+ $white-02: rgba(255, 255, 255, 0.08);
49
+ $white-03: rgba(255, 255, 255, 0.16);
50
+ $white-04: rgba(255, 255, 255, 0.24);
51
+ $white-05: rgba(255, 255, 255, 0.44);
52
+ $white-06: rgba(255, 255, 255, 0.64);
53
+ $white-07: rgba(255, 255, 255, 0.88);
54
+ $white-08: #fff;
55
+
56
+ $border-radius-base: 2;
@@ -0,0 +1,5 @@
1
+ import EleTimeline from './src/index.vue'
2
+
3
+ EleTimeline.install = Vue => Vue.component(EleTimeline.name, EleTimeline)
4
+
5
+ export default EleTimeline
@@ -0,0 +1,258 @@
1
+ <template>
2
+ <div class="ele-timeline__wrapper">
3
+ <div class="ele-timeline__item" v-for="item in innerDataSource" :key="item.key">
4
+ <div class="ele-timeline__left">
5
+ <div class="titleline-left__date">{{ item.date }}</div>
6
+ </div>
7
+ <div class="ele-timeline__middle">
8
+ <div class="ele-timeline__circle"></div>
9
+ <div class="ele-timeline__traline"></div>
10
+ </div>
11
+ <div class="ele-timeline__right">
12
+ <slot v-if="$scopedSlots.right" name="right" :data="item"></slot>
13
+ <template v-else>
14
+ <div class="timeline-right__title">
15
+ <span class="title">{{ item.title }}</span>
16
+ <span :class="['title-info', item.state == 1 && 'success', item.state == 2 && 'warning', item.state == 3 && 'error']">{{ item.stateName }}</span>
17
+ </div>
18
+ <div class="timeline-right__oper">
19
+
20
+ <span class="oper-name">{{ item.userName }}</span>
21
+ 操作
22
+ </div>
23
+ <div class="timeline-right__subtitle" v-for="label in item.labelList" :key="label.value">
24
+ <div class="right-subtitle__field">{{ label.label }}:</div>
25
+ <div class="right-subtitle__content">{{ label.value }}</div>
26
+ </div>
27
+ </template>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ </template>
32
+
33
+ <script>
34
+ import { net, type } from '@idooel/shared'
35
+ import { v4 as uuidv4 } from 'uuid'
36
+ import { CONTEXT, parseFieldMap } from '../../utils'
37
+ export default {
38
+ name: 'ele-timeline',
39
+ props: {
40
+ url: {
41
+ type: String
42
+ },
43
+ params: {
44
+ type: Object,
45
+ default: () => ({})
46
+ },
47
+ requestType: {
48
+ type: String,
49
+ default: 'GET'
50
+ },
51
+ fieldMap: {
52
+ type: Object,
53
+ default: () => ({})
54
+ },
55
+ params: {
56
+ type: Object,
57
+ default: () => ({})
58
+ },
59
+ dataSource: {
60
+ type: Array,
61
+ default: () => ([
62
+ // {
63
+ // date: '2023/05/09 03:34:56',
64
+ // title: 123,
65
+ // state: 1,
66
+ // stateName: '成功',
67
+ // userName: 'Name',
68
+ // labelList: [
69
+ // {
70
+ // label: 'label',
71
+ // value: 'value'
72
+ // }
73
+ // ],
74
+ // action: '结班',
75
+ // opinion: '意见'
76
+ // }
77
+ ])
78
+ }
79
+ },
80
+ data () {
81
+ return {
82
+ innerDataSource: []
83
+ }
84
+ },
85
+ inject: {
86
+ [CONTEXT]: {
87
+ default: () => (() => ({}))
88
+ }
89
+ },
90
+ computed: {
91
+ expressionData () {
92
+ return {
93
+ _route: this.$route.query,
94
+ ...this[CONTEXT]()
95
+ }
96
+ }
97
+ },
98
+ async created() {
99
+ if (this.url) {
100
+ this.innerDataSource = await this.requestData()
101
+ } else if (!type.isEmpty(this.dataSource)) {
102
+ this.innerDataSource = this.dataSource
103
+ } else {
104
+ console.warn('ele-timeline: 请传入数据源')
105
+ }
106
+ },
107
+ methods: {
108
+ async requestData () {
109
+ const ret = await net[this.requestType.toLowerCase()](
110
+ this.url,
111
+ { ...this.params, ...parseFieldMap(this.fieldMap, this.expressionData) }
112
+ ).then(resp => {
113
+ const { data } = resp || {}
114
+ return data.map(item => {
115
+ return {
116
+ key: uuidv4(),
117
+ ...item
118
+ }
119
+ })
120
+ })
121
+ return ret
122
+ }
123
+ }
124
+ }
125
+ </script>
126
+ <style lang="scss">
127
+ @import '../../theme/index';
128
+ </style>
129
+ <style lang="scss" scoped>
130
+ .ele-timeline__wrapper {
131
+ width: 100%;
132
+ height: 100%;
133
+ .ele-timeline__item {
134
+ display: flex;
135
+ flex-direction: row;
136
+ &:last-child {
137
+ .ele-timeline__middle {
138
+ .ele-timeline__traline {
139
+ display: none;
140
+ }
141
+ }
142
+ }
143
+ .ele-timeline__left {
144
+ flex: 1;
145
+ padding-right: 12px;
146
+ padding-top: 16px;
147
+ padding-bottom: 16px;
148
+ text-align: right;
149
+ display: flex;
150
+ flex-direction: row;
151
+ justify-content: end;
152
+ .titleline-left__date {
153
+ width: 100px;
154
+ font-size: 14px;
155
+ color: var(--idoole-black-064);
156
+ }
157
+ }
158
+ .ele-timeline__middle {
159
+ width: 10px;
160
+ display: flex;
161
+ flex-direction: column;
162
+ align-items: center;
163
+ transform: translate(0, 20px);
164
+ .ele-timeline__circle {
165
+ width: 100%;
166
+ height: 10px;
167
+ border-radius: 50%;
168
+ border-width: 2px;
169
+ border-style: solid;
170
+ border-color: var(--idooel-primary-color);
171
+ }
172
+ .ele-timeline__traline {
173
+ width: 1px;
174
+ height: calc(100% - 10px);
175
+ border-width: 1px;
176
+ border-style: solid;
177
+ border-color: var(--idoole-black-016);
178
+ }
179
+ }
180
+ .ele-timeline__right {
181
+ text-align: left;
182
+ flex: 2;
183
+ padding-left: 12px;
184
+ padding-top: 16px;
185
+ padding-bottom: 16px;
186
+ .timeline-right__title {
187
+ line-height: 22px;
188
+ display: flex;
189
+ flex-direction: row;
190
+ .title {
191
+ color: var(--idoole-black-088);
192
+ font-size: 14px;
193
+ font-weight: bold;
194
+ }
195
+ .title-info {
196
+ font-size: 14px;
197
+ color: var(--idoole-black-064);
198
+ margin-left: 16px;
199
+ display: flex;
200
+ flex-direction: row;
201
+ align-items: center;
202
+ &::before {
203
+ content: '';
204
+ display: inline-block;
205
+ width: 6px;
206
+ height: 6px;
207
+ border-radius: 50%;
208
+ margin-right: 8px;
209
+ }
210
+ &.success {
211
+ &::before {
212
+ background: var(--idoole-success-06);
213
+ }
214
+ }
215
+ &.warning {
216
+ &::before {
217
+ background: var(--idoole-warning-06);
218
+ }
219
+ }
220
+ &.error {
221
+ &::before {
222
+ background: var(--idoole-error-06);
223
+ }
224
+ }
225
+ }
226
+ }
227
+ .timeline-right__oper {
228
+ line-height: 22px;
229
+ margin-top: 8px;
230
+ margin-left: 12px;
231
+ .oper-name {
232
+ color: var(--idoole-black-088);
233
+ font-size: 14px;
234
+ font-weight: bold;
235
+ }
236
+ }
237
+ .timeline-right__subtitle {
238
+ margin-left: 12px;
239
+ display: flex;
240
+ flex-direction: row;
241
+ line-height: 22px;
242
+ margin-top: 4px;
243
+ .right-subtitle__field {
244
+ flex-shrink: 0;
245
+ font-size: 14px;
246
+ color: var(--idoole-black-064);
247
+ }
248
+ .right-subtitle__content {
249
+ font-size: 14px;
250
+ color: var(--idoole-black-088);
251
+ font-weight: bold;
252
+ margin-left: 4px;
253
+ }
254
+ }
255
+ }
256
+ }
257
+ }
258
+ </style>
@@ -1,5 +1,5 @@
1
- import EleTpl from './src/index.vue'
2
-
3
- EleTpl.install = Vue => Vue.component(EleTpl.name, EleTpl)
4
-
1
+ import EleTpl from './src/index.vue'
2
+
3
+ EleTpl.install = Vue => Vue.component(EleTpl.name, EleTpl)
4
+
5
5
  export default EleTpl
@@ -1,47 +1,56 @@
1
- <template>
2
- <component
3
- v-if="modelNameValidator.existed"
4
- :is="modelName"
5
- :ref="genModelRef"
6
- v-bind="$attrs"
7
- v-on="$listeners">
8
- <template v-for="(idx, name) in $scopedSlots" v-slot:[name]="data">
9
- <slot :name="name" v-bind="data"></slot>
10
- </template>
11
- </component>
12
- <div v-else v-html="modelNameValidator.message"></div>
13
- </template>
14
-
15
- <script>
16
- import EleTreeTableModel from '../../tree-table-model/src/index.vue'
17
- import { v4 as uuidv4 } from 'uuid'
18
- import { models } from '../../index.js'
19
- export default {
20
- name: 'ele-tpl',
21
- props: {
22
- modelName: {
23
- type: String
24
- }
25
- },
26
- components: {
27
- [EleTreeTableModel.name]: EleTreeTableModel
28
- },
29
- computed: {
30
- modelNameValidator () {
31
- const target = models.find(model => model.name === this.modelName)
32
- return {
33
- existed: !!target,
34
- message: !!target ? '' : `Model <span style="color:red;">${this.modelName}</span> not found`
35
- }
36
- },
37
- genModelRef () {
38
- return uuidv4()
39
- }
40
- },
41
- methods: {
42
- getModel () {
43
- return this.$refs[this.genModelRef]
44
- }
45
- }
46
- }
47
- </script>
1
+ <template>
2
+ <component
3
+ v-if="modelNameValidator.existed"
4
+ :is="modelName"
5
+ :ref="genModelRef"
6
+ v-bind="$attrs"
7
+ v-on="$listeners">
8
+ <template v-for="(idx, name) in $scopedSlots" v-slot:[name]="data">
9
+ <slot :name="name" v-bind="data"></slot>
10
+ </template>
11
+ </component>
12
+ <div v-else v-html="modelNameValidator.message"></div>
13
+ </template>
14
+
15
+ <script>
16
+ import EleTreeTableModel from '../../models/tree-table-model/src/index.vue'
17
+ import EleFormGroupModel from '../../models/form-group-model/src/index.vue'
18
+ import EleFormModel from '../../models/form-model/src/index.vue'
19
+ import EleStepModel from '../../models/step-model/src/index.vue'
20
+ import { v4 as uuidv4 } from 'uuid'
21
+ import { models } from '../../index.js'
22
+ export default {
23
+ name: 'ele-tpl',
24
+ props: {
25
+ modelName: {
26
+ type: String
27
+ }
28
+ },
29
+ components: {
30
+ [EleTreeTableModel.name]: EleTreeTableModel,
31
+ [EleFormGroupModel.name]: EleFormGroupModel,
32
+ [EleStepModel.name]: EleStepModel,
33
+ [EleFormModel.name]: EleFormModel
34
+ },
35
+ computed: {
36
+ modelNameValidator () {
37
+ const target = models.find(model => model.name === this.modelName)
38
+ return {
39
+ existed: !!target,
40
+ message: !!target ? '' : `Model <span style="color:red;">${this.modelName}</span> not found`
41
+ }
42
+ },
43
+ genModelRef () {
44
+ return uuidv4()
45
+ }
46
+ },
47
+ methods: {
48
+ getModel () {
49
+ return this.$refs[this.genModelRef]
50
+ }
51
+ }
52
+ }
53
+ </script>
54
+ <style lang="scss">
55
+ @import '../../theme/index';
56
+ </style>
@@ -1,5 +1,5 @@
1
- import EleTree from './src/index.vue'
2
-
3
- EleTree.install = Vue => Vue.component(EleTree.name, EleTree)
4
-
1
+ import EleTree from './src/index.vue'
2
+
3
+ EleTree.install = Vue => Vue.component(EleTree.name, EleTree)
4
+
5
5
  export default EleTree
@@ -1,30 +1,30 @@
1
- <template>
2
- <a-tree-node :key="node.key" :title="node.title">
3
- <a-icon slot="icon" type="carry-out" />
4
- <template v-if="node.children">
5
- <TreeNode
6
- v-for="(children, idx) in node.children"
7
- :key="idx"
8
- :node="children">
9
- </TreeNode>
10
- </template>
11
- <!-- <span slot="title" style="color: #1890ff">parent 1</span> -->
12
- </a-tree-node>
13
- </template>
14
-
15
- <script>
16
- export default {
17
- name: 'TreeNode',
18
- isTreeNode: true,
19
- props: {
20
- node: {
21
- type: Object,
22
- required: true
23
- }
24
- }
25
- }
26
- </script>
27
-
28
- <style scoped>
29
-
1
+ <template>
2
+ <a-tree-node :key="node.key" :title="node.title">
3
+ <a-icon slot="icon" type="carry-out" />
4
+ <template v-if="node.children">
5
+ <TreeNode
6
+ v-for="(children, idx) in node.children"
7
+ :key="idx"
8
+ :node="children">
9
+ </TreeNode>
10
+ </template>
11
+ <!-- <span slot="title" style="color: #1890ff">parent 1</span> -->
12
+ </a-tree-node>
13
+ </template>
14
+
15
+ <script>
16
+ export default {
17
+ name: 'TreeNode',
18
+ isTreeNode: true,
19
+ props: {
20
+ node: {
21
+ type: Object,
22
+ required: true
23
+ }
24
+ }
25
+ }
26
+ </script>
27
+
28
+ <style scoped>
29
+
30
30
  </style>