From cf3b3fe3f9d46e28ac84f1aa61a3d9754aabf421 Mon Sep 17 00:00:00 2001
From: jiazx0107 <jiazx0107@163.com>
Date: 星期六, 17 一月 2026 00:05:13 +0800
Subject: [PATCH] 调整工单审批2

---
 fzzy-igdss-web/src/main/resources/templates/work/flow-his.html            |  168 +++--
 fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrderPR.java              |   36 -
 fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrder.view.xml            |  242 ++++----
 fzzy-igdss-web/src/main/resources/templates/work/flow-his-bak.html        |  285 +++++++++
 fzzy-igdss-web/src/main/java/com/fzzy/work/WorkOrderController.java       |   21 
 fzzy-igdss-core/src/main/java/com/fzzy/work/service/WorkOrderService.java |   49 +
 fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrder-bak.view.xml        |  939 +++++++++++++++++++++++++++++++
 fzzy-igdss-web/src/main/resources/application-dev.yml                     |    2 
 fzzy-igdss-core/src/main/java/com/fzzy/work/service/BizWorkService.java   |   19 
 fzzy-igdss-web/pom.xml                                                    |    3 
 fzzy-igdss-core/src/main/java/com/fzzy/work/domain/WorkOrderProcess.java  |   11 
 fzzy-igdss-core/src/main/java/com/fzzy/work/data/WorkOrderParam.java      |    5 
 12 files changed, 1,542 insertions(+), 238 deletions(-)

diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/work/data/WorkOrderParam.java b/fzzy-igdss-core/src/main/java/com/fzzy/work/data/WorkOrderParam.java
index a59a1ef..a159b43 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/work/data/WorkOrderParam.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/work/data/WorkOrderParam.java
@@ -14,6 +14,8 @@
 @EqualsAndHashCode(callSuper=false)
 public class WorkOrderParam {
 
+    public static final String SCOPE_SELF = "self";
+
     private String companyId;
 
     private String deptId;
@@ -25,4 +27,7 @@
     private Date start;
 
     private Date end;
+
+    //鑾峰彇鏁版嵁鑼冨洿-all锛宻elf
+    private String scope;
 }
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/work/domain/WorkOrderProcess.java b/fzzy-igdss-core/src/main/java/com/fzzy/work/domain/WorkOrderProcess.java
index 4f58eec..7a3edae 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/work/domain/WorkOrderProcess.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/work/domain/WorkOrderProcess.java
@@ -2,13 +2,11 @@
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 import java.io.Serializable;
 import java.util.Date;
 
@@ -54,6 +52,7 @@
     @TableField("action")
     private String action;
 
+    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss", timezone = "GMT+8")
     @Column(name = "create_time")
     @TableField("create_time")
     private Date createTime;
@@ -62,4 +61,8 @@
     @TableField("remark")
     private String remark;
 
+
+    @Transient
+    @TableField(exist = false)
+    private String nodeName;
 }
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 1261414..1cedead 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
@@ -12,6 +12,7 @@
 import com.fzzy.work.domain.WorkOrderConf;
 import com.fzzy.work.domain.WorkOrderProcess;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -168,10 +169,20 @@
      */
     public BaseResp todoByProcess(WorkOrderProcess process) {
 
+        String action = process.getAction();
+        if (StringUtils.isEmpty(action)) {
+            return BaseResp.error("娌℃湁璇嗗埆鍒板鐞嗗姩浣滐紝璇烽噸鏂板皾璇�");
+        }
+
         log.info("-----宸ュ崟澶勭悊-----{}", process);
         //鑾峰彇宸ュ崟
         WorkOrder work = orderService.selectById(process.getOrderId());
         if (null == work) return BaseResp.error("褰撳墠宸ュ崟宸蹭笉瀛樺湪");
+
+        if (work.getStatus().equals(WorkStatus.STATUS_50.getCode())
+                || work.getStatus().equals(WorkStatus.STATUS_60.getCode())) {
+            return BaseResp.error("褰撳墠宸ュ崟宸插鐞嗭紝璇峰埛鏂伴〉闈㈤噸璇曪紒锛�");
+        }
 
         String curNode = process.getNode();
         //鑾峰彇澶勭悊浜�
@@ -183,8 +194,6 @@
         WorkOrderConf conf = confService.selectById(work.getConfId());
         if (null == conf) return BaseResp.error("褰撳墠宸ュ崟鏈厤缃祦绋�");
 
-
-        String action = process.getAction();
         //娣诲姞璁板綍
         process.setId(ContextUtil.UUID());
         process.setCreateTime(new Date());
@@ -202,8 +211,12 @@
             process.setNode(node.getCode());
 
             //缁撴潫鍒ゆ柇锛屽鏋滄槸缁撴潫鑺傜偣锛屽垯缁撴潫宸ュ崟
-            if(WorkNode.NODE_END.getCode().equals(process.getNode())){
+            if (WorkNode.NODE_END.getCode().equals(process.getNode())) {
                 work.setStatus(WorkStatus.STATUS_50.getCode());
+
+                work.setAssigneeName(process.getAssigneeName());
+                work.setAssigneeId(process.getAssigneeId());
+
                 orderService.complete(work);
             }
         }
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 c8978c5..ba1ea5f 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
@@ -2,11 +2,13 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fzzy.igds.constant.Constant;
 import com.fzzy.igds.constant.InoutConstant;
 import com.fzzy.igds.mapper.InoutNoticeInMapper;
 import com.fzzy.igds.mapper.InoutNoticeOutMapper;
 import com.fzzy.igds.utils.ContextUtil;
 import com.fzzy.igds.utils.DateUtil;
+import com.fzzy.work.data.WorkNode;
 import com.fzzy.work.data.WorkStatus;
 import com.fzzy.work.data.WorkBizType;
 import com.fzzy.work.data.WorkOrderParam;
@@ -54,18 +56,47 @@
         workOrderMapper.insert(data);
     }
 
-    public void pageQuery(Page<WorkOrder> page, WorkOrderParam param) {
-
+    public void pageQueryByUserType(Page<WorkOrder> page, WorkOrderParam param) {
+        //鑾峰彇褰撳墠鐧诲綍浜�
+        SysUser user = ContextUtil.getLoginUser();
         QueryWrapper<WorkOrder> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("company_id", user.getCompanyId());
 
-        if (null == param) {
-            param = new WorkOrderParam();
+        String scope = param.getScope();
+        if (StringUtils.isEmpty(scope)) scope = WorkOrderParam.SCOPE_SELF;
+
+        //鐩戠鐢ㄦ埛-鏌ョ湅鎵�鏈夊簱鍖哄拰寰呭姙
+        if (Constant.USER_TYPE_10.equals(user.getUserType())) {
+
+            if (WorkOrderParam.SCOPE_SELF.equals(scope)) {
+                queryWrapper.eq("node", WorkNode.NODE2.getCode());
+            }
+        }
+
+        //搴撳尯鐢ㄦ埛锛屽鏋滄槸鍏徃鐢ㄦ埛鍙互鏌ョ湅鍏徃涓嬪睘鎵�鏈夊簱鍖猴紝濡傛灉涓哄綋鍓嶅簱鍖哄彧鏌ヨ褰撳墠搴撳尯
+        if (Constant.USER_TYPE_30.equals(user.getUserType())) {
+            if (ContextUtil.isDepotUser(user.getDeptId() + "")) {
+                queryWrapper.eq("dept_id", user.getDeptId() + "");
+            } else {
+                queryWrapper.likeRight("dept_id", user.getDeptId() + "");
+            }
+            if (WorkOrderParam.SCOPE_SELF.equals(scope)) {
+                queryWrapper.eq("node", WorkNode.NODE1.getCode());
+            }
 
         }
-        if (null == param.getCompanyId()) param.setCompanyId(ContextUtil.getCompanyId());
 
-        queryWrapper.eq("company_id", param.getCompanyId());
+        //閾惰鐢ㄦ埛锛屾牴鎹悎鍚屾煡璇㈤摱琛屼笅鎵�鏈夊簱鍖�
+        if (Constant.USER_TYPE_20.equals(user.getUserType())) {
+            //濡傛灉娌℃湁閰嶇疆閾惰锛岃缃竴涓笉瀛樺湪鐨勯摱琛屽彿
+            if (StringUtils.isBlank(user.getUserData())) user.setUserData("9");
 
+            queryWrapper.eq("bank_id", user.getUserData());
+
+            if (WorkOrderParam.SCOPE_SELF.equals(scope)) {
+                queryWrapper.eq("node", WorkNode.NODE3.getCode());
+            }
+        }
 
         queryWrapper.eq(null != param.getDeptId(), "dept_id", param.getDeptId());
         queryWrapper.like(null != param.getName(), "title", param.getName());
@@ -131,8 +162,8 @@
     }
 
     public void complete(WorkOrder work) {
-        //鏇存柊宸ュ崟鐘舵��
-        workOrderMapper.updateStatus(work.getId(), work.getStatus());
+        //鏇存柊宸ュ崟
+        workOrderMapper.updateById(work);
 
         //鏇存柊鍏ュ簱閫氱煡鍗曠姸鎬�
         if (work.getBizType().equals(WorkBizType.TYPE_10.getCode())) {
@@ -144,4 +175,6 @@
             noticeOutMapper.auditComplete(work.getBusinessId(), work.getStatus());
         }
     }
+
+
 }
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrder-bak.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrder-bak.view.xml
new file mode 100644
index 0000000..b01b72c
--- /dev/null
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrder-bak.view.xml
@@ -0,0 +1,939 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ViewConfig>
+  <Arguments/>
+  <Context/>
+  <Model>
+    <DataType name="dtMain">
+      <Property name="creationType">com.fzzy.work.domain.WorkOrder</Property>
+      <PropertyDef name="id">
+        <Property></Property>
+        <Property name="label">宸ュ崟ID</Property>
+      </PropertyDef>
+      <PropertyDef name="title">
+        <Property></Property>
+        <Property name="label">宸ュ崟鍚嶇О</Property>
+      </PropertyDef>
+      <PropertyDef name="description">
+        <Property></Property>
+        <Property name="label">宸ュ崟鎻忚堪</Property>
+      </PropertyDef>
+      <PropertyDef name="bizType">
+        <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>
+        <Property name="label">宸ュ崟鐘舵��</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;workOrderPR#triggerStatus&quot;).getResult()}</Property>
+          <Property name="valueProperty">dictLabel</Property>
+          <Property name="keyProperty">dictValue</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="assigneeId">
+        <Property></Property>
+      </PropertyDef>
+      <PropertyDef name="assigneeName">
+        <Property></Property>
+        <Property name="label">褰撳墠澶勭悊浜�</Property>
+      </PropertyDef>
+      <PropertyDef name="receiveTime">
+        <Property name="dataType">DateTime</Property>
+        <Property name="label">褰撳墠鐜妭鎺ユ敹鏃堕棿</Property>
+      </PropertyDef>
+      <PropertyDef name="createTime">
+        <Property name="dataType">DateTime</Property>
+        <Property name="label">鍒涘缓鏃堕棿</Property>
+      </PropertyDef>
+      <PropertyDef name="createUserId">
+        <Property></Property>
+      </PropertyDef>
+      <PropertyDef name="createUserName">
+        <Property></Property>
+        <Property name="label">鍒涘缓浜�</Property>
+      </PropertyDef>
+      <PropertyDef name="businessId">
+        <Property></Property>
+      </PropertyDef>
+      <PropertyDef name="businessUrl">
+        <Property></Property>
+      </PropertyDef>
+      <PropertyDef name="remark">
+        <Property></Property>
+        <Property name="label">澶囨敞璇存槑</Property>
+      </PropertyDef>
+      <PropertyDef name="companyId">
+        <Property></Property>
+      </PropertyDef>
+      <PropertyDef name="deptId">
+        <Property></Property>
+        <Property name="label">鎵�灞炲簱鍖�</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;deptPR#getDeptByUserType&quot;).getResult()}</Property>
+          <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">
+      <Property name="creationType">com.fzzy.work.data.WorkOrderParam</Property>
+      <PropertyDef name="companyId">
+        <Property></Property>
+      </PropertyDef>
+      <PropertyDef name="deptId">
+        <Property></Property>
+        <Property name="label">鎵�灞炲簱鍖�</Property>
+        <Property name="mapping">
+          <Property name="mapValues">${dorado.getDataProvider(&quot;deptPR#getDeptByUserType&quot;).getResult()}</Property>
+          <Property name="keyProperty">id</Property>
+          <Property name="valueProperty">kqmc</Property>
+        </Property>
+      </PropertyDef>
+      <PropertyDef name="name">
+        <Property></Property>
+        <Property name="label">宸ュ崟鍚嶇О</Property>
+      </PropertyDef>
+      <PropertyDef name="status">
+        <Property></Property>
+        <Property name="label">宸ュ崟鐘舵��</Property>
+      </PropertyDef>
+      <PropertyDef name="start">
+        <Property name="dataType">Date</Property>
+        <Property name="label">寮�濮嬫椂闂�</Property>
+      </PropertyDef>
+      <PropertyDef name="end">
+        <Property name="dataType">Date</Property>
+        <Property name="label">鎴鏃堕棿</Property>
+      </PropertyDef>
+    </DataType>
+    <DataType name="dtWordProcess">
+      <Property name="creationType">com.fzzy.work.domain.WorkOrderProcess</Property>
+      <PropertyDef name="orderId">
+        <Property></Property>
+      </PropertyDef>
+      <PropertyDef name="action">
+        <Property></Property>
+      </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>
+  <View layout="padding:10">
+    <ClientEvent name="onReady">query= function(){&#xD;
+	var param = view.get(&quot;#dsQuery.data&quot;);&#xD;
+	var tabIndex = view.get(&quot;#tabMain.currentIndex&quot;);&#xD;
+	if(0 == tabIndex){&#xD;
+		view.get(&quot;#dsMain&quot;).set(&quot;parameter&quot;,param).flushAsync();&#xD;
+	}else{&#xD;
+		view.get(&quot;#dsMain2&quot;).set(&quot;parameter&quot;,param).flushAsync();&#xD;
+	}&#xD;
+}&#xD;
+      &#xD;
+//瀹d紶鎿嶄綔&#xD;
+renderCell1 = function(arg,self,index){&#xD;
+   var data = arg.data;&#xD;
+   var htm = &quot;&lt;a onClick='audit()' class='a-btn1'>鎸囨淳&lt;/a>&amp;nbsp;|&amp;nbsp;&lt;a onClick='showDetail()' class='a-btn2'>璇︾粏&lt;/a>&quot;;&#xD;
+   if(1 == index){&#xD;
+   		htm = &quot;&lt;a onClick='showDetail()' class='a-btn2'>璇︾粏&lt;/a>&quot;;&#xD;
+   }&#xD;
+   arg.dom.innerHTML = htm;&#xD;
+};&#xD;
+&#xD;
+renderStatus = function(arg){&#xD;
+	var val = arg.data.get(&quot;status&quot;);&#xD;
+	var txt = arg.data.getText(&quot;status&quot;);&#xD;
+	if(!val) return true;&#xD;
+	var htm = &quot;&lt;span class='s1'>&quot;+txt+&quot;&lt;/span>&quot;;&#xD;
+	if(val==&quot;20&quot;){//宸叉淳鍗�&#xD;
+		htm = &quot;&lt;span class='s2'>&quot;+txt+&quot;&lt;/span>&quot;;&#xD;
+	}&#xD;
+	if(val==&quot;30&quot;){//澶勭悊涓�&#xD;
+		htm = &quot;&lt;span class='s4'>&quot;+txt+&quot;&lt;/span>&quot;;&#xD;
+	}&#xD;
+	if(val==&quot;40&quot;){//宸茶В鍐�&#xD;
+		htm = &quot;&lt;span class='s3'>&quot;+txt+&quot;&lt;/span>&quot;;&#xD;
+	}&#xD;
+	if(val==&quot;50&quot;){//宸插叧闂�&#xD;
+		htm = &quot;&lt;span class='s3'>&quot;+txt+&quot;&lt;/span>&quot;;&#xD;
+	}&#xD;
+	if(val==&quot;60&quot;){//鎸傝捣&#xD;
+		htm = &quot;&lt;span class='s3'>&quot;+txt+&quot;&lt;/span>&quot;;&#xD;
+	}&#xD;
+    arg.dom.innerHTML = htm;&#xD;
+}&#xD;
+&#xD;
+//鐐瑰嚮瀹℃牳&#xD;
+audit = function(){&#xD;
+	&#xD;
+}&#xD;
+//鐐瑰嚮璇︾粏&#xD;
+showDetail = function(){&#xD;
+	var tabIndex = view.get(&quot;#tabMain.currentIndex&quot;);&#xD;
+	var cur = view.get(&quot;#dsMain.data:#&quot;);&#xD;
+	var dialog = view.get(&quot;#dialogMain&quot;);&#xD;
+	view.get('^btnTag').set('visible',true);&#xD;
+	if(1 == tabIndex){&#xD;
+		view.get('^btnTag').set('visible',false);&#xD;
+		cur = view.get(&quot;#dsMain2.data:#&quot;);&#xD;
+	}&#xD;
+	dialog.show();&#xD;
+	&#xD;
+	var orderId = cur.get(&quot;id&quot;);&#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;
+		view.get(&quot;#iFrameBiz&quot;).set(&quot;path&quot;,url);&#xD;
+	}else{&#xD;
+		view.get(&quot;#iFrameBiz&quot;).set(&quot;path&quot;,&quot;/work/no-business?orderId=&quot;+orderId);&#xD;
+	}&#xD;
+}&#xD;
+//鎵ц瀹℃壒&#xD;
+todo = function(){&#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;node&quot;, cur.get(&quot;node&quot;));&#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.message);&#xD;
+		}else{&#xD;
+			$alert(&quot;鎵ц鎴愬姛锛�&quot;);&#xD;
+			view.get('#dialogTodo').hide();&#xD;
+			query();&#xD;
+		}&#xD;
+	});&#xD;
+}&#xD;
+cancelTodo = function(){&#xD;
+	var process = view.get(&quot;#dsProcess.data&quot;);&#xD;
+	process.set(&quot;action&quot;,null);&#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>
+      <Property name="dataType">[dtMain]</Property>
+      <Property name="dataProvider">workOrderPR#pageQueryByUserType</Property>
+      <Property name="pageSize">10</Property>
+      <Property name="loadMode">lazy</Property>
+    </DataSet>
+    <DataSet id="dsMain2">
+      <ClientEvent name="onLoadData">$notify(&quot;鏁版嵁鍔犺浇瀹屾垚鈥︹��&quot;);</ClientEvent>
+      <Property name="dataType">[dtMain]</Property>
+      <Property name="dataProvider">workOrderPR#pageQuery2</Property>
+      <Property name="pageSize">10</Property>
+      <Property name="loadMode">lazy</Property>
+    </DataSet>
+    <DataSet id="dsQuery">
+      <ClientEvent name="onReady">self.insert({});</ClientEvent>
+      <Property name="dataType">dtParam</Property>
+    </DataSet>
+    <DataSet id="dsProcess">
+      <ClientEvent name="onReady">self.insert();</ClientEvent>
+      <Property name="dataType">dtWordProcess</Property>
+    </DataSet>
+    <HtmlContainer layoutConstraint="top ">
+      <Property name="content">&lt;style>&#xD;
+.parent {&#xD;
+  display: flex;&#xD;
+  width: 100%;&#xD;
+  background: #FFF;&#xD;
+}&#xD;
+.console-link-block {&#xD;
+    font-size: 16px;&#xD;
+    padding: 20px 20px;&#xD;
+    border-radius: 4px;&#xD;
+    background-color: #40D4B0;&#xD;
+    color: #FFFFFF !important;&#xD;
+    box-shadow: 0 2px 3px rgba(0, 0, 0, .05);&#xD;
+    position: relative;&#xD;
+    overflow: hidden;&#xD;
+    display: block;&#xD;
+}&#xD;
+&#xD;
+.console-link-block .console-link-block-num {&#xD;
+    font-size: 40px;&#xD;
+    margin-bottom: 5px;&#xD;
+    opacity: .9;&#xD;
+}&#xD;
+&#xD;
+.console-link-block .console-link-block-text {&#xD;
+    opacity: .8;&#xD;
+}&#xD;
+.console-link-block .console-link-block-icon {&#xD;
+    position: absolute;&#xD;
+    top: 50%;&#xD;
+    right: 20px;&#xD;
+    width: 50px;&#xD;
+    height: 50px;&#xD;
+    font-size: 50px;&#xD;
+    line-height: 50px;&#xD;
+    margin-top: -25px;&#xD;
+    color: #FFFFFF;&#xD;
+    opacity: .8;&#xD;
+}&#xD;
+.console-link-block .console-link-block-band {&#xD;
+    color: #fff;&#xD;
+    width: 100px;&#xD;
+    font-size: 12px;&#xD;
+    padding: 2px 0 3px 0;&#xD;
+    background-color: #E32A16;&#xD;
+    line-height: inherit;&#xD;
+    text-align: center;&#xD;
+    position: absolute;&#xD;
+    top: 8px;&#xD;
+    right: -30px;&#xD;
+    transform-origin: center;&#xD;
+    transform: rotate(45deg) scale(.8);&#xD;
+    opacity: .95;&#xD;
+    z-index: 2;&#xD;
+}&#xD;
+.bg2{&#xD;
+	background-color: #55A5EA;&#xD;
+}&#xD;
+.bg3{&#xD;
+	background-color: #9DAFFF;&#xD;
+}&#xD;
+.bg4{&#xD;
+	 background-color: #F591A2;&#xD;
+}&#xD;
+.bg5{&#xD;
+	  background-color: #FEAA4F;&#xD;
+}&#xD;
+.child {&#xD;
+  flex: 1;&#xD;
+  padding: 10px;&#xD;
+  box-sizing: border-box;&#xD;
+}&#xD;
+.child:last-child {&#xD;
+  border-right: none;&#xD;
+}&#xD;
+.console-icon{&#xD;
+	height:50px;&#xD;
+	position:absolute;&#xD;
+	right:20px;&#xD;
+	opacity:.8;&#xD;
+	top:50%;&#xD;
+	margin-top:-25px;&#xD;
+}&#xD;
+		&#xD;
+&lt;/style>&#xD;
+    &#xD;
+    &lt;!-- 蹇嵎鏂瑰紡 -->&#xD;
+    &lt;div class=&quot;parent&quot;>&#xD;
+   &#xD;
+        &lt;div class=&quot;child&quot;>&#xD;
+            &lt;div class=&quot;console-link-block&quot;>&#xD;
+                &lt;div class=&quot;console-link-block-num&quot;>0&lt;/div>&#xD;
+                &lt;div class=&quot;console-link-block-text&quot;>浠婃棩宸ュ崟缁熻&lt;/div>&#xD;
+                &lt;img class=&quot;console-icon&quot; src=&quot;/img/icon-wj.png&quot;>&#xD;
+            &lt;/div>&#xD;
+        &lt;/div>&#xD;
+        &#xD;
+        &lt;div class=&quot;child&quot;>&#xD;
+            &lt;div class=&quot;console-link-block bg2&quot;>&#xD;
+                &lt;div class=&quot;console-link-block-num&quot;>0&lt;/div>&#xD;
+                &lt;div class=&quot;console-link-block-text&quot;>浠婃棩寰呭畬鎴愬伐鍗�&lt;/div>&#xD;
+                &lt;img class=&quot;console-icon&quot; src=&quot;/img/icon-wj2.png&quot;>&#xD;
+            &lt;/div>&#xD;
+        &lt;/div>&#xD;
+        &#xD;
+        &lt;div class=&quot;child&quot;>&#xD;
+            &lt;div class=&quot;console-link-block bg3&quot;>&#xD;
+                &lt;div class=&quot;console-link-block-num&quot;>0&lt;/div>&#xD;
+                &lt;div class=&quot;console-link-block-text&quot;>鎬诲伐鍗曠粺璁�&lt;/div>&#xD;
+                &lt;img class=&quot;console-icon&quot; src=&quot;/img/icon-tj.png&quot;>&#xD;
+            &lt;/div>&#xD;
+        &lt;/div>&#xD;
+        &#xD;
+       &lt;div class=&quot;child&quot;>&#xD;
+            &lt;div class=&quot;console-link-block bg4&quot;>&#xD;
+                &lt;div class=&quot;console-link-block-num&quot;>0&lt;/div>&#xD;
+                &lt;div class=&quot;console-link-block-text&quot;>鎬绘湭瀹屾垚宸ュ崟&lt;/div>&#xD;
+                &lt;img class=&quot;console-icon&quot; src=&quot;/img/icon-tj2.png&quot;>&#xD;
+            &lt;/div>&#xD;
+        &lt;/div>&#xD;
+        &#xD;
+    &lt;/div></Property>
+      <Property name="style">
+        <Property name="background-color">#FFF</Property>
+      </Property>
+    </HtmlContainer>
+    <Container>
+      <Property name="className">c-param</Property>
+      <Property name="style">
+        <Property name="margin-top">10px</Property>
+      </Property>
+      <AutoForm>
+        <Property name="cols">*,*,*,*,90,90</Property>
+        <Property name="dataSet">dsQuery</Property>
+        <Property name="labelAlign">right</Property>
+        <Property name="labelWidth">100</Property>
+        <AutoFormElement>
+          <Property name="name">deptId</Property>
+          <Property name="property">deptId</Property>
+          <Property name="trigger">autoMappingDropDown2</Property>
+          <Editor/>
+        </AutoFormElement>
+        <AutoFormElement>
+          <Property name="name">name</Property>
+          <Property name="property">name</Property>
+          <Editor/>
+        </AutoFormElement>
+        <AutoFormElement>
+          <Property name="name">start</Property>
+          <Property name="property">start</Property>
+          <Editor/>
+        </AutoFormElement>
+        <AutoFormElement>
+          <Property name="name">end</Property>
+          <Property name="property">end</Property>
+          <Editor/>
+        </AutoFormElement>
+        <Button>
+          <ClientEvent name="onClick">query();</ClientEvent>
+          <Property name="caption">鎼滅储</Property>
+          <Property name="iconClass">fa fa-search</Property>
+          <Property name="exClassName">btn-q1</Property>
+        </Button>
+        <Button>
+          <ClientEvent name="onClick">view.get(&quot;#dsQuery&quot;).set(&quot;data&quot;,{});</ClientEvent>
+          <Property name="caption">閲嶇疆</Property>
+          <Property name="exClassName">btn-q2</Property>
+          <Property name="iconClass">fa fa-refresh</Property>
+        </Button>
+      </AutoForm>
+    </Container>
+    <Container>
+      <Property name="className">c-data</Property>
+      <TabControl id="tabMain">
+        <ControlTab>
+          <Property name="caption">鎴戠殑宸ュ崟</Property>
+          <Property name="iconClass">fa fa-th-large</Property>
+          <Property name="width">150</Property>
+          <Container>
+            <DataGrid layoutConstraint="padding:8">
+              <ClientEvent name="onDataRowClick">self.set(&quot;selection&quot;,arg.data);</ClientEvent>
+              <Property name="dataSet">dsMain</Property>
+              <Property name="readOnly">true</Property>
+              <Property name="selectionMode">singleRow</Property>
+              <Property name="readOnly">true</Property>
+              <Property name="fixedColumnCount">3</Property>
+              <RowSelectorColumn/>
+              <RowNumColumn>
+                <Property name="width">50</Property>
+                <Property name="caption">搴忓彿</Property>
+              </RowNumColumn>
+              <DataColumn>
+                <ClientEvent name="onRenderCell">renderCell1(arg,self,0);</ClientEvent>
+                <Property name="caption">鎿嶄綔</Property>
+                <Property name="width">80</Property>
+                <Property name="align">center</Property>
+                <Editor/>
+              </DataColumn>
+              <DataColumn name="id">
+                <Property name="property">id</Property>
+                <Property name="width">180</Property>
+              </DataColumn>
+              <DataColumn name="deptId">
+                <Property name="property">deptId</Property>
+                <Property name="width">250</Property>
+              </DataColumn>
+              <DataColumn name="title">
+                <Property name="property">title</Property>
+                <Property name="width">300</Property>
+              </DataColumn>
+              <DataColumn>
+                <ClientEvent name="onRenderCell">renderStatus(arg);</ClientEvent>
+                <Property name="property">status</Property>
+                <Property name="width">120</Property>
+                <Property name="align">center</Property>
+                <Property name="name">status</Property>
+              </DataColumn>
+              <DataColumn name="bizType">
+                <Property name="property">bizType</Property>
+                <Property name="width">120</Property>
+                <Property name="align">center</Property>
+              </DataColumn>
+              <DataColumn name="assigneeName">
+                <Property name="property">assigneeName</Property>
+                <Property name="align">center</Property>
+                <Property name="width">150</Property>
+              </DataColumn>
+              <DataColumn name="receiveTime">
+                <Property name="property">receiveTime</Property>
+                <Property name="width">150</Property>
+                <Property name="align">center</Property>
+              </DataColumn>
+              <DataColumn name="createUserName">
+                <Property name="property">createUserName</Property>
+                <Property name="align">center</Property>
+                <Property name="width">150</Property>
+              </DataColumn>
+              <DataColumn name="createTime">
+                <Property name="property">createTime</Property>
+                <Property name="align">center</Property>
+                <Property name="width">150</Property>
+              </DataColumn>
+            </DataGrid>
+            <ToolBar layoutConstraint="bottom">
+              <Fill/>
+              <DataPilot layoutConstraint="right">
+                <Property name="itemCodes">pageSize,pages</Property>
+                <Property name="dataSet">dsMain</Property>
+              </DataPilot>
+            </ToolBar>
+          </Container>
+        </ControlTab>
+        <ControlTab>
+          <Property name="caption">鍏ㄩ儴宸ュ崟</Property>
+          <Property name="iconClass">fa fa-history</Property>
+          <Property name="width">150</Property>
+          <Container>
+            <DataGrid layoutConstraint="padding:8">
+              <ClientEvent name="onDataRowClick">self.set(&quot;selection&quot;,arg.data);</ClientEvent>
+              <Property name="dataSet">dsMain2</Property>
+              <Property name="readOnly">true</Property>
+              <Property name="selectionMode">singleRow</Property>
+              <Property name="readOnly">true</Property>
+              <Property name="fixedColumnCount">3</Property>
+              <RowSelectorColumn/>
+              <RowNumColumn>
+                <Property name="width">50</Property>
+                <Property name="caption">搴忓彿</Property>
+              </RowNumColumn>
+              <DataColumn>
+                <ClientEvent name="onRenderCell">renderCell1(arg,self,1);</ClientEvent>
+                <Property name="caption">鎿嶄綔</Property>
+                <Property name="width">150</Property>
+                <Property name="align">center</Property>
+                <Editor/>
+              </DataColumn>
+              <DataColumn name="id">
+                <Property name="property">id</Property>
+                <Property name="width">180</Property>
+              </DataColumn>
+              <DataColumn name="deptId">
+                <Property name="property">deptId</Property>
+                <Property name="width">250</Property>
+              </DataColumn>
+              <DataColumn name="title">
+                <Property name="property">title</Property>
+                <Property name="width">300</Property>
+              </DataColumn>
+              <DataColumn>
+                <ClientEvent name="onRenderCell">renderStatus(arg);</ClientEvent>
+                <Property name="property">status</Property>
+                <Property name="width">120</Property>
+                <Property name="align">center</Property>
+                <Property name="name">status</Property>
+              </DataColumn>
+              <DataColumn name="bizType">
+                <Property name="property">bizType</Property>
+                <Property name="width">120</Property>
+                <Property name="align">center</Property>
+              </DataColumn>
+              <DataColumn name="assigneeName">
+                <Property name="property">assigneeName</Property>
+                <Property name="align">center</Property>
+                <Property name="width">150</Property>
+              </DataColumn>
+              <DataColumn name="receiveTime">
+                <Property name="property">receiveTime</Property>
+                <Property name="width">150</Property>
+                <Property name="align">center</Property>
+              </DataColumn>
+              <DataColumn name="createUserName">
+                <Property name="property">createUserName</Property>
+                <Property name="align">center</Property>
+                <Property name="width">150</Property>
+              </DataColumn>
+              <DataColumn name="createTime">
+                <Property name="property">createTime</Property>
+                <Property name="align">center</Property>
+                <Property name="width">150</Property>
+              </DataColumn>
+            </DataGrid>
+            <ToolBar layoutConstraint="bottom">
+              <Fill/>
+              <DataPilot layoutConstraint="right">
+                <Property name="itemCodes">pageSize,pages</Property>
+                <Property name="dataSet">dsMain2</Property>
+              </DataPilot>
+            </ToolBar>
+          </Container>
+        </ControlTab>
+      </TabControl>
+    </Container>
+    <Dialog id="dialogMain" layout="regionPadding:8">
+      <Property name="closeable">false</Property>
+      <Property name="caption">宸ュ崟璇︾粏</Property>
+      <Property name="iconClass">fa fa-tasks</Property>
+      <Property name="width">90%</Property>
+      <Property name="showCaptionBar">false</Property>
+      <Property name="style">
+        <Property name="background-color">#e6e6e6</Property>
+      </Property>
+      <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>
+              <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">var process = view.get(&quot;#dsProcess.data&quot;);&#xD;
+process.set('action','pass')&#xD;
+view.get(&quot;#dialogTodo&quot;).show();</ClientEvent>
+                    <Property name="caption">閫氳繃</Property>
+                    <Property name="width">80</Property>
+                    <Property name="exClassName">btn1</Property>
+                    <Property name="iconClass">fa fa-check-circle</Property>
+                    <Property name="tags">btnTag</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>
+                    <Property name="tags">btnTag</Property>
+                  </ToolBarButton>
+                  <ToolBarButton>
+                    <ClientEvent name="onClick">var process = view.get(&quot;#dsProcess.data&quot;);&#xD;
+process.set('action','refuse')&#xD;
+view.get(&quot;#dialogTodo&quot;).show();</ClientEvent>
+                    <Property name="caption">鎷掔粷</Property>
+                    <Property name="width">80</Property>
+                    <Property name="exClassName">btn5</Property>
+                    <Property name="iconClass">fa fa-check-circle</Property>
+                    <Property name="tags">btnTag</Property>
+                  </ToolBarButton>
+                  <ToolBarButton>
+                    <ClientEvent name="onClick">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>
+        </TabControl>
+      </Children>
+      <Tools/>
+    </Dialog>
+    <Dialog id="dialogMain2" layout="regionPadding:8">
+      <Property name="closeable">false</Property>
+      <Property name="caption">宸ュ崟璇︾粏</Property>
+      <Property name="iconClass">fa fa-tasks</Property>
+      <Property name="width">90%</Property>
+      <Property name="showCaptionBar">false</Property>
+      <Property name="style">
+        <Property name="background-color">#e6e6e6</Property>
+      </Property>
+      <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>
+              <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">var process = view.get(&quot;#dsProcess.data&quot;);&#xD;
+process.set('action','pass')&#xD;
+view.get(&quot;#dialogTodo&quot;).show();</ClientEvent>
+                    <Property name="caption">閫氳繃</Property>
+                    <Property name="width">80</Property>
+                    <Property name="exClassName">btn1</Property>
+                    <Property name="iconClass">fa fa-check-circle</Property>
+                    <Property name="tags">btnTag</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>
+                    <Property name="tags">btnTag</Property>
+                  </ToolBarButton>
+                  <ToolBarButton>
+                    <ClientEvent name="onClick">var process = view.get(&quot;#dsProcess.data&quot;);&#xD;
+process.set('action','refuse')&#xD;
+view.get(&quot;#dialogTodo&quot;).show();</ClientEvent>
+                    <Property name="caption">鎷掔粷</Property>
+                    <Property name="width">80</Property>
+                    <Property name="exClassName">btn5</Property>
+                    <Property name="iconClass">fa fa-check-circle</Property>
+                    <Property name="tags">btnTag</Property>
+                  </ToolBarButton>
+                  <ToolBarButton>
+                    <ClientEvent name="onClick">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>
+        </TabControl>
+      </Children>
+      <Tools/>
+    </Dialog>
+    <UpdateAction id="updateSave">
+      <UpdateItem>
+        <Property name="dataPath">[#current]</Property>
+        <Property name="dataSet">dsMain</Property>
+      </UpdateItem>
+    </UpdateAction>
+    <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();</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">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/WorkOrder.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/work/WorkOrder.view.xml
index c7e3aae..08c7be5 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
@@ -131,6 +131,9 @@
         <Property name="dataType">Date</Property>
         <Property name="label">鎴鏃堕棿</Property>
       </PropertyDef>
+      <PropertyDef name="scope">
+        <Property/>
+      </PropertyDef>
     </DataType>
     <DataType name="dtWordProcess">
       <Property name="creationType">com.fzzy.work.domain.WorkOrderProcess</Property>
@@ -163,20 +166,26 @@
     </DataType>
   </Model>
   <View layout="padding:10">
-    <ClientEvent name="onReady">query= function(){&#xD;
+    <ClientEvent name="onReady">view.TAG = 1;&#xD;
+query= function(){&#xD;
 	var param = view.get(&quot;#dsQuery.data&quot;);&#xD;
 	var tabIndex = view.get(&quot;#tabMain.currentIndex&quot;);&#xD;
+	param.set(&quot;scope&quot;,&quot;all&quot;);&#xD;
 	if(0 == tabIndex){&#xD;
-		view.get(&quot;#dsMain&quot;).set(&quot;parameter&quot;,param).flushAsync();&#xD;
-	}else{&#xD;
-		view.get(&quot;#dsMain2&quot;).set(&quot;parameter&quot;,param).flushAsync();&#xD;
+		param.set(&quot;scope&quot;,&quot;self&quot;);&#xD;
 	}&#xD;
+	view.get(&quot;#dsMain&quot;).set(&quot;parameter&quot;,param).flushAsync();&#xD;
 }&#xD;
+query();&#xD;
       &#xD;
 //瀹d紶鎿嶄綔&#xD;
 renderCell1 = function(arg,self){&#xD;
+   var tabIndex = view.get(&quot;#tabMain.currentIndex&quot;);&#xD;
    var data = arg.data;&#xD;
    var htm = &quot;&lt;a onClick='audit()' class='a-btn1'>鎸囨淳&lt;/a>&amp;nbsp;|&amp;nbsp;&lt;a onClick='showDetail()' class='a-btn2'>璇︾粏&lt;/a>&quot;;&#xD;
+   if(1 == tabIndex){&#xD;
+   		htm = &quot;&lt;a onClick='showDetail()' class='a-btn2'>璇︾粏&lt;/a>&quot;;&#xD;
+   }&#xD;
    arg.dom.innerHTML = htm;&#xD;
 };&#xD;
 &#xD;
@@ -212,8 +221,9 @@
 	var tabIndex = view.get(&quot;#tabMain.currentIndex&quot;);&#xD;
 	var cur = view.get(&quot;#dsMain.data:#&quot;);&#xD;
 	var dialog = view.get(&quot;#dialogMain&quot;);&#xD;
+	view.get('^btnTag').set('visible',true);&#xD;
 	if(1 == tabIndex){&#xD;
-		cur = view.get(&quot;#dsMain2.data:#&quot;);&#xD;
+		view.get('^btnTag').set('visible',false);&#xD;
 	}&#xD;
 	dialog.show();&#xD;
 	&#xD;
@@ -229,13 +239,11 @@
 	}&#xD;
 }&#xD;
 //鎵ц瀹℃壒&#xD;
-todo = function(action){&#xD;
+todo = function(){&#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;
@@ -243,15 +251,17 @@
 	}&#xD;
 	view.get(&quot;#ajaxTodo&quot;).set('parameter',process).execute(function(result){&#xD;
 		if('200' != result.code){&#xD;
-			$alert(result.msg);&#xD;
+			$alert(result.message);&#xD;
 		}else{&#xD;
 			$alert(&quot;鎵ц鎴愬姛锛�&quot;);&#xD;
 			view.get('#dialogTodo').hide();&#xD;
+			query();&#xD;
 		}&#xD;
 	});&#xD;
 }&#xD;
 cancelTodo = function(){&#xD;
 	var process = view.get(&quot;#dsProcess.data&quot;);&#xD;
+	process.set(&quot;action&quot;,null);&#xD;
 	process.set('remark',null);&#xD;
 	view.get('#dialogTodo').hide();&#xD;
 }&#xD;
@@ -260,16 +270,9 @@
     <DataSet id="dsMain">
       <ClientEvent name="onLoadData">$notify(&quot;鏁版嵁鍔犺浇瀹屾垚鈥︹��&quot;);</ClientEvent>
       <Property name="dataType">[dtMain]</Property>
-      <Property name="dataProvider">workOrderPR#pageQuery</Property>
+      <Property name="dataProvider">workOrderPR#pageQueryByUserType</Property>
       <Property name="pageSize">10</Property>
-      <Property name="loadMode">lazy</Property>
-    </DataSet>
-    <DataSet id="dsMain2">
-      <ClientEvent name="onLoadData">$notify(&quot;鏁版嵁鍔犺浇瀹屾垚鈥︹��&quot;);</ClientEvent>
-      <Property name="dataType">[dtMain]</Property>
-      <Property name="dataProvider">workOrderPR#pageQuery2</Property>
-      <Property name="pageSize">10</Property>
-      <Property name="loadMode">lazy</Property>
+      <Property name="loadMode">manual</Property>
     </DataSet>
     <DataSet id="dsQuery">
       <ClientEvent name="onReady">self.insert({});</ClientEvent>
@@ -454,9 +457,88 @@
     <Container>
       <Property name="className">c-data</Property>
       <TabControl id="tabMain">
+        <ClientEvent name="onTabChange">if(view.TAG) query();</ClientEvent>
         <ControlTab>
-          <Property name="caption">鍏ㄩ儴</Property>
+          <Property name="caption">鎴戠殑宸ュ崟</Property>
           <Property name="iconClass">fa fa-th-large</Property>
+          <Property name="width">150</Property>
+          <Container>
+            <DataGrid layoutConstraint="padding:8">
+              <ClientEvent name="onDataRowClick">self.set(&quot;selection&quot;,arg.data);</ClientEvent>
+              <Property name="dataSet">dsMain</Property>
+              <Property name="readOnly">true</Property>
+              <Property name="selectionMode">singleRow</Property>
+              <Property name="readOnly">true</Property>
+              <Property name="fixedColumnCount">3</Property>
+              <RowSelectorColumn/>
+              <RowNumColumn>
+                <Property name="width">50</Property>
+                <Property name="caption">搴忓彿</Property>
+              </RowNumColumn>
+              <DataColumn>
+                <ClientEvent name="onRenderCell">renderCell1(arg,self);</ClientEvent>
+                <Property name="caption">鎿嶄綔</Property>
+                <Property name="width">80</Property>
+                <Property name="align">center</Property>
+                <Editor/>
+              </DataColumn>
+              <DataColumn name="id">
+                <Property name="property">id</Property>
+                <Property name="width">180</Property>
+              </DataColumn>
+              <DataColumn name="deptId">
+                <Property name="property">deptId</Property>
+                <Property name="width">250</Property>
+              </DataColumn>
+              <DataColumn name="title">
+                <Property name="property">title</Property>
+                <Property name="width">300</Property>
+              </DataColumn>
+              <DataColumn>
+                <ClientEvent name="onRenderCell">renderStatus(arg);</ClientEvent>
+                <Property name="property">status</Property>
+                <Property name="width">120</Property>
+                <Property name="align">center</Property>
+                <Property name="name">status</Property>
+              </DataColumn>
+              <DataColumn name="bizType">
+                <Property name="property">bizType</Property>
+                <Property name="width">120</Property>
+                <Property name="align">center</Property>
+              </DataColumn>
+              <DataColumn name="assigneeName">
+                <Property name="property">assigneeName</Property>
+                <Property name="align">center</Property>
+                <Property name="width">150</Property>
+              </DataColumn>
+              <DataColumn name="receiveTime">
+                <Property name="property">receiveTime</Property>
+                <Property name="width">150</Property>
+                <Property name="align">center</Property>
+              </DataColumn>
+              <DataColumn name="createUserName">
+                <Property name="property">createUserName</Property>
+                <Property name="align">center</Property>
+                <Property name="width">150</Property>
+              </DataColumn>
+              <DataColumn name="createTime">
+                <Property name="property">createTime</Property>
+                <Property name="align">center</Property>
+                <Property name="width">150</Property>
+              </DataColumn>
+            </DataGrid>
+            <ToolBar layoutConstraint="bottom">
+              <Fill/>
+              <DataPilot layoutConstraint="right">
+                <Property name="itemCodes">pageSize,pages</Property>
+                <Property name="dataSet">dsMain</Property>
+              </DataPilot>
+            </ToolBar>
+          </Container>
+        </ControlTab>
+        <ControlTab>
+          <Property name="caption">鍏ㄩ儴宸ュ崟</Property>
+          <Property name="iconClass">fa fa-history</Property>
           <Property name="width">150</Property>
           <Container>
             <DataGrid layoutConstraint="padding:8">
@@ -528,84 +610,6 @@
               <DataPilot layoutConstraint="right">
                 <Property name="itemCodes">pageSize,pages</Property>
                 <Property name="dataSet">dsMain</Property>
-              </DataPilot>
-            </ToolBar>
-          </Container>
-        </ControlTab>
-        <ControlTab>
-          <Property name="caption">宸茬粨鏉�</Property>
-          <Property name="iconClass">fa fa-history</Property>
-          <Property name="width">150</Property>
-          <Container>
-            <DataGrid layoutConstraint="padding:8">
-              <ClientEvent name="onDataRowClick">self.set(&quot;selection&quot;,arg.data);</ClientEvent>
-              <Property name="dataSet">dsMain2</Property>
-              <Property name="readOnly">true</Property>
-              <Property name="selectionMode">singleRow</Property>
-              <Property name="readOnly">true</Property>
-              <Property name="fixedColumnCount">3</Property>
-              <RowSelectorColumn/>
-              <RowNumColumn>
-                <Property name="width">50</Property>
-                <Property name="caption">搴忓彿</Property>
-              </RowNumColumn>
-              <DataColumn>
-                <ClientEvent name="onRenderCell">renderCell1(arg,self);</ClientEvent>
-                <Property name="caption">鎿嶄綔</Property>
-                <Property name="width">150</Property>
-                <Property name="align">center</Property>
-                <Editor/>
-              </DataColumn>
-              <DataColumn name="id">
-                <Property name="property">id</Property>
-                <Property name="width">180</Property>
-              </DataColumn>
-              <DataColumn name="deptId">
-                <Property name="property">deptId</Property>
-                <Property name="width">250</Property>
-              </DataColumn>
-              <DataColumn name="title">
-                <Property name="property">title</Property>
-                <Property name="width">300</Property>
-              </DataColumn>
-              <DataColumn>
-                <ClientEvent name="onRenderCell">renderStatus(arg);</ClientEvent>
-                <Property name="property">status</Property>
-                <Property name="width">120</Property>
-                <Property name="align">center</Property>
-                <Property name="name">status</Property>
-              </DataColumn>
-              <DataColumn name="bizType">
-                <Property name="property">bizType</Property>
-                <Property name="width">120</Property>
-                <Property name="align">center</Property>
-              </DataColumn>
-              <DataColumn name="assigneeName">
-                <Property name="property">assigneeName</Property>
-                <Property name="align">center</Property>
-                <Property name="width">150</Property>
-              </DataColumn>
-              <DataColumn name="receiveTime">
-                <Property name="property">receiveTime</Property>
-                <Property name="width">150</Property>
-                <Property name="align">center</Property>
-              </DataColumn>
-              <DataColumn name="createUserName">
-                <Property name="property">createUserName</Property>
-                <Property name="align">center</Property>
-                <Property name="width">150</Property>
-              </DataColumn>
-              <DataColumn name="createTime">
-                <Property name="property">createTime</Property>
-                <Property name="align">center</Property>
-                <Property name="width">150</Property>
-              </DataColumn>
-            </DataGrid>
-            <ToolBar layoutConstraint="bottom">
-              <Fill/>
-              <DataPilot layoutConstraint="right">
-                <Property name="itemCodes">pageSize,pages</Property>
-                <Property name="dataSet">dsMain2</Property>
               </DataPilot>
             </ToolBar>
           </Container>
@@ -690,22 +694,34 @@
                 <ToolBar>
                   <Fill/>
                   <ToolBarButton>
-                    <ClientEvent name="onClick">view.get(&quot;#dialogTodo&quot;).show();&#xD;
-</ClientEvent>
-                    <Property name="caption">澶勭悊</Property>
+                    <ClientEvent name="onClick">var process = view.get(&quot;#dsProcess.data&quot;);&#xD;
+process.set('action','pass')&#xD;
+view.get(&quot;#dialogTodo&quot;).show();</ClientEvent>
+                    <Property name="caption">閫氳繃</Property>
                     <Property name="width">80</Property>
                     <Property name="exClassName">btn1</Property>
                     <Property name="iconClass">fa fa-check-circle</Property>
+                    <Property name="tags">btnTag</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>
+                    <Property name="tags">btnTag</Property>
                   </ToolBarButton>
                   <ToolBarButton>
-                    <ClientEvent name="onClick">view.get(&quot;#dsMain.data:#&quot;).cancel();&#xD;
-view.get(&quot;#dialogMain&quot;).hide();</ClientEvent>
+                    <ClientEvent name="onClick">var process = view.get(&quot;#dsProcess.data&quot;);&#xD;
+process.set('action','refuse')&#xD;
+view.get(&quot;#dialogTodo&quot;).show();</ClientEvent>
+                    <Property name="caption">鎷掔粷</Property>
+                    <Property name="width">80</Property>
+                    <Property name="exClassName">btn5</Property>
+                    <Property name="iconClass">fa fa-check-circle</Property>
+                    <Property name="tags">btnTag</Property>
+                  </ToolBarButton>
+                  <ToolBarButton>
+                    <ClientEvent name="onClick">view.get(&quot;#dialogMain&quot;).hide();</ClientEvent>
                     <Property name="caption">鍏抽棴</Property>
                     <Property name="width">80</Property>
                     <Property name="exClassName">btn3</Property>
@@ -731,15 +747,6 @@
       </Children>
       <Tools/>
     </Dialog>
-    <UpdateAction id="updateSave">
-      <UpdateItem>
-        <Property name="dataPath">[#current]</Property>
-        <Property name="dataSet">dsMain</Property>
-      </UpdateItem>
-    </UpdateAction>
-    <AjaxAction id="ajaxDel">
-      <Property name="confirmMessage">纭畾瑕佹墽琛屽垹闄や箞锛�</Property>
-    </AjaxAction>
     <Dialog id="dialogTodo">
       <Property name="width">600</Property>
       <Property name="caption">瀹℃壒澶勭悊</Property>
@@ -747,22 +754,15 @@
       <Property name="iconClass">fa fa-bookmark</Property>
       <Buttons>
         <Button>
-          <ClientEvent name="onClick">todo('pass');</ClientEvent>
-          <Property name="caption">閫氳繃</Property>
+          <ClientEvent name="onClick">todo();</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="caption">鍙栨秷</Property>
           <Property name="iconClass">fa fa-times</Property>
           <Property name="exClassName">btn3</Property>
           <Property name="width">90</Property>
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 c3ac938..dca987b 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
@@ -17,6 +17,7 @@
 import com.fzzy.work.service.WorkOrderService;
 import com.ruoyi.common.core.domain.entity.SysDictData;
 
+import com.ruoyi.common.core.domain.entity.SysUser;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Component;
 
@@ -42,44 +43,19 @@
     private BizWorkService bizWorkService;
 
     /**
-     *
-     * workOrderPR#pageQuery
-     * 鍒嗛〉鏌ヨ
-     * @param page
-     * @param param
+     * 鏍规嵁鐢ㄦ埛瑙掕壊閫夋嫨涓嶅悓鐨勫伐鍗曚俊鎭�
+     * @param page 鍒嗛〉淇℃伅
+     * @param param 鍙傛暟
      */
     @DataProvider
-    public void pageQuery(Page<WorkOrder> page, WorkOrderParam param) {
+    public void pageQueryByUserType(Page<WorkOrder> page, WorkOrderParam param) {
 
         com.baomidou.mybatisplus.extension.plugins.pagination.Page<WorkOrder> corePage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPageNo(), page.getPageSize());
 
         if (null == param) param = new WorkOrderParam();
         param.setCompanyId(ContextUtil.getCompanyId());
 
-        workOrderService.pageQuery(corePage, param);
-
-        // 閲嶆柊灏佽
-        page.setEntities(corePage.getRecords());
-        page.setEntityCount(Integer.parseInt(String.valueOf(corePage.getTotal())));
-    }
-
-    /**
-     *
-     * workOrderPR#pageQuery2
-     * 宸茬粡瀹屾垚锛屽垎椤垫煡璇�
-     * @param page
-     * @param param
-     */
-    @DataProvider
-    public void pageQuery2(Page<WorkOrder> page, WorkOrderParam param) {
-
-        com.baomidou.mybatisplus.extension.plugins.pagination.Page<WorkOrder> corePage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(page.getPageNo(), page.getPageSize());
-
-        if (null == param) param = new WorkOrderParam();
-        param.setStatus(WorkStatus.STATUS_50.getCode());
-        param.setCompanyId(ContextUtil.getCompanyId());
-
-        workOrderService.pageQuery(corePage, param);
+        workOrderService.pageQueryByUserType(corePage, param);
 
         // 閲嶆柊灏佽
         page.setEntities(corePage.getRecords());
diff --git a/fzzy-igdss-web/pom.xml b/fzzy-igdss-web/pom.xml
index 71bc8c2..d8e3caa 100644
--- a/fzzy-igdss-web/pom.xml
+++ b/fzzy-igdss-web/pom.xml
@@ -57,12 +57,13 @@
             <version>${fzzy.igdss.version}</version>
         </dependency>
 
-        <!-- 鎺ュ彛妯″潡-->
+        <!-- 鎺ュ彛妯″潡
         <dependency>
             <groupId>com.fzzy</groupId>
             <artifactId>fzzy-igdss-inte</artifactId>
             <version>${fzzy.igdss.version}</version>
         </dependency>
+        -->
 
     </dependencies>
 
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 eeff0d3..a36f80c 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
@@ -1,8 +1,12 @@
 package com.fzzy.work;
 
+import com.fzzy.igds.utils.DateUtil;
 import com.fzzy.work.domain.WorkOrderConf;
+import com.fzzy.work.domain.WorkOrderProcess;
 import com.fzzy.work.service.WorkOrderConfService;
+import com.fzzy.work.service.WorkOrderProcessService;
 import com.ruoyi.common.core.controller.BaseController;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.ModelMap;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -10,10 +14,13 @@
 import org.springframework.web.bind.annotation.RequestParam;
 
 import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
 
 /**
  * 宸ュ崟绠$悊
  */
+@Slf4j
 @Controller
 @RequestMapping("/work")
 public class WorkOrderController extends BaseController {
@@ -23,6 +30,8 @@
 
     @Resource
     private WorkOrderConfService workOrderConfService;
+    @Resource
+    private WorkOrderProcessService workOrderProcessService;
 
 
     /**
@@ -69,8 +78,18 @@
      */
     @GetMapping("/flow-his")
     public String flowHis(@RequestParam("orderId") String orderId, ModelMap mmap) {
+        log.info("宸ュ崟璁板綍-宸ュ崟ID锛歿}", orderId);
+        List<WorkOrderProcess> list = workOrderProcessService.queryList(orderId);
+        mmap.put("list", list);
+        mmap.put("tipTime", 1);
+        mmap.put("tipCount", 1);
 
-        mmap.put("list", null);
+        if (null != list && !list.isEmpty()) {
+            //娆℃暟榛樿鍑忓幓绗竴娆℃彁浜�
+            mmap.put("tipCount", list.size() - 1);
+            long tipTime = DateUtil.difMin(list.get(0).getCreateTime(), new Date());
+            mmap.put("tipTime", tipTime);
+        }
 
         return prefix + "/flow-his";
     }
diff --git a/fzzy-igdss-web/src/main/resources/application-dev.yml b/fzzy-igdss-web/src/main/resources/application-dev.yml
index 73a03a8..ea067a0 100644
--- a/fzzy-igdss-web/src/main/resources/application-dev.yml
+++ b/fzzy-igdss-web/src/main/resources/application-dev.yml
@@ -71,7 +71,7 @@
 
   # Redis鐩稿叧閰嶇疆
   redis:
-    database: 0
+    database: 2
     host: 127.0.0.1
     port: 6379
     password:
diff --git a/fzzy-igdss-web/src/main/resources/templates/work/flow-his-bak.html b/fzzy-igdss-web/src/main/resources/templates/work/flow-his-bak.html
new file mode 100644
index 0000000..f6ac683
--- /dev/null
+++ b/fzzy-igdss-web/src/main/resources/templates/work/flow-his-bak.html
@@ -0,0 +1,285 @@
+<!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;" th:text="${tipTime}">1鍒嗛挓</span>锛岀疮璁″鐞嗘鏁� <span style="color:#1E9FFF; font-weight:bold;" th:text="${tipCount}">1娆�</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
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
index 0a9fb72..d634785 100644
--- a/fzzy-igdss-web/src/main/resources/templates/work/flow-his.html
+++ b/fzzy-igdss-web/src/main/resources/templates/work/flow-his.html
@@ -23,8 +23,8 @@
             scroll-behavior: smooth;
         }
 
-        html{
-            overflow: hidden ;
+        html {
+            overflow: hidden;
         }
 
         /* 椤甸潰鍩虹鏍峰紡 */
@@ -121,12 +121,10 @@
             color: #333;
             margin-bottom: 5px;
         }
-
         .status-change {
             color: #666;
             margin-bottom: 5px;
         }
-
         .status-description {
             color: #888;
             font-size: 13px;
@@ -140,10 +138,21 @@
         }
 
         /* 涓嶅悓鐘舵�佺殑鍥炬爣棰滆壊 */
-        .status-created { background-color: #FFB800; }
-        .status-waiting { background-color: #FF5722; }
-        .status-processing { background-color: #1E9FFF; }
-        .status-completed { background-color: #009688; }
+        .status-created {
+            background-color: #FFB800;
+        }
+
+        .status-waiting {
+            background-color: #FF5722;
+        }
+
+        .status-processing {
+            background-color: #1E9FFF;
+        }
+
+        .status-completed {
+            background-color: #009688;
+        }
 
         /* 鍙粴鍔ㄥ尯鍩熸牱寮� */
         .scrollable-area {
@@ -167,37 +176,43 @@
             .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="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>
+        澶勭悊璁板綍锛氳宸ュ崟绱澶勭悊鏃堕暱 <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>
@@ -208,8 +223,9 @@
                     <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>
@@ -221,8 +237,9 @@
                     <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>
@@ -233,8 +250,9 @@
                     <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>
@@ -245,61 +263,73 @@
                     <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>
+
+<!-- 鍏ㄥ眬js -->
+<script th:src="@{/js/jquery.min.js}"></script>
+
+<script th:inline="javascript">
+    var list = [[${list}]];
+
+    $(function () {
+        if (list && list.length > 0) {
+            init();
+        }
+        function getNodeName(node) {
+            if (node.indexOf('start') > 0) {
+                return '鎻愪氦';
+            } else if (node.indexOf('end') > 0) {
+                return '瀹屾垚';
+            } else if ('node1' === node) {
+                return '搴撳尯瀹℃壒';
+            } else if ('node2' === node) {
+                return '鐩戠瀹℃壒';
+            } else if ('node3' === node) {
+                return '閾惰瀹℃壒';
+            } else {
+                return '瀹℃壒';
+            }
+        }
+
+        function init() {
+            var htm = '';
+            for (var i = 0; i < list.length; i++) {
+                var item = list[i];
+                var node = item.node;
+                htm += '<div class="timeline-item">';
+
+                if (node.indexOf('start') > 0) {
+                    htm += '<div class="timeline-icon status-created">';
+                    htm += '<i class="layui-icon layui-icon-add-circle"></i>'
+                } else if (node.indexOf('end') > 0) {
+                    htm += '<div class="timeline-icon status-completed">';
+                    htm += '<i class="layui-icon layui-icon-ok"></i>'
+                } else {
+                    htm += '<div class="timeline-icon status-processing">';
+                    htm += '<i class="layui-icon layui-icon-loading"></i>'
+                }
+                htm += '</div>';
+                htm += '<div class="timeline-content">';
+                //htm += '<div class="operator-info">' + item.assigneeName + '</div>';
+                htm += '<div class="operator-info">';
+                htm += '娴佺▼鑺傜偣锛�'+getNodeName(node);
+                htm += ' 瀹℃壒鍔ㄤ綔锛�'+item.action;
+                htm += ' 缁忓姙浜猴細'+item.assigneeName;
+                htm += '</div>';
+                htm += '<div class="status-change">' + item.remark + '</div>';
+                htm += '<div class="time-info">' + item.createTime + '</div>';
+                htm += '</div></div>';
+            }
+            $('#timelineScroll').html(htm);
+        }
+
+    });
+
+</script>
+
 </body>
 </html>
\ No newline at end of file

--
Gitblit v1.9.3