list.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <template>
  2. <hc-card class="hc-project-collect-admin-list">
  3. <template #header>
  4. <hc-date-year v-model="searchForm.startYear" v-model:end="searchForm.endYear" />
  5. <div class="relative ml-3 w-[300px]">
  6. <hc-search-input v-model="searchForm.queryValue" text="搜索" @search="searchClick">
  7. <template #prepend>
  8. <el-select v-model="searchForm.year" placeholder="年份" style="width: 75px">
  9. <el-option label="2023" value="2023" />
  10. <el-option label="2024" value="2024" />
  11. </el-select>
  12. </template>
  13. </hc-search-input>
  14. </div>
  15. </template>
  16. <template #extra>
  17. <div class="w-[120px]">
  18. <el-select v-model="searchForm.key1" filterable clearable block placeholder="项目阶段" @change="searchClick">
  19. <el-option v-for="item in stateOptions" :key="item.value" :label="item.label" :value="item.value" />
  20. </el-select>
  21. </div>
  22. <div class="ml-2 w-[100px]">
  23. <el-select v-model="searchForm.key2" filterable clearable block placeholder="项目类型" @change="searchClick">
  24. <el-option v-for="item in typeOptions" :key="item.value" :label="item.label" :value="item.value" />
  25. </el-select>
  26. </div>
  27. <el-button type="success" class="ml-6">生成报告</el-button>
  28. <el-button v-del-com:[delTableItem] type="danger" class="ml-2" :disabled="tableCheckKeys.length <= 0">批量删除</el-button>
  29. <el-button type="warning" class="ml-2">导入</el-button>
  30. <el-button v-yes-com:[deriveTableItem] type="primary" class="ml-2" :disabled="tableCheckKeys.length <= 0">批量导出</el-button>
  31. </template>
  32. <HcTableList ref="tableRef" is-admin @tap="rowNameClick" @check="tableCheck" />
  33. <template #action>
  34. <div>建设规模:共计 xx 公里</div>
  35. <hc-pages :pages="searchForm" @change="pageChange" />
  36. </template>
  37. </hc-card>
  38. </template>
  39. <script setup>
  40. import { ref } from 'vue'
  41. import HcTableList from '../modules/project-list.vue'
  42. const tableRef = ref(null)
  43. //项目阶段
  44. const stateOptions = ref([{ value: '1', label: '新开工项目' }, { value: '2', label: '建成项目' }, { value: '3', label: '在建项目' }])
  45. //项目类型
  46. const typeOptions = ref([{ value: '1', label: '铁路' }, { value: '2', label: '高速公路' }, { value: '3', label: '在建项目' }])
  47. //搜索条件
  48. const searchForm = ref({
  49. startYear: '', endYear: '', queryValue: '', year: '',
  50. current: 1, size: 20, total: 0,
  51. })
  52. const searchClick = () => {
  53. }
  54. //分页
  55. const pageChange = ({ current, size }) => {
  56. searchForm.value.current = current
  57. searchForm.value.size = size
  58. }
  59. //表格被选择
  60. const tableCheckKeys = ref([])
  61. const tableCheck = (row) => {
  62. tableCheckKeys.value = row
  63. }
  64. //项目名称被点击
  65. const rowNameClick = (row) => {
  66. console.log(row)
  67. }
  68. //批量删除
  69. const delTableItem = () => {
  70. tableRef.value?.batchRemove()
  71. }
  72. //批量导出
  73. const deriveTableItem = () => {
  74. tableRef.value?.batchExport()
  75. }
  76. </script>
  77. <style lang="scss">
  78. .hc-project-collect-admin-list {
  79. .hc-card-action {
  80. display: flex;
  81. align-items: center;
  82. }
  83. }
  84. </style>