ruoyi-plus-soybean/src/components/common/app-provider.vue

46 lines
1.1 KiB
Vue
Raw Normal View History

2023-11-17 08:45:00 +08:00
<script setup lang="ts">
2023-12-14 21:45:29 +08:00
import { createTextVNode, defineComponent } from 'vue';
2023-11-17 08:45:00 +08:00
import { useDialog, useLoadingBar, useMessage, useNotification } from 'naive-ui';
2024-09-05 11:06:30 +08:00
import { useLoading } from '@sa/hooks';
2023-11-17 08:45:00 +08:00
defineOptions({
name: 'AppProvider'
});
2024-09-05 11:06:30 +08:00
const loading = useLoading(false);
2023-11-17 08:45:00 +08:00
const ContextHolder = defineComponent({
name: 'ContextHolder',
setup() {
function register() {
window.$loadingBar = useLoadingBar();
window.$dialog = useDialog();
window.$message = useMessage();
window.$notification = useNotification();
2024-09-05 11:06:30 +08:00
window.$loading = loading;
2023-11-17 08:45:00 +08:00
}
register();
2023-12-14 21:45:29 +08:00
return () => createTextVNode();
2023-11-17 08:45:00 +08:00
}
});
</script>
<template>
2024-09-05 11:06:30 +08:00
<NSpin class="h-full" content-class="h-full" :show="loading.loading.value">
<NLoadingBarProvider>
<NDialogProvider>
<NNotificationProvider>
<NMessageProvider>
<ContextHolder />
<slot></slot>
</NMessageProvider>
</NNotificationProvider>
</NDialogProvider>
</NLoadingBarProvider>
</NSpin>
2023-11-17 08:45:00 +08:00
</template>
<style scoped></style>