@@ -0,0 +1,58 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/webpage/include/taglib.jsp"%>
+<html>
+<head>
+ <title>出差详情</title>
+ <meta name="decorator" content="default"/>
+ <script type="text/javascript">
+ $(function () {
+ //只做查看时,禁用掉以下标签
+ $('input,textarea,select').attr('disabled',"disabled");
+ })
+ </script>
+</head>
+<body>
+<div class="ibox-content">
+<form:form id="inputForm" modelAttribute="oaEvection" action="" method="post" class="form-horizontal">
+ <form:hidden path="id"/>
+ <c:set var="id" value="${oaEvection.id}" />
+ <c:set var="ids" value="${oaEvection.ids}" />
+
+ <sys:message content="${message}"/>
+ <div class="control-group">
+ <label class="control-label">开始时间:</label>
+ <div class="controls">
+ ${oaEvection.startTime}
+ </div>
+ <label class="control-label">结束时间:</label>
+ ${oaEvection.endTime}
+ <label class="control-label">出差天数:</label>
+ ${oaEvection.dateCount}
+ <span class="help-inline"></span>
+ <label class="control-label">出差地点:</label>
+ ${oaEvection.address}
+ <label class="control-label">出差事由:</label>
+ ${oaEvection.reason}
+ </form:form>
+</div>
+</body>
+</html>
@@ -0,0 +1,57 @@
+ <title>外出申请详情</title>
+<form:form id="inputForm" modelAttribute="goOut" action="" method="post" class="form-horizontal">
+ <c:set var="id" value="${goOut.id}" />
+ <c:set var="ids" value="${goOut.ids}" />
+ ${goOut.startTime}
+ ${goOut.endTime}
+ <label class="control-label">外出天数:</label>
+ ${goOut.gooutDay}
+ <label class="control-label">外出时长:</label>
+ ${goOut.gooutTime}
+ <label class="control-label">外出事由:</label>
+ ${goOut.gooutReason}
@@ -0,0 +1,47 @@
+ <title>请假申请详情</title>
+ <form:form id="inputForm" modelAttribute="leave" action="" method="post" class="form-horizontal">
+ <fieldset>
+ <legend>${leave.act.taskName}</legend>
+ <label class="control-label">请假类型:</label>
+ ${fns:getDictLabel(leave.leaveType, 'oa_leave_type', '')}
+ ${leave.startTime}
+ ${leave.endTime}
+ <label class="control-label">请假原因:</label>
+ ${leave.reason}
+ </fieldset>
@@ -0,0 +1,56 @@
+ <title>加班申请详情</title>
+<form:form id="inputForm" modelAttribute="workOvertimeForm" action="" method="post" class="form-horizontal">
+ <c:set var="id" value="${workOvertimeForm.id}" />
+ <c:set var="ids" value="${workOvertimeForm.ids}" />
+ ${workOvertimeForm.startTime}
+ ${workOvertimeForm.endTime}
+ <label class="control-label">加班时长:</label>
+ ${workOvertimeForm.longTime}
+ <label class="control-label">加班事由:</label>
+ ${workOvertimeForm.reason}
+ <label class="control-label">是否节假日:</label>
+ ${fns:getDictLabel(workOvertimeForm.isHolidays, 'is_holidays', '')}
@@ -0,0 +1,118 @@
+ <title>用印申请详情</title>
+<form:form id="inputForm" modelAttribute="workSealForm" action="" method="post" class="form-horizontal">
+ <c:set var="id" value="${workSealForm.id}" />
+ <c:set var="ids" value="${workSealForm.ids}" />
+ <label class="control-label">用印文件名称:</label>
+ ${workSealForm.documentName}
+ <label class="control-label">文件个数:</label>
+ ${workSealForm.documentCount}
+ <label class="control-label">申请时间:</label>
+ ${workSealForm.applicationDate}
+ <label class="control-label">印章类型:</label>
+ ${fns:getMainDictLabel(workSealForm.sealType, 'seal_type', '')}
+ <label class="control-label">经办人:</label>
+ ${workSealForm.user.name}
+ <label class="control-label">用印部门:</label>
+ ${workSealForm.office.name}
+ <label class="control-label">用印原因:</label>
+ ${workSealForm.reason}
+ <label class="control-label">附件信息:</label>
+ <div id="fileid" class="controls">
+ <table id="workReportList" style="text-align: center;width: 100%;margin-top:10px;" class="table table-striped table-bordered table-condensed" >
+ <thead>
+ <tr>
+ <%--<td>序号</td>--%><td>文件名</td><td>上传人</td><td>上传时间</td><td>操作</td>
+ </tr>
+ </thead>
+ <tbody id="file_attachment_report">
+ <c:forEach items="${workSealForm.workAttachments}" var="attachment" varStatus="status">
+ <%-- <td>${status.index + 1}</td>--%>
+ <c:choose>
+ <c:when test="${fn:containsIgnoreCase(attachment.attachmentName,'jpg')
+ or fn:containsIgnoreCase(attachment.attachmentName,'png')
+ or fn:containsIgnoreCase(attachment.attachmentName,'gif')
+ or fn:containsIgnoreCase(attachment.attachmentName,'bmp')
+ or fn:containsIgnoreCase(attachment.attachmentName,'jpeg')}">
+ <td><img src="${attachment.url}" width="50" height="50" alt="${fns:abbr(attachment.attachmentName,30)}"/></td>
+ </c:when>
+ <c:otherwise>
+ <c:when test="${fn:containsIgnoreCase(attachment.attachmentName,'pdf')}">
+ <td><a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%','1')"><span title="${attachment.attachmentName}">${fns:abbr(attachment.attachmentName,30)}</span></a></td>
+ <td><a href="javascript:void(0)" onclick="preview('预览','${attachment.url}','80%','80%')"><span title="${attachment.attachmentName}">${fns:abbr(attachment.attachmentName,30)}</span></a></td>
+ </c:otherwise>
+ </c:choose>
+ <td>${attachment.attachmentUser}</td>
+ <td><fmt:formatDate value="${attachment.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+ <td>
+ <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent('${attachment.url}');" class="btn btn-success btn-xs">下载</a>
+ <%--<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${attachment.url}" class="btn btn-success btn-xs">下载</a>
+ --%>
+ <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/workengineeringproject/workEngineeringProject/deleteFileFromAliyun?attachmentId=${attachment.id}&id=${workEngineeringProject.id}&type=2')" class="btn btn-danger btn-xs" >删除</a>
+ </td>
+ </c:forEach>
+ </tbody>
+ </table>
@@ -0,0 +1,173 @@
+ <title>请假申请</title>
+ var validateForm;
+ function doSubmit(obj){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+ if(validateForm.form()){
+ if(obj == 1){
+ $('#flag').val('yes');
+ }else{
+ $('#flag').val('no');
+ }
+ $("#inputForm").submit();
+ return true;
+ return false;
+ $(document).ready(function() {
+ $("#name").focus();
+ 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);
+ });
+ $('input,textarea,select').attr('disabled',<%=request.getAttribute("disabled")%>);
+ if (${requestScope.disabled eq 'false'}) {
+ $("#leaveType").attr('disabled',true);
+ $("#startTime").attr('disabled',true);
+ $("#endTime").attr('disabled',true);
+ $("#reason").attr('disabled',true);
+<body class="gray-bg">
+ <div class="wrapper wrapper-content">
+ <div class="ibox">
+ <div class="ibox-title">
+ <h5>审批详情</h5>
+ <div class="ibox-content">
+ <form:form id="inputForm" modelAttribute="leave" action="${ctx}/oa/leave/saveAudit" method="post" class="form-horizontal">
+ <form:hidden path="home"/>
+ <form:hidden path="act.taskId"/>
+ <form:hidden path="act.taskName"/>
+ <form:hidden path="act.taskDefKey"/>
+ <form:hidden path="act.procInsId"/>
+ <form:hidden path="act.procDefId"/>
+ <form:hidden id="flag" path="act.flag"/>
+ <c:set var="status" value="${leave.act.status}" />
+ <div class="controls" style="margin-top: 8px;">
+ <c:when test="${!disabled}">
+ <input id="leaveType" name="leaveType" type="text" disabled="true" class="form-control required" value="${fns:getDictLabel(leave.leaveType, 'oa_leave_type', '')}"/>
+ <input id="startTime" name="startTime" type="text" disabled="true" maxlength="20" class="laydate-icon form-control layer-date required"
+ value="${leave.startTime}"/></c:when>
+ <input id="endTime" name="endTime" type="text" disabled="true" maxlength="20" class="laydate-icon form-control layer-date required"
+ value="${leave.endTime}"/></c:when>
+ <form:textarea id="reason" path="reason" class="form-control required" rows="5" maxlength="20"/>
+ <label class="control-label">图片:</label>
+ <table style="text-align: center;width: 100%;margin-top:10px;" class="table table-striped table-bordered table-condensed" >
+ <c:if test="${not empty leave.workattachmentList}">
+ <c:forEach items="${leave.workattachmentList}" var="attachment" varStatus="varStatus">
+ <%--<td>${varStatus.index+1}</td>--%>
+ <c:if test="${fn:containsIgnoreCase(attachment.attachmentName,'jpg')
+ <td><img src="${attachment.url}" onclick="openDialogView(' ','${ctx}/sys/picturepreview/picturePreview?url=${attachment.url}','860px','600px')" width="50" height="50" alt="${attachment.attachmentName}"/></td>
+ </c:if>
+ <td>${fns:getUserById(attachment.attachmentUser).name}</td>
+ --%></td>
+ <c:if test="${not empty status}">
+ <div class="control-group" id="comment">
+ <label class="control-label">审批意见:</label>
+ <form:textarea path="act.comment" class="form-control" rows="5" maxlength="127"/>
+ <%--<div class="form-actions">
+ <c:if test="${leave.act.taskDefKey eq 'audit1'}">
+ <input id="btnSubmit" class="btn btn-primary" type="submit" value="同 意" onclick="$('#flag').val('yes')"/>
+ <input id="btnSubmit" class="btn btn-inverse" type="submit" value="驳 回" onclick="$('#flag').val('no')"/>
+ <input id="btnCancel" class="btn" type="button" value="返 回" onclick="history.go(-1)"/>
+ </div>--%>
+ <act:flowChart procInsId="${leave.act.procInsId}"/>
+ <act:histoicFlow procInsId="${leave.act.procInsId}"/>
@@ -0,0 +1,301 @@
+ <script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>
+ <style type="text/css">
+ img{width: 50px;height: 50px;}
+ </style>
+ function doSubmit(){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+ function btnAdd(obj) {
+ if (obj == "btna") {
+ $("#adda").hide();
+ $("#addidb").show();
+ $("#addb").show();
+ }else if (obj == "btnb") {
+ $("#addb").hide();
+ $("#addidc").show();
+ $("#addc").show();
+ }else if (obj == "btnc") {
+ $("#addc").hide();
+ $("#addidd").show();
+ $("#addd").show();
+ }else if (obj == "btnd") {
+ $("#addd").hide();
+ $("#addide").show();
+ }else {
+ var len = $("#showPeo span").length;
+ if(len<=0){
+ parent.layer.msg("请选择审批人!",{icon:5});
+ if('${sessionScope.state}' =='disabled'){
+ $('input,textarea,select').attr('disabled','<%=session.getAttribute("state")%>');
+ }else if('${sessionScope.state}' !='disabled'){
+ $('input,textarea,select').removeAttr('disabled');
+ function selectPeople(objId,objName){
+ var showPeo = $("#showPeo").html();
+ if(len > 4){
+ parent.layer.msg("最多添加5个审批人",{icon:5})
+ return;
+ var arr = [];
+ var a = $("#showPeo span").each(function(){
+ var dataId = $(this).attr("data-id");
+ arr.push(dataId)
+ if(arr.indexOf(objId) != -1){
+ parent.layer.msg("该审批人已被选择,不能重复选择!!!",{icon:5})
+ return ;
+ showPeo = showPeo + '<span class="badge badge-success fontSpan" data-id="'+objId+'">'+objName+' ' +
+ '<i onclick=deletePeo(this) class="fa fa-close"></i><input type="hidden" name=adds['+len+'] value="'+objId+'"></span>';
+ $("#showPeo").html(showPeo)
+ //删除选择的人员
+ function deletePeo(obj){
+ $(obj).parent().remove()
+ <style>
+ .fontSpan{
+ font-size: 13px;
+ //上传图片
+ function this_upload_image_button(index){
+ var length = $("#this_upload_image_div :file").length;
+ var this_item_id = 'this_upload_image_'+index;
+ var last_item_id = $('img[id^=this_upload_image_]:last').attr('id');
+ if(length==6 && this_item_id==last_item_id){
+ top.layer.alert('最多上传5张图片',{icon:0,title:'系统提示'});
+ $("#this_upload_file_"+index).click();
+ function this_upload_show_image(index){
+ var obj =$("#this_upload_file_"+index)[0].files[0];
+ var fileType = obj.type;
+ var url ;
+ if(fileType.endsWith("png")||fileType.endsWith("bmp")||fileType.endsWith("jpg")||fileType.endsWith("jpeg")){
+ url = window.URL.createObjectURL(obj);
+ //需要置空
+ var file = $("#this_upload_file_"+index);
+ file.after(file.clone().val(""));
+ file.remove();
+ top.layer.alert('请上传*.png,*.bmp,*.jpg/jpeg格式的图片',{icon:0,title:'系统提示'});
+ return false ;
+ $("#this_upload_image_"+index).attr("src",url);
+ if( this_item_id==last_item_id && length < 6 ){
+ this_upload_image_append(index);
+ this_add_x(index);
+ function this_upload_image_append(index){
+ var div1 = "<div id='this_upload_div_"+(index+1)+"' style='float:left;position:relative;width: 57px;height: 57px;'>";
+ var img = '<img id="this_upload_image_'+(index+1)+'" class="upload_ico" width="50px" height="50px" onclick="this_upload_image_button('+(index+1)+')" src = "${pageContext.request.contextPath}/static/uploadify/upload_ico.png" style="cursor:pointer;"/>';
+ var input = '<input id="this_upload_file_'+(index+1)+'" type="file" style="display:none;" name="this_upload_files" onChange="this_upload_show_image('+(index+1)+')" /><br>';
+ var div2 = "</div>";
+ $("#this_upload_image_div").append(div1+img+input+div2);
+ function this_close_img(index) {
+ $("#this_upload_div_"+index).remove();
+ if(length == 0){
+ this_add_div();
+ }else if(length == 1){
+ var x = $("#this_upload_image_div").find("span").text();
+ if("x" != x){
+ function this_add_x(index) {
+ var span = '<span id="this_upload_close_'+index+'" class="close_ico" style="cursor:pointer; position: absolute;top:-1px;right: -1px; display:inline-block;z-index:1;color: red;" onclick="this_close_img('+index+');">x</span>';
+ $("#this_upload_image_div").find("img:eq(-2)").before(span);
+ function this_add_div() {
+ var this_upload_div_1 =
+ '<div id="this_upload_div_1" style="float: left;position:relative;width: 57px;height: 57px;" >'+
+ '<img id="this_upload_image_1" class="upload_ico" style="cursor:pointer;" src="${pageContext.request.contextPath}/static/uploadify/upload_ico.png" onclick="this_upload_image_button(1)"/>'+
+ '<input id="this_upload_file_1" type="file" style="display:none" name="this_upload_files" onchange="this_upload_show_image(1)" /><br>'+
+ '</div>';
+ $("#this_upload_image_div").html("").append(this_upload_div_1);
+ <c:if test="${sessionScope.state!='disabled'}">
+ <div id="div" name="div" class="ibox-title" style="height: 70px;">
+ <h5>
+ <ul class="nav nav-tabs">
+ <li><a href="${ctx}/oa/leave/list">请假信息</a></li>
+ <li><a href="${ctx}/oa/leave/leaveTodoList">待办任务</a></li>
+ <li><a href="${ctx}/oa/leave/leaveHistoricList">已办任务</a></li>
+ <shiro:hasPermission name="oa:leave:edit"><li class="active"><a href="${ctx}/oa/leave/form?ids=0">请假申请</a></li></shiro:hasPermission>
+ </ul>
+ </h5>
+ <%--<div class="ibox-tools">
+ <a class="collapse-link">
+ <i class="fa fa-chevron-up"></i>
+ </a>
+ <a class="dropdown-toggle" data-toggle="dropdown" href="javascript:void(0)">
+ <i class="fa fa-wrench"></i>
+ <ul class="dropdown-menu dropdown-user">
+ <li><a href="javascript:void(0)">选项1</a>
+ </li>
+ <li><a href="javascript:void(0)">选项2</a>
+ <a class="close-link">
+ <i class="fa fa-times"></i>
+ <form:form id="inputForm" modelAttribute="leave" action="${ctx}/oa/leave/save" enctype="multipart/form-data" method="post" class="form-horizontal">
+ <c:set var="id" value="${leave.id}" />
+ <c:set var="ids" value="${leave.ids}" />
+ <label class="control-label"><font color="red">*</font>请假类型:</label>
+ <form:select path="leaveType" cssClass="form-control input-sm" >
+ <form:options items="${fns:getDictList('oa_leave_type')}" itemLabel="label" itemValue="value" htmlEscape="false" />
+ </form:select>
+ <label class="control-label"><font color="red">*</font>开始时间:</label>
+ <input class="form-control layer-date laydate-icon required" id="startTime" name="startTime" readonly="readonly" value="<fmt:formatDate value="${leave.startTime}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <label class="control-label"><font color="red">*</font>结束时间:</label>
+ <input class="form-control layer-date laydate-icon required" id="endTime" name="endTime" readonly="readonly" value="<fmt:formatDate value="${leave.endTime}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <label class="control-label"><font color="red">*</font>请假天数:</label>
+ <input id="leaveDays" name="leaveDays" type="text" class="form-control required" value="${leave.leaveDays}"/>
+ <label class="control-label"><font color="red">*</font>请假时长:</label>
+ <input id="leaveTime" name="leaveTime" type="text" class="form-control required" value="${leave.leaveTime}"/>
+ <label class="control-label"><font color="red">*</font>请假原因:</label>
+ <form:textarea path="reason" class="form-control required" rows="5" maxlength="20"/>
+ <span id="this_upload_msg">请上传*.png,*.bmp,*.jpg/jpeg格式的图片</span><br>
+ <div id="this_upload_image_div">
+ <div id="this_upload_div_1" style="float: left;position:relative;width: 57px;height: 57px;">
+ <img alt="_blank" id="this_upload_image_1" class="upload_ico" style="cursor:pointer;" src="${pageContext.request.contextPath}/static/uploadify/upload_ico.png" onclick="this_upload_image_button(1)"/>
+ <input id="this_upload_file_1" type="file" style="display:none" name="this_upload_files" onchange="this_upload_show_image(1)" class="form-control required"/><br>
+ <c:if test="${empty id}">
+ <label class="control-label">抄送人:</label>
+ <div id="CCId" class="controls">
+ <sys:treeselect id="CCId" name="CCId" value="${leave.CCId}" labelName="idNames" labelValue="${leave.idNames}"
+ title="用户" url="/sys/office/treeDataAll?type=3&isAll=false" cssClass="form-control" allowClear="true" checked="true" notAllowSelectParent="true"/>
+ <label class="control-label"><font color="red">*</font>审批人:</label>
+ <div id="addida" class="controls">
+ <sys:treeselectleave id="ida" name="ida" value="${leave.ida}" labelName="idNamea" labelValue="${leave.idNamea}"
+ title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control required" allowClear="true" notAllowSelectParent="true"/>
+ <div id="showPeo" class="controls">
+ <c:if test="${not empty ids}">
+ <div class="form-actions">
+ <input id="btnSubmit" class="btn btn-primary" type="submit" value="保 存"/>
+<%
+ session.removeAttribute("state");
+%>
@@ -0,0 +1,108 @@
+ <title>已审核请假信息管理</title>
+<div class="wrapper wrapper-content">
+ <div class="ibox-title" style="height: 70px;">
+ <li class="active"><a href="${ctx}/oa/leave/leaveHistoricList">已办任务</a></li>
+ <shiro:hasPermission name="oa:leave:edit"><li><a href="${ctx}/oa/leave/form?ids=0">请假申请</a></li></shiro:hasPermission>
+ <!--查询条件-->
+ <div class="row">
+ <div class="col-sm-12">
+ <form:form id="searchForm" modelAttribute="act" action="${ctx}/oa/leave/leaveHistoricList" method="get" 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="form-group">
+ <label>审批时间:</label>
+ <input class="form-control layer-date laydate-icon required" id="beginDate" name="beginDate" readonly="readonly" value="<fmt:formatDate value="${act.beginDate}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ --
+ <input class="form-control layer-date laydate-icon required" id="endDate" name="endDate" readonly="readonly" value="<fmt:formatDate value="${act.endDate}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <br/>
+ <!-- 工具栏 -->
+ <div class="pull-left">
+ <button class="btn btn-white btn-sm " data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+ <div class="pull-right">
+ <button class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="search()" ><i class="fa fa-search"></i> 查询</button>
+ <button class="btn btn-primary btn-rounded btn-outline btn-sm " onclick="reset()" ><i class="fa fa-refresh"></i> 重置</button>
+ <!-- 表格 -->
+ <table id="contentTable" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+ <th style="text-align: center;">流程发起人</th>
+ <th style="text-align: center;">流程名称</th>
+ <th style="text-align: center;">流程版本</th>
+ <th style="text-align: center;">开始时间</th>
+ <th style="text-align: center;">结束时间</th>
+ <th style="text-align: center;">请假天数</th>
+ <th style="text-align: center;">请假时长</th>
+ <th style="text-align: center;">请假原因</th>
+ <th style="text-align: center;">创建时间</th>
+ <tbody>
+ <c:forEach items="${list}" var="leave">
+ <c:set var="task" value="${leave.act.task}" />
+ <c:set var="vars" value="${leave.act.vars}" />
+ <c:set var="procDef" value="${leave.act.procDef}" />
+ <td>${leave.act.vars.map.applyUserId}</td>
+ <td>${procDef.name}</td>
+ <td><b title='流程版本号'>V: ${procDef.version}</b></td>
+ <td>${leave.startTime}</td>
+ <td>${leave.endTime}</td>
+ <td>${leave.leaveDays}</td>
+ <td>${leave.leaveTime}</td>
+ <td><%--${leave.reason}--%>
+ <span title="${leave.reason}">${fns:abbr(leave.reason, 30)}</span>
+ <td><fmt:formatDate value="${leave.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+ <!-- 分页代码 -->
+ <table:page page="${page}"></table:page>
@@ -0,0 +1,220 @@
+ <title>请假一览</title>
+ function page(n,s){
+ location = '${ctx}/oa/leave/list/?pageNo='+n+'&pageSize='+s;
+ function openDialogre(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 ,
+ 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中跳转
+ 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(iframeWin.contentWindow.doSubmit(2) ){
+ btn3: function(index){
+ <li class="active"><a href="${ctx}/oa/leave/list">请假信息</a></li>
+ <form:form id="searchForm" modelAttribute="leave" action="${ctx}/oa/leave/list" method="get" class="form-inline">
+ <a href="#" id="moresee" class="fa fa-chevron-down" style="float: right;">更多</a>
+ <label>创建时间:</label>
+ <input class="form-control layer-date laydate-icon required" id="createDateStart" name="createDateStart" readonly="readonly" value="<fmt:formatDate value="${leave.createDateStart}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <input class="form-control layer-date laydate-icon required" id="createDateEnd" name="createDateEnd" readonly="readonly" value="<fmt:formatDate value="${leave.createDateEnd}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+
+ <label>审核状态:</label>
+ <form:select path="status" class="form-control m-b">
+ <form:option value="" label=""/>
+ <form:options items="${fns:getDictList('act_status')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+ <%-- <shiro:hasPermission name="oa:leave:add">
+ <table:addRow url="${ctx}/oa/leave/form" title="请假信息"></table:addRow><!-- 增加按钮 -->
+ </shiro:hasPermission>
+ <shiro:hasPermission name="oa:leave:edit">
+ <table:editRow url="${ctx}/oa/leave/form" title="请假信息" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+--%>
+ <shiro:hasPermission name="oa:leave:import">
+ <table:importExcel url="${ctx}/oa/leave/import"></table:importExcel><!-- 导入按钮 -->
+ <shiro:hasPermission name="oa:leave:export">
+ <table:exportExcel url="${ctx}/oa/leave/export"></table:exportExcel><!-- 导出按钮 -->
+ <th style="text-align: center;"> 序号</th>
+ <th style="text-align: center;">创建人</th>
+ <th style="text-align: center;">审批状态</th>
+ <th style="text-align: center;">操作</th>
+ <c:forEach items="${page.list}" var="leave" varStatus="status">
+ <c:set var="task" value="${leave.task }" />
+ <c:set var="pi" value="${leave.processInstance }" />
+ <c:set var="hpi" value="${leave.historicProcessInstance }" />
+ <td> ${status.index+1}</td>
+ <td>${leave.createBy.name}</td>
+ <c:if test="${not empty task}">
+ <td>${fns:getDictLabel(leave.status, 'act_status', '')}</td>
+ <div style="text-align: center">
+ <c:if test="${not empty task.assignee}">
+ <shiro:hasPermission name="oa:leave:view">
+ <a href="javascript:void(0)" onclick="openDialogView('详情', '${ctx}/oa/leave/form?id=${leave.id}&readAttr=disabled&name=view','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+ </shiro:hasPermission>
+ <c:if test="${leave.createBy.id eq fns:getUser().id}">
+ <c:if test="${leave.status!=3 && leave.status!=4 && leave.status!=5}">
+ <a href="${ctx}/oa/leave/revoke?id=${leave.id}&processInstanceId=${leave.processInstanceId}&reason=${leave.reason}" onclick="return confirmx('确认要撤回该信息吗?', this.href)" class="btn btn-warning btn-xs"><i class="glyphicon glyphicon-share-alt"></i> 撤回</a>
+ <a href="javascript:void(0)" onclick="openDialogre('任务办理', '${ctx}/oa/leave/applyOnLeave?taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=1','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 任务办理</a>
+ <c:if test="${empty task}">
@@ -0,0 +1,181 @@
+ <title>待审核请假信息管理</title>
+ <li class="active"><a href="${ctx}/oa/leave/leaveTodoList">待办任务</a></li>
+ <form:form id="searchForm" modelAttribute="act" action="${ctx}/oa/leave/leaveTodoList" method="get" class="form-inline">
+ <th style="text-align: center;">当前环节</th>
+ <c:set var="procDef" value="${leave.act.procDef}" /><%--
+ <c:set var="procExecUrl" value="${act.procExecUrl}" /> --%>
+ ${task.name}
+ <%--<td>${task.description}</td>--%>
+ <c:if test="${not empty task.assignee}"><%--
+ <a href="${ctx}${procExecUrl}/exec/${task.taskDefinitionKey}?procInsId=${task.processInstanceId}&act.taskId=${task.id}">办理</a> --%>
+ <%--<a href="${ctx}/oa/leave/applyOnLeave?taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=${status}" class="btn btn-success btn-xs">任务办理</a>
+ --%><a href="javascript:void(0)" onclick="openDialogre('任务办理', '${ctx}/oa/leave/applyOnLeave?taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=${status}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 任务办理</a>
@@ -0,0 +1,115 @@
+ laydate({
+ elem: '#startTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ event: 'focus' //响应事件。如果没有传入event,则按照默认的click
+ elem: '#endTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ <h5>当前步骤--[${leave.act.taskName}] </h5>
+ <div class="ibox-tools">
+ <input id="startTime" name="startTime" type="text" readonly="readonly" maxlength="20" class="laydate-icon form-control layer-date required"
+ value="${leave.startTime}"/>
+ <input id="endTime" name="endTime" type="text" readonly="readonly" maxlength="20" class="laydate-icon form-control layer-date required"
+ value="${leave.endTime}"/>
+ <title>管理日历</title>
+ laydate.render({
+ elem: '#year-month', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ <%--<div class="ibox-title">
+ <h5>管理日历 </h5>
+ <!-- 查询条件 -->
+ <form:form id="searchForm" modelAttribute="report" action="${ctx}/oa/manageCalendar/getManageCalendarInfoByMonth?date=${param.date}" method="get" class="form-inline">
+ <input type="hidden" name="userId" value="${user.id}"/>
+ <input id="year-month" name="date" type="text" readonly="readonly" maxlength="20" style="width:240px;" class="laydate-icondate form-control layer-date input-sm"
+ value="<fmt:formatDate value="${report.date}" pattern="yyyy-MM-dd HH:mm:ss"/>">
+ <!--表格-->
+ <th style="text-align: center" class="sort-column remarks">日期</th>
+ <th style="text-align: center" class="sort-column versions">记录</th>
+ <th style="text-align: center" class="sort-column content">操作</th>
+ <c:when test="${empty thisMonthRecordList}">
+ <td colspan="3" align="center">无记录</td>
+ <c:forEach items="${thisMonthRecordList}" var="report">
+ <c:if test="${report.reportNum >= 0}">
+ ${report.date}
+ ${report.reportNum} 条
+ <a target="_self" href="${ctx}/oa/manageCalendar/getManageCalendarInfoByDate?userId=${user.id}&date=${report.date}">查看详情</a>
+<div>
@@ -0,0 +1,511 @@
+ <title>管理日历每日统计</title>
+ img{width: 50px; height: 50px;}
+ $("img").each(function () {
+ var num = 1 ;
+ $(this).click(function () {
+ var flag = num%2;
+ if(flag == 1){
+ $(this).css("width","100%");
+ $(this).css("height","100%");
+ num++;
+ }else if(flag ==0){
+ $(this).css("width","50px");
+ $(this).css("height","50px");
+ $(".diffSelect").bind("change",function () {
+ var selectVal = $(".diffSelect").val();
+ if(0==selectVal){
+ $("table:eq(1) tr").each(function () {
+ $(this).show();
+ if(1==selectVal){
+ $(this).find("td:eq(3)").text().indexOf("报告")>=0?$(this).show():$(this).hide();
+ if(2==selectVal){
+ $(this).find("td:eq(3)").text().indexOf("外勤")>=0?$(this).show():$(this).hide();
+ if(3==selectVal){
+ ($(this).find("td:eq(3)").text().indexOf("考勤")>=0
+ || $(this).find("td:eq(3)").text().indexOf("正常上班")>=0
+ || $(this).find("td:eq(3)").text().indexOf("正常下班")>=0
+ || $(this).find("td:eq(3)").text().indexOf("早退")>=0
+ || $(this).find("td:eq(3)").text().indexOf("迟到")>=0
+ ) ?$(this).show():$(this).hide();
+ if(4==selectVal){
+ ($(this).find("td:eq(3)").text().indexOf("审核")>=0
+ || $(this).find("td:eq(3)").text().indexOf("用印")>=0
+ || $(this).find("td:eq(3)").text().indexOf("请假")>=0
+ || $(this).find("td:eq(3)").text().indexOf("出差")>=0
+ || $(this).find("td:eq(3)").text().indexOf("加班")>=0
+ || $(this).find("td:eq(3)").text().indexOf("外出")>=0
+ if(31==selectVal){
+ $(this).find("td:eq(3)").text().indexOf("迟到")>=0?$(this).show():$(this).hide();
+ if(32==selectVal){
+ $(this).find("td:eq(3)").text().indexOf("正常上班")>=0?$(this).show():$(this).hide();
+ if(33==selectVal){
+ $(this).find("td:eq(3)").text().indexOf("早退")>=0?$(this).show():$(this).hide();
+ if(34==selectVal){
+ $(this).find("td:eq(3)").text().indexOf("正常下班")>=0?$(this).show():$(this).hide();
+ if(41==selectVal){
+ $(this).find("td:eq(3)").text().indexOf("用印")>=0?$(this).show():$(this).hide();
+ if(42==selectVal){
+ $(this).find("td:eq(3)").text().indexOf("请假")>=0?$(this).show():$(this).hide();
+ if(43==selectVal){
+ $(this).find("td:eq(3)").text().indexOf("出差")>=0?$(this).show():$(this).hide();
+ if(44==selectVal){
+ $(this).find("td:eq(3)").text().indexOf("加班")>=0?$(this).show():$(this).hide();
+ if(45==selectVal){
+ $(this).find("td:eq(3)").text().indexOf("外出")>=0?$(this).show():$(this).hide();
+ <h5>管理日历每日详情 </h5>
+ <table class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+ <td>分类查看</td>
+ <select class="diffSelect">
+ <option value="0">查看所有</option>
+ <option value="1">工作日志列表</option>
+ <option value="2">外勤签到列表</option>
+ <option value="3">考勤列表</option>
+ <option value="4">审核列表</option>
+ <option value="31">当天迟到人员列表</option>
+ <option value="32">当天正常上班人员列表</option>
+ <option value="33">当天早退人员列表</option>
+ <option value="34">当天正常下班人员列表</option>
+ <option value="41">当天用印人员列表</option>
+ <option value="42">当天请假人员列表</option>
+ <option value="43">当天出差人员列表</option>
+ <option value="44">当天加班人员列表</option>
+ <option value="45">当天外出人员列表</option>
+ </select>
+ <th style="text-align: center;" class="">图片</th>
+ <th style="text-align: center;" class="">用户</th>
+ <th style="text-align: center;" class="">类型</th>
+ <th style="text-align: center;" class="">创建时间</th>
+ <th style="text-align: center;" class="">更新时间</th>
+ <th style="text-align: center;" class="">详情</th>
+ <c:forEach items="${manageCalendarDetailsList}" var="details">
+ <!-- 工作日志-->
+ <c:if test="${!empty details.workReports}">
+ <c:forEach items="${details.workReports.workReport}" var="wr" varStatus="id_workReport">
+ <td hidden="hidden">
+ ${wr.userId}
+ <img src="${wr.photo}" >
+ ${wr.userName}
+ 工作日志
+ <fmt:formatDate value="${wr.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <fmt:formatDate value="${wr.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <a onclick="openDialogView('查看工作日志', '${ctx}/work/report/workReport/form?id=${wr.workReportBean.id}&readAttr=disabled','80%','80%')" class="btn btn-info btn-xs"><i class="fa fa-search-plus"></i>查看详情</a>
+ <%--<input value="${wr.workReportBean.id}" hidden="hidden">--%>
+ <!-- 外勤签到-->
+ <c:if test="${!empty details.workOutSignIns}">
+ <c:forEach items="${details.workOutSignIns.workOutSignIn}" var="sign">
+ ${sign.userId}
+ <img src="${sign.photo}" >
+ ${sign.userName}
+ 外勤签到
+ <fmt:formatDate value="${sign.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <fmt:formatDate value="${sign.updateDate}" pattern="yyyy-MM-dd HH:mm:ss" />
+ <input value="${sign.workOutSignInBean}" hidden="hidden"/>
+ <a onclick="openDialogView('查看外勤签到信息', '${ctx}/workoutsignin/workOutSignIn/form?id=${sign.workOutSignInBean.id}&readAttr=disabled','80%','80%')" class="btn btn-info btn-xs"> 查看详情</a>
+ <!-- 审核-->
+ <c:if test="${!empty details.audits}">
+ <c:forEach items="${details.audits.workSealFrom}" var="seal">
+ ${seal.userId}
+ <img src="${seal.photo}" >
+ ${seal.userName}
+ 用印
+ <fmt:formatDate value="${seal.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <fmt:formatDate value="${seal.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <input value="${seal.workSealFormBean.id}" hidden="hidden"/>
+ <a onclick="openDialogView('查看用印信息', '${ctx}/oa/manageCalendar/workSealForm?id=${seal.workSealFormBean.id}','80%','80%')" class="btn btn-info btn-xs"> 查看详情</a>
+ <c:forEach items="${details.audits.leave}" var="lev">
+ ${lev.userId}
+ <img src="${lev.photo}" >
+ ${lev.userName}
+ 请假
+ <fmt:formatDate value="${lev.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <fmt:formatDate value="${lev.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <input value="${lev.leaveBean.id}" hidden="hidden"/>
+ <a onclick="openDialogView('查看请假信息', '${ctx}/oa/manageCalendar/leaveForm?id=${lev.leaveBean.id}&readAttr=disabled','80%','80%')" class="btn btn-info btn-xs"> 查看详情</a>
+ <c:forEach items="${details.audits.oaEvection}" var="evection">
+ ${evection.userId}
+ <img src="${evection.photo}" >
+ ${evection.userName}
+ 出差
+ <fmt:formatDate value="${evection.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <fmt:formatDate value="${evection.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <input value="${evection.oaEvectionBean.id}" hidden="hidden"/>
+ <a onclick="openDialogView('查看出差信息', '${ctx}/oa/manageCalendar/evectionForm?id=${evection.oaEvectionBean.id}&readAttr=disabled','80%','80%')" class="btn btn-info btn-xs"> 查看详情</a>
+ <c:forEach items="${details.audits.workOvertimeForm}" var="workOvertime">
+ ${workOvertime.userId}
+ <img src="${workOvertime.photo}" >
+ ${workOvertime.userName}
+ 加班
+ <fmt:formatDate value="${workOvertime.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <fmt:formatDate value="${workOvertime.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <input value="${workOvertime.workOvertimeFormBean.id}" hidden="hidden"/>
+ <a onclick="openDialogView('查看加班信息', '${ctx}/oa/manageCalendar/workOvertimeForm?id=${workOvertime.workOvertimeFormBean.id}&readAttr=disabled','80%','80%')" class="btn btn-info btn-xs"> 查看详情</a>
+ <c:forEach items="${details.audits.workGoOut}" var="out">
+ ${out.userId}
+ <img src="${out.photo}" >
+ ${out.userName}
+ 外出
+ <fmt:formatDate value="${out.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <fmt:formatDate value="${out.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <input value="${out.goOutBean.id}" hidden="hidden"/>
+ <a onclick="openDialogView('查看外出信息', '${ctx}/oa/manageCalendar/goOutForm?id=${out.goOutBean.id}&readAttr=disabled','80%','80%')" class="btn btn-info btn-xs"> 查看详情</a>
+ <!-- 考勤-->
+ <c:if test="${!empty details.attendances}">
+ <c:forEach items="${details.attendances.late}" var="lat">
+ ${lat.userId}
+ <img src="${lat.photo}" >
+ ${lat.userName}
+ 迟到
+ <fmt:formatDate value="${lat.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <fmt:formatDate value="${lat.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <input value="${lat.oaAttendanceBean.id}" hidden="hidden"/>
+ <a onclick="openDialogView('查看考勤信息', '${ctx}/oa/oaAttendance/form?id=${lat.oaAttendanceBean.id}&readAttr=disabled','80%','80%')" class="btn btn-info btn-xs">查看详情</a>
+ <c:forEach items="${details.attendances.onDuty}" var="on">
+ ${on.userId}
+ <img src="${on.photo}" >
+ ${on.userName}
+ 正常上班
+ <fmt:formatDate value="${on.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <fmt:formatDate value="${on.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <input value="${on.oaAttendanceBean.id}" hidden="hidden"/>
+ <a onclick="openDialogView('查看考勤信息', '${ctx}/oa/oaAttendance/form?id=${on.oaAttendanceBean.id}&readAttr=disabled','80%','80%')" class="btn btn-info btn-xs">查看详情</a>
+ <c:forEach items="${details.attendances.leaveEarly}" var="early">
+ ${early.userId}
+ <img src="${early.photo}" >
+ ${early.userName}
+ 早退
+ <fmt:formatDate value="${early.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <fmt:formatDate value="${early.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <input value="${early.oaAttendanceBean.id}" hidden="hidden"/>
+ <a onclick="openDialogView('查看考勤信息', '${ctx}/oa/oaAttendance/form?id=${early.oaAttendanceBean.id}&readAttr=disabled','80%','80%')" class="btn btn-info btn-xs">查看详情</a>
+ <c:forEach items="${details.attendances.offDut}" var="off">
+ ${off.userId}
+ <img src="${off.photo}" >
+ ${off.userName}
+ 正常下班
+ <fmt:formatDate value="${off.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <fmt:formatDate value="${off.updateDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <input value="${off.oaAttendanceBean.id}" hidden="hidden"/>
+ <a onclick="openDialogView('查看考勤信息', '${ctx}/oa/oaAttendance/form?id=${off.oaAttendanceBean.id}&readAttr=disabled','80%','80%')" class="btn btn-info btn-xs">查看详情</a>
@@ -0,0 +1,573 @@
+ if($("#beginDate").val()==null || $("#beginDate").val()==''){
+ $("#beginDate").val(getNowFormatDate());
+ if($("#endDate").val()==null || $("#endDate").val()==''){
+ $("#endDate").val(getNowFormatDate());
+ elem: '#beginDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ format: 'yyyy-MM-dd',
+ type : 'date'
+ elem: '#endDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ function getNowFormatDate() {
+ var date = new Date();
+ var seperator1 = "-";
+ var seperator2 = ":";
+ 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;
+ <div class="full-width fl">
+ <div class="contentShadow layui-row" id="queryDiv">
+ <form:form id="searchForm" modelAttribute="calendarCountEntity" action="${ctx}/work/report/workReport/reportlist" method="post" class="form-inline">
+ <%--以下三行照抄--%>
+ <div class="commonQuery">
+ <div class="layui-item query athird">
+ <label class="layui-form-label">类型:</label>
+ <div class="layui-input-block">
+ <form:select path="type" class=" form-control simple-select">
+ <form:option value="1" label="工作日志"/>
+ <form:option value="2" label="请假"/>
+ <label class="layui-form-label">日期:</label>
+ <input id="beginDate" name="startDate" placeholder="开始时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+ />
+ </input>
+ <span class="group-sep">-</span>
+ <input id="endDate" name="endDate" placeholder="结束时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+ <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 style=" clear:both;"></div>
+ <th style="text-align: center;" class="">姓名</th>
+ <th style="text-align: center;" class="">工号</th>
+ <%-- <th style="text-align: center;" class="">部门</th>--%>
+ <th style="text-align: center;" class="">职级</th>
+ <th style="text-align: center;" class="">日期</th>
+ <th style="text-align: center;" class="">操作</th>
+ ${wr.no}
+ <%-- <td>
+ ${wr.officeName}
+ </td>--%>
+ 无
+ <a onclick="openDialogView('查看工作报告', '${ctx}/work/report/workReport/form?id=${wr.workReportBean.id}&readAttr=disabled','80%','80%')" class="btn btn-info btn-xs"></i>查看详情</a>
+ ${sign.no}
+ ${sign.officeName}
+ ${seal.no}
+ <%--<td>
+ ${seal.officeName}
+ ${lev.no}
+ ${lev.officeName}
+ ${evection.no}
+ ${evection.officeName}
+ ${workOvertime.no}
+ ${workOvertime.officeName}
+ ${out.no}
+ ${out.officeName}
+ ${lat.no}
+ ${lat.officeName}
+ ${on.no}
+ ${on.officeName}
+ ${early.no}
+ ${early.officeName}
+ ${off.no}
+ ${off.officeName}
@@ -0,0 +1,442 @@
+ <form:form id="searchForm" modelAttribute="calendarCountEntity" action="${ctx}/work/report/workReport/reportlist?flat=1" method="post" class="form-inline">
+ <%--<table class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+ <option value="1">工作报告列表</option>
+ </table>--%>
+ <th style="text-align: center;min-width: 200px" class="">类型</th>
+ <th style="text-align: center;min-width: 200px" class="">日期</th>
+ <th style="text-align: center;min-width: 200px" class="">操作</th>
+ <a onclick="openDialogView('查看工作报告', '${ctx}/work/report/workReport/form?id=${wr.workReportBean.id}&readAttr=disabled','80%','80%')" class="btn btn-info btn-xs">查看详情</a>
@@ -0,0 +1,146 @@
+ <title>考勤信息管理</title>
+<body class="hideScroll">
+ <form:form id="inputForm" modelAttribute="oaAttendance" action="${ctx}/oa/oaAttendance/save" method="post" class="form-horizontal">
+ <table class="table table-bordered table-condensed dataTables-example dataTable no-footer">
+ <td class="width-15 active"><label class="pull-right">公司:</label></td>
+ <td class="width-35">
+ <c:when test="${requestScope.disabled == 'true'}">
+ ${oaAttendance.company.name}
+ <sys:treeselect id="company" name="company.id" value="${oaAttendance.company.id}" labelName="company.name" labelValue="${oaAttendance.company.name}"
+ title="部门" url="/sys/office/treeData?type=2" cssClass="form-control " allowClear="true" notAllowSelectParent="true"/>
+ <td class="width-15 active"><label class="pull-right">考勤规则:</label></td>
+ <c:when test="${requestScope.disabled eq 'true'}">
+ ${oaAttendance.rule.startTime}
+ ${oaAttendance.rule.endTime}
+ (${oaAttendance.rule.workdays})
+ <sys:gridselect url="${ctx}/oa/oaAttendance/selectrule" id="rule" name="rule.id" value="${oaAttendance.rule.id}" title="选择考勤规则" labelName="rule.id"
+ labelValue="${oaAttendance.rule.id}" cssClass="form-control required" fieldLabels="id|name" fieldKeys="" searchLabel="id" searchKey="id" ></sys:gridselect>
+ <td class="width-15 active"><label class="pull-right">用户:</label></td>
+ ${oaAttendance.user.name}
+ <sys:treeselect id="user" name="user.id" value="${oaAttendance.user.id}" labelName="user.name" labelValue="${oaAttendance.user.name}"
+ title="用户" url="/sys/office/treeData?type=3" cssClass="form-control " allowClear="true" notAllowSelectParent="true"/>
+ <td class="width-15 active"><label class="pull-right">备注信息:</label></td>
+ <%--<form:textarea path="remarks" htmlEscape="false" rows="4" class="form-control "/>--%>
+ ${oaAttendance.remarks}
+ <td class="width-15 active"><label class="pull-right">上班时间:</label></td>
+ <fmt:formatDate value="${oaAttendance.startTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <input id="startTime" name="startTime" type="text" maxlength="20" class="laydate-icon form-control layer-date "
+ value="<fmt:formatDate value="${oaAttendance.startTime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+ <td class="width-15 active"><label class="pull-right">上班情况:</label></td>
+ <c:if test="${oaAttendance.morning==1}">正常打卡</c:if>
+ <c:if test="${oaAttendance.morning==2}"><strong style="color: red">迟到</strong></c:if>
+ <c:if test="${oaAttendance.morning==5}"><strong style="color: red">待打卡</strong></c:if>
+ <td class="width-15 active"><label class="pull-right">下班时间:</label></td>
+ <fmt:formatDate value="${oaAttendance.endTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ <input id="endTime" name="endTime" type="text" maxlength="20" class="laydate-icon form-control layer-date "
+ value="<fmt:formatDate value="${oaAttendance.endTime}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+ <td class="width-15 active"><label class="pull-right">下班情况:</label></td>
+ <c:if test="${oaAttendance.afternoon==1}">正常打卡</c:if>
+ <c:if test="${oaAttendance.afternoon==3}"><strong style="color: red">早退</strong></c:if>
+ <c:if test="${oaAttendance.afternoon==5}"><strong style="color: red">待打卡</strong></c:if>
@@ -0,0 +1,195 @@
+ $(".oaAttendance_startTime").each(function () {
+ var time = $(this).text().trim();
+ if(time.length==0){
+ time = $(this).next("td").text().trim();
+ var date = new Date(time);
+ //var dataType = Object.prototype.toString.call(date);
+ var weeks = ['日','一','二','三','四','五','六'];
+ var week = weeks[date.getDay()];
+ var rules = $(this).siblings(".oaAttendance_rule").text().trim();
+ rules = rules.replace(week,"<strong style='color: red;'>"+week+"</strong>");
+ $(this).siblings(".oaAttendance_rule").html(rules);
+ elem: '#fromThisDay', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ elem: '#toThisDay', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ <h5>考勤信息列表 </h5>
+ <form:form id="searchForm" modelAttribute="oaAttendance" action="${ctx}/oa/oaAttendance/" method="post" class="form-inline">
+ <span>姓名:</span>
+ <%--<form:input path="user.name" htmlEscape="false" maxlength="64" class=" form-control input-sm"/>--%>
+ <input name="user.name" value="${username}" class="form-control input-sm"/>
+ <span>开始日期:</span>
+ <input id="fromThisDay" name="fromThisDay" type="text" readonly="" maxlength="20" style="width:180px;" class="laydate-icondate form-control layer-date input-sm"
+ value="<fmt:formatDate value="${fromThisDay}" pattern="yyyy-MM-dd"/>">
+ <span>结束日期:</span>
+ <input id="toThisDay" name="toThisDay" type="text" readonly="" maxlength="20" style="width:180px;" class="laydate-icondate form-control layer-date input-sm"
+ value="<fmt:formatDate value="${toThisDay}" pattern="yyyy-MM-dd"/>">
+ <shiro:hasPermission name="oa:oaAttendance:add">
+ <table:addRow url="${ctx}/oa/oaAttendance/form" title="考勤信息"></table:addRow><!-- 增加按钮 -->
+ <shiro:hasPermission name="oa:oaAttendance:edit">
+ <table:editRow url="${ctx}/oa/oaAttendance/form" title="考勤信息" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+ <shiro:hasPermission name="oa:oaAttendance:del">
+ <table:delRow url="${ctx}/oa/oaAttendance/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+ <shiro:hasPermission name="oa:oaAttendance:import">
+ <table:importExcel url="${ctx}/oa/oaAttendance/import"></table:importExcel><!-- 导入按钮 -->
+ <shiro:hasPermission name="oa:oaAttendance:export">
+ <table:exportExcel url="${ctx}/oa/oaAttendance/export"></table:exportExcel><!-- 导出按钮 -->
+ <%--<th> <input type="checkbox" class="i-checks"></th>--%>
+ <th style="text-align: center;" class="sort-column company.name">公司</th>
+ <th style="text-align: center;" class="sort-column rule.id">考勤规则</th>
+ <th style="text-align: center;" class="sort-column user.name">用户</th>
+ <th style="text-align: center;" class="sort-column startTime">上班时间</th>
+ <th style="text-align: center;" class="sort-column endTime">下班时间</th>
+ <th style="text-align: center;" class="sort-column morning">上班情况</th>
+ <th style="text-align: center;" class="sort-column afternoon">下班情况</th>
+ <th style="text-align: center;" class="sort-column remarks">备注信息</th>
+ <c:forEach items="${page.list}" var="oaAttendance">
+ <%--<td> <input type="checkbox" id="${oaAttendance.id}" class="i-checks"></td>--%>
+ <%--${oaAttendance.company.name}--%>
+ <span title="${oaAttendance.company.name}">${fns:abbr(oaAttendance.company.name, 30)}</span>
+ <td class="oaAttendance_rule">
+ <td class="oaAttendance_startTime">
+ <shiro:hasPermission name="oa:oaAttendance:view">
+ <a href="javascript:void(0)" onclick="openDialogView('查看考勤信息', '${ctx}/oa/oaAttendance/form?id=${oaAttendance.id}&morning=${oaAttendance.morning}&afternoon=${oaAttendance.afternoon}&readAttr=disabled','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+ <%-- <shiro:hasPermission name="oa:oaAttendance:edit">
+ <a href="javascript:void(0)" onclick="openDialog('修改考勤信息', '${ctx}/oa/oaAttendance/form?id=${oaAttendance.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+ <a href="${ctx}/oa/oaAttendance/delete?id=${oaAttendance.id}" onclick="return confirmx('确认要删除该考勤信息吗?', this.href)" class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+ </shiro:hasPermission>--%>
@@ -0,0 +1,128 @@
+ <title>考勤规则管理</title>
+ <form:form id="inputForm" modelAttribute="oaAttendanceRule" action="${ctx}/oa/oaAttendanceRule/save" method="post" class="form-horizontal">
+ <sys:treeselect id="company" name="company.id" value="${oaAttendanceRule.company.id}" labelName="company.name" labelValue="${oaAttendanceRule.company.name}"
+ ${oaAttendanceRule.company.name}
+ <form:input path="startTime" htmlEscape="false" class="form-control "/></c:when>
+ ${oaAttendanceRule.startTime}
+ <form:input path="endTime" htmlEscape="false" class="form-control "/></c:when>
+ ${oaAttendanceRule.endTime}
+ <td class="width-15 active"><label class="pull-right">工作日:</label></td>
+ <form:input path="workdays" htmlEscape="false" class="form-control "/></c:when>
+ ${oaAttendanceRule.workdays}
+ <td class="width-15 active"><label class="pull-right">考勤地点:</label></td>
+ <%--<form:input path="place" htmlEscape="false" class="form-control "/>--%>
+ ${rule_place}
+ <td class="width-15 active"><label class="pull-right">考勤WIFI:</label></td>
+ <%--<form:input path="wifi" htmlEscape="false" class="form-control "/>--%>
+ ${rule_wifi_name} ${rule_wifi}
+ <form:input path="remarks" htmlEscape="false" class="form-control "/></c:when>
+ ${oaAttendanceRule.remarks}
+ <td class="width-15 active"><label class="pull-right">名称:</label></td>
+ <form:input path="name" htmlEscape="false" class="form-control "/></c:when>
+ ${oaAttendanceRule.name}
@@ -0,0 +1,164 @@
+ <h5>考勤规则列表 </h5>
+ <form:form id="searchForm" modelAttribute="oaAttendanceRule" action="${ctx}/oa/oaAttendanceRule/" method="post" class="form-inline">
+<%--
+ <shiro:hasPermission name="oa:oaAttendanceRule:add">
+ <table:addRow url="${ctx}/oa/oaAttendanceRule/form" title="考勤规则"></table:addRow><!-- 增加按钮 -->
+ <shiro:hasPermission name="oa:oaAttendanceRule:edit">
+ <table:editRow url="${ctx}/oa/oaAttendanceRule/form" title="考勤规则" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+ <shiro:hasPermission name="oa:oaAttendanceRule:del">
+ <table:delRow url="${ctx}/oa/oaAttendanceRule/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+ <shiro:hasPermission name="oa:oaAttendanceRule:import">
+ <table:importExcel url="${ctx}/oa/oaAttendanceRule/import"></table:importExcel><!-- 导入按钮 -->
+ <shiro:hasPermission name="oa:oaAttendanceRule:export">
+ <table:exportExcel url="${ctx}/oa/oaAttendanceRule/export"></table:exportExcel><!-- 导出按钮 -->
+ <th style="text-align: center;"> <input type="checkbox" class="i-checks"></th>
+ <th style="text-align: center;" class="sort-column workdays">工作日</th>
+ <th style="text-align: center;" class="sort-column place">考勤地点</th>
+ <th style="text-align: center;" class="sort-column wifi">考勤WIFI</th>
+ <th style="text-align: center;" class="sort-column wifi">wifi名称</th>
+ <th style="text-align: center;" class="sort-column createDate">创建时间</th>
+<%-- <th class="sort-column remarks">备注信息</th>
+ <th class="sort-column name">名称</th>--%>
+ <c:forEach items="${outterList}" var="str" >
+ <c:forEach items="${page.list}" var="oaAttendanceRule">
+ <td> <input type="checkbox" id="${oaAttendanceRule.id}" class="i-checks"></td>
+ <%-- <a href="javascript:void(0)" onclick="openDialogView('查看考勤规则', '${ctx}/oa/oaAttendanceRule/form?id=${oaAttendanceRule.id}&readAttr=disabled','80%','80%')">
+ </a>--%>
+ <%--${oaAttendanceRule.company.name}--%>
+ <span title="${oaAttendanceRule.company.name}">${fns:abbr(oaAttendanceRule.company.name, 30)}</span>
+ <c:forTokens items="${str}" delims="+" var="subStr" varStatus="index">
+ ${subStr}
+ </c:forTokens>
+ <fmt:formatDate value="${oaAttendanceRule.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+<%-- <td>
+ <shiro:hasPermission name="oa:oaAttendanceRule:view">
+ <a href="javascript:void(0)" onclick="openDialogView('查看考勤规则', '${ctx}/oa/oaAttendanceRule/form?id=${oaAttendanceRule.id}&place_wifi_name=${str}&readAttr=disabled','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+ <%--
+ <a href="javascript:void(0)" onclick="openDialog('修改考勤规则', '${ctx}/oa/oaAttendanceRule/form?id=${oaAttendanceRule.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+ <a href="${ctx}/oa/oaAttendanceRule/delete?id=${oaAttendanceRule.id}" onclick="return confirmx('确认要删除该考勤规则吗?', this.href)" class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
@@ -0,0 +1,390 @@
+ <title>通知管理</title>
+ img {width: 50px; height: 50px;}
+ <%--<script type="text/javascript" src="${ctxStatic}/ckeditor/ckeditor.js"></script>--%>
+ <script type="text/javascript" language="JavaScript" for="window" event="onload">
+ //$("#name").focus();
+ <%--$('input,textarea,select').attr('disabled',<%=request.getAttribute("disabled")%>);--%>
+ function insertTitle(tValue){
+ var list = "${oaNotify.workAttachments}";
+ var size = (list.split('url')).length-1;
+ var files = $("#attachment_file")[0].files;
+ for(var i = 0;i<files.length;i++) {
+ var file = files[i];
+ var attachmentId = "";
+ var attachmentFlag = "107";
+ console.log(file);
+ var timestamp = new Date().getTime();
+ var storeAs = "attachment-file/oaNotify/" + 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, size);
+ function changeUser(ids,names,parents) {
+ var split = ids.split(',');
+ var split2 = names.split(',');
+ $("#userTableList").html("");
+ userIdx=0;
+ for(var i=0;i<split.length;i++){
+ var id = split[i];
+ if(id==''||id==null){
+ continue;
+ var obj = {'id':id,'name':split2[i],'officeName':parents[i]};
+ addRow('#userTableList',userIdx,userTpl,obj);
+ userIdx+=1;
+ function changeOffice(ids,names,parentIds) {
+ $("#officeTableList").html("");
+ officeIdx=0;
+ for(var i=0;i<ids.length;i++){
+ var obj = {'id':ids[i],'name':parentIds[i]};
+ addRow('#officeTableList',officeIdx,officeTpl,obj);
+ officeIdx+=1;
+ function getSelectOfficeIds() {
+ var selectedIds = "";
+ var pidArr = $("#officeTableList tr .officeId");
+ for(var i=0;i<pidArr.length;i++){
+ selectedIds+=$(pidArr[i]).val();
+ selectedIds+=",";
+ return selectedIds;
+ function getSelectUserIds() {
+ var pidArr = $("#userTableList tr .userId");
+<body >
+<div class="single-form">
+ <div class="container view-form">
+ <form:form id="inputForm" modelAttribute="oaNotify" enctype="multipart/form-data" action="${ctx}/oa/oaNotify/saveAudit" method="post" class="form-horizontal">
+ <div class="form-group layui-row first">
+ <div class="form-group-label"><h2>公告信息</h2></div>
+ <div class="layui-item layui-col-sm6">
+ <label class="layui-form-label">公告标题:</label>
+ <input htmlEscape="false" readonly="true" maxlength="30" class="form-control required layui-input"
+ value="${oaNotify.title}"/>
+ <label class="layui-form-label">公告编号:</label>
+ <form:input path="number" htmlEscape="false" readonly="true" maxlength="30" class="form-control layui-input"/>
+ <span class="input-group-btn">
+ <label class="form-status"><c:choose><c:when test="${not empty oaNotify.status}">${fns:getDictLabel(oaNotify.status, 'audit_state', '')}</c:when><c:otherwise>新添</c:otherwise></c:choose></label>
+ </span>
+ <label class="layui-form-label">公告类型:</label>
+ value="${fns:getMainDictLabel(oaNotify.type, 'oa_notify_type', '')}"/>
+ <label class="layui-form-label">创建日期:</label>
+ <input id="createDate" name="createDate" htmlEscape="false" readonly="true"
+ class="laydate-icondate form-control layer-date layui-input laydate-icon"
+ value="<fmt:formatDate value="${oaNotify.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+ <label class="layui-form-label">开始日期:</label>
+ <input id="startDate" name="startDate" htmlEscape="false" readonly="true"
+ class="laydate-icondate form-control layer-date layui-input laydate-icon required"
+ value="<fmt:formatDate value="${oaNotify.startDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+ <label class="layui-form-label">结束日期:</label>
+ <input id="endDate" name="endDate" htmlEscape="false" readonly="true"
+ value="<fmt:formatDate value="${oaNotify.endDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+ <label class="layui-form-label">创建人:</label>
+ <form:input id="cBName" path="createBy.name" htmlEscape="false" readonly="true"
+ class="form-control layui-input"/>
+ <label class="layui-form-label">所属部门:</label>
+ <form:input id="office" path="office.name" htmlEscape="false" readonly="true"
+ <div class="layui-item layui-col-sm12" style="padding-bottom: 20px;">
+ <label class="layui-form-label"><span class="require-item">*</span>内容:</label>
+ <div class="wrapForm">
+ <div class="mask">
+ <form:textarea path="contents" disabled="true" htmlEscape="false" colspan="3" rows="6" maxlength="550"
+ class="form-control "/>
+ <form:hidden id="content" path="content" htmlEscape="false" maxlength="64"
+ class="form-control required"/>
+ <sys:ckeditorView replace="contents" uploadPath="/oa/oa"/>
+ <div class="form-group layui-row">
+ <div class="form-group-label"><h2>公告范围-部门</h2></div>
+ <table id="officeTable" class="table table-bordered table-condensed details">
+ <th>部门</th>
+ <tbody id="officeTableList">
+ <script type="text/template" id="officeTpl">//<!--
+ <tr id="officeList{{idx}}">
+ {{row.name}}
+ </tr>//-->
+ <div class="form-group-label"><h2>公告范围-成员</h2></div>
+ <table id="userTable" class="table table-bordered table-condensed details">
+ <th>姓名</th>
+ <tbody id="userTableList">
+ <script type="text/template" id="userTpl">//<!--
+ <tr id="userList{{idx}}">
+ {{row.officeName}}
+ var userIdx = 0, userTpl = $("#userTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g, "");
+ var officeIdx = 0, officeTpl = $("#officeTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g, "");
+ $(document).ready(function () {
+ var data = ${fns:toJson(oaNotify.officeList)};
+ if (data != null) {
+ for (var i = 0; i < data.length; i++) {
+ addRow('#officeTableList', officeIdx, officeTpl, data[i]);
+ officeIdx = officeIdx + 1;
+ var dataBank = ${fns:toJson(oaNotify.userList)};
+ if (dataBank != null) {
+ for (var i = 0; i < dataBank.length; i++) {
+ addRow('#userTableList', userIdx, userTpl, dataBank[i]);
+ userIdx = userIdx + 1;
+ function addRow(list, idx, tpl, row) {
+ var idx1 = 0;
+ if ('#userTableList' == list) {
+ idx1 = $("#userTableList tr").length
+ } else if ('#officeTableList' == list) {
+ idx1 = $("#officeTableList tr").length
+ bornTemplete(list, idx, tpl, row, idx1);
+ function bornTemplete(list, idx, tpl, row, idx1) {
+ $(list).append(Mustache.render(tpl, {
+ idx: idx, delBtn: true, row: row,
+ order: idx1 + 1, idx1: idx1
+ }));
+ $(list + idx).find("select").each(function () {
+ $(this).val($(this).attr("data-value"));
+ $(list + idx).find("input[type='checkbox'], input[type='radio']").each(function () {
+ var ss = $(this).attr("data-value").split(',');
+ for (var i = 0; i < ss.length; i++) {
+ if ($(this).val() == ss[i]) {
+ $(this).attr("checked", "checked");
+ function delRow(obj, prefix, idx) {
+ $(obj).parent().parent().remove();
+ <div class="form-group-label"><h2>公告附件</h2></div>
+ <div class="layui-item layui-col-xs12" style="padding:0 16px;">
+ <table id="upTable" class="table table-bordered table-condensed details">
+ <%-- <th>序号</th>--%>
+ <th>文件预览</th>
+ <th>上传人</th>
+ <th>上传时间</th>
+ <th width="100px">操作</th>
+ <tbody id="file_attachment">
+ <c:forEach items="${oaNotify.workAttachments}" var="workClientAttachment" varStatus="status">
+ <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpg')
+ or fn:containsIgnoreCase(workClientAttachment.attachmentName,'png')
+ or fn:containsIgnoreCase(workClientAttachment.attachmentName,'gif')
+ or fn:containsIgnoreCase(workClientAttachment.attachmentName,'bmp')
+ or fn:containsIgnoreCase(workClientAttachment.attachmentName,'jpeg')}">
+ <td><img src="${workClientAttachment.url}" width="50" height="50"
+ onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')"
+ alt="${workClientAttachment.attachmentName}"></td>
+ <c:when test="${fn:containsIgnoreCase(workClientAttachment.attachmentName,'pdf')}">
+ <td><a class="attention-info" href="javascript:void(0)"
+ onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a>
+ onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a>
+ <td>${workClientAttachment.createBy.name}</td>
+ <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/></td>
+ <td class="op-td">
+ <div class="op-btn-box">
+ <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));"
+ class="op-btn op-btn-download"><i class="fa fa-download"></i> 下载</a>
+ <div class="form-group-label"><h2>审批意见</h2></div>
+ <div class="layui-item layui-col-xs12 with-textarea" >
+ <label class="layui-form-label">审批意见:</label>
+ <form:textarea path="act.comment" class="form-control" rows="4" maxlength="127" />
+ <input type="file" name="upload_files" style="display: none;">
+ <div class="form-group-label"><h2>审批流程</h2></div>
+ <div class="layui-item layui-col-xs12 form-table-container" >
+ <act:flowChart procInsId="${oaNotify.act.procInsId}"/>
+ <act:histoicFlow procInsId="${oaNotify.act.procInsId}"/>
+ <div class="form-group layui-row page-end"></div>
@@ -0,0 +1,399 @@
+ <script type="text/javascript" src="${ctxStatic}/ckeditor/ckeditor.js"></script>
+ function doSubmit(i){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
+ //var remarks = CKEDITOR.instances.content.getData();
+ var content = CKEDITOR.instances.contents.document.getBody().getText();
+ $("#content").val(content);
+ console.log(content+","+(content == null)+(content == undefined)+(content == ""));
+ if(content == null || content == undefined || content == "" || content == "\n"){
+ parent.layer.msg('公告内容不能为空',{icon:5});
+ if(i==2){
+ $("#inputForm").attr("action","${ctx}/oa/oaNotify/tstore");
+ elem: '#startDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ event: 'focus', //响应事件。如果没有传入event,则按照默认的click
+ type : 'datetime'
+ $("#attachment_btn").click(function () {
+ $("#attachment_file").click();
+ <div class="container">
+ <form:form id="inputForm" modelAttribute="oaNotify" enctype="multipart/form-data" action="${ctx}/oa/oaNotify/save" method="post" class="form-horizontal">
+ <div class="form-group-label"><h2>通告信息</h2></div>
+ <label class="layui-form-label"><span class="require-item">*</span>公告标题:</label>
+ <form:input path="title" htmlEscape="false" maxlength="30" class="form-control required layui-input"/>
+ <label class="layui-form-label"><span class="require-item">*</span>公告编号:</label>
+ <label class="layui-form-label"><span class="require-item">*</span>公告类型:</label>
+ <form:select path="type" class="form-control required simple-select">
+ <form:options items="${fns:getMainDictList('oa_notify_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+ <input id="createDate" name="createDate" htmlEscape="false" readonly="true" class="laydate-icondate form-control layer-date layui-input laydate-icon"
+ <div class="layui-item layui-col-sm6 ">
+ <label class="layui-form-label"><span class="require-item">*</span>开始日期:</label>
+ <input id="startDate" name="startDate" style="background-color: #ffffff;" readonly="true" htmlEscape="false" class="laydate-icondate form-control layer-date layui-input laydate-icon required"
+ <label class="layui-form-label"><span class="require-item">*</span>结束日期:</label>
+ <input id="endDate" name="endDate" style="background-color: #ffffff;" readonly="true" htmlEscape="false" class="laydate-icondate form-control layer-date layui-input laydate-icon required"
+ <form:input id="cBName" path="createBy.name" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+ <form:input id="office" path="office.topCompany" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+ <form:textarea path="contents" htmlEscape="false" colspan="3" rows="6" maxlength="550" class="form-control "/>
+ <form:hidden id="content" path="content" htmlEscape="false" maxlength="64" class="form-control required"/>
+ <sys:ckeditor replace="contents" uploadPath="/oa/oa"/>
+ <div class="layui-item nav-btns">
+ <sys:treeselectoffices id="offices" name="" value="" labelName="memberNameStr" labelValue=""
+ retnParent="true" checked="true" notAllowSelectParent="true" title="部门" url="/sys/office/treeData?type=2" cssClass="form-control required" allowClear="true"/>
+ <th class="hide"></th>
+ <th>操作</th>
+ <td class="hide">
+ <input id="officeList{{idx}}_id" name="officeList[{{idx}}].id" readonly="true" value="{{row.id}}" type="hidden" class="form-control officeId"/>
+ <td class="text-center op-td">
+ <a href=javascript:void(0); onclick="delRow(this, '#officeList{{idx}}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
+ <sys:treeselectusers id="users" name="" value="" labelName="memberNameStr" labelValue=""
+ retnParent="true" title="用户" url="/sys/office/treeData?type=3" checked="true" cssClass="form-control required" allowClear="true" notAllowSelectParent="true"/>
+ <input id="userList{{idx}}_id" name="userList[{{idx}}].id" readonly="true" value="{{row.id}}" type="hidden" class="form-control userId"/>
+ <a href=javascript:void(0); onclick="delRow(this, '#userList{{idx}}')" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 取消</a>
+ var userIdx = 0, userTpl = $("#userTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+ var officeIdx = 0, officeTpl = $("#officeTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+ if (data!=null) {
+ if (dataBank!=null) {
+ function addRow(list, idx, tpl, row){
+ if('#userTableList'==list){
+ }else if('#officeTableList'==list){
+ function bornTemplete(list, idx, tpl, row, idx1){
+ order:idx1 + 1, idx1:idx1
+ $(list+idx).find("select").each(function(){
+ $(list+idx).find("input[type='checkbox'], input[type='radio']").each(function(){
+ for (var i=0; i<ss.length; i++){
+ if($(this).val() == ss[i]){
+ $(this).attr("checked","checked");
+ function delRow(obj, prefix,idx){
+ <div class="form-group-label"><h2>附件信息</h2></div>
+ <a id="attachment_btn" class="nav-btn nav-btn-add" title="添加附件"><i class="fa fa-plus"></i> 添加附件</a>
+ <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">
+ <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>
+ <th width="150px">操作</th>
+ <c:forEach items="${oaNotify.workAttachments}" var = "workClientAttachment" varStatus="status">
+ <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}"></td>
+ <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%','1')">${workClientAttachment.attachmentName}</a></td>
+ <td><a class="attention-info" href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','90%','90%')">${workClientAttachment.attachmentName}</a></td>
+ <div class="op-btn-box" >
+ <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="op-btn op-btn-download"><i class="fa fa-download"></i> 下载</a>
+ <c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
+ <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i> 删除</a>
@@ -0,0 +1,393 @@
+ <title>通告管理</title>
+ $(".btn btn-white btn-sm").bind("click",function () {
+ //搜索框收放
+ $('#moresee').click(function(){
+ if($('#moresees').is(':visible'))
+ {
+ $('#moresees').slideUp(0,resizeListWindow1);
+ $('#moresee i').removeClass("glyphicon glyphicon-menu-up").addClass("glyphicon glyphicon-menu-down");
+ $('#moresees').slideDown(0,resizeListWindow1);
+ $('#moresee i').removeClass("glyphicon glyphicon-menu-down").addClass("glyphicon glyphicon-menu-up");
+ elem: '#createStartDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ elem: '#createEndDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ function openDialog(title,url,width,height,target) {
+ if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {//如果是移动端,就使用自适应大小弹窗
+ width = 'auto';
+ height = 'auto';
+ } else {//如果是PC端,根据用户设置的width和height显示。
+ content: url,
+ skin: 'three-btns',
+ btn: ['送审', '暂存', '关闭'],
+ /*yes: function (index, layero) {
+ if (target) {
+ inputForm.attr("target", top_iframe);//表单提交成功后,从服务器返回的url在当前tab中展示
+ if (iframeWin.contentWindow.doSubmit()) {
+ setTimeout(function () {
+ top.layer.close(index)
+ }, 100);//延时0.1秒,对应360 7.1版本bug
+ },*/
+ btn3: function (index) {
+ function openDialogre(title,url,width,height,target,buttons) {
+ var split = buttons.split(",");
+ btn: split,
+ if(split.length==2){return}
+ body{
+ background-color:transparent;
+ filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#26FFFFFF, endColorstr=#26FFFFFF);
+ color:#ffffff;
+ background-color:rgba(255,255,255,0);
+ height:100%;
+ <div class="layui-row">
+ <form:form id="searchForm" modelAttribute="oaNotify" action="${ctx}/oa/oaNotify/${oaNotify.self?'self':''}" method="post" class="form-inline">
+ <div class="layui-input-block with-icon">
+ <form:input path="title" htmlEscape="false" maxlength="200" class=" form-control layui-input"/>
+ <form:select path="type" class="form-control simple-select">
+ <div id="moresees" style="clear:both;display:none;">
+ <form:input path="number" htmlEscape="false" maxlength="200" class=" form-control layui-input"/>
+ <input class="form-control layer-date laydate-icon layui-input laydate-icondate" id="createStartDate" name="createStartDate" value="<fmt:formatDate value="${oaNotify.createStartDate}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <label class="layui-form-label">—— </label>
+ <input class="form-control layer-date laydate-icon layui-input laydate-icondate" id="createEndDate" name="createEndDate" value="<fmt:formatDate value="${oaNotify.createEndDate}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <label class="layui-form-label">公告内容:</label>
+ <form:input path="content" htmlEscape="false" maxlength="200" class=" form-control layui-input"/>
+ <form:input path="createBy.name" htmlEscape="false" maxlength="200" class=" form-control layui-input"/>
+ <label class="layui-form-label">阅读状态:</label>
+ <form:radiobuttons path="status" class="i-checks" items="${fns:getDictList('oa_notify_status')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+ <div style="clear:both;"></div>
+ <div class="contentShadow layui-form contentDetails">
+ <div class="nav-btns">
+ <shiro:hasPermission name="oa:oaNotify:add">
+ <table:addRow url="${ctx}/oa/oaNotify/form" title="通知" height="95%;" width="95%;"></table:addRow><!-- 增加按钮 -->
+ <shiro:hasPermission name="oa:oaNotify:import">
+ <table:importExcel url="${ctx}/oa/oaNotify/import"></table:importExcel><!-- 导入按钮 -->
+ <shiro:hasPermission name="oa:oaNotify:export">
+ <table:exportExcel url="${ctx}/oa/oaNotify/export"></table:exportExcel><!-- 导出按钮 -->
+ <button class="nav-btn nav-btn-refresh" data-toggle="tooltip" data-placement="left" onclick="sortOrRefresh()" title="刷新"><i class="glyphicon glyphicon-repeat"></i> 刷新</button>
+ <div style="clear: both;"></div>
+ <table class="oa-table layui-table" id="contentTable"></table>
+ <div id="changewidth"></div>
+<script src="${ctxStatic}/layer-v2.3/layui/layui.all.js" charset="utf-8"></script>
+<script>
+ layui.use('table', function(){
+ layui.table.render({
+ limit:${ page.pageSize }
+ ,elem: '#contentTable'
+ ,page: false
+ ,cols: [[
+ // {checkbox: true, fixed: true},
+ {field:'index',align:'center', width:40,title: '序号'}
+ ,{field:'number',align:'center', title: '公告编号', minWidth:150,templet:function(d){
+ var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看公告', '${ctx}/oa/oaNotify/form?id=" + d.id + "&view=view','95%','95%')\">" +
+ "<span title=" + d.number + ">" + d.number + "</span></a>";
+ return xml;
+ }}
+ ,{field:'title',align:'center', title: '公告标题', minWidth:150,templet:function(d){
+ "<span title=" + d.title + ">" + d.title + "</span></a>";
+ ,{field:'type',align:'center', title: '公告类型', width:80}
+ ,{field:'content',align:'center', title: '公告内容', minWidth:200,templet:function(d){
+ return "<span title='"+ d.content +"'>" + d.content + "</span>";
+ ,{field:'startDate', align:'center',title: '开始时间',width:150}
+ ,{field:'endDate', align:'center',title: '结束时间',width:150}
+ /*,{field:'vtatus', align:'center',title: '查阅状态', width:80}*/
+ ,{field:'createBy', align:'center',title: '创建人', width:80,templet:function(d){
+ return "<span title='"+ d.createBy +"'>" + d.createBy + "</span>";
+ ,{field:'createDate', align:'center',title: '创建时间',width:150}
+ ,{align:'center', title: '公告状态', width:70,templet:function(d){
+ var st = getAuditState(d.status)
+ var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/oa/oaNotify/getProcess?id=" + d.id + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+ // ,{fixed: 'right',align:'center', toolbar: '#op',title:"操作"}
+ ,{align:'center',title:"操作",width:130,templet:function(d){
+ ////对操作进行初始化
+ var xml = "";
+ if(d.canedit != undefined && d.canedit == "1")
+ xml += "<a href=\"javascript:void(0)\" onclick=\"openDialog('修改公告', '${ctx}/oa/oaNotify/form?id="+ d.id +"','95%', '95%')\" class=\"op-btn op-btn-edit\"><i class=\"fa fa-edit\"></i> 修改</a>";
+ if(d.candel != undefined && d.candel == "1")
+ xml += "<a href=\"${ctx}/oa/oaNotify/delete?id="+ d.id +"\" onclick=\"return confirmx('确认要关闭该公告吗?', this.href)\" class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 关闭</a>";
+ if(d.canmodify != undefined && d.canmodify =="1"){
+ xml+="<a href=\"#\" onclick=\"openDialogre('修改公告', '${ctx}/oa/oaNotify/modify?id=" + d.id + "','95%', '95%','','送审,关闭')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+ if(d.cancancel != undefined && d.cancancel =="1"){
+ xml+="<a href=\"${ctx}/oa/oaNotify/revoke?id=" + d.id + "&processInstanceId=" + d.procId + "\" onclick=\"return confirmx('确认要撤回该公告吗?', this.href)\" class=\"op-btn op-btn-cancel\" ><i class=\"glyphicon glyphicon-share-alt\"></i> 撤回</a>";
+ if(d.canrecall != undefined && d.canrecall =="1"){
+ xml+="<a href=\"#\" onclick=\"openDialogre('修改公告', '${ctx}/oa/oaNotify/form?id=" + d.id + "','95%', '95%','','送审,关闭')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+ if(d.candelete != undefined && d.candelete == "1"){
+ xml +="<a href=\"${ctx}/oa/oaNotify/logicDelete?id=" + d.id+"\" onclick=\"return confirmx('确认要删除该公告吗?', this.href)\" class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 删除</a>";
+ ]]
+ ,data: [
+ <c:if test="${ not empty page.list}">
+ <c:forEach items="${page.list}" var="oaNotify" varStatus="index">
+ <c:if test="${index.index != 0}">,</c:if>
+ "index":"${index.index+1}"
+ ,"id":"${oaNotify.id}"
+ ,"number":"${oaNotify.number}"
+ ,"title":"<c:out value="${oaNotify.title}" escapeXml="true"/>"
+ ,"type":"${fns:getMainDictLabel(oaNotify.type, 'oa_notify_type', '')}"
+ ,"content":"<c:out value="${oaNotify.content}" escapeXml="true"/>"
+ ,"status":"${oaNotify.status}"
+ ,"startDate":"<fmt:formatDate value="${oaNotify.startDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"
+ ,"endDate":"<fmt:formatDate value="${oaNotify.endDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"
+ ,"vtatus":"${oaNotify.readNum} / ${oaNotify.readNum + oaNotify.unReadNum}"
+ ,"createBy":"${oaNotify.createBy.name}"
+ ,"createDate":"<fmt:formatDate value="${oaNotify.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"
+ ,"procId":"${oaNotify.processInstanceId}"
+ <c:if test="${not empty oaNotify.candel}">,"candel":"1"</c:if>
+ <shiro:hasPermission name="oa:oaNotify:edit">,"canedit":<c:choose><c:when test="${oaNotify.status == 1}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+ ,"canmodify":<c:choose><c:when test="${oaNotify.status == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+ ,"canrecall":<c:choose><c:when test="${oaNotify.status == 3}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+ <shiro:hasPermission name="oa:oaNotify:del">,"candelete":<c:choose><c:when test="${oaNotify.status == 1 or oaNotify.status == 3 or oaNotify.status == 4}">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose></shiro:hasPermission>
+ ,"cancancel":<c:choose><c:when test="${oaNotify.status == 2 }">"1"</c:when><c:otherwise>"0"</c:otherwise></c:choose>
+ ]
+ // ,even: true
+ // ,height: 315
+ resizeListTable();
+</script>
+ resizeListWindow1();
+ $(window).resize(function(){
@@ -0,0 +1,213 @@
+ <title>我的通告</title>
+ <form:form id="searchForm" modelAttribute="oaNotify" action="${ctx}/oa/oaNotify/self" method="post" class="form-inline">
+ <label class="layui-form-label">标题:</label>
+ return "<span title='"+ d.title +"'>" + d.title + "</span>";
+ ,{field:'status',align:'center', title: '公告状态', width:80}
+ ,"status":"${fns:getDictLabel(oaNotify.status, 'oa_notify_status', '')}"
+ /*,"vtatus":"${oaNotify.readNum} / ${oaNotify.readNum + oaNotify.unReadNum}"*/
@@ -0,0 +1,400 @@
+ <form:input id="office" path="office.name" htmlEscape="false" readonly="true" class="form-control layui-input"/>
@@ -0,0 +1,335 @@
+<%@ include file="/webpage/include/taglib.jsp" %>
+<style>
+ .wrapForm {
+ width: 100%;
+ height: 530px;
+ margin-top: -93px;
+ .mask{
+ .layui-input-block{
+ border-top: 1px solid #cccccc;
+ overflow: hidden;
+ border-radius: 3px;
+</style>
+ <form:form id="inputForm" modelAttribute="oaNotify" class="form-horizontal">
+ <c:if test="${oaNotify.createBy.id eq fns:getUser().id}">
+ <!--在“我的公告”中只能查看到个人接收的,只改变未读状态为已读,不显示所有的查看状态;
+ 在“公告管理”中只有管理员权限才能查看,显示该条公告的所有查看状态;
+ -->
+ <%-- <c:choose>
+ <c:when test="${toReadMyNotify}">
+ <!-- 发布状态 -->
+ <c:if test="${oaNotify.status eq '1'}">
+ <div class="form-group-label"><h2>查阅信息</h2></div>
+ <label class="layui-form-label">已查阅:</label>
+ <input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${oaNotify.readNum}"/>
+ <label class="layui-form-label">未查阅:</label>
+ <input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${oaNotify.unReadNum}"/>
+ <div class="layui-item layui-col-sm12">
+ <label class="layui-form-label">总共:</label>
+ <input htmlEscape="false" readonly="true" class="form-control required layui-input" value="${oaNotify.readNum + oaNotify.unReadNum}"/>
+ <table id="contentTable" class="table table-bordered table-condensed details">
+ <th>接受人</th>
+ <th>接受部门</th>
+ <th>阅读状态</th>
+ <th>阅读时间</th>
+ <c:forEach items="${oaNotify.oaNotifyRecordList}" var="oaNotifyRecord">
+ ${oaNotifyRecord.user.name}
+ ${oaNotifyRecord.user.office.name}
+ ${fns:getDictLabel(oaNotifyRecord.readFlag, 'oa_notify_read', '')}
+ <fmt:formatDate value="${oaNotifyRecord.readDate}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ </c:choose>--%>
@@ -0,0 +1,82 @@
+ <c:if test="${!empty list}">
+ <c:forEach items="${list}" var="wr" varStatus="id_workReport">
+ <a onclick="openDialogView('查看工作报告', '${ctx}/work/report/workReport/form?id=${wr.id}&readAttr=disabled','80%','80%')" class="btn btn-info btn-xs"><i class="fa fa-search-plus"></i>查看详情</a>
@@ -0,0 +1,152 @@
+ <title>审批管理</title>
+ <h5><shiro:hasPermission name="oa:testAudit:edit">${testAudit.act.taskName}</shiro:hasPermission><shiro:lacksPermission name="oa:testAudit:edit">查看</shiro:lacksPermission> </h5>
+ <form:form id="inputForm" modelAttribute="testAudit" action="${ctx}/oa/testAudit/saveAudit" method="post" class="form-horizontal">
+ <legend>${testAudit.act.taskName}</legend>
+ <td class="tit">姓名</td><td>${testAudit.user.name}</td>
+ <td class="tit">部门</td><td>${testAudit.office.name}</td>
+ <td class="tit">岗位职级</td><td>${testAudit.post}</td>
+ <td class="tit">调整原因</td>
+ <td colspan="5">${testAudit.content}</td>
+ <td class="tit" rowspan="3">调整原因</td>
+ <td class="tit">薪酬档级</td>
+ <td>${testAudit.olda}</td>
+ <td class="tit" rowspan="3">拟调整标准</td>
+ <td>${testAudit.newa}</td>
+ <td class="tit">月工资额</td>
+ <td>${testAudit.oldb}</td>
+ <td>${testAudit.newb}</td>
+ <td class="tit">年薪金额</td>
+ <td>${testAudit.oldc}</td>
+ <td>${testAudit.newc}</td>
+ <td class="tit">月增资</td>
+ <td colspan="2">${testAudit.addNum}</td>
+ <td class="tit">执行时间</td>
+ <td colspan="2">${testAudit.exeDate}</td>
+ <td class="tit">人力资源部意见</td>
+ <td colspan="5">
+ ${testAudit.hrText}
+ <td class="tit">分管领导意见</td>
+ ${testAudit.leadText}
+ <td class="tit">集团主要领导意见</td>
+ ${testAudit.mainLeadText}
+ <td class="tit">您的意见</td>
+ <form:textarea path="act.comment" class="form-control required" rows="5" maxlength="20"/>
+ <c:if test="${testAudit.act.taskDefKey eq 'apply_end'}">
+ <input id="btnSubmit" class="btn btn-primary" type="submit" value="兑 现" onclick="$('#flag').val('yes')"/>
+ <c:if test="${testAudit.act.taskDefKey ne 'apply_end'}">
+ <act:flowChart procInsId="${testAudit.act.procInsId}"/>
+ <act:histoicFlow procInsId="${testAudit.act.procInsId}" />
+ <title>薪酬调整申请</title>
+ <h5>薪酬调整申请</h5>
+ <form:form id="inputForm" modelAttribute="testAudit" action="${ctx}/oa/testAudit/save" method="post" class="form-horizontal">
+ <td class="tit">姓名</td><td>
+ <sys:treeselect id="user" name="user.id" value="${testAudit.user.id}" labelName="user.name" labelValue="${testAudit.user.name}"
+ title="用户" url="/sys/office/treeData?type=3" cssClass="form-control required"
+ allowClear="true" notAllowSelectParent="true"/>
+ </td><td class="tit">部门</td><td>
+ <sys:treeselect id="office" name="office.id" value="${testAudit.office.id}" labelName="office.name" labelValue="${testAudit.office.name}"
+ title="用户" url="/sys/office/treeData?type=2" cssClass="form-control required"
+ allowClear="true" notAllowSelectParent="true" />
+ </td><td class="tit">岗位职级</td><td>
+ <form:input path="post" htmlEscape="false" class="form-control " maxlength="50"/>
+ <form:textarea path="content" rows="5" maxlength="200" class="form-control required"/>
+ <td class="tit" width="15%">薪酬档级</td>
+ <td><form:input path="olda" class="form-control" htmlEscape="false" maxlength="50"/></td>
+ <td class="tit" width="15%" rowspan="3">拟调整标准</td>
+ <td><form:input path="newa" class="form-control" htmlEscape="false" maxlength="50"/></td>
+ <td><form:input path="oldb" class="form-control" htmlEscape="false" maxlength="50"/></td>
+ <td><form:input path="newb" class="form-control" htmlEscape="false" maxlength="50"/></td>
+ <td><form:input path="oldc" class="form-control" htmlEscape="false" maxlength="50"/></td>
+ <td><form:input path="newc" class="form-control" htmlEscape="false" maxlength="50"/></td>
+ <td colspan="2"><form:input path="addNum" class="form-control" htmlEscape="false" maxlength="50"/></td>
+ <td colspan="2"><form:input path="exeDate" class="form-control" htmlEscape="false" maxlength="50"/></td>
+ <input id="btnSubmit" class="btn btn-primary" type="submit" value="提交申请" onclick="$('#flag').val('yes')"/>
+ <c:if test="${not empty testAudit.id}">
+ <input id="btnSubmit2" class="btn btn-inverse" type="submit" value="销毁申请" onclick="$('#flag').val('no')"/>
@@ -0,0 +1,101 @@
+ <h5>审批管理列表 </h5>
+ <form:form id="searchForm" modelAttribute="testAudit" action="${ctx}/oa/testAudit/" method="post" class="form-inline">
+ title="用户" url="/sys/office/treeData?type=3" cssClass="form-control input-sm" allowClear="true" notAllowSelectParent="true"/>
+ <shiro:hasPermission name="oa:testAudit:edit">
+ <table:addRow url="${ctx}/oa/testAudit/form" title="审批申请流程" width="1000px" height="600px"></table:addRow><!-- 增加按钮 -->
+ <thead><tr><th>姓名</th><th>部门</th><th>岗位职级</th><th>调整原因</th><th>申请时间</th><shiro:hasPermission name="oa:testAudit:edit"><th>操作</th></shiro:hasPermission></tr></thead>
+ <c:forEach items="${page.list}" var="testAudit">
+ <td><a onclick="openDialogView('审批详情', '${ctx}/oa/testAudit/form?id=${testAudit.id}','1000px', '600px')" href="javascript:void(0)">${testAudit.user.name}</a></td>
+ <td>${testAudit.office.name}</td>
+ <td>${testAudit.post}</td>
+ <td>${testAudit.content}</td>
+ <td><fmt:formatDate value="${testAudit.createDate}" type="both" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+ <shiro:hasPermission name="oa:testAudit:edit"><td>
+ <a onclick="openDialogView('审批详情', '${ctx}/oa/testAudit/form?id=${testAudit.id}','1000px', '600px')" href="javascript:void(0)">详情</a>
+ <a href="${ctx}/oa/testAudit/delete?id=${testAudit.id}" onclick="return confirmx('确认要删除该审批吗?', this.href)">删除</a>
+ </td></shiro:hasPermission>
+ <title>薪酬调整</title>
+ <h5>薪酬调整详情</h5>
+ <form:form class="form-horizontal">
@@ -0,0 +1,172 @@
+ <title>出差流程管理</title>
+ $('#btnPresent').click(function () {
+ $.ajax({
+ url:"${ctx}/oa_evection/oaEvection/present",
+ data:$('#loginForm').serialize(),
+ type:"post",
+ success:function(data){
+ <h5>出差详情 </h5>
+ <form:form id="inputForm" modelAttribute="oaEvection" action="${ctx}/oa_evection/oaEvection/saveAudit" method="post" class="form-horizontal">
+ <c:set var="status" value="${oaEvection.act.status}" />
+ value="${oaEvection.startTime}"/></c:when>
+ value="${oaEvection.endTime}"/></c:when>
+ <form:textarea id="reason" path="reason" disabled="true" class="form-control required" rows="3" maxlength="20"/>
+ <c:if test="${not empty oaEvection.workattachmentList}">
+ <c:forEach items="${oaEvection.workattachmentList}" var="attachment" varStatus="varStatus">
+ --%> </td>
+ <form:textarea path="act.comment" class="form-control" rows="3" maxlength="127"/>
+ <c:if test="${oaEvection.act.taskDefKey ne 'apply_end'}">
+ <act:flowChart procInsId="${oaEvection.act.procInsId}"/>
+ <act:histoicFlow procInsId="${oaEvection.act.procInsId}"/>
@@ -0,0 +1,266 @@
+ <title>出差申请</title>
+ <li><a href="${ctx}/oa_evection/oaEvection/list">出差信息</a></li>
+ <li><a href="${ctx}/oa_evection/oaEvection/oaEvectionTodoList">待办任务</a></li>
+ <li><a href="${ctx}/oa_evection/oaEvection/oaEvectionHistoricList">已办任务</a></li>
+ <shiro:hasPermission name="oa:evection:edit"><li class="active"><a href="${ctx}/oa_evection/oaEvection/form?ids=0">出差申请</a></li></shiro:hasPermission>
+ <form:form id="inputForm" modelAttribute="oaEvection" action="${ctx}/oa_evection/oaEvection/save" enctype="multipart/form-data" method="post" class="form-horizontal">
+ <input class="form-control layer-date laydate-icon required" id="startTime" name="startTime" readonly="readonly" value="<fmt:formatDate value="${oaEvection.startTime}" pattern="yyyy-MM-dd HH:mm:ss"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <input class="form-control layer-date laydate-icon required" id="endTime" name="endTime" readonly="readonly" value="<fmt:formatDate value="${oaEvection.endTime}" pattern="yyyy-MM-dd HH:mm:ss"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <label class="control-label"><font color="red">*</font>出差天数:</label>
+ <input id="dateCount" name="dateCount" type="text" class="form-control required" value="${oaEvection.dateCount}"/>
+ <label class="control-label"><font color="red">*</font>出差地点:</label>
+ <input id="address" name="address" type="text" class="form-control required" value="${oaEvection.address}"/>
+ <label class="control-label"><font color="red">*</font>出差事由:</label>
+ <form:textarea path="reason" class="form-control required" rows="3" maxlength="20"/>
+ <sys:treeselect id="CCId" name="CCId" value="${oaEvection.CCId}" labelName="idNames" labelValue="${oaEvection.idNames}"
+ <sys:treeselectleave id="ida" name="ida" value="${oaEvection.ida}" labelName="idNamea" labelValue="${oaEvection.idNamea}"
@@ -0,0 +1,111 @@
+ <li class="active"><a href="${ctx}/oa_evection/oaEvection/oaEvectionHistoricList">已办任务</a></li>
+ <shiro:hasPermission name="oa:evection:edit"><li><a href="${ctx}/oa_evection/oaEvection/form?ids=0">出差申请</a></li></shiro:hasPermission>
+ <form:form id="searchForm" modelAttribute="act" action="${ctx}/oa_evection/oaEvection/oaEvectionHistoricList" method="get" class="form-inline">
+ <th style="text-align: center;">出差天数</th>
+ <th style="text-align: center;">出差地点</th>
+ <th style="text-align: center;">出差原因</th>
+ <c:forEach items="${list}" var="oaEvection">
+ <c:set var="task" value="${oaEvection.act.task}" />
+ <c:set var="vars" value="${oaEvection.act.vars}" />
+ <c:set var="procDef" value="${oaEvection.act.procDef}" />
+ <td>${oaEvection.act.vars.map.applyUserId}</td>
+ <td>${oaEvection.startTime}</td>
+ <td>${oaEvection.endTime}</td>
+ <td>${oaEvection.dateCount}</td>
+ <td><%--${oaEvection.address}--%>
+ <span title="${oaEvection.address}">${fns:abbr(oaEvection.address, 30)}</span>
+ <td><%--${oaEvection.reason}--%>
+ <span title="${oaEvection.reason}">${fns:abbr(oaEvection.reason, 30)}</span>
+ <td><fmt:formatDate value="${oaEvection.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+ <td>${act.vars.map.applyUserId}</td>
@@ -0,0 +1,227 @@
+ <title>出差一览</title>
+ location = '${ctx}/oa_evection/oaEvection/list/?pageNo='+n+'&pageSize='+s;
+ <li class="active"><a href="${ctx}/oa_evection/oaEvection/list">出差信息</a></li>
+ <form:form id="searchForm" modelAttribute="oaEvection" action="${ctx}/oa_evection/oaEvection/list" method="get" class="form-inline">
+ <input class="form-control layer-date laydate-icon required" id="createDateStart" name="createDateStart" readonly="readonly" value="<fmt:formatDate value="${oaEvection.createDateStart}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <input class="form-control layer-date laydate-icon required" id="createDateEnd" name="createDateEnd" readonly="readonly" value="<fmt:formatDate value="${oaEvection.createDateEnd}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <shiro:hasPermission name="oa:evection:add">
+ <table:addRow url="${ctx}/oa_evection/oaEvection/form" title="出差信息"></table:addRow><!-- 增加按钮 -->
+ <shiro:hasPermission name="oa:evection:edit">
+ <table:editRow url="${ctx}/oa_evection/oaEvection/form" title="出差信息" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+ <shiro:hasPermission name="oa:evection:import">
+ <table:importExcel url="${ctx}/oa_evection/oaEvection/import"></table:importExcel><!-- 导入按钮 -->
+ <shiro:hasPermission name="oa:evection:export">
+ <table:exportExcel url="${ctx}/oa_evection/oaEvection/export"></table:exportExcel><!-- 导出按钮 -->
+ <c:forEach items="${page.list}" var="oaEvection" varStatus="status">
+ <c:set var="task" value="${oaEvection.task }" />
+ <c:set var="pi" value="${oaEvection.processInstance }" />
+ <c:set var="hpi" value="${oaEvection.historicProcessInstance }" />
+ <td>${oaEvection.createBy.name}</td>
+ <td>${fns:getDictLabel(oaEvection.status, 'act_status', '')}</td>
+ <%--<c:if test="${empty task.assignee}">
+ <a href="javascript:claim('${task.id}');" title="签收任务">${fns:abbr(not empty oaEvection.act.vars.map.title ? act.vars.map.title : task.id, 60)}</a>
+ </c:if>--%>
+ <shiro:hasPermission name="oa:evection:view">
+ <a href="javascript:void(0)" onclick="openDialogView('详情', '${ctx}/oa_evection/oaEvection/form?id=${oaEvection.id}&readAttr=disabled&name=view','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+ <c:if test="${oaEvection.createBy.id eq fns:getUser().id}">
+ <c:if test="${oaEvection.status!=3 && oaEvection.status!=4 && oaEvection.status!=5}">
+ <a href="${ctx}/oa_evection/oaEvection/revoke?id=${oaEvection.id}&processInstanceId=${oaEvection.processInstanceId}&reason=${oaEvection.reason}" onclick="return confirmx('确认要撤回该信息吗?', this.href)" class="btn btn-warning btn-xs"><i class="glyphicon glyphicon-share-alt"></i> 撤回</a>
+ <%--<a href="${ctx}/oa_evection/oaEvection/applyOnEvection?taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=1" class="btn btn-success btn-xs">任务办理</a>
+ --%><a href="javascript:void(0)" onclick="openDialogre('任务办理', '${ctx}/oa_evection/oaEvection/applyOnEvection?taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=1','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 任务办理</a>
@@ -0,0 +1,182 @@
+ <li class="active"><a href="${ctx}/oa_evection/oaEvection/oaEvectionTodoList">待办任务</a></li>
+ <form:form id="searchForm" modelAttribute="act" action="${ctx}/oa_evection/oaEvection/oaEvectionTodoList" method="get" class="form-inline">
+ <td><fmt:formatDate value="${task.createTime}" type="both"/></td>
+ <%--<a href="${ctx}${procExecUrl}/exec/${task.taskDefinitionKey}?procInsId=${task.processInstanceId}&act.taskId=${task.id}">办理</a>--%>
+ <%--<a href="${ctx}/oa_evection/oaEvection/applyOnEvection?taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=${status}" class="btn btn-success btn-xs">任务办理</a>
@@ -0,0 +1,180 @@
+ <form:form id="inputForm" modelAttribute="oaAll" action="${ctx}/oaall/oaAll/saveAudit" method="post" class="form-horizontal">
+ <c:set var="status" value="${oaAll.act.status}" />
+ <label class="control-label"><font color="red">*</font>申请内容:</label>
+ <div class="controls" style="margin-top: 7px;">
+ ${oaAll.applyContent}
+ ${oaAll.approveDetail}
+ <label class="control-label"><font color="red">*</font>附件:</label>
+ <table id="upTable" class="table table-striped table-bordered table-condensed">
+ <%--<th>序号</th>--%>
+ <th>文件名</th>
+ <th width="100">操作</th>
+ <c:when test="${not empty oaAll.workAttachments}">
+ <c:forEach items="${oaAll.workAttachments}" var="workClientAttachment" varStatus="status">
+ <%--<td>${status.index + 1}</td>--%>
+ <td><img src="${workClientAttachment.url}" width="50" height="50" alt="${workClientAttachment.attachmentName}"/></td>
+ <td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','80%','80%','1')">${workClientAttachment.attachmentName}</a></td>
+ <td><a href="javascript:void(0)" onclick="preview('预览','${workClientAttachment.url}','80%','80%')">${workClientAttachment.attachmentName}</a></td>
+ <td><fmt:formatDate value="${workClientAttachment.createDate}" type="both"/> </td>
+ <a href="javascript:location.href='${ctx}/workfullmanage/workFullManage/downLoadAttach?file='+encodeURIComponent(encodeURIComponent('${workClientAttachment.url}'));" class="btn btn-success btn-xs">下载</a>
+ <%--<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${workClientAttachment.url}" class="btn btn-success btn-xs">下载</a>--%>
+ <td colspan="5" align="center">暂无数据</td>
+ <c:if test="${oaAll.act.taskDefKey eq 'audit1'}">
+ <act:flowChart procInsId="${oaAll.act.procInsId}"/>
+ <act:histoicFlow procInsId="${oaAll.act.procInsId}"/>
@@ -0,0 +1,186 @@
+ <title>通用审批功能管理</title>
+ var attachmentId = $("#id").val();
+ var attachmentFlag = "5";
+ var timestamp=new Date().getTime();
+ var storeAs = "attachment-file/workClientInfo/"+timestamp+"/"+file['name'];
+ var uploadPath="http://gangwan-app.oss-cn-hangzhou.aliyuncs.com/"+storeAs;/*将这段字符串存到数据库即可*/
+ $("#addFile"+divId).show();
+ multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,"0");
+<div class="ibox">
+ <li><a href="${ctx}/oaall/oaAll/list">通用审批信息</a></li>
+ <li><a href="${ctx}/oaall/oaAll/leaveTodoList">待办任务</a></li>
+ <li><a href="${ctx}/oaall/oaAll/leaveHistoricList">已办任务</a></li>
+ <li class="active"><a href="${ctx}/oaall/oaAll/form">通用审批申请</a></li>
+ <form:form id="inputForm" modelAttribute="oaAll" action="${ctx}/oaall/oaAll/save" method="post" class="form-horizontal">
+ <textarea id="applyContent" name="applyContent" maxlength="20" class="form-control required" rows="3" aria-required="true"></textarea>
+ <label class="control-label"><font color="red">*</font>审批详情:</label>
+ <textarea id="approveDetail" name="approveDetail" maxlength="20" class="form-control required" rows="3" aria-required="true"></textarea>
+ <label class="control-label">附件:</label>
+ <div style="display: inline-block">
+ <div id="addFile_attachment" style="display: none">
+ <a id="attachment_btn" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
+ <br><br>
+ title="用户" url="/sys/office/treeDataAll?type=3&isAll=false" cssClass="form-control required" notAllowSelectParent="true" checked="true"/>
+ <label class="control-label">审批人:</label>
+ title="用户" url="/sys/office/treeDataAll?type=3&isAll=false" cssClass="form-control" notAllowSelectParent="true"/>
@@ -0,0 +1,103 @@
+ <li class="active"><a href="${ctx}/oaall/oaAll/leaveHistoricList">已办任务</a></li>
+ <li><a href="${ctx}/oaall/oaAll/form">通用审批申请</a></li>
+ <input class="form-control layer-date laydate-icon required" id="beginDate" name="beginDate" readonly="readonly" value="<fmt:formatDate value="${act.beginDate}" pattern="yyyy-MM-dd HH:mm:ss"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <input class="form-control layer-date laydate-icon required" id="endDate" name="endDate" readonly="readonly" value="<fmt:formatDate value="${act.endDate}" pattern="yyyy-MM-dd HH:mm:ss"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <th style="text-align: center;">申请内容</th>
+ <th style="text-align: center;">审批详情</th>
+ <c:forEach items="${list}" var="oaAll">
+ <c:set var="task" value="${oaAll.act.task}" />
+ <c:set var="vars" value="${oaAll.act.vars}" />
+ <c:set var="procDef" value="${oaAll.act.procDef}" />
+ <td>${oaAll.act.vars.map.applyUserId}</td>
+ <td>${oaAll.applyContent}</td>
+ <td>${oaAll.approveDetail}</td>
+ <td><fmt:formatDate value="${oaAll.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
@@ -0,0 +1,153 @@
+ <li class="active"><a href="${ctx}/oaall/oaAll/list">通用审批信息</a></li>
+ <form:form id="searchForm" modelAttribute="oaAll" action="${ctx}/oaall/oaAll/" method="post" class="form-inline">
+ <input class="form-control layer-date laydate-icon required" id="createDateStart" name="createDateStart" readonly="readonly" value="<fmt:formatDate value="${oaAll.createDateStart}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <input class="form-control layer-date laydate-icon required" id="createDateEnd" name="createDateEnd" readonly="readonly" value="<fmt:formatDate value="${oaAll.createDateEnd}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <th style="text-align: center;" class="sort-column applyContent">申请内容</th>
+ <th style="text-align: center;" class="sort-column approveDetail">审批详情</th>
+ <th style="text-align: center;" class="sort-column ceateBy.id">申请人</th>
+ <th style="text-align: center;" class="sort-column status">审核状态</th>
+ <th style="text-align: center;" class="sort-column ''">流程追踪</th>
+ <c:when test="${not empty page.list}">
+ <c:forEach items="${page.list}" var="oaAll">
+ <td> <input type="checkbox" id="${oaAll.id}" class="i-checks"></td>
+ <a href="javascript:void(0)" onclick="openDialogView('查看通用审批信息', '${ctx}/oaall/oaAll/form?id=${oaAll.id}&tabId=0','80%','80%')">
+ <td>${oaAll.createBy.name}</td>
+ <td>${fns:getDictLabel(oaAll.status, 'act_status', '')}</td>
+ <a href="javascript:void(0)" onclick="openDialogView('详情', '${ctx}/oaall/oaAll/getProcess?id=${oaAll.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 流程追踪</a>
+ <c:if test="${oaAll.status == 1 or oaAll.status == 2}">
+ <a href="${ctx}/oaall/oaAll/revoke?id=${oaAll.id}&processInstanceId=${oaAll.processInstanceId}" class="btn btn-warning btn-xs" ><i class="glyphicon glyphicon-share-alt"></i> 撤回</a>
+ <c:if test="${oaAll.status == 4 or oaAll.status == 5}">
+ <a href="${ctx}/oaall/oaAll/delete?id=${oaAll.id}" onclick="return confirmx('确认要删除该通用审批功能吗?', this.href)" class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+ <td colspan="8" align="center">暂无数据</td>
+ <li class="active"><a href="${ctx}/oaall/oaAll/leaveTodoList">待办任务</a></li>
+ <c:set var="procDef" value="${oaAll.act.procDef}" /><%--
@@ -0,0 +1,15 @@
+ <title>报销流程</title>
+ <act:flowChart procInsId="${processInstanceId}"/>
+ <act:histoicFlow procInsId="${processInstanceId}"/>
@@ -0,0 +1,158 @@
+ <title>通用申请</title>
+ <h5>通用审批详情</h5>
+ <%--<a href="${ctx}/workfullmanage/workFullManage/downLoadAttach?file=${workClientAttachment.url}" class="btn btn-success btn-xs">下载</a>
+ <title>采购申请</title>
+ <form:form id="inputForm" modelAttribute="oaBuy" action="${ctx}/oabuy/oaBuy/saveAudit" method="post" class="form-horizontal">
+ <c:set var="status" value="${oaBuy.act.status}" />
+ ${oaBuy.applyContent}
+ <label class="control-label"><font color="red">*</font>采购类型:</label>
+ ${fns:getDictLabel(oaBuy.buySort, 'buy_sort', '')}
+ <label class="control-label">采购明细:</label>
+ <td class="width-15 active"></td>
+ <td class="width-75" colspan="3">
+ <div></div>
+ <table style="margin-top:10px;" id="contentTable" class="table table-striped table-bordered table-condensed">
+ <th>序号</th>
+ <th>名称</th>
+ <th>规格</th>
+ <th>数量</th>
+ <th>单位</th>
+ <th>价格</th>
+ <tbody id="buyDetailsList">
+ <c:forEach items="${oaBuy.buyDetailsList}" var="buyDetails" varStatus="status">
+ <td>${status.index + 1}</td>
+ <td>${buyDetails.name}</td>
+ <td>${buyDetails.format}</td>
+ <td>${buyDetails.amount}</td>
+ <td>${buyDetails.unit}</td>
+ <td>${buyDetails.price}</td>
+ <c:if test="${linkManSize == 0}">
+ <td colspan="8">暂无数据</td>
+ </tr></div>
+ <c:when test="${not empty oaBuy.workAttachments}">
+ <c:forEach items="${oaBuy.workAttachments}" var="workClientAttachment" varStatus="status">
+ <c:if test="${oaBuy.act.taskDefKey eq 'audit1'}">
+ <act:flowChart procInsId="${oaBuy.act.procInsId}"/>
+ <act:histoicFlow procInsId="${oaBuy.act.procInsId}"/>
@@ -0,0 +1,385 @@
+ <title>采购管理</title>
+ .btn-file{
+ margin-top:8px;
+ elem: '#deliverDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ var attachmentFlag = "69";
+ /* function addRow(list, idx, buyDetailsTpl, row) {
+ if (idx < 1) {
+ $(list).append(Mustache.render(buyDetailsTpl, {
+ idx: idx, delBtn: true, row: row
+ }*/
+ /**
+ * 只允许输入汉字
+ * @param value
+ */
+ function testOurBank(value){
+ if(!/^[\u4e00-\u9fa5]*$/.test( value )){
+ parent.layer.msg("必须输入汉字",{icon:6});
+ * 只允许输入数字
+ function testBankNumber(value){
+ if(!/^\d*$/.test( value )){
+ parent.layer.msg("价格必须输入数字",{icon:6});
+ var idx1 = $("#buyDetailsList tr").length;
+ if(list == '#buyDetailsList' && idx1 < 100){
+ order:idx1 + 1
+ function delRow(obj, prefix){
+ var id = $(prefix+"_id");
+ var delFlag = $(prefix+"_delFlag");
+ if (id.val() == ""){
+ }else if(delFlag.val() == "0"){
+ delFlag.val("1");
+ $(obj).html("÷").attr("title", "撤回删除");
+ $(obj).parent().parent().addClass("error");
+ $(obj).parent().parent().addClass("hide");
+ }else if(delFlag.val() == "1"){
+ delFlag.val("0");
+ $(obj).html("×").attr("title", "删除");
+ $(obj).parent().parent().removeClass("error");
+ var idx1 = $("#buyDetailsList tr").length; //tr 总数
+ for(var i = 0;i < idx1;i++){
+ $("#buyDetailsList tr").eq(i).find("td").eq(1).html(i + 1);
+ var idx2 = $("#buyDetailsList tr").length; //tr 总数
+ <li><a href="${ctx}/oabuy/oaBuy/list">采购申请信息</a></li>
+ <li><a href="${ctx}/oabuy/oaBuy/oaBuyTodoList">待办任务</a></li>
+ <li><a href="${ctx}/oabuy/oaBuy/oaBuyHistoricList">已办任务</a></li>
+ <li class="active"><a href="${ctx}/oabuy/oaBuy/form">采购申请</a></li>
+ <form:form id="inputForm" modelAttribute="oaBuy" action="${ctx}/oabuy/oaBuy/save" method="post" class="form-horizontal">
+ <label class="control-label"><font color="red">*</font>申请事由:</label>
+ <label class="control-label">采购类型:</label>
+ <form:select path="buySort" class="form-control ">
+ <form:options items="${fns:getDictList('buy_sort')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+ <label class="control-label">交付日期:</label>
+ <input class="form-control layer-date laydate-icon required" id="deliverDate" name="deliverDate"
+ value="<fmt:formatDate value="${oaBuy.deliverDate}" pattern="yyyy-MM-dd"/>
+ " onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <div id="kh">
+ <a class="btn btn-info btn-xs" onclick="addRow('#buyDetailsList', buyDetailsRowIdx, buyDetailsTpl);buyDetailsRowIdx = buyDetailsRowIdx + 1;" title="新增"><i class="fa fa-plus"></i> 增加明细</a>
+ <div>
+ <table id="bankinfo" class="table table-striped table-bordered table-hover table-condensed dataTables-example dataTable">
+ <th class="">序号</th>
+ <th class="">名称</th>
+ <th class="">规格</th>
+ <th class="">数量</th>
+ <th class="">单位</th>
+ <th class="">价格</th>
+ <script type="text/template" id="buyDetailsTpl">//<!--
+ <tr id="buyDetailsList{{idx}}">
+ <input id="buyDetailsList{{idx}}_id" name="buyDetailsList[{{idx}}].id" type="hidden" value="{{row.id}}"/>
+ <input id="buyDetailsList{{idx}}_delFlag" name="buyDetailsList[{{idx}}].delFlag" type="hidden" value="0"/>
+ {{order}}
+ <input id="buyDetailsList{{idx}}_name" name="buyDetailsList[{{idx}}].name" type="text" value="{{row.name}}" class="form-control "/>
+ <input id="buyDetailsList{{idx}}_format" name="buyDetailsList[{{idx}}].format" type="text" value="{{row.format}}" class="form-control "/>
+ <input id="buyDetailsList{{idx}}_amount" name="buyDetailsList[{{idx}}].amount" type="text" value="{{row.amount}}" class="form-control "/>
+ <input id="buyDetailsList{{idx}}_unit" name="buyDetailsList[{{idx}}].unit" type="text" value="{{row._unit}}" class="form-control "/>
+ <input id="buyDetailsList{{idx}}_price" onblur="testBankNumber(this.value)" name="buyDetailsList[{{idx}}].price" type="text" value="{{row.price}}" class="form-control "/>
+ <td class="text-center" width="10">
+ {{#delBtn}}<span class="close" onclick="delRow(this, '#buyDetailsList{{idx}}')" title="删除">×</span>{{/delBtn}}
+ var buyDetailsRowIdx = 0, buyDetailsTpl = $("#buyDetailsTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
+ var data = ${fns:toJson(oaBuy.buyDetailsList)};
+ for (var i=0; i<data.length; i++){
+ addRow('#buyDetailsList', buyDetailsRowIdx, buyDetailsTpl, data[i]);
+ buyDetailsRowIdx = buyDetailsRowIdx + 1;
+ <label class="control-label">支付方式:</label>
+ <form:select path="payStyle" class="form-control ">
+ <form:options items="${fns:getDictList('pay_style')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+ <label class="control-label"><font color="red">*</font>抄送人:</label>
+ <label class="control-label">备注信息:</label>
+ <form:textarea path="remarks" htmlEscape="false" rows="4" class="form-control "/>
@@ -0,0 +1,106 @@
+ <title>采购申请管理</title>
+ <td class="width-15 active"><label class="pull-right">申请状态:</label></td>
+ <form:input path="status" htmlEscape="false" class="form-control "/>
+ <form:input path="companyId" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">部门:</label></td>
+ <form:input path="officeId" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">流程实例编号:</label></td>
+ <form:input path="processInstanceId" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">申请事由:</label></td>
+ <form:input path="applyContent" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">采购类型:</label></td>
+ <form:options items="${fns:getDictList('')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+ <td class="width-15 active"><label class="pull-right"><font color="red">*</font>交付日期:</label></td>
+ <input id="deliverDate" name="deliverDate" type="text" maxlength="20" class="laydate-icon form-control layer-date required"
+ value="<fmt:formatDate value="${oaBuy.deliverDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"/>
+ <td class="width-15 active"><label class="pull-right">支付方式:</label></td>
+ <td class="width-35" ></td>
+ <title>已审核采购信息管理</title>
+ <li class="active"><a href="${ctx}/oabuy/oaBuy/oaBuyHistoricList">已办任务</a></li>
+ <li ><a href="${ctx}/oabuy/oaBuy/form">采购申请</a></li>
+ <form:form id="searchForm" modelAttribute="act" action="${ctx}/oabuy/oaBuy/oaBuyHistoricList" method="get" class="form-inline">
+ <th style="text-align: center;">申请事由</th>
+ <c:forEach items="${list}" var="oaBuy">
+ <c:set var="task" value="${oaBuy.act.task}" />
+ <c:set var="vars" value="${oaBuy.act.vars}" />
+ <c:set var="procDef" value="${oaBuy.act.procDef}" />
+ <td>${oaBuy.act.vars.map.applyUserId}</td>
+ <td><a href="javascript:void(0)" onclick="openDialogView('查看采购申请信息', '${ctx}/oabuy/oaBuy/form?id=${oaBuy.id}&tabId=0','80%','80%')">
+ </a></td>
+ <td><fmt:formatDate value="${oaBuy.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
+ <li class="active"><a href="${ctx}/oabuy/oaBuy/list">采购申请信息</a></li>
+ <form:form id="searchForm" modelAttribute="oaBuy" action="${ctx}/oabuy/oaBuy/" method="post" class="form-inline">
+ <input class="form-control layer-date laydate-icon required" id="createDateStart" name="createDateStart" readonly="readonly" value="<fmt:formatDate value="${oaBuy.createDateStart}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <input class="form-control layer-date laydate-icon required" id="createDateEnd" name="createDateEnd" readonly="readonly" value="<fmt:formatDate value="${oaBuy.createDateEnd}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <th style=""> <input type="checkbox" class="i-checks"></th>
+ <th style="text-align: center;" class="sort-column applyContent">申请事由</th>
+ <th style="text-align: center;" class="sort-column buySort">采购类型</th>
+ <c:forEach items="${page.list}" var="oaBuy">
+ <td> <input type="checkbox" id="${oaBuy.id}" class="i-checks"></td>
+ <a href="javascript:void(0)" onclick="openDialogView('查看采购申请信息', '${ctx}/oabuy/oaBuy/form?id=${oaBuy.id}&tabId=0','80%','80%')">
+ <td>${fns:getDictLabel(oaBuy.buySort, 'buy_sort', '')}</td>
+ <td>${oaBuy.createBy.name}</td>
+ <td>${fns:getDictLabel(oaBuy.status, 'act_status', '')}</td>
+ <a href="javascript:void(0)" onclick="openDialogView('详情', '${ctx}/oabuy/oaBuy/getProcess?id=${oaBuy.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 流程追踪</a>
+ <c:if test="${oaBuy.status == 1 or oaBuy.status == 2}">
+ <a href="${ctx}/oabuy/oaBuy/revoke?id=${oaBuy.id}&processInstanceId=${oaBuy.processInstanceId}" class="btn btn-warning btn-xs" ><i class="glyphicon glyphicon-share-alt"></i> 撤回</a>
+ <c:if test="${oaBuy.status == 4 or oaBuy.status == 5}">
+ <a href="${ctx}/oabuy/oaBuy/delete?id=${oaBuy.id}" onclick="return confirmx('确认要删除该采购申请功能吗?', this.href)" class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+ <title>待审核采购信息管理</title>
+ location = '${ctx}/oabuy/oaBuy/list/?pageNo='+n+'&pageSize='+s;
+ <li class="active"><a href="${ctx}/oabuy/oaBuy/oaBuyTodoList">待办任务</a></li>
+ <form:form id="searchForm" modelAttribute="act" action="${ctx}/oabuy/oaBuy/oaBuyTodoList" method="get" class="form-inline">
+ <c:set var="procDef" value="${oaBuy.act.procDef}" /><%--
+ <%--<a href="${ctx}/oabuy/oaBuy/applyOnLeave?taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=${status}" class="btn btn-success btn-xs">任务办理</a>
+ <a href="javascript:void(0)" onclick="openDialogre('任务办理', '${ctx}/oabuy/oaBuy/applyOnLeave?taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=${status}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 任务办理</a>
+ <title>采购申请流程</title>
@@ -0,0 +1,219 @@
+ <h5>采购申请详情</h5>
+ <label class="control-label"><font color="red">*</font>交付日期:</label>
+ <fmt:formatDate value="${oaBuy.deliverDate}" pattern="yyyy-MM-dd"/>
+ ${fns:getDictLabel(oaBuy.payStyle, 'pay_style', '')}
+ ${oaBuy.remarks}
+ <title>绩效自评申请</title>
+ <form:form id="inputForm" modelAttribute="oaPerformance" action="${ctx}/oaperformance/oaPerformance/saveAudit" method="post" class="form-horizontal">
+ <c:set var="status" value="${oaPerformance.act.status}" />
+ <label class="control-label"><font color="red">*</font>上月工作任务:</label>
+ ${oaPerformance.lastWork}
+ <label class="control-label"><font color="red">*</font>实际完成任务:</label>
+ ${oaPerformance.finishWork}
+ <label class="control-label"><font color="red">*</font>任务达成率:</label>
+ ${oaPerformance.finishRate}
+ <label class="control-label">上月工作自评:</label>
+ ${oaPerformance.lastPerformance}
+ <label class="control-label"><font color="red">*</font>本月工作任务:</label>
+ ${oaPerformance.nowWork}
+ <label class="control-label">本月工作计划:</label>
+ ${oaPerformance.nowPlan}
+ <c:if test="${oaPerformance.act.taskDefKey eq 'audit1'}">
+ <act:flowChart procInsId="${oaPerformance.act.procInsId}"/>
+ <act:histoicFlow procInsId="${oaPerformance.act.procInsId}"/>
@@ -0,0 +1,178 @@
+ <title>绩效自评</title>
+ <li><a href="${ctx}/oaperformance/oaPerformance/list">绩效自评</a></li>
+ <li><a href="${ctx}/oaperformance/oaPerformance/oaPerformanceTodoList">待办任务</a></li>
+ <li><a href="${ctx}/oaperformance/oaPerformance/oaPerformanceHistoricList">已办任务</a></li>
+ <li class="active"><a href="${ctx}/oaperformance/oaPerformance/form">绩效自评申请</a></li>
+ <form:form id="inputForm" modelAttribute="oaPerformance" action="${ctx}/oaperformance/oaPerformance/save" method="post" class="form-horizontal">
+ <textarea id="lastWork" name="lastWork" maxlength="200" class="form-control required" rows="3" aria-required="true"></textarea>
+ <textarea id="finishWork" name="finishWork" maxlength="200" class="form-control required" rows="3" aria-required="true"></textarea>
+ <input id="finishRate" name="finishRate" maxlength="20" class="form-control required" rows="3" aria-required="true"></input>
+ <label class="control-label"><font color="red">*</font>上月工作自评:</label>
+ <textarea id="lastPerformance" name="lastPerformance" maxlength="200" class="form-control required" rows="3" aria-required="true"></textarea>
+ <textarea id="nowWork" name="nowWork" maxlength="200" class="form-control required" rows="3" aria-required="true"></textarea>
+ <label class="control-label"><font color="red">*</font>本月工作计划:</label>
+ <textarea id="nowPlan" name="nowPlan" maxlength="200" class="form-control required" rows="3" aria-required="true"></textarea>
@@ -0,0 +1,85 @@
+ <title>绩效自评管理</title>
+ <td class="width-15 active"><label class="pull-right">上月工作任务:</label></td>
+ <form:textarea path="lastWork" htmlEscape="false" rows="4" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">实际完成任务:</label></td>
+ <form:textarea path="finishWork" htmlEscape="false" rows="4" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">任务达成率:</label></td>
+ <form:input path="finishRate" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">上月工作自评:</label></td>
+ <form:textarea path="lastPerformance" htmlEscape="false" rows="4" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">本月工作任务:</label></td>
+ <form:textarea path="nowWork" htmlEscape="false" rows="4" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">本月工作计划:</label></td>
+ <form:textarea path="nowPlan" htmlEscape="false" rows="4" class="form-control "/>
+ <title>已审核绩效自评管理</title>
+ <li ><a href="${ctx}/oaperformance/oaPerformance/list">绩效自评</a></li>
+ <li class="active"><a href="${ctx}/oaperformance/oaPerformance/oaPerformanceHistoricList">已办任务</a></li>
+ <li ><a href="${ctx}/oaperformance/oaPerformance/form">绩效自评申请</a></li>
+ <form:form id="searchForm" modelAttribute="act" action="${ctx}/oaperformance/oaPerformance/oaPerformanceHistoricList" method="get" class="form-inline">
+ <th style="text-align: center;">自评</th>
+ <c:forEach items="${list}" var="oaPerformance">
+ <c:set var="task" value="${oaPerformance.act.task}" />
+ <c:set var="vars" value="${oaPerformance.act.vars}" />
+ <c:set var="procDef" value="${oaPerformance.act.procDef}" />
+ <td>${oaPerformance.act.vars.map.applyUserId}</td>
+ <td><a href="javascript:void(0)" onclick="openDialogView('查看绩效自评', '${ctx}/oaperformance/oaPerformance/form?id=${oaPerformance.id}&tabId=0','80%','80%')">
+ <td><fmt:formatDate value="${oaPerformance.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
@@ -0,0 +1,179 @@
+ <li class="active"><a href="${ctx}/oaperformance/oaPerformance/list">绩效自评</a></li>
+ <form:form id="searchForm" modelAttribute="oaPerformance" action="${ctx}/oaperformance/oaPerformance/" method="post" class="form-inline">
+ <input class="form-control layer-date laydate-icon required" id="createDateStart" name="createDateStart" readonly="readonly" value="<fmt:formatDate value="${oaPerformance.createDateStart}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <input class="form-control layer-date laydate-icon required" id="createDateEnd" name="createDateEnd" readonly="readonly" value="<fmt:formatDate value="${oaPerformance.createDateEnd}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <th> <input type="checkbox" class="i-checks"></th>
+ <%--<th class="sort-column lastWork">上月工作任务</th>
+ <th class="sort-column finishWork">实际完成任务</th>
+ <th class="sort-column finishRate">任务达成率</th>--%>
+ <th style="text-align: center;" class="sort-column lastPerformance">上月工作自评</th>
+ <th style="text-align: center;" class="sort-column status">申请状态</th>
+ <%--<th class="sort-column nowWork">本月工作任务</th>
+ <th class="sort-column nowPlan">本月工作计划</th>--%>
+ <c:forEach items="${page.list}" var="oaPerformance">
+ <td> <input type="checkbox" id="${oaPerformance.id}" class="i-checks"></td>
+ <td>${oaPerformance.createBy.name}</td>
+ <td>${fns:getDictLabel(oaPerformance.status, 'act_status', '')}</td>
+ <a href="javascript:void(0)" onclick="openDialogView('详情', '${ctx}/oaperformance/oaPerformance/getProcess?id=${oaPerformance.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 流程追踪</a>
+ <c:if test="${oaPerformance.status == 1 or oaPerformance.status == 2}">
+ <a href="${ctx}/oaperformance/oaPerformance/revoke?id=${oaPerformance.id}&processInstanceId=${oaPerformance.processInstanceId}" class="btn btn-warning btn-xs" ><i class="glyphicon glyphicon-share-alt"></i> 撤回</a>
+ <c:if test="${oaPerformance.status == 4 or oaPerformance.status == 5}">
+ <a href="${ctx}/oaperformance/oaPerformance/delete?id=${oaPerformance.id}" onclick="return confirmx('确认要删除该绩效自评申请功能吗?', this.href)" class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+ <shiro:hasPermission name="oaperformance:oaPerformance:view">
+ <a href="javascript:void(0)" onclick="openDialogView('查看绩效自评', '${ctx}/oaperformance/oaPerformance/form?id=${oaPerformance.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+ <shiro:hasPermission name="oaperformance:oaPerformance:edit">
+ <a href="javascript:void(0)" onclick="openDialog('修改绩效自评', '${ctx}/oaperformance/oaPerformance/form?id=${oaPerformance.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+ <shiro:hasPermission name="oaperformance:oaPerformance:del">
+ <a href="${ctx}/oaperformance/oaPerformance/delete?id=${oaPerformance.id}" onclick="return confirmx('确认要删除该绩效自评吗?', this.href)" class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
@@ -0,0 +1,174 @@
+ <title>待审核绩效自评管理</title>
+ location = '${ctx}/oaperformance/oaPerformance/list/?pageNo='+n+'&pageSize='+s;
+ <li class="active"><a href="${ctx}/oaperformance/oaPerformance/oaPerformanceTodoList">待办任务</a></li>
+ <form:form id="searchForm" modelAttribute="act" action="${ctx}/oaperformance/oaPerformance/oaPerformanceTodoList" method="get" class="form-inline">
+ <c:set var="procDef" value="${oaPerformance.act.procDef}" /><%--
+ <a href="javascript:void(0)" onclick="openDialogView('查看绩效自评', '${ctx}/oaperformance/oaPerformance/form?id=${oaPerformance.id}&tabId=0','80%','80%')">
+ <%--<a href="${ctx}/oaperformance/oaPerformance/applyOnLeave?taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=${status}" class="btn btn-success btn-xs">任务办理</a>
+ --%><a href="javascript:void(0)" onclick="openDialogre('任务办理', '${ctx}/oaperformance/oaPerformance/applyOnLeave?taskId=${task.id}&taskName=${fns:urlEncode(task.name)}&taskDefKey=${task.taskDefinitionKey}&procInsId=${task.processInstanceId}&procDefId=${task.processDefinitionId}&status=${status}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 任务办理</a>
+ <title>绩效自评申请流程</title>
@@ -0,0 +1,134 @@
+ <h5>绩效自评详情</h5>
+ ${oaPerformance.remarks}
@@ -0,0 +1,285 @@
+<%@ page import="com.jeeplus.modules.sys.utils.UserUtils" %>
+ <title>企业荣誉管理</title>
+ label.error{
+ top:40px;
+ left:0;
+ if($("#file_attachment tr").length==0){
+ top.layer.alert('请上传荣誉附件!', {icon: 0});
+ if($("#file_attachment tr").length>1){
+ top.layer.alert('仅可以上传一个附件!', {icon: 0});
+ elem: '#issuedDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ elem: '#uploadDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ if($("#file_attachment tr").length>0){
+ top.layer.alert('仅可以上传一个附件', {icon: 0});
+ var list = "${officehonor.workAttachments}";
+ var files = $("#attachment_file")[0].files; for(var i = 0;i<files.length;i++) { var file = files[i];
+ console.log("文件大小"+file.size);
+ if(file.size >200000){
+ top.layer.alert('文件大小限制在200K以内!', {icon: 0});
+ var attachmentFlag = "110";
+ var storeAs = "attachment-file/officehonor/"+timestamp+"/"+file['name'];
+ multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,size);}
+ //------------------上传图片-暂弃----------------------
+ /*function next_upload_image_button(index){
+ $("#next_upload_file_"+index).click();
+ function next_upload_show_image(index){
+ var obj =$("#next_upload_file_"+index)[0].files[0];
+ if(fileType.endsWith("png")||fileType.endsWith("bmp")||fileType.endsWith("jpg")||fileType.endsWith("jpeg")||fileType.endsWith("gif")){
+ $("#next_upload_msg").css({"color":"red"});
+ next_close_img(index);
+ $("#next_upload_msg").removeAttr("style");
+ $("#next_upload_image_"+index).attr("src",url);
+ var length = $("#next_upload_image_div :file").length;
+ if( index == length && length < 1 ){
+ next_upload_image_append(index);
+ next_add_x(index);
+ }else if(index == length && length ==1){
+ var span = '<span id="next_upload_close_'+index+'" class="close_ico" style="cursor:pointer; position: absolute;top:-1px;right: -1px; display:inline-block;z-index:1;color: red;" onclick="next_close_img('+index+');">x</span>';
+ $("#next_upload_image_1").before(span);
+ function next_upload_image_append(index){
+ var div1 = "<div id='next_upload_div_"+(index+1)+"' style='float:left;position:relative;width: 57px;height: 57px;'>";
+ var img = '<img id="next_upload_image_'+(index+1)+'" class="upload_ico" width="50px" height="50px" onclick="next_upload_image_button('+(index+1)+')" src = "${pageContext.request.contextPath}/static/uploadify/upload_ico.png" style="cursor:pointer;"/>';
+ var input = '<input id="next_upload_file_'+(index+1)+'" type="file" style="display:none;" name="next_upload_files" onChange="next_upload_show_image('+(index+1)+')" /><br>';
+ $("#next_upload_image_div").append(div1+img+input+div2);
+ function next_close_img(index) {
+ $("#next_upload_div_"+index).remove();
+ next_add_div();
+ var x = $("#next_upload_image_div").find("span").text();
+ function next_add_x(index) {
+ $("#next_upload_image_div").find("img:eq(-2)").before(span);
+ function next_add_div() {
+ var next_upload_div_1 =
+ '<div id="next_upload_div_1" style="float: left;position:relative;width: 57px;height: 57px;" >'+
+ '<img id="next_upload_image_1" class="upload_ico" style="cursor:pointer;" src="${pageContext.request.contextPath}/static/uploadify/upload_ico.png" onclick="next_upload_image_button(1)"/>'+
+ '<input id="next_upload_file_1" type="file" style="display:none" name="next_upload_files" onchange="next_upload_show_image(1)" /><br>'+
+ $("#next_upload_image_div").html("").append(next_upload_div_1);
+ /*-------------------------------*/
+ <form:form id="inputForm" modelAttribute="officehonor" action="${ctx}/officehonor/officehonor/save" method="post" class="form-horizontal"><%--enctype="multipart/form-data"--%>
+ <form:hidden path="office.id" value="<%= UserUtils.getSelectOffice().getParent().getId()%>"/>
+ <div class="form-group layui-row first lw8">
+ <div class="form-group-label"><h2>基础信息</h2></div>
+ <label class="layui-form-label">公司名称:</label>
+ <form:input path="companyName" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+ <label class="layui-form-label">编号:</label>
+ <form:input path="num" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+ <label class="layui-form-label"><span class="require-item">*</span>荣誉类型:</label>
+ <form:select path="honorType" class="form-control required simple-select">
+ <form:options items="${fns:getDictList('honor_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+ <label class="layui-form-label"><span class="require-item">*</span>荣誉名称:</label>
+ <form:input path="name" htmlEscape="false" class="form-control required layui-input"/>
+ <label class="layui-form-label">颁发日期:</label>
+ <input class="laydate-icondate layui-input form-control layer-date laydate-icon" id="issuedDate" name="issuedDate"
+ value="<fmt:formatDate value="${officehonor.issuedDate}" pattern="yyyy-MM-dd"/>">
+ <label class="layui-form-label"><span class="require-item">*</span>颁布机构:</label>
+ <form:input path="issuedAgency" htmlEscape="false" class="form-control required layui-input"/>
+ <label class="layui-form-label">上传日期:</label>
+ <input class="laydate-icondate layui-input form-control layer-date laydate-icon" readonly="true" name="uploadDate"
+ value="<fmt:formatDate value="${officehonor.uploadDate}" pattern="yyyy-MM-dd"/>">
+ <div class="layui-item layui-col-sm12 with-textarea">
+ <label class="layui-form-label">备注:</label>
+ <form:textarea path="remarks" htmlEscape="false" rows="4" maxlength="255" class="form-control "/>
+ <input id="attachment_file" type="file" name="attachment_file" style="display: none;" onChange="if(this.value)insertTitle(this.value);"/>
+ <c:forEach items="${officehonor.workAttachments}" var = "workClientAttachment" varStatus="status">
+ <td><img src="${workClientAttachment.url}" width="50" height="50" onclick="openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=${workClientAttachment.url}','90%','90%')" alt="${workClientAttachment.attachmentName}">
@@ -0,0 +1,256 @@
+ maxmin: false, //开启最大化最小化按钮
+ btn: ['提交','关闭'],
+ top.layer.close(index);//关闭对话框。
+ <form:form id="searchForm" modelAttribute="officehonor" action="${ctx}/officehonor/officehonor/" method="post" class="form-inline">
+ <div class="commonQuery lw8">
+ <sys:treeselect id="officeId" name="office.id" value="${officehonor.office.id}" labelName="office.name" labelValue="${officehonor.office.name}"
+ title="机构" url="/sys/office/treeDataCompany" cssClass="form-control layui-input" />
+ <label class="layui-form-label">荣誉名称:</label>
+ <form:input path="name" htmlEscape="false" maxlength="64" class=" form-control layui-input"/>
+ <div id="moresees" class="lw8" style="clear:both;display:none;">
+ <%--<div class="layui-item query athird">
+ <label class="layui-form-label">专业:</label>
+ <form:input path="specialty" htmlEscape="false" maxlength="64" class=" form-control layui-input"/>
+ <%--此处按钮样式包括 nav-btn-add nav-btn-refresh nav-btn-import nav-btn-export nav-btn-query nav-btn-reset--%>
+ <shiro:hasPermission name="officehonor:officehonor:add">
+ <table:addRow url="${ctx}/officehonor/officehonor/form" title="企业荣誉"></table:addRow><!-- 增加按钮 -->
+ {field:'index',align:'center', title: '序号',width:40}
+ ,{field:'num',align:'center',sort:true ,title: '编号',minWidth:160,templet:function(d){
+ var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看企业荣誉', '${ctx}/officehonor/officehonor/form?id=" + d.id + "&tabId=view','95%','95%')\">" +
+ "<span title=" + d.num + ">" + d.num + "</span></a>";
+ ,{field:'companyName',align:'center', title: '公司名称',minWidth:160,templet:function(d){
+ return "<span title='"+ d.companyName +"'>" + d.companyName + "</span>";
+ ,{field:'name',align:'center', title: '荣誉名称',minWidth:160,templet:function(d){
+ return "<span title='"+ d.name +"'>" + d.name + "</span>";
+ ,{field:'honorType',align:'center', title: '荣誉类型',minWidth:160,templet:function(d){
+ return "<span title='"+ d.honorType +"'>" + d.honorType + "</span>";
+ ,{field:'issuedAgency', align:'center',title: '颁发机构',minWidth:160,templet:function(d){
+ return "<span title='"+ d.issuedAgency +"'>" + d.issuedAgency + "</span>";
+ ,{field:'uploadDate',align:'center', sort:true ,title: '上传日期', minWidth:160}
+ ,{field:'upload',align:'center',title:"荣誉文件",minWidth:170,templet:function(d){
+ if(d.edit1 != undefined && d.edit1 == "1")
+ xml +="<img src="+d.url+" width="+50+" height="+50+" alt="+d.uName+">";
+ if(d.edit2 != undefined && d.edit2 == "1")
+ xml +="<a href=\"javascript:void(0)\" >" + d.uName + "</a>";
+ if(d.edit3 != undefined && d.edit3 == "1")
+ /* ,{field:'upload',align:'center',title:"资质文件",width:170,templet:function(d){
+ xml +="<img src="+d.url+" width="+50+" height="+50+" onclick=\"openDialogView('预览','${ctx}/sys/picturepreview/picturePreview?url=" + d.url + ",'90%','90%')\" alt="+d.uName+">";
+ xml +="<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"preview('预览'," + d.url + " ,'90%','90%','1')\" >" + d.uName + "</a>";
+ xml +="<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"preview('预览'," + d.url + ",'90%','90%')\" >" + d.uName + "</a>";
+ }}*/
+ ,{field:'op',align:'center',title:"操作",width:130,templet:function(d){
+ if(d.canedit1 != undefined && d.canedit1 == "1")
+ xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogre('修改企业资质', '${ctx}/officehonor/officehonor/form?id="+ d.id + "','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+ if(d.candelete != undefined && d.candelete == "1")
+ xml +="<a href=\"${ctx}/officehonor/officehonor/delete?id=" + d.id + "\" onclick=\"return confirmx('确认要删除该荣誉信息吗?', this.href)\" class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 删除</a>";
+ <c:forEach items="${page.list}" var="officehonor" varStatus="index">
+ ,"id":"${officehonor.id}"
+ ,"num":"${officehonor.num}"
+ ,"companyName":"${officehonor.companyName}"
+ ,"name":"${officehonor.name}"
+ ,"honorType":"${officehonor.honorType}"
+ ,"issuedAgency":"${officehonor.issuedAgency}"
+ ,"url":"${officehonor.url}"
+ ,"uName":"${officehonor.uName}"
+ ,"uploadDate":"<fmt:formatDate value="${officehonor.uploadDate}" pattern="yyyy-MM-dd"/>"
+ <shiro:hasPermission name="officehonor:officehonor:edit"><c:choose>
+ <c:when test="${fns:getOffice().parent.type == '1' || fns:getOffice().parent.id == officehonor.office.id}">,"canedit1":"1"</c:when>
+ </c:choose></shiro:hasPermission>
+ <shiro:hasPermission name="officehonor:officehonor:del"><c:choose>
+ <c:when test="${fns:getOffice().parent.type == '1' || fns:getOffice().parent.id == officehonor.office.id}">,"candelete":"1"</c:when>
+ <c:when test="${fn:containsIgnoreCase(officehonor.uName,'jpg')
+ or fn:containsIgnoreCase(officehonor.uName,'png')
+ or fn:containsIgnoreCase(officehonor.uName,'gif')
+ or fn:containsIgnoreCase(officehonor.uName,'bmp')
+ or fn:containsIgnoreCase(officehonor.uName,'jpeg')}">,"edit1":"1"</c:when>
+ <c:when test="${fn:containsIgnoreCase(officehonor.uName,'pdf')}">
+ ,"edit2":"1"</c:when>
+ ,"edit3":"1"</c:otherwise>
@@ -0,0 +1,269 @@
+ top.layer.alert('请上传资质附件!', {icon: 0});
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${officehonor.companyName}"/>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${officehonor.num}"/>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getDictLabel(officehonor.honorType, 'honor_type','')}"/>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${officehonor.name}"/>
+ <input class="laydate-icondate layui-input form-control layer-date laydate-icon" name="issuedDate"
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${officehonor.issuedAgency}"/>
+ <input class="laydate-icondate layui-input form-control layer-date laydate-icon" name="uploadDate"
+ <textarea htmlEscape="false" rows="4" readonly="true" class="form-control ">${officehonor.remarks}</textarea>
+ <%--<div class="layui-item nav-btns">
+ <%--<c:if test="${workClientAttachment.createBy.id eq fns:getUser().id}">
@@ -0,0 +1,254 @@
+ <title>企业介绍管理</title>
+ top.layer.alert('请上传企业介绍附件!', {icon: 0});
+ var list = "${officeintroduce.workAttachments}";
+ var attachmentFlag = "111";
+ var storeAs = "attachment-file/officeintroduce/"+timestamp+"/"+file['name'];
+ <form:form id="inputForm" modelAttribute="officeintroduce" action="${ctx}/officeintroduce/officeintroduce/save" method="post" class="form-horizontal"><%--enctype="multipart/form-data"--%>
+ <label class="layui-form-label lw8"><span class="require-item">*</span>介绍名称:</label>
+ <div class="layui-input-block lw8">
+ <form:input path="introduce" htmlEscape="false" class="form-control required layui-input"/>
+ value="<fmt:formatDate value="${officeintroduce.uploadDate}" pattern="yyyy-MM-dd"/>">
+ <c:forEach items="${officeintroduce.workAttachments}" var = "workClientAttachment" varStatus="status">
@@ -0,0 +1,252 @@
+ <form:form id="searchForm" modelAttribute="officeintroduce" action="${ctx}/officeintroduce/officeintroduce/" method="post" class="form-inline">
+ <sys:treeselect id="officeId" name="office.id" value="${officeintroduce.office.id}" labelName="office.name" labelValue="${officeintroduce.office.name}"
+ <label class="layui-form-label">企业介绍名称:</label>
+ <form:input path="introduce" htmlEscape="false" maxlength="64" class=" form-control layui-input"/>
+ <shiro:hasPermission name="officeintroduce:officeintroduce:add">
+ <table:addRow url="${ctx}/officeintroduce/officeintroduce/form" title="企业介绍"></table:addRow><!-- 增加按钮 -->
+ var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看企业介绍', '${ctx}/officeintroduce/officeintroduce/form?id=" + d.id + "&tabId=view','95%','95%')\">" +
+ ,{field:'introduce',align:'center', title: '企业介绍名称',minWidth:260,templet:function(d){
+ return "<span title='"+ d.introduce +"'>" + d.introduce + "</span>";
+ ,{field:'remarks',align:'center', title: '备注',minWidth:260,templet:function(d){
+ return "<span title='"+ d.remarks +"'>" + d.remarks + "</span>";
+ ,{field:'upload',align:'center',title:"企业介绍文件",minWidth:170,templet:function(d){
+ xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogre('修改企业介绍', '${ctx}/officeintroduce/officeintroduce/form?id="+ d.id + "','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+ xml +="<a href=\"${ctx}/officeintroduce/officeintroduce/delete?id=" + d.id + "\" onclick=\"return confirmx('确认要删除该资质信息吗?', this.href)\" class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 删除</a>";
+ <c:forEach items="${page.list}" var="officeintroduce" varStatus="index">
+ ,"id":"${officeintroduce.id}"
+ ,"num":"${officeintroduce.num}"
+ ,"companyName":"${officeintroduce.companyName}"
+ ,"introduce":"${officeintroduce.introduce}"
+ ,"url":"${officeintroduce.url}"
+ ,"remarks":"${officeintroduce.remarks}"
+ ,"uName":"${officeintroduce.uName}"
+ ,"uploadDate":"<fmt:formatDate value="${officeintroduce.uploadDate}" pattern="yyyy-MM-dd"/>"
+ <shiro:hasPermission name="officeintroduce:officeintroduce:edit"><c:choose>
+ <c:when test="${fns:getOffice().parent.type == '1' || fns:getOffice().parent.id == officeintroduce.office.id}">,"canedit1":"1"</c:when>
+ <shiro:hasPermission name="officeintroduce:officeintroduce:del"><c:choose>
+ <c:when test="${fns:getOffice().parent.type == '1' || fns:getOffice().parent.id == officeintroduce.office.id}">,"candelete":"1"</c:when>
+ <c:when test="${fn:containsIgnoreCase(officeintroduce.uName,'jpg')
+ or fn:containsIgnoreCase(officeintroduce.uName,'png')
+ or fn:containsIgnoreCase(officeintroduce.uName,'gif')
+ or fn:containsIgnoreCase(officeintroduce.uName,'bmp')
+ or fn:containsIgnoreCase(officeintroduce.uName,'jpeg')}">,"edit1":"1"</c:when>
+ <c:when test="${fn:containsIgnoreCase(officeintroduce.uName,'pdf')}">
@@ -0,0 +1,250 @@
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${officeintroduce.companyName}"/>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${officeintroduce.num}"/>
+ <label class="layui-form-label"><span class="require-item">*</span>介绍名称:</label>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${officeintroduce.introduce}"/>
+ <textarea htmlEscape="false" rows="4" readonly="true" class="form-control ">${officeintroduce.remarks}</textarea>
@@ -0,0 +1,280 @@
+ <title>企业证照管理</title>
+ top.layer.alert('请上传证照附件!', {icon: 0});
+ elem: '#firstDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ elem: '#continueDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ var list = "${officeLicense.workAttachments}";
+ var attachmentFlag = "112";
+ var storeAs = "attachment-file/officeLicense/"+timestamp+"/"+file['name'];
+ <form:form id="inputForm" modelAttribute="officeLicense" action="${ctx}/officelicense/officeLicense/save" method="post" class="form-horizontal"><%--enctype="multipart/form-data"--%>
+ <label class="layui-form-label"><span class="require-item">*</span>证照名称:</label>
+ <label class="layui-form-label double-line"><span class="require-item">*</span>是否有电子章:</label>
+ <form:select path="isChapter" class="form-control required simple-select">
+ <form:options items="${fns:getDictList('is_chapter')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+ value="<fmt:formatDate value="${officeLicense.uploadDate}" pattern="yyyy-MM-dd"/>">
+ <c:forEach items="${officeLicense.workAttachments}" var = "workClientAttachment" varStatus="status">
+ <form:form id="searchForm" modelAttribute="officeLicense" action="${ctx}/officelicense/officeLicense/" method="post" class="form-inline">
+ <sys:treeselect id="officeId" name="office.id" value="${officeLicense.office.id}" labelName="office.name" labelValue="${officeLicense.office.name}"
+ <label class="layui-form-label">证照名称:</label>
+ <shiro:hasPermission name="officelicense:officeLicense:add">
+ <table:addRow url="${ctx}/officelicense/officeLicense/form" title="企业证照"></table:addRow><!-- 增加按钮 -->
+ {field:'index',align:'center', title: '序号',minWidth:40}
+ var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看企业证照', '${ctx}/officelicense/officeLicense/form?id=" + d.id + "&tabId=view','95%','95%')\">" +
+ ,{field:'name',align:'center', title: '证照名称',minWidth:160,templet:function(d){
+ ,{field:'isChapter',align:'center', title: '是否有电子签章',minWidth:160,templet:function(d){
+ return "<span title='"+ d.isChapter +"'>" + d.isChapter + "</span>";
+ ,{field:'upload',align:'center',title:"证照文件",minWidth:170,templet:function(d){
+ xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogre('修改企业资质', '${ctx}/officelicense/officeLicense/form?id="+ d.id + "','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+ xml +="<a href=\"${ctx}/officelicense/officeLicense/delete?id=" + d.id + "\" onclick=\"return confirmx('确认要删除该资质信息吗?', this.href)\" class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 删除</a>";
+ <c:forEach items="${page.list}" var="officeLicense" varStatus="index">
+ ,"id":"${officeLicense.id}"
+ ,"num":"${officeLicense.num}"
+ ,"companyName":"${officeLicense.companyName}"
+ ,"name":"${officeLicense.name}"
+ ,"isChapter":"${fns:getDictLabel(officeLicense.isChapter, 'is_chapter','')}"
+ ,"url":"${officeLicense.url}"
+ ,"uName":"${officeLicense.uName}"
+ ,"uploadDate":"<fmt:formatDate value="${officeLicense.uploadDate}" pattern="yyyy-MM-dd"/>"
+ <shiro:hasPermission name="officelicense:officeLicense:edit"><c:choose>
+ <c:when test="${fns:getOffice().parent.type == '1' || fns:getOffice().parent.id == officeLicense.office.id}">,"canedit1":"1"</c:when>
+ <shiro:hasPermission name="officelicense:officeLicense:del"><c:choose>
+ <c:when test="${fns:getOffice().parent.type == '1' || fns:getOffice().parent.id == officeLicense.office.id}">,"candelete":"1"</c:when>
+ <c:when test="${fn:containsIgnoreCase(officeLicense.uName,'jpg')
+ or fn:containsIgnoreCase(officeLicense.uName,'png')
+ or fn:containsIgnoreCase(officeLicense.uName,'gif')
+ or fn:containsIgnoreCase(officeLicense.uName,'bmp')
+ or fn:containsIgnoreCase(officeLicense.uName,'jpeg')}">,"edit1":"1"</c:when>
+ <c:when test="${fn:containsIgnoreCase(officeLicense.uName,'pdf')}">
@@ -0,0 +1,241 @@
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${officeLicense.companyName}"/>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${officeLicense.num}"/>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${officeLicense.name}"/>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getDictLabel(officeLicense.isChapter, 'is_chapter','')}"/>
+ <textarea htmlEscape="false" rows="4" readonly="true" class="form-control ">${officeLicense.remarks}</textarea>
@@ -0,0 +1,310 @@
+ <title>企业资质管理</title>
+ var list = "${officequalify.workAttachments}";
+ var attachmentFlag = "109";
+ var storeAs = "attachment-file/officequalify/"+timestamp+"/"+file['name'];
+ <form:form id="inputForm" modelAttribute="officequalify" action="${ctx}/officequalify/officequalify/save" method="post" class="form-horizontal"><%--enctype="multipart/form-data"--%>
+ <label class="layui-form-label"><span class="require-item">*</span>资质名称:</label>
+ <label class="layui-form-label">资质等级:</label>
+ <%--<form:select path="qualifyGrade" class="form-control ">
+ <form:options items="${fns:getDictList('qualify_grade')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+ </form:select>--%>
+ <form:input path="qualifyGrade" htmlEscape="false" class="form-control layui-input"/>
+ <form:input path="specialty" htmlEscape="false" class="form-control layui-input"/>
+ <label class="layui-form-label">初次取得日期:</label>
+ <input class="laydate-icondate layui-input form-control layer-date laydate-icon" id="firstDate" name="firstDate"
+ value="<fmt:formatDate value="${officequalify.firstDate}" pattern="yyyy-MM-dd"/>">
+ <label class="layui-form-label">到期日期:</label>
+ <input class="laydate-icondate layui-input form-control layer-date laydate-icon" id="endDate" name="endDate"
+ value="<fmt:formatDate value="${officequalify.endDate}" pattern="yyyy-MM-dd"/>">
+ <label class="layui-form-label">延续注册日期:</label>
+ <input class="laydate-icondate layui-input form-control layer-date laydate-icon" id="continueDate" name="continueDate"
+ value="<fmt:formatDate value="${officequalify.continueDate}" pattern="yyyy-MM-dd"/>">
+ value="<fmt:formatDate value="${officequalify.uploadDate}" pattern="yyyy-MM-dd"/>">
+ <c:forEach items="${officequalify.workAttachments}" var = "workClientAttachment" varStatus="status">
+ <form:form id="searchForm" modelAttribute="officequalify" action="${ctx}/officequalify/officequalify/" method="post" class="form-inline">
+ <sys:treeselect id="officeId" name="office.id" value="${officequalify.office.id}" labelName="office.name" labelValue="${officequalify.office.name}"
+ <label class="layui-form-label">资质名称:</label>
+ <shiro:hasPermission name="officequalify:officequalify:add">
+ <table:addRow url="${ctx}/officequalify/officequalify/form" title="企业资质"></table:addRow><!-- 增加按钮 -->
+ var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看企业资质', '${ctx}/officequalify/officequalify/form?id=" + d.id + "&tabId=view','95%','95%')\">" +
+ ,{field:'name',align:'center', title: '资质名称',minWidth:160,templet:function(d){
+ ,{field:'qualifyGrade',align:'center', title: '资质等级',minWidth:160,templet:function(d){
+ return "<span title='"+ d.qualifyGrade +"'>" + d.qualifyGrade + "</span>";
+ ,{field:'specialty', align:'center',title: '专业',minWidth:160,templet:function(d){
+ return "<span title='"+ d.specialty +"'>" + d.specialty + "</span>";
+ ,{field:'upload',align:'center',title:"资质文件",minWidth:170,templet:function(d){
+ xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogre('修改企业资质', '${ctx}/officequalify/officequalify/form?id="+ d.id + "','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+ xml +="<a href=\"${ctx}/officequalify/officequalify/delete?id=" + d.id + "\" onclick=\"return confirmx('确认要删除该资质信息吗?', this.href)\" class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 删除</a>";
+ <c:forEach items="${page.list}" var="officequalify" varStatus="index">
+ ,"id":"${officequalify.id}"
+ ,"num":"${officequalify.num}"
+ ,"companyName":"${officequalify.companyName}"
+ ,"name":"${officequalify.name}"
+ ,"qualifyGrade":"${officequalify.qualifyGrade}"
+ ,"specialty":"${officequalify.specialty}"
+ ,"url":"${officequalify.url}"
+ ,"uName":"${officequalify.uName}"
+ ,"uploadDate":"<fmt:formatDate value="${officequalify.uploadDate}" pattern="yyyy-MM-dd"/>"
+ <shiro:hasPermission name="officequalify:officequalify:edit"><c:choose>
+ <c:when test="${fns:getOffice().parent.type == '1' || fns:getOffice().parent.id == officequalify.office.id}">,"canedit1":"1"</c:when>
+ <shiro:hasPermission name="officequalify:officequalify:del"><c:choose>
+ <c:when test="${fns:getOffice().parent.type == '1' || fns:getOffice().parent.id == officequalify.office.id}">,"candelete":"1"</c:when>
+ <c:when test="${fn:containsIgnoreCase(officequalify.uName,'jpg')
+ or fn:containsIgnoreCase(officequalify.uName,'png')
+ or fn:containsIgnoreCase(officequalify.uName,'gif')
+ or fn:containsIgnoreCase(officequalify.uName,'bmp')
+ or fn:containsIgnoreCase(officequalify.uName,'jpeg')}">,"edit1":"1"</c:when>
+ <c:when test="${fn:containsIgnoreCase(officequalify.uName,'pdf')}">
+ function next_upload_image_button(index){
+ <form:form id="inputForm" modelAttribute="officequalify" action="${ctx}/officequalify/officequalify/save" method="post" enctype="multipart/form-data" class="form-horizontal">
+ <form:hidden path="office.id" value="<%= UserUtils.getSelectCompany().getId()%>"/>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${officequalify.companyName}"/>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${officequalify.num}"/>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${officequalify.name}"/>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${officequalify.qualifyGrade}"/>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${officequalify.specialty}"/>
+ <input name="firstDate" htmlEscape="false" readonly="true"
+ class="form-control layui-input" value="<fmt:formatDate value="${officequalify.firstDate}"
+ pattern="yyyy-MM-dd"/>"/>
+ <input name="endDate" htmlEscape="false" readonly="true"
+ class="form-control layui-input" value="<fmt:formatDate value="${officequalify.endDate}"
+ <input name="continueDate" htmlEscape="false" readonly="true"
+ class="form-control layui-input" value="<fmt:formatDate value="${officequalify.continueDate}"
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${officequalify.issuedAgency}"/>
+ <input name="uploadDate" htmlEscape="false" readonly="true"
+ class="form-control layui-input" value="<fmt:formatDate value="${officequalify.uploadDate}"
+ <textarea htmlEscape="false" rows="4" readonly="true" class="form-control ">${officequalify.remarks}</textarea>
@@ -0,0 +1,70 @@
+ <title>归档目录管理</title>
+ <form:form id="inputForm" modelAttribute="archivedirectory" action="${ctx}/project/archivedirectory/save?bidInformationId=${archivedirectory.bidInformationId}" method="post" class="form-horizontal">
+ <form:input path="name" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">数量:</label></td>
+ <form:input path="number" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">页数:</label></td>
+ <form:input path="pageNumber" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">备注:</label></td>
+ <form:input path="remarks" htmlEscape="false" class="form-control "/>
+ <div style="margin-top: 260px; margin-left: 711px">
+ <input type="submit" value="保存" class="btn btn-success btn-xs" style="height: 30px;width: 57px"/>
@@ -0,0 +1,67 @@
+<form:form id="inputForm" modelAttribute="archivedirectory" action="${ctx}/project/archivedirectory/save?bidInformationId=${archivedirectory.bidInformationId}" method="post" class="form-horizontal">
+ <form:input path="name" htmlEscape="false" readonly="true" class="form-control "/>
+ <form:input path="number" htmlEscape="false" readonly="true" class="form-control "/>
+ <form:input path="pageNumber" htmlEscape="false" readonly="true" class="form-control "/>
+ <form:input path="remarks" htmlEscape="false" readonly="true" class="form-control "/>
+</form:form>
+ <h5>归档目录列表 </h5>
+ <form:form id="searchForm" modelAttribute="archivedirectory" action="${ctx}/project/archivedirectory/" method="post" class="form-inline">
+ <%--<shiro:hasPermission name="project:archivedirectory:add">--%>
+ <table:addRow url="${ctx}/project/archivedirectory/form" title="归档目录"></table:addRow><!-- 增加按钮 -->
+ <%-- </shiro:hasPermission>--%>
+ <%-- <shiro:hasPermission name="project:archivedirectory:edit">--%>
+ <table:editRow url="${ctx}/project/archivedirectory/form" title="归档目录" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+ <%--<shiro:hasPermission name="project:archivedirectory:del">--%>
+ <table:delRow url="${ctx}/project/archivedirectory/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+ <%--</shiro:hasPermission>
+ <shiro:hasPermission name="project:archivedirectory:import">--%>
+ <table:importExcel url="${ctx}/project/archivedirectory/import"></table:importExcel><!-- 导入按钮 -->
+ <%-- </shiro:hasPermission>
+ <shiro:hasPermission name="project:archivedirectory:export">--%>
+ <table:exportExcel url="${ctx}/project/archivedirectory/export"></table:exportExcel><!-- 导出按钮 -->
+ <th class="sort-column remarks">备注信息</th>
+ <th class="sort-column name">名称</th>
+ <th class="sort-column number">数量</th>
+ <th class="sort-column pageNumber">页码</th>
+ <c:forEach items="${page.list}" var="archivedirectory">
+ <td> <input type="checkbox" id="${archivedirectory.id}" class="i-checks"></td>
+ <td><a href="javascript:void(0)" onclick="openDialogView('查看归档目录', '${ctx}/project/archivedirectory/form?id=${archivedirectory.id}','80%','80%')">
+ ${archivedirectory.remarks}
+ ${archivedirectory.name}
+ ${archivedirectory.number}
+ ${archivedirectory.pageNumber}
+ <%-- <shiro:hasPermission name="project:archivedirectory:view">--%>
+ <a href="javascript:void(0)" onclick="openDialogView('查看归档目录', '${ctx}/project/archivedirectory/form?id=${archivedirectory.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+ <shiro:hasPermission name="project:archivedirectory:edit">--%>
+ <a href="javascript:void(0)" onclick="openDialog('修改归档目录', '${ctx}/project/archivedirectory/form?id=${archivedirectory.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+ <shiro:hasPermission name="project:archivedirectory:del">--%>
+ <a href="${ctx}/project/archivedirectory/delete?id=${archivedirectory.id}" onclick="return confirmx('确认要删除该归档目录吗?', this.href)" class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
@@ -0,0 +1,211 @@
+ <title>标段信息管理</title>
+ elem: '#timeOfWinningBid', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ ,type: 'date'
+ elem: '#bidOpeningTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ elem: '#filingTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ elem: '#firstAcceptanceTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ elem: '#finalArchivingTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ <form:form id="inputForm" modelAttribute="bidInformation" action="${ctx}/project/bidInformation/save" method="post" class="form-horizontal">
+ <td class="width-15 active"><label class="pull-right">项目名称<font color="red">*</font>:</label></td>
+ <td class="width-85" colspan="3">
+ <form:input path="project.projectName" htmlEscape="false" readonly="true" class="form-control required"/>
+ <td class="width-15 active"><label class="pull-right">项目编号:</label></td>
+ <form:input path="project.projectNumber" htmlEscape="false" readonly="true" class="form-control"/>
+ <td class="width-15 active"><label class="pull-right">项目负责人:</label></td>
+ <form:input path="workprojectgroup.leader" htmlEscape="false" readonly="true" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">开标时间:</label></td>
+ <input id="bidOpeningTime" name="bidOpeningTime" type="text" maxlength="20" class="laydate-icondate form-control layer-date input-sm"/>
+ <td class="width-15 active"><label class="pull-right">中标通知书编号<font color="red">*</font>:</label></td>
+ <input type="text" name="winningBidNumber" class="form-control required"/>
+ <td class="width-15 active"><label class="pull-right">中央投资网是否上传:</label></td>
+ <input type="radio" value="1" name="centralInvestmentOnline" onclick="display(this.value)" checked="checked">是
+ <input type="radio" value="0" name="centralInvestmentOnline" onclick="display(this.value)" checked="checked">否
+ <td class="width-15 active"><label class="pull-right">中标通知书发放时间:</label></td>
+ <input id="timeOfWinningBid" name="timeOfWinningBid" type="text" maxlength="20" class="laydate-icondate form-control layer-date input-sm"/>
+ <td class="width-15 active"><label class="pull-right">招标人是否承存档:</label></td>
+ <input type="radio" value="1" name="tendereeArchives" onclick="display(this.value)" checked="checked">是
+ <input type="radio" value="0" name="tendereeArchives" onclick="display(this.value)" checked="checked">否
+ <td class="width-15 active"><label class="pull-right">备案时间:</label></td>
+ <input id="filingTime" name="filingTime" type="text" maxlength="20" class="laydate-icondate form-control layer-date input-sm"/>
+ <td class="width-15 active"><label class="pull-right">纸质归档:</label></td>
+ <input type="radio" value="1" name="paperArchiving" onclick="display(this.value)" checked="checked">是
+ <input type="radio" value="0" name="paperArchiving" onclick="display(this.value)" checked="checked">否
+ <td class="width-15 active"><label class="pull-right">首次接收时间:</label></td>
+ <input id="firstAcceptanceTime" name="firstAcceptanceTime" type="text" maxlength="20" class="laydate-icondate form-control layer-date input-sm"/>
+ <td class="width-15 active"><label class="pull-right"></label></td>
+ <td class="width-35"></td>
+ <td class="width-15 active"><label class="pull-right">最终归档时间:</label></td>
+ <input id="finalArchivingTime" name="finalArchivingTime" type="text" maxlength="20" class="laydate-icondate form-control layer-date input-sm"/>
+ <td colspan="4">
+ <shiro:hasPermission name="project:archivedirectory:add">
+ <a href="javascript:void(0)" onclick="openDialogView('附件信息', '${ctx}/project/archivedirectory/form?bidInformationId=${bidInformation.id}','80%','80%')" class="btn btn-white btn-sm" ><i class="fa fa-search-plus"></i>添加</a>
+ <shiro:hasPermission name="project:archivedirectory:del">
+ <th class="sort-column ordernumber">序号</th>
+ <th class="sort-column remarks">备注</th>
+ <c:forEach items="${archivedirectoryList}" var="archivedirectory">
+ <td><input type="checkbox" id="${archivedirectory.id}" class="i-checks"></td>
+ <td>${archivedirectory.seq}</td>
+ <td>${archivedirectory.name}</td>
+ <td>${archivedirectory.number}</td>
+ <td>${archivedirectory.remarks}</td>
+ <td>${archivedirectory.pageNumber}</td>
+ <shiro:hasPermission name="project:archivedirectory:view">
+ <a href="javascript:void(0)" onclick="openDialogView('附件信息', '${ctx}/project/archivedirectory/forms?id=${archivedirectory.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+ <shiro:hasPermission name="project:archivedirectory:edit">
+ <a href="javascript:void(0)" onclick="openDialogView('附件信息', '${ctx}/project/archivedirectory/form?id=${archivedirectory.id}&&bidInformationId=${bidInformation.id}','80%','80%')" class="btn btn-warning btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+ <a href="${ctx}/project/archivedirectory/delete?id=${archivedirectory.id}" onclick="return confirmx('确认要删除该信息吗?', this.href)" class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
+ <br>
+ <td colspan="8">
+ <div style="height: 100px">
+ 附件上传
+ <a href="javascript:void(0)" onclick="openDialogView('附件信息', '${ctx}/project/bidInformation/form?id=${archivedirectory.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-plus"></i> 添加附件</a>
@@ -0,0 +1,200 @@
+<form:form id="inputForm" modelAttribute="bidInformation" action="${ctx}/project/bidInformation/save" method="post" class="form-horizontal">
+ <input id="bidOpeningTime" name="bidOpeningTime" type="text" maxlength="20" class="laydate-icondate form-control layer-date input-sm"
+ value="${bidInformation.bidOpeningTime}"/>
+ <form:input path="winningBidNumber" htmlEscape="false" readonly="true" class="form-control required"/>
+ <input type="radio" name="centralInvestmentOnline" ${bidInformation.centralInvestmentOnline==1?"checked":""}>是
+ <input type="radio" name="centralInvestmentOnline" ${bidInformation.centralInvestmentOnline==0?"checked":""}>否
+ <input id="timeOfWinningBid" name="timeOfWinningBid" type="text" maxlength="20" class="laydate-icondate form-control layer-date input-sm"
+ value="${bidInformation.timeOfWinningBid}"/>
+ <input type="radio" name="tendereeArchives" ${bidInformation.tendereeArchives==1?"checked":""}>是
+ <input type="radio" name="tendereeArchives" ${bidInformation.tendereeArchives==0?"checked":""}>否
+ <input id="filingTime" name="filingTime" type="text" maxlength="20" class="laydate-icondate form-control layer-date input-sm"
+ value="${bidInformation.filingTime}"/>
+ <input type="radio" name="paperArchiving" ${bidInformation.paperArchiving==1?"checked":""}>是
+ <input type="radio" name="paperArchiving" ${bidInformation.paperArchiving==0?"checked":""}>否
+ <input id="firstAcceptanceTime" name="firstAcceptanceTime" type="text" maxlength="20" class="laydate-icondate form-control layer-date input-sm"
+ value="${bidInformation.firstAcceptanceTime}"/>
+ <input id="finalArchivingTime" name="finalArchivingTime" type="text" maxlength="20" class="laydate-icondate form-control layer-date input-sm"
+ value="${bidInformation.finalArchivingTime}"/>
@@ -0,0 +1,166 @@
+ $("#cus_name").show();
+ $("#cus_name").siblings().hide();
+ elem: '#cus_createDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ function switchInput(obj){
+ $("#"+obj).show();
+ $("#"+obj).siblings().hide();
+ <h5>项目归档列表 </h5>
+ <form:form id="searchForm" modelAttribute="bidInformation" action="${ctx}/project/bidInformation/" method="post" class="form-inline">
+ <select id="cusname" class="form-control" onChange="switchInput(this.value)">
+ <option value="">-- 请选择 --</option>
+ <option value="cus_name">项目名称</option>
+ <option value="cus_number">项目编号</option>
+ <option value="cus_client">客户单位</option>
+ <option value="cus_createDate">登记日期</option>
+ <option value="cus_leader">项目负责人</option>
+ <option value="cus_status">归档状态</option>
+ <div style="display: inline">
+ <form:input path="project.projectName" id="cus_name" htmlEscape="false" maxlength="255" class=" form-control input-sm"/>
+ <form:input path="project.projectNumber" id="cus_number" htmlEscape="false" maxlength="255" class=" form-control input-sm"/>
+ <form:input path="workClientInfo.name" id="cus_client" htmlEscape="false" maxlength="255" class=" form-control input-sm"/>
+ <input id="cus_createDate" name="project.createDate" type="text" readonly="readonly" maxlength="20" style="width:200px;" class="laydate-icondate form-control layer-date input-sm"
+ value="<fmt:formatDate value="${bidInformation.project.createDate}" pattern="yyyy-MM-dd"/>"/>
+ <form:input path="workprojectgroup.leader" id="cus_leader" htmlEscape="false" maxlength="255" class=" form-control input-sm"/>
+ <form:select path="status" id="cus_status" class="form-control m-b">
+ <form:options items="${fns:getDictList('status')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+ <th class="sort-column project.projectNumber">项目编号</th>
+ <th class="sort-column project.projectName">项目名称</th>
+ <th class="sort-column workClientInfo.name">客户单位</th>
+ <th class="sort-column project.createDate">登记日期</th>
+ <th class="sort-column workprojectgroup.leader">项目负责人</th>
+ <th class="sort-column projectStatus">项目归档</th>
+ <th class="sort-column status">归档状态</th>
+ <th class="sort-column processInstanceId">流程追踪</th>
+ <c:forEach items="${page.list}" var="bidInformation">
+ <td> <input type="checkbox" id="${bidInformation.id}" class="i-checks"></td>
+ ${bidInformation.project.projectNumber}
+ ${bidInformation.project.projectName}
+ ${bidInformation.workClientInfo.name}
+ <fmt:formatDate value="${bidInformation.project.createDate}" pattern="yyyy-MM-dd"/>
+ ${bidInformation.workprojectgroup.leader}
+ <%--<c:if test="${bidInformation.status==0 || bidInformation.status==1}">--%>
+ <%-- <shiro:hasPermission name=" project:bidInformation:add">--%>
+ <a href="javascript:void(0)" onclick="openDialogView('项目归档', '${ctx}/project/bidInformation/form?id=${bidInformation.id}','80%','80%')" class="btn btn-success btn-xs" >项目归档</a>
+ <%-- </c:if>--%>
+ ${fns:getDictLabel(bidInformation.status, 'status', '')}
+ <a href="javascript:void(0)" onclick="openDialogView('流程追踪', '${ctx}/project/bidInformation/form?id=${bidInformation.id}','80%','80%')" class="btn btn-danger btn-xs" >流程追踪</a>
+ <%-- <shiro:hasPermission name="project:bidInformation:view">--%>
+ <a href="javascript:void(0)" onclick="openDialogView('归档信息', '${ctx}/project/bidInformation/forms?id=${bidInformation.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
@@ -0,0 +1,93 @@
+ <title>到账处理</title>
+ $('input,textarea,select').attr('disabled','disabled');
+ $("#remake").removeAttr('disabled');
+ <form:form id="inputForm" modelAttribute="projectDepositManagement" action="${ctx}/project/projectDepositManagement/saveAudit" method="post" class="form-horizontal">
+ <label class="control-label">项目名称:</label>
+ <sys:gridselect url="${ctx}/project/project/selectProject" id="projectName" name="projectName" value="${projectName.id}" title="选择项目名称" labelName="clientName"
+ labelValue="${projectDepositManagement.project.projectName}" cssClass="form-control required" fieldLabels="项目" fieldKeys="projectName" searchLabel="项目名称" searchKey="projectName"></sys:gridselect>
+ <label class="control-label">递交单位:</label>
+ <sys:gridselect url="${ctx}/workprequalification/workPrequalification/selectbiddingCompany" id="clientId" name="clientId" value="${workPrequalification.biddingCompany.id}" title="选择招标单位" labelName="clientName"
+ labelValue="${projectDepositManagement.clientName}" cssClass="form-control required" fieldLabels="客户" fieldKeys="name" searchLabel="客户名称" searchKey="name" ></sys:gridselect>
+ <label class="control-label">保证金金额:</label>
+ <form:input id="depositAmount" path="depositAmount" htmlEscape="false" class="form-control "/>
@@ -0,0 +1,89 @@
+ <title>保证金管理管理</title>
+ elem: '#openbidTime', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ if (${requestScope.disabled.length()>0}) {
+ if(${requestScope.status eq 'edit'}){
+ $("#depositAmount").removeAttr('disabled');
+ $("#id").removeAttr('disabled');
+<form:form id="inputForm" modelAttribute="projectDepositManagement" action="${ctx}/project/projectDepositManagement/save" method="post" class="form-horizontal">
+ <%--<form:hidden path="id"/>--%>
+ <form:input id="id" path="id" htmlEscape="false" type="hidden" class="form-control "/>
+ <c:set var="id" value="${projectDepositManagement.id}" />
+ <td class="width-15 active"><label class="pull-right">项目名称:</label></td>
+ <%--<input id="projectName" name="projectName" type="text" class="form-control required" value="${projectDepositManagement.projectName}"/>--%>
+ <td class="width-15 active"><label class="pull-right">递交单位:</label></td>
+ <td class="width-15 active"><label class="pull-right">保证金金额:</label></td>
+ <c:if test="${not empty id}">
+ <input id="openbidTime" name="beginDate" type="text" readonly="readonly" maxlength="20" style="width:200px;" class="laydate-icondate form-control layer-date input-sm"
+ value="<fmt:formatDate value="${projectDepositManagement.openbidTime}" pattern="yyyy-MM-dd"/>"/>
@@ -0,0 +1,196 @@
+ $("#name").show();
+ $("#name").siblings().hide();
+ <h5>保证金管理列表 </h5>
+ <form:form id="searchForm" modelAttribute="projectDepositManagement" action="${ctx}/project/projectDepositManagement/list" method="get" class="form-inline">
+ <span>项目名称:</span>
+ <form:input path="project.projectName" htmlEscape="false" maxlength="50" class=" form-control input-sm"/>
+ <span>递交单位:</span>
+ <form:input path="clientName" htmlEscape="false" maxlength="50" class=" form-control input-sm"/>
+ <label>当前状态:</label>
+ <form:options items="${fns:getDictList('deposit_status')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+ <shiro:hasPermission name="project:projectDepositManagement:add">
+ <table:addRow url="${ctx}/project/projectDepositManagement/form" title="保证金管理"></table:addRow><!-- 增加按钮 -->
+ <shiro:hasPermission name="project:projectDepositManagement:edit">
+ <table:editRow url="${ctx}/project/projectDepositManagement/form" title="保证金管理" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+ <shiro:hasPermission name="project:projectDepositManagement:del">
+ <table:delRow url="${ctx}/project/projectDepositManagement/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+ <shiro:hasPermission name="project:projectDepositManagement:import">
+ <table:importExcel url="${ctx}/project/projectDepositManagement/import"></table:importExcel><!-- 导入按钮 -->
+ <shiro:hasPermission name="project:projectDepositManagement:export">
+ <table:exportExcel url="${ctx}/project/projectDepositManagement/export"></table:exportExcel><!-- 导出按钮 -->
+ <th class="sort-column clientName">递交单位</th>
+ <th class="sort-column depositAmount">保证金金额</th>
+ <th class="sort-column openbidTime">开标时间</th>
+ <%--<th class="sort-column projectId">项目主键</th>--%>
+ <th class="sort-column status">当前状态</th>
+ <th class="sort-column processInstanceId">
+ <%--<c:if test="${projectDepositManagement.createBy.id eq fns:getUser().id}">
+ 到账处理
+ <c:if test="${fn:contains(role.enname,'systems')}">
+ 确认到账
+ <c:when test="${userId eq fns:getUser().id}">
+ </th>
+ <c:forEach items="${page.list}" var="projectDepositManagement">
+ <c:set var="enname" value="${role.enname}" />
+ <td> <input type="checkbox" id="${projectDepositManagement.id}" class="i-checks"></td>
+ ${projectDepositManagement.project.projectName}
+ ${projectDepositManagement.clientName}
+ <%--<td><a href="javascript:void(0)" onclick="openDialogView('查看保证金管理', '${ctx}/project/projectDepositManagement/form?id=${projectDepositManagement.id}','80%','80%')">
+ ${projectDepositManagement.remarks}
+ </a></td>--%>
+ ${projectDepositManagement.depositAmount}
+ <fmt:formatDate value="${projectDepositManagement.openbidTime}" pattern="yyyy.MM.dd"/>
+ ${fns:getDictLabel(projectDepositManagement.status, 'deposit_status', '')}
+ <c:if test="${userId eq fns:getUser().id && projectDepositManagement.status eq '1'}">
+ <%--<a href="javascript:void(0)" onclick="openDialog('到账处理', '${ctx}/project/projectDepositManagement/formArrival?id=${projectDepositManagement.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 到账处理</a>--%>
+ <a href="${ctx}/project/projectDepositManagement/formArrival?id=${projectDepositManagement.id}" onclick="return confirmx('是否保证金确认到账?', this.href)" class="btn btn-success btn-xs"><i class="fa fa-edit"></i> 到账处理</a>
+ <c:if test="${fn:contains(enname,'account') && projectDepositManagement.status eq '2'}">
+ <a href="javascript:void(0)" onclick="openDialog('确认到账', '${ctx}/project/projectDepositManagement/formArrival?id=${projectDepositManagement.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 确认到账</a>
+ <c:if test="${not empty projectDepositManagement.processInstanceId}">
+ <a href="javascript:void(0)" onclick="openDialog('流程追踪', '${ctx}/project/projectDepositManagement/formArrival?id=${projectDepositManagement.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 流程追踪</a>
+ <shiro:hasPermission name="project:projectDepositManagement:view">
+ <a href="javascript:void(0)" onclick="openDialogView('查看保证金管理', '${ctx}/project/projectDepositManagement/form?id=${projectDepositManagement.id}&readAttr=disabled&name=view','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+ <c:if test="${projectDepositManagement.status eq '1'}">
+ <a href="javascript:void(0)" onclick="openDialog('修改保证金管理', '${ctx}/project/projectDepositManagement/form?id=${projectDepositManagement.id}&readAttr=disabled&name=edit','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+ <a href="${ctx}/project/projectDepositManagement/delete?id=${projectDepositManagement.id}" onclick="return confirmx('确认要删除该保证金管理吗?', this.href)" class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
@@ -0,0 +1,149 @@
+ <form:form id="searchForm" modelAttribute="projectDepositManagement" action="${ctx}/project/projectDepositReturn/" method="post" class="form-inline">
+ <span>保证金金额:</span>
+ <form:input path="depositAmount" htmlEscape="false" maxlength="64" class=" form-control input-sm"/>
+ <shiro:hasPermission name="project:projectDepositReturn:add">
+ <table:addRow url="${ctx}/project/projectDepositReturn/form" title="保证金管理"></table:addRow><!-- 增加按钮 -->
+ <shiro:hasPermission name="project:projectDepositReturn:edit">
+ <table:editRow url="${ctx}/project/projectDepositReturn/form" title="保证金管理" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+ <shiro:hasPermission name="project:projectDepositReturn:del">
+ <table:delRow url="${ctx}/project/projectDepositReturn/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+ <shiro:hasPermission name="project:projectDepositReturn:import">
+ <table:importExcel url="${ctx}/project/projectDepositReturn/import"></table:importExcel><!-- 导入按钮 -->
+ <shiro:hasPermission name="project:projectDepositReturn:export">
+ <table:exportExcel url="${ctx}/project/projectDepositReturn/export"></table:exportExcel><!-- 导出按钮 -->
+ <th class="sort-column project.projectName">递交单位</th>
+ <th class="sort-column processInstanceId">到账处理</th>
+ ${projectDepositManagement.openbidTime}
+ ${projectDepositManagement.status}
+ <shiro:hasPermission name="project:projectDepositReturn:view">
+ <a href="javascript:void(0)" onclick="openDialogView('查看保证金管理', '${ctx}/project/projectDepositReturn/form?id=${projectDepositManagement.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+ <a href="javascript:void(0)" onclick="openDialog('修改保证金管理', '${ctx}/project/projectDepositReturn/form?id=${projectDepositManagement.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+ <a href="${ctx}/project/projectDepositReturn/delete?id=${projectDepositManagement.id}" onclick="return confirmx('确认要删除该保证金管理吗?', this.href)" class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
@@ -0,0 +1,97 @@
+ <title>招标代理评价记录表管理</title>
+ <form:form id="inputForm" modelAttribute="projectEvaluationRecord" action="${ctx}/project/projectEvaluationRecord/save" method="post" class="form-horizontal">
+ <td class="width-15 active"><label class="pull-right">中标单位:</label></td>
+ <form:input path="clientId" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">中标金额:</label></td>
+ <form:input path="bidsuccessMoney" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">工期:</label></td>
+ <form:input path="duration" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">中标项目经理:</label></td>
+ <form:input path="projectManager" htmlEscape="false" class="form-control "/>
+ <form:input path="openbidMime" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">开标地点:</label></td>
+ <form:input path="openbidPlace" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">评标时间:</label></td>
+ <form:input path="assessbidTime" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">评标地点:</label></td>
+ <form:input path="assessbidPlace" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">项目主键:</label></td>
+ <form:input path="projectId" htmlEscape="false" class="form-control "/>
+ <h5>招标代理评价记录表列表 </h5>
+ <form:form id="searchForm" modelAttribute="projectEvaluationRecord" action="${ctx}/project/projectEvaluationRecord/" method="post" class="form-inline">
+ <shiro:hasPermission name="project:projectEvaluationRecord:add">
+ <table:addRow url="${ctx}/project/projectEvaluationRecord/form" title="招标代理评价记录表"></table:addRow><!-- 增加按钮 -->
+ <shiro:hasPermission name="project:projectEvaluationRecord:edit">
+ <table:editRow url="${ctx}/project/projectEvaluationRecord/form" title="招标代理评价记录表" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+ <shiro:hasPermission name="project:projectEvaluationRecord:del">
+ <table:delRow url="${ctx}/project/projectEvaluationRecord/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+ <shiro:hasPermission name="project:projectEvaluationRecord:import">
+ <table:importExcel url="${ctx}/project/projectEvaluationRecord/import"></table:importExcel><!-- 导入按钮 -->
+ <shiro:hasPermission name="project:projectEvaluationRecord:export">
+ <table:exportExcel url="${ctx}/project/projectEvaluationRecord/export"></table:exportExcel><!-- 导出按钮 -->
+ <th class="sort-column clientId">中标单位</th>
+ <th class="sort-column bidsuccessMoney">中标金额</th>
+ <th class="sort-column duration">工期</th>
+ <th class="sort-column projectManager">中标项目经理</th>
+ <th class="sort-column openbidMime">开标时间</th>
+ <th class="sort-column openbidPlace">开标地点</th>
+ <th class="sort-column assessbidTime">评标时间</th>
+ <th class="sort-column assessbidPlace">评标地点</th>
+ <th class="sort-column projectId">项目主键</th>
+ <c:forEach items="${page.list}" var="projectEvaluationRecord">
+ <td> <input type="checkbox" id="${projectEvaluationRecord.id}" class="i-checks"></td>
+ <td><a href="javascript:void(0)" onclick="openDialogView('查看招标代理评价记录表', '${ctx}/project/projectEvaluationRecord/form?id=${projectEvaluationRecord.id}','80%','80%')">
+ ${projectEvaluationRecord.remarks}
+ ${projectEvaluationRecord.clientId}
+ ${projectEvaluationRecord.bidsuccessMoney}
+ ${projectEvaluationRecord.duration}
+ ${projectEvaluationRecord.projectManager}
+ <fmt:formatDate value="${projectEvaluationRecord.openbidMime}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ ${projectEvaluationRecord.openbidPlace}
+ <fmt:formatDate value="${projectEvaluationRecord.assessbidTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
+ ${projectEvaluationRecord.assessbidPlace}
+ ${projectEvaluationRecord.projectId}
+ <shiro:hasPermission name="project:projectEvaluationRecord:view">
+ <a href="javascript:void(0)" onclick="openDialogView('查看招标代理评价记录表', '${ctx}/project/projectEvaluationRecord/form?id=${projectEvaluationRecord.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+ <a href="javascript:void(0)" onclick="openDialog('修改招标代理评价记录表', '${ctx}/project/projectEvaluationRecord/form?id=${projectEvaluationRecord.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+ <a href="${ctx}/project/projectEvaluationRecord/delete?id=${projectEvaluationRecord.id}" onclick="return confirmx('确认要删除该招标代理评价记录表吗?', this.href)" class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
@@ -0,0 +1,94 @@
+ <title>项目管理</title>
+ if(${disabled.length()>0}){$('input,textarea,select').attr("disabled","disabled");}
+ <form:form id="inputForm" modelAttribute="project" action="${ctx}/project/project/save" method="post" class="form-horizontal">
+ <td class="width-15 active"><label class="pull-right">合同信息:</label></td>
+ 合同名称*<sys:gridselect url="${ctx}/project/project/selectcontractInfo"
+ id="contractInfo" name="contractInfo" value="${project.contractInfo.name}"
+ title="选择合同信息" cssClass="form-control required"
+ labelName="contractInfo.name" labelValue="${project.contractInfo.name}"
+ fieldLabels="name" fieldKeys="name"
+ searchLabel="name" searchKey="name" ></sys:gridselect>
+ 合同编号*<input value="${selectedContractInfoId}" htmlEscape="false" class="form-control input-append"/>
+ <td class="width-15 active"><label class="pull-right">项目信息:</label></td>
+ <td class="width-15 active"><label class="pull-right">项目概况:</label></td>
+ <sys:gridselect url="${ctx}/project/project/selectprojectGeneral" id="projectGeneral" name="projectGeneral" value="${project.projectGeneral.id}" title="选择项目概况" labelName="projectGeneral.id"
+ labelValue="${project.projectGeneral.id}" cssClass="form-control required" fieldLabels="name" fieldKeys="name" searchLabel="id" searchKey="id" ></sys:gridselect>
+ <td class="width-15 active"><label class="pull-right">投标单位:</label></td>
+ <sys:gridselect url="${ctx}/project/project/selectworkClientLinkman" id="workClientLinkman" name="workClientLinkman" value="${project.workClientLinkman.id}" title="选择投标单位" labelName="workClientLinkman.id"
+ labelValue="${project.workClientLinkman.id}" cssClass="form-control required" fieldLabels="name" fieldKeys="name" searchLabel="id" searchKey="id" ></sys:gridselect>
+ <td class="width-15 active"><label class="pull-right">评标记录:</label></td>
+ <sys:gridselect url="${ctx}/project/project/selectprojectEvaluationRecord" id="projectEvaluationRecord" name="projectEvaluationRecord" value="${project.projectEvaluationRecord.id}" title="选择评标记录" labelName="projectEvaluationRecord.id"
+ labelValue="${project.projectEvaluationRecord.id}" cssClass="form-control required" fieldLabels="name" fieldKeys="name" searchLabel="id" searchKey="id" ></sys:gridselect>
+ <td class="width-15 active"><label class="pull-right">项目组信息:</label></td>
+ <sys:gridselect url="${ctx}/project/project/selectworkprojectgroup" id="workprojectgroup" name="workprojectgroup" value="${project.workprojectgroup.id}" title="选择项目组信息" labelName="workprojectgroup.id"
+ labelValue="${project.workprojectgroup.id}" cssClass="form-control required" fieldLabels="name" fieldKeys="name" searchLabel="id" searchKey="id" ></sys:gridselect>
+ <h5>项目列表 </h5>
+ <form:form id="searchForm" modelAttribute="project" action="${ctx}/project/project/" method="post" class="form-inline">
+ <span>项目状态:</span>
+ <form:options items="${fns:getDictList('project_status')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+ <span>项目编号:</span>
+ <form:input path="projectNumber" htmlEscape="false" maxlength="64" class=" form-control input-sm"/>
+ <form:input path="projectName" htmlEscape="false" maxlength="288" class=" form-control input-sm"/>
+<%-- <span>招标方式:</span>
+ <form:select path="tendereeType" class="form-control m-b">
+ <form:options items="${fns:getDictList('tenderee_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+ <shiro:hasPermission name="project:project:add">
+ <table:addRow url="${ctx}/project/project/form" title="项目"></table:addRow><!-- 增加按钮 -->
+ <shiro:hasPermission name="project:project:edit">
+ <table:editRow url="${ctx}/project/project/form" title="项目" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+ <shiro:hasPermission name="project:project:del">
+ <table:delRow url="${ctx}/project/project/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+ <shiro:hasPermission name="project:project:import">
+ <table:importExcel url="${ctx}/project/project/import"></table:importExcel><!-- 导入按钮 -->
+ <shiro:hasPermission name="project:project:export">
+ <table:exportExcel url="${ctx}/project/project/export"></table:exportExcel><!-- 导出按钮 -->
+ <th class="sort-column projectNumber">项目编号</th>
+ <th class="sort-column projectName">项目名称</th>
+ <th class="sort-column contractInfo">客户单位</th>
+ <th class="sort-column createDate">登记日期</th>
+ <th class="sort-column master">项目负责人</th>
+ <th class="sort-column status">项目状态</th>
+ <c:forEach items="${page.list}" var="project">
+ <td> <input type="checkbox" id="${project.id}" class="i-checks"></td>
+ ${project.projectNumber}
+ ${project.projectName}
+ ${project.contractInfo.client.name}
+ <fmt:formatDate value="${project.createDate}" pattern="yyyy.MM.dd"/>
+ ${project.workprojectgroup.leader}
+ <c:if test="${project.status == 0}">项目登记</c:if>
+ <c:if test="${project.status == 1}">项目评标</c:if>
+ <c:if test="${project.status == 2}">项目归档</c:if>
+ <shiro:hasPermission name="project:project:view">
+ <a href="javascript:void(0)" onclick="openDialogView('查看项目', '${ctx}/project/project/form?id=${project.id}&readAttr=disabled','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+ <a href="javascript:void(0)" onclick="openDialog('修改项目', '${ctx}/project/project/form?id=${project.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+ <a href="${ctx}/project/project/delete?id=${project.id}" onclick="return confirmx('确认要删除该项目吗?', this.href)" class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
@@ -0,0 +1,110 @@
+ <title>项目概况管理</title>
+ <form:form id="inputForm" modelAttribute="projectgeneral" action="${ctx}/project/projectgeneral/save" method="post" class="form-horizontal">
+ <td class="width-15 active"><label class="pull-right">需求部门:</label></td>
+ <form:input path="demandDepartment" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">工程类型(0机电、1房建、2市政、3交通、4政府采购、5其他):</label></td>
+ <form:select path="projectType" class="form-control ">
+ <td class="width-15 active"><label class="pull-right">建设地点:</label></td>
+ <form:input path="constructionSite" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">监督单位:</label></td>
+ <form:input path="supervisionUnit" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">服务分类:</label></td>
+ <form:input path="serviceClassification" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">资金属性:</label></td>
+ <form:input path="fundAttribute" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">资产性质:</label></td>
+ <form:input path="assetNature" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">招标范围:</label></td>
+ <form:input path="tenderScope" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">标底或招标控制价(元):</label></td>
+ <form:input path="bidPriceOrBidControlPriceMoney" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">评标委员会负责人:</label></td>
+ <form:input path="bidEvaluationOfficer" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">与评标活动有关工作人员:</label></td>
+ <form:input path="bidEvaluationStaff" htmlEscape="false" class="form-control "/>
+ <h5>项目概况列表 </h5>
+ <form:form id="searchForm" modelAttribute="projectgeneral" action="${ctx}/project/projectgeneral/" method="post" class="form-inline">
+ <shiro:hasPermission name="project:projectgeneral:add">
+ <table:addRow url="${ctx}/project/projectgeneral/form" title="项目概况"></table:addRow><!-- 增加按钮 -->
+ <shiro:hasPermission name="project:projectgeneral:edit">
+ <table:editRow url="${ctx}/project/projectgeneral/form" title="项目概况" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+ <shiro:hasPermission name="project:projectgeneral:del">
+ <table:delRow url="${ctx}/project/projectgeneral/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+ <shiro:hasPermission name="project:projectgeneral:import">
+ <table:importExcel url="${ctx}/project/projectgeneral/import"></table:importExcel><!-- 导入按钮 -->
+ <shiro:hasPermission name="project:projectgeneral:export">
+ <table:exportExcel url="${ctx}/project/projectgeneral/export"></table:exportExcel><!-- 导出按钮 -->
+ <th class="sort-column demandDepartment">需求部门</th>
+ <th class="sort-column projectType">工程类型(0机电、1房建、2市政、3交通、4政府采购、5其他)</th>
+ <th class="sort-column constructionSite">建设地点</th>
+ <th class="sort-column supervisionUnit">监督单位</th>
+ <th class="sort-column serviceClassification">服务分类</th>
+ <th class="sort-column fundAttribute">资金属性</th>
+ <th class="sort-column assetNature">资产性质</th>
+ <th class="sort-column tenderScope">招标范围</th>
+ <th class="sort-column bidPriceOrBidControlPriceMoney">标底或招标控制价(元)</th>
+ <th class="sort-column bidEvaluationOfficer">评标委员会负责人</th>
+ <th class="sort-column bidEvaluationStaff">与评标活动有关工作人员</th>
+ <c:forEach items="${page.list}" var="projectgeneral">
+ <td> <input type="checkbox" id="${projectgeneral.id}" class="i-checks"></td>
+ <td><a href="javascript:void(0)" onclick="openDialogView('查看项目概况', '${ctx}/project/projectgeneral/form?id=${projectgeneral.id}','80%','80%')">
+ ${projectgeneral.remarks}
+ ${projectgeneral.demandDepartment}
+ ${fns:getDictLabel(projectgeneral.projectType, '', '')}
+ ${projectgeneral.constructionSite}
+ ${projectgeneral.supervisionUnit}
+ ${projectgeneral.serviceClassification}
+ ${projectgeneral.fundAttribute}
+ ${projectgeneral.assetNature}
+ ${projectgeneral.tenderScope}
+ ${projectgeneral.bidPriceOrBidControlPriceMoney}
+ ${projectgeneral.bidEvaluationOfficer}
+ ${projectgeneral.bidEvaluationStaff}
+ <shiro:hasPermission name="project:projectgeneral:view">
+ <a href="javascript:void(0)" onclick="openDialogView('查看项目概况', '${ctx}/project/projectgeneral/form?id=${projectgeneral.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+ <a href="javascript:void(0)" onclick="openDialog('修改项目概况', '${ctx}/project/projectgeneral/form?id=${projectgeneral.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+ <a href="${ctx}/project/projectgeneral/delete?id=${projectgeneral.id}" onclick="return confirmx('确认要删除该项目概况吗?', this.href)" class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
@@ -0,0 +1,75 @@
+ <title>项目组信息表管理</title>
+ <form:form id="inputForm" modelAttribute="workprojectgroup" action="${ctx}/project/workprojectgroup/save" method="post" class="form-horizontal">
+ <td class="width-15 active"><label class="pull-right">项目组负责人:</label></td>
+ <form:input path="leader" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">项目组成员:</label></td>
+ <form:input path="memberIds" htmlEscape="false" class="form-control "/>
+ <td class="width-15 active"><label class="pull-right">清单编制:</label></td>
+ <form:input path="listPreparation" htmlEscape="false" class="form-control "/>
@@ -0,0 +1,138 @@
+ <h5>项目组信息表列表 </h5>
+ <form:form id="searchForm" modelAttribute="workprojectgroup" action="${ctx}/project/workprojectgroup/" method="post" class="form-inline">
+ <shiro:hasPermission name="project:workprojectgroup:add">
+ <table:addRow url="${ctx}/project/workprojectgroup/form" title="项目组信息表"></table:addRow><!-- 增加按钮 -->
+ <shiro:hasPermission name="project:workprojectgroup:edit">
+ <table:editRow url="${ctx}/project/workprojectgroup/form" title="项目组信息表" id="contentTable"></table:editRow><!-- 编辑按钮 -->
+ <shiro:hasPermission name="project:workprojectgroup:del">
+ <table:delRow url="${ctx}/project/workprojectgroup/deleteAll" id="contentTable"></table:delRow><!-- 删除按钮 -->
+ <shiro:hasPermission name="project:workprojectgroup:import">
+ <table:importExcel url="${ctx}/project/workprojectgroup/import"></table:importExcel><!-- 导入按钮 -->
+ <shiro:hasPermission name="project:workprojectgroup:export">
+ <table:exportExcel url="${ctx}/project/workprojectgroup/export"></table:exportExcel><!-- 导出按钮 -->
+ <th class="sort-column leader">项目组负责人</th>
+ <th class="sort-column memberIds">项目组成员</th>
+ <th class="sort-column listPreparation">清单编制</th>
+ <c:forEach items="${page.list}" var="workprojectgroup">
+ <td> <input type="checkbox" id="${workprojectgroup.id}" class="i-checks"></td>
+ <td><a href="javascript:void(0)" onclick="openDialogView('查看项目组信息表', '${ctx}/project/workprojectgroup/form?id=${workprojectgroup.id}','80%','80%')">
+ ${workprojectgroup.remarks}
+ ${workprojectgroup.leader}
+ ${workprojectgroup.memberIds}
+ ${workprojectgroup.listPreparation}
+ ${workprojectgroup.projectId}
+ <shiro:hasPermission name="project:workprojectgroup:view">
+ <a href="javascript:void(0)" onclick="openDialogView('查看项目组信息表', '${ctx}/project/workprojectgroup/form?id=${workprojectgroup.id}','80%','80%')" class="btn btn-info btn-xs" ><i class="fa fa-search-plus"></i> 查看</a>
+ <a href="javascript:void(0)" onclick="openDialog('修改项目组信息表', '${ctx}/project/workprojectgroup/form?id=${workprojectgroup.id}','80%','80%')" class="btn btn-success btn-xs" ><i class="fa fa-edit"></i> 修改</a>
+ <a href="${ctx}/project/workprojectgroup/delete?id=${workprojectgroup.id}" onclick="return confirmx('确认要删除该项目组信息表吗?', this.href)" class="btn btn-danger btn-xs"><i class="fa fa-trash"></i> 删除</a>
@@ -0,0 +1,218 @@
+ <title>依据性资料管理</title>
+ <link href="${ctxStatic}/bootstrap-select-1.12.4/css/bootstrap-select.min.css" rel="stylesheet" />
+ <script src="${ctxStatic}/bootstrap-select-1.12.4/js/bootstrap-select.min.js"></script>
+ if (${not empty projectcontentinfo.projectBasedData.type}){
+ $("#type").attr("readOnly","true");
+ elem: '#provideDate', //目标元素。由于laydate.js封装了一个轻量级的选择器引擎,因此elem还允许你传入class、tag但必须按照这种方式 '#id .class'
+ $('#type').selectpicker('val',arr);
+ var attachmentFlag = "84";
+ var storeAs = "attachment-file/basedData/"+timestamp+"/"+file['name'];
+ multipartUploadWithSts(storeAs, file,attachmentId,attachmentFlag,uploadPath,divId,"0");}
+ <div class="container${container}">
+ <form:form id="inputForm" modelAttribute="projectcontentinfo" action="${ctx}/projectcontentinfo/projectcontentinfo/save?view=basedData" method="post" class="form-horizontal">
+ <form:hidden path="edit"/>
+ <form:hidden path="parentIds"/>
+ <form:hidden path="projectBasedData.id"/>
+ <div class="form-group layui-row first lw12">
+ <div class="form-group-label"><h2>基本信息</h2></div>
+ <label class="layui-form-label"><span class="require-item">*</span>资料类别:</label>
+ <div class="layui-input-block width-icon">
+ <c:when test="${empty projectcontentinfo.projectBasedData.type}">
+ <select name="projectBasedData.type" id="type" class="form-control simple-select required" >
+ <option value=""></option>
+ <c:forEach items="${fns:getDictList('project_document_type')}" var="item">
+ <option value="${item.value}">${item.label}</option>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${fns:getDictLabel(projectcontentinfo.projectBasedData.type, 'project_document_type', '')}"/>
+ <input id="type" name="projectBasedData.type" htmlEscape="false" type="hidden" readonly="true" class="form-control layui-input" value="${projectcontentinfo.projectBasedData.type}"/>
+ <label class="layui-form-label"><span class="require-item">*</span>资料编号:</label>
+ <form:input path="projectBasedData.number" htmlEscape="false" readonly="true" class="form-control layui-input "/>
+ <label class="layui-form-label"><span class="require-item">*</span>资料名称:</label>
+ <form:input path="projectBasedData.name" htmlEscape="false" class="form-control layui-input required"/>
+ <label class="layui-form-label">资料提供者:</label>
+ <form:input path="projectBasedData.provider" htmlEscape="false" class="form-control layui-input"/>
+ <label class="layui-form-label"><span class="require-item">*</span>提供日期:</label>
+ <input id="provideDate" name="projectBasedData.provideDate" type="text" htmlEscape="false" readonly="true" class="laydate-icondate form-control layer-date required layui-input laydate-icon"
+ value="<fmt:formatDate value="${projectcontentinfo.projectBasedData.provideDate}" pattern="yyyy-MM-dd"/>"/>
+ <input id="uploadDate" name="projectBasedData.uploadDate" htmlEscape="false" readonly="true" class="laydate-icondate form-control layer-date required layui-input laydate-icon"
+ value="<fmt:formatDate value="${projectcontentinfo.projectBasedData.uploadDate}" pattern="yyyy-MM-dd"/>"/>
+ <label class="layui-form-label">上传人:</label>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectcontentinfo.projectBasedData.uploadUser.name}"/>
+ <form:input path="projectBasedData.uploadUser.id" type="hidden" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+ <c:forEach items="${projectcontentinfo.projectBasedData.workAttachments}" var = "workClientAttachment" varStatus="status">
+ <a href="javascript:void(0)" onclick="deleteFileFromAliyun(this,'${ctx}/sys/workattachment/deleteFileFromAliyun?url=${workClientAttachment.url}&id=${workClientAttachment.id}&type=2','addFile','')" class="op-btn op-btn-delete" ><i class="fa fa-trash"></i> 删除</a>
+ <%--<c:if test="${not empty projectcontentinfo.infoId}">--%>
+ <%--<div class="pull-right">--%>
+ <%--<button id="btnSubmit" class="btn btn-primary btn-rounded btn-outline btn-sm" type="submit" onclick="$('#edit').val('edit')"><i class="fa fa-chevron-up"></i> 提 交</button>--%>
+ <%--</div>--%>
+ <%--</c:if>--%>
+ <title>依据性资料</title>
+ $('#moresees').slideUp(0,resizeListWindow3);
+ $('#moresees').slideDown(0,resizeListWindow3);
+ btn2: function(index){
+ // 确认对话框
+ function confirmxRefresh(mess, href){
+ top.layer.confirm(mess, {icon: 3, title:'系统提示'}, function(index){
+ //do something
+ if (typeof href == 'function') {
+ href();
+ resetTip(); //loading();
+ url:href,
+ if(data.status){
+ parent.layer.msg('删除成功',{icon:1});
+ parent.layer.msg('删除失败',{icon:2});
+ parent.refreshTrees();
+ location = '${ctx}/projectcontentinfo/projectcontentinfo/list?project.id=${projectRecords.id}';
+ top.layer.close(index);
+ <div class="contentShadow shadowB full-width">
+ <div class=" layui-row" id="queryDiv">
+ <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="parentIds" name="parentIds" type="hidden" value="${parentIds}"/>
+ <div class="commonQuery lw6">
+ <label class="layui-form-label">资料名称:</label>
+ <form:input path="projectBasedData.name" htmlEscape="false" maxlength="64" class=" form-control layui-input"/>
+ <input id="beginDate" placeholder="开始时间" name="projectBasedData.startDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+ value="<fmt:formatDate value="${projectcontentinfo.projectBasedData.startDate}" pattern="yyyy-MM-dd"/>"/>
+ <input id="endDate" placeholder="结束时间" name="projectBasedData.endDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+ value="<fmt:formatDate value="${projectcontentinfo.projectBasedData.endDate}" pattern="yyyy-MM-dd"/>"/>
+ <c:if test="${empty change}">
+ <div id="moresees" style="clear:both;display:none;" class="lw6">
+ <label class="layui-form-label">资料类别:</label>
+ <form:input path="projectBasedData.type" htmlEscape="false" maxlength="64" class=" form-control layui-input"/>
+ <label class="layui-form-label">资料编号:</label>
+ <form:input path="projectBasedData.number" htmlEscape="false" maxlength="255" class=" form-control layui-input"/>
+ <form:input path="projectBasedData.provider" htmlEscape="false" maxlength="255" class=" form-control layui-input"/>
+ <label class="layui-form-label">委托方:</label>
+ <sys:treeselect id="uploadUser" name="projectBasedData.uploadUser.id" value="${projectcontentinfo.projectBasedData.uploadUser.id}" labelName="projectBasedData.uploadUser.name" labelValue="${projectcontentinfo.projectBasedData.uploadUser.name}"
+ title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/></div>
+ <div class="contentShadow shadowT full-width fl">
+ <div class="layui-form contentDetails">
+ <a href="javascript:void(0)" onclick="openDialogre('新增依据性资料', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=basedData&dictType=${dictType}&id=${id}&parentIds=${parentIds}','95%','95%',false,'inputForm')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增</a>
+ ,{field:'num',align:'center',width:150,title: '资料编号',templet:function(d){
+ return "<span title='"+ d.num +"'>" + d.num + "</span>";
+ ,{field:'name',align:'center',minWidth:180, title: '资料名称',templet:function(d){
+ var xml = "<a class=\"attention-info\" href=\"javascript:void(0)\" onclick=\"openDialogView('查看依据性资料', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=basedDataView&dictType=" + d.dictType +"&id="+ d.id + "&parentIds=" + d.pid + "&infoId=" + d.bid + "','95%','95%')\">" +
+ "<span title=" + d.name + ">" + d.name + "</span></a>";
+ ,{field:'type',align:'center', title: '资料类别', width:120, sort: true,templet:function(d){
+ return "<span title='"+ d.type +"'>" + d.type + "</span>";
+ ,{field:'provider',align:'center', title: '资料提供者', width:100,templet:function(d){
+ return "<span title='"+ d.provider +"'>" + d.provider + "</span>";
+ ,{field:'uploader', align:'center',title: '上传人', width:80,templet:function(d){
+ return "<span title='"+ d.uploader +"'>" + d.uploader + "</span>";
+ ,{field:'uploadDate', align:'center',title: '上传日期', width:80}
+ xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogre('修改依据性资料', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=basedData&dictType="+ d.dictType + "&id=" + d.id + "&parentIds="+ d.pid + "&projectBasedData.id=" + d.bid + "','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+ xml +="<a href=\"${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId=" + d.bid + "&id=" + d.id + "&type=1\" onclick=\"return confirmxRefresh('确认要删除该依据性资料吗?', this.href)\" class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 删除</a>";
+ <c:forEach items="${page.list}" var="projectBasedData" varStatus="index">
+ ,"bid":"${projectBasedData.id}"
+ ,"dictType":"${dictType}"
+ ,"id":"${id}"
+ ,"pid":"${parentIds}"
+ ,"num":"${projectBasedData.number}"
+ ,"name":"<c:out value="${projectBasedData.name}" escapeXml="true"/>"
+ ,"type":"${fns:getDictLabel(projectBasedData.type, 'project_document_type', '')}"
+ ,"provider":"${projectBasedData.provider}"
+ ,"uploader":"<c:out value="${projectBasedData.uploadUser.name}" escapeXml="true"/>"
+ ,"uploadDate":"<fmt:formatDate value="${projectBasedData.uploadDate}" pattern="yyyy-MM-dd"/>"
+ <c:if test="${projectBasedData.createBy.id eq fns:getUser().id && empty change}">,"canedit":"1"</c:if>
+ $("a").on("click",addLinkVisied);
+ resizeListWindow3();
+ <div class="container${container} view-form">
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectcontentinfo.projectBasedData.number}"/>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectcontentinfo.projectBasedData.name}"/>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectcontentinfo.projectBasedData.provider}"/>
+ <label class="layui-form-label">提供日期:</label>
@@ -0,0 +1,314 @@
+ <title>报告明细一览表</title>
+ <%--<script src="${ctxStatic}/layer-v2.3/laydate/laydate.js"></script>--%>
+ function reset() {
+ $("#searchForm").resetForm();
+ <form:form id="searchForm" modelAttribute="projectReportData" action="${ctx}/projectcontentinfo/projectReportData/list" method="post" class="form-inline">
+ <div class="commonQuery lw9">
+ <label class="layui-form-label">报告名称:</label>
+ <label class="layui-form-label">报告编号:</label>
+ <form:input path="number" htmlEscape="false" maxlength="255" class=" form-control layui-input"/>
+ <div id="moresees" style="clear:both;display:none;" class="lw9">
+ <label class="layui-form-label">工作内容类型:</label>
+ <form:select path="type" htmlEscape="false" class="form-control simple-select">
+ <optgroup label="决策阶段"/>
+ <form:options items="${fns:getContentTypeList('1')}" itemLabel="typeName" itemValue="typeId"></form:options>
+ <optgroup label="设计阶段"/>
+ <form:options items="${fns:getContentTypeList('2')}" itemLabel="typeName" itemValue="typeId"></form:options>
+ <optgroup label="发承包阶段"/>
+ <form:options items="${fns:getContentTypeList('3')}" itemLabel="typeName" itemValue="typeId"></form:options>
+ <optgroup label="实施阶段"/>
+ <form:options items="${fns:getContentTypeList('4')}" itemLabel="typeName" itemValue="typeId"></form:options>
+ <optgroup label="竣工阶段"/>
+ <form:options items="${fns:getContentTypeList('5')}" itemLabel="typeName" itemValue="typeId"></form:options>
+ <optgroup label="运营阶段"/>
+ <form:options items="${fns:getContentTypeList('6')}" itemLabel="typeName" itemValue="typeId"></form:options>
+ <label class="layui-form-label">成果类型:</label>
+ <form:select path="achievementType" class="form-control simple-select">
+ <form:options items="${fns:getMainDictList('achievement_type')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+ <label class="layui-form-label">签字造价师1:</label>
+ <sys:treeselect id="signCostOne" name="signCostOne.id" value="${projectReportData.signCostOne.id}" labelName="signCostOne.name" labelValue="${projectReportData.signCostOne.name}"
+ title="签字造价师1" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+ <label class="layui-form-label">签字造价师2:</label>
+ <sys:treeselect id="signCostTwo" name="signCostTwo.id" value="${projectReportData.signCostTwo.id}" labelName="signCostTwo.name" labelValue="${projectReportData.signCostTwo.name}"
+ title="签字造价师2" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+ <label class="layui-form-label">复核标准:</label>
+ <form:select path="reviewStandard" class="form-control simple-select">
+ <form:options items="${fns:getDictList('reviewStandard')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+ <label class="layui-form-label">报告状态:</label>
+ <form:select path="status" class="form-control simple-select">
+ <form:options items="${fns:getDictList('audit_state')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+ <label class="layui-form-label">报告日期:</label>
+ <input class="form-control layer-date laydate-icon layui-input laydate-icondate" id="startDate" name="startDate" value="<fmt:formatDate value="${projectReportData.startDate}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <input class="form-control layer-date laydate-icon layui-input laydate-icondate" id="endDate" name="endDate" value="<fmt:formatDate value="${projectReportData.endDate}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <label class="layui-form-label">负责人:</label>
+ <sys:treeselect id="master" name="master.id" value="${projectReportData.master.id}" labelName="master.name" labelValue="${projectReportData.master.name}"
+ title="负责人" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+ <label class="layui-form-label">归属部门:</label>
+ <sys:treeselect id="office" name="officeId" value="${projectReportData.officeId}" labelName="officeName" labelValue="${projectReportData.officeName}"
+ title="归属部门" url="/sys/office/treeData?type=2" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+ <input class="form-control layer-date laydate-icon layui-input laydate-icondate" id="createStartDate" name="createStartDate" value="<fmt:formatDate value="${projectReportData.createStartDate}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <input class="form-control layer-date laydate-icon layui-input laydate-icondate" id="createEndDate" name="createEndDate" value="<fmt:formatDate value="${projectReportData.createEndDate}" pattern="yyyy-MM-dd"/>" onclick="laydate({istime: false, format: 'YYYY-MM-DD'})">
+ <label class="layui-form-label">所属项目:</label>
+ <form:input path="project.projectName" htmlEscape="false" maxlength="255" class=" form-control layui-input"/>
+ <label class="layui-form-label">项目负责人:</label>
+ <sys:treeselect id="projectMaster" name="projectMasterId" value="${projectReportData.projectMasterId}" labelName="projectMaster" labelValue="${projectReportData.projectMaster}"
+ title="项目负责人" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+ <label class="layui-form-label">合同编号:</label>
+ <form:input path="contractNum" htmlEscape="false" maxlength="255" class=" form-control layui-input"/>
+ <label class="layui-form-label">主委托方:</label>
+ <form:input path="clientName" htmlEscape="false" maxlength="255" class=" form-control layui-input"/>
+ <shiro:hasPermission name="projectcontentinfo:projectReportData:export">
+ <table:exportExcel url="${ctx}/projectcontentinfo/projectReportData/export"></table:exportExcel><!-- 导出按钮 -->
+ <table class="oa-table layui-table" id="contentTable1"></table>
+ ,elem: '#contentTable1'
+ {field:'index',align:'center',fixed: 'left', title: '序号',width:40}
+ ,{field:'number',align:'center',fixed: true, title: '报告编号',width:200,templet:function(d){
+ return "<a class=\"attention-info\" href=\"#\" onclick=\"openDialogView('查看报告', '${ctx}/projectcontentinfo/projectReportData/form?id=" + d.id + "','95%', '95%')\">" + d.number + "</a>";
+ ,{field:'name',align:'center', title: '报告名称',width:200,templet:function(d){
+ return "<a class=\"attention-info\" href=\"#\" onclick=\"openDialogView('查看报告', '${ctx}/projectcontentinfo/projectReportData/form?id=" + d.id + "','95%', '95%')\">" + d.name + "</a>";
+ ,{field:'type', align:'center',title: '工作类型',width:200}
+ ,{field:'achievementType', align:'center',title: '成果类型',width:200}
+ /*,{field:'signCostOneName', align:'center',title: '签字造价师1',width:200}
+ ,{field:'signCostTwoName', align:'center',title: '签字造价师2',width:200}*/
+ ,{field:'reviewStandard', align:'center',title: '复核标准',width:200}
+ ,{field:'status', align:'center',title: '报告状态',width:200}
+ ,{field:'reportDate', align:'center',title: '报告日期',width:200}
+ ,{field:'fileStatus', align:'center',title: '归档状态',width:200}
+ ,{field:'master', align:'center',title: '负责人',width:200}
+ ,{field:'officeId', align:'center',title: '所属部门',width:200}
+ ,{field:'createDate', align:'center',title: '创建日期',width:200}
+ ,{field:'projectName', align:'center',title: '所属项目',width:200}
+ ,{field:'projectMaster', align:'center',title: '项目负责人',width:200}
+ ,{field:'contractNum', align:'center',title: '合同编号',width:200}
+ ,{field:'client', align:'center',title: '主委托方',width:200}
+ <c:forEach items="${page.list}" var="projectReportData" varStatus="index">
+ "id":"${projectReportData.id}",
+ ,"number":"${projectReportData.number}"
+ ,"name":"${projectReportData.name}"
+ ,"type":"${fns:getContentTypeName(projectReportData.type,"")}"
+ ,"achievementType":"${fns:getMainDictLabel(projectReportData.achievementType, 'achievement_type', '')}"
+ /*,"signCostOneName":"${projectReportData.signCostOne.name}"
+ ,"signCostTwoName":"${projectReportData.signCostTwo.name}"*/
+ ,"reviewStandard":"${fns:getDictLabel(projectReportData.reviewStandard, 'reviewStandard', '')}"
+ ,"status":"${fns:getDictLabel(projectReportData.status, 'audit_state', '')}"
+ ,"reportDate":"<fmt:formatDate value="${projectReportData.reportDate}" pattern="yyyy-MM-dd"/>"
+ ,"fileStatus":"${fns:getDictLabel(projectReportData.fileStatus, 'record_state', '')}"
+ ,"master":"${projectReportData.master.name}"
+ ,"officeId":"${projectReportData.officeName}"
+ ,"createDate":"<fmt:formatDate value="${projectReportData.createDate}" pattern="yyyy-MM-dd HH:mm:ss"/>"
+ ,"projectName":"${projectReportData.project.projectName}"
+ ,"projectMaster":"${projectReportData.projectMaster}"
+ ,"contractNum":"${projectReportData.contractNum}"
+ ,"client":"${projectReportData.clientName}"
+ resizeListTable();/*消除由于有竖向滚动条造成table出现横向滚动条*/
@@ -0,0 +1,247 @@
+ <title>合同归档管理</title>
+ parent.layer.msg("信息未填写完整!", {icon: 5});
+ <form:form id="inputForm" modelAttribute="projectReportRecord" action="${ctx}/projectcontentinfo/projectReportRecord/auditSave" method="post" class="form-horizontal">
+ <form:hidden path="numberCount"/>
+ <form:hidden id="reportId" path="report.id"/>
+ <form:hidden path="createBy.id"/>
+ <div class="form-group layui-row first lw9">
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectReportRecord.report.number}"/>
+ <label class="layui-form-label">归档申请编号:</label>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectReportRecord.recordNum}"/>
+ <label class="form-status">
+ <c:when test="${not empty projectReportRecord.status}">${fns:getDictLabel(projectReportRecord.status, 'audit_record_state', '')}
+ <c:otherwise>新添</c:otherwise>
+ </c:choose></label>
+ <label class="layui-form-label">签字造价师一:</label>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectReportRecord.signCostOne.name}"/>
+ <label class="layui-form-label">签字造价师二:</label>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectReportRecord.signCostTwo.name}"/>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectReportRecord.report.name}"/>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${projectReportRecord.report.reportDate}" pattern="yyyy-MM-dd"/>"/>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectReportRecord.contractNum}"/>
+ <label class="layui-form-label">合同名称:</label>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectReportRecord.contractName}"/>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectReportRecord.clientName}"/>
+ <label class="layui-form-label">项目编号:</label>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectReportRecord.projectNum}"/>
+ <label class="layui-form-label">项目名称:</label>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectReportRecord.projectName}"/>
+ <label class="layui-form-label">归档申请人:</label>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectReportRecord.createBy.name}"/>
+ <label class="layui-form-label">申请日期:</label>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${projectReportRecord.createDate}" pattern="yyyy-MM-dd"/>"/>
+ <label class="layui-form-label">档案号:</label>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectReportRecord.fileNum}"/>
+ <label class="layui-form-label">档案名称:</label>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectReportRecord.name}"/>
+ <label class="layui-form-label">归档时间:</label>
+ <input id="recordDate" name="recordDate" htmlEscape="false" readonly="true" class="form-control layui-input" value="<fmt:formatDate value="${projectReportRecord.createDate}" pattern="yyyy-MM-dd"/>"/>
+ <label class="layui-form-label">说明:</label>
+ <textarea path="remarks" htmlEscape="false" readonly="true" rows="3" maxlength="255" class="form-control" >${projectReportRecord.remarks}</textarea>
+ <c:forEach items="${projectReportRecord.workAttachments}" var = "workClientAttachment" varStatus="status">
+ <act:flowChart procInsId="${projectReportRecord.act.procInsId}"/>
+ <act:histoicFlow procInsId="${projectReportRecord.act.procInsId}"/>
@@ -0,0 +1,292 @@
+ label.error:nth-child(2){
+ if(obj == 2){
+ $("#inputForm").attr("action","${ctx}/projectcontentinfo/projectReportRecord/store");
+ $("#inputForm").attr("action","${ctx}/projectcontentinfo/projectReportRecord/save");
+ var list = "${projectReportRecord.workAttachments}";
+ var attachmentFlag = "99";
+ var storeAs = "attachment-file/workContractRd/"+timestamp+"/"+file['name'];
+ function setValuee(obj){
+ $("#reportId").val(obj.id);
+ $("#reportnumber").val(obj.number);
+ $("#reportName").val(obj.name);
+ $("#reportDate").val(obj.reportDate);
+ $("#contractNum").val(obj.contractNum);
+ $("#contractName").val(obj.contractName);
+ $("#clientName").val(obj.clientName);
+ $("#projectName").val(obj.projectName);
+ $("#projectNum").val(obj.projectNum);
+ type:'post',
+ url:'${ctx}/projectcontentinfo/projectReportRecord/getNumber',
+ data:{
+ "reportId":obj.id
+ var numberCount = data.numberCount;
+ $("#recordNum").val(obj.number+"-"+numberCount);
+ $("#numberCount").val(numberCount);
+ <form:form id="inputForm" modelAttribute="projectReportRecord" method="post" class="form-horizontal">
+ <label class="layui-form-label"><span class="require-item">*</span>报告编号:</label>
+ <sys:gridselectreportrecord url="${ctx}/projectcontentinfo/projectReportData/selectreportData" id="report" name="report.id" value="${projectReportRecord.report.id}" title="选择报告" labelName="report.number"
+ labelValue="${projectReportRecord.report.number}" cssClass="form-control layui-input " fieldLabels="${fns:urlEncode('报告')}" fieldKeys="name" searchLabel="${fns:urlEncode('报告名称')}" searchKey="name" ></sys:gridselectreportrecord>
+ <label class="layui-form-label"><span class="require-item">*</span>归档申请编号:</label>
+ <form:input id="recordNum" path="recordNum" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
+ <label class="layui-form-label"><span class="require-item">*</span>签字造价师一:</label>
+ <sys:treeselect id="signCostOne" name="signCostOne.id" value="${projectReportRecord.signCostOne.id}" labelName="signCostOne.name" labelValue="${projectReportRecord.signCostOne.name}"
+ title="签字造价师一" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input required" allowClear="true" notAllowSelectParent="true"/></div>
+ <label class="layui-form-label"><span class="require-item">*</span>签字造价师二:</label>
+ <sys:treeselect id="signCostTwo" name="signCostTwo.id" value="${projectReportRecord.signCostTwo.id}" labelName="signCostTwo.name" labelValue="${projectReportRecord.signCostTwo.name}"
+ title="签字造价师二" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input required" allowClear="true" notAllowSelectParent="true"/>
+ <label class="layui-form-label"><span class="require-item">*</span>报告名称:</label>
+ <form:input id="reportName" path="report.name" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
+ <label class="layui-form-label"><span class="require-item">*</span>报告日期:</label>
+ <input id="reportDate" name="report.reportDate" htmlEscape="false" readonly="true" class="form-control layui-input required" value="<fmt:formatDate value="${projectReportRecord.report.reportDate}" pattern="yyyy-MM-dd"/>"/>
+ <%--<input class="laydate-icondate form-control layui-input layer-date laydate-icon" id="createDate" name="createDate" value="<fmt:formatDate value="${projectReportRecord.createDate}" pattern="yyyy-MM-dd"/>">--%>
+ <label class="layui-form-label"><span class="require-item">*</span>合同编号:</label>
+ <form:input id="contractNum" path="contractNum" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
+ <label class="layui-form-label"><span class="require-item">*</span>合同名称:</label>
+ <form:input id="contractName" path="contractName" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
+ <label class="layui-form-label"><span class="require-item">*</span>主委托方:</label>
+ <form:input id="clientName" path="clientName" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
+ <form:input id="projectNum" path="projectNum" htmlEscape="false" readonly="true" class="form-control layui-input"/>
+ <label class="layui-form-label"><span class="require-item">*</span>项目名称:</label>
+ <form:input id="projectName" path="projectName" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
+ <label class="layui-form-label"><span class="require-item">*</span>归档申请人:</label>
+ <form:input id="cBName" path="createBy.name" htmlEscape="false" readonly="true" class="form-control layui-input required"/>
+ <label class="layui-form-label"><span class="require-item">*</span>申请日期:</label>
+ <input id="createDate" name="createDate" htmlEscape="false" readonly="true" class="laydate-icondate form-control layer-date required layui-input laydate-icon"
+ value="<fmt:formatDate value="${projectReportRecord.createDate}" pattern="yyyy-MM-dd"/>"/>
+ <form:input path="fileNum" htmlEscape="false" class="form-control layui-input"/>
+ <form:input path="name" htmlEscape="false" class="form-control layui-input"/>
+ <input id="recordDate" name="recordDate" htmlEscape="false" readonly="true" class="laydate-icondate form-control layer-date required layui-input laydate-icon"
@@ -0,0 +1,331 @@
+ <title>报告归档管理</title>
+ btn: ['送审','暂存','关闭'],
+ //top.layer.close(index);//关闭对话框。
+ function openDialogreplay(title,url,width,height,target){
+ skin: 'two-btns',
+ btn: ['送审','关闭'],
+ yes: function(index, layero){
+ if(iframeWin.contentWindow.doSubmit() ){
+ //setTimeout(function(){top.layer.close(index)}, 100);//延时0.1秒,对应360 7.1版本bug
+ cancel: function(index){
+ <div class="layui-row ">
+ <form:form id="searchForm" modelAttribute="projectReportRecord" action="${ctx}/projectcontentinfo/projectReportRecord/" method="post" class="form-inline">
+ <form:input path="report.number" htmlEscape="false" maxlength="64" class=" form-control layui-input"/>
+ <input id="beginDate" placeholder="开始时间" name="startDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+ value="<fmt:formatDate value="${projectReportRecord.startDate}" pattern="yyyy-MM-dd"/>"/>
+ <input id="endDate" placeholder="结束时间" name="endDate" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+ value="<fmt:formatDate value="${projectReportRecord.endDate}" pattern="yyyy-MM-dd"/>"/>
+ <button id="searchReset" class="fixed-btn searchReset fr" onclick="reset()">重置</button>
+ <form:input path="report.name" htmlEscape="false" maxlength="64" class=" form-control layui-input"/>
+ <form:input path="recordNum" htmlEscape="false" maxlength="255" class=" form-control layui-input"/>
+ <form:input path="contractName" htmlEscape="false" maxlength="255" class=" form-control layui-input"/>
+ <sys:treeselect id="createBy" name="createBy.id" value="${projectReportRecord.createBy.id}" labelName="createBy.name" labelValue="${projectReportRecord.createBy.name}"
+ title="归档申请人" url="/sys/office/treeDataAll?type=3" cssClass="form-control layui-input" allowClear="true" notAllowSelectParent="true"/>
+ <label class="layui-form-label">归档申请状态:</label>
+ <form:options items="${fns:getDictList('audit_record_state')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+ <a href="javascript:void(0)" onclick="openDialogre('新增报告归档', '${ctx}/projectcontentinfo/projectReportRecord/form','95%','95%')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 添加</a>
+ <table:exportExcel url="${ctx}/projectcontentinfo/projectReportRecord/export"></table:exportExcel><!-- 导出按钮 -->
+ {field:'index',align:'center', title: '序号',width:60}
+ ,{field:'recordNum',align:'center', title: '归档申请编号',width:200,templet:function(d){
+ return "<a class=\"attention-info\" href=\"#\" onclick=\"openDialogView('查看项目', '${ctx}/projectcontentinfo/projectReportRecord/form?id=" + d.id + "&view=view','95%', '95%')\">" + d.recordNum + "</a>";
+ ,{field:'reportNum', align:'center',title: '报告编号',width:200}
+ ,{field:'reportName', align:'center',title: '报告名称',width:200}
+ ,{field:'contractName', align:'center',title: '合同名称',width:200}
+ ,{field:'clientName', align:'center',title: '主委托方',width:200}
+ ,{field:'createDate', align:'center',title: '申请日期',width:200}
+ ,{field:'createBy', align:'center',title: '归档申请人',width:200}
+ ,{ title: '状态', align:'center',sort: true, width:100,templet:function(d){
+ var st = getAuditRecordState(d.status)
+ var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/projectcontentinfo/projectReportRecord/getProcessOne?id=" + d.id + "','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+ ,{align:'center',title:"操作",width:200,templet:function(d){
+ if(d.cancancel != undefined && d.cancancel == "1")
+ xml += "<a href=\"${ctx}/projectcontentinfo/projectReportRecord/cancelInvalidate?id=" + d.id + "\" onclick=\"return confirmx('确认要强制撤回?', this.href)\" class=\"op-btn op-btn-cancel\"><i class=\"glyphicon glyphicon-share-alt\"></i> 撤回</a>";
+ xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogre('修改报告归档', '${ctx}/projectcontentinfo/projectReportRecord/form?id="+ d.id + "','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+ if(d.canedit2 != undefined && d.canedit2 == "1")
+ xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogreplay('修改报告归档', '${ctx}/projectcontentinfo/projectReportRecord/form?id="+ d.id + "&tabId=3','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+ if(d.canedit3 != undefined && d.canedit3 == "1")
+ xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogreplay('修改报告归档', '${ctx}/projectcontentinfo/projectReportRecord/form?id=" + d.id + "&tabId=4','95%','95%')\" class=\"op-btn op-btn-edit\" ><i class=\"fa fa-edit\"></i> 修改</a>";
+ xml +="<a href=\"${ctx}/projectcontentinfo/projectReportRecord/delete?id=" + d.id + "\" onclick=\"return confirmx('确认要删除该报告归档吗?', this.href)\" class=\"op-btn op-btn-delete\"><i class=\"fa fa-trash\"></i> 删除</a>";
+ <c:forEach items="${page.list}" var="projectReportRecord" varStatus="index">
+ "id":"${projectReportRecord.id}"
+ ,"index":"${index.index+1}"
+ ,"recordNum":"${projectReportRecord.recordNum}"
+ ,"reportNum":"${projectReportRecord.report.number}"
+ ,"reportName":"${projectReportRecord.report.name}"
+ ,"contractName":"${projectReportRecord.contractName}"
+ ,"contractNum":"${projectReportRecord.contractNum}"
+ ,"clientName":"${projectReportRecord.clientName}"
+ ,"createDate":"<fmt:formatDate value="${projectReportRecord.createDate}" pattern="yyyy-MM-dd"/>"
+ ,"createBy":"${projectReportRecord.createBy.name}"
+ ,"status":"${projectReportRecord.status}"
+ <c:if test="${fns:getUser().id == projectReportRecord.createBy.id && (projectReportRecord.status == '1' or projectReportRecord.status == '3' or projectReportRecord.status == '4')}">,"candelete":"1"</c:if>
+ <c:if test="${projectReportRecord.status == '2' && fns:getUser().id == projectReportRecord.createBy.id}"> ,"cancancel":"1"</c:if>
+ <c:if test="${fns:getUser().id == projectReportRecord.createBy.id && projectReportRecord.status == '1' }">,"canedit1":"1"</c:if>
+ <c:if test="${fns:getUser().id == projectReportRecord.createBy.id && projectReportRecord.status == '4' && fns:getUser().id == projectReportRecord.createBy.id}">,"canedit2":"1"</c:if>
+ <c:if test="${projectReportRecord.status == '3' && fns:getUser().id == projectReportRecord.createBy.id}"> ,"canedit3":"1"</c:if>
+ "reportId":obj.number
+ labelValue="${projectReportRecord.report.number}" cssClass="form-control layui-input required" fieldLabels="报告" fieldKeys="name" searchLabel="报告名称" searchKey="name" ></sys:gridselectreportrecord>
+ <input id="createDate" name="createDate" htmlEscape="false" readonly="true" class="form-control layui-input required" value="<fmt:formatDate value="${projectReportRecord.createDate}" pattern="yyyy-MM-dd"/>"/>
@@ -0,0 +1,183 @@
+ <textarea path="remarks" htmlEscape="false" readonly="true" rows="3" maxlength="20" class="form-control" >${projectReportRecord.remarks}</textarea>
@@ -0,0 +1,517 @@
+ <title>基本信息</title>
+ $(function(){
+ initControlData();
+ function openDialogreAudit(title,url,width,height,target){
+ function openDialogres(title,url,width,height,target){
+ function openDialogWork1(title,url,width,height,target){
+ btn: ['关闭'],
+ end:function(index){
+ function openDialogWork(title,url,width,height,target){
+ btn: ['提交', '关闭'],
+ * 初始化控制数据
+ function initControlData(){
+ url:'${ctx}/projectcontroltable/projectControlTable/delControlData',
+ "projectId":"${projectRecords.id}"
+ console.log(data);
+ <script>
+ function initRecordStatus(index,id,dataid,status)
+ var elem = document.getElementById("status_td_" + index);
+ var st = getAuditState(status);
+ if(st.action)
+ var xml = "<span onclick=\"openDialogView('流程追踪', '${ctx}/projectcontentinfo/projectcontentinfo/getProcessOne?id=" + id + "&projectReportData.id="+ dataid + "&type="+status+"','95%','95%')\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+ else
+ var xml = "<span style=\"cursor:default;\" class=\"status-label status-label-" + st.label + "\" >" + st.status + "</span>";
+ elem.innerHTML = xml;
+ <div class="container${container}" id="container">
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectRecords.projectName}"/>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectRecords.projectId}"/>
+ <label class="layui-form-label"><span class="require-item">*</span>项目负责人:</label>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectRecords.leaderNameStr}"/>
+ <input htmlEscape="false" readonly="true" class="form-control layui-input" value="${projectRecords.workContractInfo.client.name}"/>
+ <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">
+ <th >资料编号</th>
+ <th >资料名称</th>
+ <th width="100">资料类别</th>
+ <th width="90">上传人</th>
+ <th width="90">上传日期</th>
+ <th width="130">操作</th>
+ <tbody id="workBaseDataList">
+ <c:when test="${not empty projectBasedDatas}">
+ <c:forEach items="${projectBasedDatas}" var="projectBasedData" varStatus="idx">
+ <input type="hidden" id="workBaseDataList${idx.index}_id" value="${projectBasedData.id}">
+ <td title="${projectBasedData.number}" style="text-align:center;">
+ ${projectBasedData.number}
+ <td title="${projectBasedData.name}" style="text-align:center;">
+ ${projectBasedData.name}
+ <td title="${fns:getDictLabel(projectBasedData.type, 'project_document_type', '')}" style="text-align:center;">
+ ${fns:getDictLabel(projectBasedData.type, 'project_document_type', '')}
+ <td title="${projectBasedData.uploadUser.name}" style="text-align:center;">
+ ${projectBasedData.uploadUser.name}
+ <td style="text-align:center;">
+ <fmt:formatDate value="${projectBasedData.uploadDate}" pattern="yyyy-MM-dd"/>
+ <td style="text-align:center;" class="op-td">
+ <c:if test="${projectBasedData.createBy.id eq fns:getUser().id && empty change}">
+ <a href="javascript:void(0)" onclick="openDialogre('修改依据性资料', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=basedData&dictType=${dictType}&id=${id}&parentIds=${parentIds}&projectBasedData.id=${projectBasedData.id}','95%','95%',false,'inputForm')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>
+ <a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId=${projectBasedData.id}&id=${id}&type=1" onclick="return confirmxRefresh('确认要删除该依据性资料吗?', this.href)" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
+ <td colspan="6">
+ 暂无数据
+ <div class="form-group-label"><h2>工作内容列表</h2></div>
+ <a href="javascript:void(0)" onclick="openDialogWork('新增工作内容', '${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> 新增</a>
+ <table id="contentTable2" class="table table-bordered table-condensed details">
+ <th>内容编号</th>
+ <th>内容名称</th>
+ <th width="80">内容类型</th>
+ <th width="90">负责人</th>
+ <th width="90">创建日期</th>
+ <c:when test="${not empty projectContentDatas}">
+ <c:forEach items="${projectContentDatas}" var="projectContentData" varStatus="idx">
+ <td title="${projectContentData.number}">
+ ${projectContentData.number}
+ <td><a title="${projectContentData.name}" href="#" onclick="openDialogView('查看工作内容详情', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=contentView&dictType=${dictType}&id=${id}&parentIds=${parentIds}&infoId=${projectContentData.id}','95%','95%')">
+ ${projectContentData.name}</a>
+ <td title="${fns:getContentTypeName(projectContentData.type,"")}">
+ ${fns:getContentTypeName(projectContentData.type,"")}
+ <td title="${projectContentData.master.name}">
+ ${projectContentData.master.name}
+ <fmt:formatDate value="${projectContentData.createDate}" pattern="yyyy-MM-dd"/>
+ <c:if test="${fns:getUser().id == projectContentData.createBy.id && empty change}">
+ <a href="#" onclick="openDialog('修改工作内容详情', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=content&dictType=${dictType}&id=${id}&parentIds=${parentIds}&infoId=${projectContentData.id}','95%','95%')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>
+ <a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId=${projectContentData.id}&id=${id}&type=2" onclick="return confirmxRefresh('确认要删除该工作内容详情吗?', this.href)" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
+ <div class="form-group-label"><h2>报告列表</h2></div>
+ <a href="javascript:void(0)" onclick="openDialogWork1('领取报告号', '${ctx}/projectreportnum/projectReportNum/list','60%','95%',false,'inputForm')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 领取报告号</a>
+ <a href="javascript:void(0)" onclick="openDialogres('新增报告文件', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=report&dictType=${dictType}&id=${id}&parentIds=${parentIds}','95%','95%',false,'inputForm')" class="nav-btn nav-btn-add" ><i class="fa fa-plus"></i> 新增报告</a>
+ <th>报告编号</th>
+ <th>报告名称</th>
+ <th width="110">工作内容类型</th>
+ <th width="80">签章类型</th>
+ <th width="80">状态</th>
+ <c:when test="${not empty projectReportDatas}">
+ <c:forEach items="${projectReportDatas}" var="projectReportData" varStatus="index">
+ <td><a title="${projectReportData.number}" href="javascript:void(0)" onclick="openDialogView('查看报告详情', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=reportView&dictType=${dictType}&id=${id}&parentIds=${parentIds}&infoId=${projectReportData.id}','95%', '95%')">
+ ${projectReportData.number}
+ <a title="${projectReportData.name}" href="javascript:void(0)" onclick="openDialogView('查看报告详情', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=reportView&dictType=${dictType}&id=${id}&parentIds=${parentIds}&infoId=${projectReportData.id}','95%', '95%')">
+ ${projectReportData.name}
+ <td title="${fns:getContentTypeName(projectReportData.type,"")}">
+ ${fns:getContentTypeName(projectReportData.type,"")}
+ <td title="${projectReportData.reportType}">
+ ${projectReportData.reportType}
+ <fmt:formatDate value="${projectReportData.reportDate}" pattern="yyyy-MM-dd"/>
+ <%--<c:choose>--%>
+ <%--<c:when test="${empty projectReportData.status || projectReportData.status eq 1}">--%>
+ <%--<div style="text-align: center">--%>
+ <%--<a href="javascript:void(0)" class="op-btn op-btn-trace" >${fns:getDictLabel(projectReportData.status, 'audit_state', '')}</a>--%>
+ <%--</c:when>--%>
+ <%--<c:otherwise>--%>
+ <%--<a href="javascript:void(0)" onclick="openDialogView('流程追踪', '${ctx}/projectcontentinfo/projectcontentinfo/getProcessOne?id=${id}&projectReportData.id=${projectReportData.id}&type=1','95%','95%')" class="op-btn op-btn-trace" >${fns:getDictLabel(projectReportData.status, 'audit_state', '')}</a>--%>
+ <%--</c:otherwise>--%>
+ <%--</c:choose>--%>
+ <div style="text-align: center" id="status_td_${index.index+1}">
+ initRecordStatus(${index.index+1},"${id}","${projectReportData.id}","${projectReportData.status}");
+ <c:if test="${projectReportData.createBy.id eq fns:getUser().id && empty change}">
+ <c:if test="${projectReportData.status eq '1'}">
+ <a href="javascript:void(0)" onclick="openDialogres('修改报告', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=report&dictType=${dictType}&id=${id}&parentIds=${parentIds}&projectReportData.id=${projectReportData.id}','95%','95%',false,'inputForm')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>
+ <a href="${ctx}/projectcontentinfo/projectcontentinfo/delete?infoId=${projectReportData.id}&id=${id}&type=8" onclick="return confirmxRefresh('确认要删除该工作内容报告吗?', this.href)" class="op-btn op-btn-delete"><i class="fa fa-trash"></i> 删除</a>
+ <c:if test="${projectReportData.status eq '3'}">
+ <a href="javascript:void(0)" onclick="openDialogreAudit('修改报告', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=report&dictType=${dictType}&id=${id}&parentIds=${parentIds}&projectReportData.id=${projectReportData.id}','95%','95%',false,'inputForm')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>
+ <c:if test="${projectReportData.status eq '2' }">
+ <a href="${ctx}/projectcontentinfo/projectcontentinfo/cancelInvalidate?infoId=${projectReportData.id}&id=${id}&type=8" onclick="return confirmx('确认要撤回该工作内容报告吗?', this.href)" class="op-btn op-btn-cancel"><i class="glyphicon glyphicon-share-alt"></i> 撤回</a>
+ <c:if test="${projectReportData.status eq '4'}">
+ <a href="javascript:void(0)" onclick="openDialogreAudit('修改报告', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=reportModify&dictType=${dictType}&id=${id}&parentIds=${parentIds}&projectReportData.id=${projectReportData.id}','95%','95%',false,'inputForm')" class="op-btn op-btn-edit" ><i class="fa fa-edit"></i> 修改</a>
+ <c:if test="${projectReportData.status eq '5'}">
+ <a href="javascript:void(0)" onclick="openDialogres('报告变更', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=reportChange&dictType=${dictType}&id=${id}&parentIds=${parentIds}&projectReportData.id=${projectReportData.id}','95%','95%',false,'inputForm')" class="op-btn op-btn-revert" ><i class="fa fa-edit"></i> 变更</a>
+ <a href="javascript:void(0)" onclick="openDialogres('报告作废', '${ctx}/projectcontentinfo/projectcontentinfo/form?view=reportInvalid&dictType=${dictType}&id=${id}&parentIds=${parentIds}&projectReportData.id=${projectReportData.id}','95%','95%',false,'inputForm')" class="op-btn op-btn-invalid"><i class="fa fa-trash-o"></i> 作废</a>
+ <td colspan="7">
@@ -0,0 +1,242 @@
+ <%@ page contentType="text/html;charset=UTF-8" %>
+ <title>用户管理</title>
+ <%@include file="/webpage/include/treeview.jsp" %>
+ function refresh(){//刷新
+ window.location="${ctx}/projectcontentinfo/projectcontentinfo/?project.id=${projectId}";
+ function refreshTrees(){
+ $.getJSON("${ctx}/projectcontentinfo/projectcontentinfo/treeData?projectId=${projectId}",function(data){
+ $.fn.zTree.init($("#ztree"), setting, data).expandAll(true);
+ window.onload = function() {
+ function allclose(){
+ $('#ztree_1_switch').removeClass('noline_open').addClass('noline_close');
+ $('#ztree_1_ico').removeClass('ico_open').addClass('ico_close');
+ $('#ztree_1_ul').css('display','none');
+ function allopen(){
+ $('#ztree_1_switch').removeClass('noline_close').addClass('noline_open');
+ $('#ztree_1_ico').removeClass('ico_close').addClass('ico_open');
+ $('#ztree_1_ul').css('display','block');
+ var secondLevel = $('#ztree_1_ul').children();
+ var lel2 = secondLevel.find('a.level1');
+ var arr2 = [];
+ for (var i = 0, length = lel2.length; i < length; i++) {
+ arr2.push(lel2[i]);
+ $(arr2[i].nextSibling).css('display','block');
+ $(arr2[i]).find('span').eq(1).removeClass('noline_close').addClass('noline_open');
+ $(arr2[i]).find('span').eq(2).removeClass('ico_close').addClass('ico_open');
+ var lel3 = $('a.level2');
+ var arr3 = [];
+ for (var i = 0, length = lel3.length; i < length; i++) {
+ arr3.push(lel3[i]);
+ $(arr3[i].nextSibling).css('display','block');
+ $(arr3[i]).find('span').eq(1).removeClass('noline_close').addClass('noline_open');
+ $(arr3[i]).find('span').eq(2).removeClass('ico_close').addClass('ico_open');
+ var lel4 = $('a.level3');
+ var arr4 = [];
+ for (var i = 0, length = lel4.length; i < length; i++) {
+ arr4.push(lel4[i]);
+ $(arr4[i].nextSibling).css('display','block');
+ $(arr4[i]).find('span').eq(1).removeClass('noline_close').addClass('noline_open');
+ $(arr4[i]).find('span').eq(2).removeClass('ico_close').addClass('ico_open');
+ var lel5 = $('a.level4');
+ var arr5 = [];
+ for (var i = 0, length = lel5.length; i < length; i++) {
+ arr5.push(lel5[i]);
+ $(arr5[i].nextSibling).css('display','block');
+ $(arr5[i]).find('span').eq(1).removeClass('noline_close').addClass('noline_open');
+ $(arr5[i]).find('span').eq(2).removeClass('ico_close').addClass('ico_open');
+ allopen();
+ $(arr2[i].nextSibling).css('display','none');
+ $(arr2[i]).find('span').eq(1).removeClass('noline_open').addClass('noline_close');
+ $(arr2[i]).find('span').eq(2).removeClass('ico_open').addClass('ico_close');
+ $('.selected').on('click',function () {
+ $('.sels').slideToggle();
+ $('.sels').on('click','li',function (e) {
+ var choosesel = $(e.target).text().trim();
+ $('.selected').text(choosesel);
+ $('.sels').slideUp();
+ if(choosesel=='全部收起'){
+ allclose();
+ } else if(choosesel=='2级'){
+ }else if(choosesel=='3级'){
+ $(arr3[i].nextSibling).css('display','none');
+ $(arr3[i]).find('span').eq(1).removeClass('noline_open').addClass('noline_close');
+ $(arr3[i]).find('span').eq(2).removeClass('ico_open').addClass('ico_close');
+ }else if(choosesel=='4级'){
+ $(arr4[i].nextSibling).css('display','none');
+ $(arr4[i]).find('span').eq(1).removeClass('noline_open').addClass('noline_close');
+ $(arr4[i]).find('span').eq(2).removeClass('ico_open').addClass('ico_close');
+ }else if(choosesel=='5级'){
+ $(arr5[i].nextSibling).css('display','none');
+ $(arr5[i]).find('span').eq(1).removeClass('noline_open').addClass('noline_close');
+ $(arr5[i]).find('span').eq(2).removeClass('ico_open').addClass('ico_close');
+ }else if(choosesel=='全部展开'){
+ *{
+ box-sizing: border-box;
+ #left{
+ position: relative;
+ .newsel{
+ position: absolute;
+ top: 0;
+ right:3px;
+ background: #fff;
+ border: 1px solid #ccc;
+ width: 80px;
+ text-align: center;
+ cursor: pointer;
+ .selected{
+ height: 30px;
+ line-height: 30px;
+ background: #0f92fb;
+ color: #fff;
+ .sels{
+ display: none;
+ .sels li{
+ border-top: 1px solid #ccc;
+<div class="wrapper wrapper-content full-width" id="divId">
+ <div id="content" class="pr full-height full-width">
+ <div id="left" class="contentShadow fl contents">
+ <div><a href="${ctx}/projectcontentinfo/projectcontentinfo/list" class="nav-btn nav-btn-refresh" style="float: left">返回</a></div>
+ <div class="newsel">
+ <p class="selected">2级</p>
+ <ul class="sels">
+ <li>全部收起</li>
+ <li>2级</li>
+ <li>3级</li>
+ <li>4级</li>
+ <li>5级</li>
+ <li>全部展开</li>
+ <div class="ztreeContainer">
+ <div id="ztree" class="ztree leftBox-content"></div>
+ <div id="right" class="fl contents">
+ <div class="layui-row contentShadow full-height tran-bg">
+ <iframe id="userContent" name="userContent" src="${ctx}/projectcontentinfo/projectcontentinfo/list?project.id=${projectId}&id=${id}&view=${view}" width="100%" height="100%" frameborder="0"></iframe>
+<script type="text/javascript">
+ function addDiyDom(treeId, treeNode) {
+ var spaceWidth = 15;
+ var switchObj = $("#" + treeNode.tId + "_switch"),
+ icoObj = $("#" + treeNode.tId + "_ico");
+ switchObj.remove();
+ icoObj.before(switchObj);
+ if (treeNode.level > 0) {
+ var spaceStr = "<span style='display: inline-block;width:" + (spaceWidth * treeNode.level)+ "px'></span>";
+ switchObj.before(spaceStr);
+ var setting = {data:{simpleData:{enable:true,idKey:"id",pIdKey:"pId",rootPId:'0'}},
+ callback:{onClick:function(event, treeId, treeNode){
+ var id = treeNode.id == '0' ? '' :treeNode.id;
+ if (treeNode.level != '4'){
+ $('#userContent').attr("src","${ctx}/projectcontentinfo/projectcontentinfo/list?id="+id+"&parentIds="+treeNode.pIds);
+ ,view:{
+ showLine: false,
+ showIcon: false,
+ addDiyDom: addDiyDom
+ };
+ function refreshTree(){
+ refreshTree();