From d0abf3d3c2190d9d16b91a12a1a99fd94b8d63b4 Mon Sep 17 00:00:00 2001
From: jiazx0107 <jiazx0107@163.com>
Date: 星期四, 15 一月 2026 22:18:31 +0800
Subject: [PATCH] 提交工单处理逻辑。

---
 fzzy-igdss-web/src/main/resources/templates/work/flow-his.html            |  305 +++++++++++++++++++++++
 fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrderPR.java              |   26 ++
 fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrder.view.xml            |  375 +++++++++++++++++-----------
 fzzy-igdss-core/src/main/java/com/fzzy/work/data/WorkBizType.java         |   10 
 fzzy-igdss-web/src/main/java/com/fzzy/work/WorkOrderController.java       |   15 +
 fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderService.java |   12 
 fzzy-igdss-core/src/main/java/com/fzzy/work/service/BizWorkService.java   |   19 +
 7 files changed, 602 insertions(+), 160 deletions(-)

diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/work/data/WorkBizType.java b/fzzy-igdss-core/src/main/java/com/fzzy/work/data/WorkBizType.java
index 12ff457..bd43fd1 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/work/data/WorkBizType.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/work/data/WorkBizType.java
@@ -28,14 +28,4 @@
     public String getMsg() {
         return msg;
     }
-
-    public static String getMsg(String code) {
-        if(null == code) return null;
-        if(WorkBizType.TYPE_10.getCode().equals(code)) return WorkBizType.TYPE_10.getMsg();
-        if(WorkBizType.TYPE_20.getCode().equals(code)) return WorkBizType.TYPE_20.getMsg();
-        if(WorkBizType.TYPE_30.getCode().equals(code)) return WorkBizType.TYPE_30.getMsg();
-        if(WorkBizType.TYPE_40.getCode().equals(code)) return WorkBizType.TYPE_40.getMsg();
-        if(WorkBizType.TYPE_99.getCode().equals(code)) return WorkBizType.TYPE_99.getMsg();
-        return code;
-    }
 }
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/work/service/BizWorkService.java b/fzzy-igdss-core/src/main/java/com/fzzy/work/service/BizWorkService.java
index 599280c..50d4615 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/work/service/BizWorkService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/work/service/BizWorkService.java
@@ -10,6 +10,7 @@
 import com.fzzy.work.domain.WorkOrder;
 import com.fzzy.work.domain.WorkOrderConf;
 import com.fzzy.work.domain.WorkOrderProcess;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -20,6 +21,7 @@
  * @Author: Andy.jia
  * @Date: 2026/1/15
  */
+@Slf4j
 @Service
 public class BizWorkService {
     @Resource
@@ -112,4 +114,21 @@
 
         return WorkNode.NODE_END;
     }
+
+    /**
+     * 鑾峰彇寰呭鐞嗗伐鍗�
+     * @return 澶勭悊缁撴灉
+     */
+	public BaseResp todoByProcess(WorkOrderProcess data) {
+		// TODO Auto-generated method stub
+
+        log.info("-----宸ュ崟澶勭悊-----{}",data);
+        //鑾峰彇宸ュ崟
+        WorkOrder work = orderService.selectById(data.getOrderId());
+        if(null == work) return BaseResp.error("褰撳墠宸ュ崟宸蹭笉瀛樺湪");
+
+
+
+		return BaseResp.success();
+	}
 }
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderService.java b/fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderService.java
index 80ed30d..90c3b89 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderService.java
@@ -90,6 +90,14 @@
         }
         return list;
     }
+    
+	public List<SysDictData> triggerBizType() {
+		List<SysDictData> list = new ArrayList<SysDictData>();
+        for (WorkBizType w : WorkBizType.values()) {
+            list.add(new SysDictData(w.getMsg(), w.getCode()));
+        }
+        return list;
+	}
 
     /**
      * 鑾峰彇鐢ㄦ埛寰呭鐞嗗伐鍗曟暟
@@ -111,4 +119,8 @@
     }
 
 
+    public WorkOrder selectById(String orderId) {
+        if(null == orderId) return null;
+        return workOrderMapper.selectById(orderId);
+    }
 }
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrder.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrder.view.xml
index 3fc6cc8..c7e3aae 100644
--- a/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrder.view.xml
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrder.view.xml
@@ -19,11 +19,12 @@
       </PropertyDef>
       <PropertyDef name="bizType">
         <Property></Property>
-        <Property name="label">涓氬姟鍒嗙被</Property>
-      </PropertyDef>
-      <PropertyDef name="category">
-        <Property></Property>
         <Property name="label">宸ュ崟鍒嗙被</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;workOrderPR#triggerBizType&quot;).getResult()}</Property>
+          <Property name="keyProperty">dictValue</Property>
+          <Property name="valueProperty">dictLabel</Property>
+        </Property>
       </PropertyDef>
       <PropertyDef name="status">
         <Property></Property>
@@ -47,14 +48,14 @@
       </PropertyDef>
       <PropertyDef name="createTime">
         <Property name="dataType">DateTime</Property>
-        <Property name="label">宸ュ崟鍒涘缓鏃堕棿</Property>
+        <Property name="label">鍒涘缓鏃堕棿</Property>
       </PropertyDef>
       <PropertyDef name="createUserId">
         <Property></Property>
       </PropertyDef>
       <PropertyDef name="createUserName">
         <Property></Property>
-        <Property name="label">宸ュ崟鍒涘缓浜�</Property>
+        <Property name="label">鍒涘缓浜�</Property>
       </PropertyDef>
       <PropertyDef name="businessId">
         <Property></Property>
@@ -77,6 +78,27 @@
           <Property name="keyProperty">id</Property>
           <Property name="valueProperty">kqmc</Property>
         </Property>
+      </PropertyDef>
+      <PropertyDef name="node">
+        <Property></Property>
+      </PropertyDef>
+      <PropertyDef name="createById">
+        <Property></Property>
+      </PropertyDef>
+      <PropertyDef name="bankId">
+        <Property></Property>
+      </PropertyDef>
+      <PropertyDef name="confId">
+        <Property></Property>
+      </PropertyDef>
+      <PropertyDef name="createBy">
+        <Property></Property>
+      </PropertyDef>
+      <PropertyDef name="updateBy">
+        <Property></Property>
+      </PropertyDef>
+      <PropertyDef name="updateTime">
+        <Property name="dataType">Date</Property>
       </PropertyDef>
     </DataType>
     <DataType name="dtParam">
@@ -120,6 +142,23 @@
       </PropertyDef>
       <PropertyDef name="remark">
         <Property></Property>
+      </PropertyDef>
+      <PropertyDef name="id">
+        <Property></Property>
+      </PropertyDef>
+      <PropertyDef name="assigneeId">
+        <Property></Property>
+      </PropertyDef>
+      <PropertyDef name="assigneeName">
+        <Property></Property>
+        <Property name="label">澶勭悊浜�</Property>
+      </PropertyDef>
+      <PropertyDef name="node">
+        <Property></Property>
+        <Property name="label">褰撳墠鑺傜偣</Property>
+      </PropertyDef>
+      <PropertyDef name="createTime">
+        <Property name="dataType">Date</Property>
       </PropertyDef>
     </DataType>
   </Model>
@@ -175,15 +214,12 @@
 	var dialog = view.get(&quot;#dialogMain&quot;);&#xD;
 	if(1 == tabIndex){&#xD;
 		cur = view.get(&quot;#dsMain2.data:#&quot;);&#xD;
-		dialog = view.get(&quot;#dialogMain&quot;);&#xD;
 	}&#xD;
 	dialog.show();&#xD;
 	&#xD;
 	var orderId = cur.get(&quot;id&quot;);&#xD;
-	//璧嬪�肩粰瀹℃壒&#xD;
-	view.get(&quot;#dsWordProcess&quot;).set(&quot;data&quot;,{orderId:orderId});&#xD;
-	//鍘嗗彶璁板綍&#xD;
-	view.get(&quot;#iFrameProcess&quot;).set(&quot;path&quot;,&quot;com.fzzy.work.WorkProcess.d?orderId=&quot;+orderId);&#xD;
+	//鍘嗗彶鏁版嵁&#xD;
+	view.get('#iFrameFlowHis').set('path','/work/flow-his?orderId='+orderId);&#xD;
 	//涓氬姟淇℃伅&#xD;
 	if(cur.get(&quot;businessUrl&quot;)){&#xD;
 		var url = cur.get(&quot;businessUrl&quot;)+&quot;?businessId=&quot;+cur.get(&quot;businessId&quot;)+&quot;&amp;orderId=&quot;+orderId;&#xD;
@@ -191,7 +227,35 @@
 	}else{&#xD;
 		view.get(&quot;#iFrameBiz&quot;).set(&quot;path&quot;,&quot;/work/no-business?orderId=&quot;+orderId);&#xD;
 	}&#xD;
-}</ClientEvent>
+}&#xD;
+//鎵ц瀹℃壒&#xD;
+todo = function(action){&#xD;
+	var cur = view.get(&quot;#dsMain.data:#&quot;);&#xD;
+	var process = view.get(&quot;#dsProcess.data&quot;);&#xD;
+	process.set(&quot;orderId&quot;, cur.get(&quot;id&quot;));&#xD;
+	process.set(&quot;action&quot;, action);&#xD;
+	process.set(&quot;node&quot;, cur.get(&quot;node&quot;));&#xD;
+	&#xD;
+	var remark = process.get('remark');&#xD;
+	if(!remark){&#xD;
+		$notify(&quot;璇峰~鍐欏鎵规剰瑙佲�︹��&quot;);&#xD;
+		return;&#xD;
+	}&#xD;
+	view.get(&quot;#ajaxTodo&quot;).set('parameter',process).execute(function(result){&#xD;
+		if('200' != result.code){&#xD;
+			$alert(result.msg);&#xD;
+		}else{&#xD;
+			$alert(&quot;鎵ц鎴愬姛锛�&quot;);&#xD;
+			view.get('#dialogTodo').hide();&#xD;
+		}&#xD;
+	});&#xD;
+}&#xD;
+cancelTodo = function(){&#xD;
+	var process = view.get(&quot;#dsProcess.data&quot;);&#xD;
+	process.set('remark',null);&#xD;
+	view.get('#dialogTodo').hide();&#xD;
+}&#xD;
+</ClientEvent>
     <Property name="packages">font-awesome,css-common</Property>
     <DataSet id="dsMain">
       <ClientEvent name="onLoadData">$notify(&quot;鏁版嵁鍔犺浇瀹屾垚鈥︹��&quot;);</ClientEvent>
@@ -201,8 +265,7 @@
       <Property name="loadMode">lazy</Property>
     </DataSet>
     <DataSet id="dsMain2">
-      <ClientEvent name="onLoadData">$notify(&quot;鏁版嵁鍔犺浇瀹屾垚鈥︹��&quot;);&#xD;
-</ClientEvent>
+      <ClientEvent name="onLoadData">$notify(&quot;鏁版嵁鍔犺浇瀹屾垚鈥︹��&quot;);</ClientEvent>
       <Property name="dataType">[dtMain]</Property>
       <Property name="dataProvider">workOrderPR#pageQuery2</Property>
       <Property name="pageSize">10</Property>
@@ -212,7 +275,7 @@
       <ClientEvent name="onReady">self.insert({});</ClientEvent>
       <Property name="dataType">dtParam</Property>
     </DataSet>
-    <DataSet id="dsWordProcess">
+    <DataSet id="dsProcess">
       <ClientEvent name="onReady">self.insert();</ClientEvent>
       <Property name="dataType">dtWordProcess</Property>
     </DataSet>
@@ -553,156 +616,116 @@
       <Property name="closeable">false</Property>
       <Property name="caption">宸ュ崟璇︾粏</Property>
       <Property name="iconClass">fa fa-tasks</Property>
-      <Property name="height">95%</Property>
-      <Property name="width">95%</Property>
+      <Property name="width">90%</Property>
       <Property name="showCaptionBar">false</Property>
       <Property name="style">
         <Property name="background-color">#e6e6e6</Property>
       </Property>
-      <Buttons>
-        <Button>
-          <ClientEvent name="onClick">view.get(&quot;#updateSave&quot;).execute(function(result){&#xD;
-	if(result){&#xD;
-		$alert(result);&#xD;
-		return;&#xD;
-	}&#xD;
-	$notify(&quot;鏁版嵁鎵ц瀹屾垚锛侊紒&quot;);&#xD;
-	self.get(&quot;parent&quot;).hide();&#xD;
-});</ClientEvent>
-          <Property name="caption">澶勭悊</Property>
-          <Property name="iconClass">fa fa-check-circle</Property>
-          <Property name="exClassName">btn1</Property>
-        </Button>
-        <Button>
-          <ClientEvent name="onClick">view.get(&quot;#updateSave&quot;).execute(function(result){&#xD;
-	if(result){&#xD;
-		$alert(result);&#xD;
-		return;&#xD;
-	}&#xD;
-	$notify(&quot;鏁版嵁鎵ц瀹屾垚锛侊紒&quot;);&#xD;
-	self.get(&quot;parent&quot;).hide();&#xD;
-});</ClientEvent>
-          <Property name="caption">杞氦</Property>
-          <Property name="iconClass">fa fa-check-circle</Property>
-          <Property name="exClassName">btn2</Property>
-        </Button>
-        <Button>
-          <ClientEvent name="onClick">view.get(&quot;#dsMain.data:#&quot;).cancel();&#xD;
-            self.get(&quot;parent&quot;).hide();</ClientEvent>
-          <Property name="caption">鍏抽棴</Property>
-          <Property name="exClassName">btn3</Property>
-          <Property name="iconClass">fa fa-times-circle</Property>
-        </Button>
-      </Buttons>
+      <Property name="height">95%</Property>
+      <Buttons/>
       <Children>
         <TabControl>
           <ControlTab>
             <Property name="caption">宸ュ崟淇℃伅</Property>
             <Property name="iconClass">fa fa-edit</Property>
+            <Property name="width">120</Property>
             <Container>
-              <AutoForm>
-                <Property name="dataSet">dsMain</Property>
-                <Property name="cols">*,*,*</Property>
-                <Property name="labelAlign">right</Property>
-                <Property name="labelSeparator">锛�</Property>
-                <Property name="labelWidth">120</Property>
-                <Property name="readOnly">true</Property>
-                <AutoFormElement layoutConstraint="colSpan:2">
-                  <Property name="name">title</Property>
-                  <Property name="property">title</Property>
-                  <Editor/>
-                </AutoFormElement>
-                <AutoFormElement>
-                  <Property name="name">deptId</Property>
-                  <Property name="property">deptId</Property>
-                  <Editor/>
-                </AutoFormElement>
-                <AutoFormElement layoutConstraint="colSpan:3">
-                  <Property name="name">description</Property>
-                  <Property name="property">description</Property>
-                  <Property name="editorType">TextArea</Property>
-                  <Editor/>
-                </AutoFormElement>
-                <AutoFormElement>
-                  <Property name="name">bizType</Property>
-                  <Property name="property">bizType</Property>
-                  <Editor/>
-                </AutoFormElement>
-                <AutoFormElement>
-                  <Property name="name">status</Property>
-                  <Property name="property">status</Property>
-                  <Editor/>
-                </AutoFormElement>
-                <AutoFormElement>
-                  <Property name="name">assigneeName</Property>
-                  <Property name="property">assigneeName</Property>
-                  <Editor/>
-                </AutoFormElement>
-                <AutoFormElement>
-                  <Property name="name">createTime</Property>
-                  <Property name="property">createTime</Property>
-                  <Editor/>
-                </AutoFormElement>
-                <AutoFormElement>
-                  <Property name="name">createUserName</Property>
-                  <Property name="property">createUserName</Property>
-                  <Editor/>
-                </AutoFormElement>
-                <AutoFormElement>
-                  <Property name="name">receiveTime</Property>
-                  <Property name="property">receiveTime</Property>
-                  <Property name="labelWidth">140</Property>
-                  <Editor/>
-                </AutoFormElement>
-                <AutoFormElement layoutConstraint="colSpan:3">
-                  <Property name="name">remark</Property>
-                  <Property name="property">remark</Property>
-                  <Property name="editorType">TextArea</Property>
-                  <Editor/>
-                </AutoFormElement>
-              </AutoForm>
-              <GroupBox>
-                <Property name="caption">宸ュ崟瀹℃壒/澶勭悊</Property>
-                <Property name="collapseable">false</Property>
-                <Buttons/>
-                <Children>
-                  <AutoForm>
-                    <Property name="dataSet">dsWordProcess</Property>
-                    <Property name="cols">*,*,*</Property>
-                    <Property name="labelAlign">right</Property>
-                    <Property name="labelSeparator">锛�</Property>
-                    <Property name="labelWidth">120</Property>
-                    <Property name="showLabel">false</Property>
-                    <AutoFormElement layoutConstraint="colSpan:3">
-                      <Property name="name">remark</Property>
-                      <Property name="property">remark</Property>
-                      <Editor>
-                        <TextArea>
-                          <Property name="blankText">-- 瀹℃壒/澶勭悊璇存槑 --</Property>
-                        </TextArea>
-                      </Editor>
-                    </AutoFormElement>
-                    <HtmlContainer layoutConstraint="colSpan:3">
-                      <Property name="content">1.宸ュ崟璇︾粏涓氬姟瑙併�愪笟鍔′俊鎭�戞煡鐪嬨��&lt;br></Property>
-                      <Property name="exClassName">h-tip</Property>
-                      <Property name="contentOverflow">hidden</Property>
-                    </HtmlContainer>
-                  </AutoForm>
-                </Children>
-              </GroupBox>
+              <Container>
+                <Property name="exClassName">c-data</Property>
+                <AutoForm>
+                  <Property name="dataSet">dsMain</Property>
+                  <Property name="cols">*,*,*</Property>
+                  <Property name="labelAlign">right</Property>
+                  <Property name="labelSeparator">锛�</Property>
+                  <Property name="labelWidth">100</Property>
+                  <Property name="readOnly">true</Property>
+                  <AutoFormElement layoutConstraint="colSpan:2">
+                    <Property name="name">title</Property>
+                    <Property name="property">title</Property>
+                    <Editor/>
+                  </AutoFormElement>
+                  <AutoFormElement>
+                    <Property name="name">deptId</Property>
+                    <Property name="property">deptId</Property>
+                    <Editor/>
+                  </AutoFormElement>
+                  <AutoFormElement layoutConstraint="colSpan:3">
+                    <Property name="name">description</Property>
+                    <Property name="property">description</Property>
+                    <Property name="editorType">TextArea</Property>
+                    <Editor/>
+                  </AutoFormElement>
+                  <AutoFormElement>
+                    <Property name="name">bizType</Property>
+                    <Property name="property">bizType</Property>
+                    <Editor/>
+                  </AutoFormElement>
+                  <AutoFormElement>
+                    <Property name="name">status</Property>
+                    <Property name="property">status</Property>
+                    <Editor/>
+                  </AutoFormElement>
+                  <AutoFormElement>
+                    <Property name="name">assigneeName</Property>
+                    <Property name="property">assigneeName</Property>
+                    <Editor/>
+                  </AutoFormElement>
+                  <AutoFormElement>
+                    <Property name="name">createTime</Property>
+                    <Property name="property">createTime</Property>
+                    <Editor/>
+                  </AutoFormElement>
+                  <AutoFormElement>
+                    <Property name="name">createUserName</Property>
+                    <Property name="property">createUserName</Property>
+                    <Editor/>
+                  </AutoFormElement>
+                  <AutoFormElement>
+                    <Property name="name">receiveTime</Property>
+                    <Property name="property">receiveTime</Property>
+                    <Property name="labelWidth">140</Property>
+                    <Editor/>
+                  </AutoFormElement>
+                </AutoForm>
+                <ToolBar>
+                  <Fill/>
+                  <ToolBarButton>
+                    <ClientEvent name="onClick">view.get(&quot;#dialogTodo&quot;).show();&#xD;
+</ClientEvent>
+                    <Property name="caption">澶勭悊</Property>
+                    <Property name="width">80</Property>
+                    <Property name="exClassName">btn1</Property>
+                    <Property name="iconClass">fa fa-check-circle</Property>
+                  </ToolBarButton>
+                  <ToolBarButton>
+                    <Property name="caption">杞氦</Property>
+                    <Property name="width">80</Property>
+                    <Property name="exClassName">btn2</Property>
+                    <Property name="iconClass">fa fa-check-circle</Property>
+                  </ToolBarButton>
+                  <ToolBarButton>
+                    <ClientEvent name="onClick">view.get(&quot;#dsMain.data:#&quot;).cancel();&#xD;
+view.get(&quot;#dialogMain&quot;).hide();</ClientEvent>
+                    <Property name="caption">鍏抽棴</Property>
+                    <Property name="width">80</Property>
+                    <Property name="exClassName">btn3</Property>
+                    <Property name="iconClass">fa fa-times-circle</Property>
+                  </ToolBarButton>
+                  <Separator>
+                    <Property name="width">30</Property>
+                  </Separator>
+                </ToolBar>
+              </Container>
+              <IFrame id="iFrameFlowHis">
+                <Property name="path">/work/flow-his?orderId=1</Property>
+              </IFrame>
             </Container>
           </ControlTab>
           <ControlTab>
             <Property name="caption">涓氬姟淇℃伅</Property>
             <Property name="iconClass">fa fa-file-o</Property>
+            <Property name="width">120</Property>
             <IFrame id="iFrameBiz"/>
-          </ControlTab>
-          <ControlTab>
-            <Property name="caption">瀹℃壒璁板綍</Property>
-            <Property name="iconClass">fa fa-history</Property>
-            <IFrame id="iFrameProcess">
-              <Property name="path">com.fzzy.work.WorkProcess.d</Property>
-            </IFrame>
           </ControlTab>
         </TabControl>
       </Children>
@@ -717,5 +740,59 @@
     <AjaxAction id="ajaxDel">
       <Property name="confirmMessage">纭畾瑕佹墽琛屽垹闄や箞锛�</Property>
     </AjaxAction>
+    <Dialog id="dialogTodo">
+      <Property name="width">600</Property>
+      <Property name="caption">瀹℃壒澶勭悊</Property>
+      <Property name="closeable">false</Property>
+      <Property name="iconClass">fa fa-bookmark</Property>
+      <Buttons>
+        <Button>
+          <ClientEvent name="onClick">todo('pass');</ClientEvent>
+          <Property name="caption">閫氳繃</Property>
+          <Property name="iconClass">fa fa-check</Property>
+          <Property name="exClassName">btn1</Property>
+          <Property name="width">90</Property>
+        </Button>
+        <Button>
+          <ClientEvent name="onClick">todo('refuse');</ClientEvent>
+          <Property name="caption">鎷掔粷</Property>
+          <Property name="exClassName">btn4</Property>
+          <Property name="iconClass">fa fa-times</Property>
+          <Property name="width">90</Property>
+        </Button>
+        <Button>
+          <ClientEvent name="onClick">cancelTodo();</ClientEvent>
+          <Property name="caption">鍙栨秷鎿嶄綔</Property>
+          <Property name="iconClass">fa fa-times</Property>
+          <Property name="exClassName">btn3</Property>
+          <Property name="width">90</Property>
+        </Button>
+      </Buttons>
+      <Children>
+        <Container>
+          <AutoForm>
+            <Property name="cols">*</Property>
+            <Property name="dataSet">dsProcess</Property>
+            <AutoFormElement>
+              <Property name="name">remark</Property>
+              <Property name="property">remark</Property>
+              <Property name="showHint">false</Property>
+              <Property name="showLabel">false</Property>
+              <Editor>
+                <TextArea>
+                  <Property name="blankText">-- 濉啓瀹℃壒寤鸿 --</Property>
+                  <Property name="height">100</Property>
+                </TextArea>
+              </Editor>
+            </AutoFormElement>
+          </AutoForm>
+        </Container>
+      </Children>
+      <Tools/>
+    </Dialog>
+    <AjaxAction id="ajaxTodo">
+      <Property name="service">workOrderPR#todo</Property>
+      <Property name="executingMessage">澶勭悊涓�︹��</Property>
+    </AjaxAction>
   </View>
 </ViewConfig>
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrderPR.java b/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrderPR.java
index 0c1f823..8ddf2f9 100644
--- a/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrderPR.java
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrderPR.java
@@ -11,6 +11,7 @@
 import com.fzzy.work.data.WorkOrderParam;
 import com.fzzy.work.domain.WorkOrderConf;
 import com.fzzy.work.domain.WorkOrderProcess;
+import com.fzzy.work.service.BizWorkService;
 import com.fzzy.work.service.WorkOrderConfService;
 import com.fzzy.work.service.WorkOrderProcessService;
 import com.fzzy.work.service.WorkOrderService;
@@ -37,6 +38,8 @@
     private WorkOrderProcessService workOrderProcessService;
     @Resource
     private WorkOrderConfService workOrderConfService;
+    @Resource
+    private BizWorkService bizWorkService;
 
     /**
      *
@@ -93,6 +96,17 @@
     @DataProvider
     public List<SysDictData> triggerStatus() {
         return workOrderService.triggerStatus();
+    }
+    
+    /**
+     * 宸ュ崟绫诲瀷
+     * ${dorado.getDataProvider("workOrderPR#triggerBizType").getResult()}
+     *
+     * @return
+     */
+    @DataProvider
+    public List<SysDictData> triggerBizType() {
+        return workOrderService.triggerBizType();
     }
 
 
@@ -166,4 +180,16 @@
     public List<SysDictData> triggerType() {
         return workOrderService.triggerType();
     }
+    
+    //-----------------------娴佺▼澶勭悊---------------------------//
+    /**
+    *
+    * workOrderPR#todo
+    * 淇℃伅鍒楄〃
+    *
+    */
+    @Expose
+    public BaseResp todo(WorkOrderProcess data) {
+    	return bizWorkService.todoByProcess(data);
+    }
 }
diff --git a/fzzy-igdss-web/src/main/java/com/fzzy/work/WorkOrderController.java b/fzzy-igdss-web/src/main/java/com/fzzy/work/WorkOrderController.java
index dce8891..eeff0d3 100644
--- a/fzzy-igdss-web/src/main/java/com/fzzy/work/WorkOrderController.java
+++ b/fzzy-igdss-web/src/main/java/com/fzzy/work/WorkOrderController.java
@@ -52,7 +52,7 @@
      *
      */
     @GetMapping("/flow-conf")
-    public String noBusiness(@RequestParam("id") String id, ModelMap mmap) {
+    public String flowConf(@RequestParam("id") String id, ModelMap mmap) {
 
         WorkOrderConf conf = workOrderConfService.selectById(id);
         if (null == conf) conf = new WorkOrderConf();
@@ -61,4 +61,17 @@
 
         return prefix + "/flow-conf";
     }
+
+
+    /**
+     * 宸ュ崟璁板綍
+     *
+     */
+    @GetMapping("/flow-his")
+    public String flowHis(@RequestParam("orderId") String orderId, ModelMap mmap) {
+
+        mmap.put("list", null);
+
+        return prefix + "/flow-his";
+    }
 }
diff --git a/fzzy-igdss-web/src/main/resources/templates/work/flow-his.html b/fzzy-igdss-web/src/main/resources/templates/work/flow-his.html
new file mode 100644
index 0000000..0a9fb72
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/templates/work/flow-his.html
@@ -0,0 +1,305 @@
+<!DOCTYPE html>
+<html lang="zh_CN" xmlns:th="http://www.thymeleaf.org">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>宸ュ崟澶勭悊鍘嗗彶璁板綍</title>
+    <link rel="stylesheet" th:href="@{/ajax/libs/layui-ruoyi/css/layui.css}"/>
+    <style>
+        /* 闅愯棌婊氬姩鏉$殑鍩虹CSS */
+        .hide-scrollbar {
+            /* 闅愯棌鏍囧噯婊氬姩鏉� */
+            scrollbar-width: none; /* Firefox */
+            -ms-overflow-style: none; /* IE 鍜� Edge */
+        }
+
+        /* Chrome, Safari 鍜� Opera */
+        .hide-scrollbar::-webkit-scrollbar {
+            display: none;
+        }
+
+        /* 骞虫粦婊氬姩鏁堟灉 */
+        .smooth-scroll {
+            scroll-behavior: smooth;
+        }
+
+        html{
+            overflow: hidden ;
+        }
+
+        /* 椤甸潰鍩虹鏍峰紡 */
+        body {
+            background-color: #FFF;
+            padding: 20px;
+            font-family: "Microsoft YaHei", Arial, sans-serif;
+            font-size: 14px;
+            overflow-x: hidden;
+        }
+
+        .container {
+            margin: 0 auto;
+            background-color: #fff;
+            border-radius: 8px;
+            box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
+            overflow: hidden;
+        }
+
+        .header {
+            background-color: #e6e6e6;
+            padding: 15px;
+            font-weight: bold;
+        }
+
+        .summary-box {
+            margin: 20px;
+            padding: 15px;
+            background-color: #f0f9ff;
+            border-left: 4px solid #1E9FFF;
+            border-radius: 4px;
+            font-size: 14px;
+        }
+
+        .summary-box .layui-icon {
+            margin-right: 8px;
+            color: #1E9FFF;
+        }
+
+        .timeline-container {
+            padding: 0 20px 20px;
+        }
+
+        /* 鑷畾涔夋椂闂磋酱鏍峰紡 */
+        .custom-timeline {
+            position: relative;
+            padding: 20px 0;
+        }
+
+        .custom-timeline:before {
+            content: '';
+            position: absolute;
+            left: 18px;
+            top: 0;
+            bottom: 0;
+            width: 2px;
+            background-color: #e8e8e8;
+        }
+
+        .timeline-item {
+            position: relative;
+            padding-left: 50px;
+            margin-bottom: 25px;
+        }
+
+        .timeline-item:last-child {
+            margin-bottom: 0;
+        }
+
+        .timeline-icon {
+            position: absolute;
+            left: 0;
+            top: 0;
+            width: 38px;
+            height: 38px;
+            border-radius: 50%;
+            display: flex;
+            align-items: center;
+            justify-content: center;
+            color: white;
+            z-index: 2;
+        }
+
+        .timeline-content {
+            background-color: #f9f9f9;
+            border-radius: 6px;
+            padding: 15px;
+            border-left: 3px solid #1E9FFF;
+            font-size: 14px;
+        }
+
+        .operator-info {
+            font-weight: bold;
+            color: #333;
+            margin-bottom: 5px;
+        }
+
+        .status-change {
+            color: #666;
+            margin-bottom: 5px;
+        }
+
+        .status-description {
+            color: #888;
+            font-size: 13px;
+        }
+
+        .time-info {
+            text-align: right;
+            color: #999;
+            font-size: 13px;
+            margin-top: 8px;
+        }
+
+        /* 涓嶅悓鐘舵�佺殑鍥炬爣棰滆壊 */
+        .status-created { background-color: #FFB800; }
+        .status-waiting { background-color: #FF5722; }
+        .status-processing { background-color: #1E9FFF; }
+        .status-completed { background-color: #009688; }
+
+        /* 鍙粴鍔ㄥ尯鍩熸牱寮� */
+        .scrollable-area {
+            max-height: 400px; /* 璁剧疆鏈�澶ч珮搴� */
+            overflow-y: auto; /* 鍨傜洿鏂瑰悜鍏佽婊氬姩 */
+            overflow-x: hidden; /* 姘村钩鏂瑰悜闅愯棌 */
+        }
+
+        /* 鏂规硶1锛氬畬鍏ㄩ殣钘忔粴鍔ㄦ潯 */
+        .method-1 {
+            scrollbar-width: none; /* Firefox */
+            -ms-overflow-style: none; /* IE 鍜� Edge */
+        }
+
+        .method-1::-webkit-scrollbar {
+            display: none; /* Chrome, Safari 鍜� Opera */
+        }
+
+        /* 鍝嶅簲寮忚皟鏁� */
+        @media (max-width: 768px) {
+            .container {
+                margin: 10px;
+            }
+            .timeline-item {
+                padding-left: 40px;
+            }
+            .timeline-icon {
+                width: 32px;
+                height: 32px;
+            }
+            .scrollable-area {
+                max-height: 300px; /* 绉诲姩绔皟鏁撮珮搴� */
+            }
+        }
+        /* 棰濆鐨勫伐鍗曡褰曠敤浜庢紨绀烘粴鍔� */
+        .extra-records {
+            display: none;
+        }
+    </style>
+</head>
+<body>
+<div class="container">
+<!--    <div class="header">-->
+<!--        <i class="layui-icon layui-icon-form"></i> 宸ュ崟澶勭悊璁板綍-->
+<!--    </div>-->
+    <div class="summary-box">
+        <i class="layui-icon layui-icon-tips"></i>
+        澶勭悊璁板綍锛氳宸ュ崟绱澶勭悊鏃堕暱 <span style="color:#1E9FFF; font-weight:bold;">1鍒嗛挓</span>锛岀疮璁″鐞嗘鏁� <span style="color:#1E9FFF; font-weight:bold;">3娆�</span>
+    </div>
+
+    <div class="timeline-container">
+        <!-- 杩欓噷鏄彲婊氬姩鐨勬椂闂磋酱鍖哄煙 -->
+        <div class="custom-timeline scrollable-area method-1 smooth-scroll" id="timelineScroll">
+            <!-- 宸插畬鎴� -->
+            <div class="timeline-item">
+                <div class="timeline-icon status-completed">
+                    <i class="layui-icon layui-icon-ok"></i>
+                </div>
+                <div class="timeline-content">
+                    <div class="operator-info">缁忓姙浜� 鏌崇櫧</div>
+                    <div class="status-change">灏嗗伐鍗曠姸鎬佽缃负 宸插畬鎴�</div>
+                    <div class="time-info">2026-01-06 13:56:21</div>
+                </div>
+            </div>
+
+            <!-- 澶勭悊涓� -->
+            <div class="timeline-item">
+                <div class="timeline-icon status-processing">
+                    <i class="layui-icon layui-icon-loading"></i>
+                </div>
+                <div class="timeline-content">
+                    <div class="operator-info">缁忓姙浜� 鏌崇櫧</div>
+                    <div class="status-change">灏嗗伐鍗曠姸鎬佽缃负 澶勭悊涓�</div>
+                    <div class="status-description">宸叉帴鏀跺伐鍗�</div>
+                    <div class="time-info">2026-01-06 13:56:01</div>
+                </div>
+            </div>
+
+            <!-- 寰呮帴鏀� -->
+            <div class="timeline-item">
+                <div class="timeline-icon status-waiting">
+                    <i class="layui-icon layui-icon-user"></i>
+                </div>
+                <div class="timeline-content">
+                    <div class="operator-info">缁忓姙浜� 鏌崇櫧</div>
+                    <div class="status-change">灏嗗伐鍗曠姸鎬佽缃负 寰呮帴鏀讹紝涓嬩釜鍙楃悊浜轰负 鏌崇櫧</div>
+                    <div class="time-info">2026-01-06 13:55:20</div>
+                </div>
+            </div>
+
+            <!-- 鏂板缓宸ュ崟 -->
+            <div class="timeline-item">
+                <div class="timeline-icon status-created">
+                    <i class="layui-icon layui-icon-add-circle"></i>
+                </div>
+                <div class="timeline-content">
+                    <div class="status-change">鏂板缓宸ュ崟</div>
+                    <div class="status-description">鍏紬鍙仿稺GCLOUD</div>
+                    <div class="time-info">2026-01-06 13:55:00</div>
+                </div>
+            </div>
+
+            <!-- 浠ヤ笅涓洪澶栬褰曪紝鐢ㄤ簬婕旂ず婊氬姩鏁堟灉 -->
+            <div class="extra-records">
+                <!-- 棰濆璁板綍1 -->
+                <div class="timeline-item">
+                    <div class="timeline-icon status-waiting">
+                        <i class="layui-icon layui-icon-user"></i>
+                    </div>
+                    <div class="timeline-content">
+                        <div class="operator-info">绯荤粺鑷姩</div>
+                        <div class="status-change">宸ュ崟宸插垱寤猴紝绛夊緟鍒嗛厤</div>
+                        <div class="time-info">2026-01-06 13:54:30</div>
+                    </div>
+                </div>
+
+                <!-- 棰濆璁板綍2 -->
+                <div class="timeline-item">
+                    <div class="timeline-icon status-waiting">
+                        <i class="layui-icon layui-icon-notice"></i>
+                    </div>
+                    <div class="timeline-content">
+                        <div class="operator-info">绯荤粺鑷姩</div>
+                        <div class="status-change">鍙戦�佸伐鍗曞垱寤洪�氱煡</div>
+                        <div class="time-info">2026-01-06 13:54:15</div>
+                    </div>
+                </div>
+
+                <!-- 棰濆璁板綍3 -->
+                <div class="timeline-item">
+                    <div class="timeline-icon status-completed">
+                        <i class="layui-icon layui-icon-ok"></i>
+                    </div>
+                    <div class="timeline-content">
+                        <div class="operator-info">鐢ㄦ埛鎻愪氦</div>
+                        <div class="status-change">宸ュ崟鎻愪氦鎴愬姛</div>
+                        <div class="status-description">鐢ㄦ埛閫氳繃Web绔彁浜ゅ伐鍗�</div>
+                        <div class="time-info">2026-01-06 13:54:00</div>
+                    </div>
+                </div>
+
+                <!-- 棰濆璁板綍4 -->
+                <div class="timeline-item">
+                    <div class="timeline-icon status-created">
+                        <i class="layui-icon layui-icon-edit"></i>
+                    </div>
+                    <div class="timeline-content">
+                        <div class="operator-info">鐢ㄦ埛 寮犱笁</div>
+                        <div class="status-change">濉啓宸ュ崟淇℃伅</div>
+                        <div class="status-description">闂鎻忚堪锛氬叕浼楀彿鏃犳硶姝e父鐧诲綍</div>
+                        <div class="time-info">2026-01-06 13:53:45</div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+</body>
+</html>
\ No newline at end of file

--
Gitblit v1.9.3