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

update:更新表格

上级 a9af16e2
......@@ -349,16 +349,16 @@ export class GridControl extends MainControl {
const { viewSubject, controlName } = this.controlState;
const load = async (opt: any = {})=>{
try {
const loadAction = this.controlState.controlAction.loadAction;
const {
controlService, context, viewParams, showBusyIndicator, noSort, minorSortDir, minorSortPSDEF,
enablePagingBar
enablePagingBar, controlAction
} = this.controlState;
const dataRef = toRef(this.controlState, "items");
const paginationRef = toRef(this.controlState, "pagination");
// if(!loadAction){
// return;
// }
if(!controlAction.loadAction){
return;
}
const arg: any = { ...opt };
let _context = deepCopy(context ? context : {});
let _viewParams = deepCopy(viewParams ? context : {});
if (noSort && minorSortDir && minorSortPSDEF) {
......@@ -369,32 +369,22 @@ export class GridControl extends MainControl {
const pageSizeRef = toRef(this.controlState, "pageSize");
Object.assign(_viewParams, { page: currentRef.value - 1, size: pageSizeRef.value});
}
// const response = await controlService.get(loadAction, _context, {viewParams: _viewParams}, showBusyIndicator );
// if (!response.status || response.status !== 200) {
// return
// }
const data = [];
for (let i = 0; i < 40; i++) {
data.push({
group: i % 2 === 1 ? "分组1": "分组2",
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) {
// paginationRef.value['total'] = response.total;
paginationRef.value["total"] = 40;
Object.assign(arg, { viewParams: _viewParams });
const response = await controlService.get(
_context,
arg,
{ action: controlAction.loadAction, isLoading: showBusyIndicator}
);
if (response.status || response.status == 200) {
dataRef.value = response.data;
if (enablePagingBar) {
paginationRef.value['total'] = response.total;
}
this.calcGridAuthState();
this.handleDefaultSelect();
this.handleGridGroup();
this.handleDataAgg();
}
this.calcGridAuthState();
this.handleDefaultSelect();
this.handleGridGroup();
this.handleDataAgg();
} catch (error) {
// todo 错误异常处理
console.error(error)
......@@ -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 处理编辑器事件
* @param {IActionParam} actionParam 行为参数
......
import { ControlServiceBase, ControlVOBase, hasFunction } from '@ibiz-core';
import { ControlServiceBase, ControlVOBase, hasFunction, IParam } from '@ibiz-core';
/**
* @description 表格部件服务
* @export
* @class EditFormService
* @class GridService
* @extends {ControlServiceBase<T>}
* @template T 部件数据对象类型
*/
export class GridService<T extends ControlVOBase> extends ControlServiceBase<T> {
/**
* 加载数据
*
* @param [context={}] 上下文参数
* @param [data={}] 视图参数
* @param opts
* @return {*}
* @description 加载草稿
* @param {IParam} context 上下文
* @param {IParam} data 行为数据
* @param \{{ action: string; isLoading?: boolean }} opts 行为参数
* @return {*} {Promise<any>}
* @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;
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);
// this.setRemoteCopyData(response);
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);
}
/**
* 建数据
*
* @param [context={}] 上下文参数
* @param [data={}] 视图参数
* @param opts
* @return {*}
* @description 新建数据
* @param {IParam} context 上下文
* @param {IParam} data 行为数据
* @param \{{ action: string; isLoading?: boolean }} opts 行为参数
* @return {*} {Promise<any>}
* @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;
const { context: Context, data: Data } = this.handleRequestData(context, data, opts);
const action = hasFunction(_entityService, opts.action) ? opts.action : 'Create';
......@@ -45,14 +67,14 @@ export class GridService<T extends ControlVOBase> extends ControlServiceBase<T>
}
/**
* 删除数据
*
* @param [context={}] 上下文参数
* @param [data={}] 视图参数
* @param opts
* @return {*}
* @description 删除数据
* @param {IParam} context 上下文
* @param {IParam} data 行为数据
* @param \{{ action: string; isLoading?: boolean }} opts 行为参数
* @return {*} {Promise<any>}
* @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;
const { context: Context, data: Data } = this.handleRequestData(context, data, opts);
const action = hasFunction(_entityService, opts.action) ? opts.action : 'Remove';
......@@ -62,12 +84,12 @@ export class GridService<T extends ControlVOBase> extends ControlServiceBase<T>
}
/**
* 更新数据
*
* @param [context={}] 上下文参数
* @param [data={}] 视图参数
* @param opts
* @return {*}
* @description 更新
* @param {*} context 上下文
* @param {*} data 行为数据
* @param \{{ action: string; isLoading?: boolean }} opts 行为参数
* @return {*} {Promise<any>}
* @memberof GridService
*/
public async update(context: any, data: any, opts: { action: string; isLoading?: boolean }): Promise<any> {
let _entityService: any = this.entityService;
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册