PersonGroup.vue 3.9 KB

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