@@ -12,27 +12,85 @@ interface ActionModalProps {
1212 options : any [ ] ;
1313}
1414
15- export const ActionModal : React . FC < ActionModalProps > = ( props ) => {
16- const custom = props . custom ;
1715
16+ interface CustomScriptViewProps {
17+ options : any [ ] ;
18+ form : FormInstance < any > ;
19+ }
20+
21+ const CustomScriptView :React . FC < CustomScriptViewProps > = ( props ) => {
22+
23+ const trigger = props . form . getFieldValue ( "trigger" ) as string ;
24+
25+ const [ currentTrigger , setCurrentTrigger ] = React . useState ( trigger ) ;
1826
1927 const handleChangeNodeType = ( value : string ) => {
2028 const script = props . form . getFieldValue ( 'script' ) as string ;
21- const returnData = GroovyScriptConvertorUtil . getReturnScript ( script ) . trim ( ) ;
2229 let groovy ;
23- if ( returnData ) {
30+ if ( script ) {
31+ const returnData = GroovyScriptConvertorUtil . getReturnScript ( script ) . trim ( ) ;
2432 groovy = script . replace ( returnData , `'${ value } '` ) ;
33+ groovy = GroovyScriptConvertorUtil . updateScriptMeta ( groovy , `{"trigger":"${ value } "}` ) ;
2534 } else {
26- groovy = `// 自定义脚本,返回的数据为动作类型
35+ groovy = `// @CUSTOM_SCRIPT 自定义脚本,返回的数据为动作类型
2736 // @SCRIPT_META {"trigger":"${ value } "}
2837 def run(request){
2938 return '${ value } ';
3039 }
3140 `
3241 }
3342 props . form . setFieldValue ( "script" , GroovyScriptConvertorUtil . formatScript ( groovy ) ) ;
43+ setCurrentTrigger ( value ) ;
3444 }
3545
46+ return (
47+ < Col span = { 24 } >
48+ < Form . Item
49+ name = { "script" }
50+ label = { (
51+ < Space >
52+ 自定义脚本
53+ < Space . Compact size = { "small" } >
54+ < Space . Addon > 触发动作:</ Space . Addon >
55+ < Select
56+ style = { {
57+ width : '100px'
58+ } }
59+ value = { currentTrigger }
60+ placeholder = { "请选择触发动作类型" }
61+ options = { props . options }
62+ onChange = { handleChangeNodeType }
63+ />
64+ </ Space . Compact >
65+
66+
67+ </ Space >
68+ ) }
69+ required = { true }
70+ help = { "请先设置触发动作类型" }
71+
72+ rules = { [
73+ {
74+ required : true ,
75+ message : '自定义脚本不能为空'
76+ }
77+ ] }
78+ >
79+ < GroovyCodeEditor
80+ placeholder = { "请输入自定义脚本" }
81+ options = { {
82+ minHeight : 200
83+ } }
84+ />
85+ </ Form . Item >
86+ </ Col >
87+ )
88+ }
89+
90+ export const ActionModal : React . FC < ActionModalProps > = ( props ) => {
91+ const custom = props . custom ;
92+
93+
3694 return (
3795 < Modal
3896 width = { "60%" }
@@ -91,51 +149,9 @@ export const ActionModal: React.FC<ActionModalProps> = (props) => {
91149 </ Form . Item >
92150 </ Col >
93151
94-
95152 { custom && (
96- < >
97- < Col span = { 24 } >
98- < Form . Item
99- name = { "script" }
100- label = { (
101- < Space >
102- 自定义脚本
103- < Space . Compact size = { "small" } >
104- < Space . Addon > 触发动作:</ Space . Addon >
105- < Select
106- style = { {
107- width : '100px'
108- } }
109- placeholder = { "请选择触发动作类型" }
110- options = { props . options }
111- onChange = { handleChangeNodeType }
112- />
113- </ Space . Compact >
114-
115-
116- </ Space >
117- ) }
118- required = { true }
119- help = { "请先设置触发动作类型" }
120-
121- rules = { [
122- {
123- required : true ,
124- message : '自定义脚本不能为空'
125- }
126- ] }
127- >
128- < GroovyCodeEditor
129- placeholder = { "请输入自定义脚本" }
130- options = { {
131- minHeight : 200
132- } }
133- />
134- </ Form . Item >
135- </ Col >
136- </ >
153+ < CustomScriptView options = { props . options } form = { props . form } />
137154 ) }
138-
139155 </ Row >
140156
141157 </ Form >
0 commit comments