diff --git a/packages/amis-editor/src/plugin/Form/InputTable.tsx b/packages/amis-editor/src/plugin/Form/InputTable.tsx index 843144473..422c6df92 100644 --- a/packages/amis-editor/src/plugin/Form/InputTable.tsx +++ b/packages/amis-editor/src/plugin/Form/InputTable.tsx @@ -1,22 +1,23 @@ import React from 'react'; import {resolveVariable, Button} from 'amis'; -import flatten from 'lodash/flatten'; -import {defaultValue, getI18nEnabled, getSchemaTpl} from 'amis-editor-core'; +import {defaultValue, getSchemaTpl, RendererPluginAction, tipedLabel, getI18nEnabled} from 'amis-editor-core'; import {registerEditorPlugin} from 'amis-editor-core'; import { BaseEventContext, BasePlugin, - BasicSubRenderInfo, InsertEventContext, PluginEvent, - RendererEventContext, ScaffoldForm, - SubRendererInfo, - RegionConfig + RegionConfig, + RendererPluginEvent } from 'amis-editor-core'; import {setVariable} from 'amis-core'; import {repeatArray} from 'amis-editor-core'; import {mockValue} from 'amis-editor-core'; +import {getEnv} from 'mobx-state-tree'; +import {ValidatorTag} from '../../validator'; +import {getEventControlConfig} from '../../renderer/event-control/helper'; +import { cloneDeep } from 'lodash'; export class TableControlPlugin extends BasePlugin { // 关联渲染器名字 @@ -80,7 +81,7 @@ export class TableControlPlugin extends BasePlugin { get scaffoldForm(): ScaffoldForm { const i18nEnabled = getI18nEnabled(); return { - title: '快速构建表格', + title: '快速构建表格编辑框', body: [ { name: 'columns', @@ -103,7 +104,7 @@ export class TableControlPlugin extends BasePlugin { { type: 'select', name: 'type', - placeholder: '类型', + placeholder: '展示类型', value: 'text', options: [ { @@ -122,17 +123,13 @@ export class TableControlPlugin extends BasePlugin { value: 'date', label: '日期' }, - // { - // value: 'datetime', - // label: '日期时间' - // }, - // { - // value: 'time', - // label: '时间' - // }, { - value: 'progress', - label: '进度' + value: 'datetime', + label: '日期时间' + }, + { + value: 'time', + label: '时间' }, { value: 'status', @@ -141,232 +138,701 @@ export class TableControlPlugin extends BasePlugin { { value: 'mapping', label: '映射' + } + ] + }, + { + type: 'select', + name: 'quickEdit.type', + placeholder: '编辑类型', + value: 'input-text', + options: [ + { + value: 'input-text', + label: '文本框' }, { - value: 'operation', - label: '操作栏' + value: 'input-number', + label: '数字框' + }, + { + value: 'select', + label: '选择框' + }, + { + value: 'input-color', + label: '颜色选择框' + }, + { + value: 'checkboxes', + label: '多选框' + }, + { + value: 'radios', + label: '单选框' + }, + { + value: 'input-date', + label: '日期' + }, + { + value: 'input-date-range', + label: '日期范围' + }, + { + value: 'switch', + label: '开关' + }, + { + value: 'nested-select', + label: '级联选择器' + }, + { + value: 'city-select', + label: '城市选择器' + }, + { + value: 'tree-select', + label: '树下拉框' } ] } ] } ], + pipeOut: (schema: any) => { + const columns = cloneDeep(schema.columns || []); + const rawColumns: any = []; + columns.forEach((column: any) => { + const rawColumn = { + ...column, + type: column.type, + quickEdit: { + type: column.quickEdit.type + } + }; + rawColumns.push(rawColumn); + }); + schema.columns = rawColumns; + return {...schema}; + }, canRebuild: true }; } - panelTitle = '表格编辑'; - panelBodyCreator = (context: BaseEventContext) => { - const isCRUDBody = context.schema.type === 'crud'; - const i18nEnabled = getI18nEnabled(); + notRenderFormZone = true; + panelJustify = true; + panelTitle = '表格编辑'; + + events: RendererPluginEvent[] = [ + // { + // eventName: 'add', + // eventLabel: '添加行', + // description: '点击左下角添加按钮 或 某一行右侧操作栏添加按钮时触发', + // dataSchema: [ + // { + // type: 'object', + // properties: { + // 'event.data.value': { + // type: 'array', + // title: '表格数据' + // } + // } + // } + // ] + // }, + // { + // eventName: 'addConfirm', + // eventLabel: '确认添加', + // description: '开启needConfirm,点击添加按钮,填入数据后点击“保存”按钮后触发', + // dataSchema: [ + // { + // type: 'object', + // properties: { + // 'event.data.value': { + // type: 'array', + // title: '表格数据' + // }, + // 'event.data.item': { + // type: 'object', + // title: '添加项数据' + // }, + // 'event.data.index': { + // type: 'number', + // title: '添加项的行索引' + // } + // } + // } + // ] + // }, + // { + // eventName: 'addSuccess', + // eventLabel: '添加成功', + // description: '开启needConfirm并且配置addApi,点击“保存”后调用接口成功时触发', + // dataSchema: [ + // { + // type: 'object', + // properties: { + // 'event.data.value': { + // type: 'array', + // title: '表格数据' + // }, + // 'event.data.item': { + // type: 'object', + // title: '添加项数据' + // }, + // 'event.data.index': { + // type: 'number', + // title: '添加项所在的行索引' + // } + // } + // } + // ] + // }, + // { + // eventName: 'addFail', + // eventLabel: '添加失败', + // description: '开启needConfirm并且配置addApi,点击“保存”后调用接口失败时触发', + // dataSchema: [ + // { + // type: 'object', + // properties: { + // 'event.data.value': { + // type: 'array', + // title: '表格数据' + // }, + // 'event.data.item': { + // type: 'object', + // title: '添加项数据' + // }, + // 'event.data.index': { + // type: 'number', + // title: '添加项所在的行索引' + // }, + // 'event.data.error': { + // type: 'object', + // title: 'addApi请求失败后接口返回的错误信息' + // } + // } + // } + // ] + // }, + // { + // eventName: 'edit', + // eventLabel: '编辑行', + // description: '点击某一行右侧操作栏“编辑”按钮时触发', + // dataSchema: [ + // { + // type: 'object', + // properties: { + // 'event.data.value': { + // type: 'array', + // title: '表格数据' + // }, + // 'event.data.item': { + // type: 'object', + // title: '编辑项数据' + // }, + // 'event.data.index': { + // type: 'number', + // title: '编辑项所在的行索引' + // } + // } + // } + // ] + // }, + // { + // eventName: 'editConfirm', + // eventLabel: '编辑确认', + // description: '开启needConfirm,点击“编辑”按钮,填入数据后点击“保存”按钮后触发', + // dataSchema: [ + // { + // type: 'object', + // properties: { + // 'event.data.value': { + // type: 'array', + // title: '表格数据' + // }, + // 'event.data.item': { + // type: 'object', + // title: '编辑项数据' + // }, + // 'event.data.index': { + // type: 'number', + // title: '编辑项所在的行索引' + // } + // } + // } + // ] + // }, + // { + // eventName: 'editSuccess', + // eventLabel: '编辑成功', + // description: '开启needConfirm并且配置updateApi,点击“保存”后调用接口成功时触发', + // dataSchema: [ + // { + // type: 'object', + // properties: { + // 'event.data.value': { + // type: 'array', + // title: '表格数据' + // }, + // 'event.data.item': { + // type: 'object', + // title: '编辑项数据' + // }, + // 'event.data.index': { + // type: 'number', + // title: '编辑项所在的行索引' + // } + // } + // } + // ] + // }, + // { + // eventName: 'editFail', + // eventLabel: '编辑失败', + // description: '开启needConfirm并且配置updateApi,点击“保存”后调用接口失败时触发', + // dataSchema: [ + // { + // type: 'object', + // properties: { + // 'event.data.value': { + // type: 'array', + // title: '表格数据' + // }, + // 'event.data.item': { + // type: 'object', + // title: '编辑项数据' + // }, + // 'event.data.index': { + // type: 'number', + // title: '编辑项所在的行索引' + // }, + // 'event.data.error': { + // type: 'object', + // title: 'updateApi请求错误后返回的错误信息' + // } + // } + // } + // ] + // }, + // { + // eventName: 'delete', + // eventLabel: '删除行', + // description: '点击某一行右侧操作栏“删除”按钮时触发', + // dataSchema: [ + // { + // type: 'object', + // properties: { + // 'event.data.value': { + // type: 'array', + // title: '表格数据' + // }, + // 'event.data.item': { + // type: 'object', + // title: '删除项数据' + // }, + // 'event.data.index': { + // type: 'object', + // title: '删除项所在的行索引' + // } + // } + // } + // ] + // }, + // { + // eventName: 'deleteSuccess', + // eventLabel: '删除成功', + // description: '配置了deleteApi,调用接口成功时触发', + // dataSchema: [ + // { + // type: 'object', + // properties: { + // 'event.data.value': { + // type: 'array', + // title: '表格数据' + // }, + // 'event.data.item': { + // type: 'object', + // title: '删除项数据' + // }, + // 'event.data.index': { + // type: 'object', + // title: '删除项所在的行索引' + // } + // } + // } + // ] + // }, + // { + // eventName: 'deleteFail', + // eventLabel: '删除失败', + // description: '配置了deleteApi,调用接口失败时触发', + // dataSchema: [ + // { + // type: 'object', + // properties: { + // 'event.data.value': { + // type: 'array', + // title: '表格数据' + // }, + // 'event.data.item': { + // type: 'object', + // title: '编辑项数据' + // }, + // 'event.data.index': { + // type: 'object', + // title: '编辑项所在的行索引' + // } + // } + // } + // ] + // }, + // { + // eventName: 'change', + // eventLabel: '值变化', + // description: '组件数据发生改变时触发', + // dataSchema: [ + // { + // type: 'object', + // properties: { + // 'event.data.value': { + // type: 'array', + // title: '表格数据' + // } + // } + // } + // ] + // } + ]; + + actions: RendererPluginAction[] = [ + // { + // actionType: 'addItem', + // actionLabel: '新增', + // description: '新增单行数据' + // }, + // { + // actionType: 'deleteItem', + // actionLabel: '删除', + // description: '删除单行数据' + // }, + // { + // actionType: 'clear', + // actionLabel: '清空', + // description: '清除组件数据' + // }, + // { + // actionType: 'reset', + // actionLabel: '重置', + // description: '将值重置为resetValue,若没有配置resetValue,则清空' + // }, + // { + // actionType: 'setValue', + // actionLabel: '赋值', + // description: '触发表格数据更新' + // }, + // { + // actionType: 'delete', + // actionLabel: '删除', + // description: '删除某行的数据' + // } + ]; + + panelBodyCreator = (context: BaseEventContext) => { return getSchemaTpl('tabs', [ { - title: '常规', - body: flatten([ - // { - // children: ( - //