Skip to content

Commit 7ba64e1

Browse files
committed
fix: curd中before、after中控制后续逻辑
1 parent 57cb78f commit 7ba64e1

File tree

11 files changed

+224
-72
lines changed

11 files changed

+224
-72
lines changed

docs/examples/antdUseCurd.vue

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,17 +106,62 @@ const { render, editTypeRef, selectedRows, openModal } = useCurd({
106106
actions: {
107107
query: {
108108
api: '/user.json',
109+
before(params) {
110+
// 修改请求参数
111+
params.myId = '111';
112+
// return false; // 阻止请求
113+
return params;
114+
},
115+
after(data) {
116+
// return false; // 阻止默认数据绑定逻辑
117+
// 修改请求接口,适配绑定数据
118+
const { pager, list } = data;
119+
return {
120+
list: list,
121+
pager: pager,
122+
};
123+
},
109124
},
110125
create: {
111126
api: '/success.json',
127+
before(params) {
128+
// 修改请求参数
129+
params.myId = '111';
130+
// return false; // 阻止请求
131+
return params;
132+
},
133+
after(data) {
134+
// return false; // 阻止关闭弹窗和刷新列表
135+
return data;
136+
},
112137
},
113138
reset: {},
114139
update: {
115140
hidden: true, // 更新按钮修改行数据判断时,可以隐藏默认更新按钮,在template实现
116141
api: '/error.json',
142+
before(params) {
143+
// 修改请求参数
144+
params.myId = '111';
145+
// return false; // 阻止请求
146+
return params;
147+
},
148+
after(data) {
149+
// return false; // 阻止关闭弹窗和刷新列表
150+
return data;
151+
},
117152
},
118153
delete: {
119154
api: '/success.json',
155+
before(params) {
156+
// 修改请求参数
157+
params.myId = '111';
158+
// return false; // 阻止请求
159+
return params;
160+
},
161+
after(data) {
162+
// return false; // 阻止默认提示和刷新列表
163+
return data;
164+
},
120165
},
121166
view: {},
122167
},

docs/examples/elementUseCurd.vue

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,17 +103,62 @@ const { render, editTypeRef, selectedRows, openModal } = useCurd({
103103
actions: {
104104
query: {
105105
api: '/user.json',
106+
before(params) {
107+
// 修改请求参数
108+
params.myId = '111';
109+
// return false; // 阻止请求
110+
return params;
111+
},
112+
after(data) {
113+
// return false; // 阻止默认数据绑定逻辑
114+
// 修改请求接口,适配绑定数据
115+
const { pager, list } = data;
116+
return {
117+
list: list,
118+
pager: pager,
119+
};
120+
},
106121
},
107122
create: {
108123
api: '/success.json',
124+
before(params) {
125+
// 修改请求参数
126+
params.myId = '111';
127+
// return false; // 阻止请求
128+
return params;
129+
},
130+
after(data) {
131+
// return false; // 阻止关闭弹窗和刷新列表
132+
return data;
133+
},
109134
},
110135
reset: {},
111136
update: {
112137
hidden: true, // 更新按钮修改行数据判断时,可以隐藏默认更新按钮,在template实现
113138
api: '/error.json',
139+
before(params) {
140+
// 修改请求参数
141+
params.myId = '111';
142+
// return false; // 阻止请求
143+
return params;
144+
},
145+
after(data) {
146+
// return false; // 阻止关闭弹窗和刷新列表
147+
return data;
148+
},
114149
},
115150
delete: {
116151
api: '/success.json',
152+
before(params) {
153+
// 修改请求参数
154+
params.myId = '111';
155+
// return false; // 阻止请求
156+
return params;
157+
},
158+
after(data) {
159+
// return false; // 阻止默认提示和刷新列表
160+
return data;
161+
},
117162
},
118163
view: {},
119164
},

docs/examples/fesdUseCurd.vue

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,17 +98,62 @@ const { render, editTypeRef, query, selectedRows, openModal } = useCurd({
9898
actions: {
9999
query: {
100100
api: '/user.json',
101+
before(params) {
102+
// 修改请求参数
103+
params.myId = '111';
104+
// return false; // 阻止请求
105+
return params;
106+
},
107+
after(data) {
108+
// return false; // 阻止默认数据绑定逻辑
109+
// 修改请求接口,适配绑定数据
110+
const { pager, list } = data;
111+
return {
112+
list: list,
113+
pager: pager,
114+
};
115+
},
101116
},
102117
create: {
103118
api: '/success.json',
119+
before(params) {
120+
// 修改请求参数
121+
params.myId = '111';
122+
// return false; // 阻止请求
123+
return params;
124+
},
125+
after(data) {
126+
// return false; // 阻止关闭弹窗和刷新列表
127+
return data;
128+
},
104129
},
105130
reset: {},
106131
update: {
107132
hidden: true, // 更新按钮修改行数据判断时,可以隐藏默认更新按钮,在template实现
108133
api: '/error.json',
134+
before(params) {
135+
// 修改请求参数
136+
params.myId = '111';
137+
// return false; // 阻止请求
138+
return params;
139+
},
140+
after(data) {
141+
// return false; // 阻止关闭弹窗和刷新列表
142+
return data;
143+
},
109144
},
110145
delete: {
111146
api: '/success.json',
147+
before(params) {
148+
// 修改请求参数
149+
params.myId = '111';
150+
// return false; // 阻止请求
151+
return params;
152+
},
153+
after(data) {
154+
// return false; // 阻止默认提示和刷新列表
155+
return data;
156+
},
112157
},
113158
view: {},
114159
},

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "koala-form",
3-
"version": "2.0.2",
3+
"version": "2.0.3",
44
"description": "vue form helper",
55
"author": "aringlai",
66
"license": "MIT",

packages/antd-plugin/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@koala-form/antd-plugin",
3-
"version": "2.0.2",
3+
"version": "2.0.3",
44
"description": "KoalaForm Ant Design Vue ui插件",
55
"main": "dist/index.js",
66
"module": "dist/index.js",

packages/antd-plugin/src/useCurd.ts

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ interface Action extends ComponentDesc {
4141
reqConfig?: any;
4242
/** 隐藏默认按钮 */
4343
hidden?: boolean;
44-
/** 请求前执行,可修改参数 */
45-
before?: (params: Record<string, any>, ...args: any[]) => Record<string, any>;
46-
/** 请求后执行,可修改结果 */
47-
after?: (params: Record<string, any>) => Record<string, any>;
44+
/** 请求前执行,可修改请求参数,返回false可阻止请求发送 */
45+
before?: (params: Record<string, any>, ...args: any[]) => Record<string, any> | boolean;
46+
/** 请求后执行,可修改结果,返回false可阻止默认流程的执行 */
47+
after?: (params: Record<string, any>) => Record<string, any> | boolean;
4848
/** 打开modal前执行,可修改modal里表单的值 */
4949
open?: (params: Record<string, any>) => Record<string, any>;
5050
}
@@ -125,13 +125,17 @@ export const useCurd = (config: CurdConfig) => {
125125
throw new Error(`action.query.api required!`);
126126
}
127127
const { api, after, before, reqConfig } = actions.query;
128-
let params = doBeforeQuery(query, pager);
129-
if (before) {
130-
params = before(params);
128+
let params: any = doBeforeQuery(query, pager);
129+
params = before?.(params);
130+
if (!params) {
131+
getGlobalConfig().debug && console.warn('actions.query.before返回false阻止了请求执行,如果是自定义请求流程,可忽略');
132+
return;
131133
}
132134
let data = await doRequest(api, params, reqConfig);
133-
if (after) {
134-
data = after(data);
135+
data = after?.(data);
136+
if (!data) {
137+
getGlobalConfig().debug && console.warn('actions.query.after返回false阻止了默认逻辑数据绑定,请自行绑定数据!');
138+
return;
135139
}
136140
table.modelRef.value = data.list;
137141
if (pagerCfg) {
@@ -208,13 +212,14 @@ export const useCurd = (config: CurdConfig) => {
208212
}
209213
await doValidate(edit);
210214
let params = doGetFormData(edit);
211-
if (before) {
212-
params = before(params);
215+
params = before?.(params);
216+
if (!params) {
217+
getGlobalConfig().debug && console.warn('actions.[create/update].before返回false阻止了请求执行,如果是自定义请求流程,可忽略');
218+
return;
213219
}
214-
const data = await doRequest(api, params, reqConfig);
215-
if (after) {
216-
after(data);
217-
} else {
220+
const data = (await doRequest(api, params, reqConfig)) || {};
221+
const res = after?.(data);
222+
if (!after || res) {
218223
message.success(`${actionTypeMap[editTypeRef.value]}成功!`);
219224
doClose(modal);
220225
doQuery();
@@ -223,19 +228,19 @@ export const useCurd = (config: CurdConfig) => {
223228

224229
/** 删除记录 */
225230
const doDelete = async (record: any) => {
226-
debugger;
227231
const { api, after, before, reqConfig } = (actions.delete || {}) as Action;
228232
if (!api) {
229233
throw new Error(`action.delete.api required!`);
230234
}
231235
let params: any = { id: record?.record[rowKey] };
232-
if (before) {
233-
params = before(params, record?.record);
236+
params = before?.(params, record?.row);
237+
if (!params) {
238+
getGlobalConfig().debug && console.warn('actions.delete.before返回false阻止了请求执行,如果是自定义请求流程,可忽略');
239+
return;
234240
}
235-
const data = await doRequest(api, params, reqConfig);
236-
if (after) {
237-
after(data);
238-
} else {
241+
const data = (await doRequest(api, params, reqConfig)) || {};
242+
const res = after?.(data);
243+
if (!after || res) {
239244
message.success('删除成功!');
240245
doQuery();
241246
}

packages/element-plugin/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@koala-form/element-plugin",
3-
"version": "2.0.5",
3+
"version": "2.0.6",
44
"description": "KoalaForm element plus ui插件",
55
"main": "dist/index.js",
66
"module": "dist/index.js",

packages/element-plugin/src/useCurd.ts

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ interface Action extends ComponentDesc {
3939
reqConfig?: any;
4040
/** 隐藏默认按钮 */
4141
hidden?: boolean;
42-
/** 请求前执行,可修改参数 */
43-
before?: (params: Record<string, any>, ...args: any[]) => Record<string, any>;
44-
/** 请求后执行,可修改结果 */
45-
after?: (params: Record<string, any>) => Record<string, any>;
42+
/** 请求前执行,可修改请求参数,返回false可阻止请求发送 */
43+
before?: (params: Record<string, any>, ...args: any[]) => Record<string, any> | boolean;
44+
/** 请求后执行,可修改结果,返回false可阻止默认流程的执行 */
45+
after?: (params: Record<string, any>) => Record<string, any> | boolean;
4646
/** 打开modal前执行,可修改modal里表单的值 */
4747
open?: (params: Record<string, any>) => Record<string, any>;
4848
}
@@ -123,13 +123,17 @@ export const useCurd = (config: CurdConfig) => {
123123
throw new Error(`action.query.api required!`);
124124
}
125125
const { api, after, before, reqConfig } = actions.query;
126-
let params = doBeforeQuery(query, pager);
127-
if (before) {
128-
params = before(params);
126+
let params: any = doBeforeQuery(query, pager);
127+
params = before?.(params);
128+
if (!params) {
129+
getGlobalConfig().debug && console.warn('actions.query.before返回false阻止了请求执行,如果是自定义请求流程,可忽略');
130+
return;
129131
}
130132
let data = await doRequest(api, params, reqConfig);
131-
if (after) {
132-
data = after(data);
133+
data = after?.(data);
134+
if (!data) {
135+
getGlobalConfig().debug && console.warn('actions.query.after返回false阻止了默认逻辑数据绑定,请自行绑定数据!');
136+
return;
133137
}
134138
table.modelRef.value = data.list;
135139
if (pagerCfg) {
@@ -194,13 +198,14 @@ export const useCurd = (config: CurdConfig) => {
194198
}
195199
await doValidate(edit);
196200
let params = doGetFormData(edit);
197-
if (before) {
198-
params = before(params);
201+
params = before?.(params);
202+
if (!params) {
203+
getGlobalConfig().debug && console.warn('actions.[create/update].before返回false阻止了请求执行,如果是自定义请求流程,可忽略');
204+
return;
199205
}
200-
const data = await doRequest(api, params, reqConfig);
201-
if (after) {
202-
after(data);
203-
} else {
206+
const data = (await doRequest(api, params, reqConfig)) || {};
207+
const res = after?.(data);
208+
if (!after || res) {
204209
ElMessage.success(`${actionTypeMap[editTypeRef.value]}成功!`);
205210
doClose(modal);
206211
doQuery();
@@ -214,13 +219,14 @@ export const useCurd = (config: CurdConfig) => {
214219
throw new Error(`action.delete.api required!`);
215220
}
216221
let params: any = { id: record?.row[rowKey] };
217-
if (before) {
218-
params = before(params, record?.row);
222+
params = before?.(params, record?.row);
223+
if (!params) {
224+
getGlobalConfig().debug && console.warn('actions.delete.before返回false阻止了请求执行,如果是自定义请求流程,可忽略');
225+
return;
219226
}
220-
const data = await doRequest(api, params, reqConfig);
221-
if (after) {
222-
after(data);
223-
} else {
227+
const data = (await doRequest(api, params, reqConfig)) || {};
228+
const res = after?.(data);
229+
if (!after || res) {
224230
ElMessage.success('删除成功!');
225231
doQuery();
226232
}

packages/fes-plugin/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@koala-form/fes-plugin",
3-
"version": "2.0.0",
3+
"version": "2.0.1",
44
"description": "KoalaForm fes design ui插件",
55
"main": "dist/index.js",
66
"module": "dist/index.js",

packages/fes-plugin/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export const componentPlugin: PluginFunction<SceneContext, SceneConfig> = (api)
1313
api.onSelfStart(({ ctx }) => {
1414
ctx.getComponent = (name) => {
1515
if (typeof name === 'string') {
16-
const comp = fesD[`F${name}`];
16+
const comp = (fesD as any)[`F${name}`];
1717
if (isComponent(comp)) return comp;
1818
else return name;
1919
} else {

0 commit comments

Comments
 (0)