Appearance
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 | 选择的tab | string | 可选 | |
| 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 | 可以插入定义的内容区 | 
贡献者: 
大气-李国帝