Browse Source

工作内容管理 左侧菜单栏的工作内容列表实现树状展示列表

user5 5 years ago
parent
commit
f270cff33f

+ 2 - 0
src/main/java/com/jeeplus/modules/projectcontentinfo/dao/ProjectcontentinfoDao.java

@@ -59,6 +59,8 @@ public interface ProjectcontentinfoDao extends CrudDao<Projectcontentinfo> {
 	 */
 	List<ProjectContentTreeData> getProjectContentData(String projectId);
 
+	List<ProjectContentTreeData> getProjectContentTreeDataOnLeft(@Param("projectId")String projectId,@Param("workContentType")Integer workContentType);
+
 	List<ProjectContentTreeData> getProjectContentTreeData(@Param("projectId") String projectId,@Param("type") String type);
 
 	int saveBasedDataWorkAttachment(Workattachment workattachment);

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

@@ -1420,6 +1420,16 @@ public class ProjectcontentinfoService extends CrudService<ProjectcontentinfoDao
 	public List<ProjectContentTreeData> getProjectContentData(String projectId){
 		return projectcontentinfoDao.getProjectContentData(projectId);
 	}
+
+	/**
+	 * 根据项目id查询工作内容信息Tree
+	 * @param projectId
+	 * @return
+	 */
+	public List<ProjectContentTreeData> getProjectContentTreeDataOnLeft(String projectId,Integer workContentType){
+		return projectcontentinfoDao.getProjectContentTreeDataOnLeft(projectId,workContentType);
+	}
+
 	/**
 	 * 根据项目id查询工作内容信息Tree
 	 * @param projectId

+ 40 - 4
src/main/java/com/jeeplus/modules/projectcontentinfo/web/ProjectcontentinfoController.java

@@ -397,9 +397,10 @@ public class ProjectcontentinfoController extends BaseController {
 						projectContentData = new ProjectContentData();
 					}
 					projectContentData.setParentType(Integer.valueOf(projectcontentinfo.getType())-1);
+					model.addAttribute("workContentType", Integer.valueOf(projectcontentinfo.getType())-1);
 					projectContentData.setProject(records);
-					Page<ProjectContentData> page = projectContentDataService.findPage(new Page<ProjectContentData>(request, response),projectContentData);
-					model.addAttribute("page", page);
+					List<ProjectContentData> projectContentDatas = projectContentDataService.findList(projectContentData);
+					model.addAttribute("projectContentDatas", projectContentDatas);
 					return "modules/projectcontentinfo/workContentList";
 				}else {
 					if (StringUtils.isBlank(projectcontentinfo.getInfoId())){
@@ -410,8 +411,9 @@ public class ProjectcontentinfoController extends BaseController {
 						}
 						projectContentData.setProject(records);
 						projectContentData.setType(projectcontentinfo.getDictType());
-						Page<ProjectContentData> page = projectContentDataService.findPage(new Page<ProjectContentData>(request, response),projectContentData);
-						model.addAttribute("page", page);
+						List<ProjectContentData> projectContentDatas = projectContentDataService.findList(projectContentData);
+						model.addAttribute("projectContentDatas", projectContentDatas);
+						model.addAttribute("workContentType", Integer.valueOf(projectcontentinfo.getType())-1);
 						return "modules/projectcontentinfo/workContentList";
 					}else{
 						//详情页面
@@ -1583,4 +1585,38 @@ public class ProjectcontentinfoController extends BaseController {
 		return map;
 	}
 
+	/**
+	 * 根据项目id查询工作内容信息Tree
+	 * @param projectId
+	 * @return
+	 */
+	@RequestMapping("getProjectContentTreeDataOnLeft")
+	@ResponseBody
+	public Map<String,List> getProjectContentTreeDataOnLeft(String projectId,Integer workContentType){
+		Map<String,List> map = new HashMap<>();
+		List<ProjectContentTreeData> projectContentDataList = projectcontentinfoService.getProjectContentTreeDataOnLeft(projectId,workContentType);
+		List<ProjectContentTreeData> projectContentTreeDataList = new ArrayList<>();
+		if (null != projectContentDataList) {
+			User user = UserUtils.getUser();
+			for (ProjectContentTreeData projectContentData : projectContentDataList) {
+				String contentTypeName = WorkContentTypeController.getContentTypeName(projectContentData.getType(), "");
+				ProjectContentTreeData projectContentTreeData = new ProjectContentTreeData();
+				projectContentTreeData.setType(contentTypeName);
+				projectContentTreeData.setId(projectContentData.getType());
+				projectContentTreeData.setPid("0");
+				projectContentTreeData.setLoginId(user.getId());
+				projectContentTreeData.setCreateId("");
+				List<ProjectContentTreeData> projectContentTreeDatas = projectcontentinfoService.getProjectContentTreeData(projectId, projectContentData.getType());
+				for (ProjectContentTreeData data : projectContentTreeDatas) {
+					data.setType(contentTypeName);
+					data.setLoginId(user.getId());
+				}
+				projectContentTreeDataList.add(projectContentTreeData);
+				projectContentTreeDataList.addAll(projectContentTreeDatas);
+			}
+		}
+		map.put("data",projectContentTreeDataList);
+		return map;
+	}
+
 }

+ 11 - 0
src/main/resources/mappings/modules/projectcontentinfo/ProjectcontentinfoDao.xml

@@ -144,6 +144,17 @@
 		</where>
 	</select>
 
+	<select id="getProjectContentTreeDataOnLeft" resultType="com.jeeplus.modules.projectcontentinfo.entity.ProjectContentTreeData" >
+		select distinct a.type as "type"
+		from project_content_data a
+		left join work_content_type wct on a.type = wct.type_id
+		<where>
+			a.del_flag = 0
+			and a.project_id = #{projectId}
+			and wct.parent_id =#{workContentType}
+		</where>
+	</select>
+
 	<select id="getProjectContentTreeData" resultType="com.jeeplus.modules.projectcontentinfo.entity.ProjectContentTreeData" >
 		select a.id as "id",
 		a.create_date as "createDate",a.create_by as "createId",

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

@@ -184,7 +184,61 @@
             contentDetailTypeShow(val);
             $("#contentDetailTypeDiv").show();
             $("#projectContentDataSign").val(val);
-
+            var param2 = {'contentId':"${projectcontentinfo.projectContentData.id}",'projectId':"${projectcontentinfo.project.id}"};
+            detailFlag=1;
+            switch (val){
+                case '13':
+                case '22':
+                case '25':
+                    $("#contentDetail").load("${ctx}/workcontentinvestmentcost/workContentInvestmentCost/list",param2);
+                    break;
+                case '31':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentContprogram/form",param2);
+                    break;
+                case '32':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentBiddingplan/form",param2);
+                    break;
+                case '34':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentCtrlprice/form",param2);
+                    break;
+                case '41':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentContractinfo/form",param2);
+                    break;
+                case '42':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentPricemanage/form",param2);
+                    break;
+                case '43':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentAltermanage/form",param2);
+                    break;
+                case '45':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentVisamanage/form",param2);
+                    break;
+                case '46':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentClaim/form",param2);
+                    break;
+                case '47':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentFundplan/form",param2);
+                    break;
+                case '48':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentProjectprice/form",param2);
+                    break;
+                case '49':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentPriceadjust/form",param2);
+                    break;
+                case '52':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentBudget/form",param2);
+                    break;
+                case '53':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentDocument/form",param2);
+                    break;
+                case '400':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentContractSum/form",param2);
+                    break;
+                default:
+                    detailFlag=0;
+                    $("#contentDetail").html("");
+                    break;
+            }
         }
 
         function addFile() {

+ 97 - 2
src/main/webapp/webpage/modules/projectcontentinfo/workContentList.jsp

@@ -5,6 +5,7 @@
 	<title>工作内容详情管理</title>
 	<meta name="decorator" content="default"/>
 	<%--<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>--%>
+    <link href="${ctxStatic}/layer-v2.3/layui/tableTree/treetable.css" rel="stylesheet" />
 	<script type="text/javascript">
         $(function() {
             $("#cus_name").show();
@@ -112,6 +113,7 @@
 			<!--查询条件-->
                 <form:form id="searchForm" modelAttribute="projectcontentinfo" action="${ctx}/projectcontentinfo/projectcontentinfo/list" method="post" class="form-inline">
                     <input id="id" name="id" type="hidden" value="${id}"/>
+                    <input id="workContentType" type="hidden" value="${workContentType}"/>
                     <input id="parentIds" name="parentIds" type="hidden" value="${parentIds}"/>
                     <input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
                     <input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
@@ -166,9 +168,14 @@
                         <a href="javascript:void(0)" onclick="openDialogre('新增工作内容', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=content&dictType=${dictType}&id=${id}&parentIds=${parentIds}','95%','95%',false,'inputForm')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i>&nbsp; 新增</a>
                         <button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i>&nbsp;刷新</button>
                     </c:if>
+                    <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 layui-bg-red" id="btn-refresh">刷新表格</button>
                     <div style="clear: both;"></div>
                 </div>
-                <table class="oa-table layui-table" id="contentTable"></table>
+
+                <table id="permissionTable" class="layui-table" lay-filter="permissionTable"></table>
+                <%--<table class="oa-table layui-table" id="contentTable"></table>--%>
 
                 <!-- 分页代码 -->
                 <table:page page="${page}"></table:page>
@@ -178,7 +185,7 @@
     </div>
 </div>
 <script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
-<script>
+<%--<script>
     layui.use('table', function(){
         layui.table.render({
             limit:${ page.pageSize }
@@ -240,6 +247,94 @@
         resizeListWindow3();
     });
     $("a").on("click",addLinkVisied);
+</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 () {//树桩表格参考文档:https://gitee.com/whvse/treetable-lay
+            layer.load(2);
+            treetable.render({
+                treeColIndex: 1,//树形图标显示在第几列
+                treeSpid: 0,//最上级的父级id
+                treeIdName: 'permissionId',//id字段的名称
+                treePidName: 'pid',//pid字段的名称
+                treeDefaultClose: false,//是否默认折叠
+                treeLinkage: true,//父级展开时是否自动展开所有子级
+                elem: '#permissionTable',
+                url: '${ctx}/projectcontentinfo/projectcontentinfo/getProjectContentTreeDataOnLeft?projectId=${projectRecords.id}&workContentType=${workContentType}',
+                page: false,
+                cols: [[
+                    {type: 'numbers', title: '编号' ,width:80},
+                    {field: 'type', title: '内容类型',width:180},
+                    {field: 'name',title: '内容名称',templet:function(d){
+                            if(null != d.name){
+                                return "<a class=\"attention-info\" href=\"#\" onclick=\"openDialogView('查看工作内容详情', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=contentView&dictType=${dictType}&id=${id}&parentIds=${parentIds}&infoId="+d.id+"','95%', '95%')\">" + d.name + "</a>";
+                            }else{
+                                return "";
+                            }
+                        }},
+                    {field: 'masterName', title: '负责人',width:100},
+                    {field: 'createDate', title: '创建日期',width:100},
+                    {templet: complain, 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.loginId == d.createId){
+                return [
+                    '<a href="javascript:void(0)" onclick="openDialogre(\'修改工作内容详情\', \'${ctx}/projectcontentinfo/projectcontentinfo/form?view=content&dictType=${dictType}&id=${id}&parentIds=${parentIds}&projectContentData.id='+d.id+'\',\'95%\',\'95%\')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>',
+                    '<a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId='+d.id+'&id=${id}&type=2" onclick="return confirmxRefresh(\'确认要删除该工作内容详情吗?\', this.href)"   class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>',
+                ].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>
 </body>
 </html>

+ 55 - 1
src/main/webapp/webpage/modules/projectcontentinfo/workContentView.jsp

@@ -153,7 +153,61 @@
             contentDetailTypeShow(obj);
             $("#contentDetailTypeDiv").show();
             $("#projectContentDataSign").val(obj);
-
+            var param2 = {'contentId':"${projectcontentinfo.projectContentData.id}",'projectId':"${projectcontentinfo.project.id}"};
+            detailFlag=1;
+            switch (obj){
+                case '13':
+                case '22':
+                case '25':
+                    $("#contentDetail").load("${ctx}/workcontentinvestmentcost/workContentInvestmentCost/list",param2);
+                    break;
+                case '31':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentContprogram/form",param2);
+                    break;
+                case '32':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentBiddingplan/form",param2);
+                    break;
+                case '34':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentCtrlprice/form",param2);
+                    break;
+                case '41':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentContractinfo/form",param2);
+                    break;
+                case '42':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentPricemanage/form",param2);
+                    break;
+                case '43':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentAltermanage/form",param2);
+                    break;
+                case '45':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentVisamanage/form",param2);
+                    break;
+                case '46':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentClaim/form",param2);
+                    break;
+                case '47':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentFundplan/form",param2);
+                    break;
+                case '48':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentProjectprice/form",param2);
+                    break;
+                case '49':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentPriceadjust/form",param2);
+                    break;
+                case '52':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentBudget/form",param2);
+                    break;
+                case '53':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentDocument/form",param2);
+                    break;
+                case '400':
+                    $("#contentDetail").load("${ctx}/workcontent/workContentContractSum/form",param2);
+                    break;
+                default:
+                    detailFlag=0;
+                    $("#contentDetail").html("");
+                    break;
+            }
         }
         
         /*function changeContentDetail(val) {