SelectEDBClassify.vue 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <script setup>
  2. import {ref, watch} from 'vue'
  3. import apiDataEDB from '@/api/dataEDB'
  4. const props=defineProps({
  5. show:{
  6. type:Boolean,
  7. default:false
  8. },
  9. defaultId:{//初始选中的分类
  10. type:Number,
  11. default:0
  12. }
  13. })
  14. const emits=defineEmits(['update:show','select'])
  15. function handleClose(){
  16. emits('update:show',false)
  17. }
  18. watch(
  19. ()=>props.defaultId,
  20. (n)=>{
  21. if(n){
  22. classify.value=n
  23. }
  24. }
  25. )
  26. // 获取指标库分类
  27. const classify=ref('')
  28. const edbClassifyList=ref([])
  29. function getEdbClassifyList(){
  30. apiDataEDB.edbClassifyList().then(res=>{
  31. if(res.Ret===200){
  32. edbClassifyList.value=res.Data.AllNodes||[]
  33. }
  34. })
  35. }
  36. getEdbClassifyList()
  37. function handleFinish({value,selectedOptions,tabIndex}){
  38. emits('select',{value,selectedOptions})
  39. handleClose()
  40. }
  41. // 通过classifyid 获取当前目录
  42. function getSelectClassifyOpt(id){
  43. let arr=[]
  44. edbClassifyList.value.forEach(e1=>{
  45. e1.Children?.forEach(e2=>{
  46. e2.Children?.forEach(e3=>{
  47. if(e3.ClassifyId===id){
  48. arr=[e1,e1,e3]
  49. }
  50. })
  51. })
  52. })
  53. emits('select',{value:id,selectedOptions:arr})
  54. return arr
  55. }
  56. defineExpose({getSelectClassifyOpt})
  57. </script>
  58. <template>
  59. <van-popup
  60. :show="props.show"
  61. round
  62. position="bottom"
  63. >
  64. <van-cascader
  65. v-model="classify"
  66. title="选择目录"
  67. :options="edbClassifyList"
  68. :field-names="{text:'ClassifyName',value:'ClassifyId',children:'Children'}"
  69. @close="handleClose"
  70. @finish="handleFinish"
  71. />
  72. </van-popup>
  73. </template>