map.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <template>
  2. <HcCard ui="hc-count-card-ui" bodyUi="hc-count-card">
  3. <div class="hc-count-tree" id="hc-count-tree">
  4. <el-scrollbar>
  5. <HcTreeData :isMenu="false" @nodeTap="treeNodeTap"/>
  6. </el-scrollbar>
  7. </div>
  8. <div class="hc-count-body" id="hc-count-body">
  9. <HcCardItem class="hc-card-item-box info-card">
  10. <div class="content">
  11. <div class="item">
  12. <span>户主:xxxxx</span>
  13. <span class="ml-20">宗地编号:xxxxx</span>
  14. </div>
  15. <div class="item">征地面积:xxxxx</div>
  16. <div class="item">征拆状态:xxxxx</div>
  17. <div class="item">结算金额:xxxxx</div>
  18. </div>
  19. <div class="btn">
  20. <el-button type="primary">查看协议书</el-button>
  21. <el-button type="primary">查看结算协议书</el-button>
  22. </div>
  23. </HcCardItem>
  24. <div class="hc-count-map">
  25. 地图
  26. </div>
  27. </div>
  28. </HcCard>
  29. </template>
  30. <script setup>
  31. import {ref, onUnmounted, onMounted} from "vue";
  32. import split from "split.js";
  33. //树节点被点击
  34. const treeNodeTap = ({node, data}) => {
  35. }
  36. //渲染完成
  37. onMounted(() => {
  38. setSplitDom()
  39. })
  40. // 初始化设置拖动分割线
  41. const splitvar = ref(null);
  42. const setSplitDom = () => {
  43. try {
  44. //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
  45. splitvar.value = split([
  46. '#hc-count-tree',
  47. '#hc-count-body'
  48. ], {
  49. sizes: [20, 80],
  50. minSize: [200, 900],
  51. });
  52. } catch (e) {
  53. setTimeout(() => {
  54. setSplitDom()
  55. }, 500)
  56. }
  57. }
  58. //销毁
  59. onUnmounted(() => {
  60. if (splitvar.value) {
  61. splitvar.value.destroy()
  62. }
  63. })
  64. </script>
  65. <style lang="scss" scoped>
  66. .hc-count-card .hc-count-body .hc-card-item-box.info-card {
  67. height: 130px;
  68. margin-bottom: 24px;
  69. .content {
  70. flex: 1;
  71. position: relative;
  72. .item + .item {
  73. margin-top: 10px;
  74. }
  75. }
  76. .btn {
  77. position: relative;
  78. display: flex;
  79. flex-direction: column;
  80. justify-content: space-between;
  81. }
  82. }
  83. .hc-count-map {
  84. position: relative;
  85. height: calc(100% - 155px);
  86. }
  87. </style>
  88. <style lang="scss">
  89. .hc-count-card-ui {
  90. background: white;
  91. .el-card__body {
  92. padding: 10px;
  93. }
  94. }
  95. .hc-count-card {
  96. display: flex;
  97. .hc-count-tree {
  98. position: relative;
  99. margin-right: 5px;
  100. height: 100%;
  101. }
  102. .hc-count-body {
  103. position: relative;
  104. margin-left: 5px;
  105. height: 100%;
  106. .hc-card-item-box {
  107. background: #f5f5f5;
  108. .hc-card-item-header {
  109. color: #101010;
  110. }
  111. &.info-card .hc-card-item-body {
  112. display: flex;
  113. }
  114. }
  115. }
  116. }
  117. </style>