vue2server7 7.0.52 → 7.0.54

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.
@@ -52,6 +52,13 @@
52
52
  >
53
53
  <template #default="{ node, data }">
54
54
  <span class="org-tree-select__node">
55
+ <el-radio
56
+ v-if="!multiple"
57
+ :label="data.id"
58
+ v-model="selectedValue"
59
+ class="org-tree-select__radio"
60
+ @click.stop
61
+ />
55
62
  <el-icon v-if="data.icon" class="org-tree-select__node-icon">
56
63
  <component :is="data.icon" />
57
64
  </el-icon>
@@ -279,19 +286,23 @@ function onDialogOpened(): void {
279
286
  if (props.multiple) {
280
287
  const keys = Array.isArray(selectedValue.value) ? selectedValue.value : []
281
288
  treeRef.value.setCheckedKeys(keys as (string | number)[])
282
- } else if (selectedValue.value !== null) {
283
- treeRef.value.setCurrentKey(selectedValue.value as string | number)
289
+ } else {
290
+ // 单选时,同步 selectedValue 为当前选中的 ID
291
+ const currentNode = treeRef.value?.getCurrentNode() as OrgTreeNode | null
292
+ if (currentNode) {
293
+ selectedValue.value = currentNode.id
294
+ }
284
295
  }
285
296
  })
286
297
  }
287
298
 
288
299
  /**
289
- * 节点点击事件(单选模式)
300
+ * 节点点击事件(多选模式,单选由 el-radio v-model 处理)
290
301
  * @param data - 点击的节点数据
291
302
  */
292
303
  function onNodeClick(data: OrgTreeNode): void {
293
304
  if (props.multiple) return
294
- selectedValue.value = data.id
305
+ // 单选时选中节点由 el-radio v-model 处理,这里同步 selectedNodes 用于确认后返回
295
306
  selectedNodes.value = [data]
296
307
  }
297
308
 
@@ -319,12 +330,10 @@ function onConfirm(): void {
319
330
  emit('update:modelValue', keys)
320
331
  emit('change', keys, checkedNodes)
321
332
  } else {
322
- const currentNode = treeRef.value?.getCurrentNode() as OrgTreeNode | null
323
- if (currentNode) {
324
- selectedValue.value = currentNode.id
325
- selectedNodes.value = [currentNode]
326
- emit('update:modelValue', currentNode.id)
327
- emit('change', currentNode.id, currentNode)
333
+ // selectedValue 现在直接是选中的 ID
334
+ if (selectedValue.value !== null && selectedValue.value !== undefined) {
335
+ emit('update:modelValue', selectedValue.value)
336
+ emit('change', selectedValue.value, selectedNodes.value[0])
328
337
  }
329
338
  }
330
339
  dialogVisible.value = false
@@ -420,6 +429,15 @@ defineExpose<OrgTreeSelectExpose>({
420
429
  gap: 4px;
421
430
  }
422
431
 
432
+ .org-tree-select__radio {
433
+ margin-right: 4px;
434
+ }
435
+
436
+ .org-tree-select__radio :deep(.el-radio__inner) {
437
+ width: 14px;
438
+ height: 14px;
439
+ }
440
+
423
441
  .org-tree-select__node-icon {
424
442
  color: var(--el-color-primary);
425
443
  font-size: 16px;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue2server7",
3
- "version": "7.0.52",
3
+ "version": "7.0.54",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "dev": "nodemon --watch src --ext ts --exec \"ts-node src/app.ts\"",
Binary file