提交 c8e48f99 编写于 作者: WodahsOrez's avatar WodahsOrez

update: 表单部件服务

上级 67c0d6a9
......@@ -21,33 +21,29 @@ export class FormControl extends MainControl {
* 2. 表单项更新
* 3. 动态控制逻辑
* 4. 自动保存逻辑
*
*
* @param {string} name 属性名称
* @param {*} value 属性值
* @memberof FormControl
*/
public formDataChange(name: string, value: any) {
this.controlState.data[name] = value;
// TODO 重置项逻辑
// TODO 表单项更新
// TODO 动态控制逻辑
// TODO 自动保存(可以单独做一个逻辑块,监听data的变化)
// TODO 重置项逻辑
// TODO 表单项更新
// TODO 动态控制逻辑
// TODO 自动保存(可以单独做一个逻辑块,监听data的变化)
}
/**
* 在表单执行某些行为能力后,表单整体数据发生改变后被调用。会依次执行以下逻辑:
* 1.
* 1.
*
* @param {string} action 调用的表单行为方法
*/
public afterFormLoad(action: string){
public afterFormLoad(action: string) {
// 改变context当前实体主键,并抛出抽屉脏值的事件
// TODO 设置表单项启用(如果可以响应式变化则不用处理)
// 新建默认值和更新默认值
// TODO 动态控制逻辑
}
......@@ -70,7 +66,7 @@ export class FormControl extends MainControl {
try {
// 获取需要的状态变量
const { controlService, context, viewParams, showBusyIndicator } = this.controlState;
// 判断实体行为
const loadAction = this.controlState.controlAction.loadAction;
if (!loadAction) {
......@@ -82,16 +78,23 @@ export class FormControl extends MainControl {
let _viewParams = deepCopy(viewParams);
// 发起请求处理与解析请求
const response = await controlService.get(loadAction, _context, { viewParams: _viewParams }, showBusyIndicator);
const response = await controlService.get(
_context,
{ viewParams: _viewParams },
{
action: loadAction,
isLoading: showBusyIndicator,
},
);
if (!response.status || response.status !== 200) {
return;
}
// 请求后处理
this.controlState.data = response.data;
} catch (error) {
// todo 错误异常处理
// TODO 错误异常处理
console.log(error);
}
};
......@@ -133,27 +136,37 @@ export class FormControl extends MainControl {
try {
// 获取需要的状态变量
const { controlService, context, viewParams, showBusyIndicator, data } = this.controlState;
// TODO 值规则校验处理
// TODO 值规则校验处理
// 判断实体行为
const { updateAction, createAction } = this.controlState.controlAction;
const saveAction: any = data.srfuf == '1' ? updateAction : createAction;
const saveFunName = data.srfuf == '1' ? 'update' : 'create';
if (!saveAction) {
return;
}
// 处理请求参数
let _context = deepCopy(context);
let _viewParams = deepCopy(viewParams);
const arg: any = { ...opt };
Object.assign(arg, data.getDo());
Object.assign(arg, { viewParams: _viewParams });
// TODO 关系界面保存通知处理,做成异步。
// TODO 拷贝相关。
// 发起请求处理与解析请求
const response = await controlService.get(saveAction, _context, { viewParams: _viewParams }, showBusyIndicator);
const response = await controlService[saveFunName](
_context,
arg,
{
action: saveAction,
isLoading: showBusyIndicator,
},
);
if (!response.status || response.status !== 200) {
// TODO 统一Error格式
return;
......@@ -163,9 +176,9 @@ export class FormControl extends MainControl {
this.controlState.data = response.data;
// TODO 表单onFormLoad
} catch (error) {
// TODO 错误异常处理
console.log(error);
}
};
......@@ -187,6 +200,78 @@ export class FormControl extends MainControl {
};
}
/**
* @description 使用加载功能模块
* @param {FormControlProps} props 传入的props
* @return {*}
* @memberof FormControl
*/
public useRemove(props: FormControlProps) {
const { viewSubject, controlName } = this.controlState;
/**
* 删除行为
*
* @param [opt={}]
* @return {*}
*/
const remove = async (opt: any = {}) => {
try {
// 获取需要的状态变量
const { controlService, context, viewParams, showBusyIndicator } = this.controlState;
// 判断实体行为
const removeAction = this.controlState.controlAction.removeAction;
if (!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: removeAction,
isLoading:showBusyIndicator
},
);
if (!response.status || response.status !== 200) {
return;
}
// 请求后处理
this.controlState.data = 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('load', action)) {
remove(data);
}
});
// 部件卸载时退订viewSubject
onUnmounted(() => {
subscription.unsubscribe();
});
}
return {
remove: remove,
};
}
/**
* @description 处理编辑器事件
* @param {IActionParam} actionParam 行为参数
......
......@@ -12,6 +12,21 @@ export class ControlVOBase {
*/
public $ownKeys: string[] = [];
/**
* "0"是新建数据,"1"是已存在的数据
*/
get srfuf(){
if(this.$DO.srfuf){
return this.$DO.srfuf
}else{
return this.srfkey ? "1" : "0"
}
}
set srfuf(value: any){
this.$DO.srfuf = value;
}
/**
* 用后台数据对象创建部件数据对象
* @param data 后台数据
......
......@@ -18,7 +18,7 @@ export class ControlServiceBase {
* @param [opts={}]
*/
public handleResponse(response: any, opts: any = {}) {
// todo srfuf判断
// TODO 转化代码表
return response;
}
}
......@@ -6,6 +6,8 @@ import { Http } from '@ibiz-core';
*/
export class EntityService{
[key: string]: any;
constructor(opts?: any) {
}
......@@ -14,4 +16,5 @@ export class EntityService{
// TODO
public GET(){}
}
\ No newline at end of file
import { ControlServiceBase, hasFunction } from '@ibiz-core';
import { createUUID } from 'qx-util';
import { {{pascalCase ctrl.psAppDataEntity.codeName}}Service } from '@service/{{spinalCase ctrl.psAppDataEntity.codeName}}/{{spinalCase ctrl.psAppDataEntity.codeName}}-service';
import { {{pascalCase ctrl.psAppDataEntity.codeName}}Service } from '@service/entity/{{spinalCase ctrl.psAppDataEntity.codeName}}/{{spinalCase ctrl.psAppDataEntity.codeName}}-service';
import { ControlVO } from './{{spinalCase ctrl.codeName}}-form-config';
export class ControlService extends ControlServiceBase {
......@@ -22,9 +22,10 @@ export class ControlService extends ControlServiceBase {
const { context: Context, data: Data } = this.handleRequestData(context, data, opts);
// todo主键
const action = hasFunction(this.entityService, opts.action) ? opts.action : 'GetDraft';
const response = await this.entityService[opts.action](Context, Data, opts.isLoading);
const response = await this.entityService[action](Context, Data, opts.isLoading);
// this.setRemoteCopyData(response);
response.data = new ControlVO(response.data);
response.data.srfuf = "0";
return this.handleResponse(response, opts);
}
......@@ -39,7 +40,7 @@ export class ControlService extends ControlServiceBase {
public async get(context: any, data: any, opts: { action: string; isLoading?: boolean }): Promise<any> {
const { context: Context, data: Data } = this.handleRequestData(context, data, opts);
const action = hasFunction(this.entityService, opts.action) ? opts.action : 'GET';
const response = await this.entityService[opts.action](Context, Data, opts.isLoading);
const response = await this.entityService[action](Context, Data, opts.isLoading);
// this.setRemoteCopyData(response);
response.data = new ControlVO(response.data);
return this.handleResponse(response, opts);
......@@ -56,7 +57,7 @@ export class ControlService extends ControlServiceBase {
public async create(context: any, data: any, opts: { action: string; isLoading?: boolean }): Promise<any> {
const { context: Context, data: Data } = this.handleRequestData(context, data, opts);
const action = hasFunction(this.entityService, opts.action) ? opts.action : 'Create';
const response = await this.entityService[opts.action](Context, Data, opts.isLoading);
const response = await this.entityService[action](Context, Data, opts.isLoading);
response.data = new ControlVO(response.data);
return this.handleResponse(response, opts);
}
......@@ -69,10 +70,10 @@ export class ControlService extends ControlServiceBase {
* @param opts
* @return {*}
*/
public async delete(context: any, data: any, opts: { action: string; isLoading?: boolean }): Promise<any> {
public async remove(context: any, data: any, opts: { action: string; isLoading?: boolean }): Promise<any> {
const { context: Context, data: Data } = this.handleRequestData(context, data, opts);
const action = hasFunction(this.entityService, opts.action) ? opts.action : 'Remove';
const response = await this.entityService[opts.action](Context, Data, opts.isLoading);
const response = await this.entityService[action](Context, Data, opts.isLoading);
response.data = new ControlVO(response.data);
return this.handleResponse(response, opts);
}
......@@ -88,7 +89,7 @@ export class ControlService extends ControlServiceBase {
public async update(context: any, data: any, opts: { action: string; isLoading?: boolean }): Promise<any> {
const { context: Context, data: Data } = this.handleRequestData(context, data, opts);
const action = hasFunction(this.entityService, opts.action) ? opts.action : 'Update';
const response = await this.entityService[opts.action](Context, Data, opts.isLoading);
const response = await this.entityService[action](Context, Data, opts.isLoading);
response.data = new ControlVO(response.data);
return this.handleResponse(response, opts);
}
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册