factory-area-select.vue 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <template>
  2. <!-- 厂房 -->
  3. <el-select
  4. v-model="selectVal"
  5. filterable
  6. v-bind="$attrs"
  7. v-on="$listeners"
  8. clearable
  9. >
  10. <el-option
  11. v-for="item in dictList"
  12. :key="item.id"
  13. :label="item.name"
  14. :value="item.id"
  15. @click.native="returnName(item)"
  16. ></el-option>
  17. </el-select>
  18. </template>
  19. <script>
  20. import { getFactoryarea, factoryworkstation } from '@/api/produce/device.js';
  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. augr: {
  36. type: Number,
  37. default: 0
  38. }
  39. },
  40. data() {
  41. return {
  42. dictList: []
  43. };
  44. },
  45. computed: {
  46. selectVal: {
  47. set(val) {
  48. this.$emit('updateVal', val);
  49. this.$emit(
  50. 'selfChange',
  51. val,
  52. this.dictList.find((i) => i.id === val)
  53. );
  54. },
  55. get() {
  56. return this.value;
  57. }
  58. }
  59. },
  60. created() {
  61. if (this.init) {
  62. this.getList();
  63. }
  64. },
  65. methods: {
  66. returnName(item) {
  67. this.$emit('returnName', item.name);
  68. this.$emit('returnItem', item);
  69. },
  70. async getList() {
  71. let params = {
  72. pageNum: -1,
  73. size: -1,
  74. type: this.augr
  75. };
  76. if (this.augr == 0) {
  77. delete params.type;
  78. const res = await factoryworkstation(params);
  79. console.log('res-------', res);
  80. this.dictList = res.list;
  81. return;
  82. }
  83. const res = await getFactoryarea(params);
  84. this.dictList = res.list;
  85. }
  86. }
  87. };
  88. </script>