wip: Waterfall

This commit is contained in:
kailong321200875 2023-09-27 17:55:12 +08:00
parent 6232602892
commit 5f751b86ba
9 changed files with 85 additions and 17 deletions

View File

@ -285,6 +285,14 @@ const adminList = [
meta: { meta: {
title: 'router.inputPassword' title: 'router.inputPassword'
} }
},
{
path: 'waterfall',
component: 'views/Components/Waterfall',
name: 'Waterfall',
meta: {
title: 'router.waterfall'
}
} }
] ]
}, },
@ -640,8 +648,8 @@ const testList: string[] = [
'/components/qrcode', '/components/qrcode',
'/components/highlight', '/components/highlight',
'/components/infotip', '/components/infotip',
'/Components/InputPassword', '/components/input-password',
'/Components/Sticky', '/components/waterfall',
'function', 'function',
'/function/multiple-tabs', '/function/multiple-tabs',
'/function/multiple-tabs-demo/:id', '/function/multiple-tabs-demo/:id',

View File

@ -46,8 +46,8 @@ for (let i = 0; i < count; i++) {
content: baseContent, content: baseContent,
importance: '@integer(1, 3)', importance: '@integer(1, 3)',
display_time: '@datetime', display_time: '@datetime',
pageviews: '@integer(300, 5000)', pageviews: '@integer(100, 500)',
image_uri: Mock.Random.image('@integer(300, 5000)x@integer(300, 5000)') image_uri: Mock.Random.image('@integer(100, 500)x@integer(100, 500)')
}) })
) )
} }

View File

@ -15,17 +15,17 @@ const appStore = useAppStore()
const size = computed(() => appStore.getCurrentSize) const size = computed(() => appStore.getCurrentSize)
const iconSize = computed(() => { const iconSize = computed(() => {
return size.value === 'small' return unref(size) === 'small'
? 'var(--el-component-size-small)' ? 'var(--el-component-size-small)'
: size.value === 'large' : unref(size) === 'large'
? 'var(--el-component-size-large)' ? 'var(--el-component-size-large)'
: 'var(--el-component-size)' : 'var(--el-component-size)'
}) })
const iconWrapStyle = computed((): CSSProperties => { const iconWrapStyle = computed((): CSSProperties => {
return { return {
width: iconSize.value, width: unref(iconSize),
height: iconSize.value, height: unref(iconSize),
display: 'flex', display: 'flex',
alignItems: 'center', alignItems: 'center',
justifyContent: 'center', justifyContent: 'center',
@ -45,7 +45,7 @@ const icons = [epIcons, antIcons, tIcons]
const iconName = ref(icons[0].prefix) const iconName = ref(icons[0].prefix)
const currentIconNameIndex = computed(() => { const currentIconNameIndex = computed(() => {
return icons.findIndex((item) => item.prefix === iconName.value) return icons.findIndex((item) => item.prefix === unref(iconName))
}) })
const tabChange = () => { const tabChange = () => {
@ -57,8 +57,8 @@ const pageSize = ref(63)
const currentPage = ref(1) const currentPage = ref(1)
const filterIcons = (icons: string[]) => { const filterIcons = (icons: string[]) => {
const start = (currentPage.value - 1) * pageSize.value const start = (unref(currentPage) - 1) * unref(pageSize)
const end = currentPage.value * pageSize.value const end = unref(currentPage) * unref(pageSize)
return icons.slice(start, end) return icons.slice(start, end)
} }
@ -81,7 +81,7 @@ async function init(icon?: string) {
const index = icons[wrapIndex].icons.findIndex((item) => item === icon) const index = icons[wrapIndex].icons.findIndex((item) => item === icon)
// icon // icon
await nextTick() await nextTick()
currentPage.value = Math.ceil((index + 1) / pageSize.value) currentPage.value = Math.ceil((index + 1) / unref(pageSize))
} }
const popoverShow = () => { const popoverShow = () => {

View File

@ -1,3 +1,3 @@
import Waterfall from './Waterfall.vue' import Waterfall from './src/Waterfall.vue'
export { Waterfall } export { Waterfall }

View File

@ -1,3 +1,20 @@
<script lang="ts" setup></script> <script lang="ts" setup>
import { propTypes } from '@/utils/propTypes'
import { useDesign } from '@/hooks/web/useDesign'
<template>dddd</template> const { getPrefixCls } = useDesign()
const prefixCls = getPrefixCls('waterfall')
const props = defineProps({
data: propTypes.array.def([]),
reset: propTypes.bool.def(false),
width: propTypes.number.def(200),
gap: propTypes.number.def(20),
getContainer: propTypes.func.def(() => document.body)
})
</script>
<template>
<div :class="prefixCls"></div>
</template>

View File

@ -176,7 +176,8 @@ export default {
multipleTabs: 'Multiple tabs', multipleTabs: 'Multiple tabs',
details: 'Details', details: 'Details',
iconPicker: 'Icon picker', iconPicker: 'Icon picker',
request: 'Request' request: 'Request',
waterfall: 'Waterfall'
}, },
permission: { permission: {
hasPermission: 'Please set the operation permission value' hasPermission: 'Please set the operation permission value'

View File

@ -174,7 +174,8 @@ export default {
multipleTabs: '多开标签页', multipleTabs: '多开标签页',
details: '详情页', details: '详情页',
iconPicker: '图标选择器', iconPicker: '图标选择器',
request: '请求' request: '请求',
waterfall: '瀑布流'
}, },
permission: { permission: {
hasPermission: '请设置操作权限值' hasPermission: '请设置操作权限值'

View File

@ -326,6 +326,14 @@ export const asyncRouterMap: AppRouteRecordRaw[] = [
meta: { meta: {
title: t('router.inputPassword') title: t('router.inputPassword')
} }
},
{
path: 'waterfall',
component: () => import('@/views/Components/Waterfall.vue'),
name: 'waterfall',
meta: {
title: t('router.waterfall')
}
} }
] ]
}, },

View File

@ -0,0 +1,33 @@
<script setup lang="ts">
import { Waterfall } from '@/components/Waterfall'
import { ContentWrap } from '@/components/ContentWrap'
import { useI18n } from '@/hooks/web/useI18n'
import Mock from 'mockjs'
import { ref, unref } from 'vue'
import { toAnyString } from '@/utils'
const data = ref<any>([])
const getList = () => {
const list: any = []
for (let i = 0; i < 20; i++) {
list.push(
Mock.mock({
id: toAnyString(),
image_uri: Mock.Random.image('@integer(100, 500)x@integer(100, 500)')
})
)
}
data.value = [...unref(data), ...list]
console.log('【data】', data.value)
}
getList()
const { t } = useI18n()
</script>
<template>
<ContentWrap :title="t('router.waterfall')">
<Waterfall :data="data" />
</ContentWrap>
</template>