expiredCompanyCleanup.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. <template>
  2. <div class="expiredCompanyCleanup">
  3. <!-- <div class="expiredCompanyCleanup-header">
  4. 头部
  5. </div> -->
  6. <div class="expiredCompanyCleanup-content">
  7. <el-table :data="tableData" @selection-change="handleSelectionChange" border height="80vh" v-loading="btnDeleteLoading" element-loading-text="删除中..." element-loading-background="rgba(255, 255, 255, 0.8)" style="width: 100%;">
  8. <el-table-column type="selection" width="55" />
  9. <el-table-column prop="id" label="企业ID" width="100" align="center" />
  10. <el-table-column prop="companyName" label="企业名称" min-width="240" align="center" />
  11. <el-table-column prop="setMeal" label="是否签约" min-width="80" align="center">
  12. <template slot-scope="scope">{{ scope.row.setMeal ? "已签约" : "未签约" }}</template>
  13. </el-table-column>
  14. <el-table-column prop="expirationDate" label="有效期" min-width="160" align="center" />
  15. <el-table-column prop="staffCountMax" label="人数上限" min-width="80" align="center" />
  16. </el-table>
  17. </div>
  18. <!-- 底部 -->
  19. <div class="pagination-container">
  20. <el-button type="primary" :loading="btnDeleteLoading" :disabled="!multipleSelection.length"
  21. @click="deleteEnterprise()" size="small">批量删除</el-button>
  22. <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page"
  23. :page-sizes="[100, 200, 300, 400]" :page-size="100" layout="total, prev, pager, next, sizes"
  24. :total="total">
  25. </el-pagination>
  26. </div>
  27. </div>
  28. </template>
  29. <script>
  30. export default {
  31. name: "expiredCompanyCleanup",
  32. data() {
  33. return {
  34. tableData: [],
  35. multipleSelection: [],
  36. btnDeleteLoading: false,
  37. total: 0,
  38. page: 1,
  39. size: 100,
  40. }
  41. },
  42. mounted() {
  43. this.getTableData()
  44. },
  45. methods: {
  46. handleCurrentChange(val) {
  47. this.page = val
  48. this.getTableData()
  49. },
  50. handleSizeChange(val) {
  51. this.page = 1
  52. this.size = val
  53. this.getTableData()
  54. },
  55. deleteEnterprise() {
  56. this.$confirm('此操作将永久删除选中的企业, 是否删除?', '删除企业', {
  57. confirmButtonText: '确定',
  58. cancelButtonText: '取消',
  59. type: 'warning'
  60. }).then(() => {
  61. this.btnDeleteLoading = true
  62. const companyIds = this.multipleSelection.map(item => item.id).join(',')
  63. this.postData(`/company/delNeedDelList`, { companyIds }).then(res => {
  64. this.$message({
  65. message: '删除成功',
  66. type: 'success'
  67. })
  68. this.page = 1
  69. this.getTableData()
  70. }).finally(() => {
  71. this.btnDeleteLoading = false
  72. })
  73. })
  74. },
  75. handleSelectionChange(val) {
  76. this.multipleSelection = val
  77. },
  78. getTableData() {
  79. this.postData('/company/getNeedDelList', {
  80. pageIndex: this.page,
  81. pageSize: this.size
  82. }).then(res => {
  83. this.tableData = res.data.record || []
  84. this.total = res.data.total
  85. })
  86. },
  87. // 单独封装请求
  88. async postData(urls, param = {}) {
  89. return new Promise((resolve, reject) => {
  90. this.http.post(urls, { ...param },
  91. res => {
  92. if (res.code == 'ok') {
  93. resolve(res)
  94. } else {
  95. this.$message({
  96. message: res.msg,
  97. type: 'error'
  98. })
  99. reject(res)
  100. }
  101. resolve(res)
  102. },
  103. error => {
  104. this.$message({
  105. message: error,
  106. type: "error"
  107. });
  108. reject(error)
  109. }
  110. )
  111. });
  112. },
  113. }
  114. }
  115. </script>
  116. <style lang="scss">
  117. .expiredCompanyCleanup {
  118. height: 100%;
  119. display: flex;
  120. flex-direction: column;
  121. padding: 10px 20px;
  122. .expiredCompanyCleanup-content {
  123. flex: 1;
  124. }
  125. .pagination-container {
  126. display: flex;
  127. justify-content: space-between;
  128. align-items: center;
  129. width: 100%;
  130. padding: 20px 0;
  131. }
  132. }
  133. </style>