InvigilatorSelect.vue 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <template>
  2. <el-select
  3. v-model="selected"
  4. class="size-select"
  5. placeholder="请选择"
  6. @change="select"
  7. :style="styles"
  8. :multiple="multiple"
  9. clearable
  10. >
  11. <el-option
  12. v-for="item in optionList"
  13. :key="item.id"
  14. :label="item.name"
  15. :value="item.id"
  16. >
  17. <span>{{ item.name }}</span>
  18. </el-option>
  19. </el-select>
  20. </template>
  21. <script>
  22. import { searchUsers } from "@/api/system-user";
  23. export default {
  24. name: "InvigilatorSelect",
  25. props: {
  26. value: [String, Array],
  27. multiple: Boolean,
  28. styles: { type: String, default: "width: 100px;" },
  29. },
  30. data() {
  31. return {
  32. optionList: [],
  33. selected: "",
  34. };
  35. },
  36. async created() {
  37. const res = await searchUsers({ roleCode: "INVIGILATE", pageSize: 1000 });
  38. // console.log(res.data);
  39. this.optionList = res.data.data.records;
  40. },
  41. watch: {
  42. value: {
  43. immediate: true,
  44. handler(val) {
  45. this.selected = val;
  46. },
  47. },
  48. },
  49. methods: {
  50. select() {
  51. this.$emit("input", this.selected);
  52. this.$emit("change", this.selected);
  53. },
  54. },
  55. };
  56. </script>
  57. <style></style>