职工 远程搜索优化

pull/2/head
qiuhongwu 9 months ago
parent d3f0c12030
commit f856436e96

@ -24,7 +24,7 @@
/> />
</el-form-item> </el-form-item>
<el-form-item label="负责人" prop="leaderUserId"> <el-form-item label="负责人" prop="leaderUserId">
<UserSelect v-model="formData.leaderUserId" @update:newValue="handleSelectedUser" /> <UserSelect v-model="formData.leaderUserId" :leaderUserId="formData.leaderUserId" @update:newValue="handleSelectedUser" />
</el-form-item> </el-form-item>
<!-- <el-form-item label="联系电话" prop="phone"> <!-- <el-form-item label="联系电话" prop="phone">
<el-input v-model="formData.phone" maxlength="11" placeholder="请输入联系电话" /> <el-input v-model="formData.phone" maxlength="11" placeholder="请输入联系电话" />

@ -31,58 +31,104 @@ interface UserVO {
nickname: string nickname: string
} }
const props = defineProps({ const props = defineProps({
initialUserList: { leaderUserId: {
type: Array as PropType<UserVO[]>, type: [Number, String],
default: () => [] required: true // true
} }
}) })
const userParams = {
pageNo: 1,
pageSize: 10,
status: undefined, //
username: undefined,
nickname: undefined
}
const valueName: any = ref() // const valueName: any = ref() //
const valueNameObject:any = ref(); // const valueNameObject: any = ref() //
const emit = defineEmits(['update:newValue']) const emit = defineEmits(['update:newValue'])
const userList = ref<UserApi.UserVO[]>([]) // const userList = ref<UserApi.UserVO[]>([]) //
const userSelectList = ref<UserApi.UserVO[]>([]) const userSelectList = ref<UserApi.UserVO[]>([])
const userSelectLoading = ref(false) const userSelectLoading = ref(false)
const leaderUserId = toRefs(props).leaderUserId // props leaderUserId
const initialValue: any = ref(null) // ID
// const gitlist = async () => {
onMounted(async () => {
const userParams = {
pageNo: 1,
pageSize: 10,
status: undefined, //
}
try {
const data = await UserApi.getUserPage(userParams) const data = await UserApi.getUserPage(userParams)
userList.value = data.list userList.value = data.list
// //
if (leaderUserId.value) {
valueName.value = leaderUserId.value
const initialUser = await UserApi.getUser(valueName.value)
// userList
let foundInitialUserInList = false
for (const user of userList.value) {
if (user.id === initialUser.id) {
foundInitialUserInList = true
break
}
}
//
if (!foundInitialUserInList && !userSelectList.value.length) {
userList.value = []
userList.value.unshift(initialUser)
}
}
remoteMethod('') remoteMethod('')
} catch (error) {
console.error(error)
} }
})
const remoteMethod = (query: any) => { const remoteMethod = async (query: any) => {
if (query) {
userSelectLoading.value = true userSelectLoading.value = true
setTimeout(() => { userSelectList.value = []
userSelectLoading.value = false
userSelectList.value = userList.value try {
.filter( if (query) {
(item) => // username
item.nickname.toLowerCase().includes(query.toLowerCase()) || userParams.username = query
item.username.toLowerCase().includes(query.toLowerCase()) const dataByUsername = await UserApi.getUserPage(userParams)
// username
let tempUserList = [...dataByUsername.list]
// nickname nickname username
userParams.username = undefined
userParams.nickname = query
const dataByNickname = await UserApi.getUserPage(userParams)
// nickname
tempUserList = [
...tempUserList,
...dataByNickname.list.filter(
(item) => !tempUserList.some((selectItem) => selectItem.id === item.id)
) )
.slice(0, 10) //10 ]
}, 200)
//
userSelectList.value = tempUserList
} else { } else {
userSelectList.value = userList.value.slice(0, 10) //10 //
const data = await UserApi.getUserPage({ ...userParams, pageNo: 1 })
userList.value = [...userList.value, ...data.list]
userSelectList.value = userList.value
}
} catch (error) {
console.error(error)
} finally {
userSelectLoading.value = false
} }
} }
//
onMounted(async () => {
try {
await gitlist()
} catch (error) {
console.error(error)
}
})
const onSelectChange = (newValue: any) => { const onSelectChange = (newValue: any) => {
valueNameObject.value = userList.value.find(user => user.id === newValue); // valueNameObject.value = userList.value.find((user) => user.id === newValue) //
emit('update:newValue', valueNameObject.value) emit('update:newValue', valueNameObject.value)
} }
</script> </script>

Loading…
Cancel
Save