PersonGroup.vue 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <template>
  2. <div>
  3. <el-card>
  4. <template #header>
  5. <el-button type="primary" @click="openEditDrawer()">
  6. <template #icon>
  7. <el-icon>
  8. <PlusOutlined />
  9. </el-icon>
  10. </template>
  11. 新建人员分组
  12. </el-button>
  13. </template>
  14. <el-table height="calc(100vh - 256px)" :data="personGroupList">
  15. <el-table-column label="分组名" width="300" prop="name" />
  16. <el-table-column label="分组描述" prop="description" />
  17. <el-table-column label="人员数量" width="200" prop="total" />
  18. <el-table-column label="创建人" width="200" prop="operatorName" />
  19. <el-table-column label="创建时间" width="200" prop="operationTime" />
  20. <el-table-column label="操作" width="240">
  21. <template #default="{ row }">
  22. <section class="actions">
  23. <el-button type="primary" link @click="openCheckDrawer(row)">查看</el-button>
  24. <el-button type="primary" link @click="openEditDrawer(row)">编辑</el-button>
  25. <el-button type="primary" link @click="deleteGroup(row)">删除</el-button>
  26. </section>
  27. </template>
  28. </el-table-column>
  29. </el-table>
  30. <section class="mt-4 flex justify-end">
  31. <el-pagination
  32. background
  33. layout="total, sizes, prev, pager, next"
  34. :page-sizes="[10, 30, 50]"
  35. :total="total"
  36. v-model:page-size="personGroupListRequestParams.pageSize"
  37. v-model:current-page="personGroupListRequestParams.pageNumber"
  38. @change="queryPersonGroupList"
  39. />
  40. </section>
  41. <PersonGroupEditDrawer :title="drawerTitle" ref="editDrawerInstance" @submitted="onSubmit" />
  42. <PersonGroupExhibitionDrawer :title="drawerTitle" ref="exhibitionDrawerInstance" />
  43. </el-card>
  44. </div>
  45. </template>
  46. <script setup lang="ts">
  47. import { PlusOutlined } from '@vicons/antd';
  48. import { QueryPersonGroupPageParams, PersonGroupListItem } from '@/types/person-group/type';
  49. import { deleteUserGroup } from '@/api/system/person-group';
  50. import usePersonGroupListQuery from './hooks/usePersonGroupListQuery';
  51. import PersonGroupEditDrawer from './components/PersonGroupEditDrawer.vue';
  52. import { onMounted, ref } from 'vue';
  53. import PersonGroupExhibitionDrawer from './components/PersonGroupExhibitionDrawer.vue';
  54. import { ElMessage, ElMessageBox } from 'element-plus';
  55. const { personGroupListRequestParams, personGroupList, total, setRequestParams, queryPersonGroupList } =
  56. usePersonGroupListQuery();
  57. const drawerTitle = ref('');
  58. const editDrawerInstance = ref();
  59. const exhibitionDrawerInstance = ref();
  60. function openEditDrawer(row?: PersonGroupListItem) {
  61. drawerTitle.value = row ? '编辑人员分组' : '新建人员分组';
  62. editDrawerInstance.value?.open(row);
  63. }
  64. function openCheckDrawer(row: PersonGroupListItem) {
  65. drawerTitle.value = '查看人员分组';
  66. exhibitionDrawerInstance.value?.open(row);
  67. }
  68. function deleteGroup(row: PersonGroupListItem) {
  69. ElMessageBox.confirm('确认删除,删除后无法恢复,确认删除吗?', '提示', {
  70. confirmButtonText: '确定',
  71. cancelButtonText: '取消',
  72. })
  73. .then(() => {
  74. deleteUserGroup(row.id).then(() => {
  75. queryPersonGroupList();
  76. ElMessage.success('删除成功');
  77. });
  78. })
  79. .catch((e) => {
  80. ElMessage.error(e);
  81. });
  82. }
  83. const onSubmit = () => {
  84. queryPersonGroupList();
  85. };
  86. onMounted(() => {
  87. queryPersonGroupList();
  88. });
  89. </script>