groupStore.js 964 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { defineStore } from 'pinia';
  2. import http from '@/common/request';
  3. export default defineStore('groupStore', {
  4. state: () => {
  5. return {
  6. groups: []
  7. }
  8. },
  9. actions: {
  10. setGroups(groups) {
  11. this.groups = groups;
  12. },
  13. addGroup(group) {
  14. if (this.groups.some((g) => g.id == group.id)) {
  15. this.updateGroup(group);
  16. } else {
  17. this.groups.unshift(group);
  18. }
  19. },
  20. removeGroup(id) {
  21. this.groups.filter(g => g.id == id).forEach(g => g.quit = true);
  22. },
  23. updateGroup(group) {
  24. let g = this.findGroup(group.id);
  25. Object.assign(g, group);
  26. },
  27. clear() {
  28. this.groups = [];
  29. },
  30. loadGroup() {
  31. return new Promise((resolve, reject) => {
  32. http({
  33. url: '/group/list',
  34. method: 'GET'
  35. }).then((groups) => {
  36. this.setGroups(groups);
  37. resolve();
  38. }).catch((res) => {
  39. reject(res);
  40. })
  41. });
  42. }
  43. },
  44. getters: {
  45. findGroup: (state) => (id) => {
  46. return state.groups.find((g) => g.id == id);
  47. }
  48. }
  49. })