feat(client): improve collection-manager module
This commit is contained in:
parent
77d9228ea2
commit
702c391bc2
@ -32,7 +32,7 @@ export const RemoteCollectionManagerProvider = (props: any) => {
|
|||||||
resource: 'collections',
|
resource: 'collections',
|
||||||
action: 'list',
|
action: 'list',
|
||||||
params: {
|
params: {
|
||||||
perPage: 999,
|
pageSize: 999,
|
||||||
appends: ['fields', 'fields.uiSchema'],
|
appends: ['fields', 'fields.uiSchema'],
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -3,13 +3,11 @@ import { ISchema } from '@formily/react';
|
|||||||
import { uid } from '@formily/shared';
|
import { uid } from '@formily/shared';
|
||||||
import { Button, Dropdown, Menu } from 'antd';
|
import { Button, Dropdown, Menu } from 'antd';
|
||||||
import React, { useState } from 'react';
|
import React, { useState } from 'react';
|
||||||
import { useAPIClient } from '../../api-client';
|
|
||||||
import { useRecord } from '../../record-provider';
|
|
||||||
import { ActionContext, SchemaComponent } from '../../schema-component';
|
import { ActionContext, SchemaComponent } from '../../schema-component';
|
||||||
import { useCollectionManager } from '../hooks';
|
import { useCollectionManager } from '../hooks';
|
||||||
import { IField } from '../interfaces/types';
|
import { IField } from '../interfaces/types';
|
||||||
|
|
||||||
const getSchema = (schema: IField, useAction): ISchema => {
|
const getSchema = (schema: IField): ISchema => {
|
||||||
if (!schema) {
|
if (!schema) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -26,7 +24,7 @@ const getSchema = (schema: IField, useAction): ISchema => {
|
|||||||
name: `f_${uid()}`,
|
name: `f_${uid()}`,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
title: 'Drawer Title',
|
title: '{{ t("Add field") }}',
|
||||||
properties: {
|
properties: {
|
||||||
type: {
|
type: {
|
||||||
'x-component': 'CollectionField',
|
'x-component': 'CollectionField',
|
||||||
@ -34,7 +32,8 @@ const getSchema = (schema: IField, useAction): ISchema => {
|
|||||||
},
|
},
|
||||||
'uiSchema.title': {
|
'uiSchema.title': {
|
||||||
type: 'number',
|
type: 'number',
|
||||||
title: '字段名称',
|
title: '{{ t("Field display name") }}',
|
||||||
|
required: true,
|
||||||
'x-component': 'Input',
|
'x-component': 'Input',
|
||||||
'x-decorator': 'FormItem',
|
'x-decorator': 'FormItem',
|
||||||
},
|
},
|
||||||
@ -49,18 +48,18 @@ const getSchema = (schema: IField, useAction): ISchema => {
|
|||||||
'x-component': 'Action.Drawer.Footer',
|
'x-component': 'Action.Drawer.Footer',
|
||||||
properties: {
|
properties: {
|
||||||
action1: {
|
action1: {
|
||||||
title: 'Cancel',
|
title: '{{ t("Cancel") }}',
|
||||||
'x-component': 'Action',
|
'x-component': 'Action',
|
||||||
'x-component-props': {
|
'x-component-props': {
|
||||||
useAction: '{{ useCancelAction }}',
|
useAction: '{{ useCancelAction }}',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
action2: {
|
action2: {
|
||||||
title: 'Submit',
|
title: '{{ t("Submit") }}',
|
||||||
'x-component': 'Action',
|
'x-component': 'Action',
|
||||||
'x-component-props': {
|
'x-component-props': {
|
||||||
type: 'primary',
|
type: 'primary',
|
||||||
useAction,
|
useAction: '{{ useCreateActionAndRefreshCM }}',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -81,7 +80,7 @@ export const AddFieldAction = () => {
|
|||||||
overlay={
|
overlay={
|
||||||
<Menu
|
<Menu
|
||||||
onClick={(info) => {
|
onClick={(info) => {
|
||||||
const schema = getSchema(getInterface(info.key), '{{ useCreateActionAndRefreshCM }}');
|
const schema = getSchema(getInterface(info.key));
|
||||||
setSchema(schema);
|
setSchema(schema);
|
||||||
setVisible(true);
|
setVisible(true);
|
||||||
}}
|
}}
|
||||||
@ -102,35 +101,3 @@ export const AddFieldAction = () => {
|
|||||||
</ActionContext.Provider>
|
</ActionContext.Provider>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const EditFieldAction = (props) => {
|
|
||||||
const record = useRecord();
|
|
||||||
const { getInterface } = useCollectionManager();
|
|
||||||
const [visible, setVisible] = useState(false);
|
|
||||||
const [schema, setSchema] = useState({});
|
|
||||||
const api = useAPIClient();
|
|
||||||
return (
|
|
||||||
<ActionContext.Provider value={{ visible, setVisible }}>
|
|
||||||
<a
|
|
||||||
onClick={async () => {
|
|
||||||
const { data } = await api.resource('collections.fields', record.collectionName).get({
|
|
||||||
filterByTk: record.name,
|
|
||||||
appends: ['uiSchema'],
|
|
||||||
});
|
|
||||||
const schema = getSchema(
|
|
||||||
{
|
|
||||||
...getInterface(record.interface),
|
|
||||||
default: data?.data,
|
|
||||||
},
|
|
||||||
'{{ useUpdateActionAndRefreshCM }}',
|
|
||||||
);
|
|
||||||
setSchema(schema);
|
|
||||||
setVisible(true);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
编辑
|
|
||||||
</a>
|
|
||||||
<SchemaComponent schema={schema} />
|
|
||||||
</ActionContext.Provider>
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
@ -0,0 +1,103 @@
|
|||||||
|
import { ISchema } from '@formily/react';
|
||||||
|
import { uid } from '@formily/shared';
|
||||||
|
import React, { useState } from 'react';
|
||||||
|
import { useTranslation } from 'react-i18next';
|
||||||
|
import { useAPIClient } from '../../api-client';
|
||||||
|
import { useRecord } from '../../record-provider';
|
||||||
|
import { ActionContext, SchemaComponent } from '../../schema-component';
|
||||||
|
import { useCollectionManager } from '../hooks';
|
||||||
|
import { IField } from '../interfaces/types';
|
||||||
|
|
||||||
|
const getSchema = (schema: IField): ISchema => {
|
||||||
|
if (!schema) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
type: 'object',
|
||||||
|
properties: {
|
||||||
|
[uid()]: {
|
||||||
|
type: 'void',
|
||||||
|
'x-component': 'Action.Drawer',
|
||||||
|
'x-decorator': 'Form',
|
||||||
|
'x-decorator-props': {
|
||||||
|
initialValue: {
|
||||||
|
...schema.default,
|
||||||
|
name: `f_${uid()}`,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
title: '{{ t("Edit field") }}',
|
||||||
|
properties: {
|
||||||
|
type: {
|
||||||
|
'x-component': 'CollectionField',
|
||||||
|
'x-decorator': 'FormItem',
|
||||||
|
},
|
||||||
|
'uiSchema.title': {
|
||||||
|
type: 'number',
|
||||||
|
title: '{{ t("Field display name") }}',
|
||||||
|
required: true,
|
||||||
|
'x-component': 'Input',
|
||||||
|
'x-decorator': 'FormItem',
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
'x-component': 'CollectionField',
|
||||||
|
'x-decorator': 'FormItem',
|
||||||
|
'x-disabled': true,
|
||||||
|
},
|
||||||
|
// @ts-ignore
|
||||||
|
...schema.properties,
|
||||||
|
footer: {
|
||||||
|
type: 'void',
|
||||||
|
'x-component': 'Action.Drawer.Footer',
|
||||||
|
properties: {
|
||||||
|
action1: {
|
||||||
|
title: '{{ t("Cancel") }}',
|
||||||
|
'x-component': 'Action',
|
||||||
|
'x-component-props': {
|
||||||
|
useAction: '{{ useCancelAction }}',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
action2: {
|
||||||
|
title: '{{ t("Submit") }}',
|
||||||
|
'x-component': 'Action',
|
||||||
|
'x-component-props': {
|
||||||
|
type: 'primary',
|
||||||
|
useAction: '{{ useUpdateActionAndRefreshCM }}',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export const EditFieldAction = (props) => {
|
||||||
|
const record = useRecord();
|
||||||
|
const { getInterface } = useCollectionManager();
|
||||||
|
const [visible, setVisible] = useState(false);
|
||||||
|
const [schema, setSchema] = useState({});
|
||||||
|
const api = useAPIClient();
|
||||||
|
const { t } = useTranslation();
|
||||||
|
return (
|
||||||
|
<ActionContext.Provider value={{ visible, setVisible }}>
|
||||||
|
<a
|
||||||
|
onClick={async () => {
|
||||||
|
const { data } = await api.resource('collections.fields', record.collectionName).get({
|
||||||
|
filterByTk: record.name,
|
||||||
|
appends: ['uiSchema'],
|
||||||
|
});
|
||||||
|
const schema = getSchema({
|
||||||
|
...getInterface(record.interface),
|
||||||
|
default: data?.data,
|
||||||
|
});
|
||||||
|
setSchema(schema);
|
||||||
|
setVisible(true);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{t('Edit')}
|
||||||
|
</a>
|
||||||
|
<SchemaComponent schema={schema} />
|
||||||
|
</ActionContext.Provider>
|
||||||
|
);
|
||||||
|
};
|
@ -1,3 +1,4 @@
|
|||||||
export * from './AddFieldAction';
|
export * from './AddFieldAction';
|
||||||
export * from './ConfigurationTable';
|
export * from './ConfigurationTable';
|
||||||
|
export * from './EditFieldAction';
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
import { ISchema } from '@formily/react';
|
import { ISchema } from '@formily/react';
|
||||||
|
import { CollectionOptions } from '../../types';
|
||||||
|
|
||||||
const collection = {
|
const collection: CollectionOptions = {
|
||||||
name: 'fields',
|
name: 'fields',
|
||||||
fields: [
|
fields: [
|
||||||
{
|
{
|
||||||
@ -8,7 +9,7 @@ const collection = {
|
|||||||
name: 'type',
|
name: 'type',
|
||||||
interface: 'input',
|
interface: 'input',
|
||||||
uiSchema: {
|
uiSchema: {
|
||||||
title: '存储类型',
|
title: '{{ t("Storage type") }}',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
'x-component': 'Select',
|
'x-component': 'Select',
|
||||||
enum: [
|
enum: [
|
||||||
@ -18,14 +19,14 @@ const collection = {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
required: true,
|
required: true,
|
||||||
} as ISchema,
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'string',
|
type: 'string',
|
||||||
name: 'interface',
|
name: 'interface',
|
||||||
interface: 'input',
|
interface: 'input',
|
||||||
uiSchema: {
|
uiSchema: {
|
||||||
title: '字段类型',
|
title: '{{ t("Field interface") }}',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
'x-component': 'Input',
|
'x-component': 'Input',
|
||||||
},
|
},
|
||||||
@ -35,22 +36,21 @@ const collection = {
|
|||||||
name: 'title',
|
name: 'title',
|
||||||
interface: 'input',
|
interface: 'input',
|
||||||
uiSchema: {
|
uiSchema: {
|
||||||
title: '字段名称',
|
title: '{{ t("Field display name") }}',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
'x-component': 'Input',
|
'x-component': 'Input',
|
||||||
required: true,
|
required: true,
|
||||||
} as ISchema,
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'string',
|
type: 'string',
|
||||||
name: 'name',
|
name: 'name',
|
||||||
interface: 'input',
|
interface: 'input',
|
||||||
uiSchema: {
|
uiSchema: {
|
||||||
title: '字段标识',
|
title: '{{ t("Field name") }}',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
'x-component': 'Input',
|
'x-component': 'Input',
|
||||||
description: '使用英文',
|
},
|
||||||
} as ISchema,
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
@ -69,7 +69,7 @@ export const collectionFieldSchema: ISchema = {
|
|||||||
resource: 'collections.fields',
|
resource: 'collections.fields',
|
||||||
action: 'list',
|
action: 'list',
|
||||||
params: {
|
params: {
|
||||||
pageSize: 5,
|
pageSize: 50,
|
||||||
filter: {},
|
filter: {},
|
||||||
sort: ['sort'],
|
sort: ['sort'],
|
||||||
appends: ['uiSchema'],
|
appends: ['uiSchema'],
|
||||||
@ -84,15 +84,20 @@ export const collectionFieldSchema: ISchema = {
|
|||||||
actions: {
|
actions: {
|
||||||
type: 'void',
|
type: 'void',
|
||||||
'x-component': 'ActionBar',
|
'x-component': 'ActionBar',
|
||||||
|
'x-component-props': {
|
||||||
|
style: {
|
||||||
|
marginBottom: 16,
|
||||||
|
},
|
||||||
|
},
|
||||||
properties: {
|
properties: {
|
||||||
delete: {
|
delete: {
|
||||||
type: 'void',
|
type: 'void',
|
||||||
title: '删除',
|
title: '{{ t("Delete") }}',
|
||||||
'x-component': 'Action',
|
'x-component': 'Action',
|
||||||
},
|
},
|
||||||
create: {
|
create: {
|
||||||
type: 'void',
|
type: 'void',
|
||||||
title: '创建',
|
title: '{{ t("Add new") }}',
|
||||||
'x-component': 'AddFieldAction',
|
'x-component': 'AddFieldAction',
|
||||||
'x-component-props': {
|
'x-component-props': {
|
||||||
type: 'primary',
|
type: 'primary',
|
||||||
@ -114,7 +119,7 @@ export const collectionFieldSchema: ISchema = {
|
|||||||
properties: {
|
properties: {
|
||||||
column1: {
|
column1: {
|
||||||
type: 'void',
|
type: 'void',
|
||||||
title: '字段名称',
|
title: '{{ t("Field display name") }}',
|
||||||
'x-component': 'VoidTable.Column',
|
'x-component': 'VoidTable.Column',
|
||||||
properties: {
|
properties: {
|
||||||
'uiSchema.title': {
|
'uiSchema.title': {
|
||||||
@ -130,7 +135,6 @@ export const collectionFieldSchema: ISchema = {
|
|||||||
'x-component': 'VoidTable.Column',
|
'x-component': 'VoidTable.Column',
|
||||||
properties: {
|
properties: {
|
||||||
name: {
|
name: {
|
||||||
type: 'string',
|
|
||||||
'x-component': 'CollectionField',
|
'x-component': 'CollectionField',
|
||||||
'x-read-pretty': true,
|
'x-read-pretty': true,
|
||||||
},
|
},
|
||||||
@ -142,7 +146,6 @@ export const collectionFieldSchema: ISchema = {
|
|||||||
'x-component': 'VoidTable.Column',
|
'x-component': 'VoidTable.Column',
|
||||||
properties: {
|
properties: {
|
||||||
interface: {
|
interface: {
|
||||||
type: 'string',
|
|
||||||
'x-component': 'CollectionField',
|
'x-component': 'CollectionField',
|
||||||
'x-read-pretty': true,
|
'x-read-pretty': true,
|
||||||
},
|
},
|
||||||
@ -150,7 +153,7 @@ export const collectionFieldSchema: ISchema = {
|
|||||||
},
|
},
|
||||||
column4: {
|
column4: {
|
||||||
type: 'void',
|
type: 'void',
|
||||||
title: 'Actions',
|
title: '{{ t("Actions") }}',
|
||||||
'x-component': 'VoidTable.Column',
|
'x-component': 'VoidTable.Column',
|
||||||
properties: {
|
properties: {
|
||||||
actions: {
|
actions: {
|
||||||
@ -162,7 +165,7 @@ export const collectionFieldSchema: ISchema = {
|
|||||||
properties: {
|
properties: {
|
||||||
update: {
|
update: {
|
||||||
type: 'void',
|
type: 'void',
|
||||||
title: '编辑',
|
title: '{{ t("Edit") }}',
|
||||||
'x-component': 'EditFieldAction',
|
'x-component': 'EditFieldAction',
|
||||||
'x-component-props': {
|
'x-component-props': {
|
||||||
type: 'primary',
|
type: 'primary',
|
||||||
@ -170,7 +173,7 @@ export const collectionFieldSchema: ISchema = {
|
|||||||
},
|
},
|
||||||
delete: {
|
delete: {
|
||||||
type: 'void',
|
type: 'void',
|
||||||
title: '删除',
|
title: '{{ t("Delete") }}',
|
||||||
'x-component': 'Action.Link',
|
'x-component': 'Action.Link',
|
||||||
'x-component-props': {
|
'x-component-props': {
|
||||||
useAction: '{{ useDestroyActionAndRefreshCM }}',
|
useAction: '{{ useDestroyActionAndRefreshCM }}',
|
||||||
|
@ -12,7 +12,7 @@ const collection: CollectionOptions = {
|
|||||||
name: 'title',
|
name: 'title',
|
||||||
interface: 'input',
|
interface: 'input',
|
||||||
uiSchema: {
|
uiSchema: {
|
||||||
title: '数据表名称',
|
title: '{{ t("Collection display name") }}',
|
||||||
type: 'number',
|
type: 'number',
|
||||||
'x-component': 'Input',
|
'x-component': 'Input',
|
||||||
required: true,
|
required: true,
|
||||||
@ -23,10 +23,10 @@ const collection: CollectionOptions = {
|
|||||||
name: 'name',
|
name: 'name',
|
||||||
interface: 'input',
|
interface: 'input',
|
||||||
uiSchema: {
|
uiSchema: {
|
||||||
title: '数据表标识',
|
title: '{{ t("Collection name") }}',
|
||||||
type: 'string',
|
type: 'string',
|
||||||
'x-component': 'Input',
|
'x-component': 'Input',
|
||||||
description: '使用英文',
|
// description: '使用英文',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -54,7 +54,7 @@ export const collectionSchema: ISchema = {
|
|||||||
resource: 'collections',
|
resource: 'collections',
|
||||||
action: 'list',
|
action: 'list',
|
||||||
params: {
|
params: {
|
||||||
pageSize: 5,
|
pageSize: 50,
|
||||||
filter: {},
|
filter: {},
|
||||||
sort: ['sort'],
|
sort: ['sort'],
|
||||||
appends: [],
|
appends: [],
|
||||||
@ -69,15 +69,20 @@ export const collectionSchema: ISchema = {
|
|||||||
actions: {
|
actions: {
|
||||||
type: 'void',
|
type: 'void',
|
||||||
'x-component': 'ActionBar',
|
'x-component': 'ActionBar',
|
||||||
|
'x-component-props': {
|
||||||
|
style: {
|
||||||
|
marginBottom: 16,
|
||||||
|
},
|
||||||
|
},
|
||||||
properties: {
|
properties: {
|
||||||
delete: {
|
delete: {
|
||||||
type: 'void',
|
type: 'void',
|
||||||
title: '删除',
|
title: '{{ t("Delete") }}',
|
||||||
'x-component': 'Action',
|
'x-component': 'Action',
|
||||||
},
|
},
|
||||||
create: {
|
create: {
|
||||||
type: 'void',
|
type: 'void',
|
||||||
title: '创建',
|
title: '{{ t("Create collection") }}',
|
||||||
'x-component': 'Action',
|
'x-component': 'Action',
|
||||||
'x-component-props': {
|
'x-component-props': {
|
||||||
type: 'primary',
|
type: 'primary',
|
||||||
@ -85,9 +90,9 @@ export const collectionSchema: ISchema = {
|
|||||||
properties: {
|
properties: {
|
||||||
drawer: {
|
drawer: {
|
||||||
type: 'void',
|
type: 'void',
|
||||||
|
title: '{{ t("Create collection") }}',
|
||||||
'x-component': 'Action.Drawer',
|
'x-component': 'Action.Drawer',
|
||||||
'x-decorator': 'Form',
|
'x-decorator': 'Form',
|
||||||
title: 'Drawer Title',
|
|
||||||
properties: {
|
properties: {
|
||||||
title: {
|
title: {
|
||||||
'x-component': 'CollectionField',
|
'x-component': 'CollectionField',
|
||||||
@ -102,14 +107,14 @@ export const collectionSchema: ISchema = {
|
|||||||
'x-component': 'Action.Drawer.Footer',
|
'x-component': 'Action.Drawer.Footer',
|
||||||
properties: {
|
properties: {
|
||||||
action1: {
|
action1: {
|
||||||
title: 'Cancel',
|
title: '{{ t("Cancel") }}',
|
||||||
'x-component': 'Action',
|
'x-component': 'Action',
|
||||||
'x-component-props': {
|
'x-component-props': {
|
||||||
useAction: '{{ useCancelAction }}',
|
useAction: '{{ useCancelAction }}',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
action2: {
|
action2: {
|
||||||
title: 'Submit',
|
title: '{{ t("Submit") }}',
|
||||||
'x-component': 'Action',
|
'x-component': 'Action',
|
||||||
'x-component-props': {
|
'x-component-props': {
|
||||||
type: 'primary',
|
type: 'primary',
|
||||||
@ -124,7 +129,7 @@ export const collectionSchema: ISchema = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
table1: {
|
table: {
|
||||||
type: 'void',
|
type: 'void',
|
||||||
'x-uid': 'input',
|
'x-uid': 'input',
|
||||||
'x-component': 'VoidTable',
|
'x-component': 'VoidTable',
|
||||||
@ -142,7 +147,6 @@ export const collectionSchema: ISchema = {
|
|||||||
'x-component': 'VoidTable.Column',
|
'x-component': 'VoidTable.Column',
|
||||||
properties: {
|
properties: {
|
||||||
title: {
|
title: {
|
||||||
type: 'number',
|
|
||||||
'x-component': 'CollectionField',
|
'x-component': 'CollectionField',
|
||||||
'x-read-pretty': true,
|
'x-read-pretty': true,
|
||||||
},
|
},
|
||||||
@ -162,7 +166,7 @@ export const collectionSchema: ISchema = {
|
|||||||
},
|
},
|
||||||
column3: {
|
column3: {
|
||||||
type: 'void',
|
type: 'void',
|
||||||
title: 'Actions',
|
title: '{{ t("Actions") }}',
|
||||||
'x-component': 'VoidTable.Column',
|
'x-component': 'VoidTable.Column',
|
||||||
properties: {
|
properties: {
|
||||||
actions: {
|
actions: {
|
||||||
@ -174,14 +178,14 @@ export const collectionSchema: ISchema = {
|
|||||||
properties: {
|
properties: {
|
||||||
view: {
|
view: {
|
||||||
type: 'void',
|
type: 'void',
|
||||||
title: '配置字段',
|
title: '{{ t("Configure fields") }}',
|
||||||
'x-component': 'Action.Link',
|
'x-component': 'Action.Link',
|
||||||
'x-component-props': {},
|
'x-component-props': {},
|
||||||
properties: {
|
properties: {
|
||||||
drawer: {
|
drawer: {
|
||||||
type: 'void',
|
type: 'void',
|
||||||
'x-component': 'Action.Drawer',
|
'x-component': 'Action.Drawer',
|
||||||
title: 'Drawer Title',
|
title: '{{ t("Configure fields") }}',
|
||||||
properties: {
|
properties: {
|
||||||
collectionFieldSchema,
|
collectionFieldSchema,
|
||||||
},
|
},
|
||||||
@ -190,7 +194,7 @@ export const collectionSchema: ISchema = {
|
|||||||
},
|
},
|
||||||
update: {
|
update: {
|
||||||
type: 'void',
|
type: 'void',
|
||||||
title: '编辑',
|
title: '{{ t("Edit") }}',
|
||||||
'x-component': 'Action.Link',
|
'x-component': 'Action.Link',
|
||||||
'x-component-props': {
|
'x-component-props': {
|
||||||
type: 'primary',
|
type: 'primary',
|
||||||
@ -203,7 +207,7 @@ export const collectionSchema: ISchema = {
|
|||||||
'x-decorator-props': {
|
'x-decorator-props': {
|
||||||
useValues: '{{ useValuesFromRecord }}',
|
useValues: '{{ useValuesFromRecord }}',
|
||||||
},
|
},
|
||||||
title: 'Drawer Title',
|
title: '{{ t("Edit collection") }}',
|
||||||
properties: {
|
properties: {
|
||||||
title: {
|
title: {
|
||||||
'x-component': 'CollectionField',
|
'x-component': 'CollectionField',
|
||||||
@ -219,14 +223,14 @@ export const collectionSchema: ISchema = {
|
|||||||
'x-component': 'Action.Drawer.Footer',
|
'x-component': 'Action.Drawer.Footer',
|
||||||
properties: {
|
properties: {
|
||||||
action1: {
|
action1: {
|
||||||
title: 'Cancel',
|
title: '{{ t("Cancel") }}',
|
||||||
'x-component': 'Action',
|
'x-component': 'Action',
|
||||||
'x-component-props': {
|
'x-component-props': {
|
||||||
useAction: '{{ useCancelAction }}',
|
useAction: '{{ useCancelAction }}',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
action2: {
|
action2: {
|
||||||
title: 'Submit',
|
title: '{{ t("Submit") }}',
|
||||||
'x-component': 'Action',
|
'x-component': 'Action',
|
||||||
'x-component-props': {
|
'x-component-props': {
|
||||||
type: 'primary',
|
type: 'primary',
|
||||||
@ -241,7 +245,7 @@ export const collectionSchema: ISchema = {
|
|||||||
},
|
},
|
||||||
delete: {
|
delete: {
|
||||||
type: 'void',
|
type: 'void',
|
||||||
title: '删除',
|
title: '{{ t("Delete") }}',
|
||||||
'x-component': 'Action.Link',
|
'x-component': 'Action.Link',
|
||||||
'x-component-props': {
|
'x-component-props': {
|
||||||
useAction: '{{ useDestroyActionAndRefreshCM }}',
|
useAction: '{{ useDestroyActionAndRefreshCM }}',
|
||||||
|
@ -82,5 +82,5 @@ export const useDataSourceFromRAC = (options: any) => {
|
|||||||
|
|
||||||
export const useResourceContext = () => {
|
export const useResourceContext = () => {
|
||||||
const { type, resource, collection, association } = useContext(ResourceContext);
|
const { type, resource, collection, association } = useContext(ResourceContext);
|
||||||
return { type, resource, collection, association, targetKey: association?.targetKey || collection?.targetKey };
|
return { type, resource, collection, association, targetKey: association?.targetKey || collection?.targetKey || 'id' };
|
||||||
};
|
};
|
||||||
|
@ -73,6 +73,18 @@ export const useDestroyAction = () => {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const useBulkDestroyAction = () => {
|
||||||
|
const { refresh } = useResourceActionContext();
|
||||||
|
const { resource, targetKey } = useResourceContext();
|
||||||
|
const { [targetKey]: filterByTk } = useRecord();
|
||||||
|
return {
|
||||||
|
async run() {
|
||||||
|
await resource.destroy({ filterByTk });
|
||||||
|
refresh();
|
||||||
|
},
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
export const useValuesFromRecord = (options) => {
|
export const useValuesFromRecord = (options) => {
|
||||||
const record = useRecord();
|
const record = useRecord();
|
||||||
return useRequest(() => Promise.resolve({ data: record }), {
|
return useRequest(() => Promise.resolve({ data: record }), {
|
||||||
|
Loading…
Reference in New Issue
Block a user