From 496daedc76e96c8245c586337482b0e74e881409 Mon Sep 17 00:00:00 2001
From: Junjie <xjj@123>
Date: 星期五, 19 四月 2024 16:31:34 +0800
Subject: [PATCH] #

---
 zy-asrs-flow/src/components/Flow/Drawer/GraphDrawerLift.jsx    |  179 ++++++++++++++++++++++++++++++++++++++++++++
 zy-asrs-flow/src/components/Flow/GraphDrawer.jsx               |    2 
 zy-asrs-flow/src/components/Flow/Drawer/GraphDrawerShuttle.jsx |   23 ++++-
 3 files changed, 199 insertions(+), 5 deletions(-)

diff --git a/zy-asrs-flow/src/components/Flow/Drawer/GraphDrawerLift.jsx b/zy-asrs-flow/src/components/Flow/Drawer/GraphDrawerLift.jsx
new file mode 100644
index 0000000..042d9dc
--- /dev/null
+++ b/zy-asrs-flow/src/components/Flow/Drawer/GraphDrawerLift.jsx
@@ -0,0 +1,179 @@
+import React, { useRef, useEffect, useState } from "react";
+import { Button, Drawer, Input, Switch, Select, Checkbox } from 'antd';
+import { initNodeData } from "../GraphConfig";
+
+const { TextArea } = Input;
+const CheckboxGroup = Checkbox.Group;
+
+export const GraphDrawerLift = ({ graphRef, isReady }) => {
+
+    const [open, setOpen] = useState(false);
+    const [init, setInit] = useState(false);
+    const [nodeData, setNodeData] = useState(null);
+    const [codeContent, setCodeContent] = useState(null);
+    const [execClass, setExecClass] = useState(null);
+    const [execApi, setExecApi] = useState(null);
+    const [liftOper, setLiftOper] = useState([]);
+    const [sourceLev, setSourceLev] = useState(null);
+    const [targetLev, setTargetLev] = useState(null);
+
+    const classList = [
+        { value: 'ShuttleThread', label: '鎻愬崌鏈�' },
+    ];
+
+    const apiList = [
+        { value: 'load', label: '鍙栬揣' },
+        { value: 'unload', label: '鏀捐揣' },
+        { value: 'loadAndUnload', label: '鍙栨斁璐�' },
+    ];
+
+    const liftOptions = [
+        {
+            label: '鏃�',
+            value: 'none'
+        },
+        {
+            label: '鍗囬檷',
+            value: 'move'
+        },
+    ];
+
+    const sourceLevChange = (e) => {
+        setSourceLev(e.target.value);
+        nodeData.data.liftType.sourceLev = e.target.value;
+    }
+
+    const targetLevChange = (e) => {
+        setTargetLev(e.target.value);
+        nodeData.data.liftType.targetLev = e.target.value;
+    }
+
+    const liftOptionsChange = (event) => {
+        setLiftOper(event);
+        nodeData.data.liftType.liftOper = event;
+    };
+
+    const showNodeDrawer = (graph, node) => {
+        if (node.data.type == "lift") {
+            setOpen(true);
+            setNodeData(node);
+            if (node.data == null) {
+                node.data = initNodeData;
+            }
+
+            if (node.data.codeContent != null) {
+                setCodeContent(node.data.codeContent);
+            }
+
+            if (node.data.execClass != null) {
+                setExecClass(node.data.execClass);
+            } else {
+                setExecClass(null);
+            }
+
+            if (node.data.execApi != null) {
+                setExecApi(node.data.execApi);
+            } else {
+                setExecApi(null);
+            }
+
+            if (node.data.liftType == null) {
+                node.data.liftType = {
+                    liftOper: '',//鎿嶄綔鏂规硶
+                }
+            } else {
+                const liftType = node.data.liftType;
+                setLiftOper(liftType.liftOper);
+            }
+
+        }
+    };
+
+    const onNodeClose = (e) => {
+        setOpen(false);
+        setNodeData(null);
+        setCodeContent(null);
+    };
+
+    const nodeTextAreaChange = (e) => {
+        setCodeContent(e.target.value);
+        nodeData.data.codeContent = e.target.value;
+    }
+
+    const nodeDataInputChange = (e) => {
+        nodeData.label = e.target.value;
+    }
+
+    const classListChange = (e) => {
+        setExecClass(e);
+        nodeData.data.execClass = e;
+    }
+
+    const apiListChange = (e) => {
+        setExecApi(e);
+        nodeData.data.execApi = e;
+    }
+
+    useEffect(() => {
+        if (isReady) {
+            const graph = graphRef.current;
+
+            if (!init) {
+                graph.on("node:dblclick", ({ node }) => {
+                    showNodeDrawer(graph, node);
+                })
+                setInit(true);
+            }
+        }
+    }, [apiList])
+
+    if (nodeData) {
+        return (
+            <>
+                <Drawer title={nodeData.label} onClose={onNodeClose} open={open} size="large">
+                    <div className="graphDrawerContainer">
+                        <div>鎻愬崌鏈虹粍浠�</div>
+                        <div>ID锛歿nodeData.id}</div>
+                        <div>缁勪欢鍚嶏細<Input defaultValue={nodeData.label} onChange={nodeDataInputChange} /></div>
+                        <div>鏍硅妭鐐癸細<Switch checkedChildren="鏄�" unCheckedChildren="鍚�" checked={nodeData.data.root} /></div>
+                        <div>
+                            婧愬眰锛�<Input defaultValue={sourceLev} onChange={sourceLevChange} />
+                        </div>
+                        <div>
+                            鐩爣灞傦細<Input defaultValue={targetLev} onChange={targetLevChange} />
+                        </div>
+                        <div>
+                            鎿嶄綔鏂规硶锛�
+                            <Select
+                                style={{ width: 240 }}
+                                options={liftOptions}
+                                value={liftOper}
+                                onChange={liftOptionsChange}
+                            />
+                        </div>
+                        <div>
+                            鎵ц绫伙細
+                            <Select
+                                style={{ width: 120 }}
+                                options={classList}
+                                onChange={classListChange}
+                                defaultValue={execClass}
+                            />
+                        </div>
+                        <div>
+                            鎵ц鎺ュ彛锛�
+                            <Select
+                                style={{ width: 120 }}
+                                options={apiList}
+                                onChange={apiListChange}
+                                defaultValue={execApi}
+                            />
+                        </div>
+                        <div>鍙墽琛屼唬鐮侊細</div>
+                        <TextArea value={codeContent} onChange={nodeTextAreaChange} rows={10} />
+                    </div>
+                </Drawer>
+            </>
+        );
+    }
+}
\ No newline at end of file
diff --git a/zy-asrs-flow/src/components/Flow/Drawer/GraphDrawerShuttle.jsx b/zy-asrs-flow/src/components/Flow/Drawer/GraphDrawerShuttle.jsx
index 38f6b3f..893a59b 100644
--- a/zy-asrs-flow/src/components/Flow/Drawer/GraphDrawerShuttle.jsx
+++ b/zy-asrs-flow/src/components/Flow/Drawer/GraphDrawerShuttle.jsx
@@ -27,14 +27,22 @@
 
     const shuttleOptions = [
         {
+            label: '鏃�',
+            value: 'none'
+        },
+        {
             label: '鎼滅储绌洪棽杞�',
             value: 'searchIdleShuttle'
         },
+        {
+            label: '鍒ゆ柇灏忚溅鏄惁鍦ㄤ换鍔℃ゼ灞�',
+            value: 'judgeShuttleCurrentTaskLev'
+        },
     ];
 
-    const shuttleOptionsChange = (list) => {
-        setShuttleOper(list);
-        nodeData.data.shuttleType.shuttleOper = list;
+    const shuttleOptionsChange = (event) => {
+        setShuttleOper(event);
+        nodeData.data.shuttleType.shuttleOper = event;
     };
 
     const showNodeDrawer = (graph, node) => {
@@ -63,7 +71,7 @@
 
             if (node.data.shuttleType == null) {
                 node.data.shuttleType = {
-                    shuttleOper: [],//鎿嶄綔鏂规硶
+                    shuttleOper: '',//鎿嶄綔鏂规硶
                 }
             } else {
                 const shuttleType = node.data.shuttleType;
@@ -122,7 +130,12 @@
                         <div>鏍硅妭鐐癸細<Switch checkedChildren="鏄�" unCheckedChildren="鍚�" checked={nodeData.data.root} /></div>
                         <div>
                             鎿嶄綔鏂规硶锛�
-                            <CheckboxGroup options={shuttleOptions} value={shuttleOper} onChange={shuttleOptionsChange} />
+                            <Select
+                                style={{ width: 240 }}
+                                options={shuttleOptions}
+                                value={shuttleOper}
+                                onChange={shuttleOptionsChange}
+                            />
                         </div>
                         <div>
                             鎵ц绫伙細
diff --git a/zy-asrs-flow/src/components/Flow/GraphDrawer.jsx b/zy-asrs-flow/src/components/Flow/GraphDrawer.jsx
index 0ee1d07..ec118e1 100644
--- a/zy-asrs-flow/src/components/Flow/GraphDrawer.jsx
+++ b/zy-asrs-flow/src/components/Flow/GraphDrawer.jsx
@@ -4,6 +4,7 @@
 import { GraphDrawerCrn } from "./Drawer/GraphDrawerCrn";
 import { GraphDrawerDevp } from "./Drawer/GraphDrawerDevp";
 import { GraphDrawerShuttle } from "./Drawer/GraphDrawerShuttle";
+import { GraphDrawerLift } from "./Drawer/GraphDrawerLift";
 import './css/GrapDrawer.less';
 
 export const GraphDrawer = ({ graphRef, isReady }) => {
@@ -15,6 +16,7 @@
             <GraphDrawerCrn graphRef={graphRef} isReady={isReady} />
             <GraphDrawerDevp graphRef={graphRef} isReady={isReady} />
             <GraphDrawerShuttle graphRef={graphRef} isReady={isReady} />
+            <GraphDrawerLift graphRef={graphRef} isReady={isReady} />
         </>
     );
 }
\ No newline at end of file

--
Gitblit v1.9.1