useAccountOptions.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. // 获取账户列表(核心方法)
  11. const getDateList = async () => {
  12. try {
  13. isLoaded.value = false
  14. const res = await customApi.CustomDropdown({ platform: '' })
  15. if (res.code === Code.StatusOK) {
  16. // 格式化下拉选项
  17. const loginOptions = res.data.map(item => ({
  18. ...item,
  19. value: item.login,
  20. text: item.login
  21. }))
  22. saveLoginOptions(loginOptions)
  23. } else {
  24. uni.showToast({
  25. title: res.msg || '获取账户失败',
  26. icon: 'none'
  27. })
  28. loading.value = false
  29. }
  30. } catch (err) {
  31. uni.showToast({
  32. title: err.msg || '网络异常,请重试',
  33. icon: 'none'
  34. })
  35. loading.value = false
  36. console.error(err)
  37. } finally {
  38. isLoaded.value = true
  39. }
  40. }
  41. // ✨ 自动执行(页面挂载后自动调用)
  42. onMounted(() => {
  43. if (!loginOptions || loginOptions.length === 0) {
  44. getDateList()
  45. }
  46. })
  47. return {
  48. loginOptions,
  49. isLoaded,
  50. getDateList
  51. }
  52. }