<template>
|
<div class="loading-layout-wrapper">
|
<div class="spinner-wrapper" v-if="props.loading">
|
<div class="el-loading-spinner">
|
<el-icon class="is-loading">
|
<Loading />
|
</el-icon>
|
<p class="el-loading-text">拼命加载中</p>
|
</div>
|
</div>
|
<template v-else>
|
<div v-if="props.error">出错了</div>
|
<template v-else>
|
<slot></slot>
|
</template>
|
</template>
|
</div>
|
</template>
|
|
<script setup lang="ts">
|
defineOptions({
|
name: 'LoadingLayout',
|
});
|
|
type Props = {
|
loading?: boolean;
|
error?: boolean;
|
};
|
|
const props = withDefaults(defineProps<Props>(), {
|
loading: false,
|
error: false,
|
});
|
</script>
|
|
<style lang="scss" scoped>
|
.loading-layout-wrapper {
|
position: relative;
|
width: 100%;
|
height: 100%;
|
}
|
|
.spinner-wrapper {
|
min-height: calc(100vh - 80px);
|
// position: relative;
|
}
|
|
.hasTagsView {
|
.spinner-wrapper {
|
min-height: calc(100vh - 124px);
|
}
|
}
|
</style>
|