|
@@ -1,5 +1,6 @@
|
|
|
<script lang="ts" setup>
|
|
|
import { ref, reactive, onMounted, inject, watchEffect, computed } from 'vue';
|
|
|
+import { debounce } from 'lodash';
|
|
|
import { storeToRefs } from 'pinia';
|
|
|
import { Emits, optionsType } from './type';
|
|
|
import { useStore } from '@/store/index'
|
|
@@ -15,41 +16,65 @@ const props = defineProps({
|
|
|
options: { type: Array as () => optionsType, required: false, default: () => [] },
|
|
|
});
|
|
|
const emit = defineEmits<Emits>();
|
|
|
-const { userInfo } = storeToRefs(useStore());
|
|
|
+const personnelArray = ref<optionsType>([]);
|
|
|
+const { userInfo, personnelList } = storeToRefs(useStore());
|
|
|
+const { setValue, getPersonnelListItems } = useStore()
|
|
|
|
|
|
const timeRef = generateUniqueId()
|
|
|
+const selectLoading = ref(false);
|
|
|
const controlTranslation = reactive({
|
|
|
visibleFlag: false
|
|
|
})
|
|
|
|
|
|
const selectedValue = ref(props.modelValue); // 响应式绑定 v-model 的值
|
|
|
|
|
|
-// function getUserList(keyword: string = '', flag: boolean = true) {
|
|
|
-// post(`/user/getEmployeeList`, {
|
|
|
-// keyword,
|
|
|
-// status: 3,
|
|
|
-// matchingType: 0,
|
|
|
-// })
|
|
|
-// }
|
|
|
+function getUserList(keyword: string = '') {
|
|
|
+ post(`/user/getSimpleActiveUserListNew`, { keyword }).then(res => {
|
|
|
+ personnelArray.value = res.data
|
|
|
+ if(!keyword) {
|
|
|
+ setValue((res.data || []), 'personnelList')
|
|
|
+ }
|
|
|
+ }).finally(() => {
|
|
|
+ selectLoading.value = false
|
|
|
+ })
|
|
|
+}
|
|
|
|
|
|
function visibleChange(visible: boolean) { // 下拉框出现/隐藏时触发
|
|
|
- console.log(visible, '<==== visible')
|
|
|
controlTranslation.visibleFlag = visible
|
|
|
}
|
|
|
+
|
|
|
+const filterMethod = debounce(filterMethods, 500)
|
|
|
+function filterMethods(val: string) {
|
|
|
+ if(val == '') {
|
|
|
+ personnelArray.value = personnelList.value
|
|
|
+ selectLoading.value = false
|
|
|
+ return
|
|
|
+ }
|
|
|
+ getUserList(val)
|
|
|
+}
|
|
|
+
|
|
|
function updateValue(val: any) { // 值改变的时候触发
|
|
|
emit('update:modelValue', selectedValue.value)
|
|
|
emit('change', val)
|
|
|
}
|
|
|
|
|
|
-console.log(props, userInfo, '<==== 看看数据')
|
|
|
+onMounted(() => {
|
|
|
+ if(personnelList.value.length == 0) {
|
|
|
+ getUserList()
|
|
|
+ } else {
|
|
|
+ personnelArray.value = personnelList.value
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+console.log(props, userInfo.value, '<==== 看看数据')
|
|
|
</script>
|
|
|
|
|
|
<template>
|
|
|
- <el-select v-model="selectedValue" :ref="`selectRef${timeRef}`" :multiple="multiple" :size="size"
|
|
|
- :placeholder="placeholder" :disabled="disabled" clearable collapse-tags @change="updateValue"
|
|
|
- @visible-change="visibleChange">
|
|
|
- <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option>
|
|
|
- </el-select>
|
|
|
+ <!-- <el-select v-model="selectedValue" :ref="`selectRef${timeRef}`" :multiple="multiple" :size="size" :loading="selectLoading"
|
|
|
+ :placeholder="placeholder" :disabled="disabled" clearable collapse-tags filterable @change="updateValue"
|
|
|
+ @visible-change="visibleChange" :filter-method="(val: string) => {selectLoading = true, filterMethod(val)}">
|
|
|
+ <el-option v-for="item in personnelArray" :key="item.value" :label="item.label" :value="item.value"></el-option>
|
|
|
+ </el-select> -->
|
|
|
</template>
|
|
|
|
|
|
<style lang="scss" scoped></style>
|