usePersonGroupListQuery.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { DEFAULT_PAGE_SIZE } from '@/types/common/constants';
  2. import { QueryPersonGroupPageParams, PersonGroupListItem } from '@/types/person-group/type';
  3. import { queryUserGroupPage } from '@/api/system/person-group';
  4. import { ref } from 'vue';
  5. import { cloneDeep } from 'lodash-es';
  6. const defaultPersonGroupListRequest: QueryPersonGroupPageParams = {
  7. pageNumber: 1,
  8. pageSize: DEFAULT_PAGE_SIZE,
  9. };
  10. export default function usePersonGroupListQuery() {
  11. const personGroupListRequestParams = ref(cloneDeep(defaultPersonGroupListRequest));
  12. const personGroupList = ref<PersonGroupListItem[]>();
  13. const total = ref(0);
  14. const loading = ref(false);
  15. const setRequestParams = (params: QueryPersonGroupPageParams) => {
  16. Object.assign(personGroupListRequestParams.value, params);
  17. };
  18. const resetRequestParams = () => {
  19. Object.assign(personGroupListRequestParams.value, defaultPersonGroupListRequest);
  20. };
  21. const queryPersonGroupList = async () => {
  22. try {
  23. loading.value = true;
  24. const result = await queryUserGroupPage(personGroupListRequestParams.value);
  25. personGroupList.value = result.records;
  26. total.value = result.totalRow;
  27. } catch (e) {
  28. console.error(e);
  29. } finally {
  30. loading.value = false;
  31. }
  32. };
  33. return {
  34. personGroupListRequestParams,
  35. personGroupList,
  36. loading,
  37. total,
  38. setRequestParams,
  39. queryPersonGroupList,
  40. };
  41. }