Enford 5 yıl önce
ebeveyn
işleme
c27cb14926

+ 34 - 0
src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/util/Result.java

@@ -0,0 +1,34 @@
+package com.jeeplus.modules.sg.managementcenter.constructionProject.util;
+
+import java.util.List;
+import java.util.Map;
+
+public class Result {
+    private boolean success;
+    private String  message;
+    private List<Map<String,Object>> mapList;
+
+    public boolean isSuccess() {
+        return success;
+    }
+
+    public void setSuccess(boolean success) {
+        this.success = success;
+    }
+
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    public List<Map<String, Object>> getMapList() {
+        return mapList;
+    }
+
+    public void setMapList(List<Map<String, Object>> mapList) {
+        this.mapList = mapList;
+    }
+}

+ 127 - 4
src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/util/TreeTableUtil.java

@@ -5,11 +5,11 @@ import com.google.common.collect.Maps;
 import com.jeeplus.modules.sg.managementcenter.constructionProject.entity.ConstructionProject;
 import org.hibernate.validator.constraints.EAN;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 public class TreeTableUtil {
+    //树生成
     public static List<Map<String,Object>> getBootstrapTreeTable(List<Map<String,Object>> objects,List<ConstructionProject> constructionProjects){
         List<ConstructionProject> lineNames = new ArrayList<ConstructionProject>();
         Map<String,Object> maps = Maps.newHashMap();
@@ -25,7 +25,7 @@ public class TreeTableUtil {
             if (flag){
                 lineNames.add(constructionProject);
                 maps = Maps.newHashMap();
-                maps.put("id",constructionProject.getId());
+                maps.put("id",constructionProject.getId()+"line");
                 maps.put("name",constructionProject.getLineName());
                 getTreeChild(maps,constructionProjects,constructionProject.getLineName());
                 objects.add(maps);
@@ -49,4 +49,127 @@ public class TreeTableUtil {
             mapList.put("children",lists);
         }
     }
+    //获取月份
+    public static List<ConstructionProject> getMonths(List<ConstructionProject> constructionProjects,String time){
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+        String arrangeTime = "";//安排计划
+        List<ConstructionProject> constructionProjectList = new ArrayList<ConstructionProject>();
+        for (ConstructionProject constructionProject:constructionProjects){
+            if (null!=constructionProject.getArrangeTime()){
+                arrangeTime = sdf.format(constructionProject.getArrangeTime());
+                if (arrangeTime.equals(time)){
+                    constructionProjectList.add(constructionProject);
+                }
+            }
+        }
+        return constructionProjectList;
+    }
+    //右侧树
+
+
+//    //右边树形表格
+//    public static List<Map<String,Object>> getParentConstructionMap(List<Map<String, Object>> mapList,List<ConstructionProject> constructionProjects){
+//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+//        Map<String,Object> map = new HashMap<String, Object>();
+//        List<ConstructionProject> constructionProjectList = new ArrayList<ConstructionProject>();
+//        boolean flag = false;
+//        for (ConstructionProject constructionProject:constructionProjects){
+//            flag = true;
+//            for (ConstructionProject constructionProject1:constructionProjectList){
+//                int i = constructionProject1.getArrangeTime().compareTo(constructionProject.getArrangeTime());
+//                if (i==0){
+//                    flag = false;
+//                    break;
+//                }
+//            }
+//            if (flag){
+//                constructionProjectList.add(constructionProject);
+//                map = Maps.newHashMap();
+//                String format = sdf.format(constructionProject.getArrangeTime());
+//                map.put("id",constructionProject.getId()+"time");
+//                map.put("name",format);
+//                getRightChildTable(map,constructionProjects,constructionProject.getArrangeTime());
+//                mapList.add(map);
+//            }
+//        }
+//        return mapList;
+//    }
+//    public static void getRightChildTable(Map<String,Object> mapList, List<ConstructionProject> constructionProjects, Date date){
+//        List<Map<String,Object>> lists = Lists.newArrayList();
+//        Map<String,Object> maps =Maps.newHashMap();
+//        List<ConstructionProject> constructionProjects1 = new ArrayList<ConstructionProject>();
+//        boolean flag = false;
+//        for (ConstructionProject constructionProject:constructionProjects){
+//            int i = date.compareTo(constructionProject.getArrangeTime());
+//            if (i==0){
+//                flag = true;
+//                for (ConstructionProject constructionProject1:constructionProjects1){
+//                    if (constructionProject.getLineName().equals(constructionProject1.getLineName())){
+//                        flag = false;
+//                        break;
+//                    }
+//                }
+//                if (flag){
+//                    constructionProjects1.add(constructionProject);
+//                    maps = Maps.newHashMap();
+//                    maps.put("id",constructionProject.getId()+"line");
+//                    maps.put("name",constructionProject.getLineName());
+//                    getRightChildTable2(maps,constructionProjects,constructionProject.getLineName(),date);
+//                    lists.add(maps);
+//                }
+//            }
+//        }
+//        if (lists.size()>0){
+//            mapList.put("children",lists);
+//        }
+//    }
+//    //获取项目名称
+//    public static void getRightChildTable2(Map<String,Object> mapList, List<ConstructionProject> constructionProjects, String lineName,Date date){
+//        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");
+//        List<Map<String,Object>> lists = Lists.newArrayList();
+//        Map<String,Object> maps =Maps.newHashMap();
+//        String str = "";
+//        for (ConstructionProject constructionProject:constructionProjects){
+//            if (lineName.equals(constructionProject.getLineName())){
+//                int i = date.compareTo(constructionProject.getArrangeTime());
+//                if (i==0){
+//                    maps = Maps.newHashMap();
+//                    maps.put("id",constructionProject.getId());
+//                    if (null!=constructionProject.getSpecificTime()){
+//                       str =  constructionProject.getProjectName()+"(具体时间安排为:"+sdf.format(constructionProject.getSpecificTime())+")";
+//                    }else {
+//                        str =  constructionProject.getProjectName()+"(暂无时间安排)";
+//                    }
+//                    maps.put("name",str);
+//                    lists.add(maps);
+//                }
+//            }
+//        }
+//        if (lists.size()>0){
+//            mapList.put("children",lists);
+//        }
+//    }
+
+    //获取id类型
+    public static String getConstructionId(ConstructionProject constructionProject){
+        String projectId = "";
+        String cid= "";
+        String status = "";//状态默认为0
+        if (null!=constructionProject.getId()&&!"".equals(constructionProject.getId())){
+            cid = constructionProject.getId();
+            projectId = cid.substring(0,cid.length()-4);
+            if (cid.substring(cid.length()-4).equals("time")){
+                status = "time";
+            }
+            if (cid.substring(cid.length()-4).equals("line")){
+                status = "line";
+            }
+        }
+        if ("".equals(status)){
+            constructionProject.setId(constructionProject.getId());
+        }else {
+            constructionProject.setId(projectId);
+        }
+        return status;
+    }
 }

+ 151 - 1
src/main/java/com/jeeplus/modules/sg/managementcenter/constructionProject/web/ConstructionProjectController.java

@@ -4,6 +4,7 @@
 package com.jeeplus.modules.sg.managementcenter.constructionProject.web;
 
 import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 import com.jeeplus.common.json.AjaxJson;
 import com.jeeplus.common.utils.StringUtils;
 import com.jeeplus.core.persistence.Page;
@@ -12,7 +13,11 @@ import com.jeeplus.modules.sg.managementcenter.constructionProject.entity.Constr
 import com.jeeplus.modules.sg.managementcenter.constructionProject.service.ConstructionProjectService;
 import com.jeeplus.modules.sg.managementcenter.constructionProject.util.ImportProUtil;
 import com.jeeplus.modules.sg.managementcenter.constructionProject.util.ImportUtil;
+import com.jeeplus.modules.sg.managementcenter.constructionProject.util.Result;
 import com.jeeplus.modules.sg.managementcenter.constructionProject.util.TreeTableUtil;
+import com.jeeplus.modules.test.tree.dialog.entity.TestTree1;
+import com.jeeplus.modules.test.treetable.dialog.entity.CarKind1;
+import com.jeeplus.modules.test.treetable.dialog.service.CarKind1Service;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
@@ -25,7 +30,10 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.text.ParsePosition;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -36,6 +44,8 @@ public class ConstructionProjectController extends BaseController {
 
 	@Autowired
 	private ConstructionProjectService constructionProjectService;
+	@Autowired
+	private CarKind1Service carKind1Service;
 	
 	@ModelAttribute
 	public ConstructionProject get(@RequestParam(required=false) String id) {
@@ -63,10 +73,33 @@ public class ConstructionProjectController extends BaseController {
 	@RequestMapping(value = "bootstrapTreeTable")
 	public List<Map<String,Object>> getBootstrapTreeTable(ConstructionProject constructionProject){
 		List<Map<String,Object>> objects = Lists.newArrayList();
+		constructionProject.setProjectStatus("0");
 		List<ConstructionProject> constructionProjects = constructionProjectService.findList(constructionProject);
 		List<Map<String, Object>> bootstrapTreeTables = TreeTableUtil.getBootstrapTreeTable(objects, constructionProjects);
 		return bootstrapTreeTables;
 	}
+	//右侧列表
+	@ResponseBody
+	@RequestMapping(value = "treeData")
+	public List<Map<String, Object>> treeData(ConstructionProject constructionProject) {
+		constructionProject.setProjectStatus("1");
+		List<Map<String, Object>> parentConstructionMap = getMapListRight(constructionProject);
+		return parentConstructionMap;
+	}
+
+	@ResponseBody
+	@RequestMapping(value = "treeDataAjax")
+	public Result treeDataAjax(ConstructionProject constructionProject) {
+		Result result = new Result();
+		List<Map<String,Object>> mapList = Lists.newArrayList();
+		constructionProject.setProjectStatus("1");
+		List<Map<String, Object>> parentConstructionMap = getMapListRight(constructionProject);
+		result.setMapList(parentConstructionMap);
+		result.setSuccess(true);
+		result.setMessage("成功");
+		return result;
+	}
+
 		/**
 	 * 列表数据
 	 */
@@ -85,7 +118,7 @@ public class ConstructionProjectController extends BaseController {
 	@RequestMapping(value = "form")
 	public String form(ConstructionProject constructionProject, Model model) {
 		model.addAttribute("constructionProject", constructionProject);
-		return "modules/sg/managementcenter/materialproject/materialProjectForm";
+		return "modules/sg/managementcenter/constructionProject/constructionForm";
 	}
 
 	/**
@@ -163,4 +196,121 @@ public class ConstructionProjectController extends BaseController {
 		}
 		return j;
 	}
+
+	/**
+	 * 安排计划
+	 * @return ajax
+	 */
+	@ResponseBody
+	@RequestMapping(value = "unplanned")
+	public Result getUnplanned(String ids, ConstructionProject constructionProject,String time){
+		Result result = new Result();
+		try{
+			String idArray[] =ids.split(",");
+			String str ="";
+			SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM");
+			Date date = formatter.parse(time);
+			constructionProject.setArrangeTime(date);
+			for(String id : idArray){
+				str = id.substring(id.length()-4);
+				if (!str.equals("line")){
+					constructionProject.setId(id);
+					constructionProject.setProjectStatus("1");
+					constructionProjectService.updateStatus(constructionProject);
+				}
+			}
+			constructionProject.setProjectStatus("1");
+			constructionProject.setId("");
+			List<Map<String, Object>> parentConstructionMap = getMapListRight(constructionProject);
+			result.setSuccess(true);
+			result.setMapList(parentConstructionMap);
+			result.setMessage("安排计划成功");
+		}catch (Exception e){
+			result.setSuccess(false);
+			result.setMessage("安排计划失败");
+		}
+		return result;
+	}
+	/**
+	 * 安排计划
+	 * @return ajax
+	 */
+	@ResponseBody
+	@RequestMapping(value = "unplannedMinus")
+	public Result getUnplannedMinus(String ids,ConstructionProject constructionProject,String time){
+		Result result = new Result();
+		try {
+			String idArray[] =ids.split(",");
+			String str ="";
+			for(String id : idArray){
+				str = id.substring(id.length()-4);
+				if (!str.equals("line")){
+					constructionProject.setId(id);
+					constructionProject.setProjectStatus("0");
+					constructionProjectService.updateStatus(constructionProject);
+				}
+			}
+			constructionProject.setProjectStatus("1");
+			constructionProject.setId("");
+			SimpleDateFormat formatter = new SimpleDateFormat( "yyyy-MM");
+			Date date = formatter.parse(time);
+			constructionProject.setArrangeTime(date);
+			List<Map<String, Object>> parentConstructionMap = getMapListRight(constructionProject);
+			result.setSuccess(true);
+			result.setMapList(parentConstructionMap);
+			result.setMessage("取消计划成功");
+		}catch (Exception e){
+			result.setSuccess(false);
+			result.setMessage("取消计划失败");
+		}
+		return result;
+	}
+
+	//	@RequiresPermissions(value={"managementcenter:materialproject:view","managementcenter:materialproject:add","managementcenter:materialproject:edit"},logical=Logical.OR)
+	@RequestMapping(value = "formPlan")
+	public String formPlan(ConstructionProject constructionProject, Model model) {
+		String originalId = constructionProject.getId();
+		constructionProject.setProjectStatus("2");
+		String constructionId = TreeTableUtil.getConstructionId(constructionProject);
+		if ("".equals(constructionId)){
+			model.addAttribute("constructionId","0");//项目
+		}
+		if ("line".equals(constructionId)){
+			model.addAttribute("constructionId","1");
+		}
+		constructionProject = get(constructionProject.getId());
+		constructionProject.setId(originalId);
+		model.addAttribute("constructionProject", constructionProject);
+		return "modules/sg/managementcenter/constructionProject/constructionPlanForm";
+	}
+
+	/**
+	 * 计划安排时间修改
+	 * @param constructionProject
+	 * @return
+	 */
+	@ResponseBody
+	@RequestMapping(value = "unplannedPlan")
+	public AjaxJson getUnplannedPlan(ConstructionProject constructionProject,Date historyTime){
+		AjaxJson j = new AjaxJson();
+		constructionProject.setProjectStatus("1");
+		constructionProjectService.updateSpecificTime(constructionProject,historyTime);
+		j.setMsg("设置时间成功");
+		return j;
+	}
+
+	public List<Map<String,Object>> getMapListRight(ConstructionProject constructionProject){
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
+		String time = "";
+		if (null!=constructionProject.getArrangeTime()){
+			time = sdf.format(constructionProject.getArrangeTime());
+			constructionProject.setArrangeTime(null);
+		}else {
+			time = sdf.format(new Date());
+		}
+		List<Map<String,Object>> mapList = Lists.newArrayList();
+		List<ConstructionProject> constructionProjects = constructionProjectService.findList(constructionProject);
+		List<ConstructionProject> constructionProjectList = TreeTableUtil.getMonths(constructionProjects, time);
+		return TreeTableUtil.getBootstrapTreeTable(mapList, constructionProjectList);
+	}
 }

BIN
src/main/webapp/static/common/images/icon_left.png


+ 64 - 0
src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionForm.jsp

@@ -0,0 +1,64 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>物料计划管理</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+
+		$(document).ready(function() {
+            $("#ids").val(jp.getParent().getIds());
+	        $('#deliverySchedule').datetimepicker({
+                format: "YYYY-MM"
+            });
+		});
+		function save() {
+		    var dateTimeId = $("#dateTimeId").val();
+            var isValidate = jp.validateForm('#inputForm');//校验表单
+            if(!isValidate){
+                return false;
+			}else{
+                jp.loading();
+                jp.post("${ctx}/sg/managementCenter/constructionProject/unplanned",$('#inputForm').serialize(),function(data){
+                    if(data.success){
+                        jp.getParent().refreshjstree();
+                        jp.getParent().jstreeTime(data.mapList);//渲染
+						jp.getParent().dateTimeValue(dateTimeId);
+                        var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+                        parent.layer.close(dialogIndex);
+                        jp.success(data.message);
+                        jp.getParent().jstreeTime(data.mapList);//渲染
+                    }else{
+                        jp.error(data.Message);
+                    }
+                })
+			}
+
+        }
+	</script>
+</head>
+<body class="bg-white">
+		<form:form id="inputForm" modelAttribute="constructionProject" class="form-horizontal">
+		<form:hidden path="id"/>	
+		<table class="table table-bordered">
+			<tbody>
+				<tr>
+					<td class="width-15 active"><label class="">id:</label></td>
+					<td class="width-35">
+						<input class="form-control" id="ids" name="ids" value=""/>
+					</td>
+					<td class="width-15 active"><label class="">选择计划时间:</label></td>
+					<td class="width-35">
+						<div class='input-group form_datetime' id='deliverySchedule'>
+							<input type='text'  name="arrangeTime" class="form-control required" id="dateTimeId" value="<fmt:formatDate value="${constructionProject.arrangeTime}" pattern="yyyy-MM"/>"/>
+								<span class="input-group-addon">
+			                        <span class="glyphicon glyphicon-calendar"></span>
+			                    </span>
+						</div>
+					</td>
+				</tr>
+			</tbody>
+		</table>
+	</form:form>
+</body>
+</html>

+ 196 - 96
src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionList.js

@@ -3,104 +3,204 @@
 		$(document).ready(function() {
 		//zTree初始化
 			$.getJSON("${ctx}/sg/managementCenter/constructionProject/bootstrapTreeTable",function(data){
-				$('#jstree').treeview({
-					data: data,
-					levels: 1,
-                    highlightSelected:true,
-                    // multiSelect:true,
-                    showCheckbox:true,
-		            // onNodeSelected: function(event, treeNode) {
-					// 	alert(treeNode.id);
-		            // 	// var id = treeNode.id == '0' ? '' :treeNode.id;
-					// 	// if(treeNode.level == 1){//level=0 代表公司
-					// 	// 	$("#companyId").val(id);
-					// 	// 	$("#companyName").val(treeNode.text);
-					// 	// 	$("#officeId").val("");
-					// 	// 	$("#officeName").val("");
-					// 	// }else{
-					// 	// 	$("#companyId").val("");
-					// 	// 	$("#companyName").val("");
-					// 	// 	$("#officeId").val(id);
-					// 	// 	$("#officeName").val(treeNode.text);
-					// 	// }
-		            // },
-		         });
+                jstree(data);
+                dateTimeValue('1');
 			});
-            $testTree1TreeTable=$('#testTree1TreeTable').treeTable({
-                theme:'vsStyle',
-                expandLevel : 2,
-                column:0,
-                checkbox: false,
-                url:'${ctx}/test/tree/dialog/testTree1/getChildren?parentId=',
-                callback:function(item) {
-                    var treeTableTpl= $("#testTree1TreeTableTpl").html();
-                    item.dict = {};
-
-                    var result = laytpl(treeTableTpl).render({
-                        row: item
-                    });
-                    return result;
-                },
-                beforeClick: function($testTree1TreeTable, id) {
-                    //异步获取数据 这里模拟替换处理
-                    $testTree1TreeTable.refreshPoint(id);
-                },
-                beforeExpand : function($testTree1TreeTable, id) {
-                },
-                afterExpand : function($testTree1TreeTable, id) {
-                },
-                beforeClose : function($testTree1TreeTable, id) {
-
+            $('#selectId').click(function () {
+                var object = $('#jstree').treeview('getChecked');
+                if (object.length<1){
+                    jp.error("请选择项目!")
+                    return false;
+                }
+                var str = "";
+                for (var  i = 0; i < object.length; i++) {
+                    str+=object[i].id+",";
+                }
+                var sureStr  = str.substring(0,str.length-1);
+                $("#parentIds").val(sureStr);
+                add(sureStr);
+            });
+            //搜索
+            var findSearchableNodes = function() {
+                return $('#jstree').treeview('search', [ $.trim($('#input-search').val()), { ignoreCase: false, exactMatch: false } ]);
+            };
+            var search = function(e) {
+                var pattern = $.trim($('#input-search').val());
+                var options = {
+                    ignoreCase: $('#chk-ignore-case').is(':checked'),
+                    exactMatch: $('#chk-exact-match').is(':checked'),
+                    revealResults: $('#chk-reveal-results').is(':checked')
+                };
+                $('#jstree').treeview('search', [ $.trim($('#input-search').val()), { ignoreCase: false, exactMatch: false } ]);
+                var results = $('#jstree').treeview('search', [ pattern, options ]);
+            }
+            $('#btn-search').on('click', search);
+            $('#btn-clear-search').on('click', function (e) {
+                $('#jstree').treeview('clearSearch');
+                $('#input-search').val('');
+                $('#jstree').treeview('collapseAll', {
+                    silent : false//设置初始化节点关闭
+                });
+            });
+            $.getJSON("${ctx}/sg/managementCenter/constructionProject/treeData",function(data){
+                jstreeTime(data)
+            });
+            //搜索
+            var search1 = function(e) {
+                var pattern = $.trim($('#input-search1').val());
+                var options = {
+                    ignoreCase: $('#chk-ignore-case').is(':checked'),
+                    exactMatch: $('#chk-exact-match').is(':checked'),
+                    revealResults: $('#chk-reveal-results').is(':checked')
+                };
+                $('#jstreeTime').treeview('search', [ $.trim($('#input-search1').val()), { ignoreCase: false, exactMatch: false } ]);
+                var results = $('#jstreeTime').treeview('search', [ pattern, options ]);
+            }
+            $('#btn-search1').on('click', search1);
+            $('#btn-clear-search1').on('click', function (e) {
+                $('#jstreeTime').treeview('clearSearch');
+                $('#input-search1').val('');
+                $('#jstreeTime').treeview('collapseAll', {
+                    silent : false//设置初始化节点关闭
+                });
+            });
+            $('#selectId1').click(function () {
+                var object = $('#jstreeTime').treeview('getChecked');
+                if (object.length<1){
+                    jp.error("请选择项目!");
+                    return false;
+                }
+                var str = "";
+                for (var  i = 0; i < object.length; i++) {
+                    str+=object[i].id+",";
+                }
+                var sureStr  = str.substring(0,str.length-1);
+                minus(sureStr);
+            })
+        })
+    //安排计划时间
+    function add(ids){
+        var dateTimeId = $("#dateTimeId").val();
+        if (null!=dateTimeId && dateTimeId !=""){
+            jp.post("${ctx}/sg/managementCenter/constructionProject/unplanned",{'ids':ids,'time':dateTimeId},function(data){
+                if(data.success){
+                    jstreeTime(data.mapList);
+                    refreshjstree();
+                }else{
+                    jp.error(data.message);
                 }
+            })
+        }
+    }
+    //取消计划时间
+    function minus(ids) {
+        var dateTimeId = $("#dateTimeId").val();
+        if (null!=dateTimeId && dateTimeId !=""){
+            jp.post("${ctx}/sg/managementCenter/constructionProject/unplannedMinus",{'ids':ids,'time':dateTimeId},function(data){
+                if(data.success){
+                    refreshjstree();
+                    jstreeTime(data.mapList);
+                }else{
+                    jp.error(data.message);
+                }
+            })
+        }
+    }
+    function getIds() {
+        return $("#parentIds").val();
+    }
+    function refreshjstreeTime() {
+        $.getJSON("${ctx}/sg/managementCenter/constructionProject/treeData",function(data){
+            $('#jstreeTime').treeview({
+                data: data,
+                levels: 1,
+                highlightSelected:false,
+                // multiSelect:true,
+                // showCheckbox:true,
+                color:'blue',
+                onNodeSelected: function(event, treeNode) {
+                    var id = treeNode.id;
+                    jp.openSaveDialog('编辑安排计划项目', "${ctx}/sg/managementCenter/constructionProject/formPlan?id=" + id, '800px', '500px');
+                },
             });
+        });
+    }
+    function refreshjstree() {
+        $.getJSON("${ctx}/sg/managementCenter/constructionProject/bootstrapTreeTable",function(data){
+            $('#jstree').treeview({
+                data: data,
+                levels: 1,
+                highlightSelected:false,
+                // multiSelect:true,
+                showCheckbox:true
+            });
+        });
+    }
+    function jstree(date) {
+        $('#jstree').treeview({
+            data: date,
+            levels: 1,
+            highlightSelected:false,
+            // multiSelect:true,
+            showCheckbox:true,
+            // onNodeChecked : function(event, data) {
+            //     selected(data);
+            // },
+            // onNodeUnchecked : function(event, node){
+            //     unSelected(node);
+            // },
+        });
+    }
+    function jstreeTime(date) {
+        $('#jstreeTime').treeview({
+            data: date,
+            levels: 1,
+            highlightSelected:false,
+            showCheckbox:true,
+            onNodeSelected: function(event, treeNode) {
+                var id = treeNode.id;
+                jp.openSaveDialog('编辑安排计划项目', "${ctx}/sg/managementCenter/constructionProject/formPlan?id=" + id, '800px', '500px');
+            },
 
-            $testTree1TreeTable.initParents('${parentIds}', "0");//在保存编辑时定位展开当前节点
         });
-		  function refresh() {
-              $('#table').bootstrapTable('refresh');
-          }
-	</script>
-     <script type="text/html" id="testTree1TreeTableTpl">
-            <td>
-            <c:choose>
-        <c:when test="${fns:hasPermission('test:tree:dialog:testTree1:edit')}">
-            <a  href="#" onclick="jp.openSaveDialog('编辑机构', '${ctx}/test/tree/dialog/testTree1/form?id={{d.row.id}}','800px', '500px')">
-            {{d.row.name === undefined ? "": d.row.name}}
-        </a>
-        </c:when>
-        <c:when test="${fns:hasPermission('test:tree:dialog:testTree1:view')}">
-            <a  href="#" onclick="jp.openViewDialog('查看机构', '${ctx}/test/tree/dialog/testTree1/form?id={{d.row.id}}','800px', '500px')">
-            {{d.row.name === undefined ? "": d.row.name}}
-        </a>
-        </c:when>
-        <c:otherwise>
-        {{d.row.name === undefined ? "": d.row.name}}
-        </c:otherwise>
-        </c:choose>
-        </td>
-        <td>
-        {{d.row.remarks === undefined ? "": d.row.remarks}}
-        </td>
-        <td>
-        <div class="btn-group">
-            <button type="button" class="btn  btn-primary btn-xs dropdown-toggle" data-toggle="dropdown">
-            <i class="fa fa-cog"></i>
-            <span class="fa fa-chevron-down"></span>
-            </button>
-            <ul class="dropdown-menu" role="menu">
-            <shiro:hasPermission name="test:tree:dialog:testTree1:view">
-            <li><a href="#" onclick="jp.openViewDialog('查看机构', '${ctx}/test/tree/dialog/testTree1/form?id={{d.row.id}}','800px', '500px')"><i class="fa fa-search-plus"></i> 查看</a></li>
-        </shiro:hasPermission>
-        <shiro:hasPermission name="test:tree:dialog:testTree1:edit">
-            <li><a href="#" onclick="jp.openSaveDialog('修改机构', '${ctx}/test/tree/dialog/testTree1/form?id={{d.row.id}}','800px', '500px')"><i class="fa fa-edit"></i> 修改</a></li>
-        </shiro:hasPermission>
-        <shiro:hasPermission name="test:tree:dialog:testTree1:del">
-            <li><a  onclick="return del(this, '{{d.row.id}}')"><i class="fa fa-trash"></i> 删除</a></li>
-        </shiro:hasPermission>
-        <shiro:hasPermission name="test:tree:dialog:testTree1:add">
-            <li><a href="#" onclick="jp.openSaveDialog('添加下级机构', '${ctx}/test/tree/dialog/testTree1/form?parent.id={{d.row.id}}','800px', '500px')"><i class="fa fa-plus"></i> 添加下级机构</a></li>
-        </shiro:hasPermission>
-        </ul>
-        </div>
-        </td>
-</script>
+    }
+    function dateTimeValue(value) {
+        if (value != '1'){
+            $("#dateTimeId").val(value);
+        }else {
+            var date = new Date();
+            var str = date.toISOString();
+            $("#dateTimeId").val( str.substring(0,7));
+        }
+    }
+
+    function selected(data){
+        if(data.nodeId == undefined){
+            for (var i = 0; i < data.nodes.length; i++) {
+                $("#jstree").treeview('checkNode', [ data.nodes[i], {silent: true}]);
+            }
+        }else{
+            var parentNode = $('#jstree').treeview('getParent', data.nodeId);
+            $("#jstree").treeview('checkNode', [ parentNode, {silent: true}]);
+        }
+    }
+    function unSelected(node){
+        if(node.id == undefined){
+            for (var i = 0; i < node.nodes.length; i++) {
+                $("#jstree").treeview('uncheckNode', [ node.nodes[i], {silent: true}]);
+            }
+        }else{
+            var parentNode = $('#jstree').treeview('getParent', node.nodeId);
+            var num;
+            for (var i = 0; i < parentNode.nodes.length; i++) {
+                if(parentNode.nodes[i].state.checked == true){
+                    num=1;
+                }
+            }
+            if(num!=1){
+                $("#jstree").treeview('uncheckNode', [ parentNode, {silent: true}]);
+            }
+            console.log(parentNode);
+        }
+    }
+</script>

+ 70 - 87
src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionList.jsp

@@ -7,8 +7,36 @@
 	<%@ include file="/webpage/include/bootstraptable.jsp"%>
 	<link href="${ctxStatic}/plugin/bootstrapTree/bootstrap-treeview.css" rel="stylesheet" type="text/css"/>
 	<script src="${ctxStatic}/plugin/bootstrapTree/bootstrap-treeview.js" type="text/javascript"></script>
+	<%@include file="/webpage/include/treeview.jsp" %>
 	<%@ include file="constructionList.js"%>
+	<script>
+        $(document).ready(function() {
+            $('#deliverySchedule').datetimepicker({
+                format: "YYYY-MM",
+            }).on('dp.change',function(ev) {
+                var dateTimeId = $("#dateTimeId").val();
+                var newDateTime = ev.date ? ev.date.format('YYYY-MM') : "";
+                var oldDateTime = ev.oldDate ? ev.oldDate.format('YYYY-MM') : "";
+                if (dateTimeId!=oldDateTime){
+                    if (newDateTime != oldDateTime) {
+                        jp.get("${ctx}/sg/managementCenter/constructionProject/treeDataAjax?arrangeTime="+newDateTime, function (data) {
+                            if (data.success) {
+                                jstreeTime(data.mapList);
+                            } else {
+                                jp.error(data.message);
+                            }
+                        })
+                    }
+				}
+            });
+        });
+	</script>
 </head>
+<style>
+	.icon_left{
+		background-image:;
+	}
+</style>
 <body>
 	<div class="wrapper wrapper-content">
 	<div class="panel panel-primary">
@@ -16,98 +44,53 @@
 		<h3 class="panel-title">项目明细列表</h3>
 	</div>
 	<div class="panel-body">
+		<input type="hidden" value="" id="parentIds"/>
 	<div class="row">
-		<div class="col-sm-3 col-md-3" >
-			<div id="jstree"></div> 
+		<div class='input-group form_datetime'  id='deliverySchedule' style="width: 200px;margin-left: 5px">
+			<input type='text' id="dateTimeId"  name="" class="form-control required"  value=""/>
+			<span class="input-group-addon">
+					<span class="glyphicon glyphicon-calendar"></span>
+				</span>
+		</div>
+		<div class="col-sm-3 col-md-4">
+			<div class="input-group" style="margin-top: 20px">
+				<div style="float: left">
+					<input type="text" class="form-control" id="input-search" placeholder="" value="" style="width: 200px">
+				</div>
+				<div style="float: left;margin-left: 5px">
+					<button type="button" class="btn btn-primary btn-rounded  btn-bordered btn-sm" id="btn-search">搜索</button>
+					<button type="button" class="btn btn-primary btn-rounded  btn-bordered btn-sm" id="btn-clear-search">清除</button>
+				</div>
+			</div>
+			<div style="height: 10px"></div>
+			<div id="jstree" style="height:400px;overflow:auto;background:#EEEEEE;"></div>
 		</div>
-		<div  class="col-sm-9 col-md-8 animated fadeInRight">
-			<!-- 搜索框-->
-			<%--<div id="search-collapse" class="collapse">--%>
-				<%--<div class="accordion-inner">--%>
-					<%--<form id="searchForm" class="form form-horizontal well clearfix" >--%>
-						<%--<div class="col-sm-4">--%>
-							<%--<label class="label-item single-overflow pull-left" title="登录名:">登录名:</label>--%>
-							<%--<input type="text" name="loginName" maxlength="100"  class=" form-control"/>--%>
-						<%--</div>--%>
-						<%--<div class="col-sm-4">--%>
-							<%--<label class="label-item single-overflow pull-left" title="姓名:">姓名:</label>--%>
-							<%--<input type="text" name="name" maxlength="100"  class=" form-control"/>--%>
-						<%--</div>--%>
-						<%--<div class="col-sm-4">--%>
-					    	<%--<label class="label-item single-overflow pull-left" title="公司:">归属公司:</label>--%>
-					    	<%--<sys:treeselect id="company" name="company.id"--%>
-										<%--title="公司" url="/sys/office/treeData?type=1" cssClass=" form-control" allowClear="true"/>--%>
-					    <%--</div>--%>
-					    <%--<div class="col-sm-4">--%>
-					    	<%--<label class="label-item single-overflow pull-left" title="员工:">归属部门:</label>--%>
-					   		<%--<sys:treeselect id="office" name="office.id"--%>
-								<%--title="部门" url="/sys/office/treeData?type=2" cssClass=" form-control" allowClear="true" notAllowSelectParent="true"/>--%>
-					    <%--</div>--%>
-					    <%--<div class="col-sm-4">--%>
-							 <%--<div style="margin-top:26px">--%>
-							  <%--<a  id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i class="fa fa-search"></i> 查询</a>--%>
-							  <%--<a  id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm" ><i class="fa fa-refresh"></i> 重置</a>--%>
-							<%--</div>--%>
-					    <%--</div>--%>
-					<%--</form>--%>
-				<%--</div>--%>
-			<%--</div><!-- 搜索框结束 -->--%>
 
-		<!-- 工具栏 -->
-	    <div id="toolbar">
+		<div class="col-sm-3 col-md-2" style="height: 400px;text-align: center;margin-top: 70px">
+			<button id="selectId" class="btn btn-success">
+				<i class="glyphicon glyphicon-edit"></i> 安排计划时间
+			</button>
+            <div style="height: 30px"></div>
+			<button id="selectId1" class="btn btn-success">
+				<i class="glyphicon glyphicon-edit"></i> 取消计划时间
+			</button>
+		</div>
 
-	    	<shiro:hasPermission name="sys:user:add">
-	    		<a id="add" class="btn btn-primary"  onclick="jp.openSaveDialog('新建用户', '${ctx}/sys/user/form','800px', '680px')"><i class="glyphicon glyphicon-plus"></i> 新建</a>
-			</shiro:hasPermission>
-			<shiro:hasPermission name="sys:user:edit">
-				<button id="edit" class="btn btn-success" disabled onclick="edit()">
-		            <i class="glyphicon glyphicon-edit"></i> 修改
-		        </button>
-			</shiro:hasPermission>
-			<shiro:hasPermission name="sys:user:del">
-				<button id="remove" class="btn btn-danger" disabled onclick="deleteAll()">
-		            <i class="glyphicon glyphicon-remove"></i> 删除
-		        </button>
-			</shiro:hasPermission>
-			<shiro:hasPermission name="sys:user:import">
-				<button id="btnImport" class="btn btn-info"><i class="fa fa-folder-open-o"></i> 导入</button>
-				<div id="importBox" class="hide">
-					<form id="importForm" action="${ctx}/sys/user/import" method="post" enctype="multipart/form-data"
-						 style="padding-left:20px;text-align:center;" ><br/>
-						<input id="uploadFile" name="file" type="file" style="width:330px"/>导入文件不能超过5M,仅允许导入“xls”或“xlsx”格式文件!<br/>  
-					</form>
+		<div class="col-sm-3 col-md-5" >
+			<%--<div class='input-group' style="height: 30px">--%>
+			<%--</div>--%>
+			<div class="input-group" style="margin-top: 20px">
+				<div style="float: left">
+					<input type="text" class="form-control" id="input-search1" placeholder="" value="" style="width: 200px">
 				</div>
-			</shiro:hasPermission>
-			<shiro:hasPermission name="sys:user:export">
-				<a id="export" class="btn btn-warning" href="${ctx}/sys/user/export"><i class="fa fa-file-excel-o"></i> 导出</a>
-	       </shiro:hasPermission>
-	    </div><!-- 工具栏结束 -->
-	    
-	    
-	    <!-- 表格 -->
-	    <%--<table id="table"--%>
-	           <%--data-toolbar="#toolbar">--%>
-	    <%--</table>--%>
-
-		<table id="testTree1TreeTable" class="table table-hover">
-			<thead>
-			<tr>
-				<th>名称</th>
-				<th>备注信息</th>
-				<th>操作</th>
-			</tr>
-			</thead>
-			<tbody id="testTree1TreeTableList"></tbody>
-		</table>
-		<%--&lt;%&ndash;<div class="col-sm-3 col-md-2" >&ndash;%&gt;--%>
-			<%--&lt;%&ndash;<div id="jstree1"></div>&ndash;%&gt;--%>
-		<%--&lt;%&ndash;</div>&ndash;%&gt;--%>
-	    <%--<!-- context menu -->--%>
-	    <%--&lt;%&ndash;<ul id="context-menu" class="dropdown-menu">&ndash;%&gt;--%>
-	        <%--&lt;%&ndash;<li data-item="edit"><a>编辑</a></li>&ndash;%&gt;--%>
-	        <%--&lt;%&ndash;<li data-item="delete"><a>删除</a></li>&ndash;%&gt;--%>
-	        <%--&lt;%&ndash;<li data-item="cancel"><a>取消</a></li>&ndash;%&gt;--%>
-	    <%--&lt;%&ndash;</ul> &ndash;%&gt;--%>
+				<div style="float: left;margin-left: 5px">
+					<button type="button" class="btn btn-primary btn-rounded  btn-bordered btn-sm" id="btn-search1">搜索</button>
+					<button type="button" class="btn btn-primary btn-rounded  btn-bordered btn-sm" id="btn-clear-search1">清除</button>
+				</div>
+			</div>
+			<div style="height: 10px"></div>
+			<div id="jstreeTime" style="height:400px;overflow:auto;background:#EEEEEE;"></div>
+		</div>
 	</div>
 	</div>
 	</div>

+ 115 - 0
src/main/webapp/webpage/modules/sg/managementcenter/constructionProject/constructionPlanForm.jsp

@@ -0,0 +1,115 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+	<title>物料计划管理</title>
+	<meta name="decorator" content="ani"/>
+	<script type="text/javascript">
+		$(document).ready(function() {
+	        $('.deliverySchedule').datetimepicker({
+                format: "YYYY-MM"
+            });
+            $('.deliverySchedule1').datetimepicker({
+                format: "YYYY-MM-DD"
+            });
+		});
+		function save() {
+            var isValidate = jp.validateForm('#inputForm');//校验表单
+            if(!isValidate){
+                return false;
+			}else{
+                jp.loading();
+                jp.post("${ctx}/sg/managementCenter/constructionProject/unplannedPlan",$('#inputForm').serialize(),function(data){
+                    if(data.success){
+                        jp.getParent().refreshjstreeTime();
+                        var dialogIndex = parent.layer.getFrameIndex(window.name); // 获取窗口索引
+                        parent.layer.close(dialogIndex);
+                        jp.success(data.msg)
+                    }else{
+                        jp.error(data.msg);
+                    }
+                })
+			}
+
+        }
+	</script>
+</head>
+<body class="bg-white">
+		<form:form id="inputForm" modelAttribute="constructionProject" class="form-horizontal">
+		<form:hidden path="id"/>	
+		<table class="table table-bordered">
+			<tbody>
+				<%--项目显示--%>
+				<c:if test="${constructionId eq '0'}">
+				<%--<form:input path="id" htmlEscape="false" class="form-control"/>--%>
+					<tr>
+
+						<td class="width-15 active"><label class="">线路名称:</label></td>
+						<td class="width-35">
+							<form:input path="lineName" readonly="readonly" htmlEscape="false" class="form-control"/>
+						</td>
+						<td class="width-15 active"><label class="">项目名称:</label></td>
+						<td class="width-35">
+							<form:input path="projectName" readonly="readonly" htmlEscape="false" class="form-control"/>
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="">当前时间(日):</label></td>
+						<td class="width-35">
+							<div class='input-group form_datetime deliverySchedule'>
+								<input type='text' readonly="readonly"  name="arrangeTime" class="form-control required"  value="<fmt:formatDate value="${constructionProject.arrangeTime}" pattern="yyyy-MM"/>"/>
+								<span class="input-group-addon">
+										<span class="glyphicon glyphicon-calendar"></span>
+									</span>
+							</div>
+						</td>
+						<td class="width-15 active"><label class="">选择具体时间:</label></td>
+						<td class="width-35">
+							<div class='input-group form_datetime deliverySchedule1'>
+								<input type='text'  name="specificTime" class="form-control required"  value="<fmt:formatDate value="${constructionProject.specificTime}" pattern="yyyy-MM-dd"/>"/>
+								<span class="input-group-addon">
+										<span class="glyphicon glyphicon-calendar"></span>
+									</span>
+							</div>
+						</td>
+					</tr>
+				</c:if>
+				<%--线路显示--%>
+				<c:if test="${constructionId eq '1'}">
+					<%--<form:input path="id" htmlEscape="false" class="form-control"/>--%>
+					<tr>
+						<td class="width-15 active"><label class="">线路名称:</label></td>
+						<td class="width-35">
+							<form:input path="lineName" htmlEscape="false" class="form-control" readonly="readonly"/>
+						</td>
+						<td class="width-15 active"><label class="">当前时间:</label></td>
+						<td class="width-35">
+							<div class='input-group form_datetime deliverySchedule' id='deliverySchedule'>
+								<input type='text' readonly="readonly"  name="arrangeTime" class="form-control required"  value="<fmt:formatDate value="${constructionProject.arrangeTime}" pattern="yyyy-MM-dd"/>"/>
+								<span class="input-group-addon">
+			                        <span class="glyphicon glyphicon-calendar"></span>
+			                    </span>
+							</div>
+						</td>
+					</tr>
+					<tr>
+						<td class="width-15 active"><label class="">选择具体时间:</label></td>
+						<td class="width-35">
+							<div class='input-group form_datetime deliverySchedule1' id='deliverySchedule1'>
+								<input type='text'  name="specificTime" class="form-control required"  value="<fmt:formatDate value="${constructionProject.specificTime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+								<span class="input-group-addon">
+			                        <span class="glyphicon glyphicon-calendar"></span>
+			                    </span>
+							</div>
+						</td>
+						<td class="width-15 active"><label class=""></label></td>
+						<td class="width-35">
+
+						</td>
+					</tr>
+				</c:if>
+			</tbody>
+		</table>
+	</form:form>
+</body>
+</html>