搜索结果列表页面开发

This commit is contained in:
付民康
2025-03-12 18:41:20 +08:00
commit 7cebe8fc00
739 changed files with 88149 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
# DataPanel
### 说明
- 已全局声明
- 在EmptyData上进行了二次封装通过empty和loading字段自适应展示数据
- loading使用d-skeleton方案可以通过$slots.loading自定义。或者不传入loading自己加v-loading="loading"
- empty使用EmptyData方案可以通过$slots.empty自定义
``` ts
<DataPanel :empty="!dataList?length" :loading="loading">
<d-table :data="dataList" />
</DataPanel>
const dataList = ref([]);
const loading = ref(false);
```
### Props
| 参数 | 说明 | 类型 | 可选值 | 默认值 |
|-----------|------------------------|----------------------------|----------|-----------|
| loading? | 是否加载中。默认启动v-loading效果如果传入$slots.loading则v-loading失效 | boolean | - | false |
| empty? | 是否数据为空为空默认展示d-result | boolean | - | false |
| emptyText? | 数据为空的标题 | string | - | '暂无数据' |
| emptyDetail? | 数据为空标题下方的描述 | string | - | '暂无数据' |
| skeleton? | loading状态下显示骨架屏比animation优先级更高 | boolean | - | false |
| animation? | loading状态下显示定制的loading | boolean | - | false |
| card? | 是否使用g-card组件样式 | boolean | - | true |
### Slots
| 名称 | 说明 |
|---------------------|---------------------------------------------|
| default | 数据自定义区域 |
| empty? | 数据为空的定义 |
| loading? | loading效果如骨架屏。默认使用v-loading传入loading slot则v-loading失效 |

View File

@@ -0,0 +1,38 @@
<template>
<div class="g-data-panel" :class="{'g-card': card}">
<slot v-if="loading" name="loading">
<d-skeleton v-if="skeleton" class="p-20" :rows="skeletonRow"/>
<Animation v-else-if="animation" class="w-full h-full flex-center" />
</slot>
<slot v-else-if="empty" name="empty">
<EmptyData class="h-full flex-1" :hide-icon="hideIcon" :title="emptyText" :desc="emptyDetail" />
</slot>
<slot v-else></slot>
</div>
</template>
<script setup lang="ts">
import Animation from '@/components/Animation/index.vue';
interface IProps {
loading?: boolean,
empty?: boolean,
emptyText?: string,
emptyDetail?: string,
skeleton?: boolean,
hideIcon?: boolean,
skeletonRow?:number,
card?: boolean,
animation?: boolean
}
withDefaults(defineProps<IProps>(), {
emptyText: '暂无数据',
skeletonRow: 5,
card: true,
animation: false
});
</script>
<style lang="scss" scoped>
@import 'devui-theme/styles-var/devui-var.scss';
</style>