useAIRenderRules.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import {ref} from 'vue';
  2. import {toast} from "@/uni_modules/uv-ui-tools/libs/function";
  3. import {useCacheStore} from "@/hooks/useCacheStore";
  4. import {getAIRenderRules} from "@/api/webApi/ie-voluntary";
  5. export const useAIRenderRules = function (paramFactory) {
  6. const renderRuleLoading = ref(false)
  7. const renderRules = ref([])
  8. const {dispatchCache, removeCache} = useCacheStore()
  9. const reloadRenderRules = async () => {
  10. const params = paramFactory()
  11. if (!params) return console.error('please implement `paramFactory`')
  12. renderRuleLoading.value = true
  13. try {
  14. const res = await dispatchCache(getAIRenderRules, params)
  15. renderRules.value = res.data
  16. } finally {
  17. renderRuleLoading.value = false
  18. }
  19. }
  20. const validateRenderRule = async () => {
  21. if (!renderRules.value.length) {
  22. if (!renderRuleLoading.value) {
  23. const params = paramFactory()
  24. if (params) removeCache(getAIRenderRules, params)
  25. await reloadRenderRules()
  26. }
  27. const err = `请稍候,正在获取志愿规则信息...`
  28. toast(err)
  29. return Promise.reject(err)
  30. }
  31. }
  32. return {
  33. renderRuleLoading,
  34. renderRules,
  35. reloadRenderRules,
  36. validateRenderRule
  37. }
  38. }