@netang/quasar 0.1.20 → 0.1.22
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.
- package/components/editor-code/index.vue +325 -289
- package/components/field-tree/index.vue +3 -5
- package/components/private/components/move-to-tree/index.vue +154 -154
- package/components/table/index.vue +2 -2
- package/components/tree/index.vue +1636 -0
- package/package.json +1 -1
- package/utils/$form.js +6 -5
- package/utils/$power.js +2 -2
- package/utils/$tree.js +145 -202
package/package.json
CHANGED
package/utils/$form.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ref, provide, inject } from 'vue'
|
|
2
2
|
|
|
3
3
|
import $n_has from 'lodash/has'
|
|
4
|
+
import $n_cloneDeep from 'lodash/cloneDeep'
|
|
4
5
|
|
|
5
6
|
import { NPowerKey, NFormKey } from './symbols'
|
|
6
7
|
|
|
@@ -28,9 +29,9 @@ function create(params) {
|
|
|
28
29
|
// 表单节点
|
|
29
30
|
formRef: ref(null),
|
|
30
31
|
// 原始表单数据(用于业务使用)
|
|
31
|
-
rawFormData: o.formData,
|
|
32
|
+
rawFormData: ref(o.formData),
|
|
32
33
|
// 请求服务器的原始表单数据(只有执行 setRaw 方法才会生成, 用于请求接口使用)
|
|
33
|
-
requestRawFormData: null,
|
|
34
|
+
requestRawFormData: ref(null),
|
|
34
35
|
// 表单数据
|
|
35
36
|
formData: ref(o.formData),
|
|
36
37
|
}
|
|
@@ -39,11 +40,11 @@ function create(params) {
|
|
|
39
40
|
* 设置原始数据
|
|
40
41
|
*/
|
|
41
42
|
resForm.setRaw = function (value) {
|
|
42
|
-
resForm.rawFormData = value
|
|
43
|
-
resForm.requestRawFormData = value
|
|
43
|
+
resForm.rawFormData.value = $n_cloneDeep(value)
|
|
44
|
+
resForm.requestRawFormData.value = resForm.rawFormData.value
|
|
44
45
|
return value
|
|
45
46
|
}
|
|
46
|
-
|
|
47
|
+
|
|
47
48
|
if ($power) {
|
|
48
49
|
$power.update(function(data, _data) {
|
|
49
50
|
_data.$form = resForm
|
package/utils/$power.js
CHANGED
|
@@ -1006,9 +1006,9 @@ async function request(options) {
|
|
|
1006
1006
|
requestData = $n_merge({}, formatQuery(query, false), o.$form.formData.value)
|
|
1007
1007
|
|
|
1008
1008
|
// 合并请求原始表单数据
|
|
1009
|
-
if ($n_isValidObject(o.$form.requestRawFormData)) {
|
|
1009
|
+
if ($n_isValidObject(o.$form.requestRawFormData.value)) {
|
|
1010
1010
|
Object.assign(requestData, {
|
|
1011
|
-
n__raw: o.$form.requestRawFormData
|
|
1011
|
+
n__raw: o.$form.requestRawFormData.value
|
|
1012
1012
|
})
|
|
1013
1013
|
}
|
|
1014
1014
|
|
package/utils/$tree.js
CHANGED
|
@@ -16,10 +16,9 @@ import $n_storage from '@netang/utils/storage'
|
|
|
16
16
|
|
|
17
17
|
import $n_toast from './toast'
|
|
18
18
|
import $n_confirm from './confirm'
|
|
19
|
-
import $n_dialog from './dialog'
|
|
20
19
|
import $n_alert from './alert'
|
|
21
20
|
|
|
22
|
-
import { isRef, watch, inject, ref } from 'vue'
|
|
21
|
+
import { isRef, watch, inject, ref, computed } from 'vue'
|
|
23
22
|
|
|
24
23
|
import { NPowerKey } from './symbols'
|
|
25
24
|
|
|
@@ -78,6 +77,8 @@ function create(options) {
|
|
|
78
77
|
nodes,
|
|
79
78
|
// 树展开节点
|
|
80
79
|
expanded,
|
|
80
|
+
// 菜单参数
|
|
81
|
+
menu: menuOptions,
|
|
81
82
|
// 原始表单数据
|
|
82
83
|
rawFormData,
|
|
83
84
|
// 表单数据
|
|
@@ -91,6 +92,8 @@ function create(options) {
|
|
|
91
92
|
path: '',
|
|
92
93
|
// 路由参数
|
|
93
94
|
query: {},
|
|
95
|
+
// 菜单参数
|
|
96
|
+
menu: {},
|
|
94
97
|
// 是否开启展开节点缓存
|
|
95
98
|
cache: false,
|
|
96
99
|
}, options)
|
|
@@ -130,6 +133,42 @@ function create(options) {
|
|
|
130
133
|
})
|
|
131
134
|
}
|
|
132
135
|
|
|
136
|
+
// 获取菜单状态
|
|
137
|
+
const menuStatus = computed(function() {
|
|
138
|
+
|
|
139
|
+
const o = Object.assign({
|
|
140
|
+
updateName: 'update',
|
|
141
|
+
moveName: 'move',
|
|
142
|
+
copyName: 'copy',
|
|
143
|
+
deleteName: 'realdel',
|
|
144
|
+
statusName: 'status'
|
|
145
|
+
}, menuOptions)
|
|
146
|
+
|
|
147
|
+
const maps = {}
|
|
148
|
+
maps[o.updateName] = 'update'
|
|
149
|
+
maps[o.moveName] = 'move'
|
|
150
|
+
maps[o.copyName] = 'copy'
|
|
151
|
+
maps[o.deleteName] = 'delete'
|
|
152
|
+
maps[o.statusName] = 'status'
|
|
153
|
+
|
|
154
|
+
const allPowerBtn = {}
|
|
155
|
+
for (const item of powerBtns.value) {
|
|
156
|
+
if ($n_has(maps, $n_get(item, 'name'))) {
|
|
157
|
+
allPowerBtn[maps[item.name]] = item
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
return {
|
|
162
|
+
all: $n_isValidObject(allPowerBtn),
|
|
163
|
+
update: $n_has(allPowerBtn, 'update'),
|
|
164
|
+
move: $n_has(allPowerBtn, 'move'),
|
|
165
|
+
copy: $n_has(allPowerBtn, 'copy'),
|
|
166
|
+
delete: $n_has(allPowerBtn, 'delete'),
|
|
167
|
+
status: $n_has(allPowerBtn, 'status'),
|
|
168
|
+
allPowerBtn,
|
|
169
|
+
}
|
|
170
|
+
})
|
|
171
|
+
|
|
133
172
|
/**
|
|
134
173
|
* 获取节点
|
|
135
174
|
*/
|
|
@@ -212,44 +251,6 @@ function create(options) {
|
|
|
212
251
|
}
|
|
213
252
|
}
|
|
214
253
|
|
|
215
|
-
/**
|
|
216
|
-
* 获取菜单状态
|
|
217
|
-
*/
|
|
218
|
-
function getMenuStatus(options) {
|
|
219
|
-
|
|
220
|
-
const o = Object.assign({
|
|
221
|
-
updateName: 'update',
|
|
222
|
-
moveName: 'move',
|
|
223
|
-
copyName: 'copy',
|
|
224
|
-
deleteName: 'realdel',
|
|
225
|
-
statusName: 'status'
|
|
226
|
-
}, options)
|
|
227
|
-
|
|
228
|
-
const maps = {}
|
|
229
|
-
maps[o.updateName] = 'update'
|
|
230
|
-
maps[o.moveName] = 'move'
|
|
231
|
-
maps[o.copyName] = 'copy'
|
|
232
|
-
maps[o.deleteName] = 'delete'
|
|
233
|
-
maps[o.statusName] = 'status'
|
|
234
|
-
|
|
235
|
-
const allPowerBtn = {}
|
|
236
|
-
for (const item of powerBtns.value) {
|
|
237
|
-
if ($n_has(maps, $n_get(item, 'name'))) {
|
|
238
|
-
allPowerBtn[maps[item.name]] = item
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
return {
|
|
243
|
-
all: $n_isValidObject(allPowerBtn),
|
|
244
|
-
update: $n_has(allPowerBtn, 'update'),
|
|
245
|
-
move: $n_has(allPowerBtn, 'move'),
|
|
246
|
-
copy: $n_has(allPowerBtn, 'copy'),
|
|
247
|
-
delete: $n_has(allPowerBtn, 'delete'),
|
|
248
|
-
status: $n_has(allPowerBtn, 'status'),
|
|
249
|
-
allPowerBtn,
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
|
|
253
254
|
/**
|
|
254
255
|
* 确认菜单
|
|
255
256
|
*/
|
|
@@ -281,170 +282,17 @@ function create(options) {
|
|
|
281
282
|
// 添加下级
|
|
282
283
|
case 'update':
|
|
283
284
|
// 更新表单数据
|
|
284
|
-
formData.value = Object.assign({}, rawFormData, {
|
|
285
|
+
formData.value = Object.assign({}, rawFormData.value, {
|
|
285
286
|
pid: o.node.attr.id,
|
|
286
287
|
})
|
|
287
288
|
break
|
|
288
289
|
|
|
289
|
-
// 移至节点上
|
|
290
|
-
case 'moveUp':
|
|
291
|
-
// 移至节点内
|
|
292
|
-
case 'moveIn':
|
|
293
|
-
// 移至节点下
|
|
294
|
-
case 'moveDown':
|
|
295
|
-
|
|
296
|
-
if (! $n_get(o.menuStatus, 'value.allPowerBtn.move.url')) {
|
|
297
|
-
console.error('没有找到复制地址')
|
|
298
|
-
return
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
// 创建对话框
|
|
302
|
-
$n_dialog.create({
|
|
303
|
-
// 标题
|
|
304
|
-
title: `移动至节点的${o.type === 'moveUp' ? '上方' : (o.type === 'moveDown' ? '下方' : '内部')}`,
|
|
305
|
-
// 宽度
|
|
306
|
-
width: 500,
|
|
307
|
-
// 组件标识
|
|
308
|
-
name: 'moveToTree',
|
|
309
|
-
// 组件参数
|
|
310
|
-
props: {
|
|
311
|
-
// 树节点列表
|
|
312
|
-
nodes,
|
|
313
|
-
// 树展开节点
|
|
314
|
-
expanded,
|
|
315
|
-
},
|
|
316
|
-
// 显示取消按钮
|
|
317
|
-
cancel: true,
|
|
318
|
-
// 点击确认执行
|
|
319
|
-
async onConfirm({ value: moveNodeId }) {
|
|
320
|
-
|
|
321
|
-
// 是否为正确的 id
|
|
322
|
-
if (! $n_hasId(moveNodeId)) {
|
|
323
|
-
$n_toast({
|
|
324
|
-
message: '请选择节点',
|
|
325
|
-
})
|
|
326
|
-
return false
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
// 如果节点是自己
|
|
330
|
-
if (moveNodeId === o.node.id) {
|
|
331
|
-
$n_toast({
|
|
332
|
-
message: '不能选择当前节点',
|
|
333
|
-
})
|
|
334
|
-
return false
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
// 获取需移动至的节点
|
|
338
|
-
const moveNodeItem = getNode(moveNodeId)
|
|
339
|
-
if (! moveNodeItem) {
|
|
340
|
-
$n_alert({
|
|
341
|
-
message: '移动至的节点不存在',
|
|
342
|
-
})
|
|
343
|
-
return false
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
// 克隆当前树列表数据
|
|
347
|
-
const nodesClone = $n_cloneDeep(nodes.value)
|
|
348
|
-
|
|
349
|
-
// 获取当前节点
|
|
350
|
-
const nodeItem = getNode(o.node.id)
|
|
351
|
-
|
|
352
|
-
// 获取当前节点的父节点
|
|
353
|
-
const parentNodeItem = getNode(o.node.attr.pid)
|
|
354
|
-
|
|
355
|
-
// 移动列表数据
|
|
356
|
-
const moveLists = []
|
|
357
|
-
|
|
358
|
-
// 如果是移动至节点内部
|
|
359
|
-
// --------------------------------------------------
|
|
360
|
-
if (o.type === 'moveIn') {
|
|
361
|
-
|
|
362
|
-
// 修改当前节点数据
|
|
363
|
-
nodeItem.attr.pid = moveNodeItem.attr.id
|
|
364
|
-
|
|
365
|
-
nodeItem.attr.sort =
|
|
366
|
-
// 如果移动至的节点有子节点
|
|
367
|
-
moveNodeItem.children.length
|
|
368
|
-
// 则获取移动至的节点中最后一个子节点的排序号 + 1
|
|
369
|
-
? moveNodeItem.children[moveNodeItem.children.length - 1].attr.sort + 1
|
|
370
|
-
// 否则排序号设为 1
|
|
371
|
-
: 1
|
|
372
|
-
|
|
373
|
-
// 添加移动列表数据
|
|
374
|
-
moveLists.push({
|
|
375
|
-
id: nodeItem.id,
|
|
376
|
-
pid: nodeItem.attr.pid,
|
|
377
|
-
sort: nodeItem.attr.sort,
|
|
378
|
-
})
|
|
379
|
-
|
|
380
|
-
// 将本节点从原父节点中删除
|
|
381
|
-
const nodeItemIndex = $n_findIndex(parentNodeItem.children, { id: nodeItem.id })
|
|
382
|
-
parentNodeItem.children.splice(nodeItemIndex, 1)
|
|
383
|
-
|
|
384
|
-
// 将本节点添加至移动至的节点的子节点中
|
|
385
|
-
moveNodeItem.children.push(nodeItem)
|
|
386
|
-
|
|
387
|
-
// 否则移动至节点的上方/下方
|
|
388
|
-
// --------------------------------------------------
|
|
389
|
-
} else {
|
|
390
|
-
|
|
391
|
-
// 获取移动至节点的父节点
|
|
392
|
-
let moveParentNodeItem = getNode(moveNodeItem.attr.pid)
|
|
393
|
-
|
|
394
|
-
// 修改当前节点数据
|
|
395
|
-
nodeItem.attr.pid = moveNodeItem.attr.pid
|
|
396
|
-
nodeItem.attr.sort = moveNodeItem.attr.sort + (o.type === 'moveUp' ? 0 : 1)
|
|
397
|
-
|
|
398
|
-
// 添加移动列表数据
|
|
399
|
-
moveLists.push({
|
|
400
|
-
id: nodeItem.id,
|
|
401
|
-
pid: nodeItem.attr.pid,
|
|
402
|
-
sort: nodeItem.attr.sort,
|
|
403
|
-
})
|
|
404
|
-
|
|
405
|
-
// 将本节点从原父节点中删除
|
|
406
|
-
const nodeItemIndex = $n_findIndex(parentNodeItem.children, { id: nodeItem.id })
|
|
407
|
-
parentNodeItem.children.splice(nodeItemIndex, 1)
|
|
408
|
-
|
|
409
|
-
// 获取移动至节点的索引
|
|
410
|
-
const moveNodeItemIndex = $n_findIndex(moveParentNodeItem.children, { id: moveNodeId })
|
|
411
|
-
|
|
412
|
-
for (let i = moveNodeItemIndex + (o.type === 'moveUp' ? 0 : 1); i < moveParentNodeItem.children.length; i++) {
|
|
413
|
-
const item = moveParentNodeItem.children[i]
|
|
414
|
-
item.attr.sort = item.attr.sort + 1
|
|
415
|
-
moveLists.push({
|
|
416
|
-
id: item.id,
|
|
417
|
-
pid: item.attr.pid,
|
|
418
|
-
sort: item.attr.sort,
|
|
419
|
-
})
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
// 将本节点插入移动至位置
|
|
423
|
-
moveParentNodeItem.children.splice(moveNodeItemIndex + (o.type === 'moveUp' ? 0 : 1), 0, nodeItem)
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
// 请求 - 移动
|
|
427
|
-
const { status } = await $n_http({
|
|
428
|
-
url: o.menuStatus.value.allPowerBtn.move.url,
|
|
429
|
-
data: {
|
|
430
|
-
data: moveLists,
|
|
431
|
-
},
|
|
432
|
-
})
|
|
433
|
-
if (! status) {
|
|
434
|
-
// 移动失败, 还原数据
|
|
435
|
-
nodes.value = nodesClone
|
|
436
|
-
return false
|
|
437
|
-
}
|
|
438
|
-
},
|
|
439
|
-
})
|
|
440
|
-
break
|
|
441
|
-
|
|
442
290
|
// 复制
|
|
443
291
|
case 'copy':
|
|
444
292
|
// 确认菜单
|
|
445
293
|
confirmMenu(async function() {
|
|
446
294
|
|
|
447
|
-
if (! $n_get(
|
|
295
|
+
if (! $n_get(menuStatus.value, 'allPowerBtn.copy.url')) {
|
|
448
296
|
console.error('没有找到复制地址')
|
|
449
297
|
return
|
|
450
298
|
}
|
|
@@ -469,7 +317,7 @@ function create(options) {
|
|
|
469
317
|
|
|
470
318
|
// 请求 - 复制
|
|
471
319
|
const { status, data: res } = await $n_http({
|
|
472
|
-
url:
|
|
320
|
+
url: menuStatus.value.allPowerBtn.copy.url,
|
|
473
321
|
data: {
|
|
474
322
|
data: copyLists,
|
|
475
323
|
},
|
|
@@ -526,7 +374,7 @@ function create(options) {
|
|
|
526
374
|
return
|
|
527
375
|
}
|
|
528
376
|
|
|
529
|
-
if (! $n_get(
|
|
377
|
+
if (! $n_get(menuStatus.value, 'allPowerBtn.delete.url')) {
|
|
530
378
|
console.error('没有找到删除地址')
|
|
531
379
|
return
|
|
532
380
|
}
|
|
@@ -536,7 +384,7 @@ function create(options) {
|
|
|
536
384
|
|
|
537
385
|
// 请求 - 删除
|
|
538
386
|
const { status } = await $n_http({
|
|
539
|
-
url:
|
|
387
|
+
url: menuStatus.value.allPowerBtn.delete.url,
|
|
540
388
|
data: {
|
|
541
389
|
id: o.node.id,
|
|
542
390
|
},
|
|
@@ -561,7 +409,7 @@ function create(options) {
|
|
|
561
409
|
// 全部正常
|
|
562
410
|
case 'statusNormal':
|
|
563
411
|
|
|
564
|
-
if (! $n_get(
|
|
412
|
+
if (! $n_get(menuStatus.value, 'allPowerBtn.status.url')) {
|
|
565
413
|
console.error('没有找到状态地址')
|
|
566
414
|
return
|
|
567
415
|
}
|
|
@@ -587,7 +435,7 @@ function create(options) {
|
|
|
587
435
|
|
|
588
436
|
// 请求 - 全部禁用/正常
|
|
589
437
|
const { status } = await $n_http({
|
|
590
|
-
url:
|
|
438
|
+
url: menuStatus.value.allPowerBtn.status.url,
|
|
591
439
|
data: {
|
|
592
440
|
// ids
|
|
593
441
|
ids: statusIds,
|
|
@@ -669,6 +517,95 @@ function create(options) {
|
|
|
669
517
|
expanded.value = [0]
|
|
670
518
|
}
|
|
671
519
|
|
|
520
|
+
/**
|
|
521
|
+
* 判断节点能否被拖拽
|
|
522
|
+
*/
|
|
523
|
+
function allowDrag(draggingNode) {
|
|
524
|
+
return $n_hasId(draggingNode.id)
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
/**
|
|
528
|
+
* 拖拽时判定目标节点能否被放置, type 参数: top / inner / bottom / none ( 目标节点上方 / 目标节点内部 / 目标节点下方 / 无任何操作 )
|
|
529
|
+
*/
|
|
530
|
+
function allowDrop(draggingNode, dropNode, dropType) {
|
|
531
|
+
return dropType === 'inner'
|
|
532
|
+
|| $n_hasId(dropNode.id)
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
/**
|
|
536
|
+
* 树节点拖拽结束
|
|
537
|
+
*/
|
|
538
|
+
async function nodeDragEnd(draggingNode, dropNode, dropType, doDrop) {
|
|
539
|
+
if (dropType !== 'none') {
|
|
540
|
+
|
|
541
|
+
if (! $n_get(menuStatus.value, 'allPowerBtn.move.url')) {
|
|
542
|
+
|
|
543
|
+
// 提示框
|
|
544
|
+
$n_alert({
|
|
545
|
+
message: '没有找到移动地址',
|
|
546
|
+
})
|
|
547
|
+
|
|
548
|
+
return
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
// 克隆当前树列表数据
|
|
552
|
+
const nodesClone = $n_cloneDeep(nodes.value)
|
|
553
|
+
|
|
554
|
+
// 开始拖拽
|
|
555
|
+
const children = doDrop()
|
|
556
|
+
if (children === false) {
|
|
557
|
+
return
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
// 修改拖拽节点的父级 id
|
|
561
|
+
draggingNode.attr.pid =
|
|
562
|
+
// 如果拖动节点 在 目标节点的 内部
|
|
563
|
+
dropType === 'inner' ?
|
|
564
|
+
// 将拖动节点的 pid 改为 目标节点的 id
|
|
565
|
+
dropNode.attr.id
|
|
566
|
+
// 将拖动节点的 pid 改为 目标节点的 pid
|
|
567
|
+
: dropNode.attr.pid
|
|
568
|
+
|
|
569
|
+
// 移动列表
|
|
570
|
+
const moveLists = []
|
|
571
|
+
|
|
572
|
+
// 当前拖拽节点在新列表中的索引
|
|
573
|
+
const dropIndex = $n_findIndex(children, e => e.id === draggingNode.id)
|
|
574
|
+
if (dropIndex > -1) {
|
|
575
|
+
|
|
576
|
+
for (let i = dropIndex; i < children.length; i++) {
|
|
577
|
+
const { attr } = children[i]
|
|
578
|
+
attr.sort = i + 1
|
|
579
|
+
moveLists.push({
|
|
580
|
+
id: attr.id,
|
|
581
|
+
pid: attr.pid,
|
|
582
|
+
sort: attr.sort,
|
|
583
|
+
})
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
// 如果有移动列表
|
|
587
|
+
if (moveLists.length) {
|
|
588
|
+
|
|
589
|
+
// 请求 - 移动
|
|
590
|
+
const { status } = await $n_http({
|
|
591
|
+
url: menuStatus.value.allPowerBtn.move.url,
|
|
592
|
+
data: {
|
|
593
|
+
data: moveLists,
|
|
594
|
+
},
|
|
595
|
+
})
|
|
596
|
+
|
|
597
|
+
// 移动成功
|
|
598
|
+
if (status) {
|
|
599
|
+
return
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
// 移动失败, 还原数据
|
|
605
|
+
nodes.value = nodesClone
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
|
|
672
609
|
return {
|
|
673
610
|
// 当前路由全路径
|
|
674
611
|
routeFullPath: $route.fullPath,
|
|
@@ -676,6 +613,8 @@ function create(options) {
|
|
|
676
613
|
routePath: $route.path,
|
|
677
614
|
// 当前路由参数
|
|
678
615
|
routeQuery: $route.query,
|
|
616
|
+
// 菜单状态
|
|
617
|
+
menuStatus,
|
|
679
618
|
// 获取当前路由
|
|
680
619
|
getRoute() {
|
|
681
620
|
return $route
|
|
@@ -686,8 +625,6 @@ function create(options) {
|
|
|
686
625
|
updateNode,
|
|
687
626
|
// 删除节点
|
|
688
627
|
deleteNode,
|
|
689
|
-
// 获取菜单状态
|
|
690
|
-
getMenuStatus,
|
|
691
628
|
// 菜单点击
|
|
692
629
|
menuClick,
|
|
693
630
|
// 获取展开节点缓存
|
|
@@ -698,6 +635,12 @@ function create(options) {
|
|
|
698
635
|
expandAll,
|
|
699
636
|
// 收起全部
|
|
700
637
|
collapseAll,
|
|
638
|
+
// 判断节点能否被拖拽
|
|
639
|
+
allowDrag,
|
|
640
|
+
// 拖拽时判定目标节点能否被放置, type 参数: top / inner / bottom / none ( 目标节点上方 / 目标节点内部 / 目标节点下方 / 无任何操作 )
|
|
641
|
+
allowDrop,
|
|
642
|
+
// 树节点拖拽结束
|
|
643
|
+
nodeDragEnd,
|
|
701
644
|
}
|
|
702
645
|
}
|
|
703
646
|
|