mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/fe-manage.git
synced 2025-12-16 06:16:46 +08:00
---项目经理 和 组织树异步加载
This commit is contained in:
@@ -5,11 +5,15 @@
|
|||||||
return triggerNode.parentNode || document.body;
|
return triggerNode.parentNode || document.body;
|
||||||
}
|
}
|
||||||
"
|
"
|
||||||
v-model:value="id"
|
v-model:value="labelValue"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
|
:dropdown-style="{ maxHeight: '400px', overflow: 'auto' }"
|
||||||
placeholder="请选择归属组织"
|
placeholder="请选择归属组织"
|
||||||
|
:labelInValue="true"
|
||||||
allow-clear
|
allow-clear
|
||||||
|
v-model:treeExpandedKeys="stuTreeExpandedKeys"
|
||||||
|
:loading="orgLoading"
|
||||||
|
:load-data="onLoadData"
|
||||||
:tree-data="options"
|
:tree-data="options"
|
||||||
:fieldNames="{
|
:fieldNames="{
|
||||||
children: 'treeChildList',
|
children: 'treeChildList',
|
||||||
@@ -23,30 +27,50 @@
|
|||||||
</a-tree-select>
|
</a-tree-select>
|
||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import {computed, defineEmits, defineProps} from "vue";
|
import {defineEmits, defineProps, ref, watch} from "vue";
|
||||||
import {useStore} from "vuex";
|
import {request, useBoeApi} from "@/api/request";
|
||||||
|
import {ORG_CHILD_LIST, ORG_LIST} from "@/api/ThirdApi";
|
||||||
const store = useStore();
|
|
||||||
|
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
value: String,
|
value: String,
|
||||||
|
name: String,
|
||||||
disabled: {
|
disabled: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false
|
default: false
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
const emit = defineEmits({})
|
const emit = defineEmits({})
|
||||||
|
const stuTreeExpandedKeys = ref([])
|
||||||
const options = computed(() => store.state.orgtreeList)
|
const labelValue = ref({})
|
||||||
|
const {
|
||||||
const id = computed(() => {
|
data: options,
|
||||||
return props.value
|
loading: orgLoading,
|
||||||
|
} = useBoeApi(ORG_LIST, {keyword: ''}, {
|
||||||
|
init: true,
|
||||||
|
result: (res) => res.result.map(e => ({...e, isLeaf: false})),
|
||||||
})
|
})
|
||||||
|
|
||||||
function change(key, obj, {triggerNode: {props: {namePath}}}) {
|
watch(props, () => {
|
||||||
emit('update:name', obj[0])
|
stuTreeExpandedKeys.value = []
|
||||||
|
if (labelValue.value.value !== props.value) {
|
||||||
|
labelValue.value = {value: props.value, label: props.name}
|
||||||
|
}
|
||||||
|
if (labelValue.value.label !== props.name) {
|
||||||
|
labelValue.value = {value: props.value, label: props.name}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
function onLoadData(treeNode) {
|
||||||
|
return request(ORG_CHILD_LIST, {keyword: '', orgId: treeNode.id}).then(r => {
|
||||||
|
treeNode.dataRef.treeChildList = r.result.directChildList
|
||||||
|
options.value = [...options.value]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function change({label,value}, obj, {triggerNode: {props: {namePath}}}) {
|
||||||
|
emit('update:name', label)
|
||||||
emit('update:fullName', namePath)
|
emit('update:fullName', namePath)
|
||||||
emit('update:value', key)
|
emit('update:value', value)
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -67,6 +67,8 @@
|
|||||||
allow-clear
|
allow-clear
|
||||||
tree-default-expand-all
|
tree-default-expand-all
|
||||||
:tree-data="treeData"
|
:tree-data="treeData"
|
||||||
|
:loading="orgLoading"
|
||||||
|
:load-data="onLoadData"
|
||||||
v-model:selectedKeys="stuTreeSelectKeys"
|
v-model:selectedKeys="stuTreeSelectKeys"
|
||||||
v-model:expandedKeys="stuTreeExpandedKeys"
|
v-model:expandedKeys="stuTreeExpandedKeys"
|
||||||
:fieldNames="{
|
:fieldNames="{
|
||||||
@@ -393,12 +395,10 @@
|
|||||||
</template>
|
</template>
|
||||||
<script setup>
|
<script setup>
|
||||||
import {computed, defineEmits, defineProps, ref, watch} from "vue";
|
import {computed, defineEmits, defineProps, ref, watch} from "vue";
|
||||||
import {useStore} from "vuex";
|
import {request, useBoeApi, useBoeApiPage} from "@/api/request";
|
||||||
import {useBoeApiPage} from "@/api/request";
|
import {AUDIENCE_LIST, ORG_CHILD_LIST, ORG_LIST, USER_LIST} from "@/api/ThirdApi";
|
||||||
import {AUDIENCE_LIST, USER_LIST} from "@/api/ThirdApi";
|
|
||||||
import {saveStu} from "@/api/index1";
|
import {saveStu} from "@/api/index1";
|
||||||
|
|
||||||
const store = useStore();
|
|
||||||
const emit = defineEmits({});
|
const emit = defineEmits({});
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
type: Number,
|
type: Number,
|
||||||
@@ -457,7 +457,14 @@ const {
|
|||||||
// const {
|
// const {
|
||||||
// data: orgData,
|
// data: orgData,
|
||||||
// fetch: searchOrg,
|
// fetch: searchOrg,
|
||||||
// } = useBoeApi(ORG_LIST, searchOrgName.value)
|
// } = useBoeApiPage(ORG_LIST, searchOrgName.value)
|
||||||
|
const {
|
||||||
|
data: treeData,
|
||||||
|
loading: orgLoading,
|
||||||
|
} = useBoeApi(ORG_LIST, {keyword: ''}, {
|
||||||
|
init: true,
|
||||||
|
result: (res) => res.result.map(e => ({...e,isLeaf:false})),
|
||||||
|
})
|
||||||
const {
|
const {
|
||||||
data: audiData,
|
data: audiData,
|
||||||
fetch: searchAudi,
|
fetch: searchAudi,
|
||||||
@@ -578,9 +585,13 @@ const closeDrawer = () => {
|
|||||||
visiable.value = false;
|
visiable.value = false;
|
||||||
stuData.value = [];
|
stuData.value = [];
|
||||||
nameSearch.value.keyword = "";
|
nameSearch.value.keyword = "";
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
function onLoadData(treeNode){
|
||||||
|
return request(ORG_CHILD_LIST, {keyword:'',orgId:treeNode.id}).then(r => {
|
||||||
|
treeNode.dataRef.treeChildList = r.result.directChildList
|
||||||
|
treeData.value = [...treeData.value]
|
||||||
|
})
|
||||||
|
}
|
||||||
const closeChangeModal = () => {
|
const closeChangeModal = () => {
|
||||||
stageVisible.value = false;
|
stageVisible.value = false;
|
||||||
};
|
};
|
||||||
@@ -588,9 +599,9 @@ const openDrawer = () => {
|
|||||||
visiable.value = true;
|
visiable.value = true;
|
||||||
};
|
};
|
||||||
//获取组织树
|
//获取组织树
|
||||||
const treeData = computed(() => {
|
// const treeData = computed(() => {
|
||||||
return store.state.orgtreeList ? store.state.orgtreeList : [];
|
// return store.state.orgtreeList ? store.state.orgtreeList : [];
|
||||||
});
|
// });
|
||||||
|
|
||||||
function onSearchStu() {
|
function onSearchStu() {
|
||||||
nameSearch.value.page = 1;
|
nameSearch.value.page = 1;
|
||||||
@@ -654,6 +665,7 @@ const auditChangePagination = (page) => {
|
|||||||
audienceName.value.page = page;
|
audienceName.value.page = page;
|
||||||
searchAudi();
|
searchAudi();
|
||||||
};
|
};
|
||||||
|
|
||||||
//重置
|
//重置
|
||||||
function peopleName(name) {
|
function peopleName(name) {
|
||||||
console.log('people-name', name.target.value)
|
console.log('people-name', name.target.value)
|
||||||
|
|||||||
Reference in New Issue
Block a user