mirror of
https://gitee.com/nocobase/nocobase.git
synced 2025-05-05 21:49:25 +08:00
chore: after success configure (#5374)
* chore: after success configure * fix: bug * refactor: locale * fix: bulk edit * fix: customize request * refactor: public form not suport after success configiration
This commit is contained in:
parent
a09e27fff9
commit
f7ff74d5f3
@ -224,7 +224,7 @@ export const useCreateActionProps = () => {
|
|||||||
return {
|
return {
|
||||||
async onClick() {
|
async onClick() {
|
||||||
const { onSuccess, skipValidator, triggerWorkflows } = actionSchema?.['x-action-settings'] ?? {};
|
const { onSuccess, skipValidator, triggerWorkflows } = actionSchema?.['x-action-settings'] ?? {};
|
||||||
|
const { manualClose, redirecting, redirectTo, successMessage, actionAfterSuccess } = onSuccess || {};
|
||||||
if (!skipValidator) {
|
if (!skipValidator) {
|
||||||
await form.submit();
|
await form.submit();
|
||||||
}
|
}
|
||||||
@ -242,46 +242,49 @@ export const useCreateActionProps = () => {
|
|||||||
: undefined,
|
: undefined,
|
||||||
updateAssociationValues,
|
updateAssociationValues,
|
||||||
});
|
});
|
||||||
setVisible?.(false);
|
if (actionAfterSuccess === 'previous' || (!actionAfterSuccess && redirecting !== true)) {
|
||||||
|
setVisible?.(false);
|
||||||
|
}
|
||||||
setSubmitted?.(true);
|
setSubmitted?.(true);
|
||||||
setFormValueChanged?.(false);
|
setFormValueChanged?.(false);
|
||||||
actionField.data.loading = false;
|
actionField.data.loading = false;
|
||||||
actionField.data.data = data;
|
actionField.data.data = data;
|
||||||
// __parent?.service?.refresh?.();
|
// __parent?.service?.refresh?.();
|
||||||
if (!onSuccess?.successMessage) {
|
if (!successMessage) {
|
||||||
message.success(t('Saved successfully'));
|
message.success(t('Saved successfully'));
|
||||||
await resetFormCorrectly(form);
|
await resetFormCorrectly(form);
|
||||||
if (onSuccess?.redirecting && onSuccess?.redirectTo) {
|
if (((redirecting && !actionAfterSuccess) || actionAfterSuccess === 'redirect') && redirectTo) {
|
||||||
if (isURL(onSuccess.redirectTo)) {
|
if (isURL(redirectTo)) {
|
||||||
window.location.href = onSuccess.redirectTo;
|
window.location.href = redirectTo;
|
||||||
} else {
|
} else {
|
||||||
navigate(onSuccess.redirectTo);
|
navigate(redirectTo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (onSuccess?.manualClose) {
|
if (manualClose) {
|
||||||
modal.success({
|
modal.success({
|
||||||
title: compile(onSuccess?.successMessage),
|
title: compile(successMessage),
|
||||||
onOk: async () => {
|
onOk: async () => {
|
||||||
await resetFormCorrectly(form);
|
await resetFormCorrectly(form);
|
||||||
if (onSuccess?.redirecting && onSuccess?.redirectTo) {
|
if (((redirecting && !actionAfterSuccess) || actionAfterSuccess === 'redirect') && redirectTo) {
|
||||||
if (isURL(onSuccess.redirectTo)) {
|
if (isURL(redirectTo)) {
|
||||||
window.location.href = onSuccess.redirectTo;
|
window.location.href = redirectTo;
|
||||||
} else {
|
} else {
|
||||||
navigate(onSuccess.redirectTo);
|
navigate(redirectTo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
message.success(compile(onSuccess?.successMessage));
|
message.success(compile(successMessage));
|
||||||
await resetFormCorrectly(form);
|
await resetFormCorrectly(form);
|
||||||
if (onSuccess?.redirecting && onSuccess?.redirectTo) {
|
if (((redirecting && !actionAfterSuccess) || actionAfterSuccess === 'redirect') && redirectTo) {
|
||||||
if (isURL(onSuccess.redirectTo)) {
|
if (isURL(redirectTo)) {
|
||||||
window.location.href = onSuccess.redirectTo;
|
window.location.href = redirectTo;
|
||||||
} else {
|
} else {
|
||||||
navigate(onSuccess.redirectTo);
|
navigate(redirectTo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -319,7 +322,7 @@ export const useAssociationCreateActionProps = () => {
|
|||||||
triggerWorkflows,
|
triggerWorkflows,
|
||||||
} = actionSchema?.['x-action-settings'] ?? {};
|
} = actionSchema?.['x-action-settings'] ?? {};
|
||||||
const addChild = fieldSchema?.['x-component-props']?.addChild;
|
const addChild = fieldSchema?.['x-component-props']?.addChild;
|
||||||
|
const { successMessage } = onSuccess || {};
|
||||||
const assignedValues = {};
|
const assignedValues = {};
|
||||||
const waitList = Object.keys(originalAssignedValues).map(async (key) => {
|
const waitList = Object.keys(originalAssignedValues).map(async (key) => {
|
||||||
const value = originalAssignedValues[key];
|
const value = originalAssignedValues[key];
|
||||||
@ -379,10 +382,10 @@ export const useAssociationCreateActionProps = () => {
|
|||||||
__parent?.service?.refresh?.();
|
__parent?.service?.refresh?.();
|
||||||
setVisible?.(false);
|
setVisible?.(false);
|
||||||
setSubmitted?.(true);
|
setSubmitted?.(true);
|
||||||
if (!onSuccess?.successMessage) {
|
if (!successMessage) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
message.success(compile(onSuccess?.successMessage));
|
message.success(compile(successMessage));
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
actionField.data.data = null;
|
actionField.data.data = null;
|
||||||
actionField.data.loading = false;
|
actionField.data.loading = false;
|
||||||
@ -568,6 +571,7 @@ export const useCustomizeUpdateActionProps = () => {
|
|||||||
const variables = useVariables();
|
const variables = useVariables();
|
||||||
const localVariables = useLocalVariables({ currentForm: form });
|
const localVariables = useLocalVariables({ currentForm: form });
|
||||||
const { name, getField } = useCollection_deprecated();
|
const { name, getField } = useCollection_deprecated();
|
||||||
|
const { setVisible } = useActionContext();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
async onClick(e?, callBack?) {
|
async onClick(e?, callBack?) {
|
||||||
@ -577,7 +581,7 @@ export const useCustomizeUpdateActionProps = () => {
|
|||||||
skipValidator,
|
skipValidator,
|
||||||
triggerWorkflows,
|
triggerWorkflows,
|
||||||
} = actionSchema?.['x-action-settings'] ?? {};
|
} = actionSchema?.['x-action-settings'] ?? {};
|
||||||
|
const { manualClose, redirecting, redirectTo, successMessage, actionAfterSuccess } = onSuccess || {};
|
||||||
const assignedValues = {};
|
const assignedValues = {};
|
||||||
const waitList = Object.keys(originalAssignedValues).map(async (key) => {
|
const waitList = Object.keys(originalAssignedValues).map(async (key) => {
|
||||||
const value = originalAssignedValues[key];
|
const value = originalAssignedValues[key];
|
||||||
@ -611,6 +615,9 @@ export const useCustomizeUpdateActionProps = () => {
|
|||||||
? triggerWorkflows.map((row) => [row.workflowKey, row.context].filter(Boolean).join('!')).join(',')
|
? triggerWorkflows.map((row) => [row.workflowKey, row.context].filter(Boolean).join('!')).join(',')
|
||||||
: undefined,
|
: undefined,
|
||||||
});
|
});
|
||||||
|
if (actionAfterSuccess === 'previous' || (!actionAfterSuccess && redirecting !== true)) {
|
||||||
|
setVisible?.(false);
|
||||||
|
}
|
||||||
// service?.refresh?.();
|
// service?.refresh?.();
|
||||||
if (callBack) {
|
if (callBack) {
|
||||||
callBack?.();
|
callBack?.();
|
||||||
@ -618,29 +625,29 @@ export const useCustomizeUpdateActionProps = () => {
|
|||||||
if (!(resource instanceof TableFieldResource)) {
|
if (!(resource instanceof TableFieldResource)) {
|
||||||
__parent?.service?.refresh?.();
|
__parent?.service?.refresh?.();
|
||||||
}
|
}
|
||||||
if (!onSuccess?.successMessage) {
|
if (!successMessage) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (onSuccess?.manualClose) {
|
if (manualClose) {
|
||||||
modal.success({
|
modal.success({
|
||||||
title: compile(onSuccess?.successMessage),
|
title: compile(successMessage),
|
||||||
onOk: async () => {
|
onOk: async () => {
|
||||||
if (onSuccess?.redirecting && onSuccess?.redirectTo) {
|
if (((redirecting && !actionAfterSuccess) || actionAfterSuccess === 'redirect') && redirectTo) {
|
||||||
if (isURL(onSuccess.redirectTo)) {
|
if (isURL(redirectTo)) {
|
||||||
window.location.href = onSuccess.redirectTo;
|
window.location.href = redirectTo;
|
||||||
} else {
|
} else {
|
||||||
navigate(onSuccess.redirectTo);
|
navigate(redirectTo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
message.success(compile(onSuccess?.successMessage));
|
message.success(compile(successMessage));
|
||||||
if (onSuccess?.redirecting && onSuccess?.redirectTo) {
|
if (((redirecting && !actionAfterSuccess) || actionAfterSuccess === 'redirect') && redirectTo) {
|
||||||
if (isURL(onSuccess.redirectTo)) {
|
if (isURL(redirectTo)) {
|
||||||
window.location.href = onSuccess.redirectTo;
|
window.location.href = redirectTo;
|
||||||
} else {
|
} else {
|
||||||
navigate(onSuccess.redirectTo);
|
navigate(redirectTo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -665,6 +672,7 @@ export const useCustomizeBulkUpdateActionProps = () => {
|
|||||||
const record = useRecord();
|
const record = useRecord();
|
||||||
const { name, getField } = useCollection_deprecated();
|
const { name, getField } = useCollection_deprecated();
|
||||||
const localVariables = useLocalVariables();
|
const localVariables = useLocalVariables();
|
||||||
|
const { setVisible } = useActionContext();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
async onClick() {
|
async onClick() {
|
||||||
@ -673,6 +681,7 @@ export const useCustomizeBulkUpdateActionProps = () => {
|
|||||||
onSuccess,
|
onSuccess,
|
||||||
updateMode,
|
updateMode,
|
||||||
} = actionSchema?.['x-action-settings'] ?? {};
|
} = actionSchema?.['x-action-settings'] ?? {};
|
||||||
|
const { manualClose, redirecting, redirectTo, successMessage, actionAfterSuccess } = onSuccess || {};
|
||||||
actionField.data = field.data || {};
|
actionField.data = field.data || {};
|
||||||
actionField.data.loading = true;
|
actionField.data.loading = true;
|
||||||
|
|
||||||
@ -697,7 +706,9 @@ export const useCustomizeBulkUpdateActionProps = () => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
await Promise.all(waitList);
|
await Promise.all(waitList);
|
||||||
|
if (actionAfterSuccess === 'previous' || (!actionAfterSuccess && redirecting !== true)) {
|
||||||
|
setVisible?.(false);
|
||||||
|
}
|
||||||
modal.confirm({
|
modal.confirm({
|
||||||
title: t('Bulk update'),
|
title: t('Bulk update'),
|
||||||
content: updateMode === 'selected' ? t('Update selected data?') : t('Update all data?'),
|
content: updateMode === 'selected' ? t('Update selected data?') : t('Update all data?'),
|
||||||
@ -730,29 +741,29 @@ export const useCustomizeBulkUpdateActionProps = () => {
|
|||||||
if (!(resource instanceof TableFieldResource)) {
|
if (!(resource instanceof TableFieldResource)) {
|
||||||
__parent?.service?.refresh?.();
|
__parent?.service?.refresh?.();
|
||||||
}
|
}
|
||||||
if (!onSuccess?.successMessage) {
|
if (!successMessage) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (onSuccess?.manualClose) {
|
if (manualClose) {
|
||||||
modal.success({
|
modal.success({
|
||||||
title: compile(onSuccess?.successMessage),
|
title: compile(successMessage),
|
||||||
onOk: async () => {
|
onOk: async () => {
|
||||||
if (onSuccess?.redirecting && onSuccess?.redirectTo) {
|
if (((redirecting && !actionAfterSuccess) || actionAfterSuccess === 'redirect') && redirectTo) {
|
||||||
if (isURL(onSuccess.redirectTo)) {
|
if (isURL(redirectTo)) {
|
||||||
window.location.href = onSuccess.redirectTo;
|
window.location.href = redirectTo;
|
||||||
} else {
|
} else {
|
||||||
navigate(onSuccess.redirectTo);
|
navigate(redirectTo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
message.success(compile(onSuccess?.successMessage));
|
message.success(compile(successMessage));
|
||||||
if (onSuccess?.redirecting && onSuccess?.redirectTo) {
|
if (((redirecting && !actionAfterSuccess) || actionAfterSuccess === 'redirect') && redirectTo) {
|
||||||
if (isURL(onSuccess.redirectTo)) {
|
if (isURL(redirectTo)) {
|
||||||
window.location.href = onSuccess.redirectTo;
|
window.location.href = redirectTo;
|
||||||
} else {
|
} else {
|
||||||
navigate(onSuccess.redirectTo);
|
navigate(redirectTo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -778,6 +789,7 @@ export const useCustomizeRequestActionProps = () => {
|
|||||||
const currentUserContext = useCurrentUserContext();
|
const currentUserContext = useCurrentUserContext();
|
||||||
const currentUser = currentUserContext?.data?.data;
|
const currentUser = currentUserContext?.data?.data;
|
||||||
const actionField = useField();
|
const actionField = useField();
|
||||||
|
const { t } = useTranslation();
|
||||||
const { setVisible } = useActionContext();
|
const { setVisible } = useActionContext();
|
||||||
const { modal } = App.useApp();
|
const { modal } = App.useApp();
|
||||||
const { getActiveFieldsName } = useFormActiveFields() || {};
|
const { getActiveFieldsName } = useFormActiveFields() || {};
|
||||||
@ -785,6 +797,7 @@ export const useCustomizeRequestActionProps = () => {
|
|||||||
return {
|
return {
|
||||||
async onClick() {
|
async onClick() {
|
||||||
const { skipValidator, onSuccess, requestSettings } = actionSchema?.['x-action-settings'] ?? {};
|
const { skipValidator, onSuccess, requestSettings } = actionSchema?.['x-action-settings'] ?? {};
|
||||||
|
const { manualClose, redirecting, redirectTo, successMessage, actionAfterSuccess } = onSuccess || {};
|
||||||
const xAction = actionSchema?.['x-action'];
|
const xAction = actionSchema?.['x-action'];
|
||||||
if (!requestSettings['url']) {
|
if (!requestSettings['url']) {
|
||||||
return;
|
return;
|
||||||
@ -829,26 +842,36 @@ export const useCustomizeRequestActionProps = () => {
|
|||||||
}
|
}
|
||||||
service?.refresh?.();
|
service?.refresh?.();
|
||||||
if (xAction === 'customize:form:request') {
|
if (xAction === 'customize:form:request') {
|
||||||
setVisible?.(false);
|
if (actionAfterSuccess === 'previous' || (!actionAfterSuccess && redirecting !== true)) {
|
||||||
|
setVisible?.(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!onSuccess?.successMessage) {
|
if (!successMessage) {
|
||||||
return;
|
message.success(t('Saved successfully'));
|
||||||
|
await resetFormCorrectly(form);
|
||||||
|
if (((redirecting && !actionAfterSuccess) || actionAfterSuccess === 'redirect') && redirectTo) {
|
||||||
|
if (isURL(redirectTo)) {
|
||||||
|
window.location.href = redirectTo;
|
||||||
|
} else {
|
||||||
|
navigate(redirectTo);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (onSuccess?.manualClose) {
|
if (manualClose) {
|
||||||
modal.success({
|
modal.success({
|
||||||
title: compile(onSuccess?.successMessage),
|
title: compile(successMessage),
|
||||||
onOk: async () => {
|
onOk: async () => {
|
||||||
if (onSuccess?.redirecting && onSuccess?.redirectTo) {
|
if (((redirecting && !actionAfterSuccess) || actionAfterSuccess === 'redirect') && redirectTo) {
|
||||||
if (isURL(onSuccess.redirectTo)) {
|
if (isURL(redirectTo)) {
|
||||||
window.location.href = onSuccess.redirectTo;
|
window.location.href = redirectTo;
|
||||||
} else {
|
} else {
|
||||||
navigate(onSuccess.redirectTo);
|
navigate(redirectTo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
message.success(compile(onSuccess?.successMessage));
|
message.success(compile(successMessage));
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
actionField.data.loading = false;
|
actionField.data.loading = false;
|
||||||
@ -883,7 +906,7 @@ export const useUpdateActionProps = () => {
|
|||||||
skipValidator,
|
skipValidator,
|
||||||
triggerWorkflows,
|
triggerWorkflows,
|
||||||
} = actionSchema?.['x-action-settings'] ?? {};
|
} = actionSchema?.['x-action-settings'] ?? {};
|
||||||
|
const { manualClose, redirecting, redirectTo, successMessage, actionAfterSuccess } = onSuccess || {};
|
||||||
const assignedValues = {};
|
const assignedValues = {};
|
||||||
const waitList = Object.keys(originalAssignedValues).map(async (key) => {
|
const waitList = Object.keys(originalAssignedValues).map(async (key) => {
|
||||||
const value = originalAssignedValues[key];
|
const value = originalAssignedValues[key];
|
||||||
@ -941,32 +964,39 @@ export const useUpdateActionProps = () => {
|
|||||||
if (callBack) {
|
if (callBack) {
|
||||||
callBack?.();
|
callBack?.();
|
||||||
}
|
}
|
||||||
setVisible?.(false);
|
if (actionAfterSuccess === 'previous' || (!actionAfterSuccess && redirecting !== true)) {
|
||||||
|
setVisible?.(false);
|
||||||
|
}
|
||||||
setFormValueChanged?.(false);
|
setFormValueChanged?.(false);
|
||||||
if (!onSuccess?.successMessage) {
|
if (!successMessage) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (onSuccess?.manualClose) {
|
if (manualClose) {
|
||||||
modal.success({
|
modal.success({
|
||||||
title: compile(onSuccess?.successMessage),
|
title: compile(successMessage),
|
||||||
onOk: async () => {
|
onOk: async () => {
|
||||||
await form.reset();
|
await form.reset();
|
||||||
if (onSuccess?.redirecting && onSuccess?.redirectTo) {
|
if (((redirecting && !actionAfterSuccess) || actionAfterSuccess === 'redirect') && redirectTo) {
|
||||||
if (isURL(onSuccess.redirectTo)) {
|
if (isURL(redirectTo)) {
|
||||||
window.location.href = onSuccess.redirectTo;
|
window.location.href = redirectTo;
|
||||||
} else {
|
} else {
|
||||||
navigate(onSuccess.redirectTo);
|
navigate(redirectTo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
message.success(compile(onSuccess?.successMessage));
|
message.success(compile(successMessage));
|
||||||
if (onSuccess?.redirecting && onSuccess?.redirectTo) {
|
if (
|
||||||
if (isURL(onSuccess.redirectTo)) {
|
((redirecting && !actionAfterSuccess) ||
|
||||||
window.location.href = onSuccess.redirectTo;
|
actionAfterSuccess === 'redirect' ||
|
||||||
|
actionAfterSuccess === 'redirect') &&
|
||||||
|
redirectTo
|
||||||
|
) {
|
||||||
|
if (isURL(redirectTo)) {
|
||||||
|
window.location.href = redirectTo;
|
||||||
} else {
|
} else {
|
||||||
navigate(onSuccess.redirectTo);
|
navigate(redirectTo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -640,7 +640,7 @@
|
|||||||
"Current time": "Current time",
|
"Current time": "Current time",
|
||||||
"System variables": "System variables",
|
"System variables": "System variables",
|
||||||
"Date variables": "Date variables",
|
"Date variables": "Date variables",
|
||||||
"Popup close method": "Popup close method",
|
"Message popup close method": "Message popup close method",
|
||||||
"Automatic close": "Automatic close",
|
"Automatic close": "Automatic close",
|
||||||
"Manually close": "Manually close",
|
"Manually close": "Manually close",
|
||||||
"After successful update": "After successful update",
|
"After successful update": "After successful update",
|
||||||
|
@ -656,7 +656,7 @@
|
|||||||
"Parent record": "上级记录",
|
"Parent record": "上级记录",
|
||||||
"Current time": "当前时间",
|
"Current time": "当前时间",
|
||||||
"Now": "现在",
|
"Now": "现在",
|
||||||
"Popup close method": "弹窗关闭方式",
|
"Message popup close method": "消息弹窗关闭方式",
|
||||||
"Automatic close": "自动关闭",
|
"Automatic close": "自动关闭",
|
||||||
"Manually close": "手动关闭",
|
"Manually close": "手动关闭",
|
||||||
"After successful update": "更新成功后",
|
"After successful update": "更新成功后",
|
||||||
@ -1001,5 +1001,8 @@
|
|||||||
"Ellipsis overflow content": "省略超出长度的内容",
|
"Ellipsis overflow content": "省略超出长度的内容",
|
||||||
"Picker": "选择器",
|
"Picker": "选择器",
|
||||||
"Quarter":"季度",
|
"Quarter":"季度",
|
||||||
"Switching the picker, the value and default value will be cleared":"切换选择器时,字段的值和默认值将会被清空"
|
"Switching the picker, the value and default value will be cleared":"切换选择器时,字段的值和默认值将会被清空",
|
||||||
|
"Stay on the current popup or page":"停留在当前弹窗或页面",
|
||||||
|
"Return to the previous popup or page":"返回上一层弹窗或页面",
|
||||||
|
"Action after successful submission":"提交成功后动作"
|
||||||
}
|
}
|
||||||
|
@ -181,6 +181,10 @@ export const createSubmitActionSettings = new SchemaSettings({
|
|||||||
{
|
{
|
||||||
name: 'afterSuccessfulSubmission',
|
name: 'afterSuccessfulSubmission',
|
||||||
Component: AfterSuccess,
|
Component: AfterSuccess,
|
||||||
|
useVisible() {
|
||||||
|
const { type } = useDataBlockProps() || ({} as any);
|
||||||
|
return type !== 'publicForm';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'refreshDataBlockRequest',
|
name: 'refreshDataBlockRequest',
|
||||||
|
@ -251,19 +251,27 @@ export function SkipValidation() {
|
|||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export function AfterSuccess() {
|
export function AfterSuccess() {
|
||||||
const { dn } = useDesignable();
|
const { dn } = useDesignable();
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const fieldSchema = useFieldSchema();
|
const fieldSchema = useFieldSchema();
|
||||||
|
const { onSuccess } = fieldSchema?.['x-action-settings'] || {};
|
||||||
return (
|
return (
|
||||||
<SchemaSettingsModalItem
|
<SchemaSettingsModalItem
|
||||||
title={t('After successful submission')}
|
title={t('After successful submission')}
|
||||||
initialValues={
|
initialValues={
|
||||||
fieldSchema?.['x-action-settings']?.['onSuccess'] || {
|
onSuccess
|
||||||
manualClose: false,
|
? {
|
||||||
redirecting: false,
|
actionAfterSuccess: onSuccess?.redirecting ? 'redirect' : 'previous',
|
||||||
successMessage: '{{t("Saved successfully")}}',
|
...onSuccess,
|
||||||
}
|
}
|
||||||
|
: {
|
||||||
|
manualClose: false,
|
||||||
|
redirecting: false,
|
||||||
|
successMessage: '{{t("Saved successfully")}}',
|
||||||
|
actionAfterSuccess: 'previous',
|
||||||
|
}
|
||||||
}
|
}
|
||||||
schema={
|
schema={
|
||||||
{
|
{
|
||||||
@ -277,7 +285,7 @@ export function AfterSuccess() {
|
|||||||
'x-component-props': {},
|
'x-component-props': {},
|
||||||
},
|
},
|
||||||
manualClose: {
|
manualClose: {
|
||||||
title: t('Popup close method'),
|
title: t('Message popup close method'),
|
||||||
enum: [
|
enum: [
|
||||||
{ label: t('Automatic close'), value: false },
|
{ label: t('Automatic close'), value: false },
|
||||||
{ label: t('Manually close'), value: true },
|
{ label: t('Manually close'), value: true },
|
||||||
@ -288,6 +296,7 @@ export function AfterSuccess() {
|
|||||||
},
|
},
|
||||||
redirecting: {
|
redirecting: {
|
||||||
title: t('Then'),
|
title: t('Then'),
|
||||||
|
'x-hidden': true,
|
||||||
enum: [
|
enum: [
|
||||||
{ label: t('Stay on current page'), value: false },
|
{ label: t('Stay on current page'), value: false },
|
||||||
{ label: t('Redirect to'), value: true },
|
{ label: t('Redirect to'), value: true },
|
||||||
@ -304,6 +313,25 @@ export function AfterSuccess() {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
actionAfterSuccess: {
|
||||||
|
title: t('Action after successful submission'),
|
||||||
|
enum: [
|
||||||
|
{ label: t('Stay on the current popup or page'), value: 'stay' },
|
||||||
|
{ label: t('Return to the previous popup or page'), value: 'previous' },
|
||||||
|
{ label: t('Redirect to'), value: 'redirect' },
|
||||||
|
],
|
||||||
|
'x-decorator': 'FormItem',
|
||||||
|
'x-component': 'Radio.Group',
|
||||||
|
'x-component-props': {},
|
||||||
|
'x-reactions': {
|
||||||
|
target: 'redirectTo',
|
||||||
|
fulfill: {
|
||||||
|
state: {
|
||||||
|
visible: "{{$self.value==='redirect'}}",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
redirectTo: {
|
redirectTo: {
|
||||||
title: t('Link'),
|
title: t('Link'),
|
||||||
'x-decorator': 'FormItem',
|
'x-decorator': 'FormItem',
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* For more information, please refer to: https://www.nocobase.com/agreement.
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { SchemaExpressionScopeContext, useField, useForm } from '@formily/react';
|
import { SchemaExpressionScopeContext, useField, useForm, useFieldSchema } from '@formily/react';
|
||||||
import {
|
import {
|
||||||
SchemaInitializerItemType,
|
SchemaInitializerItemType,
|
||||||
TableFieldResource,
|
TableFieldResource,
|
||||||
@ -93,9 +93,12 @@ export const useCustomizeBulkEditActionProps = () => {
|
|||||||
const selectedRecordKeys =
|
const selectedRecordKeys =
|
||||||
tableBlockContext.field?.data?.selectedRowKeys ?? expressionScope?.selectedRecordKeys ?? {};
|
tableBlockContext.field?.data?.selectedRowKeys ?? expressionScope?.selectedRecordKeys ?? {};
|
||||||
const { setVisible, fieldSchema: actionSchema, setSubmitted } = actionContext;
|
const { setVisible, fieldSchema: actionSchema, setSubmitted } = actionContext;
|
||||||
|
const fieldSchema = useFieldSchema();
|
||||||
return {
|
return {
|
||||||
async onClick() {
|
async onClick() {
|
||||||
const { onSuccess, skipValidator, updateMode } = actionSchema?.['x-action-settings'] ?? {};
|
const { updateMode } = actionSchema?.['x-action-settings'] ?? {};
|
||||||
|
const { onSuccess, skipValidator, triggerWorkflows } = fieldSchema?.['x-action-settings'] ?? {};
|
||||||
|
const { manualClose, redirecting, redirectTo, successMessage, actionAfterSuccess } = onSuccess || {};
|
||||||
const { filter } = __parent.service.params?.[0] ?? {};
|
const { filter } = __parent.service.params?.[0] ?? {};
|
||||||
|
|
||||||
if (!skipValidator) {
|
if (!skipValidator) {
|
||||||
@ -125,28 +128,36 @@ export const useCustomizeBulkEditActionProps = () => {
|
|||||||
if (!(resource instanceof TableFieldResource)) {
|
if (!(resource instanceof TableFieldResource)) {
|
||||||
__parent?.__parent?.service?.refresh?.();
|
__parent?.__parent?.service?.refresh?.();
|
||||||
}
|
}
|
||||||
// __parent?.service?.refresh?.();
|
if (actionAfterSuccess === 'previous' || (!actionAfterSuccess && redirecting !== true)) {
|
||||||
setVisible?.(false);
|
setVisible?.(false);
|
||||||
|
}
|
||||||
setSubmitted(true);
|
setSubmitted(true);
|
||||||
if (!onSuccess?.successMessage) {
|
if (!successMessage) {
|
||||||
|
if (((redirecting && !actionAfterSuccess) || actionAfterSuccess === 'redirect') && redirectTo) {
|
||||||
|
if (isURL(redirectTo)) {
|
||||||
|
window.location.href = redirectTo;
|
||||||
|
} else {
|
||||||
|
navigate(redirectTo);
|
||||||
|
}
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (onSuccess?.manualClose) {
|
if (manualClose) {
|
||||||
modal.success({
|
modal.success({
|
||||||
title: compile(onSuccess?.successMessage),
|
title: compile(successMessage),
|
||||||
onOk: async () => {
|
onOk: async () => {
|
||||||
await form.reset();
|
await form.reset();
|
||||||
if (onSuccess?.redirecting && onSuccess?.redirectTo) {
|
if (((redirecting && !actionAfterSuccess) || actionAfterSuccess === 'redirect') && redirectTo) {
|
||||||
if (isURL(onSuccess.redirectTo)) {
|
if (isURL(redirectTo)) {
|
||||||
window.location.href = onSuccess.redirectTo;
|
window.location.href = redirectTo;
|
||||||
} else {
|
} else {
|
||||||
navigate(onSuccess.redirectTo);
|
navigate(redirectTo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
message.success(compile(onSuccess?.successMessage));
|
message.success(compile(successMessage));
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
actionField.data.loading = false;
|
actionField.data.loading = false;
|
||||||
|
@ -36,6 +36,7 @@ export const useCustomizeRequestActionProps = () => {
|
|||||||
return {
|
return {
|
||||||
async onClick(e?, callBack?) {
|
async onClick(e?, callBack?) {
|
||||||
const { skipValidator, onSuccess } = actionSchema?.['x-action-settings'] ?? {};
|
const { skipValidator, onSuccess } = actionSchema?.['x-action-settings'] ?? {};
|
||||||
|
const { manualClose, redirecting, redirectTo, successMessage, actionAfterSuccess } = onSuccess || {};
|
||||||
const xAction = actionSchema?.['x-action'];
|
const xAction = actionSchema?.['x-action'];
|
||||||
if (skipValidator !== true && xAction === 'customize:form:request') {
|
if (skipValidator !== true && xAction === 'customize:form:request') {
|
||||||
await form.submit();
|
await form.submit();
|
||||||
@ -74,32 +75,39 @@ export const useCustomizeRequestActionProps = () => {
|
|||||||
if (callBack) {
|
if (callBack) {
|
||||||
callBack?.();
|
callBack?.();
|
||||||
}
|
}
|
||||||
if (xAction === 'customize:form:request') {
|
if (actionAfterSuccess === 'previous' || (!actionAfterSuccess && redirecting !== true)) {
|
||||||
setVisible?.(false);
|
setVisible?.(false);
|
||||||
}
|
}
|
||||||
if (!onSuccess?.successMessage) {
|
if (!successMessage) {
|
||||||
|
if (((redirecting && !actionAfterSuccess) || actionAfterSuccess === 'redirect') && redirectTo) {
|
||||||
|
if (isURL(redirectTo)) {
|
||||||
|
window.location.href = redirectTo;
|
||||||
|
} else {
|
||||||
|
navigate(redirectTo);
|
||||||
|
}
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (onSuccess?.manualClose) {
|
if (manualClose) {
|
||||||
modal.success({
|
modal.success({
|
||||||
title: compile(onSuccess?.successMessage),
|
title: compile(successMessage),
|
||||||
onOk: async () => {
|
onOk: async () => {
|
||||||
if (onSuccess?.redirecting && onSuccess?.redirectTo) {
|
if (((redirecting && !actionAfterSuccess) || actionAfterSuccess === 'redirect') && redirectTo) {
|
||||||
if (isURL(onSuccess.redirectTo)) {
|
if (isURL(redirectTo)) {
|
||||||
window.location.href = onSuccess.redirectTo;
|
window.location.href = redirectTo;
|
||||||
} else {
|
} else {
|
||||||
navigate(onSuccess.redirectTo);
|
navigate(redirectTo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
message.success(compile(onSuccess?.successMessage));
|
message.success(compile(successMessage));
|
||||||
if (onSuccess?.redirecting && onSuccess?.redirectTo) {
|
if (((redirecting && !actionAfterSuccess) || actionAfterSuccess === 'redirect') && redirectTo) {
|
||||||
if (isURL(onSuccess.redirectTo)) {
|
if (isURL(redirectTo)) {
|
||||||
window.location.href = onSuccess.redirectTo;
|
window.location.href = redirectTo;
|
||||||
} else {
|
} else {
|
||||||
navigate(onSuccess.redirectTo);
|
navigate(redirectTo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user