提交 a1b27ced 编写于 作者: Shine-zwj's avatar Shine-zwj

update:更新表格

上级 a9af16e2
...@@ -349,16 +349,16 @@ export class GridControl extends MainControl { ...@@ -349,16 +349,16 @@ export class GridControl extends MainControl {
const { viewSubject, controlName } = this.controlState; const { viewSubject, controlName } = this.controlState;
const load = async (opt: any = {})=>{ const load = async (opt: any = {})=>{
try { try {
const loadAction = this.controlState.controlAction.loadAction;
const { const {
controlService, context, viewParams, showBusyIndicator, noSort, minorSortDir, minorSortPSDEF, controlService, context, viewParams, showBusyIndicator, noSort, minorSortDir, minorSortPSDEF,
enablePagingBar enablePagingBar, controlAction
} = this.controlState; } = this.controlState;
const dataRef = toRef(this.controlState, "items"); const dataRef = toRef(this.controlState, "items");
const paginationRef = toRef(this.controlState, "pagination"); const paginationRef = toRef(this.controlState, "pagination");
// if(!loadAction){ if(!controlAction.loadAction){
// return; return;
// } }
const arg: any = { ...opt };
let _context = deepCopy(context ? context : {}); let _context = deepCopy(context ? context : {});
let _viewParams = deepCopy(viewParams ? context : {}); let _viewParams = deepCopy(viewParams ? context : {});
if (noSort && minorSortDir && minorSortPSDEF) { if (noSort && minorSortDir && minorSortPSDEF) {
...@@ -369,32 +369,22 @@ export class GridControl extends MainControl { ...@@ -369,32 +369,22 @@ export class GridControl extends MainControl {
const pageSizeRef = toRef(this.controlState, "pageSize"); const pageSizeRef = toRef(this.controlState, "pageSize");
Object.assign(_viewParams, { page: currentRef.value - 1, size: pageSizeRef.value}); Object.assign(_viewParams, { page: currentRef.value - 1, size: pageSizeRef.value});
} }
// const response = await controlService.get(loadAction, _context, {viewParams: _viewParams}, showBusyIndicator ); Object.assign(arg, { viewParams: _viewParams });
// if (!response.status || response.status !== 200) { const response = await controlService.get(
// return _context,
// } arg,
const data = []; { action: controlAction.loadAction, isLoading: showBusyIndicator}
for (let i = 0; i < 40; i++) { );
data.push({ if (response.status || response.status == 200) {
group: i % 2 === 1 ? "分组1": "分组2", dataRef.value = response.data;
srfkey: i,
tefsubjecttypename: `Edrward ${i}`,
nian: i,
testdata: i,
updatedate: 32,
description: `London Park no. ${i}`,
});
}
dataRef.value = data;
// dataRef.value = response.data;
if (enablePagingBar) { if (enablePagingBar) {
// paginationRef.value['total'] = response.total; paginationRef.value['total'] = response.total;
paginationRef.value["total"] = 40;
} }
this.calcGridAuthState(); this.calcGridAuthState();
this.handleDefaultSelect(); this.handleDefaultSelect();
this.handleGridGroup(); this.handleGridGroup();
this.handleDataAgg(); this.handleDataAgg();
}
} catch (error) { } catch (error) {
// todo 错误异常处理 // todo 错误异常处理
console.error(error) console.error(error)
...@@ -419,6 +409,165 @@ export class GridControl extends MainControl { ...@@ -419,6 +409,165 @@ export class GridControl extends MainControl {
} }
} }
/**
* @description 使用保存功能模块
* @param {GridControlProps} props 传入的props
* @return {*}
* @memberof GridControl
*/
public useSave(props: GridControlProps) {
const { viewSubject, controlName } = this.controlState;
const save = async (opt: any = {}) => {
try {
const { controlService, context, viewParams, showBusyIndicator, items, controlAction } = this.controlState;
// TODO 值规则校验处理
for (const item of items) {
const { updateAction, createAction } = controlAction;
const saveAction: any = item.rowDataState == "update" ? updateAction : item.rowDataState == "create" ? createAction : "create";
const saveFunName = item.rowDataState;
if (!saveAction || !saveFunName) {
return;
}
const arg: any = { ...opt };
let _context = deepCopy(context);
let _viewParams = deepCopy(viewParams);
Object.assign(arg, item.getDo());
Object.assign(arg, { viewParams: _viewParams });
const response = await controlService[saveFunName](
_context,
arg,
{ action: saveAction, isLoading: showBusyIndicator },
);
if (response.status || response.status == 200) {
}
}
} catch (error) {
// TODO 错误异常处理
console.log(error);
}
};
// 订阅viewSubject,监听load行为
if (viewSubject) {
let subscription = viewSubject.subscribe(({ tag, action, data }: IActionParam) => {
if (Object.is(controlName, tag) && Object.is("save", action)) {
save(data);
}
});
// 部件卸载时退订viewSubject
onUnmounted(() => {
subscription.unsubscribe();
});
}
return {
save: save,
};
}
/**
* @description 使用删除功能模块
* @param {GridControlProps} props 传入的props
* @return {*}
* @memberof GridControl
*/
public useRemove(props: GridControlProps) {
const { viewSubject, controlName } = this.controlState;
const remove = async (opt: any = {}) => {
try {
const { controlService, context, viewParams, showBusyIndicator, controlAction } = this.controlState;
if (!controlAction.removeAction) {
return;
}
let _context = deepCopy(context);
let _viewParams = deepCopy(viewParams);
const arg: any = opt[0];
Object.assign(arg, { viewParams: _viewParams });
const response = await controlService.remove(
_context,
arg,
{ action: controlAction.removeAction, isLoading: showBusyIndicator },
);
if (response.status || response.status == 200) {
}
} catch (error) {
// TODO 错误异常处理
console.log(error);
}
};
// 订阅viewSubject,监听load行为
if (viewSubject) {
let subscription = viewSubject.subscribe(({ tag, action, data }: IActionParam) => {
if (Object.is(controlName, tag) && Object.is("remove", action)) {
remove(data);
}
});
// 部件卸载时退订viewSubject
onUnmounted(() => {
subscription.unsubscribe();
});
}
return {
remove: remove,
};
}
/**
* @description 使用新建行功能模块
* @param {GridControlProps} props 传入的props
* @return {*}
* @memberof GridControl
*/
public useNewRow(props: GridControlProps) {
const { viewSubject, controlName } = this.controlState;
const newRow = async (opt: any = {}) => {
try {
const { controlService, context, viewParams, showBusyIndicator, controlAction } = this.controlState;
if (!controlAction.loadDraftAction) {
return;
}
const dataRef = toRef(this.controlState, "items");
let _context = deepCopy(context);
let _viewParams = deepCopy(viewParams);
const arg: any = {...opt};
Object.assign(arg, { viewParams: _viewParams });
const response = await controlService.loadDraft(
_context,
arg,
{ action: controlAction.loadDraftAction, isLoading: showBusyIndicator },
);
if (response.status || response.status == 200) {
dataRef.value = [...dataRef.value,[response.data]];
}
} catch (error) {
// TODO 错误异常处理
console.log(error);
}
};
// 订阅viewSubject,监听load行为
if (viewSubject) {
let subscription = viewSubject.subscribe(({ tag, action, data }: IActionParam) => {
if (Object.is(controlName, tag) && Object.is("newRow", action)) {
newRow(data);
}
});
// 部件卸载时退订viewSubject
onUnmounted(() => {
subscription.unsubscribe();
});
}
return {
remove: newRow,
};
}
/** /**
* @description 处理编辑器事件 * @description 处理编辑器事件
* @param {IActionParam} actionParam 行为参数 * @param {IActionParam} actionParam 行为参数
......
import { ControlServiceBase, ControlVOBase, hasFunction } from '@ibiz-core'; import { ControlServiceBase, ControlVOBase, hasFunction, IParam } from '@ibiz-core';
/** /**
* @description 表格部件服务 * @description 表格部件服务
* @export * @export
* @class EditFormService * @class GridService
* @extends {ControlServiceBase<T>} * @extends {ControlServiceBase<T>}
* @template T 部件数据对象类型 * @template T 部件数据对象类型
*/ */
export class GridService<T extends ControlVOBase> extends ControlServiceBase<T> { export class GridService<T extends ControlVOBase> extends ControlServiceBase<T> {
/** /**
* 加载数据 * @description 加载草稿
* * @param {IParam} context 上下文
* @param [context={}] 上下文参数 * @param {IParam} data 行为数据
* @param [data={}] 视图参数 * @param \{{ action: string; isLoading?: boolean }} opts 行为参数
* @param opts * @return {*} {Promise<any>}
* @return {*} * @memberof GridService
*/ */
public async get(context: any, data: any, opts: { action: string; isLoading?: boolean }): Promise<any> { public async loadDraft(context: IParam, data: IParam, opts: { action: string; isLoading?: boolean }): Promise<any> {
let _entityService: any = this.entityService; let _entityService: any = this.entityService;
const { context: Context, data: Data } = this.handleRequestData(context, data, opts); const { context: Context, data: Data } = this.handleRequestData(context, data, opts);
const action = hasFunction(_entityService, opts.action) ? opts.action : 'GET'; // todo主键
const action = hasFunction(_entityService, opts.action) ? opts.action : 'GetDraft';
const response = await _entityService[action](Context, Data, opts.isLoading); const response = await _entityService[action](Context, Data, opts.isLoading);
// this.setRemoteCopyData(response); // this.setRemoteCopyData(response);
response.data = this.newControlVO(response.data); response.data = this.newControlVO(response.data);
response.data.srfuf = '0';
return this.handleResponse(response, opts);
}
/**
* @description 加载数据
* @param {IParam} context 上下文
* @param {IParam} data 行为数据
* @param \{{ action: string; isLoading?: boolean }} opts 行为参数
* @return {*} {Promise<any>}
* @memberof GridService
*/
public async get(context: IParam, data: IParam, opts: { action: string; isLoading?: boolean }): Promise<any> {
let _entityService: any = this.entityService;
const { context: Context, data: Data } = this.handleRequestData(context, data, opts);
const action = hasFunction(_entityService, opts.action) ? opts.action : 'GET';
const response = await _entityService[action](Context, Data, opts.isLoading);
//this.setCopynativeData(response.data);
response.data?.forEach((item: IParam) =>{
item = this.newControlVO(item);
})
return this.handleResponse(response, opts); return this.handleResponse(response, opts);
} }
/** /**
* 建数据 * @description 新建数据
* * @param {IParam} context 上下文
* @param [context={}] 上下文参数 * @param {IParam} data 行为数据
* @param [data={}] 视图参数 * @param \{{ action: string; isLoading?: boolean }} opts 行为参数
* @param opts * @return {*} {Promise<any>}
* @return {*} * @memberof GridService
*/ */
public async create(context: any, data: any, opts: { action: string; isLoading?: boolean }): Promise<any> { public async create(context: IParam, data: IParam, opts: { action: string; isLoading?: boolean }): Promise<any> {
let _entityService: any = this.entityService; let _entityService: any = this.entityService;
const { context: Context, data: Data } = this.handleRequestData(context, data, opts); const { context: Context, data: Data } = this.handleRequestData(context, data, opts);
const action = hasFunction(_entityService, opts.action) ? opts.action : 'Create'; const action = hasFunction(_entityService, opts.action) ? opts.action : 'Create';
...@@ -45,14 +67,14 @@ export class GridService<T extends ControlVOBase> extends ControlServiceBase<T> ...@@ -45,14 +67,14 @@ export class GridService<T extends ControlVOBase> extends ControlServiceBase<T>
} }
/** /**
* 删除数据 * @description 删除数据
* * @param {IParam} context 上下文
* @param [context={}] 上下文参数 * @param {IParam} data 行为数据
* @param [data={}] 视图参数 * @param \{{ action: string; isLoading?: boolean }} opts 行为参数
* @param opts * @return {*} {Promise<any>}
* @return {*} * @memberof GridService
*/ */
public async remove(context: any, data: any, opts: { action: string; isLoading?: boolean }): Promise<any> { public async remove(context: IParam, data: IParam, opts: { action: string; isLoading?: boolean }): Promise<any> {
let _entityService: any = this.entityService; let _entityService: any = this.entityService;
const { context: Context, data: Data } = this.handleRequestData(context, data, opts); const { context: Context, data: Data } = this.handleRequestData(context, data, opts);
const action = hasFunction(_entityService, opts.action) ? opts.action : 'Remove'; const action = hasFunction(_entityService, opts.action) ? opts.action : 'Remove';
...@@ -62,12 +84,12 @@ export class GridService<T extends ControlVOBase> extends ControlServiceBase<T> ...@@ -62,12 +84,12 @@ export class GridService<T extends ControlVOBase> extends ControlServiceBase<T>
} }
/** /**
* 更新数据 * @description 更新
* * @param {*} context 上下文
* @param [context={}] 上下文参数 * @param {*} data 行为数据
* @param [data={}] 视图参数 * @param \{{ action: string; isLoading?: boolean }} opts 行为参数
* @param opts * @return {*} {Promise<any>}
* @return {*} * @memberof GridService
*/ */
public async update(context: any, data: any, opts: { action: string; isLoading?: boolean }): Promise<any> { public async update(context: any, data: any, opts: { action: string; isLoading?: boolean }): Promise<any> {
let _entityService: any = this.entityService; let _entityService: any = this.entityService;
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册