Skip to content

fpi-el-page-layout PC端管理系统通用的布局组件

基础使用

内容传送到了内置了default插槽

<!--
 * @Author: mjh
 * @Date: 2023-08-22 16:01:55
 * @LastEditors: mjh
 * @LastEditTime: 2023-08-23 09:11:51
 * @Description:
-->
<template>
    <div class="container">
        <FpiElPageLayout title="这是一个标题">
            <div style="height: 14px;font-size: 14px;line-height: 14px;">
                内容区域
            </div>
        </FpiElPageLayout>
    </div>
</template>

<script lang="ts" setup></script>

<style scoped>
.container {
    width: 100%;
    height: 600px;
}
</style>
显示代码

内置返回&Tabs

<!--
 * @Author: mjh
 * @Date: 2023-08-22 16:01:55
 * @LastEditors: mjh
 * @LastEditTime: 2023-08-23 09:11:57
 * @Description:
-->
<template>
    <div class="container">
        <FpiElPageLayout
            v-model:tab="tab"
            title="这是一个标题"
            :show-back="showBack"
            :show-tabs="showTabs"
            :tabs="tabs"
            @back="onBack"
        >
            <div v-show="tab === '1'" style="height: 14px;font-size: 14px;line-height: 14px;">
                内容区域1
            </div>
            <div v-show="tab === '2'" style="height: 14px;font-size: 14px;line-height: 14px;">
                内容区域2
            </div>
        </FpiElPageLayout>
    </div>
</template>

<script lang="ts" setup>
import { ref } from 'vue'
const showBack = true
const onBack = () => {
    alert('back')
}
const showTabs = true
const tabs = [{ name: 'tab页面1', code: '1' }, { name: 'tab页面2', code: '2' }]
const tab = ref('1')
</script>

<style scoped>
.container {
    width: 100%;
    height: 600px;
}
</style>
显示代码

内置插槽

<template>
    <div class="container">
        <FpiElPageLayout
            title="这是一个标题"
        >
            <template #header-left>
                <span style="color: #fff;">头部左侧插槽</span>
            </template>
            <template #header-right>
                <span style="color: #fff;">头部右侧插槽</span>
            </template>
            <div style="height: 14px;font-size: 14px;line-height: 14px;">
                内容区域1
            </div>
        </FpiElPageLayout>
    </div>
</template>

<script lang="ts" setup></script>

<style scoped>
.container {
    width: 100%;
    height: 600px;
}
</style>
显示代码

自定义内容区多列

如果定义了columns, 则内置的default插槽无法使用

<!--
 * @Author: mjh
 * @Date: 2023-08-22 17:13:55
 * @LastEditors: mjh
 * @LastEditTime: 2023-08-23 09:12:03
 * @Description:
-->
<template>
    <div class="container">
        <FpiElPageLayout title="这是一个标题" :columns="columns">
            <template #columnOne>
                <div style="height: 14px;font-size: 14px;line-height: 14px;">
                    内容区域1
                </div>
            </template>
            <template #columnTwo>
                <div style="height: 14px;font-size: 14px;line-height: 14px;">
                    内容区域2
                </div>
            </template>
            <template #columnThree>
                <div style="height: 14px;font-size: 14px;line-height: 14px;">
                    内容区域3
                </div>
            </template>
        </FpiElPageLayout>
    </div>
</template>

<script lang="ts" setup>
const columns = [
    {
        slotName: 'columnOne',
        defaultWidth: 100, // 可选 默认宽度200, 但是如果为数组的最后一列不生效
        maxWidth: 150, // 可选 默认不设置 但是如果为数组的最后一列不生效
        minWidth: 80, // 可选 默认不设置 但是如果为数组的最后一列不生效
        style: {}, // 可选 默认不设置
        class: '', // 可选 默认不设置
        hideBorder: false, // 可选 默认false 但是如果为数组的最后一列不生效
        disableDrag: false, // 可选 默认false 但是如果为数组的最后一列不生效
    },
    {
        slotName: 'columnTwo',
        defaultWidth: 200,
        minWidth: 150
    },
    {
        slotName: 'columnThree',
    }
]
</script>

<style scoped>
.container {
    width: 100%;
    height: 600px;
}
</style>
显示代码

属性

参数说明类型可选值默认值
title标题string可选
showBack是否显示返回按钮boolean可选false
showTabs是否展示tabs组件boolean可选false
tab / v-model:tab选择的tabstring可选
tabs定义头部tabs内的数据{name: string; code: string;}[]可选[]
columns主内容区定义分割布局ColumnsItem[]可选[]

ColumnsItem

名称说明类型可选值默认值
slotName插槽名称string必填
defaultWidth默认宽度 (最后一列时无效)number可选200
maxWidth最大宽度 (最后一列时无效)number可选
minWidth最小宽度 (最后一列时无效)number可选
style样式CSSProperties可选
class类名string
hideBorder是否隐藏边 (最后一列时无效)boolean可选false
disableDrag是否禁止拖动 (最后一列时无效)boolean可选false

事件

名称说明类型
update:tab修改tab值(tab: string) => void
back点击返回按钮() => void

插槽

名称说明
header-left头部标题左侧
header-right头部右侧
default默认插槽(无columns数据时有效)
动态插槽 columns -> slotName可以插入定义的内容区

贡献者:

大气-李国帝

fpi-component