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ï¼self private String scope; } 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; } 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); } } 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()); } } } 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("workOrderPR#triggerBizType").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("workOrderPR#triggerStatus").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("deptPR#getDeptByUserType").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("deptPR#getDeptByUserType").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(){
 var param = view.get("#dsQuery.data");
 var tabIndex = view.get("#tabMain.currentIndex");
 if(0 == tabIndex){
 view.get("#dsMain").set("parameter",param).flushAsync();
 }else{
 view.get("#dsMain2").set("parameter",param).flushAsync();
 }
 }
 
 //å®£ä¼ æä½
 renderCell1 = function(arg,self,index){
 var data = arg.data;
 var htm = "<a onClick='audit()' class='a-btn1'>ææ´¾</a>&nbsp;|&nbsp;<a onClick='showDetail()' class='a-btn2'>详ç»</a>";
 if(1 == index){
 htm = "<a onClick='showDetail()' class='a-btn2'>详ç»</a>";
 }
 arg.dom.innerHTML = htm;
 };
 
 renderStatus = function(arg){
 var val = arg.data.get("status");
 var txt = arg.data.getText("status");
 if(!val) return true;
 var htm = "<span class='s1'>"+txt+"</span>";
 if(val=="20"){//已派å
 htm = "<span class='s2'>"+txt+"</span>";
 }
 if(val=="30"){//å¤çä¸
 htm = "<span class='s4'>"+txt+"</span>";
 }
 if(val=="40"){//已解å³
 htm = "<span class='s3'>"+txt+"</span>";
 }
 if(val=="50"){//å·²å ³é
 htm = "<span class='s3'>"+txt+"</span>";
 }
 if(val=="60"){//æèµ·
 htm = "<span class='s3'>"+txt+"</span>";
 }
 arg.dom.innerHTML = htm;
 }
 
 //ç¹å»å®¡æ ¸
 audit = function(){
 
 }
 //ç¹å»è¯¦ç»
 showDetail = function(){
 var tabIndex = view.get("#tabMain.currentIndex");
 var cur = view.get("#dsMain.data:#");
 var dialog = view.get("#dialogMain");
 view.get('^btnTag').set('visible',true);
 if(1 == tabIndex){
 view.get('^btnTag').set('visible',false);
 cur = view.get("#dsMain2.data:#");
 }
 dialog.show();
 
 var orderId = cur.get("id");
 //å岿°æ®
 view.get('#iFrameFlowHis').set('path','/work/flow-his?orderId='+orderId);
 //ä¸å¡ä¿¡æ¯
 if(cur.get("businessUrl")){
 var url = cur.get("businessUrl")+"?businessId="+cur.get("businessId")+"&orderId="+orderId;
 view.get("#iFrameBiz").set("path",url);
 }else{
 view.get("#iFrameBiz").set("path","/work/no-business?orderId="+orderId);
 }
 }
 //æ§è¡å®¡æ¹
 todo = function(){
 var cur = view.get("#dsMain.data:#");
 var process = view.get("#dsProcess.data");
 process.set("orderId", cur.get("id"));
 process.set("node", cur.get("node"));
 var remark = process.get('remark');
 if(!remark){
 $notify("请填åå®¡æ¹æè§â¦â¦");
 return;
 }
 view.get("#ajaxTodo").set('parameter',process).execute(function(result){
 if('200' != result.code){
 $alert(result.message);
 }else{
 $alert("æ§è¡æåï¼");
 view.get('#dialogTodo').hide();
 query();
 }
 });
 }
 cancelTodo = function(){
 var process = view.get("#dsProcess.data");
 process.set("action",null);
 process.set('remark',null);
 view.get('#dialogTodo').hide();
 }
 </ClientEvent> <Property name="packages">font-awesome,css-common</Property> <DataSet id="dsMain"> <ClientEvent name="onLoadData">$notify("æ°æ®å è½½å®æâ¦â¦");</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("æ°æ®å è½½å®æâ¦â¦");</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"><style>
 .parent {
 display: flex;
 width: 100%;
 background: #FFF;
 }
 .console-link-block {
 font-size: 16px;
 padding: 20px 20px;
 border-radius: 4px;
 background-color: #40D4B0;
 color: #FFFFFF !important;
 box-shadow: 0 2px 3px rgba(0, 0, 0, .05);
 position: relative;
 overflow: hidden;
 display: block;
 }
 
 .console-link-block .console-link-block-num {
 font-size: 40px;
 margin-bottom: 5px;
 opacity: .9;
 }
 
 .console-link-block .console-link-block-text {
 opacity: .8;
 }
 .console-link-block .console-link-block-icon {
 position: absolute;
 top: 50%;
 right: 20px;
 width: 50px;
 height: 50px;
 font-size: 50px;
 line-height: 50px;
 margin-top: -25px;
 color: #FFFFFF;
 opacity: .8;
 }
 .console-link-block .console-link-block-band {
 color: #fff;
 width: 100px;
 font-size: 12px;
 padding: 2px 0 3px 0;
 background-color: #E32A16;
 line-height: inherit;
 text-align: center;
 position: absolute;
 top: 8px;
 right: -30px;
 transform-origin: center;
 transform: rotate(45deg) scale(.8);
 opacity: .95;
 z-index: 2;
 }
 .bg2{
 background-color: #55A5EA;
 }
 .bg3{
 background-color: #9DAFFF;
 }
 .bg4{
 background-color: #F591A2;
 }
 .bg5{
 background-color: #FEAA4F;
 }
 .child {
 flex: 1;
 padding: 10px;
 box-sizing: border-box;
 }
 .child:last-child {
 border-right: none;
 }
 .console-icon{
 height:50px;
 position:absolute;
 right:20px;
 opacity:.8;
 top:50%;
 margin-top:-25px;
 }
 
 </style>
 
 <!-- å¿«æ·æ¹å¼ -->
 <div class="parent">
 
 <div class="child">
 <div class="console-link-block">
 <div class="console-link-block-num">0</div>
 <div class="console-link-block-text">仿¥å·¥åç»è®¡</div>
 <img class="console-icon" src="/img/icon-wj.png">
 </div>
 </div>
 
 <div class="child">
 <div class="console-link-block bg2">
 <div class="console-link-block-num">0</div>
 <div class="console-link-block-text">仿¥å¾ 宿工å</div>
 <img class="console-icon" src="/img/icon-wj2.png">
 </div>
 </div>
 
 <div class="child">
 <div class="console-link-block bg3">
 <div class="console-link-block-num">0</div>
 <div class="console-link-block-text">æ»å·¥åç»è®¡</div>
 <img class="console-icon" src="/img/icon-tj.png">
 </div>
 </div>
 
 <div class="child">
 <div class="console-link-block bg4">
 <div class="console-link-block-num">0</div>
 <div class="console-link-block-text">æ»æªå®æå·¥å</div>
 <img class="console-icon" src="/img/icon-tj2.png">
 </div>
 </div>
 
 </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("#dsQuery").set("data",{});</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("selection",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("selection",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("#dsProcess.data");
 process.set('action','pass')
 view.get("#dialogTodo").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("#dsProcess.data");
 process.set('action','refuse')
 view.get("#dialogTodo").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("#dialogMain").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("#dsProcess.data");
 process.set('action','pass')
 view.get("#dialogTodo").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("#dsProcess.data");
 process.set('action','refuse')
 view.get("#dialogTodo").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("#dialogMain").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> 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(){
 <ClientEvent name="onReady">view.TAG = 1;
 query= function(){
 var param = view.get("#dsQuery.data");
 var tabIndex = view.get("#tabMain.currentIndex");
 param.set("scope","all");
 if(0 == tabIndex){
 view.get("#dsMain").set("parameter",param).flushAsync();
 }else{
 view.get("#dsMain2").set("parameter",param).flushAsync();
 param.set("scope","self");
 }
 view.get("#dsMain").set("parameter",param).flushAsync();
 }
 query();
 
 //å®£ä¼ æä½
 renderCell1 = function(arg,self){
 var tabIndex = view.get("#tabMain.currentIndex");
 var data = arg.data;
 var htm = "<a onClick='audit()' class='a-btn1'>ææ´¾</a>&nbsp;|&nbsp;<a onClick='showDetail()' class='a-btn2'>详ç»</a>";
 if(1 == tabIndex){
 htm = "<a onClick='showDetail()' class='a-btn2'>详ç»</a>";
 }
 arg.dom.innerHTML = htm;
 };
 
 @@ -212,8 +221,9 @@ var tabIndex = view.get("#tabMain.currentIndex");
 var cur = view.get("#dsMain.data:#");
 var dialog = view.get("#dialogMain");
 view.get('^btnTag').set('visible',true);
 if(1 == tabIndex){
 cur = view.get("#dsMain2.data:#");
 view.get('^btnTag').set('visible',false);
 }
 dialog.show();
 
 @@ -229,13 +239,11 @@ }
 }
 //æ§è¡å®¡æ¹
 todo = function(action){
 todo = function(){
 var cur = view.get("#dsMain.data:#");
 var process = view.get("#dsProcess.data");
 process.set("orderId", cur.get("id"));
 process.set("action", action);
 process.set("node", cur.get("node"));
 
 var remark = process.get('remark');
 if(!remark){
 $notify("请填åå®¡æ¹æè§â¦â¦");
 @@ -243,15 +251,17 @@ }
 view.get("#ajaxTodo").set('parameter',process).execute(function(result){
 if('200' != result.code){
 $alert(result.msg);
 $alert(result.message);
 }else{
 $alert("æ§è¡æåï¼");
 view.get('#dialogTodo').hide();
 query();
 }
 });
 }
 cancelTodo = function(){
 var process = view.get("#dsProcess.data");
 process.set("action",null);
 process.set('remark',null);
 view.get('#dialogTodo').hide();
 }
 @@ -260,16 +270,9 @@ <DataSet id="dsMain"> <ClientEvent name="onLoadData">$notify("æ°æ®å è½½å®æâ¦â¦");</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("æ°æ®å è½½å®æâ¦â¦");</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("selection",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("selection",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("#dialogTodo").show();
 </ClientEvent> <Property name="caption">å¤ç</Property> <ClientEvent name="onClick">var process = view.get("#dsProcess.data");
 process.set('action','pass')
 view.get("#dialogTodo").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("#dsMain.data:#").cancel();
 view.get("#dialogMain").hide();</ClientEvent> <ClientEvent name="onClick">var process = view.get("#dsProcess.data");
 process.set('action','refuse')
 view.get("#dialogTodo").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("#dialogMain").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> 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()); 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> 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"; } 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: 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">å ¬ä¼å·Â·WGCLOUD</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">é®é¢æè¿°ï¼å ¬ä¼å·æ æ³æ£å¸¸ç»å½</div> <div class="time-info">2026-01-06 13:53:45</div> </div> </div> </div> </div> </div> </div> </body> </html> 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">é®é¢æè¿°ï¼å ¬ä¼å·æ æ³æ£å¸¸ç»å½</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>