# Schema Page 方案页面
根据JSON Schema配置自动生成一个包含搜索、表格、表单、详情功能的页面
## 基础用法
`schema`设置配置项,其中包括`filter`、`table`、`form`三个基本schema配置,配置方式分别对应`eagle-schema-filter`、`eagle-schema-table`、`eagle-schema-form`,绑定值则分别对应`value-filter`、`value-table`、`value-form`,由于是多个双向绑定的值,所以使用`sync`修饰符来做双向绑定。
::: snippet 基础示例
```html
```
:::
## 详情入口
可以通过自定义插槽的方式,在单元格内指定详情入口。由于三个子组件均支持自定义插槽,所以在本组件中使用自定义插槽时需要加上子组件**前缀**。
::: snippet 配置表格中的详情入口可以使用`table-cell-`插槽。
```html
{{ value }}
```
:::
## 对接接口
本组件预置了增删改查逻辑,因此分别对应`api-search`、`api-new`、`api-edit`、`api-get`、`api-delete`五个基本接口。
::: snippet 接口格式为返回一个**Promise**对象的**Function**。其中,`api-search`的执行结果必须是[分页数据, 数据总数]的格式,`api-get`的执行结果必须与`valur-form`相对应,`api-new`、`api-edit`、`api-delete`保持默认的**Promise**的resolve或reject逻辑即可,详情见示例。
```html
{{ value }}
```
:::
## 详情接口
由于可能出现详情与表单不同的情况,因此本组件提供了`value-detail`属性和`api-detail`接口可独立维护详情页面,若详情表单项也不同,则可以在`schema`中配置`detail`来设置。
::: snippet 若没有详情绑定值属性和接口,则默认以表单的值为准。
```html
{{ value }}
{{ item }}
```
:::
## 自定义弹窗
除了本组件内置的`new`、`edit`、`detail`三种弹出框模式之外,还可以通过任意插槽打开任意自定义弹出框。也支持重新定义原有的三种弹框,同时也需要重新自定义表单校验和提交等逻辑。
::: snippet 插槽提供`openDialog`打开弹出框方法,参数类型为(type: 弹出框类型, title: 弹出框标题, config: 弹出框配置),弹出框主体通过`dialog-`插槽定义。`closeDialog`为关闭弹出框。
```html
账单
配载
{{ value }}
关闭
关闭弹出框
关闭
关闭
关闭
```
:::
## 弹窗类型
弹出框组件默认为`el-dialog`,使用自定义弹窗时,可以设置为`el-drawer`。
::: snippet 通过`openDialog`的config参数配置`is: 'el-drawer'`即可改为抽屉式弹窗,`dialog-xxx-footer`可以设置抽屉固定的footer
```html
账单
配载
{{ value }}
一段很长的内容
关闭
关闭弹出框
```
:::
## 按钮权限
本组件不包含自定义业务逻辑,因此配置项不包含权限判断,如果需要按钮的权限判断,可以通过`action`插槽和`operation`插槽将渲染逻辑暴露在视图模板中,然后进行自定义判断。
::: snippet 本示例项目中没有`v-permission`等自定义权限指令,使用时根据实际情况在对应的按钮加上判断即可
```html
新增
删除
```
:::
## 静态表格
设置`datagrid`将组建转化为静态表格,即不包含增删改查API的可编辑表格,不分页。
::: snippet 基本参数和基础用法相同
```html
```
:::
## API
## Attribute 属性
参数|说明|类型|可选值|默认值
-|-|-|-|-
schema | JSON Schema配置项列表 | Array | - | []
## Schema 参数
参数|说明|类型|可选值|默认值
-|-|-|-|-
filter | 搜索表单,false表示不显示,Object表示Schema | Object, Boolean | - | false
action | 操作栏显示状态 | Boolean | - | true
table | 表格,false表示不显示,Object表示Schema | Object, Boolean | - | false
operation | 操作列,false表示不显示,Object表示操作栏配置 | Object, Boolean | - | {}
pagination | 分页器,false表示不显示,Object表示分页器配置 | Object, Boolean | - | {}
form | 表单,false表示不显示,Object表示Schema | Object, Boolean | - | false
action | 表单 | Boolean | - | true
selection | 可选择 | Boolean | - | true