mirror of
https://github.com/pure-admin/vue-pure-admin.git
synced 2025-06-30 09:24:46 +08:00
feat: add el-table-infinite-scroll demo (#335)
This commit is contained in:
parent
3056527701
commit
fb2c016ebe
@ -86,6 +86,7 @@ menus:
|
|||||||
hsVirtualList: Virtual List
|
hsVirtualList: Virtual List
|
||||||
hsPdf: PDF Preview
|
hsPdf: PDF Preview
|
||||||
hsExecl: Export Excel
|
hsExecl: Export Excel
|
||||||
|
hsInfiniteScroll: Table Infinite Scroll
|
||||||
status:
|
status:
|
||||||
hsLoad: Loading...
|
hsLoad: Loading...
|
||||||
login:
|
login:
|
||||||
|
@ -86,6 +86,7 @@ menus:
|
|||||||
hsVirtualList: 虚拟列表
|
hsVirtualList: 虚拟列表
|
||||||
hsPdf: PDF预览
|
hsPdf: PDF预览
|
||||||
hsExecl: 导出Excel
|
hsExecl: 导出Excel
|
||||||
|
hsInfiniteScroll: 表格无限滚动
|
||||||
status:
|
status:
|
||||||
hsLoad: 加载中...
|
hsLoad: 加载中...
|
||||||
login:
|
login:
|
||||||
|
@ -49,6 +49,7 @@
|
|||||||
"dayjs": "^1.11.4",
|
"dayjs": "^1.11.4",
|
||||||
"driver.js": "^0.9.8",
|
"driver.js": "^0.9.8",
|
||||||
"echarts": "^5.3.3",
|
"echarts": "^5.3.3",
|
||||||
|
"el-table-infinite-scroll": "^3.0.1",
|
||||||
"element-plus": "^2.2.14",
|
"element-plus": "^2.2.14",
|
||||||
"element-resize-detector": "^1.2.3",
|
"element-resize-detector": "^1.2.3",
|
||||||
"js-cookie": "^3.0.1",
|
"js-cookie": "^3.0.1",
|
||||||
|
36
pnpm-lock.yaml
generated
36
pnpm-lock.yaml
generated
@ -57,6 +57,7 @@ specifiers:
|
|||||||
dayjs: ^1.11.4
|
dayjs: ^1.11.4
|
||||||
driver.js: ^0.9.8
|
driver.js: ^0.9.8
|
||||||
echarts: ^5.3.3
|
echarts: ^5.3.3
|
||||||
|
el-table-infinite-scroll: ^3.0.1
|
||||||
element-plus: ^2.2.14
|
element-plus: ^2.2.14
|
||||||
element-resize-detector: ^1.2.3
|
element-resize-detector: ^1.2.3
|
||||||
eslint: ^8.8.0
|
eslint: ^8.8.0
|
||||||
@ -145,6 +146,7 @@ dependencies:
|
|||||||
dayjs: 1.11.5
|
dayjs: 1.11.5
|
||||||
driver.js: 0.9.8
|
driver.js: 0.9.8
|
||||||
echarts: 5.3.3
|
echarts: 5.3.3
|
||||||
|
el-table-infinite-scroll: 3.0.1
|
||||||
element-plus: 2.2.14_vue@3.2.37
|
element-plus: 2.2.14_vue@3.2.37
|
||||||
element-resize-detector: 1.2.4
|
element-resize-detector: 1.2.4
|
||||||
js-cookie: 3.0.1
|
js-cookie: 3.0.1
|
||||||
@ -2330,10 +2332,6 @@ packages:
|
|||||||
peerDependencies:
|
peerDependencies:
|
||||||
eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
|
eslint: ^6.2.0 || ^7.0.0 || ^8.0.0
|
||||||
eslint-plugin-vue: ^8.0.1
|
eslint-plugin-vue: ^8.0.1
|
||||||
typescript: "*"
|
|
||||||
peerDependenciesMeta:
|
|
||||||
typescript:
|
|
||||||
optional: true
|
|
||||||
dependencies:
|
dependencies:
|
||||||
"@typescript-eslint/eslint-plugin": 5.33.1_ac9d23a22d787f7b7991fddcc31412d2
|
"@typescript-eslint/eslint-plugin": 5.33.1_ac9d23a22d787f7b7991fddcc31412d2
|
||||||
"@typescript-eslint/parser": 5.33.1_eslint@8.22.0+typescript@4.7.4
|
"@typescript-eslint/parser": 5.33.1_eslint@8.22.0+typescript@4.7.4
|
||||||
@ -2343,6 +2341,7 @@ packages:
|
|||||||
vue-eslint-parser: 8.3.0_eslint@8.22.0
|
vue-eslint-parser: 8.3.0_eslint@8.22.0
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
- typescript
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@vue/reactivity-transform/3.2.37:
|
/@vue/reactivity-transform/3.2.37:
|
||||||
@ -3502,8 +3501,6 @@ packages:
|
|||||||
finalhandler: 1.1.2
|
finalhandler: 1.1.2
|
||||||
parseurl: 1.3.3
|
parseurl: 1.3.3
|
||||||
utils-merge: 1.0.1
|
utils-merge: 1.0.1
|
||||||
transitivePeerDependencies:
|
|
||||||
- supports-color
|
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/consola/2.15.3:
|
/consola/2.15.3:
|
||||||
@ -3646,8 +3643,6 @@ packages:
|
|||||||
color: 0.11.4
|
color: 0.11.4
|
||||||
debug: 3.2.7
|
debug: 3.2.7
|
||||||
rgb: 0.1.0
|
rgb: 0.1.0
|
||||||
transitivePeerDependencies:
|
|
||||||
- supports-color
|
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/css-declaration-sorter/6.3.0_postcss@8.4.16:
|
/css-declaration-sorter/6.3.0_postcss@8.4.16:
|
||||||
@ -3862,11 +3857,6 @@ packages:
|
|||||||
{
|
{
|
||||||
integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
|
integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
|
||||||
}
|
}
|
||||||
peerDependencies:
|
|
||||||
supports-color: "*"
|
|
||||||
peerDependenciesMeta:
|
|
||||||
supports-color:
|
|
||||||
optional: true
|
|
||||||
dependencies:
|
dependencies:
|
||||||
ms: 2.0.0
|
ms: 2.0.0
|
||||||
dev: true
|
dev: true
|
||||||
@ -3876,11 +3866,6 @@ packages:
|
|||||||
{
|
{
|
||||||
integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
|
integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
|
||||||
}
|
}
|
||||||
peerDependencies:
|
|
||||||
supports-color: "*"
|
|
||||||
peerDependenciesMeta:
|
|
||||||
supports-color:
|
|
||||||
optional: true
|
|
||||||
dependencies:
|
dependencies:
|
||||||
ms: 2.1.3
|
ms: 2.1.3
|
||||||
dev: false
|
dev: false
|
||||||
@ -4156,6 +4141,19 @@ packages:
|
|||||||
}
|
}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/el-table-infinite-scroll/3.0.1:
|
||||||
|
resolution:
|
||||||
|
{
|
||||||
|
integrity: sha512-A5zeqo0us1mzAi+bvQsluex2V4BSEf/2a4FuZzkluJWsoqNCIexRVnxcgWVRl/8HaAK9nLGLnkAb//Xox+eLOg==
|
||||||
|
}
|
||||||
|
dependencies:
|
||||||
|
core-js: 3.24.1
|
||||||
|
element-plus: 2.2.14_vue@3.2.37
|
||||||
|
vue: 3.2.37
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- "@vue/composition-api"
|
||||||
|
dev: false
|
||||||
|
|
||||||
/electron-to-chromium/1.4.222:
|
/electron-to-chromium/1.4.222:
|
||||||
resolution:
|
resolution:
|
||||||
{
|
{
|
||||||
@ -5051,8 +5049,6 @@ packages:
|
|||||||
parseurl: 1.3.3
|
parseurl: 1.3.3
|
||||||
statuses: 1.5.0
|
statuses: 1.5.0
|
||||||
unpipe: 1.0.0
|
unpipe: 1.0.0
|
||||||
transitivePeerDependencies:
|
|
||||||
- supports-color
|
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/find-up/4.1.0:
|
/find-up/4.1.0:
|
||||||
|
@ -145,6 +145,14 @@ const ableRouter: RouteConfigsTable = {
|
|||||||
meta: {
|
meta: {
|
||||||
title: $t("menus.hsExecl")
|
title: $t("menus.hsExecl")
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: "/able/infiniteScroll",
|
||||||
|
name: "InfiniteScroll",
|
||||||
|
component: () => import("/@/views/able/infinite-scroll.vue"),
|
||||||
|
meta: {
|
||||||
|
title: $t("menus.hsInfiniteScroll")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
68
src/views/able/infinite-scroll.vue
Normal file
68
src/views/able/infinite-scroll.vue
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref } from "vue";
|
||||||
|
import { default as vElTableInfiniteScroll } from "el-table-infinite-scroll";
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: "InfiniteScroll"
|
||||||
|
});
|
||||||
|
|
||||||
|
const dataTemplate = new Array(10).fill({
|
||||||
|
date: "2022-08-24",
|
||||||
|
name: "RealityBoy",
|
||||||
|
age: "18"
|
||||||
|
});
|
||||||
|
|
||||||
|
const data = ref([]);
|
||||||
|
const disabled = ref(false);
|
||||||
|
const page = ref(0);
|
||||||
|
const total = ref(10);
|
||||||
|
|
||||||
|
const load = () => {
|
||||||
|
if (disabled.value) return;
|
||||||
|
|
||||||
|
page.value++;
|
||||||
|
if (page.value <= total.value) {
|
||||||
|
data.value = data.value.concat(dataTemplate);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (page.value === total.value) {
|
||||||
|
disabled.value = true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<el-card>
|
||||||
|
<template #header>
|
||||||
|
<div class="font-medium">
|
||||||
|
表格无限滚动(
|
||||||
|
<el-link
|
||||||
|
href="https://github.com/yujinpan/el-table-infinite-scroll"
|
||||||
|
target="_blank"
|
||||||
|
style="font-size: 16px; margin: 0 5px 4px 0"
|
||||||
|
>
|
||||||
|
github地址
|
||||||
|
</el-link>
|
||||||
|
)
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<div>
|
||||||
|
<p class="mb-2">
|
||||||
|
<span>loaded page(total: {{ total }}): {{ page }}, </span>
|
||||||
|
disabled:
|
||||||
|
<el-switch v-model="disabled" :disabled="page >= total" />
|
||||||
|
</p>
|
||||||
|
<el-table
|
||||||
|
v-el-table-infinite-scroll="load"
|
||||||
|
:data="data"
|
||||||
|
:infinite-scroll-disabled="disabled"
|
||||||
|
height="435px"
|
||||||
|
>
|
||||||
|
<el-table-column type="index" />
|
||||||
|
<el-table-column prop="date" label="date" />
|
||||||
|
<el-table-column prop="name" label="name" />
|
||||||
|
<el-table-column prop="age" label="age" />
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
</el-card>
|
||||||
|
</template>
|
Loading…
x
Reference in New Issue
Block a user