ElEmployees.vue 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <script setup lang="ts">
  2. import { getUserList } from '@/api/employees'
  3. interface Props {
  4. modelValue: any
  5. type: string
  6. }
  7. const props = defineProps<Props>()
  8. const emits = defineEmits(['update:modelValue'])
  9. const list = ref<any>([])
  10. const userList = ref<any>([])
  11. const data = ref<any>([])
  12. const selectValue = computed({
  13. get: () => props.modelValue,
  14. set: value => {
  15. emits('update:modelValue', value)
  16. }
  17. })
  18. const employeesOption = ref<any>(null)
  19. const visibleDialog = ref<boolean>(false)
  20. const handleTestTasks = (res: any) => {
  21. employeesOption.value.blur()
  22. visibleDialog.value = true
  23. }
  24. const saveDialog = () => {
  25. selectValue.value = userList.value
  26. visibleDialog.value = false
  27. }
  28. getUserList(props.type).then(res => {
  29. data.value = res
  30. })
  31. </script>
  32. <template>
  33. <el-select ref="employeesOption" v-model="selectValue" @focus="handleTestTasks">
  34. <el-option v-for="item in list" :key="item.id" :label="item.name" :value="item.id">{{ item.name }} </el-option>
  35. </el-select>
  36. <el-dialog title="选择成员" v-model="visibleDialog" append-to-body>
  37. <el-transfer v-model="userList" filterable :data="data" />
  38. <template #footer>
  39. <el-button @click="visibleDialog = false">取 消</el-button>
  40. <el-button type="primary" @click="saveDialog">确 定</el-button>
  41. </template>
  42. </el-dialog>
  43. </template>
  44. <style lang="scss" scoped></style>