11import React from "react" ;
2- import { Divider } from "antd" ;
2+ import { Button , Divider , Space } from "antd" ;
33import { ProForm , ProFormDigit , ProFormSelect , ProFormSwitch , ProFormText } from "@ant-design/pro-components" ;
4- import { EyeOutlined } from "@ant-design/icons" ;
4+ import { EyeOutlined , SettingOutlined } from "@ant-design/icons" ;
55import GroovyScript from "@/components/Flow/utils/script" ;
66import ScriptModal from "@/components/Flow/panel/ScriptModal" ;
7+ import { getComponent } from "@/framework/ComponentBus" ;
8+ import { UserSelectProps , UserSelectViewKey } from "@/components/Flow/flow/types" ;
79
810interface NodePanelProps {
911 id ?: string ,
@@ -19,6 +21,14 @@ const NodePanel: React.FC<NodePanelProps> = (props) => {
1921
2022 const [ visible , setVisible ] = React . useState ( false ) ;
2123
24+ const [ userSelectVisible , setUserSelectVisible ] = React . useState ( false ) ;
25+
26+ const [ operatorMatcherType , setOperatorMatcherType ] = React . useState ( props . data ?. operatorMatcherType ) ;
27+
28+ // 用户选人视图
29+ const UserSelectView = getComponent ( UserSelectViewKey ) as React . ComponentType < UserSelectProps > ;
30+
31+
2232 return (
2333 < >
2434 < ProForm
@@ -123,18 +133,33 @@ const NodePanel: React.FC<NodePanelProps> = (props) => {
123133 } ,
124134 ] }
125135 onChange = { ( value ) => {
136+ setOperatorMatcherType ( value as string ) ;
126137 props . form . setFieldsValue ( {
127138 operatorMatcher : GroovyScript . operatorMatcher ( value as string )
128139 } )
129140 } }
130141 addonAfter = { (
131- < EyeOutlined
132- onClick = { ( ) => {
133- const value = props . form . getFieldValue ( "operatorMatcher" ) ;
134- form . setFieldValue ( "type" , "operatorMatcher" ) ;
135- form . setFieldValue ( "script" , value ) ;
136- setVisible ( true ) ;
137- } } />
142+ < Space >
143+ { operatorMatcherType === 'custom' && (
144+ < Button
145+ icon = { < SettingOutlined /> }
146+ onClick = { ( ) => {
147+ setUserSelectVisible ( true ) ;
148+ } }
149+ >
150+ 选择人员
151+ </ Button >
152+ ) }
153+
154+ < EyeOutlined
155+ onClick = { ( ) => {
156+ const value = props . form . getFieldValue ( "operatorMatcher" ) ;
157+ form . setFieldValue ( "type" , "operatorMatcher" ) ;
158+ form . setFieldValue ( "script" , value ) ;
159+ setVisible ( true ) ;
160+ } } />
161+
162+ </ Space >
138163 ) }
139164 />
140165
@@ -248,6 +273,25 @@ const NodePanel: React.FC<NodePanelProps> = (props) => {
248273 form = { form }
249274 setVisible = { setVisible }
250275 visible = { visible } />
276+
277+ { UserSelectView && (
278+ < UserSelectView
279+ visible = { userSelectVisible }
280+ setVisible = { setUserSelectVisible }
281+ userSelectType = { "users" }
282+ specifyUserIds = { [ ] }
283+ mode = { "multiple" }
284+ onFinish = { ( values ) => {
285+ const operatorMatcher = props . form . getFieldValue ( "operatorMatcher" ) ;
286+ const script = operatorMatcher . replaceAll ( "%s" , values . map ( ( item :any ) => item . id ) . join ( "," ) ) ;
287+ console . log ( script ) ;
288+ props . form . setFieldsValue ( {
289+ operatorMatcher : script
290+ } ) ;
291+ } }
292+ />
293+ ) }
294+
251295 </ >
252296 )
253297}
0 commit comments