collectEdbMenu.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <template>
  2. <el-tree
  3. ref="catalogTree"
  4. class="catalog-tree other-tree"
  5. empty-text="暂无图库"
  6. :data="data"
  7. :allow-drop="canDropHandle"
  8. draggable
  9. node-key="ClassifyId"
  10. :expand-on-click-node="false"
  11. @current-change="(data,node)=>{$parent.nodeChange(data,node)}"
  12. @node-drop="handleDropClassify"
  13. >
  14. <div class="custom-tree-node" slot-scope="{ data }">
  15. <span class="tree-label">{{ data.ClassifyName }}</span>
  16. <div class="right-item right-item-box" >
  17. <img
  18. src="~@/assets/img/set_m/edit.png"
  19. alt=""
  20. style="width: 15px; height: 14px; margin-right: 8px"
  21. @click.stop="$parent.handleOpenCollectClassify(data)"
  22. v-if="!data.EdbCode&&$parent.isEdbBtnShow('edbData_edbCollectClassify_save')"
  23. />
  24. <img
  25. src="~@/assets/img/set_m/del_icon.png"
  26. alt=""
  27. style="width: 14px; height: 14px;"
  28. @click.stop="removeCollectNode(data)"
  29. v-if="!data.EdbCode&&$parent.isEdbBtnShow('edbData_edbCollectClassify_remove')"
  30. />
  31. </div>
  32. </div>
  33. </el-tree>
  34. </template>
  35. <script>
  36. import { edbCollectInterface } from '@/api/modules/chartApi'
  37. export default {
  38. props: {
  39. data: {
  40. type: Object
  41. }
  42. },
  43. data() {
  44. return {
  45. }
  46. },
  47. methods: {
  48. removeCollectNode({ClassifyId}) {
  49. this.$confirm('若删除该目录,则目录下收藏的所有指标将被清除, 是否继续?',
  50. '提示',
  51. { type: 'warning' }
  52. ).then(async () => {
  53. const res = await edbCollectInterface.delCollectClassify({
  54. ClassifyId
  55. })
  56. if(res.Ret !== 200) return
  57. this.$message.success('删除成功')
  58. this.$emit('change')
  59. })
  60. },
  61. async handleDropClassify(dragNode,dropNode,type) {
  62. console.log(dragNode,dropNode,type)
  63. let PrevClassifyId,NextClassifyId;
  64. let list = dropNode.parent.childNodes;
  65. let targetIndex = list.findIndex(_ => _.data.ClassifyId===dragNode.data.ClassifyId)
  66. if(targetIndex===0){
  67. const data=list[targetIndex+1].data
  68. NextClassifyId = data.ClassifyId
  69. PrevClassifyId = 0
  70. }else if(targetIndex===list.length-1){
  71. const data=list[targetIndex-1].data
  72. PrevClassifyId = data.ClassifyId
  73. NextClassifyId = 0
  74. }else{
  75. PrevClassifyId=list[targetIndex-1].data.ClassifyId
  76. NextClassifyId=list[targetIndex+1].data.ClassifyId
  77. }
  78. let params = {
  79. ClassifyId: dragNode.data.ClassifyId,
  80. PrevClassifyId,
  81. NextClassifyId
  82. }
  83. const res = await edbCollectInterface.moveCollectClassify(params)
  84. if(res.Ret !== 200) return
  85. this.$message.success('移动成功')
  86. },
  87. canDropHandle(draggingNode, dropNode, type) {
  88. return dropNode.level===draggingNode.level&&type!=='inner'
  89. },
  90. initSelect(id) {
  91. console.log(id)
  92. this.$nextTick(() => {
  93. this.$refs.catalogTree.setCurrentKey(id);
  94. })
  95. }
  96. }
  97. }
  98. </script>
  99. <style>
  100. </style>