Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
iBiz-Vue-R7
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
22
议题
22
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
iBiz-R7前端标准模板
iBiz-Vue-R7
提交
193c7b56
提交
193c7b56
编写于
11月 07, 2022
作者:
Mosher
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
upadte:更新
上级
0620abbc
变更
2
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
234 行增加
和
207 行删除
+234
-207
%APP_DEUILOGIC%-ui-logic-base.ts.ftl
...service/%DE_PKGPATH%/%APP_DEUILOGIC%-ui-logic-base.ts.ftl
+13
-207
ui-logic-node.ftl
APP/src/uiservice/@MACRO/ui-logic-node.ftl
+221
-0
未找到文件。
APP/src/uiservice/%DE_PKGPATH%/%APP_DEUILOGIC%-ui-logic-base.ts.ftl
浏览文件 @
193c7b56
<#ibiztemplate>
TARGET=PSAPPDEUILOGIC
</#ibiztemplate>
import { ILogicNode } from "@/interface/logic";
import {
UIActionContext,
UILogicAppendParamNode,
UILogicBeginNode,
UILogicBindParamNode,
UILogicCopyParamNode,
UILogicDataSetNode,
UILogicDeActionNode,
UILogicDebugParamNode,
UILogicDeLogicNode,
UILogicDeUIActionNode,
UILogicEndNode,
UILogicMsgboxNode,
UILogicPrepareParamNode,
UILogicRawCodeNode,
UILogicReNewParamNode,
UILogicResetParamNode,
UILogicSortParamNode,
UILogicThrowExceptionNode,
UILogicViewctrlFireEventNode,
UILogicViewctrlInvokeNode
} from "@/logic/ui-logic";
<#ibizinclude>
../@MACRO/ui-logic-node.ftl
</#ibizinclude>
/**
* ${item.name}
*
...
...
@@ -86,67 +65,6 @@ export default class ${srfclassname('${item.getCodeName()}')}UILogicBase {
</#if>
];
/**
* 逻辑节点
*
* @protected
* @type {ILogicNode[]}
* @memberof ${srfclassname('${item.getCodeName()}')}UILogicBase
*/
protected logicNodes: ILogicNode[] = [
<#if item.getPSDEUILogicNodes?? && item.getPSDEUILogicNodes()??>
<#list item.getPSDEUILogicNodes() as logicNode>
<#assign node>
codeName: '${logicNode.codeName}',
name: '${logicNode.name}',
logicNodeType: '${logicNode.getLogicNodeType()}',
<#if logicNode.getDstPSDEUILogicParam?? && logicNode.getDstPSDEUILogicParam()??>
dstParam: '${logicNode.getDstPSDEUILogicParam().codeName}',
</#if>
<#if logicNode.getDstIndex?? && logicNode.getDstIndex()??>
dstIndex: '${logicNode.getDstIndex()?c}',
</#if>
<#if logicNode.getSrcPSDEUILogicParam?? && logicNode.getSrcPSDEUILogicParam()??>
srcParam: '${logicNode.getSrcPSDEUILogicParam().codeName}',
</#if>
<#if logicNode.getSrcFieldName?? && logicNode.getSrcFieldName()??>
srcFieldName: '${logicNode.getSrcFieldName()}',
</#if>
<#if logicNode.getSrcIndex?? && logicNode.getSrcIndex()??>
srcIndex: '${logicNode.getSrcIndex()?c}',
</#if>
<#if logicNode.getSrcSize?? && logicNode.getSrcSize()??>
srcSize: '${logicNode.getSrcSize()?c}',
</#if>
<#if logicNode.getReturnParam?? && logicNode.getReturnParam()??>
returnParam: '${logicNode.getReturnParam().codeName}',
</#if>
<#if logicNode.getReturnType?? && logicNode.getReturnType()??>
returnType: '${logicNode.getReturnType()}',
</#if>
<#if logicNode.getRawValue?? && logicNode.getRawValue()??>
returnRawValue: '${logicNode.getRawValue()}',
</#if>
<#if logicNode.getPSDEUILogicLinks?? && logicNode.getPSDEUILogicLinks()??>
logicLinks: [
<#list logicNode.getPSDEUILogicLinks() as link>
{
name: '${link.name}',
dstLogicNode: '${link.getDstPSDEUILogicNode().codeName}',
<#if link.getPSDEUILogicLinkGroupCond?? && link.getPSDEUILogicLinkGroupCond()??>
// 逻辑连接暂未支持
linkGroupCond: [],
</#if>
}
</#list>
]
</#if>
</#assign>
<@compress single_line=true>{ ${node} },</@compress>
</#list>
</#if>
];
/**
* 执行前
*
...
...
@@ -180,133 +98,21 @@ export default class ${srfclassname('${item.getCodeName()}')}UILogicBase {
async execute(args: any[], context:any = {} ,params: any = {}, $event?: any, xData?: any, actioncontext?: any, srfParentDeName?: string) {
try {
const actionContext = this.beforeExecute(args, context, params, $event, xData, actioncontext, srfParentDeName);
if (!this.startLogicNode) {
throw new Error('没有开始节点');
}
await this.executeNode(this.startLogicNode, actionContext);
<#if item.getStartPSDEUILogicNode?? && item.getStartPSDEUILogicNode()??>
await this.execute_${item.getStartPSDEUILogicNode().codeName}_node(actionContext);
<#else>
throw new Error('没有开始节点');
</#if>
return actionContext.getResult();
} catch (error: any) {
<#noparse>throw new Error(`${error && error.message ? error.message : '发生未知错误!'}`);</#noparse>
}
}
/**
* 执行节点
*
* @param {ILogicNode} logicNode
* @param {UIActionContext} actionContext
* @memberof ${srfclassname('${item.getCodeName()}')}UILogicBase
*/
async executeNode(logicNodeName: string, actionContext: UIActionContext) {
const logicNode = this.logicNodes.find((node: ILogicNode) => node.codeName === logicNodeName) as ILogicNode;
if (!logicNode) {
<#noparse>console.log(`未找到 ${logicNodeName} 节点`);</#noparse>
}
let result: any = { actionContext };
try {
switch (logicNode.logicNodeType) {
// 开始节点
case 'BEGIN':
result = await new UILogicBeginNode().executeNode(logicNode, actionContext);
break;
// 准备参数节点
case 'PREPAREJSPARAM':
result = await new UILogicPrepareParamNode().executeNode(logicNode, actionContext);
break;
// 重置参数节点
case 'RESETPARAM':
result = await new UILogicResetParamNode().executeNode(logicNode, actionContext);
break;
// 拷贝参数
case 'COPYPARAM':
result = await new UILogicCopyParamNode().executeNode(logicNode, actionContext);
break;
// 绑定参数
case 'BINDPARAM':
result = await new UILogicBindParamNode().executeNode(logicNode, actionContext);
break;
// 重新建立参数
case 'RENEWPARAM':
result = await new UILogicReNewParamNode().executeNode(logicNode, actionContext);
break;
// 调用实体界面行为
case 'DEUIACTION':
result = await new UILogicDeUIActionNode().executeNode(logicNode, actionContext);
break;
// 行为处理节点
case 'DEACTION':
result = await new UILogicDeActionNode().executeNode(logicNode, actionContext);
break;
// 实体处理逻辑
case 'DELOGIC':
result = await new UILogicDeLogicNode().executeNode(logicNode, actionContext);
break;
// 实体数据集
case 'DEDATASET':
result = await new UILogicDataSetNode().executeNode(logicNode, actionContext);
break;
// 附加到数组参数
case 'APPENDPARAM':
result = await new UILogicAppendParamNode().executeNode(logicNode, actionContext);
break;
// 排序数组参数
case 'SORTPARAM':
result = await new UILogicSortParamNode().executeNode(logicNode, actionContext);
break;
// 视图部件调用
case 'VIEWCTRLINVOKE':
result = await new UILogicViewctrlInvokeNode().executeNode(logicNode, actionContext);
break;
// 视图部件事件触发
case 'VIEWCTRLFIREEVENT':
result = await new UILogicViewctrlFireEventNode().executeNode(logicNode, actionContext);
break;
// 调试逻辑参数
case 'DEBUGPARAM':
result = await new UILogicDebugParamNode().executeNode(logicNode, actionContext);
break;
// 消息弹窗
case 'MSGBOX':
result = await new UILogicMsgboxNode().executeNode(logicNode, actionContext);
break;
// 前端代码
case 'RAWJSCODE':
result = await new UILogicRawCodeNode().executeNode(logicNode, actionContext);
break;
// 异常处理
case 'THROWEXCEPTION':
result = await new UILogicThrowExceptionNode().executeNode(logicNode, actionContext);
break;
// 结束
case 'END':
result = await new UILogicEndNode().executeNode(logicNode, actionContext);
break;
default:
<#noparse>console.log(`${logicNode.logicNodeType}暂未支持`);</#noparse>
}
// 有后续节点时继续递归,反之返回,抛异常无返回值
if (result && result.nextNodes && result.nextNodes.length > 0) {
await this.executeNextNodes(result.nextNodes, actionContext);
}
} catch (error: any) {
<#noparse>throw new Error(`${error && error.message ? error.message : '发生未知错误!'}`);</#noparse>
}
}
/**
* 执行后续节点集合
*
* @param {any[]} nextNodes
* @param {UIActionContext} actionContext
* @memberof ${srfclassname('${item.getCodeName()}')}UILogicBase
*/
public async executeNextNodes(nextNodes: any[], actionContext: UIActionContext) {
if (nextNodes && (nextNodes.length > 0)) {
for (let nextNode of nextNodes) {
await this.executeNode(nextNode, actionContext);
}
}
}
<#if item.getPSDEUILogicNodes?? && item.getPSDEUILogicNodes()??>
<#list item.getPSDEUILogicNodes() as logicNode>
<@executenode logicNode/>
</#list>
</#if>
}
\ No newline at end of file
APP/src/uiservice/@MACRO/ui-logic-node.ftl
0 → 100644
浏览文件 @
193c7b56
<#-- START: 计算下一节点 -->
<#macro computeNextNode logicNode>
<#if logicNode.getPSDEUILogicLinks?? && logicNode.getPSDEUILogicLinks()??>
<#list logicNode.getPSDEUILogicLinks() as link>
<#if link.getDstPSDEUILogicNode?? && link.getDstPSDEUILogicNode()??>
<#if link.getPSDEUILogicLinkGroupCond?? && link.getPSDEUILogicLinkGroupCond()??>
// 暂未支持连接条件
</#if>
await this.execute_${link.getDstPSDEUILogicNode().codeName?lower_case}_node(actionContext);
</#if>
</#list>
</#if>
</#macro>
<#-- END: 计算下一节点 -->
<#-- START: 开始节点 -->
<#macro beginNode logicNode>
actionContext.setResult(actionContext.defaultParam.getReal());
console.log('已完成执行 ${logicNode.name} 节点');
</#macro>
<#-- END: 开始节点 -->
<#-- START: 准备处理参数节点 -->
<#macro prepareParamNode logicNode>
// TODO 等待补充
console.log('已完成执行 ${logicNode.name} 节点');
</#macro>
<#-- END: 准备处理参数节点 -->
<#-- START: 重置参数节点 -->
<#macro resetParamNode logicNode>
// TODO 等待补充
console.log('已完成执行 ${logicNode.name} 节点');
</#macro>
<#-- END: 重置参数节点 -->
<#-- START: 拷贝参数节点 -->
<#macro copyParamNode logicNode>
// TODO 等待补充
console.log('已完成执行 ${logicNode.name} 节点');
</#macro>
<#-- END: 拷贝参数节点 -->
<#-- START: 绑定参数节点 -->
<#macro bindParamNode logicNode>
// TODO 等待补充
console.log('已完成执行 ${logicNode.name} 节点');
</#macro>
<#-- END: 绑定参数节点 -->
<#-- START: 重新建立参数节点 -->
<#macro renewParamNode logicNode>
// TODO 等待补充
console.log('已完成执行 ${logicNode.name} 节点');
</#macro>
<#-- END: 重新建立参数节点 -->
<#-- START: 调用实体界面行为节点 -->
<#macro deUIActionNode logicNode>
// TODO 等待补充
console.log('已完成执行 ${logicNode.name} 节点');
</#macro>
<#-- END: 调用实体界面行为节点 -->
<#-- START: 行为处理节点 -->
<#macro deActionNode logicNode>
// TODO 等待补充
console.log('已完成执行 ${logicNode.name} 节点');
</#macro>
<#-- END: 行为处理节点 -->
<#-- START: 实体处理逻辑节点 -->
<#macro deLogicNode logicNode>
// TODO 等待补充
console.log('已完成执行 ${logicNode.name} 节点');
</#macro>
<#-- END: 实体处理逻辑节点 -->
<#-- START: 实体数据集节点 -->
<#macro deDataSetNode logicNode>
// TODO 等待补充
console.log('已完成执行 ${logicNode.name} 节点');
</#macro>
<#-- END: 实体数据集节点 -->
<#-- START: 附加到数组参数节点 -->
<#macro appendParamNode logicNode>
// TODO 等待补充
console.log('已完成执行 ${logicNode.name} 节点');
</#macro>
<#-- END: 附加到数组参数节点 -->
<#-- START: 排序数组参数节点 -->
<#macro sortParamNode logicNode>
// TODO 等待补充
console.log('已完成执行 ${logicNode.name} 节点');
</#macro>
<#-- END: 排序数组参数节点 -->
<#-- START: 视图部件调用节点 -->
<#macro viewCtrlInvokeNode logicNode>
// TODO 等待补充
console.log('已完成执行 ${logicNode.name} 节点');
</#macro>
<#-- END: 视图部件调用节点 -->
<#-- START: 视图部件事件触发节点 -->
<#macro viewCtrlFireEventNode logicNode>
// TODO 等待补充
console.log('已完成执行 ${logicNode.name} 节点');
</#macro>
<#-- END: 视图部件事件触发节点 -->
<#-- START: 调试逻辑参数节点 -->
<#macro debugParamNode logicNode>
// TODO 等待补充
console.log('已完成执行 ${logicNode.name} 节点');
</#macro>
<#-- END: 调试逻辑参数节点 -->
<#-- START: 消息弹窗节点 -->
<#macro msgBoxNode logicNode>
// TODO 等待补充
console.log('已完成执行 ${logicNode.name} 节点');
</#macro>
<#-- END: 消息弹窗节点 -->
<#-- START: 前端代码节点 -->
<#macro rawJSCoreNode logicNode>
// TODO 等待补充
console.log('已完成执行 ${logicNode.name} 节点');
</#macro>
<#-- END: 前端代码节点 -->
<#-- START: 异常处理节点 -->
<#macro throwExceptionNode logicNode>
// TODO 等待补充
console.log('已完成执行 ${logicNode.name} 节点');
</#macro>
<#-- END: 异常处理节点 -->
<#-- START: 结束节点 -->
<#macro endNode logicNode>
// TODO 等待补充
console.log('已完成执行 ${logicNode.name} 节点');
</#macro>
<#-- END: 结束节点 -->
<#-- 执行节点 -->
<#macro executenode logicNode>
/**
* 处理参数
*
* @param {UIActionContext} actionContext 界面逻辑上下文
*/
protected async execute_${logicNode.codeName?lower_case}_node(actionContext: UIActionContext) {
// <#if item?? && item.name??>${item.name}</#if>
<#if logicNode.getLogicNodeType() == 'BEGIN'>
<#-- 开始节点 -->
<@beginNode logicNode/>
<#elseif logicNode.getLogicNodeType() == 'PREPAREJSPARAM'>
<#-- 准备参数节点 -->
<@prepareParamNode logicNode/>
<#elseif logicNode.getLogicNodeType() == 'RESETPARAM'>
<#-- 重置参数节点 -->
<@resetParamNode logicNode/>
<#elseif logicNode.getLogicNodeType() == 'COPYPARAM'>
<#-- 拷贝参数节点 -->
<@copyParamNode logicNode/>
<#elseif logicNode.getLogicNodeType() == 'BINDPARAM'>
<#-- 绑定参数节点 -->
<@bindParamNode logicNode/>
<#elseif logicNode.getLogicNodeType() == 'RENEWPARAM'>
<#-- 重新建立参数节点 -->
<@renewParamNode logicNode/>
<#elseif logicNode.getLogicNodeType() == 'DEUIACTION'>
<#-- 调用实体界面行为节点 -->
<@deUIActionNode logicNode/>
<#elseif logicNode.getLogicNodeType() == 'DEACTION'>
<#-- 行为处理节点 -->
<@deActionNode logicNode/>
<#elseif logicNode.getLogicNodeType() == 'DELOGIC'>
<#-- 实体处理逻辑节点 -->
<@deLogicNode logicNode/>
<#elseif logicNode.getLogicNodeType() == 'DEDATASET'>
<#-- 实体数据集节点 -->
<@deDataSetNode logicNode/>
<#elseif logicNode.getLogicNodeType() == 'APPENDPARAM'>
<#-- 附加到数组参数节点 -->
<@appendParamNode logicNode/>
<#elseif logicNode.getLogicNodeType() == 'SORTPARAM'>
<#-- 排序数组参数节点 -->
<@sortParamNode logicNode/>
<#elseif logicNode.getLogicNodeType() == 'VIEWCTRLINVOKE'>
<#-- 视图部件调用节点 -->
<@viewCtrlInvokeNode logicNode/>
<#elseif logicNode.getLogicNodeType() == 'VIEWCTRLFIREEVENT'>
<#-- 视图部件事件触发节点 -->
<@viewCtrlFireEventNode logicNode/>
<#elseif logicNode.getLogicNodeType() == 'DEBUGPARAM'>
<#-- 调试逻辑参数节点 -->
<@debugParamNode logicNode/>
<#elseif logicNode.getLogicNodeType() == 'MSGBOX'>
<#-- 消息弹窗节点 -->
<@msgBoxNode logicNode/>
<#elseif logicNode.getLogicNodeType() == 'RAWJSCODE'>
<#-- 前端代码节点 -->
<@rawJSCoreNode logicNode/>
<#elseif logicNode.getLogicNodeType() == 'THROWEXCEPTION'>
<#-- 异常处理节点 -->
<@throwExceptionNode logicNode/>
<#elseif logicNode.getLogicNodeType() == 'END'>
<#-- 结束节点 -->
<@endNode logicNode/>
<#else>
console.log('${logicNode.getLogicNodeType()}暂未支持');
</#if>
<@computeNextNode logicNode/>
}
</#macro>
\ No newline at end of file
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录