index.vue 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <template>
  2. <div>
  3. <el-select
  4. @change="changeFn"
  5. v-model="value"
  6. filterable
  7. remote
  8. reserve-keyword
  9. placeholder="请输入工程师名称"
  10. :remote-method="remoteMethod"
  11. :loading="loading"
  12. style="width: 100%"
  13. >
  14. <el-option v-for="(v, i) in dataList" :key="i" :value="v.workerId" :label="v.workerName">
  15. <span>{{ v.workerName }}</span> <span>{{ v.workerId }}</span>
  16. </el-option>
  17. </el-select>
  18. </div>
  19. </template>
  20. <script>
  21. export default {
  22. props: {
  23. remoteFn: {
  24. type: Function
  25. }
  26. },
  27. data() {
  28. return {
  29. value: '',
  30. dataList: [],
  31. loading: false
  32. }
  33. },
  34. created() {},
  35. methods: {
  36. changeFn(value) {
  37. this.dataList.forEach(v => {
  38. if (v.workerId === this.value) {
  39. this.$emit('change', v)
  40. }
  41. })
  42. },
  43. //获取工程师数据
  44. async getData(query) {
  45. let params = {
  46. pageNum: 1,
  47. pageSize: -1,
  48. params: [{ compare: 'like', createTime: '', param: 'a.worker_name', value: query }]
  49. }
  50. let { data } = await this.remoteFn(params)
  51. this.dataList = data.records
  52. },
  53. //
  54. async remoteMethod(query) {
  55. if (query !== '') {
  56. this.loading = true
  57. await this.getData(query)
  58. this.loading = false
  59. } else {
  60. this.dataList = []
  61. }
  62. }
  63. }
  64. }
  65. </script>
  66. <style></style>