middlepay.vue 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. <template>
  2. <div class="relative h-full flex">
  3. <div :id="`hc_tree_card_${uuid}`">
  4. <hc-new-card scrollbar>
  5. <template #header>
  6. <el-select v-model="searchForm.key1" filterable block placeholder="选择计量期" @change="searchKey1Click">
  7. <el-option v-for="item in key1Data" :key="item.id" :label="item.name" :value="item.id" />
  8. </el-select>
  9. </template>
  10. <hc-lazy-tree :h-props="treeProps" @load="treeLoadNode" />
  11. </hc-new-card>
  12. </div>
  13. <div :id="`hc_table_card_${uuid}`" class="flex-1">
  14. <hc-new-card>
  15. <template #header>
  16. <div class="font-400 text-orange">收方总金额:0元</div>
  17. </template>
  18. <template #extra>
  19. <el-button hc-btn type="primary" @click="addModalClick">
  20. <HcIcon name="add" />
  21. <span>新增</span>
  22. </el-button>
  23. <el-button hc-btn type="warning" @click="reportClick">
  24. <HcIcon name="send-plane-2" />
  25. <span>按期上报</span>
  26. </el-button>
  27. <el-button hc-btn type="success" @click="detailsModalClick">
  28. <HcIcon name="file-list" />
  29. <span>清单明细</span>
  30. </el-button>
  31. <el-button hc-btn type="success">
  32. <HcIcon name="bar-chart-box" />
  33. <span>查看报表</span>
  34. </el-button>
  35. <el-button hc-btn color="#626aef">
  36. <HcIcon name="sort-desc" :line="false" />
  37. <span>按部位排序</span>
  38. </el-button>
  39. <el-button hc-btn color="#626aef">
  40. <HcIcon name="sort-desc" :line="false" />
  41. <span>按录入时间排序</span>
  42. </el-button>
  43. </template>
  44. <hc-table
  45. :column="tableColumn" :datas="tableData" :loading="tableLoading"
  46. is-new is-check :check-style="{ width: 29 }" :index-style="{ width: 60 }"
  47. @selection-change="tableCheckChange"
  48. >
  49. <template #action="{ row }">
  50. <el-link type="success">修改</el-link>
  51. <el-link type="danger">删除</el-link>
  52. </template>
  53. </hc-table>
  54. <template #action>
  55. <hc-pages :pages="searchForm" @change="pageChange" />
  56. </template>
  57. </hc-new-card>
  58. </div>
  59. <!-- 中间计量新增 -->
  60. <HcAddModal v-model="addModalShow" />
  61. <!-- 清单明细 -->
  62. <HcDetailsModal v-model="detailsModalShow" />
  63. <!-- 上报弹窗 -->
  64. <hc-report-dialog v-model="isReport" />
  65. </div>
  66. </template>
  67. <script setup>
  68. import { nextTick, onMounted, ref } from 'vue'
  69. import HcAddModal from './components/middlepay/addModal.vue'
  70. import HcDetailsModal from './components/detailsModal.vue'
  71. import { getRandom } from 'js-fast-way'
  72. defineOptions({
  73. name: 'DebitPayAdminMiddlepay',
  74. })
  75. const uuid = getRandom(4)
  76. //渲染完成
  77. onMounted(() => {
  78. setSplitRef()
  79. })
  80. //初始化设置拖动分割线
  81. const setSplitRef = () => {
  82. //配置参考: https://split.js.org/#/?direction=vertical&snapOffset=0
  83. nextTick(() => {
  84. window.$split(['#hc_tree_card_' + uuid, '#hc_table_card_' + uuid], {
  85. sizes: [20, 80],
  86. snapOffset: 0,
  87. minSize: [50, 500],
  88. })
  89. })
  90. }
  91. //搜索表单
  92. const searchForm = ref({
  93. key1: null, current: 1, size: 10, total: 0,
  94. })
  95. //计量期
  96. const key1Data = ref([
  97. { id: 1, name: '计量期1' },
  98. { id: 2, name: '计量期2' },
  99. ])
  100. const searchKey1Click = () => {
  101. }
  102. //数据格式
  103. const treeProps = {
  104. label: 'name',
  105. children: 'children',
  106. isLeaf: 'leaf',
  107. }
  108. //懒加载的数据
  109. const treeLoadNode = ({ level }, resolve) => {
  110. if (level === 0) {
  111. return resolve([{ name: 'region' }])
  112. }
  113. if (level > 3) {
  114. return resolve([])
  115. }
  116. setTimeout(() => {
  117. resolve([
  118. { name: 'leaf', leaf: true },
  119. { name: 'zone' },
  120. ])
  121. }, 500)
  122. }
  123. //分页
  124. const pageChange = ({ current, size }) => {
  125. searchForm.value.current = current
  126. searchForm.value.size = size
  127. }
  128. //表格数据
  129. const tableLoading = ref(false)
  130. const tableColumn = ref([
  131. { key: 'key1', name: '计量单编号' },
  132. { key: 'key2', name: '计量期' },
  133. { key: 'key3', name: '工程划分部位' },
  134. { key: 'key4', name: '计量金额' },
  135. { key: 'key5', name: '业务日期' },
  136. { key: 'key6', name: '审核状态' },
  137. { key: 'action', name: '操作', width: 130, align: 'center' },
  138. ])
  139. const tableData = ref([
  140. { key1: '1111' },
  141. ])
  142. //表格选择
  143. const tableCheckChange = () => {
  144. }
  145. //中间收方新增
  146. const addModalShow = ref(false)
  147. const addModalClick = () => {
  148. addModalShow.value = true
  149. }
  150. //收方清单明细
  151. const detailsModalShow = ref(false)
  152. const detailsModalClick = () => {
  153. detailsModalShow.value = true
  154. }
  155. //是否上报
  156. const isReport = ref(false)
  157. const reportClick = () => {
  158. isReport.value = true
  159. }
  160. </script>
  161. <style scoped lang="scss">
  162. </style>