store.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /* eslint-disable no-empty */
  2. import Vuex from 'vuex'
  3. import { getTeamBaseInfo, findSound } from '@/api/buildTeam'
  4. const store = new Vuex.Store({
  5. state: {
  6. res: null,
  7. baseInfo: null,
  8. musicGroup: {},
  9. sounds: []
  10. },
  11. mutations: {
  12. updateBaseinfo(state, res) {
  13. state.res = res
  14. state.baseInfo = res.data
  15. if (res.data.musicGroup) {
  16. state.musicGroup = {...res.data.musicGroup}
  17. } else {
  18. state.musicGroup = {}
  19. }
  20. },
  21. updateSound(state, list) {
  22. state.sounds = [...list]
  23. }
  24. },
  25. actions: {
  26. async getBaseInfo({ commit, state }, payload) {
  27. try {
  28. if (payload.data?.musicGroupId !== state.musicGroup.id || payload.force) {
  29. const res = await getTeamBaseInfo(payload.data)
  30. commit('updateBaseinfo', res)
  31. return Promise.resolve(res)
  32. }
  33. return Promise.resolve(state.res)
  34. } catch (error) {}
  35. return Promise.reject()
  36. },
  37. async getFindSound({ commit, state }, payload) {
  38. try {
  39. if (state.sounds.length) {
  40. return Promise.resolve(state.sounds)
  41. }
  42. const res = await findSound({
  43. ...payload.data
  44. })
  45. commit('updateSound', res.data)
  46. return Promise.resolve(state.sounds)
  47. } catch (error) {}
  48. return Promise.reject()
  49. }
  50. }
  51. })
  52. export default store