zero_bak.vue 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <template>
  2. <hc-new-card>
  3. <template #header>
  4. <hc-new-switch :datas="tabTab" :keys="tabKey" :round="false" size="default" @change="tabChange" />
  5. <div v-if="tabKey === 'key2'" class="ml-3 w-40">
  6. <el-select v-model="searchForm.key1" filterable block placeholder="选择工区">
  7. <el-option label="工区1" value="1" />
  8. <el-option label="工区2" value="2" />
  9. <el-option label="工区3" value="3" />
  10. </el-select>
  11. </div>
  12. </template>
  13. <div class="relative h-full flex">
  14. <div :id="`hc_tree_card_${uuid}`">
  15. <hc-card-item scrollbar>
  16. <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" />
  17. </hc-card-item>
  18. </div>
  19. <div :id="`hc_table_card_${uuid}`" class="flex-1">
  20. <hc-card-item style="height: 106px">
  21. <template #header>
  22. <div class="font-400 text-orange">温馨提示: 可选择树节点生成和删除该节点下所有清单的零号变更</div>
  23. </template>
  24. <template #extra>
  25. <el-button hc-btn type="danger">
  26. <hc-icon name="delete-bin" />
  27. <span>批量删除</span>
  28. </el-button>
  29. <el-button hc-btn type="primary">
  30. <hc-icon name="pencil-ruler-2" />
  31. <span>一键生成零号变更</span>
  32. </el-button>
  33. </template>
  34. <el-form inline :model="searchForm" class="search-form-box">
  35. <el-form-item label="零号变更编号">
  36. <el-input v-model="searchForm.key1" placeholder="零号变更编号" clearable />
  37. </el-form-item>
  38. <el-form-item label="生成时间">
  39. <el-date-picker v-model="searchForm.key2" class="block" format="YYYY-MM-DD" type="date" value-format="YYYY-MM-DD" />
  40. </el-form-item>
  41. <el-form-item label="零号变更金额">
  42. <el-input v-model="searchForm.key3" placeholder="零号变更金额" clearable />
  43. </el-form-item>
  44. </el-form>
  45. </hc-card-item>
  46. <!-- 数据列表 -->
  47. <hc-card-item class="mt-3" style="height: calc(100% - 106px - 0.75rem);">
  48. <template #header>
  49. <div class="font-400 text-orange">零号变更数据列表</div>
  50. </template>
  51. <hc-table :is-index="false" :column="tableColumn" :datas="tableData" :loading="tableLoading" is-new>
  52. <template #action="{ row }">
  53. <el-link type="danger">删除</el-link>
  54. </template>
  55. </hc-table>
  56. </hc-card-item>
  57. </div>
  58. </div>
  59. </hc-new-card>
  60. </template>
  61. <script setup>
  62. import { nextTick, onMounted, ref } from 'vue'
  63. import { getRandom } from 'js-fast-way'
  64. defineOptions({
  65. name: 'AlterAdminZero',
  66. })
  67. const uuid = getRandom(4)
  68. //渲染完成
  69. onMounted(() => {
  70. setSplitRef()
  71. })
  72. //初始化设置拖动分割线
  73. const setSplitRef = () => {
  74. //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
  75. nextTick(() => {
  76. window.$split(['#hc_tree_card_' + uuid, '#hc_table_card_' + uuid], {
  77. sizes: [20, 80],
  78. snapOffset: 0,
  79. minSize: [50, 500],
  80. })
  81. })
  82. }
  83. //类型tab数据和相关处理
  84. const tabKey = ref('key1')
  85. const tabTab = ref([
  86. { key: 'key1', name: '普通变更' },
  87. { key: 'key2', name: '工区变更' },
  88. ])
  89. const tabChange = (item) => {
  90. tabKey.value = item?.key
  91. console.log(item)
  92. }
  93. //数据格式
  94. const treeProps = {
  95. label: 'name',
  96. children: 'children',
  97. isLeaf: 'leaf',
  98. }
  99. //懒加载的数据
  100. const treeLoadNode = ({ level }, resolve) => {
  101. if (level === 0) {
  102. return resolve([{ name: 'region' }])
  103. }
  104. if (level > 3) {
  105. return resolve([])
  106. }
  107. setTimeout(() => {
  108. resolve([
  109. { name: 'leaf', leaf: true },
  110. { name: 'zone' },
  111. ])
  112. }, 500)
  113. }
  114. //搜索表单
  115. const searchForm = ref({
  116. key1: null,
  117. })
  118. //表格数据
  119. const tableLoading = ref(false)
  120. const tableColumn = ref([
  121. { key: 'key1', name: '清单编号' },
  122. { key: 'key2', name: '清单名称' },
  123. { key: 'key3', name: '现行单价' },
  124. { key: 'key4', name: '合同数量' },
  125. { key: 'key5', name: '清单金额' },
  126. { key: 'key6', name: '生成变更时划分数量' },
  127. { key: 'key7', name: '现划分数量' },
  128. { key: 'key8', name: '修正量' },
  129. { key: 'key9', name: '修正金额' },
  130. { key: 'key10', name: '核实量' },
  131. { key: 'key11', name: '核实金额' },
  132. { key: 'key12', name: '状态' },
  133. { key: 'action', name: '操作', width: 80, align: 'center' },
  134. ])
  135. const tableData = ref([
  136. { key1: '1111' },
  137. ])
  138. </script>
  139. <style lang="scss">
  140. .search-form-box .el-form-item {
  141. margin-bottom: 0;
  142. }
  143. </style>