UNPKG

tav-ui

Version:
1 lines 6.36 kB
{"version":3,"file":"index2.mjs","sources":["../../../../../../../../packages/components/permission/src/PermissionDataQuery/index.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n computed,\n inject,\n onBeforeMount,\n onBeforeUnmount,\n onMounted,\n provide,\n reactive,\n ref,\n shallowRef,\n useAttrs,\n // useSlots,\n watch,\n} from 'vue'\nimport { Spin as ASpain } from 'ant-design-vue'\nimport { DEFAULT_APIPARAMS, permissionContextKey, permissionsContextKey } from '../constants'\nimport { useMergedProps } from '../hooks/use-props'\nimport { DEFAULT_PERMISSIONDATAQUERY_CLASSNAME, DEFAULT_PERMISSIONDATAQUERY_ID } from './constants'\nimport {\n type PermissionQueryDataContent,\n permissionDataQueryEmits,\n permissionDataQueryProps,\n} from './types'\nimport type { PermissionContext } from '../types'\n\ndefineOptions({\n name: 'TaPermissionDataQuery',\n // inheritAttrs: false,\n})\n\nconst id = ref(DEFAULT_PERMISSIONDATAQUERY_ID())\nconst type = ref(DEFAULT_PERMISSIONDATAQUERY_CLASSNAME)\nconst props = defineProps(permissionDataQueryProps)\nconst emits = defineEmits(permissionDataQueryEmits)\n// const slots = useSlots()\nconst attrs = useAttrs()\n\nconst mergedProps = useMergedProps(props, 'TaPermissionDataQuery', DEFAULT_APIPARAMS)\nconst permissionContent = shallowRef<PermissionQueryDataContent>()\nconst isUseApi = computed(() => mergedProps.value.apiParams && mergedProps.value.apiPermissionData)\nconst loading = ref(false)\n\nasync function reload() {\n try {\n const { data, success } = await mergedProps.value.apiPermissionData!(\n mergedProps.value.apiParams!\n )\n if (data && success) {\n permissionContent.value = data\n emits('apiSuccess', data)\n return data\n } else {\n permissionContent.value = undefined\n return undefined\n }\n } catch (error: any) {\n console.warn('[tavui TaPermissionDataQuery] api has error', error)\n permissionContent.value = undefined\n emits('apiError', error)\n return undefined\n }\n}\n\nasync function handlePermission() {\n if (mergedProps.value.disabled) return\n if (isUseApi.value) {\n try {\n loading.value = true\n await reload()\n } catch (error: any) {\n console.warn('[tavui TaPermissionDataQuery] api has error', error)\n } finally {\n loading.value = false\n }\n } else {\n if (mergedProps.value.permission) {\n permissionContent.value = mergedProps.value.permission\n }\n }\n}\n\nonBeforeMount(async () => {\n if (props.immediate) {\n await handlePermission()\n }\n})\n\nwatch(\n () => JSON.stringify(mergedProps.value.apiParams),\n async (curVal, preVal) => {\n if (curVal && curVal !== '{}' && curVal !== preVal) {\n if (props.immediate) {\n await handlePermission()\n }\n }\n }\n)\n\nconst permissionsContext = inject(permissionsContextKey, undefined)\n// const parentPermissionContext = inject(permissionContextKey, undefined)\n// console.log('🚀 ~ parentPermissionContext:', parentPermissionContext)\nconst context: PermissionContext = reactive({\n // ...toRefs(props),\n id,\n type,\n disabled: mergedProps.value.disabled,\n permission: permissionContent,\n})\n\nonMounted(() => {\n permissionsContext?.addPermission(context)\n})\n\nonBeforeUnmount(() => {\n permissionsContext?.removePermission(context)\n})\n\nprovide(permissionContextKey, context)\n\ndefineExpose({\n id,\n permissionContext: context,\n reload,\n})\n</script>\n\n<template>\n <ASpain v-if=\"loading\" size=\"large\" tip=\"正在加载权限,请稍等 👾\" />\n <slot v-else v-bind=\"{ ...mergedProps.value, ...attrs, permission: permissionContent }\" />\n</template>\n"],"names":["_openBlock","_createBlock","_unref","ASpain"],"mappings":"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"}