xujunjie 2 年之前
父節點
當前提交
240efd5e79

+ 16 - 10
src/components/Flow/components/judgeComponent/index.tsx

@@ -29,6 +29,10 @@ export const JudgeOptions = [
   { label: '大于等于', value: 5 },
   { label: '介于(两个数之间)', value: 6 },
 ];
+export const SiginOptions = [
+  { label: '<', value: 1 },
+  { label: '≤', value: 2 },
+];
 
 const RenderJudge = (props: any) => {
   const { formItems = '', onChange, depUserTree } = props;
@@ -164,25 +168,27 @@ const RenderJudge = (props: any) => {
                     handleChange([], item, { ...judge?.condition, smallSign: value });
                   }}
                 >
-                  <Option value={1}>{`<`}</Option>
-                  <Option value={2}>≤</Option>
+                  {SiginOptions.map(item => (
+                    <Option key={item.value}>{item.label}</Option>
+                  ))}
                 </Select>
                 <span>N</span>
-                <InputNumberFiled
-                  value={judge?.condition?.bigValue}
-                  onChange={value => {
-                    handleChange([], item, { ...judge?.condition, bigValue: value });
-                  }}
-                />
                 <Select
                   defaultValue={judge?.condition?.bigSign}
                   onChange={(value: number) => {
                     handleChange([], item, { ...judge?.condition, bigSign: value });
                   }}
                 >
-                  <Option value={1}>{`<`}</Option>
-                  <Option value={2}>≤</Option>
+                  {SiginOptions.map(item => (
+                    <Option key={item.value}>{item.label}</Option>
+                  ))}
                 </Select>
+                <InputNumberFiled
+                  value={judge?.condition?.bigValue}
+                  onChange={value => {
+                    handleChange([], item, { ...judge?.condition, bigValue: value });
+                  }}
+                />
               </div>
             ) : (
               <InputNumberFiled

+ 1 - 1
src/components/Flow/components/judgeModal/index.tsx

@@ -51,7 +51,7 @@ const AddCondition = (props: any) => {
     <>
       <div className={`group`}>
         <Button icon={<PlusOutlined />} onClick={() => setVisible(true)}>
-          添加条件
+          选择条件
         </Button>
         还有{data.length - values.length}组可用条件
       </div>

+ 43 - 5
src/components/Flow/node/judgeNode/index.tsx

@@ -3,7 +3,7 @@ judgeServe;
 import judgeServe, { ComponentName, FormItem, TYPE } from './mapServe';
 // import { Badge } from 'antd';
 import { useXFlowApp, XFlowNodeCommands } from '@antv/xflow';
-import { JudgeType } from '../../components/judgeComponent';
+import { JudgeType, JudgeOptions, SiginOptions } from '../../components/judgeComponent';
 import { connect } from 'dva';
 export { judgeServe };
 
@@ -13,6 +13,7 @@ const JudgeRect = props => {
   const { label, stroke, fill, fontFill, fontSize, type, priority, formItems } = data;
 
   const contentText = useMemo(() => {
+    let text = [];
     const getName = (id, data) => {
       let name = '';
       for (let i = 0; i < data.length; i++) {
@@ -28,10 +29,10 @@ const JudgeRect = props => {
     };
 
     if (formItems) {
-      let text = 'XXX';
       let data: FormItem[] = JSON.parse(formItems);
       data.forEach((item: FormItem) => {
         let judge: JudgeType = item.judge;
+        const label: String = item.props.label;
         switch (judge?.type) {
           case ComponentName.Inner:
             const list = judge?.values
@@ -39,11 +40,36 @@ const JudgeRect = props => {
                 return getName(item.value, depUserTree);
               })
               .filter(item => item);
-            text = '发起人属于:' + list.join('或');
+            text.push('发起人属于:' + list.join('或'));
+            break;
+          case ComponentName.Number:
+            const type: Number = judge.values[0];
+            const condition = judge.condition;
+            if (!condition) break;
+            if (type != 6) {
+              let JudgeLabel = JudgeOptions.find(item => item.value == type)?.label;
+
+              text.push(`${label} ${JudgeLabel} ${condition.smallValue}`);
+            } else {
+              const { smallSign, smallValue, bigSign, bigValue } = condition;
+              if (!smallSign || !smallValue || !bigSign || !bigValue) break;
+              const getSigin = (sigin: Number) =>
+                SiginOptions.find(item => item.value == sigin)?.label;
+
+              text.push(
+                `${smallValue} ${getSigin(smallSign)} ${label} ${getSigin(bigSign)} ${bigValue} `
+              );
+            }
+            break;
+          case ComponentName.Select:
+          case ComponentName.MultiSelect:
+            const values = judge.values;
+            text.push(`${label} ${values.join(' 或 ')}`);
+            break;
         }
       });
-      return text;
     }
+    return text;
   }, [formItems]);
 
   return (
@@ -64,7 +90,19 @@ const JudgeRect = props => {
           textOverflow: 'ellipsis',
         }}
       >
-        {contentText}
+        {(contentText || []).map((text, index) => (
+          <>
+            {index != 0 && (
+              <>
+                <br />
+                并且
+                <br />
+              </>
+            )}
+
+            {text}
+          </>
+        ))}
       </div>
     </div>
   );

+ 13 - 1
src/components/Flow/node/judgeNode/mapServe.tsx

@@ -221,7 +221,19 @@ const Component = (props: any) => {
           formItems={nodeConfig.formItems}
           onOk={(values: FormItem[]) => {
             console.log('===formItems===', values);
-            onNodeConfigChange('formItems', JSON.stringify(values));
+            let newFormItems = [];
+            let oldFormItems = JSON.parse(nodeConfig.formItems || '[]');
+            values.forEach(item => {
+              let id = item.props.id;
+              // 判断是否含有旧的item
+              let oldItem = oldFormItems.find(formItem => formItem.props.id == id);
+              if (oldItem) {
+                newFormItems.push(oldItem);
+              } else {
+                newFormItems.push(item);
+              }
+            });
+            onNodeConfigChange('formItems', JSON.stringify(newFormItems));
           }}
         />
         <RenderJudge