Bladeren bron

月报信息功能

user5 4 jaren geleden
bovenliggende
commit
6e709eb3bd

+ 40 - 0
src/main/java/com/jeeplus/modules/projectcontentinfo/entity/Projectcontentinfo.java

@@ -10,6 +10,7 @@ import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
 import com.jeeplus.modules.sys.entity.Workattachment;
 
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -45,6 +46,13 @@ public class Projectcontentinfo extends TreeEntity<Projectcontentinfo> {
 	private String reportId;
 	private String projectType;
 
+
+	private String monthlyName;    //月报名称
+	private Date monthlyDate;    //月报时间
+	private String monthlyContent;  //月报内容信息
+	private String monthlyNumber;   //月报编号
+
+
 	public RuralProjectRecords getProjectOnRural() {
 		return projectOnRural;
 	}
@@ -250,4 +258,36 @@ public class Projectcontentinfo extends TreeEntity<Projectcontentinfo> {
 	public void setProjectType(String projectType) {
 		this.projectType = projectType;
 	}
+
+	public String getMonthlyName() {
+		return monthlyName;
+	}
+
+	public void setMonthlyName(String monthlyName) {
+		this.monthlyName = monthlyName;
+	}
+
+	public Date getMonthlyDate() {
+		return monthlyDate;
+	}
+
+	public void setMonthlyDate(Date monthlyDate) {
+		this.monthlyDate = monthlyDate;
+	}
+
+	public String getMonthlyContent() {
+		return monthlyContent;
+	}
+
+	public void setMonthlyContent(String monthlyContent) {
+		this.monthlyContent = monthlyContent;
+	}
+
+	public String getMonthlyNumber() {
+		return monthlyNumber;
+	}
+
+	public void setMonthlyNumber(String monthlyNumber) {
+		this.monthlyNumber = monthlyNumber;
+	}
 }

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

@@ -273,8 +273,16 @@ public class ProjectcontentinfoService extends CrudService<ProjectcontentinfoDao
 			}
 			//保存依据资料信息
 			if(projectContentData.getProjectBasedDataList()!=null&&!projectContentData.getProjectBasedDataList().isEmpty()){
-				//删除已存在的附件信息
-				workattachmentDao.deleteByDivIdType(projectContentData.getId());
+				Set set = new HashSet();
+				for (ProjectBasedData data:projectContentData.getProjectBasedDataList()) {
+					set.add(data.getFlag());
+				}
+				List setList = new ArrayList(set);
+				//判定是否为全过程管理中的项目复核模块 如果是则删除已有的附件信息
+				if(setList.contains("132")){
+					//删除已存在的附件信息
+					workattachmentDao.deleteByDivIdType(projectContentData.getId());
+				}
 				for (ProjectBasedData data:projectContentData.getProjectBasedDataList()) {
 					//判定是否为全过程管理中的项目复核模块
 					if("132".equals(data.getFlag())){

+ 55 - 0
src/main/java/com/jeeplus/modules/projectrecord/dao/monthly/MonthlyConsultationReportDao.java

@@ -0,0 +1,55 @@
+package com.jeeplus.modules.projectrecord.dao.monthly;
+
+import com.jeeplus.common.persistence.CrudDao;
+import com.jeeplus.common.persistence.annotation.MyBatisDao;
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
+import com.jeeplus.modules.projectrecord.entity.MonthlyInfo;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecordTreeData;
+
+import java.util.List;
+
+@MyBatisDao
+public interface MonthlyConsultationReportDao extends CrudDao<Projectcontentinfo> {
+
+    /**
+     * 根据项目查询对应信息
+     * @param projectId
+     * @return
+     */
+    List<ProjectRecordTreeData> getFindList(String projectId);
+
+    /**
+     * 新增方法
+     * @param monthly
+     * @return
+     */
+    Integer saveMonthly(MonthlyInfo monthly);
+
+    /**
+     * 修改
+     * @param monthly
+     * @return
+     */
+    Integer updateMonthly(MonthlyInfo monthly);
+
+    /**
+     * 根据id查询信息
+     * @param id
+     * @return
+     */
+    MonthlyInfo getById(String id);
+
+    /**
+     * 根据项目id查询项目编号前缀
+     * @param projectId
+     * @return
+     */
+    String getProjectNum(String projectId);
+
+    /**
+     * 根据id删除信息
+     * @param id
+     * @return
+     */
+    void deleteMonthly(String id);
+}

+ 55 - 0
src/main/java/com/jeeplus/modules/projectrecord/entity/MonthlyInfo.java

@@ -0,0 +1,55 @@
+package com.jeeplus.modules.projectrecord.entity;
+
+import com.jeeplus.common.persistence.DataEntity;
+
+import java.util.Date;
+
+public class MonthlyInfo  extends DataEntity<MonthlyInfo> {
+    private static final long serialVersionUID = 1L;
+
+    private String projectId;      //项目id
+    private String monthlyName;    //月报名称
+    private Date monthlyDate;    //月报时间
+    private String monthlyContent;  //月报内容信息
+    private String monthlyNumber;   //月报编号
+
+    public String getMonthlyName() {
+        return monthlyName;
+    }
+
+    public void setMonthlyName(String monthlyName) {
+        this.monthlyName = monthlyName;
+    }
+
+    public Date getMonthlyDate() {
+        return monthlyDate;
+    }
+
+    public void setMonthlyDate(Date monthlyDate) {
+        this.monthlyDate = monthlyDate;
+    }
+
+    public String getMonthlyContent() {
+        return monthlyContent;
+    }
+
+    public void setMonthlyContent(String monthlyContent) {
+        this.monthlyContent = monthlyContent;
+    }
+
+    public String getMonthlyNumber() {
+        return monthlyNumber;
+    }
+
+    public void setMonthlyNumber(String monthlyNumber) {
+        this.monthlyNumber = monthlyNumber;
+    }
+
+    public String getProjectId() {
+        return projectId;
+    }
+
+    public void setProjectId(String projectId) {
+        this.projectId = projectId;
+    }
+}

+ 8 - 1
src/main/java/com/jeeplus/modules/projectrecord/entity/ProjectRecordTreeData.java

@@ -2,6 +2,7 @@ package com.jeeplus.modules.projectrecord.entity;
 
 import com.jeeplus.common.persistence.DataEntity;
 
+import java.util.Date;
 import java.util.List;
 
 public class ProjectRecordTreeData extends DataEntity<ProjectRecordTreeData> {
@@ -32,6 +33,7 @@ public class ProjectRecordTreeData extends DataEntity<ProjectRecordTreeData> {
 
     private String contCate;//合同分类
     private double trueAmt;//有效合同金额
+    private Date date;   //时间控件
 
 
 
@@ -220,6 +222,11 @@ public class ProjectRecordTreeData extends DataEntity<ProjectRecordTreeData> {
         this.trueAmt = trueAmt;
     }
 
+    public Date getDate() {
+        return date;
+    }
 
-
+    public void setDate(Date date) {
+        this.date = date;
+    }
 }

+ 162 - 0
src/main/java/com/jeeplus/modules/projectrecord/service/monthly/MonthlyConsultationReportService.java

@@ -0,0 +1,162 @@
+package com.jeeplus.modules.projectrecord.service.monthly;
+
+import com.jeeplus.common.service.CrudService;
+import com.jeeplus.common.utils.MyBeanUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.modules.projectcontentinfo.dao.ProjectBasedDataDao;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectBasedData;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectContentData;
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectContentDataService;
+import com.jeeplus.modules.projectrecord.dao.monthly.MonthlyConsultationReportDao;
+import com.jeeplus.modules.projectrecord.entity.MonthlyInfo;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecordTreeData;
+import com.jeeplus.modules.projectreportnum.dao.ProjectReportNumDao;
+import com.jeeplus.modules.projectreportnum.entity.ReportNum;
+import com.jeeplus.modules.sys.dao.WorkattachmentDao;
+import com.jeeplus.modules.sys.entity.Workattachment;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.*;
+
+@Service
+@Transactional(readOnly = true)
+public class MonthlyConsultationReportService extends CrudService<MonthlyConsultationReportDao, Projectcontentinfo> {
+
+    @Autowired
+    private ProjectContentDataService projectContentDataService;
+    @Autowired
+    private WorkattachmentDao workattachmentDao;
+    @Autowired
+    private ProjectBasedDataDao projectBasedDataDao;
+    @Autowired
+    private ProjectReportNumDao projectReportNumDao;
+
+    public List<ProjectRecordTreeData> getFindList(String projectId){
+        List<ProjectRecordTreeData> projectRecordTreeData = dao.getFindList(projectId);
+        return projectRecordTreeData;
+    }
+
+
+    @Transactional(readOnly = false)
+    public String saveData(Projectcontentinfo projectcontentinfo) throws Exception {
+        String monthlyId = "";
+        List<Workattachment> attachmentList = projectcontentinfo.getWorkAttachments();
+        if(projectcontentinfo.getProjectContentData()!=null){
+            MonthlyInfo monthly = new MonthlyInfo();
+            MyBeanUtils.copyBeanNotNull2Bean(projectcontentinfo,monthly);
+            monthly.setProjectId(projectcontentinfo.getProject().getId());
+            if(StringUtils.isNotBlank(monthly.getId())){
+                monthly.preUpdate();
+                dao.updateMonthly(monthly);
+            }else{
+                monthly.setIsNewRecord(false);
+                //查询项目报告号前缀
+                String projectNumPrefix = dao.getProjectNum(monthly.getProjectId());
+                projectNumPrefix += "-YB-";
+
+                //获取最后一个报告号数据信息
+                ReportNum reportNum = new ReportNum();
+                reportNum.setNum(projectNumPrefix);
+                ReportNum lastReportNum = projectReportNumDao.getLastReportNum(reportNum);
+                if (null != lastReportNum){
+                    lastReportNum.getNum().lastIndexOf("-");
+                    //截取最后四位流水号
+                    String substring = lastReportNum.getNum().substring(lastReportNum.getNum().lastIndexOf("-")+1, lastReportNum.getNum().length());
+                    //转换为数字并递增
+                    Integer substringInteger = Integer.parseInt(substring)+1;
+                    //生成新的流水号
+                    StringBuffer newSerialNum = new StringBuffer();
+                    for(int x = 0; x < (4 - substringInteger.toString().length()); x++) {
+                        newSerialNum.append("0");
+                    }
+                    newSerialNum.append(substringInteger);
+                    reportNum.setNum(reportNum.getNum()+newSerialNum);
+                }else{
+                    reportNum.setNum(reportNum.getNum()+"0001");
+                }
+                monthly.setMonthlyNumber(reportNum.getNum());
+                monthly.preInsert();
+                dao.saveMonthly(monthly);
+            }
+            monthlyId = monthly.getId();
+            //保存月报基本信息
+            ProjectContentData projectContentData = projectcontentinfo.getProjectContentData();
+            //保存依据资料信息
+            if(projectContentData.getProjectBasedDataList()!=null&&!projectContentData.getProjectBasedDataList().isEmpty()){
+                for (ProjectBasedData data:projectContentData.getProjectBasedDataList()) {
+                    if (data.getDelFlag().equals("0")){
+                        List<ProjectBasedData> projectBasedData = new ArrayList<>();
+                        projectBasedData.add(data);
+                        projectContentDataService.saveBasedData(monthly.getId(),projectBasedData);
+                    }
+                }
+            }
+        }
+        //保存附件
+        if (attachmentList!=null && attachmentList.size()!=0) {
+            //附件信息
+            for (Workattachment workattachment : attachmentList) {
+                if (workattachment.getId() == null) {
+                    continue;
+                }
+                if (workattachment.DEL_FLAG_NORMAL.equals(workattachment.getDelFlag())) {
+                    workattachment.setAttachmentId(monthlyId);
+                    workattachment.setAttachmentUser(UserUtils.getUser().getId());
+                    if (StringUtils.isBlank(workattachment.getId()) || "null".equals(workattachment.getId())) {
+                        workattachment.preInsert();
+                        workattachmentDao.insert(workattachment);
+                    } else {
+                        workattachment.preUpdate();
+                        workattachmentDao.update(workattachment);
+                    }
+                } else {
+                    workattachmentDao.delete(workattachment);
+                }
+            }
+        }
+        return "true";
+    }
+
+    public MonthlyInfo getById(String id){
+        MonthlyInfo monthlyInfo = dao.getById(id);
+        return monthlyInfo;
+    }
+
+
+    /**
+     * 查询依据性文件
+     * @param monthly
+     * @return
+     */
+    public List<ProjectBasedData> getBasedData(MonthlyInfo monthly){
+        if (StringUtils.isNotBlank(monthly.getId())){
+            List<ProjectBasedData> list = projectBasedDataDao.queryListByContentId(monthly.getId());
+            return list;
+        }
+        return null;
+    }
+
+    /**
+     * 查询附件信息
+     * @param monthly
+     * @return
+     */
+    public List<Workattachment> getWorkattachment(MonthlyInfo monthly){
+        if (StringUtils.isNotBlank(monthly.getId())){
+            Workattachment workattachment = new Workattachment();
+            workattachment.setAttachmentId(monthly.getId());
+            List<Workattachment> list = workattachmentDao.findList(workattachment);
+            return list;
+        }
+        return null;
+    }
+
+    @Transactional(readOnly = false)
+    public void deleteMonthly(String id){
+        dao.deleteMonthly(id);
+    }
+}

+ 290 - 0
src/main/java/com/jeeplus/modules/projectrecord/web/monthly/MonthlyConsultationReportController.java

@@ -0,0 +1,290 @@
+package com.jeeplus.modules.projectrecord.web.monthly;
+
+import com.jeeplus.common.config.Global;
+import com.jeeplus.common.oss.OSSClientUtil;
+import com.jeeplus.common.persistence.Page;
+import com.jeeplus.common.utils.MyBeanUtils;
+import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.projectType.service.ProjectTypeService;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectBasedData;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectContentData;
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectBasedDataService;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectContentDataService;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectcontentinfoService;
+import com.jeeplus.modules.projectcontroltable.entity.ProjectControlTable;
+import com.jeeplus.modules.projectcontroltable.service.ProjectControlTableService;
+import com.jeeplus.modules.projectrecord.dao.WorkProjectUserDao;
+import com.jeeplus.modules.projectrecord.entity.MonthlyInfo;
+import com.jeeplus.modules.projectrecord.entity.ProjectImplementEarly;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecordTreeData;
+import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.projectrecord.service.ProjectImplementEarlyService;
+import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
+import com.jeeplus.modules.projectrecord.service.monthly.MonthlyConsultationReportService;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.utils.UserUtils;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
+import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+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.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.servlet.mvc.support.RedirectAttributes;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.*;
+
+/**
+ * 工程造价咨询月报Controller
+ * @author 徐滕
+ * @version 2020-08-11
+ */
+@Controller
+@RequestMapping(value = "${adminPath}/project/monthlyConsultationReport")
+public class MonthlyConsultationReportController extends BaseController {
+
+    @Autowired
+    private ProjectImplementEarlyService projectImplementEarlyService;
+    @Autowired
+    private ProjectRecordsService projectRecordsService;
+    @Autowired
+    private ProjectcontentinfoService projectcontentinfoService;
+    @Autowired
+    private WorkProjectUserDao workProjectUserDao;
+    @Autowired
+    private MonthlyConsultationReportService service;
+
+    private static String template_path = Global.getProjectTemplatePath()+"咨询工作方案.xlsx";
+    private static String template_name = "咨询工作方案.xlsx";
+
+    /*@ModelAttribute
+    public ProjectImplementEarly get(@RequestParam(required=false) String id) {
+        ProjectImplementEarly entity = null;
+        if (StringUtils.isNotBlank(id)){
+            entity = projectImplementEarlyService.get(id);
+        }
+        if (entity == null){
+            entity = new ProjectImplementEarly();
+        }
+        return entity;
+    }*/
+
+    /**
+     * 项目列表页面
+     */
+    @RequiresPermissions("project:monthlyConsultationReport:list")
+    @RequestMapping(value = {"list", ""})
+    public String list(ProjectImplementEarly projectRecords, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        Page<ProjectImplementEarly> page = projectImplementEarlyService.findProjectPage(new Page<ProjectImplementEarly>(request, response), projectRecords);
+        model.addAttribute("page", page);
+        return "modules/projectrecord/monthly/monthlyConsultationReportList";
+    }
+
+    /**
+     * 项目列表页面
+     */
+    @RequestMapping(value = "getProjectList")
+    @ResponseBody
+    public Map<String,List> getProjectList(ProjectImplementEarly projectRecords, HttpServletRequest request, HttpServletResponse response, Model model) {
+        if(UserUtils.isManager()){
+            model.addAttribute("flag","1");
+        }
+        Page<ProjectImplementEarly> page = projectImplementEarlyService.findProjectPage(new Page<ProjectImplementEarly>(request, response), projectRecords);
+        //无合同状态下,获取委托方的名称
+        List<ProjectImplementEarly> list = page.getList();
+        List<ProjectRecordTreeData> projectRecordTreeDataList = new ArrayList<>();
+        Map<String,List> map = new HashMap<>();
+        for (int i = 0; i < list.size(); i++) {
+            ProjectRecordTreeData projectRecordTreeData = new ProjectRecordTreeData();
+            ProjectImplementEarly records1 = list.get(i);
+            if (records1.getWorkContractInfo() == null) {
+                if (records1.getWorkClientLinkmanList() != null && records1.getWorkClientLinkmanList().size() > 0) {
+                    WorkClientLinkman linkman = records1.getWorkClientLinkmanList().get(0);
+                    WorkContractInfo contractInfo = new WorkContractInfo();
+                    contractInfo.setClient(linkman.getClientId());
+                    records1.setWorkContractInfo(contractInfo);
+                }
+            }
+            //将界面需要展示数据放入类中
+            projectRecordTreeData.setId(records1.getId());
+            projectRecordTreeData.setProjectName(records1.getProjectName());
+            projectRecordTreeData.setProjectId(records1.getProjectId());
+            projectRecordTreeData.setProjectContentId(records1.getProjectContentId());
+            if(null!= records1.getWorkContractInfo()){
+                projectRecordTreeData.setContractName(records1.getWorkContractInfo().getName());
+                projectRecordTreeData.setClientName(records1.getWorkContractInfo().getClient().getName());
+            }else{
+                projectRecordTreeData.setContractName("");
+                projectRecordTreeData.setClientName("");
+            }
+            projectRecordTreeData.setProjectStatus(records1.getProjectStatus());
+            projectRecordTreeData.setProjectRegistrant(records1.getProjectRegistrant());
+            projectRecordTreeData.setCreateDate(records1.getCreateDate());
+            projectRecordTreeData.setCreateId(records1.getCreateBy().getId());
+            //父节点的pid设置为0
+            projectRecordTreeData.setPid("0");
+            //遍历项目负责人信息
+            List<User> masterUserList = records1.getProjectLeaders();
+            List<String> masterList = new ArrayList<>();
+            Set masterIdSet = new HashSet();
+            for (User masterUser:masterUserList) {
+                masterList.add(masterUser.getName());
+                masterIdSet.add(masterUser.getId());
+            }
+
+            //查询项目组成员信息
+            List<User> members = workProjectUserDao.isDelFalg(records1.getId(), "");
+            records1.setProjectMembers(members);
+            for (User masterUser:records1.getProjectMembers()) {
+                masterIdSet.add(masterUser.getId());
+            }
+            //Set转List
+            List<String> masterIdList = new ArrayList<>(masterIdSet);
+            //如果当前登录人为项目登记者或项目负责人则允许其添加子节点信息
+            for (String masterId : masterIdList) {
+                if(masterId.equals(UserUtils.getUser().getId())){
+                    projectRecordTreeData.setOperationSign(1);
+                    break;
+                }else{
+                    projectRecordTreeData.setOperationSign(0);
+                }
+            }
+
+            //项目负责人list数据转String
+            String projectLeader = masterList.toString().replaceAll("(?:\\[|null|\\]| +)", "");
+            projectRecordTreeData.setProjectLeader(projectLeader);
+            projectRecordTreeData.setLoginId(UserUtils.getUser().getId());
+            projectRecordTreeDataList.add(projectRecordTreeData);
+
+            //根据项目id查询相关的项目阶段内容
+            List<ProjectRecordTreeData> reportDataList = service.getFindList(records1.getId());
+            if(0 != reportDataList.size()){
+                Projectcontentinfo select = new Projectcontentinfo();
+                ProjectRecords project = new ProjectRecords();
+                project.setId(records1.getId());
+                select.setParentIds("0,");
+                select.setProject(project);
+                List<Projectcontentinfo> p = projectcontentinfoService.findListByProject(select);
+                for (ProjectRecordTreeData reportData : reportDataList) {
+                    //添加工作内容id
+                    if(p.size()>0){
+                        reportData.setContentPId(p.get(0).getId());
+                        reportData.setParentIds("0,");
+                        reportData.setDictType("");
+                    }
+                    //添加项目负责人
+                    reportData.setProjectLeader(projectLeader);
+                    //添加登陆者id
+                    reportData.setLoginId(UserUtils.getUser().getId());
+                    reportData.setCreateId(records1.getCreateBy().getId());
+                    //如果当前登录人为项目登记者或项目负责人则允许其添加子节点信息
+                    for (String masterId : masterIdList) {
+                        if(masterId.equals(UserUtils.getUser().getId())){
+                            reportData.setOperationSign(1);
+                            break;
+                        }else{
+                            reportData.setOperationSign(0);
+                        }
+                    }
+                }
+            }
+            projectRecordTreeDataList.addAll(reportDataList);
+
+        }
+        map.put("data",projectRecordTreeDataList);
+        return map;
+    }
+
+    /**
+     * 查询
+     * @param projectcontentinfo
+     * @param request
+     * @param response
+     * @param model
+     * @param attr
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = {"form"})
+    public String form(Projectcontentinfo projectcontentinfo, HttpServletRequest request, HttpServletResponse response, Model model, RedirectAttributes attr) throws Exception {
+        String dictType = projectcontentinfo.getDictType();
+        ProjectRecords records = projectRecordsService.getQueryProjectUsers(projectcontentinfo.getProject().getId());
+        projectcontentinfo.setProject(records);
+
+        ProjectContentData projectContentData = new ProjectContentData();
+        projectContentData.setType(dictType);
+
+        if(StringUtils.isNotBlank(projectcontentinfo.getId())){
+            MonthlyInfo monthlyInfo = service.getById(projectcontentinfo.getId());
+            if(null != monthlyInfo){
+                MyBeanUtils.copyBeanNotNull2Bean(monthlyInfo,projectcontentinfo);
+                User user = UserUtils.get(monthlyInfo.getCreateBy().getId());
+                projectContentData.setMaster(user);
+                projectContentData.setProjectBasedDataList(service.getBasedData(monthlyInfo));
+                projectContentData.setWorkAttachments(service.getWorkattachment(monthlyInfo));
+            }
+        }else{
+            projectContentData.setMaster(UserUtils.getUser());
+        }
+
+        projectcontentinfo.setProjectContentData(projectContentData);
+        String projectType = projectImplementEarlyService.getProjectType(records.getProjectTypeId(), "实施前期");
+        projectcontentinfo.setType(projectType);
+        /*if(StringUtils.isBlank(projectcontentinfo.getId()) && StringUtils.isNotBlank(projectcontentinfo.getProjectContentId())){
+            projectcontentinfo.setId(projectcontentinfo.getProjectContentId());
+        }*/
+        model.addAttribute("projectcontentinfo", projectcontentinfo);
+        if ("view".equals(projectcontentinfo.getView())){
+            return "modules/projectrecord/monthly/monthlyContentView";
+        }else {
+            return "modules/projectrecord/monthly/monthlyContentForm";
+        }
+    }
+
+    /**
+     * 新增
+     * @param projectcontentinfo
+     * @param redirectAttributes
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping(value = {"save"})
+    public String save(Projectcontentinfo projectcontentinfo,RedirectAttributes redirectAttributes) throws Exception {
+        String str = service.saveData(projectcontentinfo);
+        addMessage(redirectAttributes, "保存月报信息"+(str.equals("true")?"成功":"失败"));
+        return "redirect:"+Global.getAdminPath()+"/project/monthlyConsultationReport/?repage";
+    }
+
+    /**
+     * 删除
+     * @param id
+     * @return
+     */
+    @RequestMapping(value = {"delete"})
+    public String delete(String id ){
+        service.deleteMonthly(id);
+        return "redirect:"+Global.getAdminPath()+"/project/monthlyConsultationReport/?repage";
+    }
+
+    /**
+     * 下载导入项目数据模板
+     */
+    @RequestMapping(value = "downloadTemplate")
+    public void downloadTemplate(HttpServletRequest request,HttpServletResponse response) {
+        try {
+            new OSSClientUtil().downByStream(template_path,template_name,response,request.getHeader("USER-AGENT"));
+        } catch (Exception e) {
+            logger.error("月报模板下载失败!",e);
+        }
+    }
+}

+ 112 - 0
src/main/resources/mappings/modules/projectrecord/monthly/MonthlyConsultationReportDao.xml

@@ -0,0 +1,112 @@
+<?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.projectrecord.dao.monthly.MonthlyConsultationReportDao">
+
+
+	<sql id="monthlyColumns">
+		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.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+
+		a.project_id AS "projectId",
+		a.monthly_name AS "monthlyName",
+		a.monthly_date as "monthlyDate",
+		a.monthly_content as "monthlyContent",
+		a.monthly_number as "monthlyNumber"
+	</sql>
+
+	<select id="getFindList" resultType="com.jeeplus.modules.projectrecord.entity.ProjectRecordTreeData">
+		select
+		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.remarks AS "remarks",
+		a.del_flag AS "delFlag",
+		a.project_id AS "pid",
+		a.monthly_name as "projectName",
+		a.monthly_date as "date",
+		a.monthly_number as "projectId",
+		su.name as "projectRegistrant"
+		from
+		  work_monthly_info a
+		left join sys_user su on su.id = a.create_by
+		where a.project_id = #{projectId} and a.del_flag = 0
+		order by a.update_date desc
+	</select>
+
+	<select id="getById" resultType="com.jeeplus.modules.projectrecord.entity.MonthlyInfo">
+		SELECT
+		<include refid="monthlyColumns"/>
+		from work_monthly_info a
+		where a.id = #{id}
+	</select>
+
+	<insert id="saveMonthly">
+		insert into work_monthly_info (
+		  id,
+		  create_by,
+		  create_date,
+		  update_by,
+		  update_date,
+		  remarks,
+		  del_flag,
+		  project_id,
+		  monthly_name,
+		  monthly_date,
+		  monthly_content,
+		  monthly_number
+		)
+		values
+		  (
+			#{id},
+			#{createBy.id},
+			#{createDate},
+			#{updateBy.id},
+			#{updateDate},
+			#{remarks},
+			#{delFlag},
+			#{projectId},
+			#{monthlyName},
+			#{monthlyDate},
+			#{monthlyContent},
+			#{monthlyNumber}
+		  )
+	</insert>
+
+	<update id="updateMonthly">
+		update
+		  work_monthly_info
+		set
+		  update_by = #{updateBy.id},
+		  update_date = #{updateDate},
+		  remarks = #{remarks},
+		  monthly_name = #{monthlyName},
+		  monthly_date = #{monthlyDate},
+		  monthly_content = #{monthlyContent},
+		  monthly_number = #{monthlyNumber}
+		where id = #{id}
+	</update>
+
+	<select id="getProjectNum" resultType="java.lang.String">
+		select
+		a.num as "num"
+		from report_num a
+		where
+			a.del_flag = 0 and a.project_id = #{projectId} and a.parent_id = 0
+	</select>
+
+	<update id="deleteMonthly">
+		update
+		  work_monthly_info
+		set
+		  del_flag = 1
+		where id = #{id}
+	</update>
+
+</mapper>

+ 1 - 0
src/main/webapp/static/bos/bosupload.js

@@ -164,6 +164,7 @@ function multitest (storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,
                                 '<input name="workAttachments['+lenght+'].createBy.id" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.createBy+'"/>'+
                                 '<input name="workAttachments['+lenght+'].type" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.type+'"/>'+
                                 '<input name="workAttachments['+lenght+'].attachmentFlag" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.attachmentFlag+'"/>'+
+                                '<input name="workAttachments['+lenght+'].divIdType" type="hidden" readonly="readonly" maxlength="20" style="width:140px;" class="form-control" value="'+data.divIdType+'"/>'+
                                 '</td>'+
                                 '<td class="op-td">'+
                                 '<div class="op-btn-box">' +

+ 515 - 0
src/main/webapp/webpage/modules/projectrecord/monthly/monthlyConsultationReportList.jsp

@@ -0,0 +1,515 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>项目登记</title>
+	<meta name="decorator" content="default"/>
+    <link href="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.css" rel="stylesheet" />
+    <style>
+        .layui-table th{
+            font-size: 14px;
+            /*表头内容居中显示*/
+            text-align: center;
+        }
+		.pid{
+			font-size:14px;
+			font-weight:400;
+		}
+    </style>
+	<script type="text/javascript">
+        $(document).ready(function() {
+
+            //搜索框收放
+            $('#moresee').click(function(){
+                if($('#moresees').is(':visible'))
+                {
+                    $('#moresees').slideUp(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+                }else{
+                    $('#moresees').slideDown(0,resizeListWindow2);
+                    $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+                }
+            });
+            laydate.render({
+                elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+            laydate.render({
+                elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+                event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+                type : 'date'
+            });
+        });
+
+        function reset() {
+            $("#searchForm").resetForm();
+        }
+
+        function openDialog(title,url,width,height,target) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                content: url,
+                skin: 'three-btns',
+                btn: ['送审', '暂存', '关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+
+        function openDialogre(title,url,width,height,target,buttons) {
+
+            if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+                width = 'auto';
+                height = 'auto';
+            } else {//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            var split = buttons.split(",");
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                maxmin: true, //开启最大化最小化按钮
+                skin: 'three-btns',
+                content: url,
+                btn: split,
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(1) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }
+                },
+                btn2:function(index,layero){
+                    if(split.length==2){return}
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    if(iframeWin.contentWindow.doSubmit(2) ){
+                        // top.layer.close(index);//关闭对话框。
+                        setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+                    }else {
+                        return false;
+                    }
+                },
+                btn3: function (index) {
+                }
+            });
+        }
+	</script>
+	<style>
+		body{
+			background-color:transparent;
+			filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+			color:#ffffff;
+			background-color:rgba(255,255,255,0);
+			height:100%;
+		}
+	</style>
+</head>
+<body>
+<div class="wrapper wrapper-content">
+	<sys:message content="${message}"/>
+	<div class="layui-row">
+		<div class="full-width fl">
+			<div class="layui-row contentShadow shadowLR" id="queryDiv">
+				<form:form id="searchForm" modelAttribute="projectImplementEarly" action="${ctx}/project/monthlyConsultationReport/" method="post" class="form-inline">
+					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
+					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
+					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
+					<div class="commonQuery lw6">
+						<div class="layui-item query athird">
+							<label class="layui-form-label">项目名称:</label>
+							<div class="layui-input-block">
+								<form:input path="projectName" htmlEscape="false" maxlength="64"  class=" form-control  layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">项目负责人:</label>
+							<div class="layui-input-block">
+								<form:input path="leaderNameStr" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+							</div>
+						</div>
+						<div class="layui-item athird">
+							<div class="input-group">
+								<a href="#" id="moresee"><i class="glyphicon glyphicon-menu-down"></i></a>
+								<button id="searchReset" class="fixed-btn searchReset fr" onclick="resetSearch()">重置</button>
+								<button id="searchQuery" class="fixed-btn searchQuery fr" onclick="search()">查询</button>
+							</div>
+						</div>
+						<div style="    clear:both;"></div>
+					</div>
+					<div id="moresees" style="clear:both;display:none;" class="lw6">
+						<%--<div class="layui-item query athird ">
+							<label class="layui-form-label">合同名称:</label>
+							<div class="layui-input-block">
+								<input type="text" input="workContractInfoName" name="workContractInfo.name" value="" htmlEscape="false" maxlength="255"  class=" form-control layui-input">
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">委托方:</label>
+							<div class="layui-input-block">
+								<input type="text" input="workContractInfoClientName" name="workContractInfo.client.name" value="" htmlEscape="false" maxlength="255"  class=" form-control layui-input">
+							</div>
+						</div>--%>
+						<div style="clear:both;"></div>
+					</div>
+				</form:form>
+			</div>
+		</div>
+		<div class="full-width fl">
+			<div class="layui-form contentDetails contentShadow shadowLBR">
+				<div class="nav-btns">
+					<button class="nav-btn layui-btn" id="btn-expand">全部展开</button>
+					<button class="nav-btn layui-btn-warm" id="btn-fold">全部折叠</button>
+					<button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
+
+                    <div style="clear: both;"></div>
+				</div>
+                <table id="permissionTable" class="layui-table" lay-filter="permissionTable"></table>
+				<!-- 分页代码 -->
+				<table:page page="${page}"></table:page>
+				<div style="clear: both;"></div>
+			</div>
+		</div>
+	</div>
+	<div id="changewidth"></div>
+</div>
+
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+
+    resizeListTable();
+    $("a").on("click",addLinkVisied);
+</script>
+<script>
+    resizeListWindow2();
+    $(window).resize(function(){
+        resizeListWindow2();
+    });
+</script>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script src="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.js" charset="utf-8"></script>
+<script>
+    /*使用模块加载的方式 加载文件*/
+    layui.config({
+        base: '${ctx}/resoueces/css/layui/module/'
+    }).extend({
+        treetable: 'treetable-lay/treetable'
+    }).use(['layer', 'table', 'treetable'], function () {
+        var $ = layui.jquery;
+        var table = layui.table;
+        var layer = layui.layer;
+        var treetable = layui.treetable;
+
+        // 渲染表格
+        var renderTable = function () {
+        	var projectName = $("#projectName").val();
+        	var workContractInfoName = $("#workContractInfoName").val();
+        	var workContractInfoClientName = $("#workContractInfoClientName").val();
+        	if(undefined == workContractInfoName){
+				workContractInfoName = "";
+			}
+        	if(undefined == workContractInfoClientName){
+				workContractInfoClientName = "";
+			}
+            layer.load(2);
+            treetable.render({
+                treeColIndex: 1,//树形图标显示在第几列
+                treeSpid: 0,//最上级的父级id
+                treeIdName: 'permissionId',//id字段的名称
+                treePidName: 'pid',//pid字段的名称
+                treeDefaultClose: true,//是否默认折叠
+                treeLinkage: true,//父级展开时是否自动展开所有子级
+                elem: '#permissionTable',
+                url: '${ctx}/project/monthlyConsultationReport/getProjectList?projectId=${projectRecords.id}&pageNo=${page.pageNo}&projectName='+$("#projectName").val()+'&leaderNameStr='+$("#leaderNameStr").val()+'&workContractInfo.name='+workContractInfoName+'&workContractInfo.client.name='+workContractInfoClientName,
+                page: false,
+                cols: [[
+                    {type: 'numbers', align:'center', title: '序号' ,width:80},
+                    {field: 'projectId', title: '项目编号/月报编号'},
+                    {field: 'projectName', align:'center', title: '项目名称/月报名称',templet:function(d){
+                    	if(0 == d.pid){
+							return "<a class=\"attention-info pid\" title=\"" + d.projectName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目', '${ctx}/project/projectRecords/view?id=" + d.id +"','95%', '95%')\">" + d.projectName + "</a>";
+						}else{
+							return "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看月报内容',    '${ctx}/project/monthlyConsultationReport/form?view=view&dictType=&id="+d.id+"&project.id="+d.pid+"&infoId="+d.id+"','95%', '95%')\">" + d.projectName + "</a>";
+						}
+						}},
+                    {field: 'projectLeader', align:'center', title: '项目负责人',templet: function(d){
+							if(0 == d.pid){
+								return "<font style = 'font-size:14px;font-weight:500;'>"+d.projectLeader+"</font>";
+							}else{
+								return "<font>"+d.projectLeader+"</font>";
+							}
+						}},
+                    {field: 'projectRegistrant', align:'center', title: '登记人',templet: function(d){
+							if(0 == d.pid){
+								return "<font style = 'font-size:14px;font-weight:500;'>"+d.projectRegistrant+"</font>";
+							}else{
+								return "<font>"+d.projectRegistrant+"</font>";
+							}
+						}},
+                    {field: 'createDate', align:'center', title: '登记日期',width:100,templet: function(d){
+							var date=d.createDate;
+							date=date.replace(new RegExp(/-/gm) ,"/");
+
+							if(0 == d.pid){
+								return "<font style = 'font-size:14px;font-weight:500;'>"+layui.util.toDateString(date,'yyyy-MM-dd')+"</font>";
+							}else{
+								return "<font>"+layui.util.toDateString(date,'yyyy-MM-dd')+"</font>";
+							}
+						}},
+                    {templet: complain, align:'center', title: '操作',width:130}
+                ]],
+                done: function () {
+                    layer.closeAll('loading');
+                }
+            });
+        };
+
+        renderTable();
+
+        //触发三个button按钮
+        $('#btn-expand').click(function () {
+            treetable.expandAll('#permissionTable');
+        });
+
+        $('#btn-fold').click(function () {
+            treetable.foldAll('#permissionTable');
+        });
+
+        $('#btn-refresh').click(function () {
+            renderTable();
+        });
+
+
+        function complain(d){//操作中显示的内容
+			if(d.pid=="0") {
+				if(1 == d.operationSign) {
+					return [
+						'<a href="javascript:void(0)" onclick="openDialogreAudit(\'新增工作内容\', \'${ctx}/project/monthlyConsultationReport/form?view=before&dictType=&parentIds=&projectContentId='+d.projectContentId+'&project.id=' + d.id +'\',\'95%\',\'95%\')" style=\"color: white;background: darkseagreen\" class="op-btn op-btn-add" ><i class="fa fa-plus"></i> 新增</a>',
+					].join('');
+				}else{
+					return [
+						'',
+					].join('');
+				}
+			} else if (d.pid!="0"){
+				if(1 == d.operationSign) {
+					if(d.status ==null){
+						//子级内容
+						return [
+							'<a href="javascript:void(0)" onclick="openDialogreAudit(\'修改工作内容\', \'${ctx}/project/monthlyConsultationReport/form?dictType=&id='+d.id+'&project.id='+d.pid+'&infoId='+d.id+'\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 编辑</a>',
+							'<a href="${ctx}/project/monthlyConsultationReport/delete?id='+d.id+'" onclick="return confirmx(\'确认要删除该月报信息吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+						].join('');
+
+					}else{
+						return [
+							'',
+						].join('');
+					}
+
+				}else{
+					return [
+						'',
+					].join('');
+				}
+			}else{
+				return[''].join('');
+			}
+        }
+        //监听工具条
+        table.on('tool(permissionTable)', function (obj) {
+            var data = obj.data;
+            var layEvent = obj.event;
+            if(data.permissionName!=null){
+                if (layEvent === 'del') {
+                    layer.msg('删除' + data.id);
+                } else if (layEvent === 'edit') {
+                    layer.msg('修改' + data.id);
+                }
+            }
+        });
+    });
+
+</script>
+<script>
+	function openDialogres(title,url,width,height,target){
+
+		if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+			width='auto';
+			height='auto';
+		}else{//如果是PC端,根据用户设置的width和height显示。
+
+		}
+		top.layer.open({
+			type: 2,
+			area: [width, height],
+			title: title,
+			skin: 'three-btns',
+			maxmin: true, //开启最大化最小化按钮
+			content: url ,
+			btn: ['提交','暂存','关闭'],
+			btn1: function(index, layero){
+				var body = top.layer.getChildFrame('body', index);
+				var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+				var inputForm = body.find('#inputForm');
+				var top_iframe;
+				if(target){
+					top_iframe = target;//如果指定了iframe,则在改frame中跳转
+				}else{
+					top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+				}
+				inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+				if(iframeWin.contentWindow.doSubmit(1) ){
+					//top.layer.close(index);//关闭对话框。
+					setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+				}
+			},
+			btn2:function(index,layero){
+				var body = top.layer.getChildFrame('body', index);
+				var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+				var inputForm = body.find('#inputForm');
+				var top_iframe;
+				if(target){
+					top_iframe = target;//如果指定了iframe,则在改frame中跳转
+				}else{
+					top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+				}
+				inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+				if(iframeWin.contentWindow.doSubmit(2) ){
+					// top.layer.close(index);//关闭对话框。
+					setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+				}
+				return false;
+			},
+			btn3: function(index){
+			}
+		});
+	}
+	function openDialogreAudit(title,url,width,height,target){
+
+		if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+			width='auto';
+			height='auto';
+		}else{//如果是PC端,根据用户设置的width和height显示。
+
+		}
+		top.layer.open({
+			type: 2,
+			area: [width, height],
+			title: title,
+			skin: 'three-btns',
+			maxmin: true, //开启最大化最小化按钮
+			content: url ,
+			btn: ['提交','关闭'],
+			btn1: function(index, layero){
+				var body = top.layer.getChildFrame('body', index);
+				var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+				var inputForm = body.find('#inputForm');
+				var top_iframe;
+				if(target){
+					top_iframe = target;//如果指定了iframe,则在改frame中跳转
+				}else{
+					top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+				}
+				inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+				if(iframeWin.contentWindow.doSubmit(1) ){
+					top.layer.close(index);//关闭对话框。
+					setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+				}
+			},
+			btn2: function(index){
+			}
+		});
+	}
+	// 确认对话框
+	function confirmxRefresh(mess, href){
+		top.layer.confirm(mess, {icon: 3, title:'系统提示'}, function(index){
+			//do something
+			if (typeof href == 'function') {
+				href();
+			}else{
+				resetTip(); //loading();
+				$.ajax({
+					url:href,
+					data:$('#loginForm').serialize(),
+					type:"post",
+					success:function(data){
+						if(data.status){
+							parent.layer.msg(data.msg,{icon:1});
+						}else {
+							parent.layer.msg(data.msg,{icon:2});
+						}
+						location = '${ctx}/project/projectRecords/list';
+					}
+				});
+			}
+			top.layer.close(index);
+		});
+		return false;
+	}
+</script>
+</body>
+</html>

+ 921 - 0
src/main/webapp/webpage/modules/projectrecord/monthly/monthlyContentForm.jsp

@@ -0,0 +1,921 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作内容详情管理</title>
+	<meta name="decorator" content="default"/>
+    <script src="${ctxStatic}/layer-v2.3/layui/xmSelect.js" charset="utf-8"></script>
+    <style>
+        #projectContentDataType-error{
+            left:0;
+            top:40px;
+        }
+    </style>
+	<script type="text/javascript">
+        $.fn.serializeJson=function(){
+            var serializeObj={};
+            var array=this.serializeArray();
+            var str=this.serialize();
+            $(array).each(function(){
+                if(serializeObj[this.name]){
+                    if($.isArray(serializeObj[this.name])){
+                        serializeObj[this.name].push(this.value);
+                    }else{
+                        serializeObj[this.name]=[serializeObj[this.name],this.value];
+                    }
+                }else{
+                    serializeObj[this.name]=this.value;
+                }
+            });
+            return serializeObj;
+        };
+
+        var validateForm;
+        var detailFlag =0;
+        function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+
+                var length = document.getElementById("file_monthly");
+                var rows = length.rows.length;
+                if(rows<=0){
+                    layer.msg('请上传月报附件信息', {icon: 5});
+                    return false;
+                }
+
+                beforeSubmit();
+                $("#inputForm").submit();
+                return true;
+            }
+
+            return false;
+        }
+        function beforeSubmit() {
+            var contentDetaStr = '';
+            var contentTypeId = $("#projectContentDataSign").val();
+            /*if(contentTypeId !=24){
+                if(null !=encodeURIComponent(genDetailStr()) && '' != encodeURIComponent(genDetailStr())){
+                    contentDetaStr += encodeURIComponent(genDetailStr());
+                }
+                if(null !=encodeURIComponent(genSecondDetailStr()) && '' != encodeURIComponent(genSecondDetailStr())){
+                    contentDetaStr += encodeURIComponent(genSecondDetailStr());
+                }
+            }*/
+            if(detailFlag==1){
+                $("#contentDeta").val(contentDetaStr);
+            }
+            $(document.getElementById("projectContentDataType")).removeAttr("disabled");
+        }
+
+        $(function() {
+            var editVal = '${projectcontentinfo.edit}';
+
+            if($("#createDate").val()==null || $("#createDate").val()==''){
+                $("#createDate").val(getNowFormatDate());
+            }
+            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);
+                    }
+                }
+            });
+            var tp = "${projectcontentinfo.dictType}";
+            var tp2 = "${projectcontentinfo.projectContentData.id}"
+            if((tp!=null && tp!='')||(tp2!=null && tp2!='')){
+                $(document.getElementById("projectContentDataType")).attr("disabled","disabled");
+            }
+            initControlData("1");
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+            $("#monthly_btn").click(function () {
+                $("#monthly_file").click();
+            });
+        });
+
+
+        function openDialogre(title,url,width,height,formId){
+
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                skin: 'three-btns',
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                btn: ['提交','关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    inputForm.attr("action","${ctx}/projectcontentinfo/projectcontentinfo/ajaxsaveBaseData");//表单提交成功后,从服务器返回的url在当前tab中展示
+                    var $document = iframeWin.contentWindow.document;
+                    formSubmitAjax($document,formId,index);
+                },
+                btn2: function(index){
+                }
+            });
+        }
+
+        function formSubmitAjax($document,inputForm,index){
+            var validateForm = $($document.getElementById(inputForm)).validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $($document.getElementById("#messageBox")).text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            if(validateForm.form()){
+                $($document.getElementById(inputForm)).ajaxSubmit({
+                    success:function(data) {
+                        if(!data.success){
+                            top.layer.msg("保存依据资料信息异常!",{icon:2});
+                            return false;
+                        }
+                        var idx = $("#workBaseDataList tr").length;
+                        addRowBaseData("#workBaseDataList",idx,workBaseDataTpl,data.body.workBasedData);
+                        parent.layer.msg(data.msg,{icon:1});
+                        top.layer.close(index)
+                    }
+                });
+            }
+        }
+
+        function getNowFormatDate() {
+            var date = new Date();
+            var seperator1 = "-";
+            var month = date.getMonth() + 1;
+            var strDate = date.getDate();
+            month = (month < 10)?"0"+month:month;
+            strDate = (strDate < 10)?"0"+strDate:strDate;
+            var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate;
+            return currentdate;
+        }
+
+        function accordingBtn(obj, prefix){
+            //var id = $(prefix+"_id").val();
+            $(prefix+"_file").click();
+        }
+
+        function insertAccording(tValue,idx,prefix) {
+            var files = $(prefix+"_file")[0].files;
+            for(var i=0;i<files.length;i++) {
+                var file = files[i];
+                var attachmentId = "";
+                var attachmentFlag = "132";
+                console.log(file);
+                var timestamp = new Date().getTime();
+
+                var storeAs = "attachment-file/basedData/" + timestamp + "/" + file['name'];
+                var uploadPath = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/" + storeAs;
+                /*将这段字符串存到数据库即可*/
+                var divId = "_attachment";
+                multipartUploadWithSts(storeAs, file, attachmentId, attachmentFlag, uploadPath, divId, "0",1,idx,prefix);
+            }
+            $(prefix+"_file").val(123)
+        }
+
+
+
+        function addFile() {
+            $("#attachment_file").click();
+        }
+        function addMonthlyFile() {
+            $("#monthly_file").click();
+        }
+
+        function insertTitle(tValue){
+            var files = $("#attachment_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "94";
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/projectContentData/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,0);}
+        }
+
+        function insertMonthlyTitle(tValue){
+            var files = $("#monthly_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var monthlyId = "";
+            var monthlyFlag = "94";
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/projectContentData/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_monthly";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,monthlyId,monthlyFlag,uploadPath,divId,0);}
+        }
+
+        function openDialogreControl(title,url,width,height,target){
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                skin: 'three-btns',
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                btn: ['提交','关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    var $document = iframeWin.contentWindow.document;
+                    var index1 = parent.layer.load(0, {shade: [0.1, 'tranparent']});
+                    formSubmit($document,"inputForm",index,index1);
+                },
+                btn2: function(index){
+                    parent.layer.close(index)
+                },
+                end:function(index){
+                    parent.layer.close(index)
+                }
+            });
+        }
+        function formSubmit($document,inputForm,index,index1){
+            var validateForm = $($document.getElementById(inputForm)).validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $($document.getElementById("#messageBox")).text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            if(validateForm.form()){
+                $($document.getElementById(inputForm)).ajaxSubmit({
+                    success:function(data) {
+                        parent.parent.layer.msg("操作成功",{icon:1})
+                        parent.parent.layer.close(index1)
+                        parent.layer.close(index1)
+                        parent.parent.layer.close(index)
+                        parent.layer.close(index)
+                        initGetControlData();
+                    },error:function(){
+                        parent.parent.layer.msg("操作失败",{icon:2})
+                        parent.parent.layer.close(index1)
+                        parent.layer.close(index1)
+                        parent.parent.layer.close(index)
+                        parent.layer.close(index)
+                        initControlData("1");
+                    }
+                });
+            }else {
+                parent.parent.layer.msg("信息未填写完整!", {icon: 2});
+                parent.layer.close(index1)
+                parent.parent.layer.close(index1)
+            }
+        }
+        /**
+         * 删除临时数据
+         */
+        function initControlData(obj,othis,del,tableId){
+            if(del == "del"){
+                proId = tableId;
+			}else{
+                proId = "";
+			}
+            $.ajax({
+                type:'post',
+                url:'${ctx}/projectcontroltable/projectControlTable/delControlData',
+                data:{
+                    "projectId":"${projectcontentinfo.project.id}",
+					"projectContentId":proId,
+					"flag":del
+                },
+                success:function(data){
+                    if(obj != "1"){
+                        if(data.flag){
+                            //$(othis).parent().parent().parent().remove();
+                            parent.layer.msg("数据删除成功",{icon:1})
+                            $(othis).remove()
+                        }else{
+                            parent.layer.msg("数据删除失败",{icon:2})
+                        }
+                    }
+                }
+            })
+        }
+
+        function getMatchDate(str){
+            var reDateTime = /^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1]))/
+            var date = (""+str).match(reDateTime);
+            if(date){
+                return date[0]
+            }else{
+                return "";
+            }
+        }
+
+        /**
+         * 获取临时数据
+         * @param obj
+         * @param othis
+         */
+        function initGetControlData(){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/projectcontroltable/projectControlTable/getControlData',
+                data:{
+                    "projectId":"${projectcontentinfo.project.id}",
+                    "proId":"${projectcontentinfo.projectContentData.id}"
+                },
+                success:function(data){
+                    if(data){
+                        var htmlStr = '';
+                        data = data.list.projectControlTableList;
+                        for(var i=0;i<data.length;i++){
+                            htmlStr += "<tr id='tr"+i+"'>"+
+                                "   <td style='text-align:center;'>"+
+                                "	   "+data[i].tName+
+                                "	   <input type='hidden' name='projectContentData.projectControlTableList["+i+"].id' value='"+data[i].id+"'>"+
+                                "	   <input type='hidden' name='projectContentData.projectControlTableList["+i+"].tName' value='"+data[i].tName+"'>"+
+                                "	   <input type='hidden' name='projectContentData.projectControlTableList["+i+"].processName' value='"+data[i].processName+"'>"+
+                                "	   <input type='hidden' name='projectContentData.projectControlTableList["+i+"].pfId' value='"+data[i].pfId+"'>"+
+                                "   </td>"+
+                                "   <td style='text-align:center;'>" +
+                                "  			"+data[i].processName+
+                                "	   		<input type='hidden' name='projectContentData.projectControlTableList["+i+"].tType' value='"+data[i].tType+"'>"+
+                                "	</td>"+
+                                "   <td style='text-align:center;'>"+
+                                "  		"+data[i].tUser.name+
+                                "   </td>"+
+                                "   <td style='text-align:center;'>"+
+                                "  "+ getMatchDate(data[i].createDate)+
+                                //										"	    <input type='hidden' name='projectControlTableList["+i+"].createDate' value='"+data[i].createDate+"'>"+
+                                //										"	    <input type='hidden' name='projectControlTableList["+i+"].updateDate' value='"+data[i].updateDate+"'>"+
+                                //										"	    <input type='hidden' name='projectControlTableList["+i+"].delFlag' value='"+data[i].delFlag+"'>"+
+                                //										"	    <input type='hidden' name='projectControlTableList["+i+"].createBy.id' value='"+data[i].createBy.id+"'>"+
+                                "   </td>"+
+                                "   <td style='text-align:center;'>"+
+                                "   	<a href='javascript:void(0)' onclick=\"openDialogView('查看过程控制明细', '${ctx}/projectcontroltable/projectControlTable/form?view=view&id="+data[i].id+"','90%', '90%')\" class='btn btn-info btn-xs' ><i class='fa fa-search-plus'></i> 查看</a>"+
+                                "  		<a href=\"javascript:initControlData('0','#tr"+i+"','del','"+data[i].id+"')\" onclick=\"return confirmx('确认要删除该过程控制数据吗?', this.href)\"   class='btn btn-danger btn-xs'><i class='fa fa-trash'></i> 删除</a>"+
+                                "  </td>"+
+                                "</tr>";
+                        }
+                        if(htmlStr){
+                            $("#projectControlTables").html(htmlStr);
+                        }
+                    }
+                }
+            })
+        }
+
+        function formatNum(obj) {
+            var val = $(obj).val();
+            console.log("-----------val"+val);
+            if(!isNumber(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 isNumber(val){
+            if(val === "" || val ==null){
+                return false;
+            }
+            var regPos = /^\d+(\.\d+)?$/; //非负浮点数
+            var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数
+            if(regPos.test(val) || regNeg.test(val)){
+                return true;
+            }else{
+                return false;
+            }
+
+        }
+        $(document).ready(function() {
+            laydate.render({
+                elem: '#monthlyDate',
+                event: 'focus',
+                type: 'month'
+            });
+        })
+    </script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container${container}">
+        <form:form id="inputForm" modelAttribute="projectcontentinfo" action="${ctx}/project/monthlyConsultationReport/save?view=content&condition=${flag}" method="post" class="form-horizontal">
+            <form:hidden path="id"/>
+            <form:hidden path="edit"/>
+            <form:hidden path="parentIds"/>
+            <form:hidden path="project.id"/>
+            <form:hidden path="projectContentData.id"/>
+            <form:hidden path="projectContentData.contractId"/>
+            <input type="hidden" id="contentDeta" name="projectContentData.contentDetail">
+            <input type="hidden" id="dataBodyList" name="dataBodyList" value="">
+            <input type="hidden" id="projectContentDataSign" name="projectContentDataSign" value="">
+            <input type="hidden" id="modify"  value="${modify}">
+            <sys:message content="${message}"/>
+            <div class="form-group layui-row first lw12">
+                <div class="form-group-label"><h2>基本信息</h2></div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">项目名称:</label>
+                    <div class="layui-input-block">
+                        <form:input path="project.projectName" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">项目编号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="project.projectId" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">类型:</label>
+                    <div class="layui-input-block">
+                        <form:input path="projectContentData.type" value="按月出具跟踪咨询报告" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">月报内容编号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="monthlyNumber" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </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="monthlyName" htmlEscape="false" class="form-control required layui-input"/>
+                    </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="projectContentData.master.name" htmlEscape="false"  readonly="true"  class="form-control layui-input required"/>
+                        <form:hidden path="projectContentData.master.id" 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  id="monthlyDate" name="monthlyDate"  type="text" class="form-control layui-input required"
+                               value="<fmt:formatDate value="${projectcontentinfo.monthlyDate}" pattern="yyyy-MM"/>"/>
+                    </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 id="createDate" name="projectContentData.createDate" type="text" readonly="true" maxlength="20" class="form-control layui-input required"
+                               value="<fmt:formatDate value="${createDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>月报基本内容信息</h2></div>
+                <div class="layui-item layui-col-sm12 with-textarea">
+                    <div class="layui-input-block">
+                        <form:textarea path="monthlyContent" htmlEscape="false" maxlength="1000" rows="6"    class="form-control"/>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>依据性资料明细</h2></div>
+                <div class="layui-item nav-btns">
+                    <a href="javascript:void(0)" onclick="openDialogre('新增依据性资料', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=basedData&dictType=${projectcontentinfo.dictType}&id=${projectcontentinfo.id}&parentIds=${projectcontentinfo.parentIds}&project.id=${projectcontentinfo.project.id}','90%','90%','inputForm')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
+
+                    <sys:gridselectBaseData url="${ctx}/projectcontentinfo/projectBasedData/selectList" id="baseData" title="选择依据资料"
+                                            cssClass="form-control" projectId="${projectcontentinfo.project.id}" fieldLabels="" fieldKeys=""  searchLabel="${fns:urlEncode('依据资料名称')}" searchKey="name"></sys:gridselectBaseData>
+                </div>
+                <div class="layui-item layui-col-xs12 form-table-container">
+                    <table id="contentTableBase" class="table table-bordered table-condensed details">
+                        <thead>
+                        <tr>
+                            <th class="hide"></th>
+                            <th >资料编号</th>
+                            <th >资料名称</th>
+                            <th >资料类别</th>
+                            <th >上传人</th>
+                            <th >上传日期</th>
+                            <th>操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workBaseDataList">
+                        <c:forEach items="${projectcontentinfo.projectContentData.projectBasedDataList}" var="projectBasedData" varStatus="idx">
+                            <tr>
+                                <td class="hide">
+                                    <input type="hidden" id="workBaseDataList${idx.index}_id" value="${projectBasedData.id}" class="clientId">
+                                </td>
+                                <td style="text-align:center;">
+                                        ${projectBasedData.number}
+                                </td>
+                                <td style="text-align:center;">
+                                        ${projectBasedData.name}
+                                </td>
+                                <td style="text-align:center;">
+                                        ${fns:getDictLabel(projectBasedData.type, 'project_document_type', '')}
+                                </td>
+                                <td style="text-align:center;">
+                                        ${projectBasedData.uploadUser.name}
+                                </td>
+                                <td style="text-align:center;">
+                                    <fmt:formatDate value="${projectBasedData.uploadDate}" pattern="yyyy-MM-dd"/>
+                                </td>
+
+                                <td class="text-center op-td">
+                                    <a href=javascript:void(0); onclick="delRowBaseData(this, '#workBaseDataList${idx.index}','${projectBasedData.uploadUser.id}')"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+            <script type="text/template" id="workBaseDataTpl">//<!--
+                <tr id="budgetList{{idx}}">
+                    <td class="hide">
+                        <input id="workBaseDataList{{idx}}_id" name="projectContentData.projectBasedDataList[{{idx}}].id" type="hidden" value="{{row.id}}" class="clientId"/>
+                        <input id="workBaseDataList{{idx}}_number" name="projectContentData.projectBasedDataList[{{idx}}].number" type="hidden" value="{{row.number}}"/>
+                        <input id="workBaseDataList{{idx}}_name" name="projectContentData.projectBasedDataList[{{idx}}].name" type="hidden" value="{{row.name}}"/>
+                        <input id="workBaseDataList{{idx}}_type" name="projectContentData.projectBasedDataList[{{idx}}].type" type="hidden" value="{{row.type}}"/>
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.number}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.name}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.typeLabel}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.uploadUser.name}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.uploadDate}}
+                    </td>
+                    <td class="text-center op-td">
+                        <a href=javascript:void(0); onclick="delRowBaseData(this, '#workBaseDataList{{idx}}','{{row.uploadUser.id}}')"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
+                    </td>
+                </tr>//-->
+            </script>
+            <script type="text/javascript">
+                var workBaseDataTpl = $("#workBaseDataTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+                var workBaseDataRowIdx = ${fn:length(projectcontentinfo.projectReportData.projectBasedDataList)};
+                function setValuee(obj){
+                    for(var i=0;i<obj.length;i++){
+                        var idArr = $("#workBaseDataList tr:visible .clientId");
+                        if(obj[i].id!=''&&!hasInArr(obj[i].id,idArr)){
+                            addRowBaseData("#workBaseDataList",workBaseDataRowIdx,workBaseDataTpl,obj[i]);
+                            workBaseDataRowIdx=workBaseDataRowIdx+1;
+                        }
+                    }
+                }
+                function hasInArr(id,idArr) {
+                    for(var i=0;i<idArr.length;i++){
+                        if(id==$(idArr[i]).val()){
+                            return true;
+                        }
+                    }
+                    return false;
+                }
+                function existBaseData(id,length) {
+                    for (var i=0;i<length;i++) {
+                        var val = $('#workBaseDataList'+i+'_id').val();
+                        if(id==val){
+                            return true;
+                        }
+                    }
+                    return false;
+                }
+
+                function addRowBaseData(list, idx, tpl, row){
+                    bornTemplete(list, idx, tpl, row, idx);
+                }
+
+                function bornTemplete(list, idx, tpl, row, idx1){
+                    var idx1 = $("#workBaseDataList 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 delRowBaseData(obj, prefix,userId){
+                    var id = $(prefix+"_id").val();
+                    var currentUser = '${fns:getUser().id}';
+                    var contentId = '${projectcontentinfo.projectContentData.id}';
+                    console.log(contentId);
+                    var condition = "${flag}";
+                    $.ajax({
+                        type:"post",
+                        url:'${ctx}/projectcontentinfo/projectContentData/ajaxdelete',
+                        data:{"contentId":contentId,"basedId":id,"condition":condition},
+                        dataType:"json",
+                        success:function(data){
+                            if(data.success) {
+                                if("according" == condition || "completion" == condition || "early" == condition || "claim" == condition || "design" == condition || "visa" == condition || "interim" == condition || "distribution" == condition ){
+                                    $(obj).parent().parent().parent().remove();
+                                }else{
+                                    $(obj).parent().parent().remove();
+                                }
+                                if(data.body.inuse){
+                                    return;
+                                }
+                                if (currentUser == userId) {
+                                    confirmDelete('是否同步删除资料库的文件?','${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+id+'&id=${projectcontentinfo.id}&type=1');
+                                }
+                            }else {
+                                top.layer.msg("删除依据资料失败!", {icon: 0});
+                            }
+                        }
+                    })
+                    return;
+                }
+
+                function confirmDelete(mess, href){
+                    top.layer.confirm(mess, {icon: 3, title:'系统提示'}, function(index){
+                        //do something
+                        if (typeof href == 'function') {
+                            href();
+                        }else{
+                            $.ajax({
+                                url:href,
+                                type:"post",
+                                success:function(data){
+                                    if(data.success){
+                                        top.layer.msg("删除依据资料成功!", {icon: 0});
+                                    }
+                                }
+                            });
+                        }
+                        top.layer.close(index);
+                    });
+                    return false;
+                }
+            </script>
+            <%--<div class="form-group layui-row">
+                <div class="form-group-label"><h2>过程控制明细</h2></div>
+                <div class="layui-item nav-btns">
+                    <a href="javascript:void(0)" onclick="openDialogreControl('新增控制表格', '${ctx}/projectcontroltable/projectControlTable/form?pfId=${projectcontentinfo.project.id}','90%','90%',false,'inputForm')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
+                </div>
+                <div class="layui-item layui-col-xs12 form-table-container">
+                    <table id="contentTable" class="table table-bordered table-condensed details">
+                        <thead>
+                            <tr>
+                                <th  >表格名称</th>
+                                <th  >表格类型</th>
+                                <th  >负责人</th>
+                                <th  >创建日期</th>
+                                <th>操作</th>
+                            </tr>
+                        </thead>
+                        <tbody id="projectControlTables">
+                    <c:choose>
+                        <c:when test="${not empty projectcontentinfo.projectContentData.projectControlTableList}">
+                            <c:forEach items="${projectcontentinfo.projectContentData.projectControlTableList}" var="projectControlTable" varStatus="status">
+                                <tr id="tr${status.index}">
+                                    <td style="text-align:center;">
+                                            ${projectControlTable.tName}
+                                        <input type="hidden" name="projectContentData.projectControlTableList[${status.index}].id" value="${projectControlTable.id}">
+                                        <input type="hidden" name="projectContentData.projectControlTableList[${status.index}].tName" value="${projectControlTable.tName}">
+                                        <input type="hidden" name="projectContentData.projectControlTableList[${status.index}].pfId" value="${projectControlTable.pfId}">
+                                    </td>
+                                    <td style="text-align:center;">
+                                            ${projectControlTable.processName}
+                                        <input type="hidden" name="projectContentData.projectControlTableList[${status.index}].tType" value="${projectControlTable.tType}">
+                                    </td>
+                                    <td style="text-align:center;">
+                                            ${projectControlTable.tUser.name}
+                                    </td>
+                                    <td style="text-align:center;">
+                                        <fmt:formatDate value="${projectControlTable.createDate}" pattern="yyyy-MM-dd" />
+                                            &lt;%&ndash;<input type="hidden" name="projectControlTableList[${status.index}].createDate" value="${projectControlTable.createDate}">&ndash;%&gt;
+                                            &lt;%&ndash;<input type="hidden" name="projectControlTableList[${status.index}].updateDate" value="${projectControlTable.updateDate}">&ndash;%&gt;
+                                            &lt;%&ndash;<input type="hidden" name="projectControlTableList[${status.index}].delFlag" value="${projectControlTable.delFlag}">&ndash;%&gt;
+                                            &lt;%&ndash;<input type="hidden" name="projectControlTableList[${status.index}].createBy.id" value="${projectControlTable.createBy.id}">&ndash;%&gt;
+                                    </td>
+                                    <td class="op-td text-center">
+                                        <div class="op-btn-box">
+                                        <a href="#" onclick="openDialogView('查看过程控制明细', '${ctx}/projectcontroltable/projectControlTable/form?id=${projectControlTable.id}&view=view','90%', '90%')" class="op-btn op-btn-view" ><i class="fa fa-search-plus"></i> 查看</a>
+                                        <a href="javascript:initControlData('0','#tr${status.index}','del','${projectControlTable.id}')" onclick="return confirmx('确认要删除该过程控制数据吗?', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
+                                        </div>
+                                    </td>
+                                </tr>
+                            </c:forEach>
+                        </c:when>
+                        <c:otherwise>
+                            <tr>
+                                <td colspan="5" align="center">暂无数据</td>
+                            </tr>
+                        </c:otherwise>
+                    </c:choose>
+                    </tbody>
+                    </table>
+                </div>
+            </div>--%>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2><span class="require-item">*</span>月报附件信息</h2></div>
+                <div class="layui-item nav-btns">
+                    <a id="monthly_btn" class="nav-btn nav-btn-add" title="添加月报附件"><i class="fa fa-plus"></i>&nbsp;添加月报附件</a>
+                    <a class="nav-btn nav-btn-export" title="下载月报模板"  onclick="window.location.href='${ctx}/project/monthlyConsultationReport/downloadTemplate';"><i class="fa fa-download"></i>&nbsp;下载模板</a>
+                </div>
+                <div id="addFile_monthly" style="display: none" class="upload-progress">
+                    <span id="fileName_monthly" ></span>
+                    <b><span id="baifenbi_monthly" ></span></b>
+                    <div class="progress">
+                        <div id="jindutiao_monthly" class="progress-bar" style="width: 0%" aria-valuenow="0">
+                        </div>
+                    </div>
+                </div>
+                <input id="monthly_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertMonthlyTitle(this.value);"/>
+                <span id="monthly_title"></span>
+                <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                    <table id="upMonthlyTable" class="table table-bordered table-condensed details">
+                        <thead>
+                        <tr>
+                            <th>文件名称</th>
+                            <th>上传人</th>
+                            <th>上传时间</th>
+                            <th width="150px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="file_monthly">
+                        <c:forEach items="${projectcontentinfo.projectContentData.workAttachments}" var = "workAttachment" varStatus="status">
+                            <c:if test="${workAttachment.divIdType =='_monthly'}">
+                                <tr>
+                                    <c:choose>
+                                        <c:when test="${fn:containsIgnoreCase(workAttachment.attachmentName,'jpg')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'png')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'gif')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'bmp')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'jpeg')}">
+                                            <td><img src="${workAttachment.url}" width="50" height="50" alt="${workAttachment.attachmentName}"/></td>
+                                        </c:when>
+                                        <c:otherwise>
+                                            <c:choose>
+                                                <c:when test="${fn:containsIgnoreCase(workAttachment.attachmentName,'pdf')}">
+                                                    <td><a href="javascript:void(0)" onclick="preview('预览','${workAttachment.url}','90%','90%','1')">${workAttachment.attachmentName}</a></td>
+                                                </c:when>
+                                                <c:otherwise>
+                                                    <td><a href="javascript:void(0)" onclick="preview('预览','${workAttachment.url}','90%','90%')">${workAttachment.attachmentName}</a></td>
+                                                </c:otherwise>
+                                            </c:choose>
+                                        </c:otherwise>
+                                    </c:choose>
+                                    <td>${workAttachment.createBy.name}</td>
+                                    <td><fmt:formatDate value="${workAttachment.createDate}" type="both"/></td>
+                                    <td class="op-td">
+                                        <div class="op-btn-box" >
+                                            <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${workAttachment.url}');" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+                                            <c:if test="${workAttachment.createBy.id eq fns:getUser().id}">
+                                                <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workAttachment.url}&id=${workAttachment.id}&type=2','addMonthlyFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i> 删除</a>
+                                            </c:if>
+                                        </div>
+                                    </td>
+                                </tr>
+                            </c:if>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>附件信息</h2></div>
+                <div class="layui-item nav-btns">
+                    <a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i>&nbsp;添加附件</a>
+                </div>
+                <div id="addFile_attachment" style="display: none" class="upload-progress">
+                    <span id="fileName_attachment" ></span>
+                    <b><span id="baifenbi_attachment" ></span></b>
+                    <div class="progress">
+                        <div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+                        </div>
+                    </div>
+                </div>
+                <input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+                <span id="attachment_title"></span>
+                <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                    <table id="upTable" class="table table-bordered table-condensed details">
+                        <thead>
+                            <tr>
+                            <th>文件名称</th>
+                            <th>上传人</th>
+                            <th>上传时间</th>
+                            <th width="150px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="file_attachment">
+                        <c:forEach items="${projectcontentinfo.projectContentData.workAttachments}" var = "workAttachment" varStatus="status">
+                            <c:if test="${workAttachment.divIdType =='_attachment'}">
+                                <tr>
+                                    <c:choose>
+                                        <c:when test="${fn:containsIgnoreCase(workAttachment.attachmentName,'jpg')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'png')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'gif')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'bmp')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'jpeg')}">
+                                            <td><img src="${workAttachment.url}" width="50" height="50" alt="${workAttachment.attachmentName}"/></td>
+                                        </c:when>
+                                        <c:otherwise>
+                                            <c:choose>
+                                                <c:when test="${fn:containsIgnoreCase(workAttachment.attachmentName,'pdf')}">
+                                                    <td><a href="javascript:void(0)" onclick="preview('预览','${workAttachment.url}','90%','90%','1')">${workAttachment.attachmentName}</a></td>
+                                                </c:when>
+                                                <c:otherwise>
+                                                    <td><a href="javascript:void(0)" onclick="preview('预览','${workAttachment.url}','90%','90%')">${workAttachment.attachmentName}</a></td>
+                                                </c:otherwise>
+                                            </c:choose>
+                                        </c:otherwise>
+                                    </c:choose>
+                                    <td>${workAttachment.createBy.name}</td>
+                                    <td><fmt:formatDate value="${workAttachment.createDate}" type="both"/></td>
+                                    <td class="op-td">
+                                        <div class="op-btn-box" >
+                                            <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${workAttachment.url}');" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+
+                                            <c:if test="${workAttachment.createBy.id eq fns:getUser().id}">
+                                                <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workAttachment.url}&id=${workAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i> 删除</a>
+                                            </c:if>
+                                        </div>
+                                    </td>
+                                </tr>
+                            </c:if>
+                        </c:forEach>
+                </tbody>
+                    </table>
+                </div>
+            </div>
+
+
+
+
+            <c:if test="${projectcontentinfo.infoId !=null and projectcontentinfo.edit  == 'edit'}">
+                <div class="pull-right">
+                    <button id="btnSubmit" class="nav-btn nav-btn-add" type="submit" onclick="$('#edit').val('edit');beforeSubmit();"><i class="fa fa-chevron-up"></i> 提 交</button>
+                </div>
+            </c:if>
+            <div class="form-group layui-row page-end">
+            <br>
+            <br>
+            <br>
+            </div>
+        </form:form>
+    </div>
+</div>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+</body>
+</html>

+ 879 - 0
src/main/webapp/webpage/modules/projectrecord/monthly/monthlyContentView.jsp

@@ -0,0 +1,879 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>工作内容详情管理</title>
+	<meta name="decorator" content="default"/>
+    <script src="${ctxStatic}/layer-v2.3/layui/xmSelect.js" charset="utf-8"></script>
+    <style>
+        #projectContentDataType-error{
+            left:0;
+            top:40px;
+        }
+    </style>
+	<script type="text/javascript">
+        $.fn.serializeJson=function(){
+            var serializeObj={};
+            var array=this.serializeArray();
+            var str=this.serialize();
+            $(array).each(function(){
+                if(serializeObj[this.name]){
+                    if($.isArray(serializeObj[this.name])){
+                        serializeObj[this.name].push(this.value);
+                    }else{
+                        serializeObj[this.name]=[serializeObj[this.name],this.value];
+                    }
+                }else{
+                    serializeObj[this.name]=this.value;
+                }
+            });
+            return serializeObj;
+        };
+
+        var validateForm;
+        var detailFlag =0;
+        function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+            if(validateForm.form()){
+
+                var length = document.getElementById("file_monthly");
+                var rows = length.rows.length;
+                if(rows<=0){
+                    layer.msg('请上传月报附件信息', {icon: 5});
+                    return false;
+                }
+
+                beforeSubmit();
+                $("#inputForm").submit();
+                return true;
+            }
+
+            return false;
+        }
+        function beforeSubmit() {
+            var contentDetaStr = '';
+            var contentTypeId = $("#projectContentDataSign").val();
+            /*if(contentTypeId !=24){
+                if(null !=encodeURIComponent(genDetailStr()) && '' != encodeURIComponent(genDetailStr())){
+                    contentDetaStr += encodeURIComponent(genDetailStr());
+                }
+                if(null !=encodeURIComponent(genSecondDetailStr()) && '' != encodeURIComponent(genSecondDetailStr())){
+                    contentDetaStr += encodeURIComponent(genSecondDetailStr());
+                }
+            }*/
+            if(detailFlag==1){
+                $("#contentDeta").val(contentDetaStr);
+            }
+            $(document.getElementById("projectContentDataType")).removeAttr("disabled");
+        }
+
+        $(function() {
+            var editVal = '${projectcontentinfo.edit}';
+
+            if($("#createDate").val()==null || $("#createDate").val()==''){
+                $("#createDate").val(getNowFormatDate());
+            }
+            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);
+                    }
+                }
+            });
+            var tp = "${projectcontentinfo.dictType}";
+            var tp2 = "${projectcontentinfo.projectContentData.id}"
+            if((tp!=null && tp!='')||(tp2!=null && tp2!='')){
+                $(document.getElementById("projectContentDataType")).attr("disabled","disabled");
+            }
+            initControlData("1");
+            $("#attachment_btn").click(function () {
+                $("#attachment_file").click();
+            });
+            $("#monthly_btn").click(function () {
+                $("#monthly_file").click();
+            });
+        });
+
+
+        function openDialogre(title,url,width,height,formId){
+
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                skin: 'three-btns',
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                btn: ['提交','关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    inputForm.attr("action","${ctx}/projectcontentinfo/projectcontentinfo/ajaxsaveBaseData");//表单提交成功后,从服务器返回的url在当前tab中展示
+                    var $document = iframeWin.contentWindow.document;
+                    formSubmitAjax($document,formId,index);
+                },
+                btn2: function(index){
+                }
+            });
+        }
+
+        function formSubmitAjax($document,inputForm,index){
+            var validateForm = $($document.getElementById(inputForm)).validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $($document.getElementById("#messageBox")).text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            if(validateForm.form()){
+                $($document.getElementById(inputForm)).ajaxSubmit({
+                    success:function(data) {
+                        if(!data.success){
+                            top.layer.msg("保存依据资料信息异常!",{icon:2});
+                            return false;
+                        }
+                        var idx = $("#workBaseDataList tr").length;
+                        addRowBaseData("#workBaseDataList",idx,workBaseDataTpl,data.body.workBasedData);
+                        parent.layer.msg(data.msg,{icon:1});
+                        top.layer.close(index)
+                    }
+                });
+            }
+        }
+
+        function getNowFormatDate() {
+            var date = new Date();
+            var seperator1 = "-";
+            var month = date.getMonth() + 1;
+            var strDate = date.getDate();
+            month = (month < 10)?"0"+month:month;
+            strDate = (strDate < 10)?"0"+strDate:strDate;
+            var currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate;
+            return currentdate;
+        }
+
+        function accordingBtn(obj, prefix){
+            //var id = $(prefix+"_id").val();
+            $(prefix+"_file").click();
+        }
+
+        function insertAccording(tValue,idx,prefix) {
+            var files = $(prefix+"_file")[0].files;
+            for(var i=0;i<files.length;i++) {
+                var file = files[i];
+                var attachmentId = "";
+                var attachmentFlag = "132";
+                console.log(file);
+                var timestamp = new Date().getTime();
+
+                var storeAs = "attachment-file/basedData/" + timestamp + "/" + file['name'];
+                var uploadPath = "http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/" + storeAs;
+                /*将这段字符串存到数据库即可*/
+                var divId = "_attachment";
+                multipartUploadWithSts(storeAs, file, attachmentId, attachmentFlag, uploadPath, divId, "0",1,idx,prefix);
+            }
+            $(prefix+"_file").val(123)
+        }
+
+
+
+        function addFile() {
+            $("#attachment_file").click();
+        }
+        function addMonthlyFile() {
+            $("#monthly_file").click();
+        }
+
+        function insertTitle(tValue){
+            var files = $("#attachment_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var attachmentId = "";
+            var attachmentFlag = "94";
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/projectContentData/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_attachment";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,0);}
+        }
+
+        function insertMonthlyTitle(tValue){
+            var files = $("#monthly_file")[0].files;            for(var i = 0;i<files.length;i++) {                var file = files[i];
+            var monthlyId = "";
+            var monthlyFlag = "94";
+            var timestamp=new Date().getTime();
+
+            var storeAs = "attachment-file/projectContentData/"+timestamp+"/"+file['name'];
+            var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+            var divId = "_monthly";
+            $("#addFile"+divId).show();
+            multipartUploadWithSts(storeAs, file,monthlyId,monthlyFlag,uploadPath,divId,0);}
+        }
+
+        function openDialogreControl(title,url,width,height,target){
+            if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){//如果是移动端,就使用自适应大小弹窗
+                width='auto';
+                height='auto';
+            }else{//如果是PC端,根据用户设置的width和height显示。
+
+            }
+            top.layer.open({
+                type: 2,
+                area: [width, height],
+                title: title,
+                skin: 'three-btns',
+                maxmin: true, //开启最大化最小化按钮
+                content: url ,
+                btn: ['提交','关闭'],
+                btn1: function(index, layero){
+                    var body = top.layer.getChildFrame('body', index);
+                    var iframeWin = layero.find('iframe')[0]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
+                    var inputForm = body.find('#inputForm');
+                    var top_iframe;
+                    if(target){
+                        top_iframe = target;//如果指定了iframe,则在改frame中跳转
+                    }else{
+                        top_iframe = top.getActiveTab().attr("name");//获取当前active的tab的iframe
+                    }
+                    inputForm.attr("target",top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+                    var $document = iframeWin.contentWindow.document;
+                    var index1 = parent.layer.load(0, {shade: [0.1, 'tranparent']});
+                    formSubmit($document,"inputForm",index,index1);
+                },
+                btn2: function(index){
+                    parent.layer.close(index)
+                },
+                end:function(index){
+                    parent.layer.close(index)
+                }
+            });
+        }
+        function formSubmit($document,inputForm,index,index1){
+            var validateForm = $($document.getElementById(inputForm)).validate({
+                submitHandler: function(form){
+                    loading('正在提交,请稍等...');
+                    form.submit();
+                },
+                errorContainer: "#messageBox",
+                errorPlacement: function(error, element) {
+                    $($document.getElementById("#messageBox")).text("输入有误,请先更正。");
+                    if (element.is(":checkbox")||element.is(":radio")||element.parent().is(".input-append")){
+                        error.appendTo(element.parent().parent());
+                    } else {
+                        error.insertAfter(element);
+                    }
+                }
+            });
+            if(validateForm.form()){
+                $($document.getElementById(inputForm)).ajaxSubmit({
+                    success:function(data) {
+                        parent.parent.layer.msg("操作成功",{icon:1})
+                        parent.parent.layer.close(index1)
+                        parent.layer.close(index1)
+                        parent.parent.layer.close(index)
+                        parent.layer.close(index)
+                        initGetControlData();
+                    },error:function(){
+                        parent.parent.layer.msg("操作失败",{icon:2})
+                        parent.parent.layer.close(index1)
+                        parent.layer.close(index1)
+                        parent.parent.layer.close(index)
+                        parent.layer.close(index)
+                        initControlData("1");
+                    }
+                });
+            }else {
+                parent.parent.layer.msg("信息未填写完整!", {icon: 2});
+                parent.layer.close(index1)
+                parent.parent.layer.close(index1)
+            }
+        }
+        /**
+         * 删除临时数据
+         */
+        function initControlData(obj,othis,del,tableId){
+            if(del == "del"){
+                proId = tableId;
+			}else{
+                proId = "";
+			}
+            $.ajax({
+                type:'post',
+                url:'${ctx}/projectcontroltable/projectControlTable/delControlData',
+                data:{
+                    "projectId":"${projectcontentinfo.project.id}",
+					"projectContentId":proId,
+					"flag":del
+                },
+                success:function(data){
+                    if(obj != "1"){
+                        if(data.flag){
+                            //$(othis).parent().parent().parent().remove();
+                            parent.layer.msg("数据删除成功",{icon:1})
+                            $(othis).remove()
+                        }else{
+                            parent.layer.msg("数据删除失败",{icon:2})
+                        }
+                    }
+                }
+            })
+        }
+
+        function getMatchDate(str){
+            var reDateTime = /^(?:19|20)[0-9][0-9]-(?:(?:0[1-9])|(?:1[0-2]))-(?:(?:[0-2][1-9])|(?:[1-3][0-1]))/
+            var date = (""+str).match(reDateTime);
+            if(date){
+                return date[0]
+            }else{
+                return "";
+            }
+        }
+
+        /**
+         * 获取临时数据
+         * @param obj
+         * @param othis
+         */
+        function initGetControlData(){
+            $.ajax({
+                type:'post',
+                url:'${ctx}/projectcontroltable/projectControlTable/getControlData',
+                data:{
+                    "projectId":"${projectcontentinfo.project.id}",
+                    "proId":"${projectcontentinfo.projectContentData.id}"
+                },
+                success:function(data){
+                    if(data){
+                        var htmlStr = '';
+                        data = data.list.projectControlTableList;
+                        for(var i=0;i<data.length;i++){
+                            htmlStr += "<tr id='tr"+i+"'>"+
+                                "   <td style='text-align:center;'>"+
+                                "	   "+data[i].tName+
+                                "	   <input type='hidden' name='projectContentData.projectControlTableList["+i+"].id' value='"+data[i].id+"'>"+
+                                "	   <input type='hidden' name='projectContentData.projectControlTableList["+i+"].tName' value='"+data[i].tName+"'>"+
+                                "	   <input type='hidden' name='projectContentData.projectControlTableList["+i+"].processName' value='"+data[i].processName+"'>"+
+                                "	   <input type='hidden' name='projectContentData.projectControlTableList["+i+"].pfId' value='"+data[i].pfId+"'>"+
+                                "   </td>"+
+                                "   <td style='text-align:center;'>" +
+                                "  			"+data[i].processName+
+                                "	   		<input type='hidden' name='projectContentData.projectControlTableList["+i+"].tType' value='"+data[i].tType+"'>"+
+                                "	</td>"+
+                                "   <td style='text-align:center;'>"+
+                                "  		"+data[i].tUser.name+
+                                "   </td>"+
+                                "   <td style='text-align:center;'>"+
+                                "  "+ getMatchDate(data[i].createDate)+
+                                //										"	    <input type='hidden' name='projectControlTableList["+i+"].createDate' value='"+data[i].createDate+"'>"+
+                                //										"	    <input type='hidden' name='projectControlTableList["+i+"].updateDate' value='"+data[i].updateDate+"'>"+
+                                //										"	    <input type='hidden' name='projectControlTableList["+i+"].delFlag' value='"+data[i].delFlag+"'>"+
+                                //										"	    <input type='hidden' name='projectControlTableList["+i+"].createBy.id' value='"+data[i].createBy.id+"'>"+
+                                "   </td>"+
+                                "   <td style='text-align:center;'>"+
+                                "   	<a href='javascript:void(0)' onclick=\"openDialogView('查看过程控制明细', '${ctx}/projectcontroltable/projectControlTable/form?view=view&id="+data[i].id+"','90%', '90%')\" class='btn btn-info btn-xs' ><i class='fa fa-search-plus'></i> 查看</a>"+
+                                "  		<a href=\"javascript:initControlData('0','#tr"+i+"','del','"+data[i].id+"')\" onclick=\"return confirmx('确认要删除该过程控制数据吗?', this.href)\"   class='btn btn-danger btn-xs'><i class='fa fa-trash'></i> 删除</a>"+
+                                "  </td>"+
+                                "</tr>";
+                        }
+                        if(htmlStr){
+                            $("#projectControlTables").html(htmlStr);
+                        }
+                    }
+                }
+            })
+        }
+
+        function formatNum(obj) {
+            var val = $(obj).val();
+            console.log("-----------val"+val);
+            if(!isNumber(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 isNumber(val){
+            if(val === "" || val ==null){
+                return false;
+            }
+            var regPos = /^\d+(\.\d+)?$/; //非负浮点数
+            var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数
+            if(regPos.test(val) || regNeg.test(val)){
+                return true;
+            }else{
+                return false;
+            }
+
+        }
+    </script>
+</head>
+<body>
+<div class="single-form">
+    <div class="container${container}">
+        <form:form id="inputForm" modelAttribute="projectcontentinfo" action="#" method="post" class="form-horizontal">
+            <form:hidden path="id"/>
+            <form:hidden path="edit"/>
+            <form:hidden path="parentIds"/>
+            <form:hidden path="project.id"/>
+            <form:hidden path="projectContentData.id"/>
+            <form:hidden path="projectContentData.contractId"/>
+            <input type="hidden" id="contentDeta" name="projectContentData.contentDetail">
+            <input type="hidden" id="dataBodyList" name="dataBodyList" value="">
+            <input type="hidden" id="projectContentDataSign" name="projectContentDataSign" value="">
+            <input type="hidden" id="modify"  value="${modify}">
+            <sys:message content="${message}"/>
+            <div class="form-group layui-row first lw12">
+                <div class="form-group-label"><h2>基本信息</h2></div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">项目名称:</label>
+                    <div class="layui-input-block">
+                        <form:input path="project.projectName" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">项目编号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="project.projectId" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">类型:</label>
+                    <div class="layui-input-block">
+                        <form:input path="projectContentData.type" value="按月出具跟踪咨询报告" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </div>
+                </div>
+                <div class="layui-item layui-col-sm6">
+                    <label class="layui-form-label">月报内容编号:</label>
+                    <div class="layui-input-block">
+                        <form:input path="monthlyNumber" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+                    </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="monthlyName" readonly="true" htmlEscape="false" class="form-control required layui-input"/>
+                    </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="projectContentData.master.name" htmlEscape="false"  readonly="true"  class="form-control layui-input required"/>
+                        <form:hidden path="projectContentData.master.id" 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  id="monthlyDate" name="monthlyDate" readonly="true"  type="text" class="form-control layui-input required"
+                               value="<fmt:formatDate value="${projectcontentinfo.monthlyDate}" pattern="yyyy-MM"/>"/>
+                    </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 id="createDate" name="projectContentData.createDate" type="text" readonly="true" maxlength="20" class="form-control layui-input required"
+                               value="<fmt:formatDate value="${createDate}" pattern="yyyy-MM-dd"/>"/>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>月报基本内容信息</h2></div>
+                <div class="layui-item layui-col-sm12 with-textarea">
+                    <div class="layui-input-block">
+                        <form:textarea path="monthlyContent" readonly="true" htmlEscape="false" maxlength="1000" rows="6"    class="form-control"/>
+                    </div>
+                </div>
+            </div>
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>依据性资料明细</h2></div>
+                <div class="layui-item layui-col-xs12 form-table-container">
+                    <table id="contentTableBase" class="table table-bordered table-condensed details">
+                        <thead>
+                        <tr>
+                            <th class="hide"></th>
+                            <th >资料编号</th>
+                            <th >资料名称</th>
+                            <th >资料类别</th>
+                            <th >上传人</th>
+                            <th >上传日期</th>
+                        </tr>
+                        </thead>
+                        <tbody id="workBaseDataList">
+                        <c:forEach items="${projectcontentinfo.projectContentData.projectBasedDataList}" var="projectBasedData" varStatus="idx">
+                            <tr>
+                                <td class="hide">
+                                    <input type="hidden" id="workBaseDataList${idx.index}_id" value="${projectBasedData.id}" class="clientId">
+                                </td>
+                                <td style="text-align:center;">
+                                        ${projectBasedData.number}
+                                </td>
+                                <td style="text-align:center;">
+                                        ${projectBasedData.name}
+                                </td>
+                                <td style="text-align:center;">
+                                        ${fns:getDictLabel(projectBasedData.type, 'project_document_type', '')}
+                                </td>
+                                <td style="text-align:center;">
+                                        ${projectBasedData.uploadUser.name}
+                                </td>
+                                <td style="text-align:center;">
+                                    <fmt:formatDate value="${projectBasedData.uploadDate}" pattern="yyyy-MM-dd"/>
+                                </td>
+                            </tr>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+            <script type="text/template" id="workBaseDataTpl">//<!--
+                <tr id="budgetList{{idx}}">
+                    <td class="hide">
+                        <input id="workBaseDataList{{idx}}_id" name="projectContentData.projectBasedDataList[{{idx}}].id" type="hidden" value="{{row.id}}" class="clientId"/>
+                        <input id="workBaseDataList{{idx}}_number" name="projectContentData.projectBasedDataList[{{idx}}].number" type="hidden" value="{{row.number}}"/>
+                        <input id="workBaseDataList{{idx}}_name" name="projectContentData.projectBasedDataList[{{idx}}].name" type="hidden" value="{{row.name}}"/>
+                        <input id="workBaseDataList{{idx}}_type" name="projectContentData.projectBasedDataList[{{idx}}].type" type="hidden" value="{{row.type}}"/>
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.number}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.name}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.typeLabel}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.uploadUser.name}}
+                    </td>
+                    <td style="text-align:center;">
+                        {{row.uploadDate}}
+                    </td>
+                    <td class="text-center op-td">
+                        <a href=javascript:void(0); onclick="delRowBaseData(this, '#workBaseDataList{{idx}}','{{row.uploadUser.id}}')"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
+                    </td>
+                </tr>//-->
+            </script>
+            <script type="text/javascript">
+                var workBaseDataTpl = $("#workBaseDataTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+                var workBaseDataRowIdx = ${fn:length(projectcontentinfo.projectReportData.projectBasedDataList)};
+                function setValuee(obj){
+                    for(var i=0;i<obj.length;i++){
+                        var idArr = $("#workBaseDataList tr:visible .clientId");
+                        if(obj[i].id!=''&&!hasInArr(obj[i].id,idArr)){
+                            addRowBaseData("#workBaseDataList",workBaseDataRowIdx,workBaseDataTpl,obj[i]);
+                            workBaseDataRowIdx=workBaseDataRowIdx+1;
+                        }
+                    }
+                }
+                function hasInArr(id,idArr) {
+                    for(var i=0;i<idArr.length;i++){
+                        if(id==$(idArr[i]).val()){
+                            return true;
+                        }
+                    }
+                    return false;
+                }
+                function existBaseData(id,length) {
+                    for (var i=0;i<length;i++) {
+                        var val = $('#workBaseDataList'+i+'_id').val();
+                        if(id==val){
+                            return true;
+                        }
+                    }
+                    return false;
+                }
+
+                function addRowBaseData(list, idx, tpl, row){
+                    bornTemplete(list, idx, tpl, row, idx);
+                }
+
+                function bornTemplete(list, idx, tpl, row, idx1){
+                    var idx1 = $("#workBaseDataList 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 delRowBaseData(obj, prefix,userId){
+                    var id = $(prefix+"_id").val();
+                    var currentUser = '${fns:getUser().id}';
+                    var contentId = '${projectcontentinfo.projectContentData.id}';
+                    console.log(contentId);
+                    var condition = "${flag}";
+                    $.ajax({
+                        type:"post",
+                        url:'${ctx}/projectcontentinfo/projectContentData/ajaxdelete',
+                        data:{"contentId":contentId,"basedId":id,"condition":condition},
+                        dataType:"json",
+                        success:function(data){
+                            if(data.success) {
+                                if("according" == condition || "completion" == condition || "early" == condition || "claim" == condition || "design" == condition || "visa" == condition || "interim" == condition || "distribution" == condition ){
+                                    $(obj).parent().parent().parent().remove();
+                                }else{
+                                    $(obj).parent().parent().remove();
+                                }
+                                if(data.body.inuse){
+                                    return;
+                                }
+                                if (currentUser == userId) {
+                                    confirmDelete('是否同步删除资料库的文件?','${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+id+'&id=${projectcontentinfo.id}&type=1');
+                                }
+                            }else {
+                                top.layer.msg("删除依据资料失败!", {icon: 0});
+                            }
+                        }
+                    })
+                    return;
+                }
+
+                function confirmDelete(mess, href){
+                    top.layer.confirm(mess, {icon: 3, title:'系统提示'}, function(index){
+                        //do something
+                        if (typeof href == 'function') {
+                            href();
+                        }else{
+                            $.ajax({
+                                url:href,
+                                type:"post",
+                                success:function(data){
+                                    if(data.success){
+                                        top.layer.msg("删除依据资料成功!", {icon: 0});
+                                    }
+                                }
+                            });
+                        }
+                        top.layer.close(index);
+                    });
+                    return false;
+                }
+            </script>
+            <%--<div class="form-group layui-row">
+                <div class="form-group-label"><h2>过程控制明细</h2></div>
+                <div class="layui-item nav-btns">
+                    <a href="javascript:void(0)" onclick="openDialogreControl('新增控制表格', '${ctx}/projectcontroltable/projectControlTable/form?pfId=${projectcontentinfo.project.id}','90%','90%',false,'inputForm')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
+                </div>
+                <div class="layui-item layui-col-xs12 form-table-container">
+                    <table id="contentTable" class="table table-bordered table-condensed details">
+                        <thead>
+                            <tr>
+                                <th  >表格名称</th>
+                                <th  >表格类型</th>
+                                <th  >负责人</th>
+                                <th  >创建日期</th>
+                                <th>操作</th>
+                            </tr>
+                        </thead>
+                        <tbody id="projectControlTables">
+                    <c:choose>
+                        <c:when test="${not empty projectcontentinfo.projectContentData.projectControlTableList}">
+                            <c:forEach items="${projectcontentinfo.projectContentData.projectControlTableList}" var="projectControlTable" varStatus="status">
+                                <tr id="tr${status.index}">
+                                    <td style="text-align:center;">
+                                            ${projectControlTable.tName}
+                                        <input type="hidden" name="projectContentData.projectControlTableList[${status.index}].id" value="${projectControlTable.id}">
+                                        <input type="hidden" name="projectContentData.projectControlTableList[${status.index}].tName" value="${projectControlTable.tName}">
+                                        <input type="hidden" name="projectContentData.projectControlTableList[${status.index}].pfId" value="${projectControlTable.pfId}">
+                                    </td>
+                                    <td style="text-align:center;">
+                                            ${projectControlTable.processName}
+                                        <input type="hidden" name="projectContentData.projectControlTableList[${status.index}].tType" value="${projectControlTable.tType}">
+                                    </td>
+                                    <td style="text-align:center;">
+                                            ${projectControlTable.tUser.name}
+                                    </td>
+                                    <td style="text-align:center;">
+                                        <fmt:formatDate value="${projectControlTable.createDate}" pattern="yyyy-MM-dd" />
+                                            &lt;%&ndash;<input type="hidden" name="projectControlTableList[${status.index}].createDate" value="${projectControlTable.createDate}">&ndash;%&gt;
+                                            &lt;%&ndash;<input type="hidden" name="projectControlTableList[${status.index}].updateDate" value="${projectControlTable.updateDate}">&ndash;%&gt;
+                                            &lt;%&ndash;<input type="hidden" name="projectControlTableList[${status.index}].delFlag" value="${projectControlTable.delFlag}">&ndash;%&gt;
+                                            &lt;%&ndash;<input type="hidden" name="projectControlTableList[${status.index}].createBy.id" value="${projectControlTable.createBy.id}">&ndash;%&gt;
+                                    </td>
+                                    <td class="op-td text-center">
+                                        <div class="op-btn-box">
+                                        <a href="#" onclick="openDialogView('查看过程控制明细', '${ctx}/projectcontroltable/projectControlTable/form?id=${projectControlTable.id}&view=view','90%', '90%')" class="op-btn op-btn-view" ><i class="fa fa-search-plus"></i> 查看</a>
+                                        <a href="javascript:initControlData('0','#tr${status.index}','del','${projectControlTable.id}')" onclick="return confirmx('确认要删除该过程控制数据吗?', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
+                                        </div>
+                                    </td>
+                                </tr>
+                            </c:forEach>
+                        </c:when>
+                        <c:otherwise>
+                            <tr>
+                                <td colspan="5" align="center">暂无数据</td>
+                            </tr>
+                        </c:otherwise>
+                    </c:choose>
+                    </tbody>
+                    </table>
+                </div>
+            </div>--%>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2><span class="require-item">*</span>月报附件信息</h2></div>
+                <div id="addFile_monthly" style="display: none" class="upload-progress">
+                    <span id="fileName_monthly" ></span>
+                    <b><span id="baifenbi_monthly" ></span></b>
+                    <div class="progress">
+                        <div id="jindutiao_monthly" class="progress-bar" style="width: 0%" aria-valuenow="0">
+                        </div>
+                    </div>
+                </div>
+                <input id="monthly_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertMonthlyTitle(this.value);"/>
+                <span id="monthly_title"></span>
+                <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                    <table id="upMonthlyTable" class="table table-bordered table-condensed details">
+                        <thead>
+                        <tr>
+                            <th>文件名称</th>
+                            <th>上传人</th>
+                            <th>上传时间</th>
+                            <th width="150px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="file_monthly">
+                        <c:forEach items="${projectcontentinfo.projectContentData.workAttachments}" var = "workAttachment" varStatus="status">
+                            <c:if test="${workAttachment.divIdType =='_monthly'}">
+                                <tr>
+                                    <c:choose>
+                                        <c:when test="${fn:containsIgnoreCase(workAttachment.attachmentName,'jpg')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'png')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'gif')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'bmp')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'jpeg')}">
+                                            <td><img src="${workAttachment.url}" width="50" height="50" alt="${workAttachment.attachmentName}"/></td>
+                                        </c:when>
+                                        <c:otherwise>
+                                            <c:choose>
+                                                <c:when test="${fn:containsIgnoreCase(workAttachment.attachmentName,'pdf')}">
+                                                    <td><a href="javascript:void(0)" onclick="preview('预览','${workAttachment.url}','90%','90%','1')">${workAttachment.attachmentName}</a></td>
+                                                </c:when>
+                                                <c:otherwise>
+                                                    <td><a href="javascript:void(0)" onclick="preview('预览','${workAttachment.url}','90%','90%')">${workAttachment.attachmentName}</a></td>
+                                                </c:otherwise>
+                                            </c:choose>
+                                        </c:otherwise>
+                                    </c:choose>
+                                    <td>${workAttachment.createBy.name}</td>
+                                    <td><fmt:formatDate value="${workAttachment.createDate}" type="both"/></td>
+                                    <td class="op-td">
+                                        <div class="op-btn-box" >
+                                            <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${workAttachment.url}');" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                        </div>
+                                    </td>
+                                </tr>
+                            </c:if>
+                        </c:forEach>
+                        </tbody>
+                    </table>
+                </div>
+            </div>
+
+            <div class="form-group layui-row">
+                <div class="form-group-label"><h2>附件信息</h2></div>
+                <div id="addFile_attachment" style="display: none" class="upload-progress">
+                    <span id="fileName_attachment" ></span>
+                    <b><span id="baifenbi_attachment" ></span></b>
+                    <div class="progress">
+                        <div id="jindutiao_attachment" class="progress-bar" style="width: 0%" aria-valuenow="0">
+                        </div>
+                    </div>
+                </div>
+                <input id="attachment_file" type="file" name="attachment_file" multiple="multiple" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+                <span id="attachment_title"></span>
+                <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+                    <table id="upTable" class="table table-bordered table-condensed details">
+                        <thead>
+                            <tr>
+                            <th>文件名称</th>
+                            <th>上传人</th>
+                            <th>上传时间</th>
+                            <th width="150px">操作</th>
+                        </tr>
+                        </thead>
+                        <tbody id="file_attachment">
+                        <c:forEach items="${projectcontentinfo.projectContentData.workAttachments}" var = "workAttachment" varStatus="status">
+                            <c:if test="${workAttachment.divIdType =='_attachment'}">
+                                <tr>
+                                    <c:choose>
+                                        <c:when test="${fn:containsIgnoreCase(workAttachment.attachmentName,'jpg')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'png')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'gif')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'bmp')
+                                                                               or fn:containsIgnoreCase(workAttachment.attachmentName,'jpeg')}">
+                                            <td><img src="${workAttachment.url}" width="50" height="50" alt="${workAttachment.attachmentName}"/></td>
+                                        </c:when>
+                                        <c:otherwise>
+                                            <c:choose>
+                                                <c:when test="${fn:containsIgnoreCase(workAttachment.attachmentName,'pdf')}">
+                                                    <td><a href="javascript:void(0)" onclick="preview('预览','${workAttachment.url}','90%','90%','1')">${workAttachment.attachmentName}</a></td>
+                                                </c:when>
+                                                <c:otherwise>
+                                                    <td><a href="javascript:void(0)" onclick="preview('预览','${workAttachment.url}','90%','90%')">${workAttachment.attachmentName}</a></td>
+                                                </c:otherwise>
+                                            </c:choose>
+                                        </c:otherwise>
+                                    </c:choose>
+                                    <td>${workAttachment.createBy.name}</td>
+                                    <td><fmt:formatDate value="${workAttachment.createDate}" type="both"/></td>
+                                    <td class="op-td">
+                                        <div class="op-btn-box" >
+                                            <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${workAttachment.url}');" class="op-btn op-btn-download"><i class="fa fa-download"></i>&nbsp;下载</a>
+                                        </div>
+                                    </td>
+                                </tr>
+                            </c:if>
+                        </c:forEach>
+                </tbody>
+                    </table>
+                </div>
+            </div>
+            <div class="form-group layui-row page-end">
+            <br>
+            <br>
+            <br>
+            </div>
+        </form:form>
+    </div>
+</div>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+</body>
+</html>