Ver código fonte

合同动态汇总

蔡德晨 5 anos atrás
pai
commit
9fb5799d9c
24 arquivos alterados com 1198 adições e 60 exclusões
  1. 10 0
      src/main/java/com/jeeplus/modules/projectcontentinfo/service/ProjectcontentinfoService.java
  2. 15 5
      src/main/java/com/jeeplus/modules/projectcontentinfo/web/ProjectcontentinfoController.java
  3. 4 0
      src/main/java/com/jeeplus/modules/workcontent/common/WorkContentDetailFactory.java
  4. 3 1
      src/main/java/com/jeeplus/modules/workcontent/dao/WorkContentAltermanageDao.java
  5. 3 1
      src/main/java/com/jeeplus/modules/workcontent/dao/WorkContentClaimDao.java
  6. 23 0
      src/main/java/com/jeeplus/modules/workcontent/dao/WorkContentContractSumDao.java
  7. 1 0
      src/main/java/com/jeeplus/modules/workcontent/dao/WorkContentContractinfoDao.java
  8. 256 0
      src/main/java/com/jeeplus/modules/workcontent/entity/WorkContentContractSum.java
  9. 83 0
      src/main/java/com/jeeplus/modules/workcontent/service/WorkContentContractSumService.java
  10. 10 1
      src/main/java/com/jeeplus/modules/workcontent/service/WorkContentContractinfoService.java
  11. 243 0
      src/main/java/com/jeeplus/modules/workcontent/web/WorkContentContractSumController.java
  12. 7 4
      src/main/resources/jeeplus.properties
  13. 10 0
      src/main/resources/mappings/modules/workcontent/WorkContentAltermanageDao.xml
  14. 8 0
      src/main/resources/mappings/modules/workcontent/WorkContentClaimDao.xml
  15. 166 0
      src/main/resources/mappings/modules/workcontent/WorkContentContractSumDao.xml
  16. 10 0
      src/main/resources/mappings/modules/workcontent/WorkContentContractinfoDao.xml
  17. 1 0
      src/main/resources/mappings/modules/workcontent/WorkContentTypeDao.xml
  18. 3 3
      src/main/webapp/webpage/modules/projectcontentinfo/workContentForm.jsp
  19. 3 0
      src/main/webapp/webpage/modules/projectcontentinfo/workContentView.jsp
  20. 6 6
      src/main/webapp/webpage/modules/projectrecord/projectRecordsAudit.jsp
  21. 6 6
      src/main/webapp/webpage/modules/projectrecord/projectRecordsView.jsp
  22. 294 0
      src/main/webapp/webpage/modules/workcontent/workContentContractSumFormView.jsp
  23. 21 21
      src/main/webapp/webpage/modules/workcontent/workContentContractinfoForm.jsp
  24. 12 12
      src/main/webapp/webpage/modules/workcontent/workContentContractinfoFormView.jsp

+ 10 - 0
src/main/java/com/jeeplus/modules/projectcontentinfo/service/ProjectcontentinfoService.java

@@ -205,6 +205,16 @@ public class ProjectcontentinfoService extends CrudService<ProjectcontentinfoDao
 			projectContentDataService.save(projectContentData);
 			//保存工作内容详情
 			if(StringUtils.isNotBlank(projectContentData.getContentDetail())) {
+//				if(projectContentData.getType().equals("41")){
+//                     ProjectContentData projectContentData1 = new ProjectContentData();
+//					 projectContentData1.setCompanyId(contentinfo.getCompanyId());
+//					 projectContentData1.setOfficeId(contentinfo.getOfficeId());
+//					 projectContentData1.setProject(contentinfo.getProject());
+//                     projectContentData1.setType("100");
+//                     projectContentData1.setName(projectContentData.getName()+"动态汇总");
+//                     projectContentData1.setMaster(projectContentData.getMaster());
+//					 projectContentDataService.save(projectContentData1);
+//				}
 				WorkContentDetailBaseService detailService = WorkContentDetailFactory.getDetailService(projectContentData.getType());
 				if(detailService!=null)
 					detailService.saveDetails(URLDecoder.decode(projectContentData.getContentDetail(),"UTF-8"), projectContentData.getProject().getId(), projectContentData.getId());

+ 15 - 5
src/main/java/com/jeeplus/modules/projectcontentinfo/web/ProjectcontentinfoController.java

@@ -763,9 +763,19 @@ public class ProjectcontentinfoController extends BaseController {
 
 	@RequestMapping(value = {"save"})
 	public String save(Projectcontentinfo projectcontentinfo, HttpServletRequest request, HttpServletResponse response, Model model
-			,RedirectAttributes redirectAttributes)  {
-		try{
+			,RedirectAttributes redirectAttributes) throws Exception {
+//		try{
 			String str = projectcontentinfoService.saveData(projectcontentinfo,1);
+			if( projectcontentinfo.getProjectContentData() != null && StringUtils.isNotBlank(projectcontentinfo.getProjectContentData().getType())){
+				ProjectContentData projectContentData = projectcontentinfo.getProjectContentData();
+				projectContentData.setId("");
+				if("41".equals(projectcontentinfo.getProjectContentData().getType())){
+					projectContentData.setType("400");
+					projectContentData.setName(projectContentData.getName()+"动态汇总");
+					projectcontentinfo.setProjectContentData(projectContentData);
+					projectcontentinfoService.saveData(projectcontentinfo,1);
+				}
+			}
 			addMessage(redirectAttributes, "保存工作内容信息"+(str.equals("true")?"成功":"失败"));
 			if (str.equals("true")){
 				if (projectcontentinfo.getProjectBasedData()!=null){
@@ -799,9 +809,9 @@ public class ProjectcontentinfoController extends BaseController {
 					return "redirect:"+Global.getAdminPath()+"/projectcontentinfo/projectcontentinfo/?id="+projectcontentinfo.getId();
 				}
 			}
-		}catch (Exception e){
-			logger.error("ProjectcontentinfoController save Exception e"+e);
-		}
+//		}catch (Exception e){
+//			logger.error("ProjectcontentinfoController save Exception e"+e);
+//		}
 		if(UserUtils.isManager()){
 			model.addAttribute("flag","1");
 		}

+ 4 - 0
src/main/java/com/jeeplus/modules/workcontent/common/WorkContentDetailFactory.java

@@ -31,6 +31,8 @@ public class WorkContentDetailFactory {
     private static WorkContentClaimService contentClaimService = SpringContextHolder.getBean(WorkContentClaimService.class);
     //工程价款管理Service
     private static WorkContentProjectpriceService projectpriceService = SpringContextHolder.getBean(WorkContentProjectpriceService.class);
+    //合约动态生成
+    private static WorkContentContractSumService contractsumService = SpringContextHolder.getBean(WorkContentContractSumService.class);
 
     public static WorkContentDetailBaseService getDetailService(String type){
         switch (type){
@@ -62,6 +64,8 @@ public class WorkContentDetailFactory {
                 return budgetService;
             case "53":
                 return contentDocumentService;
+            case "400":
+                return contractsumService;
             default:
                 return null;
         }

+ 3 - 1
src/main/java/com/jeeplus/modules/workcontent/dao/WorkContentAltermanageDao.java

@@ -7,6 +7,8 @@ import com.jeeplus.common.persistence.CrudDao;
 import com.jeeplus.common.persistence.annotation.MyBatisDao;
 import com.jeeplus.modules.workcontent.entity.WorkContentAltermanage;
 
+import java.util.List;
+
 /**
  * 变更管理DAO接口
  * @author ssrh
@@ -15,5 +17,5 @@ import com.jeeplus.modules.workcontent.entity.WorkContentAltermanage;
 @MyBatisDao
 public interface WorkContentAltermanageDao extends CrudDao<WorkContentAltermanage> {
 
-	
+    List<WorkContentAltermanage> findByConId(String conId);
 }

+ 3 - 1
src/main/java/com/jeeplus/modules/workcontent/dao/WorkContentClaimDao.java

@@ -7,6 +7,8 @@ import com.jeeplus.common.persistence.CrudDao;
 import com.jeeplus.common.persistence.annotation.MyBatisDao;
 import com.jeeplus.modules.workcontent.entity.WorkContentClaim;
 
+import java.util.List;
+
 /**
  * 索赔管理DAO接口
  * @author ssrh
@@ -15,5 +17,5 @@ import com.jeeplus.modules.workcontent.entity.WorkContentClaim;
 @MyBatisDao
 public interface WorkContentClaimDao extends CrudDao<WorkContentClaim> {
 
-	
+    List<WorkContentClaim> findByConId(String conId);
 }

+ 23 - 0
src/main/java/com/jeeplus/modules/workcontent/dao/WorkContentContractSumDao.java

@@ -0,0 +1,23 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.workcontent.dao;
+
+import com.jeeplus.common.persistence.CrudDao;
+import com.jeeplus.common.persistence.annotation.MyBatisDao;
+import com.jeeplus.modules.workcontent.entity.WorkContentContractSum;
+import com.jeeplus.modules.workcontent.entity.WorkContentContractTerm;
+import com.jeeplus.modules.workcontent.entity.WorkContentContractinfo;
+
+import java.util.List;
+
+/**
+ * 合同动态汇总DAO接口
+ * @author ssrh
+ * @version 2018-06-12
+ */
+@MyBatisDao
+public interface WorkContentContractSumDao extends CrudDao<WorkContentContractSum> {
+
+
+}

+ 1 - 0
src/main/java/com/jeeplus/modules/workcontent/dao/WorkContentContractinfoDao.java

@@ -20,4 +20,5 @@ public interface WorkContentContractinfoDao extends CrudDao<WorkContentContracti
 
 
     List<WorkContentContractTerm> queryTerms(WorkContentContractinfo oldRecord);
+    List<WorkContentContractinfo> findByType(String cnumber);
 }

+ 256 - 0
src/main/java/com/jeeplus/modules/workcontent/entity/WorkContentContractSum.java

@@ -0,0 +1,256 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.workcontent.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.common.persistence.DataEntity;
+import com.jeeplus.common.utils.excel.annotation.ExcelField;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectContentData;
+import org.springframework.format.annotation.NumberFormat;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 合同登记Entity
+ * @author ssrh
+ * @version 2018-06-12
+ */
+public class WorkContentContractSum extends DataEntity<WorkContentContractSum> {
+
+	private static final long serialVersionUID = 1L;
+	private String projectId;		// 项目id
+	private String contentId;		// 工作内容ID
+	private String cnumber;		// 合同编号
+	private String contCate;		// 合同分类
+	private String contAttr;		// 合同属性
+	private String lettingAgent;		// 发包人
+	private String contractor;		// 承包人
+	private String scope;		// 合同范围
+	private Date signDate;		// 签约日期
+    @NumberFormat(style = NumberFormat.Style.CURRENCY)
+	private Double targetCost;		// 目标成本
+    @NumberFormat(style = NumberFormat.Style.CURRENCY)
+	private Double contractAmount;		// 合同金额
+	@NumberFormat(style = NumberFormat.Style.CURRENCY)
+	private Double budgetFee;     //预算金额
+	@NumberFormat(style = NumberFormat.Style.CURRENCY)
+	private Double settlementFee;     //结算金额
+	@NumberFormat(style = NumberFormat.Style.CURRENCY)
+	private Double visaChangeFee;      //签证变更金额
+	@NumberFormat(style = NumberFormat.Style.CURRENCY)
+	private Double supplementFee;      //补充协议
+	@NumberFormat(style = NumberFormat.Style.CURRENCY)
+	private Double contractDifference;    //合同调差
+	@NumberFormat(style = NumberFormat.Style.CURRENCY)
+	private Double claimFee;          //索赔金额
+	@NumberFormat(style = NumberFormat.Style.CURRENCY)
+	private Double deductionsParameter;   //扣款台账
+	@NumberFormat(style = NumberFormat.Style.CURRENCY)
+	private Double dynamicCost;          //动态成本
+	private Double withContractAmount;      //与合同金额相比增减
+	private Double withTargetCost;        //与目标成本相比增减
+
+	private WorkContentContractinfo contractinfo;    //合同信息
+
+	private String contractId;   //合同ID
+
+	public String getContractId() {
+		return contractId;
+	}
+
+	public void setContractId(String contractId) {
+		this.contractId = contractId;
+	}
+
+	public WorkContentContractSum() {
+		super();
+	}
+
+	public WorkContentContractSum(String id){
+		super(id);
+	}
+
+
+	public String getProjectId() {
+		return projectId;
+	}
+
+	public void setProjectId(String projectId) {
+		this.projectId = projectId;
+	}
+	
+
+	public String getContentId() {
+		return contentId;
+	}
+
+	public void setContentId(String contentId) {
+		this.contentId = contentId;
+	}
+
+
+	public String getCnumber() {
+		return cnumber;
+	}
+
+	public void setCnumber(String cnumber) {
+		this.cnumber = cnumber;
+	}
+
+	public String getContCate() {
+		return contCate;
+	}
+
+	public void setContCate(String contCate) {
+		this.contCate = contCate;
+	}
+
+	public String getContAttr() {
+		return contAttr;
+	}
+
+	public void setContAttr(String contAttr) {
+		this.contAttr = contAttr;
+	}
+
+	public String getLettingAgent() {
+		return lettingAgent;
+	}
+
+	public void setLettingAgent(String lettingAgent) {
+		this.lettingAgent = lettingAgent;
+	}
+
+	public String getContractor() {
+		return contractor;
+	}
+
+	public void setContractor(String contractor) {
+		this.contractor = contractor;
+	}
+
+	public String getScope() {
+		return scope;
+	}
+
+	public void setScope(String scope) {
+		this.scope = scope;
+	}
+
+	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+	public Date getSignDate() {
+		return signDate;
+	}
+
+	public void setSignDate(Date signDate) {
+		this.signDate = signDate;
+	}
+
+	public Double getTargetCost() {
+		return targetCost;
+	}
+
+	public void setTargetCost(Double targetCost) {
+		this.targetCost = targetCost;
+	}
+
+	public Double getContractAmount() {
+		return contractAmount;
+	}
+
+	public void setContractAmount(Double contractAmount) {
+		this.contractAmount = contractAmount;
+	}
+
+	public Double getBudgetFee() {
+		return budgetFee;
+	}
+
+	public void setBudgetFee(Double budgetFee) {
+		this.budgetFee = budgetFee;
+	}
+
+	public Double getSettlementFee() {
+		return settlementFee;
+	}
+
+	public void setSettlementFee(Double settlementFee) {
+		this.settlementFee = settlementFee;
+	}
+
+	public Double getVisaChangeFee() {
+		return visaChangeFee;
+	}
+
+	public void setVisaChangeFee(Double visaChangeFee) {
+		this.visaChangeFee = visaChangeFee;
+	}
+
+	public Double getSupplementFee() {
+		return supplementFee;
+	}
+
+	public void setSupplementFee(Double supplementFee) {
+		this.supplementFee = supplementFee;
+	}
+
+	public Double getContractDifference() {
+		return contractDifference;
+	}
+
+	public void setContractDifference(Double contractDifference) {
+		this.contractDifference = contractDifference;
+	}
+
+	public Double getClaimFee() {
+		return claimFee;
+	}
+
+	public void setClaimFee(Double claimFee) {
+		this.claimFee = claimFee;
+	}
+
+	public Double getDeductionsParameter() {
+		return deductionsParameter;
+	}
+
+	public void setDeductionsParameter(Double deductionsParameter) {
+		this.deductionsParameter = deductionsParameter;
+	}
+
+	public Double getDynamicCost() {
+		return dynamicCost;
+	}
+
+	public void setDynamicCost(Double dynamicCost) {
+		this.dynamicCost = dynamicCost;
+	}
+
+	public Double getWithContractAmount() {
+		return withContractAmount;
+	}
+
+	public void setWithContractAmount(Double withContractAmount) {
+		this.withContractAmount = withContractAmount;
+	}
+
+	public Double getWithTargetCost() {
+		return withTargetCost;
+	}
+
+	public void setWithTargetCost(Double withTargetCost) {
+		this.withTargetCost = withTargetCost;
+	}
+
+
+	public WorkContentContractinfo getContractinfo() {
+		return contractinfo;
+	}
+
+	public void setContractinfo(WorkContentContractinfo contractinfo) {
+		this.contractinfo = contractinfo;
+	}
+}

+ 83 - 0
src/main/java/com/jeeplus/modules/workcontent/service/WorkContentContractSumService.java

@@ -0,0 +1,83 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.workcontent.service;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.service.CrudService;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectContentData;
+import com.jeeplus.modules.workcontent.dao.WorkContentContractSumDao;
+import com.jeeplus.modules.workcontent.entity.WorkContentContractSum;
+import com.jeeplus.modules.workcontent.entity.WorkContentContractinfo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+/**
+ * 合同动态汇总Service
+ */
+@Service
+@Transactional(readOnly = true)
+public class WorkContentContractSumService extends CrudService<WorkContentContractSumDao, WorkContentContractSum> implements WorkContentDetailBaseService{
+
+	@Autowired
+	private WorkContentContractinfoService workContentContractinfoService;
+
+
+	public WorkContentContractSum get(String id) {
+		return super.get(id);
+	}
+	
+	public List<WorkContentContractSum> findList(WorkContentContractSum workContentContractSum) {
+		return super.findList(workContentContractSum);
+	}
+	
+	public Page<WorkContentContractSum> findPage(Page<WorkContentContractSum> page, WorkContentContractSum workContentContractSum) {
+		return super.findPage(page, workContentContractSum);
+	}
+	
+	@Transactional(readOnly = false)
+	public void save(WorkContentContractSum workContentContractSum) {
+		super.save(workContentContractSum);
+	}
+	
+	@Transactional(readOnly = false)
+	public void delete(WorkContentContractSum workContentContractSum) {
+		super.delete(workContentContractSum);
+	}
+
+
+    @Transactional(readOnly = false)
+    public void saveDetails(WorkContentContractinfo contractinfo) {
+        WorkContentContractSum workContentContractSum = new WorkContentContractSum();
+        workContentContractSum.setContractinfo(contractinfo);
+        double trueAmt = contractinfo.getTrueAmt();
+        workContentContractSum.setDynamicCost(trueAmt);
+        workContentContractSum.setContractId(contractinfo.getId());
+//        workContentContractSum.setWithContractAmount(0.00);
+//        workContentContractSum.setWithTargetCost(0.00);
+        this.save(workContentContractSum);
+    }
+
+	@Override
+	public void saveDetails(String detailStr, String projectId, String contentId) {
+		if(StringUtils.isBlank(detailStr)){
+			return;
+		}
+		WorkContentContractSum workContentContractSum = new WorkContentContractSum();
+		JSONObject jsonObject = JSON.parseObject(detailStr);
+		WorkContentContractinfo contractinfo = jsonObject.toJavaObject(WorkContentContractinfo.class);
+		String cnumber = contractinfo.getCnumber();
+		List<WorkContentContractinfo> byType = workContentContractinfoService.findByType(cnumber);
+		workContentContractSum.setContractId(byType.get(0).getId());
+		workContentContractSum.setProjectId(projectId);
+		workContentContractSum.setContentId(contentId);
+		this.save(workContentContractSum);
+
+	}
+}

+ 10 - 1
src/main/java/com/jeeplus/modules/workcontent/service/WorkContentContractinfoService.java

@@ -30,7 +30,12 @@ import com.jeeplus.modules.workcontent.dao.WorkContentContractinfoDao;
 public class WorkContentContractinfoService extends CrudService<WorkContentContractinfoDao, WorkContentContractinfo> implements WorkContentDetailBaseService{
 
     @Autowired
+    private WorkContentContractinfoDao workContentContractinfoDao;
+
+    @Autowired
     private WorkContentContractTermDao contractTermDao;
+    @Autowired
+    private WorkContentContractSumService workContentContractSumService;
 
 	public WorkContentContractinfo get(String id) {
 		return super.get(id);
@@ -43,7 +48,11 @@ public class WorkContentContractinfoService extends CrudService<WorkContentContr
 	public Page<WorkContentContractinfo> findPage(Page<WorkContentContractinfo> page, WorkContentContractinfo workContentContractinfo) {
 		return super.findPage(page, workContentContractinfo);
 	}
-	
+
+	public List<WorkContentContractinfo> findByType(String cnumber){
+	    return workContentContractinfoDao.findByType(cnumber);
+    }
+
 	@Transactional(readOnly = false)
 	public void save(WorkContentContractinfo workContentContractinfo) {
 		super.save(workContentContractinfo);

+ 243 - 0
src/main/java/com/jeeplus/modules/workcontent/web/WorkContentContractSumController.java

@@ -0,0 +1,243 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.modules.workcontent.web;
+
+import com.google.common.collect.Lists;
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.common.utils.MyBeanUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.utils.excel.ExportExcel;
+import com.jeeplus.common.utils.excel.ImportExcel;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.workcontent.dao.WorkContentAltermanageDao;
+import com.jeeplus.modules.workcontent.dao.WorkContentClaimDao;
+import com.jeeplus.modules.workcontent.entity.WorkContentAltermanage;
+import com.jeeplus.modules.workcontent.entity.WorkContentClaim;
+import com.jeeplus.modules.workcontent.entity.WorkContentContractSum;
+import com.jeeplus.modules.workcontent.service.WorkContentContractSumService;
+import org.apache.shiro.authz.annotation.Logical;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.ModelAttribute;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.ConstraintViolationException;
+import java.util.List;
+
+/**
+ * 合同登记Controller
+ * @author ssrh
+ * @version 2018-06-12
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/workcontent/workContentContractSum")
+public class WorkContentContractSumController extends BaseController {
+
+	@Autowired
+	private WorkContentContractSumService workContentContractSumService;
+	@Autowired
+	private WorkContentAltermanageDao workContentAltermanageDao;
+	@Autowired
+	private WorkContentClaimDao workContentClaimDao;
+	
+	@ModelAttribute
+	public WorkContentContractSum get(@RequestParam(required=false) String id) {
+		WorkContentContractSum entity = null;
+		if (StringUtils.isNotBlank(id)){
+			entity = workContentContractSumService.get(id);
+		}
+		if (entity == null){
+			entity = new WorkContentContractSum();
+		}
+		return entity;
+	}
+	
+	/**
+	 * 合同登记列表页面
+	 */
+	@RequiresPermissions("workcontent:workContentContractSum:list")
+	@RequestMapping(value = {"list", ""})
+	public String list(WorkContentContractSum workContentContractSum, HttpServletRequest request, HttpServletResponse response, Model model) {
+		Page<WorkContentContractSum> page = workContentContractSumService.findPage(new Page<WorkContentContractSum>(request, response), workContentContractSum); 
+		model.addAttribute("page", page);
+		return "modules/workcontent/workContentContractSumList";
+	}
+
+	/**
+	 * 查看,增加,编辑合同登记表单页面
+	 */
+	@RequestMapping(value = "form")
+	public String form(WorkContentContractSum workContentContractSum,String view, Model model) {
+		WorkContentContractSum oldRecord = null;
+		double alertFee = 0.00;
+		double claimFee = 0.00;
+		if(StringUtils.isNotBlank(workContentContractSum.getContentId())){
+			List<WorkContentContractSum> list = workContentContractSumService.findList(workContentContractSum);
+			if(list!=null&&!list.isEmpty()){
+				oldRecord = list.get(0);
+			}
+		}
+		if(oldRecord!=null){
+			String conId = oldRecord.getContentId();
+			List<WorkContentAltermanage> byConId = workContentAltermanageDao.findByConId(conId);
+			List<WorkContentClaim> byConId1 = workContentClaimDao.findByConId(conId);
+			if(byConId != null && byConId.size()>0){
+                for(WorkContentAltermanage workContentAltermanage : byConId){
+                	alertFee += workContentAltermanage.getSetAmt();
+				}
+			}
+			if(byConId1 != null && byConId1.size()>0){
+				for(WorkContentClaim workContentClaim : byConId1){
+					claimFee += workContentClaim.getSetAmt();
+				}
+			}
+			double contractAmount = oldRecord.getContractAmount();
+			double dynamicCost = contractAmount+alertFee+claimFee;
+			double withContractAmount = Math.abs(dynamicCost-contractAmount);
+			oldRecord.setContractAmount(contractAmount);
+			oldRecord.setDynamicCost(dynamicCost);
+			oldRecord.setWithContractAmount(withContractAmount);
+			oldRecord.setContractDifference(alertFee);
+			oldRecord.setClaimFee(claimFee);
+			if(oldRecord.getTargetCost() != null){
+				double withTargetCost = Math.abs( dynamicCost - oldRecord.getTargetCost());
+				oldRecord.setWithTargetCost(withTargetCost);
+			}
+			model.addAttribute("workContentContractSum", oldRecord);
+		}else {
+			model.addAttribute("workContentContractSum", workContentContractSum);
+		}
+		String viewPath = "modules/workcontent/workContentContractSumForm";
+		if("view".equals(view)){
+			viewPath+="View";
+		}
+		return viewPath;
+	}
+
+	/**
+	 * 保存合同登记
+	 */
+	@RequiresPermissions(value={"workcontent:workContentContractSum:add","workcontent:workContentContractSum:edit"},logical=Logical.OR)
+	@RequestMapping(value = "save")
+	public String save(WorkContentContractSum workContentContractSum, Model model, RedirectAttributes redirectAttributes) throws Exception{
+		if (!beanValidator(model, workContentContractSum)){
+			return form(workContentContractSum,null, model);
+		}
+		if(!workContentContractSum.getIsNewRecord()){//编辑表单保存
+			WorkContentContractSum t = workContentContractSumService.get(workContentContractSum.getId());//从数据库取出记录的值
+			MyBeanUtils.copyBeanNotNull2Bean(workContentContractSum, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+			workContentContractSumService.save(t);//保存
+		}else{//新增表单保存
+			workContentContractSumService.save(workContentContractSum);//保存
+		}
+		addMessage(redirectAttributes, "保存合同登记成功");
+		return "redirect:"+Global.getAdminPath()+"/workcontent/workContentContractSum/?repage";
+	}
+	
+	/**
+	 * 删除合同登记
+	 */
+	@RequiresPermissions("workcontent:workContentContractSum:del")
+	@RequestMapping(value = "delete")
+	public String delete(WorkContentContractSum workContentContractSum, RedirectAttributes redirectAttributes) {
+		workContentContractSumService.delete(workContentContractSum);
+		addMessage(redirectAttributes, "删除合同登记成功");
+		return "redirect:"+Global.getAdminPath()+"/workcontent/workContentContractSum/?repage";
+	}
+	
+	/**
+	 * 批量删除合同登记
+	 */
+	@RequiresPermissions("workcontent:workContentContractSum:del")
+	@RequestMapping(value = "deleteAll")
+	public String deleteAll(String ids, RedirectAttributes redirectAttributes) {
+		String idArray[] =ids.split(",");
+		for(String id : idArray){
+			workContentContractSumService.delete(workContentContractSumService.get(id));
+		}
+		addMessage(redirectAttributes, "删除合同登记成功");
+		return "redirect:"+Global.getAdminPath()+"/workcontent/workContentContractSum/?repage";
+	}
+	
+	/**
+	 * 导出excel文件
+	 */
+	@RequiresPermissions("workcontent:workContentContractSum:export")
+    @RequestMapping(value = "export", method=RequestMethod.POST)
+    public String exportFile(WorkContentContractSum workContentContractSum, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) {
+		try {
+            String fileName = "合同登记"+DateUtils.getDate("yyyyMMddHHmmss")+".xlsx";
+            Page<WorkContentContractSum> page = workContentContractSumService.findPage(new Page<WorkContentContractSum>(request, response, -1), workContentContractSum);
+    		new ExportExcel("合同登记", WorkContentContractSum.class).setDataList(page.getList()).write(response, fileName).dispose();
+    		return null;
+		} catch (Exception e) {
+			addMessage(redirectAttributes, "导出合同登记记录失败!失败信息:"+e.getMessage());
+		}
+		return "redirect:"+Global.getAdminPath()+"/workcontent/workContentContractSum/?repage";
+    }
+
+	/**
+	 * 导入Excel数据
+
+	 */
+	@RequiresPermissions("workcontent:workContentContractSum:import")
+    @RequestMapping(value = "import", method=RequestMethod.POST)
+    public String importFile(MultipartFile file, RedirectAttributes redirectAttributes) {
+		try {
+			int successNum = 0;
+			int failureNum = 0;
+			StringBuilder failureMsg = new StringBuilder();
+			ImportExcel ei = new ImportExcel(file, 1, 0);
+			List<WorkContentContractSum> list = ei.getDataList(WorkContentContractSum.class);
+			for (WorkContentContractSum workContentContractSum : list){
+				try{
+					workContentContractSumService.save(workContentContractSum);
+					successNum++;
+				}catch(ConstraintViolationException ex){
+					failureNum++;
+				}catch (Exception ex) {
+					failureNum++;
+				}
+			}
+			if (failureNum>0){
+				failureMsg.insert(0, ",失败 "+failureNum+" 条合同登记记录。");
+			}
+			addMessage(redirectAttributes, "已成功导入 "+successNum+" 条合同登记记录"+failureMsg);
+		} catch (Exception e) {
+			addMessage(redirectAttributes, "导入合同登记失败!失败信息:"+e.getMessage());
+		}
+		return "redirect:"+Global.getAdminPath()+"/workcontent/workContentContractSum/?repage";
+    }
+	
+	/**
+	 * 下载导入合同登记数据模板
+	 */
+	@RequiresPermissions("workcontent:workContentContractSum:import")
+    @RequestMapping(value = "import/template")
+    public String importFileTemplate(HttpServletResponse response, RedirectAttributes redirectAttributes) {
+		try {
+            String fileName = "合同登记数据导入模板.xlsx";
+    		List<WorkContentContractSum> list = Lists.newArrayList(); 
+    		new ExportExcel("合同登记数据", WorkContentContractSum.class, 1).setDataList(list).write(response, fileName).dispose();
+    		return null;
+		} catch (Exception e) {
+			addMessage(redirectAttributes, "导入模板下载失败!失败信息:"+e.getMessage());
+		}
+		return "redirect:"+Global.getAdminPath()+"/workcontent/workContentContractSum/?repage";
+    }
+	
+	
+	
+
+}

+ 7 - 4
src/main/resources/jeeplus.properties

@@ -6,8 +6,8 @@
 jdbc.type=mysql
 jdbc.driver=com.mysql.jdbc.Driver
 db.name=ruihuaoa-activity-data
-#jdbc.url=jdbc:mysql://192.168.2.4:3306/total_process_master?useUnicode=true&characterEncoding=utf-8
-jdbc.url=jdbc:mysql://127.0.0.1:3306/total_process_master?useUnicode=true&characterEncoding=utf-8
+jdbc.url=jdbc:mysql://192.168.2.4:3306/total_process_master?useUnicode=true&characterEncoding=utf-8
+#jdbc.url=jdbc:mysql://127.0.0.1:3306/total_process_master?useUnicode=true&characterEncoding=utf-8
 jdbc.username=root
 #jdbc.password=123456
 jdbc.password=root
@@ -243,6 +243,9 @@ yy_shcxurl=https://api.yonyoucloud.com/apis/dst/enterpriseTicketQuery/enterprise
 bos_access_key=9915286aab2949949b489e8ab3f70a09
 bos_secret_key=069036bdb93c4bc59c4995ccc543243e
 bos_endpoint=http://su.bcebos.com
-#bos_buck_name=newxgccpm
-bos_buck_name=xgccpm
+bos_buck_name=newxgccpm
+#bos_buck_name=xgccpm
+
+
+serverDomain=http://192.168.2.4:18080/total_process
 

+ 10 - 0
src/main/resources/mappings/modules/workcontent/WorkContentAltermanageDao.xml

@@ -66,6 +66,16 @@
 		</choose>
 	</select>
 	
+	<select id="findByConId" parameterType="String" resultType="WorkContentAltermanage">
+       SELECT
+		<include refid="workContentAltermanageColumns"/>
+		FROM work_content_altermanage a
+		<include refid="workContentAltermanageJoins"/>
+		<where>
+			a.cont_id = #{conId}
+		</where>
+	</select>
+	
 	<select id="findAllList" resultType="WorkContentAltermanage" >
 		SELECT 
 			<include refid="workContentAltermanageColumns"/>

+ 8 - 0
src/main/resources/mappings/modules/workcontent/WorkContentClaimDao.xml

@@ -39,6 +39,14 @@
 		<include refid="workContentClaimJoins"/>
 		WHERE a.id = #{id}
 	</select>
+
+	<select id="findByConId" resultType="WorkContentClaim" parameterType="String">
+		SELECT
+		<include refid="workContentClaimColumns"/>
+		FROM work_content_claim a
+		<include refid="workContentClaimJoins"/>
+		WHERE a.contract_id = #{conId}
+	</select>
 	
 	<select id="findList" resultType="WorkContentClaim" >
 		SELECT 

+ 166 - 0
src/main/resources/mappings/modules/workcontent/WorkContentContractSumDao.xml

@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.workcontent.dao.WorkContentContractSumDao">
+    
+	<sql id="infoColums">
+		a.id AS "id",
+		a.create_by AS "createBy.id",
+		a.create_date AS "createDate",
+		a.update_by AS "updateBy.id",
+		a.update_date AS "updateDate",
+		a.del_flag AS "delFlag",
+		b.project_id AS "projectId",
+		b.content_id AS "contentId",
+		b.cnumber AS "cnumber",
+		b.cont_cate AS "contCate",
+		b.cont_attr AS "contAttr",
+		b.letting_agent AS "lettingAgent",
+		b.contractor AS "contractor",
+		b.scope AS "scope",
+		b.sign_date AS "signDate",
+		b.titular_amt AS "targetCost",
+        b.true_amt AS "contractAmount"
+--         a.budget_fee AS "budgetFee",
+--         a.settlement_fee AS "settlementFee",
+--         a.visa_change_fee AS "visaChangeFee",
+--         a.supplement_fee AS "supplementFee",
+--         a.contract_difference AS "contractDifference",
+--         a.claim_fee AS "claimFee" ,
+--         a.deductions_parameter AS "deductionsParameter",
+--         a.dynamic_cost AS "dynamicCost",
+--         a.with_contract_amount AS "withContractAmount" ,
+--         a.with_target_cost AS "withTargetCost"
+	</sql>
+	
+	<!--<sql id="workContentContractinfoJoins">-->
+		<!--LEFT JOIN  project_content_data pd ON pd.id = a.program_id-->
+	<!--</sql>-->
+	
+    
+	<select id="get" resultType="WorkContentContractSum" >
+		SELECT 
+			<include refid="infoColums"/>
+		FROM work_content_contractsum a
+		LEFT JOIN work_content_contractinfo b on a.contract_id =  b.id
+
+		WHERE a.id = #{id}
+	</select>
+	
+	<select id="findList" resultType="WorkContentContractSum" >
+		SELECT 
+			<include refid="infoColums"/>
+		FROM work_content_contractsum a
+		LEFT JOIN work_content_contractinfo b on a.contract_id =  b.id
+		<where>
+			a.del_flag = #{DEL_FLAG_NORMAL}
+			<if test="projectId != null and projectId != ''">
+				AND a.project_id = #{projectId}
+			</if>
+			<if test="contentId != null and contentId != ''">
+				AND a.content_id = #{contentId}
+			</if>
+		</where>
+		<choose>
+			<when test="page !=null and page.orderBy != null and page.orderBy != ''">
+				ORDER BY ${page.orderBy}
+			</when>
+			<otherwise>
+				ORDER BY a.update_date DESC
+			</otherwise>
+		</choose>
+	</select>
+	
+	<!--<select id="findAllList" resultType="WorkContentContractinfo" >-->
+		<!--SELECT -->
+			<!--<include refid="infoColums"/>-->
+		<!--FROM work_content_contractsum a-->
+		<!--<include refid="workContentContractinfoJoins"/>-->
+		<!--<where>-->
+			<!--a.del_flag = #{DEL_FLAG_NORMAL}-->
+		<!--</where>		-->
+		<!--<choose>-->
+			<!--<when test="page !=null and page.orderBy != null and page.orderBy != ''">-->
+				<!--ORDER BY ${page.orderBy}-->
+			<!--</when>-->
+			<!--<otherwise>-->
+				<!--ORDER BY a.update_date DESC-->
+			<!--</otherwise>-->
+		<!--</choose>-->
+	<!--</select>-->
+	
+	<insert id="insert">
+		INSERT INTO work_content_contractsum(
+			id,
+			create_by,
+			create_date,
+			update_by,
+			update_date,
+			del_flag,
+            project_id,
+            content_id,
+            contract_id
+		) VALUES (
+			#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{delFlag},
+            #{projectId},
+            #{contentId},
+			#{contractId}
+		)
+	</insert>
+	
+	<update id="update">
+		UPDATE work_content_contractsum SET
+			update_by = #{updateBy.id},
+			update_date = #{updateDate},
+			remarks = #{remarks},
+			project_id = #{projectId},
+			content_id = #{contentId},
+			program_id = #{program.id},
+			cnumber = #{cnumber},
+			cont_cate = #{contCate},
+			cont_attr = #{contAttr},
+			letting_agent = #{lettingAgent},
+			contractor = #{contractor},
+			scope = #{scope},
+			sign_date = #{signDate},
+			target_cost = #{targetCost},
+            contract_amount = #{contractAmount},
+            budget_fee = #{budgetFee},
+            settlement_fee = #{settlementFee},
+            visaChange_fee = #{visaChangeFee},
+            supplement_fee = #{supplementFee},
+            contract_difference = #{contractDifference},
+            claim_fee  = #{claimFee},
+            deductions_parameter = #{deductionsParameter},
+            dynamic_cost = #{dynamicCost},
+            with_contract_amount = #{withContractAmount},
+            with_target_cost = #{withTargetCost}
+
+		WHERE id = #{id}
+	</update>
+	
+	
+	<!--物理删除-->
+	<update id="delete">
+		DELETE FROM work_content_contractsum
+		WHERE id = #{id}
+	</update>
+	
+	<!--逻辑删除-->
+	<update id="deleteByLogic">
+		UPDATE work_content_contractsum SET 
+			del_flag = #{DEL_FLAG_DELETE}
+		WHERE id = #{id}
+	</update>
+	
+	
+	<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
+	<select id="findUniqueByProperty" resultType="WorkContentContractSum" statementType="STATEMENT">
+		select * FROM work_content_contractsum  where ${propertyName} = '${value}'
+	</select>
+
+</mapper>

+ 10 - 0
src/main/resources/mappings/modules/workcontent/WorkContentContractinfoDao.xml

@@ -72,6 +72,16 @@
 			</otherwise>
 		</choose>
 	</select>
+
+	<select id="findByType" resultType="WorkContentContractinfo" parameterType="String">
+		SELECT
+		a.id
+		FROM work_content_contractinfo a
+		<where>
+			a.cnumber = #{cnumber}
+		</where>
+		order by a.create_date DESC
+	</select>
 	
 	<select id="findAllList" resultType="WorkContentContractinfo" >
 		SELECT 

+ 1 - 0
src/main/resources/mappings/modules/workcontent/WorkContentTypeDao.xml

@@ -34,6 +34,7 @@
 		FROM work_content_type a
 		<include refid="workContentTypeJoins"/>
 		<where>
+		     a.del_flag = '0'
 			<if test="typeId !=null and typeId != ''">
                 AND a.type_id = #{typeId}
             </if>

+ 3 - 3
src/main/webapp/webpage/modules/projectcontentinfo/workContentForm.jsp

@@ -50,9 +50,9 @@
 
         $(function() {
             var editVal = '${projectcontentinfo.edit}';
-            if('edit'==editVal){
-                parent.parent.refreshTrees();
-            }
+            // if('edit'==editVal){
+            //     parent.parent.refreshTrees();
+            // }
 
             if($("#createDate").val()==null || $("#createDate").val()==''){
                 $("#createDate").val(getNowFormatDate());

+ 3 - 0
src/main/webapp/webpage/modules/projectcontentinfo/workContentView.jsp

@@ -193,6 +193,9 @@
                 case '53':
                     $("#contentDetail").load("${ctx}/workcontent/workContentDocument/form",param2);
                     break;
+                case '400':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentContractSum/form",param2);
+                    break;
                 default:
                     detailFlag=0;
                     $("#contentDetail").html("");

+ 6 - 6
src/main/webapp/webpage/modules/projectrecord/projectRecordsAudit.jsp

@@ -277,19 +277,19 @@
 				<div class="layui-item layui-col-sm6 lw7">
 					<label class="layui-form-label double-line"><span class="require-item">*</span>咨询标的额(万元):</label>
 					<div class="layui-input-block">
-						<form:input path="totalFees" htmlEscape="false" id="totalFees" class="form-control layui-input required number"  readonly="true"/>
+						<input value="<fmt:formatNumber value="${projectRecords.totalFees}" pattern="#,##0.00#"/>" htmlEscape="false" id="totalFees" class="form-control layui-input required number"  readonly="true"/>
 					</div>
 				</div>
 				<div class="layui-item layui-col-sm6 lw7">
 					<label class="layui-form-label double-line">其中土建造价(万元):</label>
 					<div class="layui-input-block">
-						<form:input path="buildingFees" htmlEscape="false" id="buildingFees" class="form-control layui-input" readonly="true"/>
+						<input   value="<fmt:formatNumber value="${projectRecords.buildingFees}" pattern="#,##0.00#"/>" htmlEscape="false" id="buildingFees" class="form-control layui-input" readonly="true"/>
 					</div>
 				</div>
 				<div class="layui-item layui-col-sm6 lw7">
 					<label class="layui-form-label double-line">其中安装造价(万元):</label>
 					<div class="layui-input-block">
-						<form:input path="installFees" htmlEscape="false" id="installFees" class="form-control layui-input" readonly="true"/>
+						<input  value="<fmt:formatNumber value="${projectRecords.installFees}" pattern="#,##0.00#"/>" htmlEscape="false" id="installFees" class="form-control layui-input" readonly="true"/>
 					</div>
 				</div>
 				<div class="layui-item layui-col-sm6 lw7">
@@ -307,19 +307,19 @@
 				<div class="layui-item layui-col-sm6 lw7">
 					<label class="layui-form-label">单位造价(元):</label>
 					<div class="layui-input-block">
-						<form:input path="unitFees" htmlEscape="false" id="unitFees" class="form-control layui-input" readonly="true"/>
+						<input value="<fmt:formatNumber value="${projectRecords.unitFees}" pattern="#,##0.00#"/>" htmlEscape="false" id="unitFees" class="form-control layui-input" readonly="true"/>
 					</div>
 				</div>
 				<div class="layui-item layui-col-sm6 lw7">
 					<label class="layui-form-label double-line">土建单位造价(元):</label>
 					<div class="layui-input-block">
-						<form:input path="buildingUnitFees" htmlEscape="false" id="buildingUnitFees" class="form-control layui-input" readonly="true"/>
+						<input  value="<fmt:formatNumber value="${projectRecords.buildingUnitFees}" pattern="#,##0.00#"/>" htmlEscape="false" id="buildingUnitFees" class="form-control layui-input" readonly="true"/>
 					</div>
 				</div>
 				<div class="layui-item layui-col-sm6 lw7">
 					<label class="layui-form-label double-line">安装单位造价(元):</label>
 					<div class="layui-input-block">
-						<form:input path="installUnitFees" htmlEscape="false" id="installUnitFees" class="form-control layui-input" readonly="true"/>
+						<input  value="<fmt:formatNumber value="${projectRecords.installUnitFees}" pattern="#,##0.00#"/>" htmlEscape="false" id="installUnitFees" class="form-control layui-input" readonly="readonly"/>
 					</div>
 				</div>
 				<div class="layui-item layui-col-sm6 lw6 with-textarea">

+ 6 - 6
src/main/webapp/webpage/modules/projectrecord/projectRecordsView.jsp

@@ -233,19 +233,19 @@
 				<div class="layui-item layui-col-sm6 lw7">
 					<label class="layui-form-label double-line"><span class="require-item">*</span>咨询标的额(万元):</label>
 					<div class="layui-input-block">
-						<form:input path="totalFees" htmlEscape="false" id="totalFees" class="form-control layui-input required number"  readonly="true"/>
+						<input value="<fmt:formatNumber value="${projectRecords.totalFees}" pattern="#,##0.00#"/>" htmlEscape="false" id="totalFees" class="form-control layui-input required number"  readonly="true"/>
 					</div>
 				</div>
 				<div class="layui-item layui-col-sm6 lw7">
 					<label class="layui-form-label double-line">其中土建造价(万元):</label>
 					<div class="layui-input-block">
-						<form:input path="buildingFees" htmlEscape="false" id="buildingFees" class="form-control layui-input" readonly="true"/>
+						<input   value="<fmt:formatNumber value="${projectRecords.buildingFees}" pattern="#,##0.00#"/>" htmlEscape="false" id="buildingFees" class="form-control layui-input" readonly="true"/>
 					</div>
 				</div>
 				<div class="layui-item layui-col-sm6 lw7">
 					<label class="layui-form-label double-line">其中安装造价(万元):</label>
 					<div class="layui-input-block">
-						<form:input path="installFees" htmlEscape="false" id="installFees" class="form-control layui-input" readonly="true"/>
+						<input  value="<fmt:formatNumber value="${projectRecords.installFees}" pattern="#,##0.00#"/>" htmlEscape="false" id="installFees" class="form-control layui-input" readonly="true"/>
 					</div>
 				</div>
 				<div class="layui-item layui-col-sm6 lw7">
@@ -263,19 +263,19 @@
 				<div class="layui-item layui-col-sm6 lw7">
 					<label class="layui-form-label">单位造价(元):</label>
 					<div class="layui-input-block">
-						<form:input path="unitFees" htmlEscape="false" id="unitFees" class="form-control layui-input" readonly="true"/>
+						<input value="<fmt:formatNumber value="${projectRecords.unitFees}" pattern="#,##0.00#"/>" htmlEscape="false" id="unitFees" class="form-control layui-input" readonly="true"/>
 					</div>
 				</div>
 				<div class="layui-item layui-col-sm6 lw7">
 					<label class="layui-form-label double-line">土建单位造价(元):</label>
 					<div class="layui-input-block">
-						<form:input path="buildingUnitFees" htmlEscape="false" id="buildingUnitFees" class="form-control layui-input" readonly="true"/>
+						<input  value="<fmt:formatNumber value="${projectRecords.buildingUnitFees}" pattern="#,##0.00#"/>" htmlEscape="false" id="buildingUnitFees" class="form-control layui-input" readonly="true"/>
 					</div>
 				</div>
 				<div class="layui-item layui-col-sm6 lw7">
 					<label class="layui-form-label double-line">安装单位造价(元):</label>
 					<div class="layui-input-block">
-						<form:input path="installUnitFees" htmlEscape="false" id="installUnitFees" class="form-control layui-input" readonly="true"/>
+						<input  value="<fmt:formatNumber value="${projectRecords.installUnitFees}" pattern="#,##0.00#"/>" htmlEscape="false" id="installUnitFees" class="form-control layui-input" readonly="readonly"/>
 					</div>
 				</div>
 				<div class="layui-item layui-col-sm6 lw6 with-textarea">

+ 294 - 0
src/main/webapp/webpage/modules/workcontent/workContentContractSumFormView.jsp

@@ -0,0 +1,294 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<form:form id="subForm" modelAttribute="workContentContractSum" action="#" method="post" class="form-horizontal">
+    <form:hidden path="id"/>
+    <div class="form-group layui-row lw12">
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>合同编号:</label>
+            <div class="layui-input-block">
+                <form:input path="cnumber" htmlEscape="false"  readonly="true"  class="form-control layui-input required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>合同分类:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input"
+                   <c:forEach items="${fns:getDictList('content_contract_type')}" var="item">
+                        <c:set var="typename" value="content_contract_type_${item.value}"></c:set>
+                        <c:forEach items="${fns:getDictList(typename)}" var="item2">
+                            <c:if test="${workContentContractSum.contCate eq item2.value}">value="${item2.label}"</c:if>
+                        </c:forEach>
+                    </c:forEach>/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>合同属性:</label>
+            <div class="layui-input-block">
+                <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getMainDictLabel(workContentContractSum.contAttr, 'content_contract_attr', '')}"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>发包人:</label>
+            <div class="layui-input-block">
+                <form:input path="lettingAgent" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label"><span class="require-item">*</span>承包人:</label>
+            <div class="layui-input-block">
+                <form:input path="contractor" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
+            </div>
+        </div>
+    </div>
+
+    <div class="form-group layui-row lw12">
+        <div class="form-group-label"><h2>详情信息</h2></div>
+        <div class="layui-item layui-col-sm12 with-textarea">
+            <label class="layui-form-label">合同范围:</label>
+            <div class="layui-input-block">
+                <form:textarea path="scope" htmlEscape="false" rows="3" readonly="true" class="form-control required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label">签约日期:</label>
+            <div class="layui-input-block">
+                <input type="text" maxlength="20" readonly="true" class="form-control layui-input"
+                       value="<fmt:formatDate value="${workContentContractSum.signDate}" pattern="yyyy-MM-dd"/>"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6">
+            <label class="layui-form-label ">目标成本(元):</label>
+            <div class="layui-input-block">
+                <input name="titularAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.targetCost}" pattern="#,##0.00#"/>" class="form-control layui-input number"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6 double-line">
+            <label class="layui-form-label">合同金额(元):</label>
+            <div class="layui-input-block">
+                <input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.contractAmount}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6 double-line">
+            <label class="layui-form-label">预算金额(元):</label>
+            <div class="layui-input-block">
+                <input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.budgetFee}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6 double-line">
+            <label class="layui-form-label">结算金额(元):</label>
+            <div class="layui-input-block">
+                <input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.settlementFee}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6 double-line">
+            <label class="layui-form-label">签证变更(元):</label>
+            <div class="layui-input-block">
+                <input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.visaChangeFee}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6 double-line">
+            <label class="layui-form-label">补充协议(元):</label>
+            <div class="layui-input-block">
+                <input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.supplementFee}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6 double-line">
+            <label class="layui-form-label">合同调差(元):</label>
+            <div class="layui-input-block">
+                <input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.contractDifference}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6 double-line">
+            <label class="layui-form-label">索赔管理(元):</label>
+            <div class="layui-input-block">
+                <input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.claimFee}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6 double-line">
+            <label class="layui-form-label">扣款台账(元):</label>
+            <div class="layui-input-block">
+                <input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.deductionsParameter}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6 double-line">
+            <label class="layui-form-label double-line">动态成本金额(元):</label>
+            <div class="layui-input-block">
+                <input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.dynamicCost}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6 double-line">
+            <label class="layui-form-label double-line">与合同金额相比增减(元):</label>
+            <div class="layui-input-block">
+                <input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.withContractAmount}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>
+            </div>
+        </div>
+        <div class="layui-item layui-col-sm6 double-line">
+            <label class="layui-form-label double-line">与目标成本相比增减(元):</label>
+            <div class="layui-input-block">
+                <input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractSum.withTargetCost}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>
+            </div>
+        </div>
+
+
+
+    </div>
+
+</form:form>
+
+
+<script type="text/template" id="termTpl">//<!--
+        <tr id="termList{{idx}}">
+            <td style='text-align:center;'>
+                {{row.title}}
+            </td>
+            <td style='text-align:center;'>
+                {{row.content}}
+            </td>
+            <td style='text-align:center;'>
+                {{row.tnumber}}
+            </td>
+        </tr>//-->
+</script>
+<script type="text/javascript">
+    var termIdx = 0, termTpl = $("#termTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+    var validateForm;
+    var validateForm2;
+    jQuery.validator.addMethod("percent", function(value, element) {
+        var length = value.length;
+        var phone = /^(100|[1-9]?\d(\.\d\d?)?)%$/;
+        return this.optional(element) || (phone.test(value));
+    }, "请填写正确的百分数");
+    $(document).ready(function() {
+        validateForm = $("#subForm").validate({
+            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);
+                }
+            }
+        });
+
+       validateForm2 = $("#termForm").validate({
+            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);
+                }
+            }
+        });
+
+        laydate.render({
+            elem: '#signDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#effectDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#startWorkDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#endWorkDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#startDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+        laydate.render({
+            elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+            event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+        });
+
+        <%--var data = ${fns:toJson(workContentContractSum.termList)};--%>
+        <%--if(data!=null) {--%>
+            <%--for (var i = 0; i < data.length; i++) {--%>
+                <%--addRowTerm('#termTableList', termIdx, termTpl, data[i]);--%>
+            <%--}--%>
+        <%--}--%>
+    });
+
+    function addRowTerm(list, idx, tpl, row){
+        bornTemplete(list, idx, tpl, row, idx);
+        termIdx +=1;
+    }
+
+    function bornTemplete(list, idx, tpl, row, idx1){
+        var idx1 = $("#termTableList tr").length +1;
+        $(list).append(Mustache.render(tpl, {
+            idx: idx, delBtn: true, row: row,
+            order:idx1 + 1, idx1:idx1
+        }));
+        $(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 delRow(obj, prefix,idx){
+        var id = $(prefix+"_id");
+        var delFlag = $(prefix+"_delFlag");
+        if(id.val()==null||id.val()==''){
+            $(obj).parent().parent().remove();
+        }else {
+            delFlag.val("1");
+            $(obj).parent().parent().hide();
+        }
+    }
+
+    function genDetailStr(){
+        var contractJson = $("#subForm").serializeJson();
+        var termJson = genTermJson();
+        if(termJson!=null){
+            console.log(termJson);
+            contractJson["termList"]=JSON.parse(termJson);
+        }
+        console.log(contractJson);
+        return JSON.stringify(contractJson);
+    }
+
+    function genTermJson(){
+        var costList = $("#termTableList tr");
+        if(costList.length==0){
+            return null;
+        }
+        var contentStr = "[";
+        for(var j=0; j<costList.length;j++){
+            contentStr+="{"
+            var idstr = $(costList[j]).attr("id");
+            var detail = $("tr[id="+idstr+"] .contentDetail");
+            for(var i=0; i<detail.length;i++){
+                contentStr+='"'
+                contentStr+=$(detail[i]).attr("subName");
+                contentStr+='"'
+                contentStr+=":";
+                contentStr+='"'
+                contentStr+=$(detail[i]).val();
+                contentStr+='"'
+                if(i!=detail.length-1){
+                    contentStr+=","
+                }
+            }
+            contentStr+="}"
+            if(j!=costList.length-1){
+                contentStr+=","
+            }
+        }
+        contentStr += "]";
+        return contentStr;
+    }
+</script>

+ 21 - 21
src/main/webapp/webpage/modules/workcontent/workContentContractinfoForm.jsp

@@ -4,7 +4,7 @@
     <form:hidden path="id"/>
     <div class="form-group layui-row lw12">
         <div class="layui-item layui-col-sm6">
-            <label class="layui-form-label">合约规划名称:</label>
+            <label class="layui-form-label"><span class="require-item">*</span>合约规划名称:</label>
             <div class="layui-input-block with-icon">
                 <sys:gridselectProjcontent url="${ctx}/projectcontentinfo/projectContentData/selectcontent" id="programId" name="program.id"  value="${workContentContractinfo.program.id}"  title="选择合约规划名称" labelName="program.name"
                                            labelValue="${workContentContractinfo.program.name}" cssClass="form-control layui-input required" projectId="${workContentContractinfo.projectId}" type="31" fieldLabels="" fieldKeys="" searchLabel="${fns:urlEncode('合约名称')}" searchKey="" ></sys:gridselectProjcontent>
@@ -55,9 +55,9 @@
     <div class="form-group layui-row lw12">
         <div class="form-group-label"><h2>详情信息</h2></div>
         <div class="layui-item layui-col-sm12 with-textarea">
-            <label class="layui-form-label"><span class="require-item">*</span>合同范围:</label>
+            <label class="layui-form-label">合同范围:</label>
             <div class="layui-input-block">
-                <form:textarea path="scope" htmlEscape="false" rows="3"  maxlength="255"  class="form-control required"/>
+                <form:textarea path="scope" htmlEscape="false" rows="3"  maxlength="255"  class="form-control "/>
             </div>
         </div>
         <div class="layui-item layui-col-sm6">
@@ -68,28 +68,28 @@
             </div>
         </div>
         <div class="layui-item layui-col-sm6">
-            <label class="layui-form-label"><span class="require-item">*</span>生效日期:</label>
+            <label class="layui-form-label">生效日期:</label>
             <div class="layui-input-block">
-                <input id="effectDate" name="effectDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                <input id="effectDate" name="effectDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon "
                        value="<fmt:formatDate value="${workContentContractinfo.effectDate}" pattern="yyyy-MM-dd"/>"/>
             </div>
         </div>
         <div class="layui-item layui-col-sm6">
-            <label class="layui-form-label">名义合同金额(元):</label>
+            <label class="layui-form-label ">目标成本(元):</label>
             <div class="layui-input-block">
                 <input name="titularAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentContractinfo.titularAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);"  class="form-control layui-input number"/>
             </div>
         </div>
         <div class="layui-item layui-col-sm6">
-            <label class="layui-form-label"><span class="require-item">*</span>有效合同金额(元):</label>
+            <label class="layui-form-label double-line"><span class="require-item">*</span>有效合同金额(元):</label>
             <div class="layui-input-block">
                 <input name="trueAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentContractinfo.trueAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);"  class="form-control layui-input number required"/>
             </div>
         </div>
         <div class="layui-item layui-col-sm6">
-            <label class="layui-form-label"><span class="require-item">*</span>保修金比例(%):</label>
+            <label class="layui-form-label">保修金比例(%):</label>
             <div class="layui-input-block">
-                <form:input path="pledgePercent" htmlEscape="false"    class="form-control layui-input required number"/>
+                <form:input path="pledgePercent" htmlEscape="false"    class="form-control layui-input  number"/>
             </div>
         </div>
         <div class="layui-item layui-col-sm6">
@@ -100,22 +100,22 @@
             </div>
         </div>
         <div class="layui-item layui-col-sm6">
-            <label class="layui-form-label"><span class="require-item">*</span>合同竣工日期:</label>
+            <label class="layui-form-label">合同竣工日期:</label>
             <div class="layui-input-block">
-                <input id="endWorkDate" name="endWorkDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                <input id="endWorkDate" name="endWorkDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon "
                        value="<fmt:formatDate value="${workContentContractinfo.endWorkDate}" pattern="yyyy-MM-dd"/>"/>
             </div>
         </div>
         <div class="layui-item layui-col-sm6">
-            <label class="layui-form-label"><span class="require-item">*</span>止付比例(%):</label>
+            <label class="layui-form-label">止付比例(%):</label>
             <div class="layui-input-block">
-                <form:input path="stopPercent" htmlEscape="false"    class="form-control layui-input required number"/>
+                <form:input path="stopPercent" htmlEscape="false"    class="form-control layui-input  number"/>
             </div>
         </div>
         <div class="layui-item layui-col-sm6">
-            <label class="layui-form-label"><span class="require-item">*</span>止付金额:</label>
+            <label class="layui-form-label">止付金额:</label>
             <div class="layui-input-block">
-                <input name="stopAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentContractinfo.stopAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);"  class="form-control layui-input required number"/>
+                <input name="stopAmt" htmlEscape="false"  value="<fmt:formatNumber value="${workContentContractinfo.stopAmt}" pattern="#,##0.00#"/>" onchange="formatNum(this);"  class="form-control layui-input  number"/>
             </div>
         </div>
         <div class="layui-item layui-col-sm6">
@@ -131,9 +131,9 @@
     <div class="form-group layui-row lw12">
         <div class="form-group-label"><h2>履约保证金</h2></div>
         <div class="layui-item layui-col-sm6">
-            <label class="layui-form-label"><span class="require-item">*</span>支付方式:</label>
+            <label class="layui-form-label">支付方式:</label>
             <div class="layui-input-block">
-                <form:input path="payType" htmlEscape="false"    class="form-control layui-input required"/>
+                <form:input path="payType" htmlEscape="false"    class="form-control layui-input "/>
             </div>
         </div>
         <div class="layui-item layui-col-sm6">
@@ -143,16 +143,16 @@
             </div>
         </div>
         <div class="layui-item layui-col-sm6">
-            <label class="layui-form-label"><span class="require-item">*</span>开始日期:</label>
+            <label class="layui-form-label">开始日期:</label>
             <div class="layui-input-block">
-                <input id="startDate" name="startDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                <input id="startDate" name="startDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon "
                        value="<fmt:formatDate value="${workContentContractinfo.startDate}" pattern="yyyy-MM-dd"/>"/>
             </div>
         </div>
         <div class="layui-item layui-col-sm6">
-            <label class="layui-form-label"><span class="require-item">*</span>结束日期:</label>
+            <label class="layui-form-label">结束日期:</label>
             <div class="layui-input-block">
-                <input id="endDate" name="endDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon required"
+                <input id="endDate" name="endDate" type="text" maxlength="20" class="laydate-icondate form-control layui-input layer-date laydate-icon "
                        value="<fmt:formatDate value="${workContentContractinfo.endDate}" pattern="yyyy-MM-dd"/>"/>
             </div>
         </div>

+ 12 - 12
src/main/webapp/webpage/modules/workcontent/workContentContractinfoFormView.jsp

@@ -50,9 +50,9 @@
     <div class="form-group layui-row lw12">
         <div class="form-group-label"><h2>详情信息</h2></div>
         <div class="layui-item layui-col-sm12 with-textarea">
-            <label class="layui-form-label"><span class="require-item">*</span>合同范围:</label>
+            <label class="layui-form-label">合同范围:</label>
             <div class="layui-input-block">
-                <form:textarea path="scope" htmlEscape="false" rows="3" readonly="true" class="form-control required"/>
+                <form:textarea path="scope" htmlEscape="false" rows="3" readonly="true" class="form-control "/>
             </div>
         </div>
         <div class="layui-item layui-col-sm6">
@@ -70,12 +70,12 @@
             </div>
         </div>
         <div class="layui-item layui-col-sm6">
-            <label class="layui-form-label">名义合同金额(元):</label>
+            <label class="layui-form-label ">目标成本(元):</label>
             <div class="layui-input-block">
                 <input name="titularAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractinfo.titularAmt}" pattern="#,##0.00#"/>" class="form-control layui-input number"/>
             </div>
         </div>
-        <div class="layui-item layui-col-sm6">
+        <div class="layui-item layui-col-sm6 double-line">
             <label class="layui-form-label"><span class="require-item">*</span>有效合同金额(元):</label>
             <div class="layui-input-block">
                 <input name="trueAmt" htmlEscape="false" readonly="true" value="<fmt:formatNumber value="${workContentContractinfo.trueAmt}" pattern="#,##0.00#"/>" class="form-control layui-input number required"/>
@@ -88,14 +88,14 @@
             </div>
         </div>
         <div class="layui-item layui-col-sm6">
-            <label class="layui-form-label"><span class="require-item">*</span>合同开工日期:</label>
+            <label class="layui-form-label">合同开工日期:</label>
             <div class="layui-input-block">
                 <input readonly="true" type="text" maxlength="20" class="form-control layui-input"
                        value="<fmt:formatDate value="${workContentContractinfo.startWorkDate}" pattern="yyyy-MM-dd"/>"/>
             </div>
         </div>
         <div class="layui-item layui-col-sm6">
-            <label class="layui-form-label"><span class="require-item">*</span>合同竣工日期:</label>
+            <label class="layui-form-label">合同竣工日期:</label>
             <div class="layui-input-block">
                 <input readonly="true" type="text" maxlength="20" class="form-control layui-input"
                        value="<fmt:formatDate value="${workContentContractinfo.endWorkDate}" pattern="yyyy-MM-dd"/>"/>
@@ -123,9 +123,9 @@
     <div class="form-group layui-row lw12">
         <div class="form-group-label"><h2>履约保证金</h2></div>
         <div class="layui-item layui-col-sm6">
-            <label class="layui-form-label"><span class="require-item">*</span>支付方式:</label>
+            <label class="layui-form-label">支付方式:</label>
             <div class="layui-input-block">
-                <form:input path="payType" htmlEscape="false"  readonly="true"  class="form-control layui-input required"/>
+                <form:input path="payType" htmlEscape="false"  readonly="true"  class="form-control layui-input "/>
             </div>
         </div>
         <div class="layui-item layui-col-sm6">
@@ -135,16 +135,16 @@
             </div>
         </div>
         <div class="layui-item layui-col-sm6">
-            <label class="layui-form-label"><span class="require-item">*</span>开始日期:</label>
+            <label class="layui-form-label">开始日期:</label>
             <div class="layui-input-block">
-                <input readonly="true" type="text" maxlength="20" class="form-control layui-input required"
+                <input readonly="true" type="text" maxlength="20" class="form-control layui-input "
                        value="<fmt:formatDate value="${workContentContractinfo.startDate}" pattern="yyyy-MM-dd"/>"/>
             </div>
         </div>
         <div class="layui-item layui-col-sm6">
-            <label class="layui-form-label"><span class="require-item">*</span>结束日期:</label>
+            <label class="layui-form-label">结束日期:</label>
             <div class="layui-input-block">
-                <input readonly="true" type="text" maxlength="20" class=" form-control layui-input required"
+                <input readonly="true" type="text" maxlength="20" class=" form-control layui-input "
                        value="<fmt:formatDate value="${workContentContractinfo.endDate}" pattern="yyyy-MM-dd"/>"/>
             </div>
         </div>