mirror of
https://gitee.com/dromara/go-view.git
synced 2025-02-23 15:52:49 +08:00
新增分页联动组件
This commit is contained in:
parent
7ae5fcda1e
commit
1fd73cbc57
@ -0,0 +1,26 @@
|
|||||||
|
import cloneDeep from 'lodash/cloneDeep'
|
||||||
|
import { PublicConfigClass } from '@/packages/public'
|
||||||
|
import { CreateComponentType } from '@/packages/index.d'
|
||||||
|
import { chartInitConfig } from '@/settings/designSetting'
|
||||||
|
import { COMPONENT_INTERACT_EVENT_KET } from '@/enums/eventEnum'
|
||||||
|
import { interactActions, ComponentInteractEventEnum } from './interact'
|
||||||
|
import {InputsPaginationConfig} from "./index";
|
||||||
|
|
||||||
|
export const option = {
|
||||||
|
// 时间组件展示类型,必须和 interactActions 中定义的数据一致
|
||||||
|
[COMPONENT_INTERACT_EVENT_KET]: ComponentInteractEventEnum.DATA,
|
||||||
|
// 默认值
|
||||||
|
pageValue:1,
|
||||||
|
sizeValue:[2,4,8,10,20],
|
||||||
|
pageSize:4,
|
||||||
|
// 暴露配置内容给用户
|
||||||
|
dataset: 10
|
||||||
|
}
|
||||||
|
|
||||||
|
export default class Config extends PublicConfigClass implements CreateComponentType {
|
||||||
|
public key = InputsPaginationConfig.key
|
||||||
|
public attr = { ...chartInitConfig, w: 395, h: 32, zIndex: -1 }
|
||||||
|
public chartConfig = cloneDeep(InputsPaginationConfig)
|
||||||
|
public interactActions = interactActions
|
||||||
|
public option = cloneDeep(option)
|
||||||
|
}
|
@ -0,0 +1,35 @@
|
|||||||
|
<template>
|
||||||
|
<collapse-item name="分页配置" :expanded="true">
|
||||||
|
<setting-item-box :alone="false" name="分页设置">
|
||||||
|
<setting-item name="默认页码" :alone="true">
|
||||||
|
<n-input-number v-model:value="optionData.pageValue" size="small" placeholder="字体大小"></n-input-number>
|
||||||
|
</setting-item>
|
||||||
|
<setting-item name="分页" :alone="true">
|
||||||
|
<n-select v-model:value="optionData.pageSize" size="small"
|
||||||
|
:options="page" />
|
||||||
|
</setting-item>
|
||||||
|
<setting-item name="页数" :alone="true">
|
||||||
|
<n-input-number v-model:value="optionData.dataset" size="small" placeholder="字体大小"></n-input-number>
|
||||||
|
</setting-item>
|
||||||
|
</setting-item-box>
|
||||||
|
</collapse-item>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { PropType } from 'vue'
|
||||||
|
import {CollapseItem, SettingItem, SettingItemBox} from '@/components/Pages/ChartItemSetting'
|
||||||
|
import { option } from './config'
|
||||||
|
|
||||||
|
const page = [
|
||||||
|
{label:'2',value:2},
|
||||||
|
{label:'4',value:4},
|
||||||
|
{label:'8',value:8},
|
||||||
|
{label:'10',value:10},
|
||||||
|
{label:'20',value:20}
|
||||||
|
]
|
||||||
|
defineProps({
|
||||||
|
optionData: {
|
||||||
|
type: Object as PropType<typeof option>,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
@ -0,0 +1,14 @@
|
|||||||
|
import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d'
|
||||||
|
import { ChatCategoryEnum, ChatCategoryEnumName } from '../../index.d'
|
||||||
|
|
||||||
|
export const InputsPaginationConfig: ConfigType = {
|
||||||
|
key: 'InputsPagination',
|
||||||
|
chartKey: 'VInputsPagination',
|
||||||
|
conKey: 'VCInputsPagination',
|
||||||
|
title: '分页',
|
||||||
|
category: ChatCategoryEnum.INPUTS,
|
||||||
|
categoryName: ChatCategoryEnumName.INPUTS,
|
||||||
|
package: PackagesCategoryEnum.INFORMATIONS,
|
||||||
|
chartFrame: ChartFrameEnum.STATIC,
|
||||||
|
image: 'inputs_select.png'
|
||||||
|
}
|
@ -0,0 +1,66 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<n-pagination
|
||||||
|
@on-update:page="onChange" :style="`width:${w}px;`"
|
||||||
|
v-model:page="option.value.pageValue"
|
||||||
|
:page-count="option.value.dataset"
|
||||||
|
:page-slot="7"
|
||||||
|
show-size-picker
|
||||||
|
:page-sizes="option.value.sizeValue"
|
||||||
|
v-model:page-size="option.value.pageSize"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { PropType, toRefs, shallowReactive, watch } from 'vue'
|
||||||
|
import { CreateComponentType } from '@/packages/index.d'
|
||||||
|
import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
|
||||||
|
import { useChartInteract } from '@/hooks'
|
||||||
|
import { InteractEventOn } from '@/enums/eventEnum'
|
||||||
|
import { ComponentInteractParamsEnum } from './interact'
|
||||||
|
|
||||||
|
const props = defineProps({
|
||||||
|
chartConfig: {
|
||||||
|
type: Object as PropType<CreateComponentType>,
|
||||||
|
required: true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const { w, h } = toRefs(props.chartConfig.attr)
|
||||||
|
const option = shallowReactive({
|
||||||
|
value: {
|
||||||
|
pageValue: props.chartConfig.option.pageValue,
|
||||||
|
dataset:props.chartConfig.option.dataset,
|
||||||
|
sizeValue:props.chartConfig.option.sizeValue,
|
||||||
|
pageSize:props.chartConfig.option.pageSize
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const onChange = (v: number,v2:number) => {
|
||||||
|
if(v == undefined) return;
|
||||||
|
// 存储到联动数据
|
||||||
|
useChartInteract(
|
||||||
|
props.chartConfig,
|
||||||
|
useChartEditStore,
|
||||||
|
{
|
||||||
|
[ComponentInteractParamsEnum.DATA]: v ,
|
||||||
|
[ComponentInteractParamsEnum.DATA2]:v2
|
||||||
|
},
|
||||||
|
InteractEventOn.CHANGE
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 手动更新
|
||||||
|
watch(
|
||||||
|
() => props.chartConfig.option,
|
||||||
|
(newData: any) => {
|
||||||
|
option.value = newData
|
||||||
|
onChange(newData.pageValue,newData.pageSize)
|
||||||
|
},
|
||||||
|
{
|
||||||
|
immediate: true,
|
||||||
|
deep: true
|
||||||
|
}
|
||||||
|
)
|
||||||
|
</script>
|
@ -0,0 +1,32 @@
|
|||||||
|
import { InteractEventOn, InteractActionsType } from '@/enums/eventEnum'
|
||||||
|
|
||||||
|
// 时间组件类型
|
||||||
|
export enum ComponentInteractEventEnum {
|
||||||
|
DATA = 'data'
|
||||||
|
}
|
||||||
|
|
||||||
|
// 联动参数
|
||||||
|
export enum ComponentInteractParamsEnum {
|
||||||
|
DATA = 'data',
|
||||||
|
DATA2 = 'data2'
|
||||||
|
}
|
||||||
|
|
||||||
|
// 定义组件触发回调事件
|
||||||
|
export const interactActions: InteractActionsType[] = [
|
||||||
|
{
|
||||||
|
interactType: InteractEventOn.CHANGE,
|
||||||
|
interactName: '选择完成',
|
||||||
|
componentEmitEvents: {
|
||||||
|
[ComponentInteractEventEnum.DATA]: [
|
||||||
|
{
|
||||||
|
value: ComponentInteractParamsEnum.DATA,
|
||||||
|
label: '页数'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: ComponentInteractParamsEnum.DATA2,
|
||||||
|
label: '每页条数'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
@ -1,5 +1,6 @@
|
|||||||
import { InputsDateConfig } from './InputsDate/index'
|
import { InputsDateConfig } from './InputsDate/index'
|
||||||
import { InputsSelectConfig } from './InputsSelect/index'
|
import { InputsSelectConfig } from './InputsSelect/index'
|
||||||
import { InputsTabConfig } from './InputsTab/index'
|
import { InputsTabConfig } from './InputsTab/index'
|
||||||
|
import { InputsPaginationConfig } from "./InputsPagination/index";
|
||||||
|
|
||||||
export default [InputsDateConfig, InputsSelectConfig, InputsTabConfig]
|
export default [InputsDateConfig, InputsSelectConfig, InputsTabConfig,InputsPaginationConfig]
|
||||||
|
Loading…
Reference in New Issue
Block a user