index.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <template>
  2. <HcCard>
  3. <template #header>
  4. <div class="w-36">
  5. <el-select v-model="searchForm.projectType" block clearable placeholder="项目类型" size="large">
  6. <el-option v-for="item in planType" :label="item.name" :value="item.key"/>
  7. </el-select>
  8. </div>
  9. <div class="w-36 ml-2">
  10. <el-select v-model="searchForm.projectServerType" block clearable placeholder="服务类型" size="large">
  11. <el-option v-for="item in department" :label="item.name" :value="item.key"/>
  12. </el-select>
  13. </div>
  14. <div class="w-56 ml-2">
  15. <el-input v-model="searchForm.name" clearable placeholder="请输入项目名称查询" @keyup="keyUpEvent" size="large"/>
  16. </div>
  17. <div class="ml-4">
  18. <el-button size="large" type="primary" @click="searchClick">
  19. <HcIcon name="search-2"/>
  20. <span>搜索</span>
  21. </el-button>
  22. </div>
  23. <div class="ml-2">
  24. <el-button size="large" @click="resetClick">
  25. <HcIcon name="close-circle"/>
  26. <span>重置</span>
  27. </el-button>
  28. </div>
  29. </template>
  30. <HcTable :isIndex="false" :column="tableColumn" :datas="tableData" :loading="tableLoading">
  31. <template #name="{row}">
  32. <span class="text-blue" @click="rowNameClick(row)">{{row.name}}</span>
  33. </template>
  34. </HcTable>
  35. <template #action>
  36. <HcPages :pages="searchForm" @change="pageChange"/>
  37. </template>
  38. </HcCard>
  39. </template>
  40. <script setup>
  41. import {useRouter} from 'vue-router'
  42. import {ref,onMounted,onActivated} from "vue";
  43. import projectApi from '~api/program/project.js';
  44. import {getArrValue} from "js-fast-way"
  45. const router = useRouter()
  46. onActivated(()=>{
  47. getTableData()
  48. })
  49. //计划类型
  50. const planType = ref([
  51. {name: '临时计划', key: '1'},
  52. {name: '月度计划', key: '2'},
  53. {name: '年度计划', key: '3'},
  54. ])
  55. //选择部门
  56. const department = ref([
  57. {name: '研发部门', key: '1'},
  58. {name: '业务部门', key: '2'},
  59. {name: '人事部门', key: '3'},
  60. ])
  61. //搜索表单
  62. const searchForm = ref({
  63. current: 1, size: 20, total: 0
  64. })
  65. //搜索框回车
  66. const keyUpEvent = (event) => {
  67. if (event.key === "Enter") {
  68. searchForm.value.current = 1;
  69. getTableData()
  70. }
  71. }
  72. //搜索
  73. const searchClick = () => {
  74. searchForm.value.current = 1;
  75. getTableData()
  76. }
  77. //重置搜索表单
  78. const resetClick = () => {
  79. searchForm.value = {current: 1, size: 20, total: 0}
  80. }
  81. //分页被点击
  82. const pageChange = ({current, size}) => {
  83. searchForm.value.current = current
  84. searchForm.value.size = size
  85. getTableData()
  86. }
  87. //获取数据
  88. const tableLoading = ref(false)
  89. const tableColumn = [
  90. {key: 'number', name: '项目编号', width: '100'},
  91. {key: 'name', name: '项目名称'},
  92. {key: 'projectTypeValue', name: '项目类型'},
  93. {key: 'projectServerTypeValue', name: '项目服务类型'},
  94. {key: 'currentProcessName', name: '项目进程'},
  95. ]
  96. const tableData = ref([
  97. {id: 1, key: 'JH-01', key1: '2023年5月度计划', key2: '高速公路', key3: '软件合同', key4: '产品-研发'},
  98. {id: 2, key: 'JH-01', key1: '2023年5月度计划', key2: '高速公路', key3: '软件合同', key4: '产品-研发'},
  99. {id: 3, key: 'JH-01', key1: '2023年5月度计划', key2: '高速公路', key3: '软件合同', key4: '产品-研发'},
  100. ])
  101. const getTableData = async() => {
  102. tableLoading.value = true
  103. const {error, code, data} = await projectApi.getPage(searchForm.value)
  104. tableLoading.value = false
  105. if (!error && code === 200) {
  106. tableData.value = getArrValue(data)
  107. searchForm.value.total = data['total'] || 0
  108. } else {
  109. tableData.value = []
  110. searchForm.value.total = 0
  111. }
  112. }
  113. //编辑预算
  114. const rowNameClick = (row) => {
  115. router.push({
  116. name: 'program-project-form',
  117. query: {
  118. id: row.id,
  119. type:'edit'
  120. }
  121. })
  122. }
  123. </script>