TechnologyArchivesSearch.vue 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <template>
  2. <div class="layout_container">
  3. <header>
  4. <el-input v-model="text" class="w-50 m-2" style="width: 360px" placeholder="请输入工号/身份证号/姓名" clearable>
  5. <template #prepend>工号/身份证号/姓名 </template>
  6. </el-input>
  7. <el-select v-model="textType" placeholder="请选择文档类型" clearable style="width: 160px;margin-left: 3px">
  8. <el-option v-for="item in typeList" :key="item.code" :label="item.name" :value="item.code" />
  9. </el-select>
  10. <el-button type="primary" icon="Search" @click="queryTechnologyArchivesInfo" style="margin-left: 10px">查询</el-button>
  11. <el-button type="primary" icon="Download" @click="exportData" style="margin-left: 5px">导出</el-button>
  12. </header>
  13. <div class="layout_main">
  14. <div class="layout_display_flex_y">
  15. <div class="layout_flex_1-y layout_el-table">
  16. <el-table :data="technologyArchivesData.slice(pageSize * (currentPage - 1), pageSize * currentPage)"
  17. stripe border highlight-current-row row-key="childKey" style="width: 100%">
  18. <el-table-column type="index" label="序号" align="center" fixed></el-table-column>
  19. <el-table-column prop="id" label="id" v-if="false"></el-table-column>
  20. <template v-for="col in displayData">
  21. <el-table-column v-if="col.columns" :prop="col.name" :label="col.display"
  22. :width="col.width" :align="col.align">
  23. <template v-for="cell in col.columns">
  24. <el-table-column v-if="col.show" :prop="cell.name" :label="cell.display"
  25. :width="cell.width" :align="cell.align" show-overflow-tooltip>
  26. </el-table-column>
  27. <el-table-column v-else :prop="cell.name" :label="cell.display"
  28. :width="cell.width" :align="cell.align">
  29. </el-table-column>
  30. </template>
  31. </el-table-column>
  32. <el-table-column v-else-if="col.show" :prop="col.name" :label="col.display" :width="col.width"
  33. :align="col.align" show-overflow-tooltip>
  34. </el-table-column>
  35. <el-table-column v-else-if="col.name === 'xm'" :prop="col.name" :label="col.display" :width="col.width" :align="col.align" fixed>
  36. </el-table-column>
  37. <el-table-column v-else :prop="col.name" :label="col.display" :width="col.width" :align="col.align">
  38. </el-table-column>
  39. </template>
  40. </el-table>
  41. </div>
  42. <div>
  43. <el-pagination :current-page="currentPage" :page-size="pageSize" :page-sizes="[15, 30, 45, 60]"
  44. :total="technologyArchivesData.length" layout="total, sizes, prev, pager, next, jumper" style="margin-top: 5px"
  45. @size-change="handleSizeChange" @current-change="handleCurrentChange">
  46. </el-pagination>
  47. </div>
  48. </div>
  49. </div>
  50. </div>
  51. </template>
  52. <script setup name="TechnologyArchivesSearch">
  53. import {nextTick, onMounted, ref} from "vue";
  54. import {ElMessage} from "element-plus";
  55. import {
  56. exportTechnologyArchivesInfo,
  57. selectTechnologyArchivesInfo,
  58. selectTechnologyArchivesType
  59. } from "@/api/technology-archives/technology-archives";
  60. import {useUserStore} from "@/pinia/user-store";
  61. let param = ref({
  62. textType: '',
  63. text: '',
  64. exportName: ''
  65. })
  66. const userInfo = useUserStore().userInfo
  67. const text = ref('')
  68. const textType = ref('tamain')
  69. const technologyArchivesData = ref([])
  70. const displayData = ref([])
  71. const pageSize = ref(30)
  72. const currentPage = ref(1)
  73. const handleSizeChange = (val) => {
  74. pageSize.value = val
  75. }
  76. const handleCurrentChange = (val) => {
  77. currentPage.value = val
  78. }
  79. onMounted(() => {
  80. nextTick(() => {
  81. queryAcType()
  82. queryTechnologyArchivesInfo()
  83. })
  84. })
  85. const typeList = ref([])
  86. const queryAcType = () => {
  87. selectTechnologyArchivesType("all")
  88. .then((res) => {
  89. if(res){
  90. typeList.value = res.taList
  91. }
  92. })
  93. }
  94. const queryTechnologyArchivesInfo = async () => {
  95. if(!textType.value){
  96. ElMessage({
  97. type: "warning",
  98. message: '请选择文档类型!',
  99. duration: 2500,
  100. showClose: true,
  101. });
  102. return
  103. }
  104. param.value.textType = textType.value
  105. param.value.text = text.value
  106. await selectTechnologyArchivesInfo(param.value)
  107. .then((res) => {
  108. if(res){
  109. technologyArchivesData.value = res.taData
  110. displayData.value = res.displayData
  111. }
  112. })
  113. }
  114. // 导出档案信息
  115. const exportData = () => {
  116. if (technologyArchivesData.value.length <= 0) {
  117. ElMessage({
  118. message: '没有可以导出的数据!',
  119. type: 'warning',
  120. duration: 2500,
  121. showClose: true,
  122. })
  123. return
  124. }
  125. let p = typeList.value.filter((item) => {
  126. return item.code === textType.value
  127. })
  128. param.value.exportName = p[0].name
  129. exportTechnologyArchivesInfo(param.value)
  130. }
  131. </script>