factory-area-select.vue 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <template>
  2. <!-- 厂房 -->
  3. <el-select
  4. v-model="selectVal"
  5. filterable
  6. style="width: 100%"
  7. v-bind="$attrs"
  8. v-on="$listeners"
  9. clearable
  10. >
  11. <el-option
  12. v-for="item in dictList"
  13. :key="item.id"
  14. :label="item.name"
  15. :value="item.id"
  16. ></el-option>
  17. </el-select>
  18. </template>
  19. <script>
  20. import { getFactoryarea } from '@/api/factoryModel';
  21. export default {
  22. model: {
  23. prop: 'value',
  24. event: 'updateVal'
  25. },
  26. props: {
  27. value: {
  28. type: [String, Number, Array],
  29. default: ''
  30. },
  31. init: {
  32. type: Boolean,
  33. default: true
  34. }
  35. },
  36. data () {
  37. return {
  38. dictList: []
  39. };
  40. },
  41. computed: {
  42. selectVal: {
  43. set (val) {
  44. this.$emit('updateVal', val);
  45. this.$emit(
  46. 'selfChange',
  47. val,
  48. this.dictList.find((i) => i.id === val)
  49. );
  50. },
  51. get () {
  52. return this.value;
  53. }
  54. }
  55. },
  56. created () {
  57. if (this.init) {
  58. this.getList();
  59. }
  60. },
  61. methods: {
  62. async getList () {
  63. const res = await getFactoryarea({
  64. pageNum: -1,
  65. size: -1,
  66. type: 2
  67. });
  68. this.dictList = res.list;
  69. }
  70. }
  71. };
  72. </script>