diff --git a/src/components/common/dynamic-input.vue b/src/components/common/dynamic-input.vue
new file mode 100644
index 0000000..6ad3cde
--- /dev/null
+++ b/src/components/common/dynamic-input.vue
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
=
+
+
+
+
+
+
(
+
+
+
+
)
+
+
+
+
+
diff --git a/src/components/workflow/modules/drawer/branch-drawer.vue b/src/components/workflow/modules/drawer/branch-drawer.vue
index b1790fe..8d04ac8 100644
--- a/src/components/workflow/modules/drawer/branch-drawer.vue
+++ b/src/components/workflow/modules/drawer/branch-drawer.vue
@@ -35,7 +35,8 @@ const drawer = ref(false);
const form = ref({
decision: {
logicalCondition: 1,
- expressionType: 1
+ expressionType: 1,
+ checkContent: []
}
});
@@ -93,6 +94,8 @@ const checkNodeExpression = async () => {
if (data.key !== 1) {
return Promise.reject(data.value ?? '请检查条件表达式');
}
+ } else {
+ return Promise.reject(new Error('接口请求失败'));
}
return Promise.resolve();
};
@@ -153,6 +156,9 @@ const rules: FormRules = {
:extensions="[oneDark]"
/>
+
+
+
diff --git a/src/components/workflow/modules/nodes/branch-node.vue b/src/components/workflow/modules/nodes/branch-node.vue
index aa4b09a..fde7f4f 100644
--- a/src/components/workflow/modules/nodes/branch-node.vue
+++ b/src/components/workflow/modules/nodes/branch-node.vue
@@ -44,7 +44,7 @@ watch(
const addTerm = () => {
const len = nodeConfig.value.conditionNodes!.length;
nodeConfig.value.conditionNodes!.splice(-1, 0, {
- nodeName: `${$t('workflow.node.condition.nodeName')} ${len}`,
+ nodeName: `${$t('workflow.node.condition.conditionNodes.nodeName')} ${len}`,
priorityLevel: len,
decision: {
expressionType: 1,
diff --git a/src/service/api/workflow.ts b/src/service/api/workflow.ts
index ae169cc..784e130 100644
--- a/src/service/api/workflow.ts
+++ b/src/service/api/workflow.ts
@@ -1,3 +1,4 @@
+import { parseContent } from '@/utils/common';
import { request } from '../request';
/** get workflow page list */
@@ -67,7 +68,10 @@ export function fetchCheckNodeExpression(expression: Workflow.BrachNodeType) {
return request<{ key: number; value: string }>({
url: '/workflow/check-node-expression',
method: 'post',
- data: expression
+ data: {
+ ...expression,
+ checkContent: JSON.stringify(parseContent(expression.checkContent))
+ }
});
}
diff --git a/src/typings/workflow.d.ts b/src/typings/workflow.d.ts
index eb80557..a3488a6 100644
--- a/src/typings/workflow.d.ts
+++ b/src/typings/workflow.d.ts
@@ -85,6 +85,8 @@ declare namespace Workflow {
type BrachNodeType = {
/** 条件节点表达式 */
nodeExpression?: string;
+ /** 模拟上下文 */
+ checkContent?: { key: string; value: string | number | boolean; type: string }[];
/** 表达式类型 */
expressionType?: Api.Common.Expression;
/** 判定逻辑 */
diff --git a/src/utils/common.ts b/src/utils/common.ts
index a275407..c499d63 100644
--- a/src/utils/common.ts
+++ b/src/utils/common.ts
@@ -160,3 +160,22 @@ export function parseArgsJson(value: string) {
return argsJson;
}
+
+export function parseContent(value?: { key: string; value: string | number | boolean; type: string }[]) {
+ if (!value) return undefined;
+ return value.reduce<{ [key: string]: string | number | boolean }>((obj, item) => {
+ if (item.type === 'string') {
+ obj[item.key] = String(item.value);
+ }
+
+ if (item.type === 'boolean') {
+ obj[item.key] = item.value === 0;
+ }
+
+ if (item.type === 'number') {
+ obj[item.key] = Number(item.value);
+ }
+
+ return obj;
+ }, {});
+}