initial.vue 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <template>
  2. <div class="hc-page-layout-box">
  3. <div class="hc-layout-left-box" :style="'width:' + leftWidth + 'px;'" v-if="sbTableKey === 'classify'">
  4. <div class="hc-project-box">
  5. <div class="hc-project-icon-box">
  6. <HcIcon name="stack"/>
  7. </div>
  8. <div class="ml-2 project-name-box">
  9. <span class="text-xl text-cut project-alias">{{projectInfo['projectAlias']}}</span>
  10. <div class="text-xs text-cut project-name">{{projectInfo['name']}}</div>
  11. </div>
  12. </div>
  13. <div class="hc-tree-box" v-loading="treeLoading" element-loading-text="加载中...">
  14. <el-scrollbar>
  15. <HcTree :projectId="projectId" :contractId="contractId" @nodeTap="projectTreeClick" @nodeLoading="treeNodeLoading"/>
  16. </el-scrollbar>
  17. </div>
  18. <!--左右拖动-->
  19. <div class="horizontal-drag-line" @mousedown="onmousedown"/>
  20. </div>
  21. <div class="hc-page-content-box ledger-write-box">
  22. <HcTabsSimple :datas="sbTableData" :cur="sbTableKey" @tabClick="sbTableClick">
  23. <template #tab-collect>
  24. <TableCollect :projectId="projectId" :contractId="contractId" :treeData="nodeDataInfo" v-if="sbTableKey === 'collect'"/>
  25. </template>
  26. <template #tab-classify>
  27. <TableClassify :projectId="projectId" :contractId="contractId" :treeData="nodeDataInfo" v-if="sbTableKey === 'classify'"/>
  28. </template>
  29. </HcTabsSimple>
  30. </div>
  31. </div>
  32. </template>
  33. <script setup>
  34. import {ref, watch, onMounted} from "vue";
  35. import {useAppStore} from "~src/store";
  36. //import HcTree from "./components/hc-tree.vue"
  37. import HcTree from "~src/components/tree/hc-tree.vue"
  38. import TableCollect from "./components/table-collect.vue"
  39. import TableClassify from "./components/table-classify.vue"
  40. //变量
  41. const useAppState = useAppStore()
  42. const projectId = ref(useAppState.getProjectId);
  43. const contractId = ref(useAppState.getContractId);
  44. const projectInfo = ref(useAppState.getProjectInfo);
  45. const isCollapse = ref(useAppState.getCollapse)
  46. //监听
  47. watch(() => [
  48. useAppState.getCollapse
  49. ], ([Collapse]) => {
  50. isCollapse.value = Collapse
  51. })
  52. //渲染完成
  53. onMounted(() => {
  54. })
  55. //树加载
  56. const treeLoading = ref(true)
  57. const treeNodeLoading = () => {
  58. treeLoading.value = false
  59. }
  60. //类型处理
  61. const sbTableKey = ref('collect')
  62. const sbTableData = ref([
  63. {icon: 'bar-chart-box', label: '汇总目录', key: 'collect'},
  64. {icon: 'menu-3', label: '分类目录', key: 'classify'},
  65. ])
  66. const sbTableClick = (key) => {
  67. sbTableKey.value = key
  68. }
  69. //树操作
  70. const nodeDataInfo = ref({})
  71. const projectTreeClick = ({data}) => {
  72. console.log(data)
  73. }
  74. //左右拖动,改变树形结构宽度
  75. const leftWidth = ref(382);
  76. const onmousedown = () => {
  77. const leftNum = isCollapse.value ? 142 : 272
  78. document.onmousemove = (ve) => {
  79. let diffVal = ve.clientX - leftNum;
  80. if(diffVal >= 310 && diffVal <= 900) {
  81. leftWidth.value = diffVal;
  82. }
  83. }
  84. document.onmouseup = () => {
  85. document.onmousemove = null;
  86. document.onmouseup = null;
  87. }
  88. }
  89. </script>