useAccountOptions.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import { ref, onMounted, computed } from 'vue'
  2. import { customApi } from '@/service/custom'
  3. import Config from '@/config/index'
  4. const { Code } = Config
  5. import useUserStore from '@/stores/use-user-store'
  6. export function useAccountOptions() {
  7. const { loginOptions, saveLoginOptions } = useUserStore()
  8. // 响应式状态
  9. const isLoaded = ref(false) // 是否已完成请求(成功/失败都算完成)
  10. const isSuccess = ref(false) // 是否请求成功(成功才有数据)
  11. const loading = ref(false) // 补全缺失的 loading
  12. // 获取账户列表
  13. const getDateList = async () => {
  14. try {
  15. loading.value = true
  16. isLoaded.value = false
  17. isSuccess.value = false
  18. const res = await customApi.CustomDropdown({ platform: '' })
  19. if (res.code === Code.StatusOK) {
  20. if (res.data.length === 0) {
  21. saveLoginOptions([])
  22. return
  23. } else {
  24. const options = res.data?.map(item => ({
  25. ...item,
  26. value: item.login,
  27. text: item.login
  28. })) || []
  29. console.log(options, 1212);
  30. saveLoginOptions(options)
  31. }
  32. isSuccess.value = true // 标记成功
  33. } else {
  34. uni.showToast({
  35. title: res.msg || '获取账户失败',
  36. icon: 'none'
  37. })
  38. }
  39. } catch (err) {
  40. uni.showToast({
  41. title: err.msg || '网络异常,请重试',
  42. icon: 'none'
  43. })
  44. console.error('获取账户异常:', err)
  45. } finally {
  46. loading.value = false
  47. isLoaded.value = true // 无论如何都标记请求结束
  48. }
  49. }
  50. onMounted(() => {
  51. // 缓存没有 → 才请求
  52. getDateList()
  53. })
  54. return {
  55. loginOptions,
  56. isLoaded,
  57. isSuccess,
  58. loading,
  59. getDateList
  60. }
  61. }