SelectEDBClassify.vue 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <script setup>
  2. import {ref, watch} from 'vue'
  3. import apiDataEDB from '@/api/dataEDB'
  4. import {deleteClassifyItemEmpty,findItemWithIdAndParents} from '../util/util'
  5. const props=defineProps({
  6. show:{
  7. type:Boolean,
  8. default:false
  9. },
  10. defaultId:{//初始选中的分类
  11. type:[Number,String],
  12. default:0
  13. }
  14. })
  15. const emits=defineEmits(['update:show','select'])
  16. function handleClose(){
  17. emits('update:show',false)
  18. }
  19. watch(
  20. ()=>props.defaultId,
  21. (n)=>{
  22. // if(n){
  23. classify.value=n
  24. // }
  25. }
  26. )
  27. // 获取指标库分类
  28. const classify=ref('')
  29. const edbClassifyList=ref([])
  30. function getEdbClassifyList(){
  31. apiDataEDB.edbClassifyList().then(res=>{
  32. if(res.Ret===200){
  33. deleteClassifyItemEmpty(res.Data.AllNodes||[])
  34. edbClassifyList.value=res.Data.AllNodes||[]
  35. }
  36. })
  37. }
  38. getEdbClassifyList()
  39. let activeData=null
  40. function handleChange(data){
  41. activeData=data
  42. }
  43. function handleConfirmMove(){
  44. emits('select',{value:activeData.value,selectedOptions:activeData.selectedOptions})
  45. handleClose()
  46. }
  47. function getSelectClassifyOpt(id){
  48. let arr=[]
  49. arr=findItemWithIdAndParents(edbClassifyList.value,id)
  50. if(arr?.length===0){
  51. classify.value=''
  52. }
  53. console.log(arr);
  54. emits('select',{value:id,selectedOptions:arr})
  55. return arr
  56. }
  57. defineExpose({getSelectClassifyOpt})
  58. </script>
  59. <template>
  60. <van-popup
  61. :show="props.show"
  62. round
  63. position="bottom"
  64. >
  65. <van-cascader
  66. v-model="classify"
  67. title="选择目录"
  68. :options="edbClassifyList"
  69. :field-names="{text:'ClassifyName',value:'ClassifyId',children:'Children'}"
  70. @close="handleClose"
  71. @change="handleChange"
  72. />
  73. <div style="width:300px;margin:0 auto;padding:20px 0">
  74. <van-button type="primary" round block @click="handleConfirmMove">确定</van-button>
  75. </div>
  76. </van-popup>
  77. </template>