Ver código fonte

项目上报功能

user5 4 anos atrás
pai
commit
f40000fdb6
19 arquivos alterados com 3259 adições e 225 exclusões
  1. 2 2
      pom.xml
  2. 10 3
      src/main/java/com/jeeplus/common/servlet/UserfilesDownloadServlet.java
  3. 65 4
      src/main/java/com/jeeplus/common/utils/HttpClientUtil.java
  4. 13 2
      src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectRecordsReportedDao.java
  5. 9 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectRecords.java
  6. 59 3
      src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectRecordsReported.java
  7. 10 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectcontentinfo.java
  8. 602 18
      src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageService.java
  9. 138 4
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageController.java
  10. 0 180
      src/main/java/com/jeeplus/modules/utils/GetDataFromConfigurationCenterUtil.java
  11. 27 1
      src/main/java/com/jeeplus/modules/workprojectnotify/web/WorkProjectNotifyController.java
  12. 1 0
      src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageDao.xml
  13. 33 5
      src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectRecordsReported.xml
  14. 1 1
      src/main/resources/spring-mvc.xml
  15. 6 0
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/projectcontentinfo/reportView.jsp
  16. 911 0
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/reportedAudit.jsp
  17. 904 0
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/reportedModify.jsp
  18. 457 0
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/reportedView.jsp
  19. 11 2
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/ruralProjectMessageList.jsp

+ 2 - 2
pom.xml

@@ -74,8 +74,8 @@
                 <artifactId>maven-compiler-plugin</artifactId>
                 <version>3.3</version>
                 <configuration>
-                    <source>8</source>
-                    <target>8</target>
+                    <source>1.7</source>
+                    <target>1.7</target>
                     <compilerArguments>
                         <bootclasspath>${java.home}/lib/rt.jar;${java.home}/lib/jce.jar</bootclasspath>
                         <extdirs>${project.basedir}/src/main/webapp/WEB-INF/jar</extdirs>

+ 10 - 3
src/main/java/com/jeeplus/common/servlet/UserfilesDownloadServlet.java

@@ -58,9 +58,16 @@ public class UserfilesDownloadServlet extends HttpServlet {
 			FileCopyUtils.copy(new FileInputStream(file), resp.getOutputStream());
 			resp.setHeader("Content-Type", "application/octet-stream");
 			return;
-		} catch (FileNotFoundException e) {
-			req.setAttribute("exception", new FileNotFoundException("请求的文件不存在"));
-			req.getRequestDispatcher("/webpage/error/404.jsp").forward(req, resp);
+		} catch (Exception e) {
+			try{
+				File fileTry = new File(Global.getUserfilesBaseDir() + Global.USERFILES_BASE_URL + filepath);
+				FileCopyUtils.copy(new FileInputStream(fileTry), resp.getOutputStream());
+				resp.setHeader("Content-Type", "application/octet-stream");
+				return;
+			}catch(Exception ex){
+				req.setAttribute("exception", new FileNotFoundException("请求的文件不存在"));
+				req.getRequestDispatcher("/webpage/error/404.jsp").forward(req, resp);
+			}
 		}
 	}
 

+ 65 - 4
src/main/java/com/jeeplus/common/utils/HttpClientUtil.java

@@ -3,18 +3,18 @@ package com.jeeplus.common.utils;
 
 
 import net.sf.json.JSONObject;
-import org.apache.http.HttpEntity;
-import org.apache.http.HttpResponse;
-import org.apache.http.NameValuePair;
-import org.apache.http.ParseException;
+import org.apache.http.*;
 import org.apache.http.client.ClientProtocolException;
 import org.apache.http.client.HttpClient;
+import org.apache.http.client.config.RequestConfig;
 import org.apache.http.client.entity.UrlEncodedFormEntity;
 import org.apache.http.client.methods.HttpGet;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.client.methods.HttpUriRequest;
 import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.client.DefaultHttpClient;
+import org.apache.http.impl.client.HttpClients;
 import org.apache.http.message.BasicNameValuePair;
 import org.apache.http.protocol.HTTP;
 import org.apache.http.util.EntityUtils;
@@ -210,6 +210,67 @@ public class HttpClientUtil {
 			return body;
 		}
 	}
+
+    /**
+     * 发送post请求
+     * @param url
+     * @param json
+     * @return
+     */
+    public static String executePost(String url, String json) {
+        CloseableHttpClient closeableHttpClient = HttpClients.createDefault();
+        HttpPost method =  new HttpPost(url);
+        String body = null;
+        try{
+            //建立一个NameValuePair数组,用于存储欲传送的参数
+            method.addHeader("Content-type","application/json; charset=utf-8");
+            method.setHeader("Accept", "application/json");
+            method.setEntity(new StringEntity(json, Charset.forName("UTF-8")));
+            HttpResponse response = closeableHttpClient.execute(method);
+            int statusCode = response.getStatusLine().getStatusCode();
+            if(statusCode != HttpStatus.SC_OK)
+            {
+                System.out.println(response.getStatusLine());
+            }
+            //获取响应数据
+            body = EntityUtils.toString(response.getEntity(),"UTF-8");
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        return body;
+    }
+
+    /**
+     * 发送get请求
+     * @param url
+     * @return
+     */
+    public static String executeGet(String url)   {
+        CloseableHttpClient httpCilent2 = HttpClients.createDefault();
+        RequestConfig requestConfig = RequestConfig.custom()
+                .setConnectTimeout(5000)   //设置连接超时时间
+                .setConnectionRequestTimeout(5000) // 设置请求超时时间
+                .setSocketTimeout(5000)
+                .setRedirectsEnabled(true)//默认允许自动重定向
+                .build();
+        HttpGet httpGet2 = new HttpGet(url);
+        httpGet2.setConfig(requestConfig);
+        String srtResult = "";
+        try {
+            HttpResponse httpResponse = httpCilent2.execute(httpGet2);
+            srtResult = EntityUtils.toString(httpResponse.getEntity());//获得返回的结果
+            System.out.println(srtResult);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }finally {
+            try {
+                httpCilent2.close();
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        return srtResult;
+    }
    
     
 }

+ 13 - 2
src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectRecordsReportedDao.java

@@ -32,8 +32,19 @@ public interface RuralProjectRecordsReportedDao extends CrudDao<RuralProjectReco
 
     /**
      * 删除上报咨询员信息
-     * @param info
+     * @param reported
      * @return
      */
-    int deleteConsultant(ReportedConsultant info);
+    int deleteConsultant(RuralProjectRecordsReported reported);
+
+
+
+
+    /**
+     * 修改上报审批状态
+     * @param reported
+     */
+    void updateStatusById(RuralProjectRecordsReported reported);
+
+    void updateProcessIdAndStatus(RuralProjectRecordsReported reported);
 }

+ 9 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectRecords.java

@@ -68,6 +68,7 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 	private Integer projectReportRecordStatus; //归档状态
 
 	private String prrProcessInstanceId; //归档流程号
+	private String reportedProcessInstanceId;//上报流程号
 
 	private String projectType; //类型 1.工程咨询 2.造价审核
 	private String constructionUnit; //施工单位
@@ -866,4 +867,12 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 	public void setReportStatus(String reportStatus) {
 		this.reportStatus = reportStatus;
 	}
+
+	public String getReportedProcessInstanceId() {
+		return reportedProcessInstanceId;
+	}
+
+	public void setReportedProcessInstanceId(String reportedProcessInstanceId) {
+		this.reportedProcessInstanceId = reportedProcessInstanceId;
+	}
 }

+ 59 - 3
src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectRecordsReported.java

@@ -5,7 +5,9 @@ package com.jeeplus.modules.ruralprojectrecords.entity;
 
 import com.alibaba.fastjson.annotation.JSONField;
 import com.google.common.collect.Lists;
+import com.jeeplus.common.persistence.ActEntity;
 import com.jeeplus.common.persistence.DataEntity;
+import com.jeeplus.modules.sys.entity.Office;
 import com.jeeplus.modules.sys.entity.User;
 import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
 
@@ -17,7 +19,7 @@ import java.util.List;
  * @author ppt
  * @version 2018-05-02
  */
-public class RuralProjectRecordsReported extends DataEntity<RuralProjectRecordsReported> {
+public class RuralProjectRecordsReported extends ActEntity<RuralProjectRecordsReported> {
 
 	public static final String SERIAL_BIZCODE ="1";
 	private WorkContractInfo workContractInfo;		// 合同信息
@@ -88,8 +90,14 @@ public class RuralProjectRecordsReported extends DataEntity<RuralProjectRecordsR
 	private String FGYLProject;//仿古园林工程
 	private String QTProjec;	//其他专业工程咨询项目造价包含内容说明
 
-	private String city;
-	private String county;
+	private String province;   	//省
+	private String city;		//市
+	private String county;     	//区县
+	private String processInstanceId;
+	private Office company;	// 公司
+	private Office office;	// 部门
+	private String reportStatus;  //上报状态
+	private String home;
 
 	public WorkContractInfo getWorkContractInfo() {
 		return workContractInfo;
@@ -570,4 +578,52 @@ public class RuralProjectRecordsReported extends DataEntity<RuralProjectRecordsR
 	public void setCounty(String county) {
 		this.county = county;
 	}
+
+	public String getProcessInstanceId() {
+		return processInstanceId;
+	}
+
+	public void setProcessInstanceId(String processInstanceId) {
+		this.processInstanceId = processInstanceId;
+	}
+
+	public Office getCompany() {
+		return company;
+	}
+
+	public void setCompany(Office company) {
+		this.company = company;
+	}
+
+	public Office getOffice() {
+		return office;
+	}
+
+	public void setOffice(Office office) {
+		this.office = office;
+	}
+
+	public String getReportStatus() {
+		return reportStatus;
+	}
+
+	public void setReportStatus(String reportStatus) {
+		this.reportStatus = reportStatus;
+	}
+
+	public String getHome() {
+		return home;
+	}
+
+	public void setHome(String home) {
+		this.home = home;
+	}
+
+	public String getProvince() {
+		return province;
+	}
+
+	public void setProvince(String province) {
+		this.province = province;
+	}
 }

+ 10 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectcontentinfo.java

@@ -45,6 +45,8 @@ public class RuralProjectcontentinfo extends TreeEntity<RuralProjectcontentinfo>
 	private List<ProjectTemplateInfo> fileGistdataList;   //依据性文件
 	private List<ProjectTemplateInfo> fileOtherList;   //其他文件
 
+	private String reportedId;
+
 	public String getProjectId() {
 		return projectId;
 	}
@@ -226,4 +228,12 @@ public class RuralProjectcontentinfo extends TreeEntity<RuralProjectcontentinfo>
 	public void setFileOtherList(List<ProjectTemplateInfo> fileOtherList) {
 		this.fileOtherList = fileOtherList;
 	}
+
+	public String getReportedId() {
+		return reportedId;
+	}
+
+	public void setReportedId(String reportedId) {
+		this.reportedId = reportedId;
+	}
 }

+ 602 - 18
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageService.java

@@ -4,6 +4,7 @@ import com.google.common.collect.Maps;
 import com.jeeplus.common.persistence.Page;
 import com.jeeplus.common.service.CrudService;
 import com.jeeplus.common.utils.Collections3;
+import com.jeeplus.common.utils.DateUtils;
 import com.jeeplus.common.utils.MenuStatusEnum;
 import com.jeeplus.modules.act.entity.Act;
 import com.jeeplus.modules.act.service.ActTaskService;
@@ -14,8 +15,8 @@ import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportData;
 import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportRecord;
 import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
 import com.jeeplus.modules.projectcontentinfo.service.ProjectReportDataService;
-import com.jeeplus.modules.projectrecord.entity.ProjectPlanInfo;
 import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.projectrecord.enums.ProjectStatusEnum;
 import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
 import com.jeeplus.modules.projectreportnum.service.ProjectReportNumService;
 import com.jeeplus.modules.ruralprojectrecords.dao.RuralProjectMessageDao;
@@ -1568,11 +1569,66 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
     }
 
     /**
-     * 保存上报数据
+     * 查看信息下拉框处理
      * @param reported
      */
-    @Transactional(readOnly = false)
-    public void saveReportedInfo(RuralProjectRecordsReported reported) {
+    public void getInfoByView(RuralProjectRecordsReported reported){
+        List<MainDictDetail> touZiXZList = DictUtils.getMainDictList("TouZiXZ");
+        for (MainDictDetail info: touZiXZList) {
+            if(info.getValue().equals(reported.getTouZiXZ())) {
+                reported.setTouZiXZ(info.getLabel());
+                break;
+            }
+        }
+        List<MainDictDetail> ProjectTypeList = DictUtils.getMainDictList("ProjectType");
+        for (MainDictDetail info: ProjectTypeList) {
+            if(info.getValue().equals(reported.getProjectType())) {
+                reported.setProjectType(info.getLabel());
+                break;
+            }
+        }
+        List<MainDictDetail> HeTongLeiXingList = DictUtils.getMainDictList("HeTongLeiXing");
+        for (MainDictDetail info: HeTongLeiXingList) {
+            if(info.getValue().equals(reported.getHeTongLeiXing())) {
+                reported.setHeTongLeiXing(info.getLabel());
+                break;
+            }
+        }
+        List<MainDictDetail> PorjectStructList = DictUtils.getMainDictList("PorjectStruct");
+        for (MainDictDetail info: PorjectStructList) {
+            if(info.getValue().equals(reported.getPorjectStruct())) {
+                reported.setPorjectStruct(info.getLabel());
+                break;
+            }
+        }
+        List<MainDictDetail> GCGMUnitList = DictUtils.getMainDictList("GCGM_Unit");
+        for (MainDictDetail info: GCGMUnitList) {
+            if(info.getValue().equals(reported.getGCGMUnit())) {
+                reported.setGCGMUnit(info.getLabel());
+                break;
+            }
+        }
+        List<MainDictDetail> PorjectUseList = DictUtils.getMainDictList("PorjectUse");
+        for (MainDictDetail info: PorjectUseList) {
+            if(info.getValue().equals(reported.getPorjectUse())) {
+                reported.setPorjectUse(info.getLabel());
+                break;
+            }
+        }
+    }
+
+    /**
+     * 根据id查询上报信息
+     * @param id
+     * @return
+     */
+    public RuralProjectRecordsReported getRuralProjectRecordsReportedById(String id){
+        //查询上报信息
+        RuralProjectRecordsReported ruralProjectRecordsReported = ruralProjectRecordsReportedDao.get(id);
+        return ruralProjectRecordsReported;
+    }
+
+    public void disposeList(RuralProjectRecordsReported reported){
         //处理多选框选项
         if(null != reported.getTJProjectList() && reported.getTJProjectList().size()>0){
             reported.setTJProject(String.join(";", reported.getTJProjectList()));
@@ -1589,9 +1645,19 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
         if(null != reported.getFGYLProjectList() && reported.getFGYLProjectList().size()>0){
             reported.setFGYLProject(String.join(";", reported.getFGYLProjectList()));
         }
+    }
 
+    /**
+     * 保存上报数据
+     * @param reported
+     */
+    @Transactional(readOnly = false)
+    public String saveReportedInfo(RuralProjectRecordsReported reported) {
+        this.disposeList(reported);
         //查询是否已经上报项目信息
         if (StringUtils.isBlank(reported.getId())){
+            reported.setCompany(UserUtils.getSelectCompany());
+            reported.setOffice(UserUtils.getSelectOffice());
             reported.preInsert();
             //将项目id设置为id
             reported.setId(reported.getProjectId());
@@ -1600,12 +1666,11 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
             reported.preUpdate();
             ruralProjectRecordsReportedDao.update(reported);
         }
-        //修改项目信息中的上报状态
-        RuralProjectRecords records = new RuralProjectRecords();
-        records.setId(reported.getId());
-        records.setReportedState("2");
-        dao.updateReported(records);
 
+
+
+        //删除上报咨询员信息
+        ruralProjectRecordsReportedDao.deleteConsultant(reported);
         //保存咨询员信息
         for (ReportedConsultant info : reported.getReportedConsultantList()){
             if (info.getId() == null){
@@ -1613,19 +1678,538 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
             }
             //添加项目上报id
             info.setReportedId(reported.getId());
-            //判断删除信息
-            if (ProjectPlanInfo.DEL_FLAG_NORMAL.equals(info.getDelFlag())){
-                //判断是否有id  没有则为新增
-                if (StringUtils.isBlank(info.getId())){
+            info.preInsert();
+            ruralProjectRecordsReportedDao.insertConsultant(info);
+        }
+
+        //启动审核
+        return this.startAudit(reported,reported.getProcessInstanceId());
+    }
+
+
+    /**
+     * 启动审核
+     * @param reported
+     * @param processInstanceId
+     * @return
+     */
+    private String startAudit(RuralProjectRecordsReported reported, String processInstanceId) {
+        Map<String, Object> variables = new HashMap<String, Object>();
+        identityService.setAuthenticatedUserId(reported.getCurrentUser().getId());
+        String contentStr = "项目报告号:"+reported.getDangABH()+",上报日期:"+ DateUtils.formatDate(reported.getCreateDate());
+        String titleStr = "项目报告号:"+ reported.getDangABH();
+
+        String businessKey = reported.getId();
+        Office office = UserUtils.getSelectOffice();
+        WorkActivityMenu workActivityMenu = workActivityMenuService.findByParentAndOffice("gg3125f1f194582bdda9abcew750904", office);
+        // 启动流程
+        String processType = workActivityMenu.getProcessType();
+        StringBuffer buffer = new StringBuffer();
+        Activity activity = new Activity();
+        WorkProjectNotify workProjectNotify = UtilNotify
+                .saveNotify(reported.getId(),
+                        null,
+                        reported.getCompany().getId(),
+                        titleStr,
+                        contentStr,
+                        "95",
+                        "0",
+                        "待审批",
+                        ""
+                );
+
+        List<User> users = new ArrayList<>();
+        List<User> bmzrList = UserUtils.getByRoleActivityEnname("sbglyyjla",3,reported.getOffice().getId(),"4",reported.getCreateBy());
+        if (com.jeeplus.common.utils.StringUtils.isNotBlank(workActivityMenu.getId())) {
+            workProjectNotify.setNotifyRole("");
+            workActivityMenu = workActivityMenuService.get(workActivityMenu.getId());
+            List<Activity> activities = workActivityMenu.getActivities();
+            for (Activity a : activities) {
+                String encount = a.getEncount();
+                String enlist = a.getEnlist();
+                if (a.getRole()!=null && com.jeeplus.common.utils.StringUtils.isNotBlank(a.getRole().getEnname())){
+                    List enusers = UserUtils.getByRoleActivityEnnames(a.getRole().getEnname(),office.getId(),"11",reported.getCreateBy());
+                    if (enusers.size()==0){
+                        reported.setReportStatus(String.valueOf(ProjectStatusEnum.TSTORE.getValue()));
+                        ruralProjectRecordsReportedDao.updateStatusById(reported);
+                        return "流程审批人不能为空,角色"+a.getRole().getName()+"下无用户,请联系管理员!";
+                    }
+                    variables.put(enlist, enusers);
+                    variables.put(encount, enusers.size());
+                }
+                if (a.getDelFlag().equals("0") && a.getCount() == 1) {
+                    activity = a;
+                }
+            }
+            buffer.append(activity.getRole().getEnname());
+            if (activity != null && com.jeeplus.common.utils.StringUtils.isNotBlank(activity.getId())) {
+                //角色审批
+                if (com.jeeplus.common.utils.StringUtils.isNotBlank(activity.getRole().getEnname())) {
+                    users = UserUtils.getByRoleActivityEnnames(activity.getRole().getEnname(),office.getId(),"11",reported.getCreateBy());
+                }
+                //人员审批
+                if (com.jeeplus.common.utils.StringUtils.isNotBlank(activity.getUser().getId())) {
+                    users.add(activity.getUser());
+                }
+            }
+            workProjectNotify.setId("");
+        } else {
+            variables.put("bmzrList", bmzrList);
+            if (bmzrList.size()==0 ){
+                reported.setReportStatus(String.valueOf(ProjectStatusEnum.TSTORE.getValue()));
+                ruralProjectRecordsReportedDao.updateStatusById(reported);
+            }
+            if (bmzrList.size()==0){
+                return "流程审批人不能为空,报告管理员下无用户,请联系管理员!";
+            }
+            variables.put("bmzrCount",bmzrList.size());
+            processType = "projectReported";
+            users.addAll(bmzrList);
+        }
+        List<String> userIds = new ArrayList<>(users.size());
+        for (User u : users){
+            userIds.add(u.getId());
+            workProjectNotify.setUser(u);
+            workProjectNotify.setId("");
+            workProjectNotify.setNotifyRole("报告管理员审批");
+            workProjectNotifyService.save(workProjectNotify);
+            Map<String,Object> extras = new HashMap<>();
+            extras.put("type","7002");
+            extras.put("procDefKey","95");
+            extras.put("id",workProjectNotify.getId());
+            UserUtils.pushInfoToApp(titleStr, contentStr,extras,u.getId());
+        }
+        UserUtils.pushIm(userIds,contentStr);
+
+        variables.put("busId", businessKey);
+        variables.put("type", processType);
+        variables.put("title", "审批单:" + reported.getDangABH());//设置标题;
+
+        ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processType, businessKey, variables);
+        //        workReceiptsSettle.setProcessInstance(processInstance);
+        if (StringUtils.isNotBlank(processInstanceId)) {
+            workActivityProcessService.updateProcessInstanceId(processInstance.getId(),processInstanceId);
+            workActivityProcessService.deleteProcessInstanceId(processInstanceId);
+            workActivityProcessService.deleteProcessIdAuditUsers(processInstanceId);
+        }
+        List<Activity> list = workActivityMenu.getActivities();
+        if (list != null && list.size() != 0) {
+            workActivityProcessService.saveList(list, processInstance.getId());
+        } else {
+            WorkActivityProcess workActivityProcess = new WorkActivityProcess();
+            workActivityProcess.setProcessKey(processType);
+            workActivityProcess.setCount(1);
+            workActivityProcess.setIsApproval("0");
+            workActivityProcess.setProcessInstanceId(processInstance.getId());
+            workActivityProcessService.save(workActivityProcess);
+            workActivityProcessService.insertAuditsByType(bmzrList,processInstance.getId(),1,1);
+        }
+        reported.setProcessInstanceId(processInstance.getId());
+        reported.setReportStatus(String.valueOf(ProjectStatusEnum.IN_APRL.getValue()));
+        ruralProjectRecordsReportedDao.updateProcessIdAndStatus(reported);
+        //通知添加流程实例ID
+        workProjectNotify.setProcessInstanceId(processInstance.getId());
+        workProjectNotifyService.save(workProjectNotify);
+
+        //修改项目信息中的上报状态
+        RuralProjectRecords records = new RuralProjectRecords();
+        records.setId(reported.getId());
+        records.setReportedState(String.valueOf(ProjectStatusEnum.IN_APRL.getValue()));
+        dao.updateReported(records);
+
+        return "";
+    }
+
+
+    /**
+     * 上报:强制撤销
+     * @param reported
+     */
+    @Transactional(readOnly = false)
+    public void cancelInvalidateByReported(RuralProjectRecordsReported reported) {
+        try {
+            String invalidateProcessInstanceId = reported.getProcessInstanceId();
+            //将流程图中尚未走到的task的流程追踪信息逻辑删除,添加一条"撤销"流程追踪信息
+            WorkActivityProcess process = new WorkActivityProcess();
+            process.setProcessInstanceId(reported.getProcessInstanceId());
+            process.setIsApproval("0");
+            WorkActivityProcess workActivityProcess = new WorkActivityProcess();
+            workActivityProcess.setProcessInstanceId(reported.getProcessInstanceId());
+            List<WorkActivityProcess> processList = workActivityProcessService.findList(workActivityProcess);
+            WorkProjectNotify notify = new WorkProjectNotify();
+            notify.setNotifyId(reported.getId());
+            List<User> userList = workProjectNotifyService.readByNotifyId(notify);
+            if (userList!=null && userList.size()!=0) {
+                for (User u : userList) {
+                    User user = UserUtils.get(u.getId());
+                    UserUtils.pushMeIm(user.getId());
+                }
+            }
+            if(processList!=null && processList.size()>0){
+                for (int i =0;i<processList.size();i++) {
+                    WorkActivityProcess p = processList.get(i);
+                    if(com.jeeplus.common.utils.StringUtils.isNotBlank(p.getIsApproval()) && "0".equals(p.getIsApproval())){
+                        p.setDelFlag("1");
+                        p.setIsApproval("-1");
+                        workActivityProcessDao.updateDelFlagAndIsApproval(p);
+                    }
+                }
+                WorkActivityProcess pro = new WorkActivityProcess();
+                pro.setId("");
+                pro.preInsert();
+                pro.setDelFlag("0");
+                pro.setRemarks("[强制撤销]");
+                pro.setProcessKey(processList.get(0).getProcessKey());
+                pro.setIsApproval("1");
+                pro.setProcessInstanceId(processList.get(0).getProcessInstanceId());
+                pro.setCount(0);
+                workActivityProcessDao.insert(pro);
+            }
+
+            //结束该流程,设为"撤销"状态
+            actTaskService.endProcessInstance(invalidateProcessInstanceId,"上报-强制撤销");
+            reported.setReportStatus(String.valueOf(ProjectStatusEnum.RECALL.getValue()));
+            ruralProjectRecordsReportedDao.updateProcessIdAndStatus(reported);
+
+
+            //修改项目信息中的上报状态
+            RuralProjectRecords records = new RuralProjectRecords();
+            records.setId(reported.getId());
+            records.setReportedState(String.valueOf(ProjectStatusEnum.RECALL.getValue()));
+            dao.updateReported(records);
+
+        }catch (ActivitiObjectNotFoundException e){
+            System.err.println("上报撤销异常,因为这个流程已不存在!");
+            e.printStackTrace();
+        }
+        catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
+
+    /**
+     * 上报审核
+     * @param reported
+     * @param auditUsers
+     * @return
+     */
+    @Transactional(readOnly = false)
+    public String auditSaveReported(RuralProjectRecordsReported reported,List<User> auditUsers) {
+        try {
+            String str = "项目报告号:"+reported.getDangABH()+",上报日期:"+ DateUtils.formatDate(reported.getCreateDate());
+            String title = "项目报告号:"+ reported.getDangABH();
+            // 对不同环节的业务逻辑进行操作
+            String taskDefKey = reported.getAct().getTaskDefKey();
+            if (!"modifyApply".equals(taskDefKey) && !taskDefKey.contains("audit")) {
+                actTaskService.claim(reported.getAct().getTaskId(), UserUtils.getUser().getId());
+            }else {
+                reported.getAct().setFlag("yes");
+                ruralProjectRecordsReportedDao.update(reported);
+                //删除上报咨询员信息
+                ruralProjectRecordsReportedDao.deleteConsultant(reported);
+                //保存咨询员信息
+                for (ReportedConsultant info : reported.getReportedConsultantList()){
+                    if (info.getId() == null){
+                        continue;
+                    }
+                    //添加项目上报id
+                    info.setReportedId(reported.getId());
                     info.preInsert();
                     ruralProjectRecordsReportedDao.insertConsultant(info);
-                }else{
-                    info.preUpdate();
-                    ruralProjectRecordsReportedDao.updateConsultant(info);
                 }
-            }else{
-                ruralProjectRecordsReportedDao.deleteConsultant(info);
             }
+            String comment = "";
+            if (String.valueOf(ProjectStatusEnum.REJECTED.getValue()).equals(reported.getReportStatus()) ){
+                comment = ("yes".equals(reported.getAct().getFlag())?"[重新申请] ":"[已撤销] ");
+            }else {
+                comment = ("yes".equals(reported.getAct().getFlag())?"[同意] ":"[驳回] ")+ reported.getAct().getComment();
+            }
+            //yes 的时候状态为审核通过 否则为未通过
+            //1 审核中 2 未通过
+            reported.setReportStatus(String.valueOf(("yes".equals(reported.getAct().getFlag()) ? ProjectStatusEnum.IN_APRL.getValue() : ProjectStatusEnum.REJECTED.getValue())));
+
+
+            //修改项目信息中的上报状态
+            RuralProjectRecords records = new RuralProjectRecords();
+            records.setId(reported.getId());
+            records.setReportedState(String.valueOf(("yes".equals(reported.getAct().getFlag()) ? ProjectStatusEnum.IN_APRL.getValue() : ProjectStatusEnum.REJECTED.getValue())));
+
+
+            Map<String, Object> vars = Maps.newHashMap();
+            //业务逻辑对应的条件表达式
+            String exp = "";
+            String taskCount = "";
+            String notifyRole = "";
+            int key = 0;
+            String enname = "";
+            List<Activity> activitieList = activityService.getByProcessInstanceId(reported.getProcessInstanceId());
+            WorkActivityMenu workActivityMenu = new WorkActivityMenu();
+            if (activitieList != null && activitieList.size() != 0) {
+                workActivityMenu.setProcessType(activitieList.get(0).getProcessKey());
+                workActivityMenu.setActivities(activitieList);
+            }
+
+            WorkActivityProcess workActivityProcess = new WorkActivityProcess();
+            WorkActivityProcess selectProcess = new WorkActivityProcess();
+            selectProcess.setProcessInstanceId(reported.getProcessInstanceId());
+            List<WorkActivityProcess> workActivityProcesses = workActivityProcessService.findList(selectProcess);
+            List<Activity> activities = workActivityMenu.getActivities();
+            if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && !workActivityMenu.getProcessType().equals("projectReported")) {
+                key = 1;
+                for (int i = 0; i < workActivityProcesses.size(); i++) {
+                    WorkActivityProcess activityProcess = workActivityProcesses.get(i);
+                    if (taskDefKey.equals(activityProcess.getActivityTask()) && !taskDefKey.equals("modifyApply")) {
+                        taskCount = activityProcess.getCount()+"";
+                        workActivityProcess = activityProcess;
+                        if (!workActivityProcess.getIsApproval().equals("0")) {
+                            workActivityProcess.setId("");
+                        }
+                        exp = "pass";
+                        if (!"yes".equals(reported.getAct().getFlag())) {
+                            notifyRole = "调整上报信息";
+                            reported.setReportStatus(String.valueOf(ProjectStatusEnum.REJECTED.getValue()));
+                            workActivityProcess.setIsApproval("2");
+                            String returnBack = "-1";
+                            for (Activity activity : activities) {
+                                if (activity.getCount() == activityProcess.getCount()) {
+                                    notifyRole = activity.getName();
+                                    returnBack = activity.getReturnBack();
+                                    break;
+                                }
+                            }
+                            if (returnBack.equals("0")) {
+                                workActivityProcess.setId("");
+                            }
+
+                        } else {
+                            workActivityProcess.setIsApproval("1");
+                        }
+                    }else if(taskDefKey.equals("modifyApply")){
+                        taskCount = "0";
+                        exp = "pass";
+                        workActivityProcess.setId("");
+                        workActivityProcess.setCount(0);
+                        if (!"yes".equals(reported.getAct().getFlag())) {
+                            reported.setReportStatus(String.valueOf(ProjectStatusEnum.RECALL.getValue()));
+                            workActivityProcess.setIsApproval("2");
+                        } else {
+                            workActivityProcess.setIsApproval("1");
+                        }
+                        break;
+                    }
+                }
+            } else {
+                workActivityMenu.setProcessType("projectReported");
+                for (int i = 0; i < workActivityProcesses.size(); i++) {
+                    WorkActivityProcess activityProcess = workActivityProcesses.get(i);
+                    String count = activityProcess.getCount() + "";
+                    workActivityProcess = activityProcess;
+                    if (!workActivityProcess.getIsApproval().equals("0")) {
+                        workActivityProcess.setId("");
+                    }
+                    // 审核环节
+                    if ("bmzr".equals(taskDefKey) && count.contains("1")) {
+                        taskCount = "1";
+                        exp = "pass";
+                        if ("yes".equals(reported.getAct().getFlag())) {
+                            notifyRole = "审批通过";
+                            workActivityProcess.setIsApproval("1");
+                        } else {
+                            notifyRole = "调整上报信息";
+                            workActivityProcess.setIsApproval("2");
+                        }
+                        break;
+                    } else if ("modifyApply".equals(taskDefKey)&& count.contains("0")) {
+                        notifyRole = "上报管理员审批";
+                        taskCount = "0";
+                        exp = "pass";
+                        workActivityProcess.setCount(0);
+                        enname = "sbglyyjla";
+                        if (!"yes".equals(reported.getAct().getFlag())) {
+                            reported.setReportStatus(String.valueOf(ProjectStatusEnum.RECALL.getValue()));
+                        }
+                        break;
+                    } else if ("apply_end".equals(taskDefKey)) {
+                    }
+
+                }
+            }
+            // 设置意见
+            reported.getAct().setComment(("yes".equals(reported.getAct().getFlag()) ? "[同意] " : "[驳回] ") + reported.getAct().getComment());
+            reported.preUpdate();
+            // 提交流程任务
+            vars.put(exp, "yes".equals(reported.getAct().getFlag()) ? true : false);
+            vars.put("passs",true);
+            workActivityProcessService.updateProcess(workActivityProcess,workActivityMenu,key,taskCount, reported.getProcessInstanceId(),taskDefKey,"modifyApply", reported.getAct().getFlag(),comment, activities);
+            // 提交流程任务
+            actTaskService.complete(reported.getAct().getTaskId(), reported.getAct().getProcInsId(), reported.getAct().getComment(), vars);
+            boolean state = actTaskService.isProcessEnd(reported.getAct().getProcInsId());
+            List<User> users = new ArrayList<>();
+            List<User> userList = new ArrayList<>();
+            if (!state) {
+                users.add(reported.getCreateBy());
+                if ("yes".equals(reported.getAct().getFlag())) {
+                    //修改项目上报表中状态
+                    reported.setReportStatus(String.valueOf(ProjectStatusEnum.SIGNED.getValue()));
+                    //修改项目表中上报状态
+                    records.setReportedState(String.valueOf(ProjectStatusEnum.SIGNED.getValue()));
+                    WorkProjectNotify notify = new WorkProjectNotify();
+                    notify.setNotifyId(reported.getId());
+                    userList = workProjectNotifyService.readByNotifyId(notify);
+                    workProjectNotifyService
+                            .save(UtilNotify
+                                    .saveNotify(reported.getId(),
+                                            reported.getCreateBy(),
+                                            reported.getCompany().getId(),
+                                            title,
+                                            str,
+                                            "95",
+                                            "0",
+                                            "待通知",
+                                            notifyRole));
+
+                } else {
+                    WorkProjectNotify notify = new WorkProjectNotify();
+                    notify.setNotifyId(reported.getId());
+                    userList = workProjectNotifyService.readByNotifyId(notify);
+                    if (!String.valueOf(ProjectStatusEnum.RECALL.getValue()).equals(reported.getReportStatus())){
+                        reported.setReportStatus(String.valueOf(ProjectStatusEnum.REJECTED.getValue()));
+                        workProjectNotifyService
+                                .save(UtilNotify
+                                        .saveNotify(reported.getId(),
+                                                reported.getCreateBy(),
+                                                reported.getCompany().getId(),
+                                                title,
+                                                str,
+                                                "95",
+                                                "0",
+                                                "待通知",
+                                                notifyRole));
+                    }
+                }
+                workActivityProcessService.deleteProcessIdAuditUsers(reported.getProcessInstanceId());
+            } else {
+                if (StringUtils.isNotBlank(workActivityMenu.getProcessType()) && !workActivityMenu.getProcessType().equals("projectReported")) {
+                    WorkProjectNotify notify = new WorkProjectNotify();
+                    notify.setNotifyId(reported.getId());
+                    userList = workProjectNotifyService.readByNotifyId(notify);
+                    //users.addAll(userList);
+                    WorkProjectNotify workProjectNotify = UtilNotify
+                            .saveNotify(reported.getId(),
+                                    new User(),
+                                    reported.getCompany().getId(),
+                                    title,
+                                    str,
+                                    "95",
+                                    "0",
+                                    "待审批",
+                                    notifyRole);
+                    List<WorkProjectNotify> workProjectNotifys = activityService.getByFlagAndTaskDefKeyList(
+                            activities,
+                            workProjectNotify,
+                            taskDefKey,
+                            reported.getAct().getFlag(),
+                            taskCount,
+                            reported.getCreateBy(),
+                            reported.getOffice().getId(),
+                            "95");
+                    for (WorkProjectNotify workProjectNotify1:workProjectNotifys){
+                        users.add(workProjectNotify1.getUser());
+                        workProjectNotify1.setId("");
+                        workProjectNotify1.setIsNewRecord(false);
+                        workProjectNotifyService
+                                .save(workProjectNotify1);
+                    }
+
+                } else {
+                    if (!"yes".equals(reported.getAct().getFlag())) {
+                        WorkProjectNotify notify = new WorkProjectNotify();
+                        notify.setNotifyId(reported.getId());
+                        userList = workProjectNotifyService.readByNotifyId(notify);
+                        //users.addAll(userList);
+                        workProjectNotifyService
+                                .save(UtilNotify
+                                        .saveNotify(reported.getId(),
+                                                reported.getCreateBy(),
+                                                reported.getCompany().getId(),
+                                                title,
+                                                str,
+                                                "95",
+                                                "0",
+                                                "重新申请",
+                                                notifyRole));
+                        users.add( reported.getCreateBy());
+                    } else {
+                        if (StringUtils.isNotBlank(enname)) {
+                            WorkProjectNotify notify = new WorkProjectNotify();
+                            notify.setNotifyId(reported.getId());
+                            userList = workProjectNotifyService.readByNotifyId(notify);
+                            //users.addAll(userList1);
+                            WorkProjectNotify workProjectNotify = UtilNotify
+                                    .saveNotify(reported.getId(),
+                                            new User(),
+                                            reported.getCompany().getId(),
+                                            title,
+                                            str,
+                                            "95",
+                                            "0",
+                                            "待审批",
+                                            notifyRole);
+                            users.addAll(auditUsers);
+                            for (User user1:auditUsers){
+                                workProjectNotify.setUser(user1);
+                                workProjectNotify.setId("");
+                                workProjectNotify.setIsNewRecord(false);
+                                workProjectNotifyService.save(workProjectNotify);
+                                Map<String,Object> extras = new HashMap<>();
+                                extras.put("type","7002");
+                                extras.put("procDefKey","95");
+                                extras.put("id",workProjectNotify.getId());
+                                UserUtils.pushInfoToApp(title, str,extras,user1.getId());
+                            }
+                        }else {
+                            WorkProjectNotify notify = new WorkProjectNotify();
+                            notify.setNotifyId(reported.getId());
+                            userList = workProjectNotifyService.readByNotifyId(notify);
+                            users.add(reported.getCreateBy());
+                            workProjectNotifyService
+                                    .save(UtilNotify
+                                            .saveNotify(reported.getId(),
+                                                    reported.getCreateBy(),
+                                                    reported.getCompany().getId(),
+                                                    title,
+                                                    str,
+                                                    "95",
+                                                    "0",
+                                                    "重新申请",
+                                                    notifyRole));
+                        }
+                    }
+                }
+            }
+            if (StringUtils.isNotBlank(title) && users!=null && users.size()!=0) {
+                for (User u : users) {
+                    UserUtils.pushIm(u.getId(),title);
+                }
+            }
+            if (StringUtils.isNotBlank(title) && userList!=null && userList.size()!=0) {
+                for (User u : userList) {
+                    UserUtils.pushMeIm(u.getId());
+                }
+            }
+            ruralProjectRecordsReportedDao.update(reported);
+            //修改项目表中字段信息
+            dao.updateReported(records);
+
+            return "保存审核意见成功!";
+        }catch (ActivitiObjectNotFoundException e){
+            logger.error("ActivitiObjectNotFoundException e:",e);
+            return "流程已审批,不能重新审批!";
+        }catch (Exception e){
+            logger.error("Exception e:",e);
+            return "保存审核意见失败!!";
         }
     }
 }

+ 138 - 4
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageController.java

@@ -8,6 +8,7 @@ import com.jeeplus.common.utils.StringUtils;
 import com.jeeplus.common.web.BaseController;
 import com.jeeplus.modules.act.entity.Act;
 import com.jeeplus.modules.act.service.ActTaskService;
+import com.jeeplus.modules.oa.entity.OaNotify;
 import com.jeeplus.modules.projectAccessory.entity.ProjectAccessoryRelationInfo;
 import com.jeeplus.modules.projectAccessory.service.ProjectTemplateService;
 import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportData;
@@ -337,6 +338,7 @@ public class RuralProjectMessageController extends BaseController {
         }
         model.addAttribute("processInstanceId",projectReportData.getProcessInstanceId());
         model.addAttribute("projectId", projectcontentinfo1.getProject().getId());
+        model.addAttribute("reportedId", projectcontentinfo.getReportedId());
         model.addAttribute("projectRecords", projectcontentinfo1.getProject());
         model.addAttribute("id", projectcontentinfo.getId());
         model.addAttribute("projectcontentinfo", projectcontent);
@@ -988,6 +990,32 @@ public class RuralProjectMessageController extends BaseController {
     }
 
 
+    /**
+     * 项目上报
+     * @param projectRecords
+     * @return
+     */
+    @RequestMapping(value = "reportedModify")
+    public String reportedModify(RuralProjectRecords projectRecords, Model model) {
+        //查询上报信息表中是否含有数据,没有则进行获取基础数据
+        RuralProjectRecordsReported reported = ruralProjectMessageService.getRuralProjectRecordsReported(projectRecords.getId());
+        ProcessInstance processInstance = actTaskService.getProcIns(reported.getProcessInstanceId());
+        if (processInstance!=null) {
+            Task taskInfok = actTaskService.getCurrentTaskInfo(processInstance);
+            Act act = new Act();
+            act.setTaskId(taskInfok.getId());
+            act.setTaskName(taskInfok.getName());
+            act.setTaskDefKey(taskInfok.getTaskDefinitionKey());
+            act.setProcDefId(taskInfok.getProcessDefinitionId());
+            act.setProcInsId(taskInfok.getProcessInstanceId());
+            act.setTask(taskInfok);
+            reported.setAct(act);
+        }
+        model.addAttribute("ruralProjectRecordsReported", reported);
+        return "modules/ruralprojectrecords/ruralporjectmessage/reportedModify";
+    }
+
+
     @RequestMapping("getArea")
     @ResponseBody
     public Map getArea(String id){
@@ -1008,12 +1036,118 @@ public class RuralProjectMessageController extends BaseController {
 
 
     /**
-     * 保存报告归档
+     * 保存报告并提交审核
+     * @param reported
+     * @param redirectAttributes
+     * @return
      */
     @RequestMapping(value = "saveReported")
-    public String saveReported(RuralProjectRecordsReported reported,  RedirectAttributes redirectAttributes) {
-        ruralProjectMessageService.saveReportedInfo(reported);
-        addMessage(redirectAttributes, "项目上报成功");
+    public String saveReported(RuralProjectRecordsReported reported,  RedirectAttributes redirectAttributes) throws Exception {
+        String str = "";
+        if(!reported.getIsNewRecord()){//编辑表单保存
+            ruralProjectMessageService.disposeList(reported);
+            RuralProjectRecordsReported t = ruralProjectMessageService.getRuralProjectRecordsReportedById(reported.getId());;//从数据库取出记录的值
+            MyBeanUtils.copyBeanNotNull2Bean(reported, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+            str = ruralProjectMessageService.saveReportedInfo(t);
+        }else{//新增表单保存
+            str = ruralProjectMessageService.saveReportedInfo(reported);
+        }
+
+
+        if (StringUtils.isNotBlank(str)){
+            addMessage(redirectAttributes, "项目上报失败:"+str);
+        }else {
+            addMessage(redirectAttributes, "项目上报成功");
+        }
         return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectMessage/?repage";
     }
+
+
+    /**
+     * 读取单个实体流程
+     * @return
+     */
+    @RequestMapping(value = "getReportedProcess")
+    public String getReportedProcess(RuralProjectRecordsReported reported,Model model) {
+        model.addAttribute("processInstanceId", reported.getProcessInstanceId());
+        return "modules/workreimbursement/workReimbursementTrack";
+    }
+
+    @RequestMapping(value = "getReportedView")
+    public String getReportedView(RuralProjectRecordsReported reported,Model model){
+        model.addAttribute("projectId",reported.getProjectId());
+        reported = ruralProjectMessageService.getRuralProjectRecordsReported(reported.getId());
+        ruralProjectMessageService.getInfoByView(reported);
+        model.addAttribute("ruralProjectRecordsReported",reported);
+        model.addAttribute("reportedId",reported.getId());
+        return "modules/ruralprojectrecords/ruralporjectmessage/reportedView";
+    }
+
+    /**
+     * 报告归档:强制撤回
+     */
+    @RequestMapping("cancelInvalidateByReported")
+    public String cancelInvalidateByReported(RuralProjectRecordsReported reported,RedirectAttributes redirectAttributes){
+        reported = ruralProjectMessageService.getRuralProjectRecordsReportedById(reported.getId());
+        try {
+            if(reported.getReportStatus().equals("5")){
+                addMessage(redirectAttributes, "报告归档已审批通过,无法撤回");
+            }else{
+                if(reported.getReportStatus().equals("2")){
+                    ruralProjectMessageService.cancelInvalidateByReported(reported);
+                    addMessage(redirectAttributes, "强制撤回报告归档成功");
+                }else{
+                    addMessage(redirectAttributes, "报告归档不是送审状态,无法撤回");
+                    return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectMessage/?repage";
+                }
+            }
+        }catch (Exception e){
+            addMessage(redirectAttributes, "强制撤回报告归档失败");
+        }
+        return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectMessage/?repage";
+    }
+
+
+
+    /**
+     * 工单执行(完成任务)
+     * @param model
+     * @return
+     */
+    @RequestMapping(value = "auditSaveReported")
+    public String auditSaveReported(RuralProjectRecordsReported reported, Model model,
+                            RedirectAttributes redirectAttributes) {
+        try {
+            ruralProjectMessageService.disposeList(reported);
+            RuralProjectRecordsReported t = ruralProjectMessageService.getRuralProjectRecordsReportedById(reported.getId());;//从数据库取出记录的值
+            MyBeanUtils.copyBeanNotNull2Bean(reported, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+
+            String taskDefKey =  t.getAct().getTaskDefKey();
+            List<User> users = null;
+            if ("bmzr".equals(taskDefKey)){
+                users = UserUtils.getByProssType(t.getProcessInstanceId(),2);
+                if (users==null )
+                    users = UserUtils.getByRoleActivityEnname("sbglyyjla",3,t.getOffice().getId(),"4",t.getCreateBy());
+            }else if ("modifyApply".equals(taskDefKey)){
+                users = UserUtils.getByProssType(t.getProcessInstanceId(),1);
+            }
+
+            String flag = reported.getAct().getFlag();
+            if ("yes".equals(flag) && (users==null || users.size()==0)){
+                addMessage(redirectAttributes, "审批失败,审批人为空,请联系管理员!");
+            }else {
+                String str = ruralProjectMessageService.auditSaveReported(t, users);
+
+                addMessage(redirectAttributes, str);
+            }
+        }catch (Exception e){
+            addMessage(redirectAttributes, "公告流程审批失败");
+        }
+
+        if (StringUtils.isNotBlank(reported.getHome()) && "home".equals(reported.getHome())){
+            return "redirect:" + Global.getAdminPath() + "/home/?repage";
+        }else {
+            return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralProjectMessage/?repage";
+        }
+    }
 }

+ 0 - 180
src/main/java/com/jeeplus/modules/utils/GetDataFromConfigurationCenterUtil.java

@@ -1,180 +0,0 @@
-package com.jeeplus.modules.utils;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.mashape.unirest.http.HttpResponse;
-import com.mashape.unirest.http.Unirest;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-/**
- * @Title: <p>GetDataFromConfigurationCenterUtil</p>
- * @Description: <p>调用外部接口工具类</p>
- * @author: 徐滕
- * @Date: 2020-12-10 15:29
- * @version: 1.0
- * @Copyright: . All rights reserved.
- */
-public class GetDataFromConfigurationCenterUtil {
-
-    private static final Logger logger = LoggerFactory.getLogger(GetDataFromConfigurationCenterUtil.class);
-
-    /**
-     * 成功返回代码
-     */
-    private static final String SUCCESS_CODE = "0";
-    /**
-     * 成功返回消息
-     */
-    private static final String SUCCESS_MSG = "success";
-    /**
-     * @Title: <p>getObjectBySendPostReqs</p>
-     * @Description: <p>向外部接口发送POST请求,返回的数据为单个数据</p>
-     * @param url 请求的url
-     * @param reqObj 请求参数对象
-     * @param valueType 返回值映射类型
-     * @param outSideInterfaceName    外部接口中文名称
-     * @return: T
-     * @author:
-     * @Date: 2019/8/13 15:52
-     * @throws
-     * @version: 1.0
-     * @Copyright: . All rights reserved.
-     */
-    public static <T> T getObjectBySendPostReqs(String url, Object reqObj, Class<T> valueType,String outSideInterfaceName) {
-        /**
-         * 1.入参日志
-         */
-        logger.info("[向【" + outSideInterfaceName + "】发送POST请求,返回的数据为单个数据]入参:url=" + url + ",reqObj:" + reqObj
-                + ",valueType=" + valueType + ",outSideInterfaceName" + outSideInterfaceName);
-        /**
-         * 2.校验
-         */
-        if (StringUtils.isBlank(url)) {
-            logger.error("[向【" + outSideInterfaceName + "】发送POST请求,返回的数据为单个数据]入参URL为空!参数异常!直接返回null");
-            return null;
-        }
-        /**
-         * 4.开始请求
-         */
-        try {
-            HttpResponse<String> response = Unirest.post(url)
-                    .header("accept", "application/json;charset=UTF-8")
-                    .field("param", JSON.toJSONString(reqObj))
-                    .asString();
-            /**
-             * 5.返回值校验
-             */
-            if (null == response) {
-                logger.error("从【" + outSideInterfaceName + "】获取数据失败!链接为:" + url + ",请求参数为:" + reqObj);
-                return null;
-            }
-            JSONObject result = JSONObject.parseObject(response.getBody());
-            if (null == result) {
-                logger.error("从【" + outSideInterfaceName + "】获取数据失败!链接为:" + url + ",请求参数为:" + reqObj);
-                return null;
-            }
-            logger.info("从【" + outSideInterfaceName + "】获取到的数据为:" + result);
-            /**
-             * 6.返回值解析
-             */
-            String code = result.getString("code");
-            String msg = result.getString("msg");
-            String data = result.getString("data");
-            if (Objects.equals(code, SUCCESS_CODE) && Objects.equals(msg, SUCCESS_MSG)) {
-                T object = JSONObject.parseObject(result.toString(), valueType);
-                /**
-                 * 7.出参日志
-                 */
-                logger.info("[向【" + outSideInterfaceName + "】发送POST请求,返回的数据为单个数据]出参:=" + object + "数据data=" + data);
-                /**
-                 * 8.数据返回
-                 */
-                return object;
-            }
-        } catch (Exception e) {
-            /**
-             * 8.异常捕捉
-             */
-            logger.error("从【" + outSideInterfaceName + "】获取数据错误:", e);
-        }
-        return null;
-    }
-    /**
-     * @Title: <p>getListBySendPostReqs</p>
-     * @Description: <p>向外部接口发送POST请求,返回的数据为多条数据list</p>
-     * @param url 请求的url
-     * @param reqMap 请求参数集合
-     * @param valueType 返回值映射类型
-     * @param outSideInterfaceName    外部接口中文名称
-     * @return: java.util.List<T>
-     * @author:
-     * @Date: 2019/8/13 15:53
-     * @throws
-     * @version: 1.0
-     * @Copyright: . All rights reserved.
-     */
-    public static <T> List<T> getListBySendPostReqs(String url, Map<String, Object> reqMap, Class<T> valueType,String outSideInterfaceName) {
-        /**
-         * 1.入参日志
-         */
-        logger.info("[向【" + outSideInterfaceName + "】发送POST请求,返回的数据为多条数据]入参:url=" + url + ",reqMap:" + reqMap.entrySet().toString()
-                + ",valueType=" + valueType + ",outSideInterfaceName" + outSideInterfaceName);
-        /**
-         * 2.校验
-         */
-        if (StringUtils.isBlank(url)) {
-            logger.error("[向【" + outSideInterfaceName + "】发送POST请求,返回的数据为多条数据]入参URL为空!参数异常!直接返回null");
-            return null;
-        }
-        /**
-         * 4.开始请求
-         */
-        try {
-            HttpResponse<String> response = Unirest.post(url)
-                    .header("accept", "application/json")
-                    .fields(reqMap)
-                    .asString();
-            /**
-             * 5.返回值校验
-             */
-            if (null == response) {
-                logger.error("从【" + outSideInterfaceName + "】获取数据失败!链接为:" + url + ",请求参数为:" + reqMap);
-                return null;
-            }
-            JSONObject result = JSONObject.parseObject(response.getBody()).getJSONObject("reply").getJSONObject("result");
-            if (null == result) {
-                logger.error("从【" + outSideInterfaceName + "】获取数据失败!链接为:" + url + ",请求参数为:" + reqMap);
-                return null;
-            }
-            logger.info("从【" + outSideInterfaceName + "】获取到的数据为:" + result);
-            /**
-             * 6.返回值解析
-             */
-            Integer code = result.getInteger("code");
-            Boolean res = result.getBooleanValue("res");
-            String r = result.getString("r");
-            if (Objects.equals(code, 0) && res && null != r) {
-                List<T> list = JSONObject.parseArray(r, valueType);
-                /**
-                 * 7.出参日志
-                 */
-                logger.info("[向【" + outSideInterfaceName + "】发送POST请求,返回的数据为单个数据]出参:=" + list);
-                /**
-                 * 8.数据返回
-                 */
-                return list;
-            }
-        } catch (Exception e) {
-            /**
-             * 9.异常捕捉
-             */
-            logger.error("从【" + outSideInterfaceName + "】获取数据错误:", e);
-        }
-        return null;
-    }
-}

+ 27 - 1
src/main/java/com/jeeplus/modules/workprojectnotify/web/WorkProjectNotifyController.java

@@ -56,6 +56,8 @@ import com.jeeplus.modules.projectrecord.service.ProjectRecordsAlterService;
 import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecordsAlter;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecordsReported;
+import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectMessageService;
 import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectRecordsAlterService;
 import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectRecordsService;
 import com.jeeplus.modules.serialnum.service.SerialNumTplService;
@@ -433,6 +435,8 @@ public class WorkProjectNotifyController extends BaseController {
 	private ProjectTemplateService projectTemplateService;
 	@Autowired
 	private WorkReimbursementTypeService workReimbursementTypeService;
+	@Autowired
+	private RuralProjectMessageService ruralProjectMessageService;
 
 	@ModelAttribute
 	public WorkProjectNotify get(@RequestParam(required=false) String id) {
@@ -758,7 +762,12 @@ public class WorkProjectNotifyController extends BaseController {
                     oaNotifyService.queryDetails(oaNotify);
                     processInstanceId = oaNotify.getProcessInstanceId();
                 }
-            }else if("60".equals(workProjectNotify.getType())){	//归还借用管理
+            } else if("95".equals(workProjectNotify.getType())){	//项目上报信息
+				RuralProjectRecordsReported reported = ruralProjectMessageService.getRuralProjectRecordsReported(workProjectNotify.getNotifyId());
+				if(reported!=null && StringUtils.isNotBlank(reported.getId())){
+					processInstanceId = reported.getProcessInstanceId();
+				}
+			}else if("60".equals(workProjectNotify.getType())){	//归还借用管理
 				WorkBorrowBack workBorrowBack = workBorrowBackService.get(workProjectNotify.getNotifyId());
 				if (workBorrowBack != null)
 				processInstanceId = workBorrowBack.getProcessInstanceId();
@@ -1311,6 +1320,19 @@ public class WorkProjectNotifyController extends BaseController {
 						}
 					}
 
+				}else if ("95".equals(workProjectNotify.getType())) {    //项目上报管理
+					RuralProjectRecordsReported reported = ruralProjectMessageService.getRuralProjectRecordsReported(workProjectNotify.getNotifyId());
+					Act act = getByAct(reported.getProcessInstanceId());
+					reported.setAct(act);
+					reported.setHome("home");
+					model.addAttribute("ruralProjectRecordsReported", reported);
+					if (workProjectNotify.getRemarks().contains("待审批") && !"1".equals(workProjectNotify.getStatus())) {
+						return "modules/ruralprojectrecords/ruralporjectmessage/reportedAudit";
+					} else if (workProjectNotify.getRemarks().contains("重新申请") && !"1".equals(workProjectNotify.getStatus())) {
+						return "modules/ruralprojectrecords/ruralporjectmessage/reportedModify";
+					} else {
+						return "modules/ruralprojectrecords/ruralporjectmessage/reportedView";
+					}
 				} else if (workProjectNotify.getType().equals("131")) {    //项目计划通知
 					boolean flag = false;
 					//通过通知信息id获取项目登记对象
@@ -2628,6 +2650,10 @@ public class WorkProjectNotifyController extends BaseController {
                     }
                     model.addAttribute("oaNotify", oaNotify);
                     return "modules/oa/oaNotifyView";
+                }else if("95".equals(workProjectNotify.getType())){	//项目上报信息
+					RuralProjectRecordsReported reported = ruralProjectMessageService.getRuralProjectRecordsReported(workProjectNotify.getNotifyId());
+					model.addAttribute("ruralProjectRecordsReported", reported);
+                    return "modules/ruralprojectrecords/ruralporjectmessage/reportedView";
                 }else if("60".equals(workProjectNotify.getType())){	//归还借用管理
 					WorkBorrowBack workBorrowBack = workBorrowBackService.get(workProjectNotify.getNotifyId());
 					WorkBorrowMangement mangement=workBorrowMangementService.get(workBorrowBack.getBorrowMangementId());

+ 1 - 0
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageDao.xml

@@ -224,6 +224,7 @@
 		,if(date_add(prd.audit_pass_date,interval #{endingCount} day) >now(),"0","1") as reportedType
 		,ifnull(rprr.report_status,0) as "reportStatus"
 		,ifnull(rprr.sync_status,0) as "syncStatus"
+		,rprr.process_instance_id as "reportedProcessInstanceId"
 		FROM rural_project_records a
 		LEFT JOIN sys_area area ON area.id = a.area_id
 		left join rural_project_records_reported rprr on rprr.id = a.id

+ 33 - 5
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectRecordsReported.xml

@@ -58,7 +58,11 @@
 		a.AZProject,
 		a.SZProject,
 		a.FGYLProject,
-		a.QTProjec
+		a.QTProjec,
+		a.report_status as "reportStatus",
+		a.process_instance_id  as "processInstanceId",
+		a.company_id as "company.id",
+		a.office_id as "office.id"
 	</sql>
 
 	
@@ -68,9 +72,11 @@
 		<include refid="projectRecordsReportedColumns"/>
 		,pra.name as "city"
 		,pra2.name as "county"
+		,pra3.name as "province"
 		FROM rural_project_records_reported a
 		left join project_reported_area pra on a.s2 = pra.id
 		left join project_reported_area pra2 on a.s3 = pra2.id
+		left join project_reported_area pra3 on a.s1 = pra3.id
 		WHERE a.id = #{id}
 	</select>
 
@@ -132,7 +138,10 @@
 			FGYLProject,
 			QTProjec,
 			report_status,
-			upload_time
+			upload_time,
+			process_instance_id,
+			company_id,
+			office_id
 		)
 		values
 		  (
@@ -191,8 +200,11 @@
 			#{SZProject},
 			#{FGYLProject},
 			#{QTProjec},
-			1,
-			now()
+			#{reportStatus},
+			now(),
+			#{processInstanceId},
+			#{company.id},
+			#{office.id}
 		  )
 	</insert>
 
@@ -252,6 +264,9 @@
 		  FGYLProject = #{FGYLProject},
 		  QTProjec = #{QTProjec},
 		  upload_time = now()
+		<if test="reportStatus !=null and reportStatus !=''">
+			  ,report_status = #{reportStatus}
+		  </if>
 		where id = #{id}
 	</update>
 
@@ -336,7 +351,20 @@
 	</update>
 
 	<delete id="deleteConsultant">
-		delete from rural_reported_consultant where id = #{id}
+		delete from rural_reported_consultant where reportedId = #{id}
 	</delete>
 
+	<update id="updateStatusById">
+        UPDATE rural_project_records_reported SET
+        report_status = #{reportStatus}
+        WHERE id = #{id}
+    </update>
+
+	<update id="updateProcessIdAndStatus" >
+        UPDATE  rural_project_records_reported SET
+        process_instance_id = #{processInstanceId},
+        report_status = #{reportStatus}
+        WHERE id = #{id}
+    </update>
+
 </mapper>

+ 1 - 1
src/main/resources/spring-mvc.xml

@@ -84,7 +84,7 @@
 	
 	<!-- 静态资源映射 -->
     <mvc:resources mapping="/static/**" location="/static/" cache-period="31536000"/>
-	
+
 	<!-- 定义无Controller的path<->view直接映射 -->
 	<mvc:view-controller path="/" view-name="redirect:${web.view.index}"/>
 	

+ 6 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/projectcontentinfo/reportView.jsp

@@ -11,6 +11,12 @@
 
 <body>
 <div class="single-form">
+	<div class="list-form-tab contentShadow shadowLTR" id="tabDiv">
+		<ul class="list-tabs" >
+			<li class="active"><a href="${ctx}/ruralProject/ruralProjectMessage/modify?projectId=${projectId}&view=view&reportedId=${reportedId}">报告详情</a></li>
+			<li><a href="${ctx}/ruralProject/ruralProjectMessage/getReportedView?id=${reportedId}&projectId=${projectId}">上报信息详情</a></li>
+		</ul>
+	</div>
 	<div class="container${container}  view-form">
 		<form:form id="inputForm" modelAttribute="projectcontentinfo" action="${ctx}/ruralProject/ruralProjectMessage/reportAudit" method="post" class="form-horizontal">
 		<div class="form-group layui-row first lw12">

+ 911 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/reportedAudit.jsp

@@ -0,0 +1,911 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+    <title>项目管理</title>
+    <meta name="decorator" content="default"/>
+    <script type="text/javascript" src="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.js"></script>
+    <script type="text/javascript" src="${ctxStatic}/iCheck/icheck.min.js"></script>
+    <link rel='stylesheet' type="text/css" href="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.css"/>
+    <style>
+        #projectDesc-error{
+            left:0;
+            top:82px;
+        }
+        .layui-layer-dialog{
+            background: red;
+        }
+        td input{
+            height: 42px !important;
+        }
+        .disables {
+            pointer-events: none;
+        }
+        .notDisables {
+            pointer-events: all;
+        }
+        .forbidden{
+             background-color:#c2c2c2;
+         }
+
+        .notForbidden{
+             background-color:#3ca2e0;
+         }
+        .paddingDiv span{
+            padding-left: 28px;
+        }
+    </style>
+    <script type="text/javascript">
+        var validateForm;
+        var isMasterClient = true;//是否是委托方
+        var clientCount = 0;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                //咨询标的额
+                var ZiXunBDE = $("#ZiXunBDE").val();
+                if(ZiXunBDE!= undefined && ZiXunBDE!= '' && ZiXunBDE>=500){
+                    //人工工日用量
+                    var RGGRYL = $("#RGGRYL").val();
+                    if(RGGRYL== undefined || RGGRYL== null || RGGRYL == '' || RGGRYL == 0){
+                        parent.layer.msg("咨询标的额大于500万,请填写人工工日用量!", {icon: 5});
+                        return false;
+                    }
+                }
+                var list = [];
+                var size = $("#reportedConsultantList tr").length;
+                if(size>0){
+                    for (var i = 1;i<=50;i++){
+                        var zixunyuan = $("#reportedConsultantList"+i+"_zixunyuanId").val();
+                        if(zixunyuan!=undefined && zixunyuan != null && zixunyuan !=''){
+                            list.push(zixunyuan);
+                        }
+                    }
+                    var nary = list.sort();
+                    for(var i = 0; i < nary.length - 1; i++) {
+                        if(nary[i] == nary[i + 1]) {
+                            parent.layer.msg("咨询员重复,请重新选择!", {icon: 5});
+                            return false;
+                        }
+                    }
+                }
+
+                var team = $("#team").val()
+                var city = $("#city").val()
+                var county = $("#county").val()
+                if(team ==undefined || team == null || team == ''){
+                    parent.layer.msg("请选择工程所在省份!", {icon: 5});
+                    return false;
+                }
+                if(city ==undefined || city == null || city == ''){
+                    parent.layer.msg("请选择工程所在地级市!", {icon: 5});
+                    return false;
+                }
+                if(county ==undefined || county == null || county == ''){
+                    parent.layer.msg("请选择工程所在区县!", {icon: 5});
+                    return false;
+                }
+
+                if(obj == 1){
+                    $('#flag').val('yes');
+                }else{
+                    $('#flag').val('no');
+                }
+                $("#inputForm").submit();
+                return true;
+            }else{
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+
+            return false;
+        }
+        $(document).ready(function() {
+            var radioVal ;
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+
+            if($("#FloorUp").val() == undefined || $("#FloorUp").val() == null || $("#FloorUp").val() == ''){
+                $("#FloorUp").val(0);
+            }
+            if($("#FloorDown").val() == undefined || $("#FloorDown").val() == null || $("#FloorDown").val() == ''){
+                $("#FloorDown").val(0);
+            }
+            if($("#ZiXunBDETJ").val() == undefined || $("#ZiXunBDETJ").val() == null || $("#ZiXunBDETJ").val() == ''){
+                $("#ZiXunBDETJ").val(0);
+            }
+            if($("#ZiXunBDEAZ").val() == undefined || $("#ZiXunBDEAZ").val() == null || $("#ZiXunBDEAZ").val() == ''){
+                $("#ZiXunBDEAZ").val(0);
+            }
+            if($("#GCYL").val() == undefined || $("#GCYL").val() == null || $("#GCYL").val() == ''){
+                $("#GCYL").val(0);
+            }
+            if($("#SNYL").val() == undefined || $("#SNYL").val() == null || $("#SNYL").val() == ''){
+                $("#SNYL").val(0);
+            }
+            if($("#YBTYL").val() == undefined || $("#YBTYL").val() == null || $("#YBTYL").val() == ''){
+                $("#YBTYL").val(0);
+            }
+            if($("#RGGRYL").val() == undefined || $("#RGGRYL").val() == null || $("#RGGRYL").val() == ''){
+                $("#RGGRYL").val(0);
+            }
+            if($("#GCYLPerUnit").val() == undefined || $("#GCYLPerUnit").val() == null || $("#GCYLPerUnit").val() == ''){
+                $("#GCYLPerUnit").val(0);
+            }
+            if($("#SNYLPerUnit").val() == undefined || $("#SNYLPerUnit").val() == null || $("#SNYLPerUnit").val() == ''){
+                $("#SNYLPerUnit").val(0);
+            }
+            if($("#YBTYLPerUnit").val() == undefined || $("#YBTYLPerUnit").val() == null || $("#YBTYLPerUnit").val() == ''){
+                $("#YBTYLPerUnit").val(0);
+            }
+            if($("#RGGRYLPerUnit").val() == undefined || $("#RGGRYLPerUnit").val() == null || $("#RGGRYLPerUnit").val() == ''){
+                $("#RGGRYLPerUnit").val(0);
+            }
+
+            laydate.render({
+                elem: '#BaoGaoShuQianFaDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+                , trigger: 'click'
+                ,max: 38 //38天后
+            });
+
+
+            $('#city').html('<option value="${ruralProjectRecordsReported.s2}">${ruralProjectRecordsReported.city}</option>')
+            $('#county').html('<option value="${ruralProjectRecordsReported.s3}">${ruralProjectRecordsReported.county}</option>')
+            layui.form.render("select");
+
+        });
+
+        function ZiXunBDEChange(){
+            //咨询标的额
+            var ZiXunBDE = $("#ZiXunBDE").val();
+            //建筑面积或规模
+            var GCGMValue = $("#GCGMValue").val();
+            //土建造价
+            var ZiXunBDETJ = $("#ZiXunBDETJ").val();
+            //安装造价
+            var ZiXunBDEAZ = $("#ZiXunBDEAZ").val();
+            //钢材用量
+            var GCYL = $("#GCYL").val();
+            //水泥用量
+            var SNYL = $("#SNYL").val();
+            //预拌砼用量
+            var YBTYL = $("#YBTYL").val();
+            //人工工日用量
+            var RGGRYL = $("#RGGRYL").val();
+
+            //判断咨询标的额的值
+            if(ZiXunBDE != ''){
+                //判断土建造价的值
+                if(ZiXunBDETJ != ''){
+                    var CalTJPercent = (Math.round(parseInt(ZiXunBDETJ) / parseInt(ZiXunBDE) * 100) / 100 * 100).toFixed(2);
+                    $("#CalTJPercent").val(CalTJPercent);
+                }else{
+                    $("#CalTJPercent").val('');
+                }
+                //判断土建造价的值
+                if(ZiXunBDEAZ != ''){
+                    var CalAZPercent = (Math.round(parseInt(ZiXunBDEAZ) / parseInt(ZiXunBDE) * 100) / 100 * 100).toFixed(2);
+                    $("#CalAZPercent").val(CalAZPercent);
+                }else{
+                    $("#CalAZPercent").val('');
+                }
+                //判断建筑面积或规模
+                if(GCGMValue != ''){
+                    var CalZZJUnit = (Math.round(parseInt(ZiXunBDE) / parseInt(GCGMValue) * 100) * 100).toFixed(2);
+                    $("#CalZZJUnit").val(CalZZJUnit);
+                }else{
+                    $("#CalZZJUnit").val('');
+                }
+            }
+            //判断建筑面积或规模
+            if(GCGMValue != ''){
+                //判断土建造价
+                if(ZiXunBDETJ != ''){
+                    var CalZZJTJUnit = (Math.round(parseInt(ZiXunBDETJ) / parseInt(GCGMValue) * 100) * 100).toFixed(2);
+                    $("#CalZZJTJUnit").val(CalZZJTJUnit);
+                }else{
+                    $("#CalZZJTJUnit").val('');
+                }
+                //判断安装造价
+                if(ZiXunBDEAZ != ''){
+                    var CalZZJAZUnit = (Math.round(parseInt(ZiXunBDEAZ) / parseInt(GCGMValue) * 100) * 100).toFixed(2);
+                    $("#CalZZJAZUnit").val(CalZZJAZUnit);
+                }else{
+                    $("#CalZZJAZUnit").val('');
+                }
+                //判断钢材用量
+                if(GCYL != ''){
+                    var GCYLPerUnit = (Math.round(parseInt(GCYL) / parseInt(GCGMValue) * 100) * 10).toFixed(2);
+                    $("#GCYLPerUnit").val(GCYLPerUnit);
+                }else{
+                    $("#GCYLPerUnit").val('');
+                }
+                //判断水泥用量
+                if(SNYL != ''){
+                    var SNYLPerUnit = (Math.round(parseInt(SNYL) / parseInt(GCGMValue) * 100) * 10).toFixed(2);
+                    $("#SNYLPerUnit").val(SNYLPerUnit);
+                }else{
+                    $("#SNYLPerUnit").val('');
+                }
+                //判断预拌砼用量
+                if(YBTYL != ''){
+                    var YBTYLPerUnit = Math.round(parseInt(YBTYL) / parseInt(GCGMValue)).toFixed(2);
+                    $("#YBTYLPerUnit").val(YBTYLPerUnit);
+                }else{
+                    $("#YBTYLPerUnit").val('');
+                }
+                //判断人工工日用量
+                if(RGGRYL != ''){
+                    var RGGRYLPerUnit = Math.round(parseInt(RGGRYL) / parseInt(GCGMValue)).toFixed(2);
+                    $("#RGGRYLPerUnit").val(RGGRYLPerUnit);
+                }else{
+                    $("#RGGRYLPerUnit").val('');
+                }
+            }
+            //判断土建造价
+            if(ZiXunBDETJ !=''){
+                //判断咨询标的额
+                if(ZiXunBDE != ''){
+                    var CalTJPercent = (Math.round(parseInt(ZiXunBDETJ) / parseInt(ZiXunBDE) * 100) / 100 * 100).toFixed(2);
+                    $("#CalTJPercent").val(CalTJPercent);
+                }else{
+                    $("#CalTJPercent").val('');
+                }
+                //判断建筑面积或规模
+                if(GCGMValue != ''){
+                    var CalZZJTJUnit = (Math.round(parseInt(ZiXunBDETJ) / parseInt(GCGMValue) * 100) * 100).toFixed(2);
+                    $("#CalZZJTJUnit").val(CalZZJTJUnit);
+                }else{
+                    $("#CalZZJTJUnit").val('');
+                }
+            }
+            //判断安装造价
+            if(ZiXunBDEAZ !=''){
+                //判断咨询标的额
+                if(ZiXunBDE != ''){
+                    var CalAZPercent = (Math.round(parseInt(ZiXunBDEAZ) / parseInt(ZiXunBDE) * 100) / 100 * 100).toFixed(2);
+                    $("#CalAZPercent").val(CalAZPercent);
+                }else{
+                    $("#CalAZPercent").val('');
+                }
+                //判断建筑面积或规模
+                if(GCGMValue != ''){
+                    var CalZZJAZUnit = (Math.round(parseInt(ZiXunBDEAZ) / parseInt(GCGMValue) * 100) * 100).toFixed(2);
+                    $("#CalZZJAZUnit").val(CalZZJAZUnit);
+                }else{
+                    $("#CalZZJAZUnit").val('');
+                }
+            }
+            //判断钢材用量
+            if(GCYL !=''){
+                //判断建筑面积或规模
+                if(GCGMValue != ''){
+                    var GCYLPerUnit = (Math.round(parseInt(GCYL) / parseInt(GCGMValue) * 100) * 10).toFixed(2);
+                    $("#GCYLPerUnit").val(GCYLPerUnit);
+                }else{
+                    $("#GCYLPerUnit").val('');
+                }
+            }
+            //判断水泥用量
+            if(SNYL !=''){
+                //判断建筑面积或规模
+                if(GCGMValue != ''){
+                    var SNYLPerUnit = (Math.round(parseInt(SNYL) / parseInt(GCGMValue) * 100) * 10).toFixed(2);
+                    $("#SNYLPerUnit").val(SNYLPerUnit);
+                }else{
+                    $("#SNYLPerUnit").val('');
+                }
+            }
+            //判断预拌砼用量
+            if(YBTYL !=''){
+                //判断建筑面积或规模
+                if(GCGMValue != ''){
+                    var YBTYLPerUnit = (Math.round(parseInt(YBTYL) / parseInt(GCGMValue) * 100) * 10).toFixed(2);
+                    $("#YBTYLPerUnit").val(YBTYLPerUnit);
+                }else{
+                    $("#YBTYLPerUnit").val('');
+                }
+            }
+            //判断人工工日用量
+            if(RGGRYL !=''){
+                //判断建筑面积或规模
+                if(GCGMValue != ''){
+                    var RGGRYLPerUnit = Math.round(parseInt(RGGRYL) / parseInt(GCGMValue)).toFixed(2);
+                    $("#RGGRYLPerUnit").val(RGGRYLPerUnit);
+                }else{
+                    $("#RGGRYLPerUnit").val('');
+                }
+            }
+        }
+
+        function addRow(list, idx, tpl, row){
+            // var idx1 = $("#workClientLinkmanList tr").length;
+            idx +=1;
+            bornTemplete(list, idx, tpl, row, idx);
+        }
+
+        function bornTemplete(list, idx, tpl, row, idx1){
+            $(list).append(Mustache.render(tpl, {
+                idx: idx, delBtn: true, row: row,
+                order:idx1 + 1
+            }));
+            $(list+idx).find("select").each(function(){
+                $(this).val($(this).attr("data-value"));
+            });
+            $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                var ss = $(this).attr("data-value").split(',');
+                for (var i=0; i<ss.length; i++){
+                    if($(this).val() == ss[i]){
+                        $(this).attr("checked","checked");
+                    }
+                }
+            });
+        }
+
+        function delEntrustRow(obj, prefix){
+            var id = $(prefix+"_id");
+            var delFlag = $(prefix+"_delFlag");
+            $(obj).parent().parent().remove();
+        }
+
+        function delRow(obj, prefix){
+            var id = $(prefix+"_id");
+            var delFlag = $(prefix+"_delFlag");
+            $(obj).parent().parent().remove();
+        }
+        function formatNum(obj) {
+            var val = $(obj).val();
+            if(val==null||val==''|| isNaN(val))return;
+            var money = parseFloat((val + "").replace(/[^\d\.-]/g, "")).toFixed(2) + "";
+            var l = money.split(".")[0].split("").reverse(),
+                r = money.split(".")[1];
+            t = "";
+            for(i = 0; i < l.length; i ++ )
+            {
+                t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
+            }
+            $(obj).val(t.split("").reverse().join("") + "." + r);
+        }
+
+
+
+        function setTaxMoney(obj){
+            var a = $(obj).attr("id");
+            //咨询营业收入
+            var mv = $("#ZiXunShouRu").val();
+            var m = parseFloat(mv)* 10000;
+
+            var t2 = $("#" +  a ).val();
+
+            //完成营业收入
+            var t = a.replace('wcyysrbl','wcyysr');
+            if(!/^\d+(\.\d{1,4})?$/.test( t2 )){
+                $("#" +  t ).val("");
+                parent.layer.msg("请填写正确完成营业收入比例",{icon:5});
+                return;
+            }else {
+                var wcyysr = m * t2 /100;
+                $("#" +  t ).val(parseFloat(wcyysr.toFixed(2)));
+            }
+        }
+
+        function zxChange() {
+            //咨询营业收入
+            var mv = $("#ZiXunShouRu").val();
+            if(!/^\d+(\.\d{1,4})?$/.test( mv )){
+                $("#" +  t ).val("");
+                parent.layer.msg("请填写正确的咨询营业收入",{icon:5});
+                return;
+            }
+            var m = parseFloat(mv)* 10000;
+            var size = $("#reportedConsultantList tr").length;
+            if(size>0){
+                for (var i = 1;i<=50;i++){
+                    var wcyysrbl = $("#reportedConsultantList"+i+"_wcyysrbl").val();
+
+                    if(wcyysrbl != undefined && wcyysrbl!=''){
+                        var wcyysr = m * wcyysrbl /100;
+                        $("#reportedConsultantList"+i+"_wcyysr").val(wcyysr);
+                    }
+                }
+            }
+        }
+    </script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+        <sys:message content="${message}"/>
+        <form:form id="inputForm" modelAttribute="ruralProjectRecordsReported" enctype="multipart/form-data" action="${ctx}/ruralProject/ruralProjectMessage/auditSaveReported" method="post" class="form-horizontal layui-form">
+            <form:hidden path="id"/>
+            <form:hidden path="projectId"/>
+            <form:hidden path="home"/>
+            <form:hidden path="act.taskId"/>
+            <form:hidden path="act.taskName"/>
+            <form:hidden path="act.taskDefKey"/>
+            <form:hidden path="act.procInsId"/>
+            <form:hidden path="act.procDefId"/>
+            <form:hidden id="flag" path="act.flag"/>
+
+            <form:hidden path="workContractInfo.client.id" id="contractClientId" value="${workContractInfo.client.id}"/>
+            <input type="hidden" id="flagFile" value="">
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>项目信息</h2></div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>咨询项目名称:</label>
+                    <div class="layui-input-block">
+                        <form:input path="ProjectName" htmlEscape="false"  class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>咨询项目负责人:</label>
+                    <div class="layui-input-block  with-icon">
+                        <sys:treeselect id="master" name="xmFZR" value="${ruralProjectRecordsReported.xmFZR}" labelName="leaderNameStr" labelValue="${ruralProjectRecordsReported.leaderNameStr}"
+                                        title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>委托单位:</label>
+                    <div class="layui-input-block">
+                        <form:input path="WeiTuoDW" htmlEscape="false"  class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>委托单位电话:</label>
+                    <div class="layui-input-block">
+                        <form:input path="LianXiDH" htmlEscape="false"  class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>投资性质:</label>
+                    <div class="layui-input-block">
+                        <form:select path="TouZiXZ" class="form-control layui-input required simple-select">
+                            <form:options items="${fns:getMainDictList('TouZiXZ')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>咨询项目类型:</label>
+                    <div class="layui-input-block">
+                        <form:select path="ProjectType" class="form-control layui-input required simple-select">
+                            <form:options items="${fns:getMainDictList('ProjectType')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>合同类型:</label>
+                    <div class="layui-input-block">
+                        <form:select path="HeTongLeiXing" class="form-control layui-input required simple-select">
+                            <form:options items="${fns:getMainDictList('HeTongLeiXing')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>合同编号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="ZiXunHTBH" htmlEscape="false"  class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>项目报告号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="DangABH" htmlEscape="false"  class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>出具报告日期:</label>
+                    <div class="layui-input-block">
+                        <form:input path="BaoGaoShuQianFaDate" htmlEscape="false"  class="laydate-icondate required form-control layui-input layer-date laydate-icon"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>咨询营业收入(万元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="ZiXunShouRu" htmlEscape="false" onchange="zxChange()" class="form-control required layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>造价师注册证号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="zaoJiaShiZhengHao" htmlEscape="false"  class="form-control required layui-input"/>
+                    </div>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>咨询员</h2></div>
+                <div class="layui-item layui-col-sm12 lw6">
+                    <div class="layui-item nav-btns">
+                        <div class="layui-item nav-btns" style="padding-left:0px;">
+                            <a class="nav-btn nav-btn-add"
+                               onclick="addRow('#reportedConsultantList', workClientBankRowIdx, workClientBankTpl);workClientBankRowIdx = workClientBankRowIdx + 1;"
+                               title="新增"><i class="fa fa-plus"></i> 新增</a>
+                        </div>
+                        <table id="bankinfo" class="table table-bordered table-condensed can-edit">
+                            <thead>
+                            <tr>
+                                <th width="60px">编号</th>
+                                <th >咨询员名称</th>
+                                <th >注册/资格证号</th>
+                                <th >本人负责内容</th>
+                                <th >完成营业收入比例(%)</th>
+                                <th >完成营业收入(元)</th>
+                                <th width="100px">操作</th>
+                            </tr>
+                            </thead>
+                            <tbody id="reportedConsultantList">
+
+                            </tbody>
+                        </table>
+                        <script type="text/template" id="workClientBankTpl">//<!--
+                                <tr id="reportedConsultantList{{idx}}">
+                                    <td class="hide">
+                                        <input id="reportedConsultantList{{idx}}_id" name="reportedConsultantList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+                                        <input id="reportedConsultantList{{idx}}_delFlag" name="reportedConsultantList[{{idx}}].delFlag" type="hidden" value="0"/>
+                                        <input id="reportedConsultantList{{idx}}_remindId" name="reportedConsultantList[{{idx}}].remindId" type="hidden" value="{{row.remindId}}"/>
+                                    </td>
+
+                                    <td width="60px">
+                                        <input id="reportedConsultantList{{idx}}_costNum" name="reportedConsultantList[{{idx}}].costNum" readonly="readonly" style="text-align: center"  value="{{idx}}" type="text" class="form-control contentDetail"/>
+                                    </td>
+                                    <td>
+                                        <sys:reportedtreeselectUser id="reportedConsultantList{{idx}}_zixunyuan" name="reportedConsultantList[{{idx}}].zixunyuan" value="{{row.zixunyuan}}" labelName="workAccountList[{{idx}}].zixunyuan" labelValue="{{row.zixunyuanName}}"
+                                            title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+                                    </td>
+
+                                    <td>
+                                        <input id="reportedConsultantList{{idx}}_zhucezigezhID" readonly="true" name="reportedConsultantList[{{idx}}].zhucezigezhID" value="{{row.zhucezigezhID}}" class="form-control required"/>
+                                    </td>
+                                    <td>
+                                        <input id="reportedConsultantList{{idx}}_wordnr"  name="reportedConsultantList[{{idx}}].wordnr" value="{{row.wordnr}}" class="form-control required"/>
+                                    </td>
+
+                                    <td>
+                                        <input id="reportedConsultantList{{idx}}_wcyysrbl" onblur="setTaxMoney(this)" name="reportedConsultantList[{{idx}}].wcyysrbl" value="{{row.wcyysrbl}}" class="form-control number required"/>
+                                    </td>
+
+                                    <td>
+                                        <input id="reportedConsultantList{{idx}}_wcyysr"  name="reportedConsultantList[{{idx}}].wcyysr" value="{{row.wcyysr}}" class="form-control number required"/>
+                                    </td>
+
+                                    <td class="text-center op-td" width="10">
+                                        {{#delBtn}}<span class="op-btn op-btn-delete" onclick="delRow(this, '#reportedConsultantList{{idx}}')" title="删除"><i class="fa fa-trash"></i>&nbsp;删除</span>{{/delBtn}}
+                                    </td>
+                                </tr>//-->
+                        </script>
+                    </div>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>项目信息</h2></div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>工程所在省份</label>
+                    <div class="layui-input-block with-icon">
+                        <select name="s1" id="team" lay-verify="required" lay-filter="cityfilter">
+                            <option value=""></option>
+                            <option value="1" <c:if test="${ruralProjectRecordsReported.s1=='1'}">selected</c:if>>江苏省</option>
+                            <option value="2" <c:if test="${ruralProjectRecordsReported.s1=='2'}">selected</c:if>>外省</option>
+                        </select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>工程所在地级市</label>
+                    <div class="layui-input-block">
+                        <select id="city" name="s2" value="${city}" lay-verify="required" lay-filter="quyufilter"></select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>工程所在区县</label>
+                    <div class="layui-input-block">
+                        <select id="county" name="s3" value="${county}" lay-verify="required" lay-filter="countyfilter"></select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>工程结构:</label>
+                    <div class="layui-input-block">
+                        <form:select path="PorjectStruct" class="form-control layui-input required simple-select">
+                            <form:options items="${fns:getMainDictList('PorjectStruct')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">地上层数:</label>
+                    <div class="layui-input-block">
+                        <form:input path="FloorUp" htmlEscape="false"  class="form-control layui-input number"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">底下层数:</label>
+                    <div class="layui-input-block">
+                        <form:input path="FloorDown" htmlEscape="false"  class="form-control layui-input number"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>建筑面积或规模:</label>
+                    <div class="layui-input-block">
+                        <form:input path="GCGMValue" htmlEscape="false"  class="form-control layui-input required number" onchange="ZiXunBDEChange()"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>计量单位:</label>
+                    <div class="layui-input-block">
+                        <form:select path="GCGMUnit" class="form-control layui-input required simple-select">
+                            <form:options items="${fns:getMainDictList('GCGM_Unit')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>工程用途:</label>
+                    <div class="layui-input-block">
+                        <form:select path="PorjectUse" class="form-control layui-input required simple-select">
+                            <form:options items="${fns:getMainDictList('PorjectUse')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>咨询标的额(万元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="ZiXunBDE" htmlEscape="false" class="form-control required layui-input number" onchange="ZiXunBDEChange()"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">其中土建造价(万元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="ZiXunBDETJ" htmlEscape="false" class="form-control layui-input" onchange="ZiXunBDEChange()"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">其中安装造价(万元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="ZiXunBDEAZ" htmlEscape="false" class="form-control layui-input" onchange="ZiXunBDEChange()"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">其中土建百分比(%):</label>
+                    <div class="layui-input-block">
+                        <form:input path="CalTJPercent" htmlEscape="false" class="form-control layui-input" readonly="true"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">其中安装百分比(%):</label>
+                    <div class="layui-input-block">
+                        <form:input path="CalAZPercent" htmlEscape="false" class="form-control layui-input" readonly="true"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">单位造价(元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="CalZZJUnit" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">其中土建单位造价(元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="CalZZJTJUnit" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">其中装修单位造价(元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="CalZZJAZUnit" htmlEscape="false" class="form-control layui-input" readonly="true"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">合同价(元):</label>
+                    <div class="layui-input-block with-icon">
+                        <form:input path="HeTongJia" htmlEscape="false"  class="form-control layui-input number"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>送审价(元):</label>
+                    <div class="layui-input-block with-icon">
+                        <form:input path="SongShenJia" htmlEscape="false"  class="form-control required layui-input number"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>审定价(元):</label>
+                    <div class="layui-input-block with-icon">
+                        <form:input path="ShenDingJia" htmlEscape="false"  class="form-control required layui-input number"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">审核增减额(元):</label>
+                    <div class="layui-input-block with-icon">
+                        <form:input path="JingHeJianE" htmlEscape="false"  class="form-control layui-input number" readonly="true"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">审核增减率(%):</label>
+                    <div class="layui-input-block with-icon">
+                        <form:input path="JingHeJianLv" htmlEscape="false"  class="form-control layui-input number" readonly="true"/>
+                    </div>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>主要材料和人工消耗量指标</h2></div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">钢材用量(t):</label>
+                    <div class="layui-input-block">
+                        <form:input path="GCYL" htmlEscape="false" class="form-control layui-input number" onchange="ZiXunBDEChange()"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">水泥用量(t):</label>
+                    <div class="layui-input-block">
+                        <form:input path="SNYL" htmlEscape="false" class="form-control layui-input number" onchange="ZiXunBDEChange()"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">预拌砼用量(m³):</label>
+                    <div class="layui-input-block">
+                        <form:input path="YBTYL" htmlEscape="false" class="form-control layui-input number" onchange="ZiXunBDEChange()"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">人工工日用量(工日):</label>
+                    <div class="layui-input-block">
+                        <form:input path="RGGRYL" htmlEscape="false" class="form-control layui-input number" onchange="ZiXunBDEChange()"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">钢材消耗指标(kg):</label>
+                    <div class="layui-input-block">
+                        <form:input path="GCYLPerUnit" htmlEscape="false" class="form-control layui-input number" readonly="true"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">水泥消耗指标(kg):</label>
+                    <div class="layui-input-block">
+                        <form:input path="SNYLPerUnit" htmlEscape="false" class="form-control layui-input number" readonly="true"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">预拌砼消耗指标(m³):</label>
+                    <div class="layui-input-block">
+                        <form:input path="YBTYLPerUnit" htmlEscape="false" class="form-control layui-input number" readonly="true"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">人工工日消耗指标(工日):</label>
+                    <div class="layui-input-block">
+                        <form:input path="RGGRYLPerUnit" htmlEscape="false" class="form-control layui-input number" readonly="true"/>
+                    </div>
+                </div>
+            </div>
+
+            <div class="form-group layui-row first lw9">
+                <div class="form-group-label"><h2>咨询项目造价包含内容说明</h2></div>
+
+                <div class="layui-item layui-col-sm12 lw6">
+                    <label class="layui-form-label">土建工程:</label>
+                    <div class="layui-input-block paddingDiv">
+                        <form:checkboxes path="TJProjectList" lay-skin="primary" itemLabel="label" itemValue="value" htmlEscape="false" items="${fns:getMainDictList('civil_project')}" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw6">
+                    <label class="layui-form-label">装饰工程:</label>
+                    <div class="layui-input-block paddingDiv">
+                        <form:checkboxes path="ZSProjectList" lay-skin="primary" itemLabel="label" itemValue="value" htmlEscape="false" items="${fns:getMainDictList('decorate_project')}" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw6">
+                    <label class="layui-form-label">安装工程:</label>
+                    <div class="layui-input-block paddingDiv">
+                        <form:checkboxes path="AZProjectList" lay-skin="primary" itemLabel="label" itemValue="value" htmlEscape="false" items="${fns:getMainDictList('install_project')}" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw6">
+                    <label class="layui-form-label">市政工程:</label>
+                    <div class="layui-input-block paddingDiv">
+                        <form:checkboxes path="SZProjectList" lay-skin="primary" itemLabel="label" itemValue="value" htmlEscape="false" items="${fns:getMainDictList('services_project')}" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw6">
+                    <label class="layui-form-label">仿古园林工程:</label>
+                    <div class="layui-input-block paddingDiv">
+                        <form:checkboxes path="FGYLProjectList" lay-skin="primary" itemLabel="label" itemValue="value" htmlEscape="false" items="${fns:getMainDictList('park_project')}" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw6 with-textarea">
+                    <label class="layui-form-label double-line">其他专业工程咨询项目造价包含内容说明:</label>
+                    <div class="layui-input-block">
+                        <form:textarea path="QTProjec" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+                    </div>
+                </div>
+            </div>
+
+            <div class="form-group layui-row page-end"></div>
+        </form:form>
+    </div>
+</div>
+
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+
+    layui.use(['table','form'], function(){
+
+        var form = layui.form;
+        form.render();
+
+        layui.form.on('select(cityfilter)',function(data) {
+            if (data.value == "") {
+                $('#city').html('<option value="">请选择工程所在地级市</option>');
+                $('#county').html('<option value="">请选择工程所在区县</option>')
+                layui.form.render("select");
+            } else {
+                $('#city').html('<option value="">请选择工程所在地级市</option>')
+                $('#county').html('<option value="">请选择工程所在区县</option>')
+                $.ajax({
+                    type:"post",
+                    url:'${ctx}/ruralProject/ruralProjectMessage/getArea',
+                    data:{"id":data.value},
+                    dataType:"json",
+                    async: false,
+                    success:function(data){
+                        if(data.success) {
+                            for (var info in data.data){
+                                $('#city').append(new Option(data.data[info].name,data.data[info].id));
+                            }
+                        }
+                    }
+                })
+                layui.form.render("select");
+            }
+        });
+
+        layui.form.on('select(quyufilter)',function(data) {
+            if (data.value == "") {
+                $('#county').html('<option value="">请选择工程所在区县</option>');
+                layui.form.render("select");
+            } else {
+                $('#county').html('<option value="">请选择工程所在区县</option>')
+                $.ajax({
+                    type:"post",
+                    url:'${ctx}/ruralProject/ruralProjectMessage/getArea',
+                    data:{"id":data.value},
+                    dataType:"json",
+                    async: false,
+                    success:function(data){
+                        if(data.success) {
+                            for (var info in data.data){
+                                $('#county').append(new Option(data.data[info].name,data.data[info].id));
+                            }
+                        }
+                    }
+                })
+                layui.form.render("select");
+            }
+        });
+
+    })
+</script>
+<script type="text/javascript">
+    var workClientBankRowIdx = 0,
+        workClientBankTpl = $("#workClientBankTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g, "");
+    $(document).ready(function () {
+        var dataBank = ${fns:toJson(ruralProjectRecordsReported.reportedConsultantList)};
+        for (var i = 0; i < dataBank.length; i++) {
+            addRow('#reportedConsultantList', workClientBankRowIdx, workClientBankTpl, dataBank[i]);
+            workClientBankRowIdx = workClientBankRowIdx + 1;
+        }
+    });
+
+</script>
+</body>
+</html>

+ 904 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/reportedModify.jsp

@@ -0,0 +1,904 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+    <title>项目管理</title>
+    <meta name="decorator" content="default"/>
+    <script type="text/javascript" src="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.js"></script>
+    <script type="text/javascript" src="${ctxStatic}/iCheck/icheck.min.js"></script>
+    <link rel='stylesheet' type="text/css" href="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.css"/>
+    <style>
+        #projectDesc-error{
+            left:0;
+            top:82px;
+        }
+        .layui-layer-dialog{
+            background: red;
+        }
+        td input{
+            height: 42px !important;
+        }
+        .disables {
+            pointer-events: none;
+        }
+        .notDisables {
+            pointer-events: all;
+        }
+        .forbidden{
+             background-color:#c2c2c2;
+         }
+
+        .notForbidden{
+             background-color:#3ca2e0;
+         }
+        .paddingDiv span{
+            padding-left: 28px;
+        }
+    </style>
+    <script type="text/javascript">
+        var validateForm;
+        var isMasterClient = true;//是否是委托方
+        var clientCount = 0;
+        function doSubmit(i){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                //咨询标的额
+                var ZiXunBDE = $("#ZiXunBDE").val();
+                if(ZiXunBDE!= undefined && ZiXunBDE!= '' && ZiXunBDE>=500){
+                    //人工工日用量
+                    var RGGRYL = $("#RGGRYL").val();
+                    if(RGGRYL== undefined || RGGRYL== null || RGGRYL == '' || RGGRYL == 0){
+                        parent.layer.msg("咨询标的额大于500万,请填写人工工日用量!", {icon: 5});
+                        return false;
+                    }
+                }
+                var list = [];
+                var size = $("#reportedConsultantList tr").length;
+                if(size>0){
+                    for (var i = 1;i<=50;i++){
+                        var zixunyuan = $("#reportedConsultantList"+i+"_zixunyuanId").val();
+                        if(zixunyuan!=undefined && zixunyuan != null && zixunyuan !=''){
+                            list.push(zixunyuan);
+                        }
+                    }
+                    var nary = list.sort();
+                    for(var i = 0; i < nary.length - 1; i++) {
+                        if(nary[i] == nary[i + 1]) {
+                            parent.layer.msg("咨询员重复,请重新选择!", {icon: 5});
+                            return false;
+                        }
+                    }
+                }
+
+                var team = $("#team").val()
+                var city = $("#city").val()
+                var county = $("#county").val()
+                if(team ==undefined || team == null || team == ''){
+                    parent.layer.msg("请选择工程所在省份!", {icon: 5});
+                    return false;
+                }
+                if(city ==undefined || city == null || city == ''){
+                    parent.layer.msg("请选择工程所在地级市!", {icon: 5});
+                    return false;
+                }
+                if(county ==undefined || county == null || county == ''){
+                    parent.layer.msg("请选择工程所在区县!", {icon: 5});
+                    return false;
+                }
+                $("#inputForm").submit();
+                return true;
+            }else{
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+
+            return false;
+        }
+        $(document).ready(function() {
+            var radioVal ;
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+
+            if($("#FloorUp").val() == undefined || $("#FloorUp").val() == null || $("#FloorUp").val() == ''){
+                $("#FloorUp").val(0);
+            }
+            if($("#FloorDown").val() == undefined || $("#FloorDown").val() == null || $("#FloorDown").val() == ''){
+                $("#FloorDown").val(0);
+            }
+            if($("#ZiXunBDETJ").val() == undefined || $("#ZiXunBDETJ").val() == null || $("#ZiXunBDETJ").val() == ''){
+                $("#ZiXunBDETJ").val(0);
+            }
+            if($("#ZiXunBDEAZ").val() == undefined || $("#ZiXunBDEAZ").val() == null || $("#ZiXunBDEAZ").val() == ''){
+                $("#ZiXunBDEAZ").val(0);
+            }
+            if($("#GCYL").val() == undefined || $("#GCYL").val() == null || $("#GCYL").val() == ''){
+                $("#GCYL").val(0);
+            }
+            if($("#SNYL").val() == undefined || $("#SNYL").val() == null || $("#SNYL").val() == ''){
+                $("#SNYL").val(0);
+            }
+            if($("#YBTYL").val() == undefined || $("#YBTYL").val() == null || $("#YBTYL").val() == ''){
+                $("#YBTYL").val(0);
+            }
+            if($("#RGGRYL").val() == undefined || $("#RGGRYL").val() == null || $("#RGGRYL").val() == ''){
+                $("#RGGRYL").val(0);
+            }
+            if($("#GCYLPerUnit").val() == undefined || $("#GCYLPerUnit").val() == null || $("#GCYLPerUnit").val() == ''){
+                $("#GCYLPerUnit").val(0);
+            }
+            if($("#SNYLPerUnit").val() == undefined || $("#SNYLPerUnit").val() == null || $("#SNYLPerUnit").val() == ''){
+                $("#SNYLPerUnit").val(0);
+            }
+            if($("#YBTYLPerUnit").val() == undefined || $("#YBTYLPerUnit").val() == null || $("#YBTYLPerUnit").val() == ''){
+                $("#YBTYLPerUnit").val(0);
+            }
+            if($("#RGGRYLPerUnit").val() == undefined || $("#RGGRYLPerUnit").val() == null || $("#RGGRYLPerUnit").val() == ''){
+                $("#RGGRYLPerUnit").val(0);
+            }
+
+            laydate.render({
+                elem: '#BaoGaoShuQianFaDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+                , trigger: 'click'
+                ,max: 38 //38天后
+            });
+
+
+            $('#city').html('<option value="${ruralProjectRecordsReported.s2}">${ruralProjectRecordsReported.city}</option>')
+            $('#county').html('<option value="${ruralProjectRecordsReported.s3}">${ruralProjectRecordsReported.county}</option>')
+            layui.form.render("select");
+
+        });
+
+        function ZiXunBDEChange(){
+            //咨询标的额
+            var ZiXunBDE = $("#ZiXunBDE").val();
+            //建筑面积或规模
+            var GCGMValue = $("#GCGMValue").val();
+            //土建造价
+            var ZiXunBDETJ = $("#ZiXunBDETJ").val();
+            //安装造价
+            var ZiXunBDEAZ = $("#ZiXunBDEAZ").val();
+            //钢材用量
+            var GCYL = $("#GCYL").val();
+            //水泥用量
+            var SNYL = $("#SNYL").val();
+            //预拌砼用量
+            var YBTYL = $("#YBTYL").val();
+            //人工工日用量
+            var RGGRYL = $("#RGGRYL").val();
+
+            //判断咨询标的额的值
+            if(ZiXunBDE != ''){
+                //判断土建造价的值
+                if(ZiXunBDETJ != ''){
+                    var CalTJPercent = (Math.round(parseInt(ZiXunBDETJ) / parseInt(ZiXunBDE) * 100) / 100 * 100).toFixed(2);
+                    $("#CalTJPercent").val(CalTJPercent);
+                }else{
+                    $("#CalTJPercent").val('');
+                }
+                //判断土建造价的值
+                if(ZiXunBDEAZ != ''){
+                    var CalAZPercent = (Math.round(parseInt(ZiXunBDEAZ) / parseInt(ZiXunBDE) * 100) / 100 * 100).toFixed(2);
+                    $("#CalAZPercent").val(CalAZPercent);
+                }else{
+                    $("#CalAZPercent").val('');
+                }
+                //判断建筑面积或规模
+                if(GCGMValue != ''){
+                    var CalZZJUnit = (Math.round(parseInt(ZiXunBDE) / parseInt(GCGMValue) * 100) * 100).toFixed(2);
+                    $("#CalZZJUnit").val(CalZZJUnit);
+                }else{
+                    $("#CalZZJUnit").val('');
+                }
+            }
+            //判断建筑面积或规模
+            if(GCGMValue != ''){
+                //判断土建造价
+                if(ZiXunBDETJ != ''){
+                    var CalZZJTJUnit = (Math.round(parseInt(ZiXunBDETJ) / parseInt(GCGMValue) * 100) * 100).toFixed(2);
+                    $("#CalZZJTJUnit").val(CalZZJTJUnit);
+                }else{
+                    $("#CalZZJTJUnit").val('');
+                }
+                //判断安装造价
+                if(ZiXunBDEAZ != ''){
+                    var CalZZJAZUnit = (Math.round(parseInt(ZiXunBDEAZ) / parseInt(GCGMValue) * 100) * 100).toFixed(2);
+                    $("#CalZZJAZUnit").val(CalZZJAZUnit);
+                }else{
+                    $("#CalZZJAZUnit").val('');
+                }
+                //判断钢材用量
+                if(GCYL != ''){
+                    var GCYLPerUnit = (Math.round(parseInt(GCYL) / parseInt(GCGMValue) * 100) * 10).toFixed(2);
+                    $("#GCYLPerUnit").val(GCYLPerUnit);
+                }else{
+                    $("#GCYLPerUnit").val('');
+                }
+                //判断水泥用量
+                if(SNYL != ''){
+                    var SNYLPerUnit = (Math.round(parseInt(SNYL) / parseInt(GCGMValue) * 100) * 10).toFixed(2);
+                    $("#SNYLPerUnit").val(SNYLPerUnit);
+                }else{
+                    $("#SNYLPerUnit").val('');
+                }
+                //判断预拌砼用量
+                if(YBTYL != ''){
+                    var YBTYLPerUnit = Math.round(parseInt(YBTYL) / parseInt(GCGMValue)).toFixed(2);
+                    $("#YBTYLPerUnit").val(YBTYLPerUnit);
+                }else{
+                    $("#YBTYLPerUnit").val('');
+                }
+                //判断人工工日用量
+                if(RGGRYL != ''){
+                    var RGGRYLPerUnit = Math.round(parseInt(RGGRYL) / parseInt(GCGMValue)).toFixed(2);
+                    $("#RGGRYLPerUnit").val(RGGRYLPerUnit);
+                }else{
+                    $("#RGGRYLPerUnit").val('');
+                }
+            }
+            //判断土建造价
+            if(ZiXunBDETJ !=''){
+                //判断咨询标的额
+                if(ZiXunBDE != ''){
+                    var CalTJPercent = (Math.round(parseInt(ZiXunBDETJ) / parseInt(ZiXunBDE) * 100) / 100 * 100).toFixed(2);
+                    $("#CalTJPercent").val(CalTJPercent);
+                }else{
+                    $("#CalTJPercent").val('');
+                }
+                //判断建筑面积或规模
+                if(GCGMValue != ''){
+                    var CalZZJTJUnit = (Math.round(parseInt(ZiXunBDETJ) / parseInt(GCGMValue) * 100) * 100).toFixed(2);
+                    $("#CalZZJTJUnit").val(CalZZJTJUnit);
+                }else{
+                    $("#CalZZJTJUnit").val('');
+                }
+            }
+            //判断安装造价
+            if(ZiXunBDEAZ !=''){
+                //判断咨询标的额
+                if(ZiXunBDE != ''){
+                    var CalAZPercent = (Math.round(parseInt(ZiXunBDEAZ) / parseInt(ZiXunBDE) * 100) / 100 * 100).toFixed(2);
+                    $("#CalAZPercent").val(CalAZPercent);
+                }else{
+                    $("#CalAZPercent").val('');
+                }
+                //判断建筑面积或规模
+                if(GCGMValue != ''){
+                    var CalZZJAZUnit = (Math.round(parseInt(ZiXunBDEAZ) / parseInt(GCGMValue) * 100) * 100).toFixed(2);
+                    $("#CalZZJAZUnit").val(CalZZJAZUnit);
+                }else{
+                    $("#CalZZJAZUnit").val('');
+                }
+            }
+            //判断钢材用量
+            if(GCYL !=''){
+                //判断建筑面积或规模
+                if(GCGMValue != ''){
+                    var GCYLPerUnit = (Math.round(parseInt(GCYL) / parseInt(GCGMValue) * 100) * 10).toFixed(2);
+                    $("#GCYLPerUnit").val(GCYLPerUnit);
+                }else{
+                    $("#GCYLPerUnit").val('');
+                }
+            }
+            //判断水泥用量
+            if(SNYL !=''){
+                //判断建筑面积或规模
+                if(GCGMValue != ''){
+                    var SNYLPerUnit = (Math.round(parseInt(SNYL) / parseInt(GCGMValue) * 100) * 10).toFixed(2);
+                    $("#SNYLPerUnit").val(SNYLPerUnit);
+                }else{
+                    $("#SNYLPerUnit").val('');
+                }
+            }
+            //判断预拌砼用量
+            if(YBTYL !=''){
+                //判断建筑面积或规模
+                if(GCGMValue != ''){
+                    var YBTYLPerUnit = (Math.round(parseInt(YBTYL) / parseInt(GCGMValue) * 100) * 10).toFixed(2);
+                    $("#YBTYLPerUnit").val(YBTYLPerUnit);
+                }else{
+                    $("#YBTYLPerUnit").val('');
+                }
+            }
+            //判断人工工日用量
+            if(RGGRYL !=''){
+                //判断建筑面积或规模
+                if(GCGMValue != ''){
+                    var RGGRYLPerUnit = Math.round(parseInt(RGGRYL) / parseInt(GCGMValue)).toFixed(2);
+                    $("#RGGRYLPerUnit").val(RGGRYLPerUnit);
+                }else{
+                    $("#RGGRYLPerUnit").val('');
+                }
+            }
+        }
+
+        function addRow(list, idx, tpl, row){
+            // var idx1 = $("#workClientLinkmanList tr").length;
+            idx +=1;
+            bornTemplete(list, idx, tpl, row, idx);
+        }
+
+        function bornTemplete(list, idx, tpl, row, idx1){
+            $(list).append(Mustache.render(tpl, {
+                idx: idx, delBtn: true, row: row,
+                order:idx1 + 1
+            }));
+            $(list+idx).find("select").each(function(){
+                $(this).val($(this).attr("data-value"));
+            });
+            $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+                var ss = $(this).attr("data-value").split(',');
+                for (var i=0; i<ss.length; i++){
+                    if($(this).val() == ss[i]){
+                        $(this).attr("checked","checked");
+                    }
+                }
+            });
+        }
+
+        function delEntrustRow(obj, prefix){
+            var id = $(prefix+"_id");
+            var delFlag = $(prefix+"_delFlag");
+            $(obj).parent().parent().remove();
+        }
+
+        function delRow(obj, prefix){
+            var id = $(prefix+"_id");
+            var delFlag = $(prefix+"_delFlag");
+            $(obj).parent().parent().remove();
+        }
+        function formatNum(obj) {
+            var val = $(obj).val();
+            if(val==null||val==''|| isNaN(val))return;
+            var money = parseFloat((val + "").replace(/[^\d\.-]/g, "")).toFixed(2) + "";
+            var l = money.split(".")[0].split("").reverse(),
+                r = money.split(".")[1];
+            t = "";
+            for(i = 0; i < l.length; i ++ )
+            {
+                t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
+            }
+            $(obj).val(t.split("").reverse().join("") + "." + r);
+        }
+
+
+
+        function setTaxMoney(obj){
+            var a = $(obj).attr("id");
+            //咨询营业收入
+            var mv = $("#ZiXunShouRu").val();
+            var m = parseFloat(mv)* 10000;
+
+            var t2 = $("#" +  a ).val();
+
+            //完成营业收入
+            var t = a.replace('wcyysrbl','wcyysr');
+            if(!/^\d+(\.\d{1,4})?$/.test( t2 )){
+                $("#" +  t ).val("");
+                parent.layer.msg("请填写正确完成营业收入比例",{icon:5});
+                return;
+            }else {
+                var wcyysr = m * t2 /100;
+                $("#" +  t ).val(parseFloat(wcyysr.toFixed(2)));
+            }
+        }
+
+        function zxChange() {
+            //咨询营业收入
+            var mv = $("#ZiXunShouRu").val();
+            if(!/^\d+(\.\d{1,4})?$/.test( mv )){
+                $("#" +  t ).val("");
+                parent.layer.msg("请填写正确的咨询营业收入",{icon:5});
+                return;
+            }
+            var m = parseFloat(mv)* 10000;
+            var size = $("#reportedConsultantList tr").length;
+            if(size>0){
+                for (var i = 1;i<=50;i++){
+                    var wcyysrbl = $("#reportedConsultantList"+i+"_wcyysrbl").val();
+
+                    if(wcyysrbl != undefined && wcyysrbl!=''){
+                        var wcyysr = m * wcyysrbl /100;
+                        $("#reportedConsultantList"+i+"_wcyysr").val(wcyysr);
+                    }
+                }
+            }
+        }
+    </script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container">
+        <sys:message content="${message}"/>
+        <form:form id="inputForm" modelAttribute="ruralProjectRecordsReported" enctype="multipart/form-data" action="${ctx}/ruralProject/ruralProjectMessage/auditSaveReported" method="post" class="form-horizontal layui-form">
+            <form:hidden path="id"/>
+            <form:hidden path="projectId"/>
+            <form:hidden path="act.taskId"/>
+            <form:hidden path="act.taskName"/>
+            <form:hidden path="act.taskDefKey"/>
+            <form:hidden path="act.procInsId"/>
+            <form:hidden path="act.procDefId"/>
+            <form:hidden id="flag" path="act.flag"/>
+            <form:hidden path="home"/>
+            <form:hidden path="workContractInfo.client.id" id="contractClientId" value="${workContractInfo.client.id}"/>
+            <input type="hidden" id="flagFile" value="">
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>项目信息</h2></div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>咨询项目名称:</label>
+                    <div class="layui-input-block">
+                        <form:input path="ProjectName" htmlEscape="false"  class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>咨询项目负责人:</label>
+                    <div class="layui-input-block  with-icon">
+                        <sys:treeselect id="master" name="xmFZR" value="${ruralProjectRecordsReported.xmFZR}" labelName="leaderNameStr" labelValue="${ruralProjectRecordsReported.leaderNameStr}"
+                                        title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>委托单位:</label>
+                    <div class="layui-input-block">
+                        <form:input path="WeiTuoDW" htmlEscape="false"  class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>委托单位电话:</label>
+                    <div class="layui-input-block">
+                        <form:input path="LianXiDH" htmlEscape="false"  class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>投资性质:</label>
+                    <div class="layui-input-block">
+                        <form:select path="TouZiXZ" class="form-control layui-input required simple-select">
+                            <form:options items="${fns:getMainDictList('TouZiXZ')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>咨询项目类型:</label>
+                    <div class="layui-input-block">
+                        <form:select path="ProjectType" class="form-control layui-input required simple-select">
+                            <form:options items="${fns:getMainDictList('ProjectType')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>合同类型:</label>
+                    <div class="layui-input-block">
+                        <form:select path="HeTongLeiXing" class="form-control layui-input required simple-select">
+                            <form:options items="${fns:getMainDictList('HeTongLeiXing')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>合同编号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="ZiXunHTBH" htmlEscape="false"  class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>项目报告号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="DangABH" htmlEscape="false"  class="form-control layui-input required"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>出具报告日期:</label>
+                    <div class="layui-input-block">
+                        <form:input path="BaoGaoShuQianFaDate" htmlEscape="false"  class="laydate-icondate required form-control layui-input layer-date laydate-icon"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>咨询营业收入(万元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="ZiXunShouRu" htmlEscape="false" onchange="zxChange()" class="form-control required layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>造价师注册证号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="zaoJiaShiZhengHao" htmlEscape="false"  class="form-control required layui-input"/>
+                    </div>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>咨询员</h2></div>
+                <div class="layui-item layui-col-sm12 lw6">
+                    <div class="layui-item nav-btns">
+                        <div class="layui-item nav-btns" style="padding-left:0px;">
+                            <a class="nav-btn nav-btn-add"
+                               onclick="addRow('#reportedConsultantList', workClientBankRowIdx, workClientBankTpl);workClientBankRowIdx = workClientBankRowIdx + 1;"
+                               title="新增"><i class="fa fa-plus"></i> 新增</a>
+                        </div>
+                        <table id="bankinfo" class="table table-bordered table-condensed can-edit">
+                            <thead>
+                            <tr>
+                                <th width="60px">编号</th>
+                                <th >咨询员名称</th>
+                                <th >注册/资格证号</th>
+                                <th >本人负责内容</th>
+                                <th >完成营业收入比例(%)</th>
+                                <th >完成营业收入(元)</th>
+                                <th width="100px">操作</th>
+                            </tr>
+                            </thead>
+                            <tbody id="reportedConsultantList">
+
+                            </tbody>
+                        </table>
+                        <script type="text/template" id="workClientBankTpl">//<!--
+                                <tr id="reportedConsultantList{{idx}}">
+                                    <td class="hide">
+                                        <input id="reportedConsultantList{{idx}}_id" name="reportedConsultantList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+                                        <input id="reportedConsultantList{{idx}}_delFlag" name="reportedConsultantList[{{idx}}].delFlag" type="hidden" value="0"/>
+                                        <input id="reportedConsultantList{{idx}}_remindId" name="reportedConsultantList[{{idx}}].remindId" type="hidden" value="{{row.remindId}}"/>
+                                    </td>
+
+                                    <td width="60px">
+                                        <input id="reportedConsultantList{{idx}}_costNum" name="reportedConsultantList[{{idx}}].costNum" readonly="readonly" style="text-align: center"  value="{{idx}}" type="text" class="form-control contentDetail"/>
+                                    </td>
+                                    <td>
+                                        <sys:reportedtreeselectUser id="reportedConsultantList{{idx}}_zixunyuan" name="reportedConsultantList[{{idx}}].zixunyuan" value="{{row.zixunyuan}}" labelName="workAccountList[{{idx}}].zixunyuan" labelValue="{{row.zixunyuanName}}"
+                                            title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required layui-input" allowClear="true" notAllowSelectParent="true"/>
+                                    </td>
+
+                                    <td>
+                                        <input id="reportedConsultantList{{idx}}_zhucezigezhID" readonly="true" name="reportedConsultantList[{{idx}}].zhucezigezhID" value="{{row.zhucezigezhID}}" class="form-control required"/>
+                                    </td>
+                                    <td>
+                                        <input id="reportedConsultantList{{idx}}_wordnr"  name="reportedConsultantList[{{idx}}].wordnr" value="{{row.wordnr}}" class="form-control required"/>
+                                    </td>
+
+                                    <td>
+                                        <input id="reportedConsultantList{{idx}}_wcyysrbl" onblur="setTaxMoney(this)" name="reportedConsultantList[{{idx}}].wcyysrbl" value="{{row.wcyysrbl}}" class="form-control number required"/>
+                                    </td>
+
+                                    <td>
+                                        <input id="reportedConsultantList{{idx}}_wcyysr"  name="reportedConsultantList[{{idx}}].wcyysr" value="{{row.wcyysr}}" class="form-control number required"/>
+                                    </td>
+
+                                    <td class="text-center op-td" width="10">
+                                        {{#delBtn}}<span class="op-btn op-btn-delete" onclick="delRow(this, '#reportedConsultantList{{idx}}')" title="删除"><i class="fa fa-trash"></i>&nbsp;删除</span>{{/delBtn}}
+                                    </td>
+                                </tr>//-->
+                        </script>
+                    </div>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>项目信息</h2></div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>工程所在省份</label>
+                    <div class="layui-input-block with-icon">
+                        <select name="s1" id="team" lay-verify="required" lay-filter="cityfilter">
+                            <option value=""></option>
+                            <option value="1" <c:if test="${ruralProjectRecordsReported.s1=='1'}">selected</c:if>>江苏省</option>
+                            <option value="2" <c:if test="${ruralProjectRecordsReported.s1=='2'}">selected</c:if>>外省</option>
+                        </select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>工程所在地级市</label>
+                    <div class="layui-input-block">
+                        <select id="city" name="s2" value="${city}" lay-verify="required" lay-filter="quyufilter"></select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>工程所在区县</label>
+                    <div class="layui-input-block">
+                        <select id="county" name="s3" value="${county}" lay-verify="required" lay-filter="countyfilter"></select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>工程结构:</label>
+                    <div class="layui-input-block">
+                        <form:select path="PorjectStruct" class="form-control layui-input required simple-select">
+                            <form:options items="${fns:getMainDictList('PorjectStruct')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">地上层数:</label>
+                    <div class="layui-input-block">
+                        <form:input path="FloorUp" htmlEscape="false"  class="form-control layui-input number"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">底下层数:</label>
+                    <div class="layui-input-block">
+                        <form:input path="FloorDown" htmlEscape="false"  class="form-control layui-input number"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>建筑面积或规模:</label>
+                    <div class="layui-input-block">
+                        <form:input path="GCGMValue" htmlEscape="false"  class="form-control layui-input required number" onchange="ZiXunBDEChange()"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>计量单位:</label>
+                    <div class="layui-input-block">
+                        <form:select path="GCGMUnit" class="form-control layui-input required simple-select">
+                            <form:options items="${fns:getMainDictList('GCGM_Unit')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>工程用途:</label>
+                    <div class="layui-input-block">
+                        <form:select path="PorjectUse" class="form-control layui-input required simple-select">
+                            <form:options items="${fns:getMainDictList('PorjectUse')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+                        </form:select>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line"><span class="require-item">*</span>咨询标的额(万元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="ZiXunBDE" htmlEscape="false" class="form-control required layui-input number" onchange="ZiXunBDEChange()"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">其中土建造价(万元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="ZiXunBDETJ" htmlEscape="false" class="form-control layui-input" onchange="ZiXunBDEChange()"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">其中安装造价(万元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="ZiXunBDEAZ" htmlEscape="false" class="form-control layui-input" onchange="ZiXunBDEChange()"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">其中土建百分比(%):</label>
+                    <div class="layui-input-block">
+                        <form:input path="CalTJPercent" htmlEscape="false" class="form-control layui-input" readonly="true"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">其中安装百分比(%):</label>
+                    <div class="layui-input-block">
+                        <form:input path="CalAZPercent" htmlEscape="false" class="form-control layui-input" readonly="true"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">单位造价(元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="CalZZJUnit" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">其中土建单位造价(元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="CalZZJTJUnit" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">其中装修单位造价(元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="CalZZJAZUnit" htmlEscape="false" class="form-control layui-input" readonly="true"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">合同价(元):</label>
+                    <div class="layui-input-block with-icon">
+                        <form:input path="HeTongJia" htmlEscape="false"  class="form-control layui-input number"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>送审价(元):</label>
+                    <div class="layui-input-block with-icon">
+                        <form:input path="SongShenJia" htmlEscape="false"  class="form-control required layui-input number"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label"><span class="require-item">*</span>审定价(元):</label>
+                    <div class="layui-input-block with-icon">
+                        <form:input path="ShenDingJia" htmlEscape="false"  class="form-control required layui-input number"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">审核增减额(元):</label>
+                    <div class="layui-input-block with-icon">
+                        <form:input path="JingHeJianE" htmlEscape="false"  class="form-control layui-input number" readonly="true"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">审核增减率(%):</label>
+                    <div class="layui-input-block with-icon">
+                        <form:input path="JingHeJianLv" htmlEscape="false"  class="form-control layui-input number" readonly="true"/>
+                    </div>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>主要材料和人工消耗量指标</h2></div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">钢材用量(t):</label>
+                    <div class="layui-input-block">
+                        <form:input path="GCYL" htmlEscape="false" class="form-control layui-input number" onchange="ZiXunBDEChange()"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">水泥用量(t):</label>
+                    <div class="layui-input-block">
+                        <form:input path="SNYL" htmlEscape="false" class="form-control layui-input number" onchange="ZiXunBDEChange()"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">预拌砼用量(m³):</label>
+                    <div class="layui-input-block">
+                        <form:input path="YBTYL" htmlEscape="false" class="form-control layui-input number" onchange="ZiXunBDEChange()"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">人工工日用量(工日):</label>
+                    <div class="layui-input-block">
+                        <form:input path="RGGRYL" htmlEscape="false" class="form-control layui-input number" onchange="ZiXunBDEChange()"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">钢材消耗指标(kg):</label>
+                    <div class="layui-input-block">
+                        <form:input path="GCYLPerUnit" htmlEscape="false" class="form-control layui-input number" readonly="true"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">水泥消耗指标(kg):</label>
+                    <div class="layui-input-block">
+                        <form:input path="SNYLPerUnit" htmlEscape="false" class="form-control layui-input number" readonly="true"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">预拌砼消耗指标(m³):</label>
+                    <div class="layui-input-block">
+                        <form:input path="YBTYLPerUnit" htmlEscape="false" class="form-control layui-input number" readonly="true"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">人工工日消耗指标(工日):</label>
+                    <div class="layui-input-block">
+                        <form:input path="RGGRYLPerUnit" htmlEscape="false" class="form-control layui-input number" readonly="true"/>
+                    </div>
+                </div>
+            </div>
+
+            <div class="form-group layui-row first lw9">
+                <div class="form-group-label"><h2>咨询项目造价包含内容说明</h2></div>
+
+                <div class="layui-item layui-col-sm12 lw6">
+                    <label class="layui-form-label">土建工程:</label>
+                    <div class="layui-input-block paddingDiv">
+                        <form:checkboxes path="TJProjectList" lay-skin="primary" itemLabel="label" itemValue="value" htmlEscape="false" items="${fns:getMainDictList('civil_project')}" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw6">
+                    <label class="layui-form-label">装饰工程:</label>
+                    <div class="layui-input-block paddingDiv">
+                        <form:checkboxes path="ZSProjectList" lay-skin="primary" itemLabel="label" itemValue="value" htmlEscape="false" items="${fns:getMainDictList('decorate_project')}" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw6">
+                    <label class="layui-form-label">安装工程:</label>
+                    <div class="layui-input-block paddingDiv">
+                        <form:checkboxes path="AZProjectList" lay-skin="primary" itemLabel="label" itemValue="value" htmlEscape="false" items="${fns:getMainDictList('install_project')}" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw6">
+                    <label class="layui-form-label">市政工程:</label>
+                    <div class="layui-input-block paddingDiv">
+                        <form:checkboxes path="SZProjectList" lay-skin="primary" itemLabel="label" itemValue="value" htmlEscape="false" items="${fns:getMainDictList('services_project')}" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw6">
+                    <label class="layui-form-label">仿古园林工程:</label>
+                    <div class="layui-input-block paddingDiv">
+                        <form:checkboxes path="FGYLProjectList" lay-skin="primary" itemLabel="label" itemValue="value" htmlEscape="false" items="${fns:getMainDictList('park_project')}" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw6 with-textarea">
+                    <label class="layui-form-label double-line">其他专业工程咨询项目造价包含内容说明:</label>
+                    <div class="layui-input-block">
+                        <form:textarea path="QTProjec" htmlEscape="false" rows="4"  maxlength="255"  class="form-control "/>
+                    </div>
+                </div>
+            </div>
+
+            <div class="form-group layui-row page-end"></div>
+        </form:form>
+    </div>
+</div>
+
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+
+    layui.use(['table','form'], function(){
+
+        var form = layui.form;
+        form.render();
+
+        layui.form.on('select(cityfilter)',function(data) {
+            if (data.value == "") {
+                $('#city').html('<option value="">请选择工程所在地级市</option>');
+                $('#county').html('<option value="">请选择工程所在区县</option>')
+                layui.form.render("select");
+            } else {
+                $('#city').html('<option value="">请选择工程所在地级市</option>')
+                $('#county').html('<option value="">请选择工程所在区县</option>')
+                $.ajax({
+                    type:"post",
+                    url:'${ctx}/ruralProject/ruralProjectMessage/getArea',
+                    data:{"id":data.value},
+                    dataType:"json",
+                    async: false,
+                    success:function(data){
+                        if(data.success) {
+                            for (var info in data.data){
+                                $('#city').append(new Option(data.data[info].name,data.data[info].id));
+                            }
+                        }
+                    }
+                })
+                layui.form.render("select");
+            }
+        });
+
+        layui.form.on('select(quyufilter)',function(data) {
+            if (data.value == "") {
+                $('#county').html('<option value="">请选择工程所在区县</option>');
+                layui.form.render("select");
+            } else {
+                $('#county').html('<option value="">请选择工程所在区县</option>')
+                $.ajax({
+                    type:"post",
+                    url:'${ctx}/ruralProject/ruralProjectMessage/getArea',
+                    data:{"id":data.value},
+                    dataType:"json",
+                    async: false,
+                    success:function(data){
+                        if(data.success) {
+                            for (var info in data.data){
+                                $('#county').append(new Option(data.data[info].name,data.data[info].id));
+                            }
+                        }
+                    }
+                })
+                layui.form.render("select");
+            }
+        });
+
+    })
+</script>
+<script type="text/javascript">
+    var workClientBankRowIdx = 0,
+        workClientBankTpl = $("#workClientBankTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g, "");
+    $(document).ready(function () {
+        var dataBank = ${fns:toJson(ruralProjectRecordsReported.reportedConsultantList)};
+        for (var i = 0; i < dataBank.length; i++) {
+            addRow('#reportedConsultantList', workClientBankRowIdx, workClientBankTpl, dataBank[i]);
+            workClientBankRowIdx = workClientBankRowIdx + 1;
+        }
+    });
+
+</script>
+</body>
+</html>

+ 457 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/reportedView.jsp

@@ -0,0 +1,457 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+    <title>项目管理</title>
+    <meta name="decorator" content="default"/>
+    <script type="text/javascript" src="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.js"></script>
+    <script type="text/javascript" src="${ctxStatic}/iCheck/icheck.min.js"></script>
+    <link rel='stylesheet' type="text/css" href="${ctxStatic}/helloweba_editable-select/jquery.editable-select.min.css"/>
+    <style>
+        #projectDesc-error{
+            left:0;
+            top:82px;
+        }
+        .layui-layer-dialog{
+            background: red;
+        }
+        td input{
+            height: 42px !important;
+        }
+        .disables {
+            pointer-events: none;
+        }
+        .notDisables {
+            pointer-events: all;
+        }
+        .forbidden{
+             background-color:#c2c2c2;
+         }
+
+        .notForbidden{
+             background-color:#3ca2e0;
+         }
+        .paddingDiv span{
+            padding-left: 28px;
+        }
+        #reportedConsultantList tr td{
+            vertical-align: middle;
+            text-align:center;
+        }
+    </style>
+    <script type="text/javascript">
+        var validateForm;
+        var isMasterClient = true;//是否是委托方
+        var clientCount = 0;
+        function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+                $("#inputForm").submit();
+                return true;
+            }else{
+                parent.layer.msg("信息未填写完整!", {icon: 5});
+            }
+
+            return false;
+        }
+        $(document).ready(function() {
+            var radioVal ;
+            validateForm = $("#inputForm").validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $("#messageBox").text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+
+
+        });
+    </script>
+</head>
+<body>
+<div class="single-form">
+    <div class="list-form-tab contentShadow shadowLTR" id="tabDiv">
+        <ul class="list-tabs" >
+            <li><a href="${ctx}/ruralProject/ruralProjectMessage/modify?projectId=${projectId}&view=view&reportedId=${reportedId}">报告详情</a></li>
+            <li class="active"><a href="${ctx}/ruralProject/ruralProjectMessage/getReportedView?id=${reportedId}&projectId=${projectId}">上报信息详情</a></li>
+        </ul>
+    </div>
+    <div class="container">
+        <sys:message content="${message}"/>
+        <form:form id="inputForm" modelAttribute="ruralProjectRecordsReported" enctype="multipart/form-data" action="${ctx}/ruralProject/ruralProjectMessage/auditSaveReported" method="post" class="form-horizontal layui-form">
+            <form:hidden path="id"/>
+            <form:hidden path="projectId"/>
+
+            <form:hidden path="workContractInfo.client.id" id="contractClientId" value="${workContractInfo.client.id}"/>
+            <input type="hidden" id="flagFile" value="">
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>项目信息</h2></div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">咨询项目名称:</label>
+                    <div class="layui-input-block">
+                        <form:input path="ProjectName" htmlEscape="false" readonly="true" class="form-control layui-input" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">咨询项目负责人:</label>
+                    <div class="layui-input-block  with-icon">
+                        <input type="text" readonly="readonly" class="form-control layui-input" value="${ruralProjectRecordsReported.leaderNameStr}" style="background-color: #ffffff;">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">委托单位:</label>
+                    <div class="layui-input-block">
+                        <form:input path="WeiTuoDW" htmlEscape="false" readonly="true" class="form-control layui-input required" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">委托单位电话:</label>
+                    <div class="layui-input-block">
+                        <form:input path="LianXiDH" htmlEscape="false" readonly="true"  class="form-control layui-input required" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">投资性质:</label>
+                    <div class="layui-input-block">
+                        <form:input path="TouZiXZ" htmlEscape="false" readonly="true" class="form-control required layui-input" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">咨询项目类型:</label>
+                    <div class="layui-input-block">
+                        <form:input path="ProjectType" htmlEscape="false" readonly="true" class="form-control required layui-input" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">合同类型:</label>
+                    <div class="layui-input-block">
+                        <form:input path="HeTongLeiXing" htmlEscape="false" readonly="true" class="form-control required layui-input" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">合同编号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="ZiXunHTBH" htmlEscape="false" readonly="true" class="form-control layui-input required" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">项目报告号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="DangABH" htmlEscape="false" readonly="true" class="form-control layui-input required" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">出具报告日期:</label>
+                    <div class="layui-input-block">
+                        <form:input path="BaoGaoShuQianFaDate" htmlEscape="false" readonly="true" class="laydate-icondate required form-control layui-input layer-date laydate-icon" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">咨询营业收入(万元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="ZiXunShouRu" htmlEscape="false" readonly="true" onchange="zxChange()" class="form-control required layui-input" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">造价师注册证号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="zaoJiaShiZhengHao" htmlEscape="false" readonly="true" class="form-control required layui-input" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>咨询员</h2></div>
+                <div class="layui-item layui-col-sm12 lw6">
+                    <div class="layui-item nav-btns">
+                        <table id="bankinfo" class="table table-bordered table-condensed can-edit">
+                            <thead>
+                            <tr>
+                                <th width="60px">编号</th>
+                                <th >咨询员名称</th>
+                                <th >注册/资格证号</th>
+                                <th >本人负责内容</th>
+                                <th >完成营业收入比例(%)</th>
+                                <th >完成营业收入(元)</th>
+                            </tr>
+                            </thead>
+                            <tbody id="reportedConsultantList">
+                                <c:choose>
+                                    <c:when test="${not empty ruralProjectRecordsReported.reportedConsultantList}">
+                                        <c:forEach items="${ruralProjectRecordsReported.reportedConsultantList}" var="consultant" varStatus="status">
+                                            <tr>
+                                                <td>${status.index + 1}</td>
+                                                <td>${consultant.zixunyuanName}</td>
+                                                <td>${consultant.zhucezigezhID}</td>
+                                                <td>${consultant.wordnr}</td>
+                                                <td>${consultant.wcyysrbl}</td>
+                                                <td>${consultant.wcyysr}</td>
+
+                                            </tr>
+                                        </c:forEach>
+                                    </c:when>
+                                    <c:otherwise>
+                                        <tr>
+                                            <td colspan="6" align="center">暂无数据</td>
+                                        </tr>
+                                    </c:otherwise>
+                                </c:choose>
+                            </tbody>
+                        </table>
+                    </div>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>项目信息</h2></div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">工程所在省份</label>
+                    <div class="layui-input-block with-icon">
+                        <input type="text" readonly="readonly" class="form-control layui-input" value="${ruralProjectRecordsReported.province}" style="background-color: #ffffff;">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">工程所在地级市</label>
+                    <div class="layui-input-block">
+                        <input type="text" readonly="readonly" class="form-control layui-input" value="${ruralProjectRecordsReported.city}" style="background-color: #ffffff;">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">工程所在区县</label>
+                    <div class="layui-input-block">
+                        <input type="text" readonly="readonly" class="form-control layui-input" value="${ruralProjectRecordsReported.county}" style="background-color: #ffffff;">
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">工程结构:</label>
+                    <div class="layui-input-block">
+                        <form:input path="PorjectStruct" htmlEscape="false" readonly="true" class="form-control required layui-input" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">地上层数:</label>
+                    <div class="layui-input-block">
+                        <form:input path="FloorUp" htmlEscape="false" readonly="true" class="form-control layui-input number" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">底下层数:</label>
+                    <div class="layui-input-block">
+                        <form:input path="FloorDown" htmlEscape="false" readonly="true" class="form-control layui-input number" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">建筑面积或规模:</label>
+                    <div class="layui-input-block">
+                        <form:input path="GCGMValue" htmlEscape="false" readonly="true" class="form-control layui-input required number" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">计量单位:</label>
+                    <div class="layui-input-block">
+                        <form:input path="GCGMUnit" htmlEscape="false" readonly="true" class="form-control required layui-input" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">工程用途:</label>
+                    <div class="layui-input-block">
+                        <form:input path="PorjectUse" htmlEscape="false" readonly="true" class="form-control required layui-input" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">咨询标的额(万元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="ZiXunBDE" htmlEscape="false" readonly="true" class="form-control required layui-input number" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">其中土建造价(万元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="ZiXunBDETJ" htmlEscape="false" readonly="true" class="form-control layui-input" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">其中安装造价(万元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="ZiXunBDEAZ" htmlEscape="false" readonly="true" class="form-control layui-input" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">其中土建百分比(%):</label>
+                    <div class="layui-input-block">
+                        <form:input path="CalTJPercent" htmlEscape="false" class="form-control layui-input" readonly="true" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">其中安装百分比(%):</label>
+                    <div class="layui-input-block">
+                        <form:input path="CalAZPercent" htmlEscape="false" class="form-control layui-input" readonly="true" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">单位造价(元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="CalZZJUnit" htmlEscape="false" readonly="true" class="form-control layui-input" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">其中土建单位造价(元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="CalZZJTJUnit" htmlEscape="false" readonly="true" class="form-control layui-input" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">其中装修单位造价(元):</label>
+                    <div class="layui-input-block">
+                        <form:input path="CalZZJAZUnit" htmlEscape="false" class="form-control layui-input" readonly="true" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">合同价(元):</label>
+                    <div class="layui-input-block with-icon">
+                        <form:input path="HeTongJia" htmlEscape="false" readonly="true" class="form-control layui-input number" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">送审价(元):</label>
+                    <div class="layui-input-block with-icon">
+                        <form:input path="SongShenJia" htmlEscape="false" readonly="true" class="form-control required layui-input number" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">审定价(元):</label>
+                    <div class="layui-input-block with-icon">
+                        <form:input path="ShenDingJia" htmlEscape="false" readonly="true" class="form-control required layui-input number" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">审核增减额(元):</label>
+                    <div class="layui-input-block with-icon">
+                        <form:input path="JingHeJianE" htmlEscape="false"  class="form-control layui-input number" readonly="true" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">审核增减率(%):</label>
+                    <div class="layui-input-block with-icon">
+                        <form:input path="JingHeJianLv" htmlEscape="false"  class="form-control layui-input number" readonly="true" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>主要材料和人工消耗量指标</h2></div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">钢材用量(t):</label>
+                    <div class="layui-input-block">
+                        <form:input path="GCYL" htmlEscape="false" class="form-control layui-input number" readonly="true" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label">水泥用量(t):</label>
+                    <div class="layui-input-block">
+                        <form:input path="SNYL" htmlEscape="false" class="form-control layui-input number" readonly="true" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">预拌砼用量(m³):</label>
+                    <div class="layui-input-block">
+                        <form:input path="YBTYL" htmlEscape="false" class="form-control layui-input number" readonly="true" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">人工工日用量(工日):</label>
+                    <div class="layui-input-block">
+                        <form:input path="RGGRYL" htmlEscape="false" class="form-control layui-input number" readonly="true" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">钢材消耗指标(kg):</label>
+                    <div class="layui-input-block">
+                        <form:input path="GCYLPerUnit" htmlEscape="false" class="form-control layui-input number" readonly="true" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">水泥消耗指标(kg):</label>
+                    <div class="layui-input-block">
+                        <form:input path="SNYLPerUnit" htmlEscape="false" class="form-control layui-input number" readonly="true" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">预拌砼消耗指标(m³):</label>
+                    <div class="layui-input-block">
+                        <form:input path="YBTYLPerUnit" htmlEscape="false" class="form-control layui-input number" readonly="true" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6 lw6">
+                    <label class="layui-form-label double-line">人工工日消耗指标(工日):</label>
+                    <div class="layui-input-block">
+                        <form:input path="RGGRYLPerUnit" htmlEscape="false" class="form-control layui-input number" readonly="true" style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+            </div>
+
+            <div class="form-group layui-row first lw9">
+                <div class="form-group-label"><h2>咨询项目造价包含内容说明</h2></div>
+
+                <div class="layui-item layui-col-sm12 lw6">
+                    <label class="layui-form-label">土建工程:</label>
+                    <div class="layui-input-block paddingDiv">
+                        <form:checkboxes path="TJProjectList" lay-skin="primary" disabled="true" itemLabel="label" itemValue="value" htmlEscape="false" items="${fns:getMainDictList('civil_project')}" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw6">
+                    <label class="layui-form-label">装饰工程:</label>
+                    <div class="layui-input-block paddingDiv">
+                        <form:checkboxes path="ZSProjectList" lay-skin="primary" disabled="true" itemLabel="label" itemValue="value" htmlEscape="false" items="${fns:getMainDictList('decorate_project')}" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw6">
+                    <label class="layui-form-label">安装工程:</label>
+                    <div class="layui-input-block paddingDiv">
+                        <form:checkboxes path="AZProjectList" lay-skin="primary" disabled="true" itemLabel="label" itemValue="value" htmlEscape="false" items="${fns:getMainDictList('install_project')}" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw6">
+                    <label class="layui-form-label">市政工程:</label>
+                    <div class="layui-input-block paddingDiv">
+                        <form:checkboxes path="SZProjectList" lay-skin="primary" disabled="true" itemLabel="label" itemValue="value" htmlEscape="false" items="${fns:getMainDictList('services_project')}" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw6">
+                    <label class="layui-form-label">仿古园林工程:</label>
+                    <div class="layui-input-block paddingDiv">
+                        <form:checkboxes path="FGYLProjectList" lay-skin="primary" disabled="true" itemLabel="label" itemValue="value" htmlEscape="false" items="${fns:getMainDictList('park_project')}" />
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm12 lw6 with-textarea">
+                    <label class="layui-form-label double-line">其他专业工程咨询项目造价包含内容说明:</label>
+                    <div class="layui-input-block">
+                        <form:textarea path="QTProjec" htmlEscape="false" readonly="true" rows="4"  maxlength="255"  class="form-control " style="background-color: #ffffff;"/>
+                    </div>
+                </div>
+            </div>
+
+            <div class="form-group layui-row page-end"></div>
+        </form:form>
+    </div>
+</div>
+
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+
+    layui.use(['table','form'], function(){
+
+        var form = layui.form;
+        form.render();
+    })
+</script>
+</body>
+</html>

+ 11 - 2
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/ruralProjectMessageList.jsp

@@ -284,7 +284,7 @@
                 // {checkbox: true, fixed: true},
                 {field:'index',align:'center', fixed: 'left', title: '序号',width:40}
 				,{field:'projectReportNumber',align:'center', fixed: 'left', title: '报告号',minWidth:180,templet:function(d){
-						return "<a class=\"attention-info\" title=\"" + d.projectReportNumber + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看报告信息', '${ctx}/ruralProject/ruralProjectMessage/modify?projectId=" + d.id + "&view=view','95%', '95%')\">" + d.projectReportNumber + "</a>";
+						return "<a class=\"attention-info\" title=\"" + d.projectReportNumber + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看报告信息', '${ctx}/ruralProject/ruralProjectMessage/modify?projectId=" + d.id + "&view=view&reportedId="+d.id+"','95%', '95%')\">" + d.projectReportNumber + "</a>";
 					}}
                 ,{field:'projName',align:'center',fixed: 'left', title: '项目名称',minWidth:200,templet:function(d){
                         return "<a class=\"attention-info\" title=\"" + d.projName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目', '${ctx}/ruralProject/ruralProjectRecords/view?id=" + d.id +"','95%', '95%')\">" + d.projName + "</a>";
@@ -324,7 +324,7 @@
                 ,{align:'center', title: '上报状态',  width:90,templet:function(d){
                         var st = getReportedState(d.reportedState);
                         if(st.action)
-                            var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/ruralProject/ruralProjectMessage/getReportRecordProcessOne?processInstanceId=" + d.prrProcessInstanceId + "','95%','95%')\" class=\"new-status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+                            var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/ruralProject/ruralProjectMessage/getReportedProcess?processInstanceId=" + d.reportedProcessInstanceId + "','95%','95%')\" class=\"new-status-label status-label-" + st.label + "\" >" + st.status + "</span>";
                         else
                             var xml = "<span style=\"cursor:default;\" class=\"new-status-label status-label-" + st.label + "\" >" + st.status + "</span>";
                         return xml;
@@ -400,8 +400,16 @@
 									}
 								}else{
 									if(d.reportedState == 2){
+										xml+="<a href=\"${ctx}/ruralProject/ruralProjectMessage/cancelInvalidateByReported?id=" + d.id + "&processInstanceId=" + d.reportedProcessInstanceId + "\" onclick=\"return confirmx('确认要撤回该上报审批吗?', this.href)\" class=\"op-btn op-btn-cancel\" ><i class=\"glyphicon glyphicon-share-alt\"></i> 撤回上报</a>";
+									}
+									/*撤回修改*/
+									if(d.reportedState == 3){
 									xml+="<a href=\"#\" onclick=\"openDialogre('上报管理', '${ctx}/ruralProject/ruralProjectMessage/updateReported?id=" +  d.id + " ','95%', '95%','','上报,关闭')\" style='background-color: #1E9FFF' class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改上报</a>";
 									}
+									/*驳回修改*/
+									if(d.reportedState == 4){
+									xml+="<a href=\"#\" onclick=\"openDialogre('上报管理', '${ctx}/ruralProject/ruralProjectMessage/reportedModify?id=" +  d.id + " ','95%', '95%','','上报,关闭')\" style='background-color: #1E9FFF' class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改上报</a>";
+									}
 								}
 							}
 						}
@@ -433,6 +441,7 @@
                     ,"projectReportStatus":"${projectRecords.projectReportStatus}"
                     ,"projectReportRecordStatus":"${projectRecords.projectReportRecordStatus}"
                     ,"prrProcessInstanceId":"${projectRecords.prrProcessInstanceId}"
+                    ,"reportedProcessInstanceId":"${projectRecords.reportedProcessInstanceId}"
                     ,"prrId":"${projectRecords.prrId}"
                     ,"procId":"${projectRecords.processInstanceId}"
                     ,"projectReportName":"${projectRecords.projectReportName}"