SelectBusiness.vue 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <script setup>
  2. import {businessCustomInterence} from '@/api/modules/businessCustom'
  3. const value=defineModel('value')
  4. const emits=defineEmits(['change'])
  5. const props=defineProps({
  6. placeholder:{
  7. type:String,
  8. default:'请输入搜索'
  9. },
  10. multiple:{
  11. type:Boolean,
  12. default:false,
  13. },
  14. filterable:{
  15. type:Boolean,
  16. default:false,
  17. },
  18. clearable:{
  19. type:Boolean,
  20. default:false,
  21. },
  22. disabled:{
  23. type:Boolean,
  24. default:false,
  25. }
  26. })
  27. const options=ref([])
  28. const loading=ref(false)
  29. async function remoteMethod(search){
  30. loading.value=true
  31. const res=await businessCustomInterence.bussinessListAll({
  32. Keyword:search
  33. })
  34. loading.value=false
  35. if(res.Ret!=200) return
  36. options.value=res.Data.List||[]
  37. }
  38. // 默认获取一次
  39. remoteMethod('')
  40. function handleChange(value,context){
  41. emits('change',value,context)
  42. }
  43. </script>
  44. <template>
  45. <t-select
  46. v-model="value"
  47. :multiple="props.multiple"
  48. :filterable="props.filterable"
  49. :placeholder="props.placeholder"
  50. :clearable="props.clearable"
  51. :loading="loading"
  52. :disabled="props.disabled"
  53. @search="remoteMethod"
  54. @change="handleChange"
  55. >
  56. <t-option
  57. v-for="item in options"
  58. :key="item.BusinessCode"
  59. :value="item.BusinessCode"
  60. :label="item.BusinessName"
  61. />
  62. </t-select>
  63. </template>
  64. <style lang="scss" scoped>
  65. </style>