AllUserForDepart.vue 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <script setup>
  2. import {apiSystemUser} from '@/api/system'
  3. const model=defineModel()
  4. const props=defineProps({
  5. props:{},
  6. clearable:{
  7. type:Boolean,
  8. default:false
  9. },
  10. filterable:{
  11. type:Boolean,
  12. default:true
  13. },
  14. placeholder:{
  15. type:String,
  16. default:'营业部/销售'
  17. },
  18. onlySelectUser:{//是否只能选择销售用户
  19. type:Boolean,
  20. default:false
  21. }
  22. })
  23. const emits=defineEmits(['change'])
  24. const options=ref([])
  25. function formatData(arr){
  26. arr.forEach(item => {
  27. item.label=item.SysUserId?item.SysRealName:item.SysDepartmentName
  28. item.value=item.SysUserId?item.SysUserId:item.SysDepartmentId
  29. if(props.onlySelectUser){//如果只能选择销售用户则将最后一级为部门的禁用
  30. item.disabled=!item.SysUserId&&!item.ChildrenList?true:false
  31. }
  32. if(item.ChildrenList){
  33. formatData(item.ChildrenList)
  34. }
  35. });
  36. return arr
  37. }
  38. async function getData(){
  39. const res=await apiSystemUser.allUserForDepart({AllEnabled:false})//true显示所有销售(包含被禁用的)false表示仅显示启用的用户,默认false
  40. if(res.Ret!=200) return
  41. const arr=res.Data.List||[]
  42. options.value=formatData(arr)
  43. }
  44. getData()
  45. function handleChange(){
  46. emits('change')
  47. }
  48. </script>
  49. <template>
  50. <el-cascader
  51. :options="options"
  52. :props="{
  53. value: 'value',
  54. label: 'label',
  55. children: 'ChildrenList',
  56. ...props.props
  57. }"
  58. v-model="model"
  59. :placeholder="props.placeholder"
  60. collapse-tags
  61. :clearable="clearable"
  62. :filterable="filterable"
  63. @change="handleChange"
  64. />
  65. </template>