feat(advanced): 优化高级表格组件功能并添加演示页面

- 将 CuteDragTable 和 CuteSimpleTable 的 pageProps 设置为非必填
- 移除 onPageChange 中的 console.log 调试代码并规范化事件发射
- 规范化 order-change 事件的参数传递格式
- 为 CuteEditTable 的输入组件添加宽度样式以改善显示效果
- 在 CuteEditTable 中添加 resetField 方法用于表单重置联动
- 在 CuteRichTextEditor 中添加 resetField 方法的 input 事件发射
- 新增 CuteDragTableDemo、CuteEditTableDemo 和 CuteSimpleTableDemo 演示页面
- 在组件演示主页中添加高级组件的折叠面板展示
This commit is contained in:
2026-02-05 09:37:17 +08:00
parent 3d5b9083d9
commit 166fafab9a
10 changed files with 437 additions and 223 deletions
@@ -0,0 +1,93 @@
<template>
<div>
<h4>何时使用</h4>
<ul class="description">
<li>表单中出现可编辑列表时使用,目前限定在普通表格,不包含可编辑展开表格、可编辑树表等</li>
<li>在使用过程中有任何问题,咨询 @Odboy(前端)</li>
</ul>
<h4>基础用法</h4>
<cute-edit-table v-model="dataSource" primary-key="id" :schema="schema" />
<h4>与CuteFormDrawer集成 <el-button type="text" @click="showFormDrawer">显示抽屉</el-button></h4>
<cute-form-drawer ref="formDrawer" title="与CuteFormDrawer集成" :model="form">
<el-form-item label="可编辑表格" prop="editValues" label-width="100px">
<cute-edit-table v-model="form.editValues" primary-key="id" :schema="schema" />
</el-form-item>
</cute-form-drawer>
<h4>API</h4>
<el-table :data="apiData">
<el-table-column prop="name" label="参数" width="220" />
<el-table-column prop="remark" label="说明" width="450" />
<el-table-column prop="type" label="类型" />
<el-table-column prop="defaultValue" label="默认值" />
<el-table-column prop="required" label="是否必填" />
</el-table>
<h4>Schema属性</h4>
<el-table :data="schemaData">
<el-table-column prop="name" label="属性名" width="220" />
<el-table-column prop="remark" label="说明" width="450" />
<el-table-column prop="type" label="类型" />
<el-table-column prop="required" label="是否必填" />
</el-table>
</div>
</template>
<script>
import CuteEditTable from '@/views/components/advanced/CuteEditTable.vue'
import CuteFormDrawer from '@/views/components/advanced/CuteFormDrawer.vue'
export default {
name: 'CuteEditTableDemo',
components: { CuteFormDrawer, CuteEditTable },
data() {
return {
schema: [
{ name: 'name', title: '姓名', type: 'input' },
{ name: 'sex', title: '性别', type: 'select', dataSource: [{ label: '男', value: 'nn' }, { label: '女', value: 'mm' }] },
{ name: 'description', title: '描述', type: 'input' }
],
dataSource: [
{ id: 1, name: '小明', sex: 'mm', description: '小明牛P' },
{ id: 4, name: '小绿', sex: 'nn', description: '小绿牛P' },
{ id: 5, name: '小黄', sex: 'nn', description: '小黄牛P' },
{ id: 6, name: '小紫', sex: 'nn', description: '小紫牛P' },
{ id: 17, name: '小郑', sex: 'mm', description: '小郑牛P' },
{ id: 18, name: '小王', sex: 'nn', description: '小王牛P' }
],
form: {
editValues: [
{ id: 1, name: '小明', sex: 'mm', description: '小明牛P' },
{ id: 4, name: '小绿', sex: 'nn', description: '小绿牛P' },
{ id: 5, name: '小黄', sex: 'nn', description: '小黄牛P' },
{ id: 6, name: '小紫', sex: 'nn', description: '小紫牛P' },
{ id: 17, name: '小郑', sex: 'mm', description: '小郑牛P' },
{ id: 18, name: '小王', sex: 'nn', description: '小王牛P' }
]
},
apiData: [
{ name: 'value', remark: '绑定的值', type: 'array', defaultValue: '-', required: '否' },
{ name: 'primary-key', remark: '对象中的哪个字段设置为主键', type: 'string', defaultValue: 'id', required: '是' },
{ name: 'height', remark: '表格高度', type: 'number', defaultValue: 'height', required: '否' },
{ name: 'schema', remark: '表格定义', type: 'array', defaultValue: '[]', required: '是' }
],
schemaData: [
{ name: 'name', remark: '表单项名称', type: 'string', defaultValue: '-', required: '是' },
{ name: 'title', remark: '表单项标题', type: 'string', defaultValue: '-', required: '是' },
{ name: 'type', remark: '表单项类型。input 输入框 | select 单选框', type: 'string', defaultValue: '-', required: '是' },
{ name: 'dataSource', remark: '当type=select时必填', type: 'array', defaultValue: '[]', required: '否' }
]
}
},
methods: {
showFormDrawer() {
this.$refs.formDrawer.show()
}
}
}
</script>
<style lang="scss" scoped>
ul {
padding-left: 20px;
}
.description > li{
font-size: 12px;
}
</style>