Skip to content

Commit b6e45ae

Browse files
committed
1 parent cbc3072 commit b6e45ae

17 files changed

Lines changed: 263 additions & 113 deletions

File tree

frontend/packages/flow-pc/flow-pc-design/src/components/design-panel/tabs/base.tsx

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,24 @@
11
import React from "react";
22
import {Button, Input, Space} from "antd";
3-
import {Panel} from "@flow-engine/flow-pc-ui";
4-
import {CardForm} from "@flow-engine/flow-pc-ui";
3+
import {CardForm, Panel} from "@flow-engine/flow-pc-ui";
54
import {useDesignContext} from "../hooks/use-design-context";
65
import {GroovyScriptPreview} from "@/components/script/components/groovy-script-preview";
7-
import { EditOutlined } from "@ant-design/icons";
6+
import {EditOutlined} from "@ant-design/icons";
7+
import {OperatorCreateConfigModal} from "@/components/script/operator-create-config-modal";
88

99

10-
interface FlowCreateOperatorEditorProps{
11-
value?:string;
12-
onChange?:(value:string) => void;
10+
interface FlowCreateOperatorEditorProps {
11+
value?: string;
12+
onChange?: (value: string) => void;
1313
}
1414

15-
const FlowCreateOperatorEditor:React.FC<FlowCreateOperatorEditorProps> = (props)=>{
15+
const FlowCreateOperatorEditor: React.FC<FlowCreateOperatorEditorProps> = (props) => {
1616

1717
const script = props.value || '';
1818

19+
const [visible, setVisible] = React.useState(false);
20+
21+
1922
return (
2023
<Space.Compact style={{width: '100%'}}>
2124
<GroovyScriptPreview
@@ -25,11 +28,23 @@ const FlowCreateOperatorEditor:React.FC<FlowCreateOperatorEditorProps> = (props)
2528
<Button
2629
icon={<EditOutlined/>}
2730
onClick={() => {
31+
setVisible(true);
2832
}}
2933
style={{borderRadius: '0 6px 6px 0'}}
3034
>
3135
编辑
3236
</Button>
37+
38+
<OperatorCreateConfigModal
39+
open={visible}
40+
script={script}
41+
onCancel={() => {
42+
setVisible(false);
43+
}}
44+
onConfirm={(script) => {
45+
props.onChange?.(script);
46+
}}
47+
/>
3348
</Space.Compact>
3449
)
3550
}
@@ -69,7 +84,7 @@ export const TabBase = () => {
6984
}
7085
});
7186

72-
return ()=>{
87+
return () => {
7388
formActionContext.removeAction('base');
7489
formActionContext.removeAction('operator');
7590
}

frontend/packages/flow-pc/flow-pc-design/src/components/script/components/advanced-script-editor.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export const ScriptEditor:React.FC<ScriptEditorProps> = (props: ScriptEditorProp
5050

5151
export const AdvancedScriptEditor: React.FC<GroovyScriptContent> = (props) => {
5252

53-
const groovyScriptConvertor = GroovyScriptConverterContext.getInstance().createConverter(props.type, props.content, props.variables);
53+
const groovyScriptConvertor = GroovyScriptConverterContext.getInstance().createConverter(props.type, props.script, props.variables);
5454

5555
if(groovyScriptConvertor) {
5656

@@ -59,7 +59,7 @@ export const AdvancedScriptEditor: React.FC<GroovyScriptContent> = (props) => {
5959
自定义脚本
6060
<ScriptEditor
6161
type={props.type}
62-
script={props.content}
62+
script={props.script}
6363
variables={props.variables}
6464
onChange={props.onChange}
6565
/>

frontend/packages/flow-pc/flow-pc-design/src/components/script/components/groovy-script-modal.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {GroovyVariableMapping, ScriptType} from "@/components/script/typings";
66
export interface GroovyScriptModalProps {
77
open: boolean;
88
/** 脚本类型 */
9-
scriptType: ScriptType;
9+
type: ScriptType;
1010
/** 当前脚本 */
1111
script: string;
1212
/** 变量映射列表 */
@@ -26,7 +26,7 @@ export interface GroovyScriptContent {
2626
/** 脚本类型 */
2727
type: ScriptType;
2828
/** 当前脚本 */
29-
content: string;
29+
script: string;
3030
/** 变量映射列表 */
3131
variables: GroovyVariableMapping[];
3232
/** 确认回调 */
@@ -56,8 +56,8 @@ const GroovyScriptContentComponent: React.FC<GroovyScriptContentComponentProps>
5656

5757
return (
5858
<GroovyContent
59-
type={props.scriptType}
60-
content={content}
59+
type={props.type}
60+
script={content}
6161
variables={props.variables}
6262
onChange={setContent}
6363
/>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
2+
// 默认发起人范围设置脚本,任意人员
3+
export const DEFAULT_OPERATOR_CREATE_SCRIPT = `
4+
// @SCRIPT_TITLE 任意人员
5+
def run(request){
6+
return true;
7+
}
8+
`;
9+
10+
// 默认节点标题配置脚本,您有一条待办消息
11+
export const DEFAULT_NODE_TITLE_SCRIPT = `
12+
// @SCRIPT_TITLE 您有一条待办消息
13+
def run(request){\nreturn \"您有一条待办消息\"\n}
14+
`
15+

frontend/packages/flow-pc/flow-pc-design/src/components/script/node-title-config-modal.tsx

Lines changed: 6 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,12 @@
11
import React from 'react';
2-
import {Button, Input, Space} from 'antd';
32
import {GroovyScriptContent, GroovyScriptModal} from "./components/groovy-script-modal";
4-
import {GroovyScriptPreview} from "@/components/script/components/groovy-script-preview";
5-
import {CodeOutlined, DeleteOutlined} from "@ant-design/icons";
6-
import {NodeTitleGroovyConvertor} from "./services/convertor/node-title";
7-
import {
8-
AdvancedScriptEditor
9-
} from "@/components/script/components/advanced-script-editor";
10-
import {VariablePicker} from "@/components/script/components/variable-picker";
3+
import {AdvancedScriptEditor} from "@/components/script/components/advanced-script-editor";
114
import {GroovyVariableMapping, ScriptType} from "@/components/script/typings";
125
import {GroovyScriptConvertorUtil} from "@/components/script/utils/convertor";
13-
14-
const {TextArea} = Input;
6+
import {NodeTitlePluginView} from "@/components/script/plugins/view/node-title-view";
157

168
export interface NodeTitleConfigModalProps {
9+
/** 是否展示 **/
1710
open: boolean;
1811
/** 当前脚本 */
1912
script: string;
@@ -25,82 +18,16 @@ export interface NodeTitleConfigModalProps {
2518
onConfirm: (script: string) => void;
2619
}
2720

28-
29-
const NodeTitleDefaultContent: React.FC<GroovyScriptContent> = (props) => {
30-
31-
const nodeTitleGroovyConvertor = new NodeTitleGroovyConvertor(props.content, props.variables);
32-
33-
const title = GroovyScriptConvertorUtil.getScriptTitle(props.content);
34-
35-
return (
36-
<div>
37-
<div>
38-
预览
39-
<GroovyScriptPreview
40-
script={props.content}
41-
multiline={true}
42-
/>
43-
</div>
44-
45-
46-
<div>
47-
内容
48-
<TextArea
49-
value={title}
50-
onChange={(e) => {
51-
props.onChange(nodeTitleGroovyConvertor.resetExpression(e.target.value));
52-
}}
53-
placeholder="请输入标题配置脚本,支持使用变量"
54-
autoSize={{minRows: 3, maxRows: 12}}
55-
/>
56-
</div>
57-
58-
<Space
59-
style={{
60-
marginTop: 8
61-
}}
62-
>
63-
<VariablePicker
64-
mappings={props.variables}
65-
onSelect={(variable) => {
66-
props.onChange(nodeTitleGroovyConvertor.addVariable(variable));
67-
}}
68-
/>
69-
<Button
70-
icon={<CodeOutlined/>}
71-
onClick={() => {
72-
props.onChange(GroovyScriptConvertorUtil.toCustomScript(props.content));
73-
}}
74-
>
75-
高级配置
76-
</Button>
77-
<Button
78-
icon={<DeleteOutlined/>}
79-
danger={true}
80-
onClick={() => {
81-
props.onChange(nodeTitleGroovyConvertor.getDefaultScript());
82-
}}
83-
>
84-
重置配置
85-
</Button>
86-
</Space>
87-
</div>
88-
);
89-
}
90-
91-
9221
const NodeTitleConfigContent: React.FC<GroovyScriptContent> = (props) => {
93-
const isAdvance = GroovyScriptConvertorUtil.isCustomScript(props.content);
94-
95-
console.log('NodeTitleConfigContent script', props.content);
22+
const isAdvance = GroovyScriptConvertorUtil.isCustomScript(props.script);
9623

9724
return (
9825
<>
9926
{isAdvance && (
10027
<AdvancedScriptEditor {...props} />
10128
)}
10229
{!isAdvance && (
103-
<NodeTitleDefaultContent {...props} />
30+
<NodeTitlePluginView {...props} />
10431
)}
10532
</>
10633
);
@@ -114,7 +41,7 @@ export const NodeTitleConfigModal: React.FC<NodeTitleConfigModalProps> = (props)
11441

11542
return (
11643
<GroovyScriptModal
117-
scriptType={ScriptType.TITLE}
44+
type={ScriptType.TITLE}
11845
open={props.open}
11946
script={props.script}
12047
variables={props.variables || []}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import React from "react";
2+
import {GroovyScriptContent, GroovyScriptModal} from "@/components/script/components/groovy-script-modal";
3+
import {ScriptType} from "@/components/script/typings";
4+
import {GroovyScriptConvertorUtil} from "@/components/script/utils/convertor";
5+
import {AdvancedScriptEditor} from "@/components/script/components/advanced-script-editor";
6+
import {OperatorCreatePluginView} from "@/components/script/plugins/view/operator-create-view";
7+
8+
9+
interface OperatorCreateConfigModalProps{
10+
/** 是否展示 **/
11+
open: boolean;
12+
/** 当前脚本 */
13+
script: string;
14+
/** 取消回调 */
15+
onCancel: () => void;
16+
/** 确认回调 */
17+
onConfirm: (script: string) => void;
18+
}
19+
20+
21+
const OperatorCreateConfigContent :React.FC<GroovyScriptContent> = (props)=>{
22+
23+
const isAdvance = GroovyScriptConvertorUtil.isCustomScript(props.script);
24+
25+
return (
26+
<>
27+
{isAdvance && (
28+
<AdvancedScriptEditor {...props} />
29+
)}
30+
{!isAdvance && (
31+
<OperatorCreatePluginView script={props.script} onChange={props.onChange} />
32+
)}
33+
</>
34+
);
35+
}
36+
37+
38+
export const OperatorCreateConfigModal:React.FC<OperatorCreateConfigModalProps> = (props) => {
39+
40+
return (
41+
<GroovyScriptModal
42+
title={"发起人员配置"}
43+
type={ScriptType.OPERATOR_CREATE}
44+
variables={[]}
45+
script={props.script}
46+
content={OperatorCreateConfigContent}
47+
open={props.open}
48+
onCancel={props.onCancel}
49+
onConfirm={props.onConfirm}
50+
/>
51+
)
52+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import {GroovyVariableMapping, ScriptType} from "@/components/script/typings";
2+
3+
export const VIEW_KEY = 'NodeTitleViewPlugin';
4+
5+
export interface NodeTitleViewPlugin {
6+
/** 脚本类型 */
7+
type: ScriptType;
8+
/** 当前脚本 */
9+
script: string;
10+
/** 变量映射列表 */
11+
variables: GroovyVariableMapping[];
12+
/** 确认回调 */
13+
onChange: (script: string) => void;
14+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
export const VIEW_KEY = 'OperatorCreateViewPlugin';
2+
3+
export interface OperatorCreateViewPlugin {
4+
/** 当前脚本 */
5+
script: string;
6+
/** 确认回调 */
7+
onChange: (script: string) => void;
8+
}

0 commit comments

Comments
 (0)