owner.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { defineStore } from 'pinia'
  2. import { allUsersApi } from '@/services/api'
  3. import { ref } from 'vue'
  4. import { useUserStore } from '@/stores/user'
  5. export const useOwnerStore = defineStore('owner', () => {
  6. const owners = ref([])
  7. const isLoading = ref(false)
  8. const error = ref(null)
  9. const loadOwners = async () => {
  10. if (owners.value.length > 0) return
  11. const userStore = useUserStore()
  12. if (userStore.userInfo && userStore.userInfo.role !== 'admin') return
  13. try {
  14. isLoading.value = true
  15. error.value = null
  16. const data = await allUsersApi()
  17. owners.value = [
  18. { name: '全部用户', value: '' },
  19. ...data.map(user => ({ name: user.name, value: user.id }))
  20. ]
  21. } catch (err) {
  22. error.value = '加载用户列表失败'
  23. console.error('加载用户列表失败:', err)
  24. } finally {
  25. isLoading.value = false
  26. }
  27. }
  28. const reset = () => {
  29. owners.value = []
  30. isLoading.value = false
  31. error.value = null
  32. }
  33. return {
  34. owners,
  35. isLoading,
  36. error,
  37. loadOwners,
  38. reset
  39. }
  40. })