diff --git a/src/components/Form/src/components/SelectDepartmentTreeV2.vue b/src/components/Form/src/components/SelectDepartmentTreeV2.vue index 9930ce2..264085a 100644 --- a/src/components/Form/src/components/SelectDepartmentTreeV2.vue +++ b/src/components/Form/src/components/SelectDepartmentTreeV2.vue @@ -23,19 +23,23 @@ const props = defineProps({ type: Boolean, default: true }, - value: { - type: String, - default: '' + selectedNodes: { + type: Array, + default: () => [] }, parentNode: { type: String, default: '' }, + isArray: { + type: Boolean, + default: false + }, }); -const emit = defineEmits(['change-value', 'query-completed']); -const expandedKeys = ref([]); -const selectedKeys = ref([]); -const checkedKeys = ref([]); +const emit = defineEmits(['change-value', 'query-completed', 'select']); +const expandedKeys = ref([]); +const selectedKeys = ref([]); +const checkedKeys = ref([]); const checkable = ref(false) const treeData = ref([]) const params = ref({ @@ -45,7 +49,6 @@ const params = ref({ parentNode: false }) onMounted(() => { - selectedKeys.value = [props.value] getList() }) const loadData = (node) => { @@ -88,7 +91,7 @@ function resetTreeList(list) { return result } function selectData(selectedKeys, e) { - emit('change-value', e.selectedNodes); + emit('change-value', e.node, e.selected); } watch(expandedKeys, () => { console.log('expandedKeys', expandedKeys); @@ -99,4 +102,14 @@ watch(selectedKeys, () => { watch(checkedKeys, () => { console.log('checkedKeys', checkedKeys); }); +watch( + () => props.selectedNodes, + () => { + selectedKeys.value = props.selectedNodes.map(item => item.id) + }, + { + immediate: true, + deep: true + } + ); diff --git a/src/components/Form/src/components/SelectDepartmentV2.vue b/src/components/Form/src/components/SelectDepartmentV2.vue index 63a385e..cc251ac 100644 --- a/src/components/Form/src/components/SelectDepartmentV2.vue +++ b/src/components/Form/src/components/SelectDepartmentV2.vue @@ -12,12 +12,12 @@
- +
{{ item.name }}
- +
@@ -41,7 +41,6 @@ const valChanged = ref(false); const props = defineProps({ - value: String, prefix: String, suffix: String, placeholder: String, @@ -49,13 +48,20 @@ disabled: Boolean, parentNode: String, size: String, + value: { + type: String || Array, + }, + isArray: { + type: Boolean, + default: false + }, bordered: { type: Boolean, default: true }, multiple: { type: Boolean, - default: true + default: false }, componentProps: { type: Object, @@ -69,16 +75,18 @@ // Embedded in the form, just use the hook binding to perform form verification - onMounted(() => {}); + onMounted(() => { + }); watch( () => props.value, (val) => { - if (val) { + let ids = props.isArray ? val?.join(',') : val + if (ids) { if (props.sepTextField && !valChanged.value) { departNames.value = props.row[camelCaseString(props.sepTextField)]; } else { - getDefaultList(val); + getDefaultList(ids); } } }, @@ -87,9 +95,9 @@ } ); - async function getDefaultList(id) { + async function getDefaultList(ids) { let param = { - id: id, + ids: ids, code: '', name: '', parentNode: false @@ -127,8 +135,21 @@ loading.value = false; } - function departChange(nodes) { - selectedNodes.value = nodes; + function departChange(node, isSelect) { + if (props.multiple) { + if (isSelect) { + selectedNodes.value.push(node.dataRef) + } else { + selectedNodes.value = selectedNodes.value.filter(item => item.id !== node.dataRef.id) + } + } else { + if (isSelect) { + selectedNodes.value = [node.dataRef] + } else { + selectedNodes.value = [] + } + + } valChanged.value = true; } @@ -136,7 +157,11 @@ visible.value = true; loading.value = true; if (props.value) { - getDefaultList(props.value); + if(props.isArray && !props.value.length) { + return + } + let ids = props.isArray ? props.value.join(',') : props.value + getDefaultList(ids); } } @@ -145,13 +170,15 @@ let idList = selectedNodes.value.map((item) => item.id); const names = nameList.join(','); const ids = idList.join(','); - emits('update:value', ids); + emits('update:value', props.isArray ? idList : ids); departNames.value = names; updateSepTextField(names); + emits('change', props.isArray ? idList : ids); + } - function deleteItem() { - selectedNodes.value = []; + function deleteItem(item) { + selectedNodes.value = selectedNodes.value.filter(m => item.id !== m.id) } function submit() { diff --git a/src/components/Form/src/components/SelectUserV2.vue b/src/components/Form/src/components/SelectUserV2.vue index c99723c..fbfc5e0 100644 --- a/src/components/Form/src/components/SelectUserV2.vue +++ b/src/components/Form/src/components/SelectUserV2.vue @@ -1,6 +1,7 @@