<#assign base=request.contextPath /> <#import "../common/defaultLayout.ftl" as defaultLayout> <@defaultLayout.layout> <link rel="stylesheet" href="../assets/css/amazeui.switch.css"/> <style type="text/css"> .huanhang{ // 表格自动换行 table-layout:fixed; word-break:break-all } .focus{ // 表格自动换行 table-layout:fixed; word-break:break-all } /*固定表头的列表*/ .fixed-list { flex: 1 1 auto; overflow: hidden; } .fixed-list table { display: block; width: 100%; max-height: 100%; border-spacing: 0px; border-collapse: collapse; border: none; overflow-y: hidden; overflow-x: auto; margin: 0; } .fixed-list.is-vertical-scroll table tbody { max-height: calc(100% - 71px); } .fixed-list table>thead>tr>th { height: 40px; text-align: center; vertical-align: middle; } .fixed-list table td { height: 55px; text-align: center; } .fixed-list table tbody { display: block; width: 100%; max-height: calc(100% - 45px); overflow-y: scroll; overflow-x: hidden; -webkit-overflow-scrolling: touch; } .fixed-list table tr { table-layout: fixed; display: table; } .fixed-list table thead tr { width: calc(100% - 18px); border-top: 1px solid #ddd; border-bottom: none; } .fixed-list table tbody tr { width: 100%; } </style> <div class="admin-content"> <div class="am-cf am-padding" style="padding:1rem 1.6rem 1.6rem 1rem;margin:0px;"> <!-- padding:1px 2px 3px 4px;上、右、下,和左 --> <div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">项目管理</strong> / <small>项目管理</small> </div> </div> <div class="am-g"> <div class="am-u-sm-12"> <form class="am-form" id="listForm" action="${base}/project/list" method="POST"> <input type="hidden" id="keywords" name="keywords" value='${keywords!""}'/> <input type="hidden" id="pageNumber" name="pageNumber" value='${pageNumber!}'/> <input type="hidden" id="orderTypeStr" name="orderTypeStr" value='${orderTypeStr!""}'/> <table class="am-table am-table-bordered am-table-radius table-main" style="padding:0;"> <tbody> <tr> <th class="am-text-middle" style="width: 10%">项目编号</th> <td style="width: 15%"> <div class="am-u-sm-10"> <input type="text" id="projectNo" class="am-form-field am-input-sm" value="${projectNo!}"/> </div> </td> <th class="am-text-middle" style="width: 10%">项目名称</th> <td style="width: 15%"> <div class="am-u-sm-10"> <input type="text" id="name" class="am-form-field am-input-sm" value="${name!}"/> </div> </td> <th class="am-text-middle" style="width: 10%">项目状态</th> <td style="width: 15%"> <div class="am-u-sm-10"> <select data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 500,searchBox: 1}" id="status" name="status"> <option value="-1">全部</option> <option value="1" <#if status?? && status='1'>selected</#if>>项目创建(概算)</option> <option value="5" <#if status?? && status='5'>selected</#if>>预算</option> <option value="10" <#if status?? && status='10'>selected</#if>>结算</option> <option value="15" <#if status?? && status='15'>selected</#if>>决算</option> </select> </div> </td> <th class="am-text-middle" style="width: 10%">项目创建者</th> <td style="width: 15%"> <div class="am-u-sm-10"> <input type="text" id="creatorName" class="am-form-field am-input-sm" value="${creatorName!}"/> </div> </td> </tr> <tr> <th class="am-text-middle" style="width: 10%">部门名称</th> <td style="width: 15%"> <div class="am-u-sm-10"> <select data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 500,searchBox: 1}" id="deptId" name="deptId"> <option value="-1">全部</option> <#list deptList as dept> <option value=${dept.id!} <#if deptId! =="${dept.id}" > selected </#if>>${dept.name!}</option> </#list> </select> </div> </td> <th class="am-text-middle" style="width: 10%">项目类型</th> <td style="width: 15%"> <div class="am-u-sm-10"> <select data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 500,searchBox: 1}" id="type" name="type"> <option value="-1">全部</option> <option value="1" <#if type?? && type='1'>selected</#if>>工程集成类</option> <option value="2" <#if type?? && type='2'>selected</#if>>设备集成类</option> </select> </div> </td> <th class="am-text-middle" style="width: 10%">垫资模式</th> <td style="width: 15%"> <div class="am-u-sm-10"> <select data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 500,searchBox: 1}" id="underwrittenMode" name="underwrittenMode"> <option value="-1">全部</option> <option value="1" <#if underwrittenMode?? && underwrittenMode='1'>selected</#if>>A类-不垫资(战略合作)</option> <option value="2" <#if underwrittenMode?? && underwrittenMode='2'>selected</#if>>B类-不垫资(背靠背)</option> <option value="3" <#if underwrittenMode?? && underwrittenMode='3'>selected</#if>>C类-垫资(账期覆盖)</option> <option value="4" <#if underwrittenMode?? && underwrittenMode='4'>selected</#if>>D类-垫资(账期不覆盖)</option> </select> </div> </td> <th class="am-text-middle" style="width: 10%">项目把握度</th> <td style="width: 15%"> <div class="am-u-sm-10"> <select data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 500,searchBox: 1}" id="certainty" name="certainty"> <option value="-1">全部</option> <option value="1" <#if certainty?? && certainty='1'>selected</#if>>A:项目成功率80%-100%</option> <option value="2" <#if certainty?? && certainty='2'>selected</#if>>B:项目成功率60%-80%</option> <option value="3" <#if certainty?? && certainty='3'>selected</#if>>C:项目成功率40%-60%</option> </select> </div> </td> </tr> <tr> <th class="am-text-middle" style="width: 10%">客户名称</th> <td style="width: 15%"> <div class="am-u-sm-10"> <input type="text" id="customer" class="am-form-field am-input-sm" value="${customer!}"/> </div> </td> <th class="am-text-middle" style="width: 10%">最终用户名称</th> <td style="width: 15%"> <div class="am-u-sm-10"> <input type="text" id="terminalCustomer" class="am-form-field am-input-sm" value="${terminalCustomer!}"/> </div> </td> <th class="am-text-middle" style="width: 10%">项目负责人</th> <td style="width: 15%"> <div class="am-u-sm-10"> <input type="text" id="principal" class="am-form-field am-input-sm" value="${principal!}"/> </div> </td> <th class="am-text-middle" style="width: 10%">审核状态</th> <td style="width: 15%"> <div class="am-u-sm-10"> <select data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 500,searchBox: 1}" id="approveStatus" name="approveStatus"> <option value="-1">全部</option> <option value="0" <#if approveStatus?? && approveStatus='0'>selected</#if>>草稿</option> <option value="1" <#if approveStatus?? && approveStatus='1'>selected</#if>>待审核</option> <option value="2" <#if approveStatus?? && approveStatus='2'>selected</#if>>审核通过</option> <option value="3" <#if approveStatus?? && approveStatus='3'>selected</#if>>审核不通过</option> </select> </div> </td> </tr> <tr class="extendCondition" <#if extend='1'> hidden</#if>> <th class="am-text-middle" style="width: 10%">是否二次合作</th> <td style="width: 15%"> <div class="am-u-sm-10"> <select data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 500}" id="isSecond" name="isSecond"> <option value="-1">全部</option> <option value="1" <#if isSecond?? && isSecond='1'>selected</#if>>是</option> <option value="2" <#if isSecond?? && isSecond='2'>selected</#if>>否</option> </select> </div> </td> <th class="am-text-middle" style="width: 10%">直签</th> <td style="width: 15%"> <div class="am-u-sm-10"> <select data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 500}" id="signType" name="signType"> <option value="-1">全部</option> <option value="1" <#if signType?? && signType='1'>selected</#if>>是</option> <option value="2" <#if signType?? && signType='2'>selected</#if>>否</option> </select> </div> </td> <th class="am-text-middle" style="width: 10%">行业场景</th> <td style="width: 15%"> <div class="am-u-sm-10"> <select data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 500}" id="industryScene" name="industryScene"> <option value="-1">全部</option> <option value="1" <#if industryScene?? && industryScene='1'>selected</#if>>信息安全</option> <option value="2" <#if industryScene?? && industryScene='2'>selected</#if>>政府</option> <option value="3" <#if industryScene?? && industryScene='3'>selected</#if>>公安</option> <option value="4" <#if industryScene?? && industryScene='4'>selected</#if>>企业</option> <option value="5" <#if industryScene?? && industryScene='5'>selected</#if>>教育</option> <option value="6" <#if industryScene?? && industryScene='6'>selected</#if>>交通</option> <option value="7" <#if industryScene?? && industryScene='7'>selected</#if>>医疗</option> <option value="8" <#if industryScene?? && industryScene='8'>selected</#if>>电力资源</option> <option value="9" <#if industryScene?? && industryScene='9'>selected</#if>>运营商</option> <option value="10" <#if industryScene?? && industryScene='10'>selected</#if>>金融</option> <option value="11" <#if industryScene?? && industryScene='11'>selected</#if>>专网</option> <option value="12" <#if industryScene?? && industryScene='12'>selected</#if>>其他</option> <option value="13" <#if industryScene?? && industryScene='13'>selected</#if>>互联网</option> <option value="14" <#if industryScene?? && industryScene='14'>selected</#if>>银行</option> </select> </div> </td> <th class="am-text-middle" style="width: 10%">项目解决方案</th> <td style="width: 15%"> <div class="am-u-sm-10"> <select data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 500}" id="resolvePlan" name="resolvePlan"> <option value="-1">全部</option> <option value="1" <#if resolvePlan?? && resolvePlan='1'>selected</#if>>公共服务(智慧交通、雪亮工程、治安防控体系等)</option> <option value="2" <#if resolvePlan?? && resolvePlan='2'>selected</#if>>泛行业(智慧园区、智慧医疗、智慧工地等)</option> <option value="3" <#if resolvePlan?? && resolvePlan='3'>selected</#if>>其他生态</option> </select> </div> </td> </tr> <tr class="extendCondition" <#if extend='1'> hidden</#if>> <th class="am-text-middle" style="width: 10%">最后更新时间</th> <td style="width: 15%"> <div class="am-u-sm-10"> <div class="am-form am-form-inline"> <div class="am-form-group am-form-icon"> <i class="am-icon-calendar"></i> <input type="text" class="am-form-field am-input-sm" id="startUpdateDate" value="${startUpdateDate!}" placeholder="开始日期" autocomplete="off" data-am-datepicker> </div> <div class="am-form-group">至</div> <div class="am-form-group am-form-icon"> <i class="am-icon-calendar"></i> <input type="text" class="am-form-field am-input-sm" id="endUpdateDate" value="${endUpdateDate!}" placeholder="结束日期" autocomplete="off" data-am-datepicker> </div> </div> </div> </td> <th class="am-text-middle" style="width: 10%">项目周期</th> <td style="width: 15%"> <div class="am-u-sm-10"> <div class="am-form am-form-inline"> <div class="am-form-group am-form-icon"> <i class="am-icon-calendar"></i> <input type="text" class="am-form-field am-input-sm" id="startDate" value="${startDate!}" placeholder="开始日期" autocomplete="off" data-am-datepicker> </div> <div class="am-form-group">至</div> <div class="am-form-group am-form-icon"> <i class="am-icon-calendar"></i> <input type="text" class="am-form-field am-input-sm" id="endDate" value="${endDate!}" placeholder="结束日期" autocomplete="off" data-am-datepicker> </div> </div> </div> </td> <th class="am-text-middle" style="width: 10%">预计合同签订时间</th> <td style="width: 15%"> <div class="am-u-sm-10"> <div class="am-form am-form-inline"> <div class="am-form-group am-form-icon"> <i class="am-icon-calendar"></i> <input type="text" class="am-form-field am-input-sm" id="contractStartTime" value="${contractStartTime!}" placeholder="开始日期" autocomplete="off" data-am-datepicker> </div> <div class="am-form-group">至</div> <div class="am-form-group am-form-icon"> <i class="am-icon-calendar"></i> <input type="text" class="am-form-field am-input-sm" id="contractEndTime" value="${contractEndTime!}" placeholder="结束日期" autocomplete="off" data-am-datepicker> </div> </div> </div> </td> <th class="am-text-middle" style="width: 10%"></th> <td style="width: 15%"> </td> </tr> <tr> <td colspan="8"> <div align='right'> <button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary" id="extend" value="${extend!}">扩展筛选项 </button> <@shiro.hasPermission name="PROJECT_QUERY"> <button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary" id="submit-btn">搜索 </button> </@shiro.hasPermission> <@shiro.hasPermission name="PROJECT_EXPORT"> <button type="button" class="am-btn am-btn-default am-btn-sm am-text-secondary" id="submit-btn-export">导出 </button> </@shiro.hasPermission> </div> </td> </tr> </tbody> </table> </form> </div> <div class="am-u-sm-12 am-u-md-12" style="padding:0 1.6rem 1.6rem 1rem;margin:0;"> <div class="am-btn-toolbar" style="padding-left:.5rem;"> <div class="am-btn-group am-btn-group-xs"> <@shiro.hasPermission name="PROJECT_ADD"> <button type="button" class="am-btn am-btn-default" onclick="location.href='${base}/project/add'"> <span class="am-icon-plus"></span> 新增 </button> </@shiro.hasPermission> <@shiro.hasPermission name="PROJECT_APPROVE"> <button type="button" class="am-btn am-btn-default" onclick="location.href='${base}/project/listApprove'"> <span class="am-icon-pencil"></span> 待我审核的项目 </button> </@shiro.hasPermission> <button type="button" class="am-btn am-btn-default" onclick="openChengjieModal()"> <span class="am-icon-refresh"></span> 批量指定承接人 </button> <#if adminId==1> <button type="button" id="authorizeButton" disabled class="am-btn am-btn-default" onclick="authorize('${base}/project/selectRoleUserBatch')" > <span class="am-icon-trash-o"></span> 批量配置项目可见性 </button> </#if> </div> </div> </div> </div> <div class="am-g fixed-list is-vertical-scroll"> <div class="am-u-sm-12"> <div class="list-content"> <table class="am-table am-table-striped am-table-hover table-main"> <thead style="display:block;width: 4200px;"> <tr class="am-text-nowrap"> <th width="30px"> <input type="checkbox" id="allCheck"></th> <th class="table-title" width="60px">序号</th> <th class="table-title" width="120px">项目编号<i class="am-icon-caret-down" <#if orderTypeStr == "projectNoDown">style="color: red"</#if> onclick="sub_function('projectNoDown')"></i><i class="am-icon-caret-up" <#if orderTypeStr == "projectNoUp">style="color: red"</#if> onclick="sub_function('projectNoUp')"></i></th> <th class="table-title" width="240px">项目名称<i class="am-icon-caret-down" <#if orderTypeStr == "projectNameDown">style="color: red"</#if> onclick="sub_function('projectNameDown')"></i><i class="am-icon-caret-up" <#if orderTypeStr == "projectNameUp">style="color: red"</#if> onclick="sub_function('projectNameUp')"></i></th> <th class="table-title">项目类型<i class="am-icon-caret-down" <#if orderTypeStr == "projectTypeDown">style="color: red"</#if> onclick="sub_function('projectTypeDown')"></i><i class="am-icon-caret-up" <#if orderTypeStr == "projectTypeUp">style="color: red"</#if> onclick="sub_function('projectTypeUp')"></i></th> <th class="table-title">垫资模式<i class="am-icon-caret-down" <#if orderTypeStr == "underModeDown">style="color: red"</#if> onclick="sub_function('underModeDown')"></i><i class="am-icon-caret-up" <#if orderTypeStr == "underModeUp">style="color: red"</#if> onclick="sub_function('underModeUp')"></i></th> <th class="table-title">垫资利息<i class="am-icon-caret-down" <#if orderTypeStr == "underIntDown">style="color: red"</#if> onclick="sub_function('underIntDown')"></i><i class="am-icon-caret-up" <#if orderTypeStr == "underIntUp">style="color: red"</#if> onclick="sub_function('underIntUp')"></i></th> <th class="table-title">垫资峰值<i class="am-icon-caret-down" <#if orderTypeStr == "underPeakDown">style="color: red"</#if> onclick="sub_function('underPeakDown')"></i><i class="am-icon-caret-up" <#if orderTypeStr == "underPeakUp">style="color: red"</#if> onclick="sub_function('underPeakUp')"></i></th> <th class="table-title">项目合同金额<i class="am-icon-caret-down" <#if orderTypeStr == "projectContractDown">style="color: red"</#if> onclick="sub_function('projectContractDown')"></i><i class="am-icon-caret-up" <#if orderTypeStr == "projectContractUp">style="color: red"</#if> onclick="sub_function('projectContractUp')"></i></th> <th class="table-title">项目毛利<i class="am-icon-caret-down" <#if orderTypeStr == "grossProfitDown">style="color: red"</#if> onclick="sub_function('grossProfitDown')"></i><i class="am-icon-caret-up" <#if orderTypeStr == "grossProfitUp">style="color: red"</#if> onclick="sub_function('grossProfitUp')"></i></th> <th class="table-title">项目毛利率<i class="am-icon-caret-down" <#if orderTypeStr == "grossProfitMarginDown">style="color: red"</#if> onclick="sub_function('grossProfitMarginDown')"></i><i class="am-icon-caret-up" <#if orderTypeStr == "grossProfitMarginUp">style="color: red"</#if> onclick="sub_function('grossProfitMarginUp')"></i></th> <th class="table-title">项目把握度<i class="am-icon-caret-down" <#if orderTypeStr == "certaintyDown">style="color: red"</#if> onclick="sub_function('certaintyDown')"></i><i class="am-icon-caret-up" <#if orderTypeStr == "certaintyUp">style="color: red"</#if> onclick="sub_function('certaintyUp')"></i></th> <th class="table-title">汇智产品金额<i class="am-icon-caret-down" <#if orderTypeStr == "huizhiDown">style="color: red"</#if> onclick="sub_function('huizhiDown')"></i><i class="am-icon-caret-up" <#if orderTypeStr == "huizhiUp">style="color: red"</#if> onclick="sub_function('huizhiUp')"></i></th> <th class="table-title">华智产品金额<i class="am-icon-caret-down" <#if orderTypeStr == "huazhiDown">style="color: red"</#if> onclick="sub_function('huazhiDown')"></i><i class="am-icon-caret-up" <#if orderTypeStr == "huazhiUp">style="color: red"</#if> onclick="sub_function('huazhiUp')"></i></th> <th class="table-title">华三产品金额<i class="am-icon-caret-down" <#if orderTypeStr == "huasanDown">style="color: red"</#if> onclick="sub_function('huasanDown')"></i><i class="am-icon-caret-up" <#if orderTypeStr == "huasanUp">style="color: red"</#if> onclick="sub_function('huasanUp')"></i></th> <th class="table-title">其他产品金额<i class="am-icon-caret-down" <#if orderTypeStr == "otherDown">style="color: red"</#if> onclick="sub_function('otherDown')"></i><i class="am-icon-caret-up" <#if orderTypeStr == "otherUp">style="color: red"</#if> onclick="sub_function('otherUp')"></i></th> <th class="table-title">项目状态</th> <th class="table-title">行业场景应用</th> <th class="table-title">解决方案</th> <th class="table-title">客户名称</th> <th class="table-title">最终用户名称</th> <th class="table-title">预计合同签订时间</th> <th class="table-title">项目计划招标时间</th> <th class="table-title">是否二次合作</th> <th class="table-title">直签</th> <th class="table-title">战略合作对象</th> <th class="table-title">项目负责人</th> <th class="table-title">审核状态</th> <th class="table-title">当前审核人</th> <th class="table-title">项目创建者</th> <th class="table-title">部门名称</th> <th class="table-title">项目周期</th> <th class="table-title">最后更新时间</th> <th class="table-title" width="240px">操作</th> </tr> </thead> <tbody style="display:block;width: 4200px;"> <#list pager.list as list> <tr> <td width="30px"> <input type="checkbox" name="ids" value="${list.id!}" /></td> <td width="60px">${list.tempId!}</td> <td class="huanhang" width="120px">${list.projectNo!}</td> <td class="huanhang" width="240px"><a style="cursor: pointer;text-decoration:none" onclick="approve(${list.id})">${list.name!}</a></td> <td>${list.typeDesc!}</td> <td>${list.underwrittenModeStr!}</td> <td>${Utils.format(list.advanceInterestAmount, "0.00")}</td> <td>${Utils.format(list.advancePeakAmount, "0.00")}</td> <td>${Utils.format(list.contractAmount, "0.00")}</td> <td>${Utils.format(list.grossProfit, "0.00")}</td> <td>${Utils.format(list.grossProfitMargin, "0.00")}</td> <td>${list.certaintyStr!}</td> <td>${Utils.format(list.huizhiProductAmount, "0.00")}</td> <td>${Utils.format(list.huazhiProductAmount, "0.00")}</td> <td>${Utils.format(list.huasanProductAmount, "0.00")}</td> <td>${Utils.format(list.ziguangOtherAmount, "0.00")}</td> <td>${list.statusDesc!}</td> <td>${list.industryScenario!}</td> <td>${list.resolvePlanStr!}</td> <td>${list.customer!}</td> <td>${list.terminalCustomer!}</td> <td>${(list.contractTime?string("yyyy-MM-dd"))!}</td> <td>${(list.bidsTime?string("yyyy-MM-dd"))!}</td> <td>${list.isSecondStr!}</td> <td>${list.signTypeStr!}</td> <td>${list.collaborator!}</td> <td>${list.principal!}</td> <td>${list.approveStatusDesc!}</td> <td>${list.approveName!}</td> <td>${list.creatorName!}</td> <td>${list.deptName!}</td> <td>${(list.startDate?string("yyyy-MM"))!} ~ ${(list.endDate?string("yyyy-MM"))!}</td> <td>${(list.lastUpdateTime?string("yyyy-MM-dd HH:mm:ss"))!}</td> <td width="240px"> <div class="am-btn-toolbar"> <div class="am-btn-group am-btn-group-xs"> <#if adminId==1> <button type="button" class="am-btn am-btn-default am-btn-xs am-text-secondary" onclick="location.href='${base}/project/selectRoleUser?projectId=${list.id}'"><span class="am-icon-pencil-square-o"></span>设置项目可见性 </button> </#if> <#if adminId==1 && !list.projectNo??> <button type="button" class="am-btn am-btn-default am-btn-xs am-text-secondary" onclick="projectNo(${list.id})"><span class="am-icon-pencil-square-o"></span>填写项目编号 </button> </#if> <button type="button" class="am-btn am-btn-default am-btn-xs am-text-secondary" onclick="location.href='${base}/project/exportAll?id=${list.id}'"><span class="am-icon-pencil-square-o"></span>导出总表 </button> <#--<@shiro.hasPermission name="PROJECT_EDIT">--> <#-- 项目等于概算状态、概算审核为草稿和不通过状态--> <#if list.creatorId==adminId && list.status==1 && (list.approveStatusEstimate==0 || list.approveStatusEstimate==3)> <button type="button" class="am-btn am-btn-default am-btn-xs am-text-secondary" onclick="location.href='${base}/project/edit?id=${list.id}'"><span class="am-icon-pencil-square-o"></span>编辑概算 </button> </#if> <#-- 项目等于概算状态、概算审核为草稿状态--> <#if list.creatorId==adminId && list.status==1 && list.approveStatusEstimate==0> <button type="button" class="am-btn am-btn-default am-btn-xs am-text-secondary" onclick="deleteProject('${list.id}')"><span class="am-icon-pencil-square-o"></span>删除 </button> </#if> <#-- </@shiro.hasPermission> <@shiro.hasPermission name="PROJECT_EDIT">--> <#-- 概算审核等于通过状态、预算审核不等于待审核状态、 项目不等于决算状态--> <#if list.creatorId==adminId && list.approveStatusEstimate=2 && list.approveStatusBudget!=1 && list.status!=15 > <button type="button" class="am-btn am-btn-default am-btn-xs am-text-secondary" onclick="location.href='${base}/project/budgetEdit?id=${list.id}'"><span class="am-icon-pencil-square-o"></span>填写预算表 </button> </#if> <#-- </@shiro.hasPermission>--> <#-- 项目等于预算状态、预算审核等于通过状态 --> <#if admin.getRoleLevel() == 6 && ((list.status==5 && list.approveStatusBudget=2) || (list.status=10 && list.approveStatusSettle=2)) > <button type="button" class="am-btn am-btn-default am-btn-xs am-text-secondary" onclick="location.href='${base}/project/settle/add?id=${list.id}'"><span class="am-icon-pencil-square-o"></span>填写结算表 </button> </#if> <#-- 项目等于结算状态、结算审核不等于待审核状态--> <#if admin.getRoleLevel() = 6 && list.status==10 && list.approveStatusSettle!=1> <button type="button" class="am-btn am-btn-default am-btn-xs am-text-secondary" onclick="location.href='${base}/project/settle/edit?id=${list.id}'"><span class="am-icon-pencil-square-o"></span>编辑结算表 </button> </#if> <#-- 项目等于结算状态、结算审核等于通过状态 --> <#if (admin.getRoleLevel() = 2 || admin.getRoleLevel() = 6) && (list.status== 10 && list.approveStatusSettle==2) > <button type="button" class="am-btn am-btn-default am-btn-xs am-text-secondary" onclick="location.href='${base}/project/final/add?id=${list.id}'"><span class="am-icon-pencil-square-o"></span>发起决算 </button> </#if> <#-- 项目等于决算状态、决算审核不等于待审核状态、 决算审核不等于通过状态--> <#if (admin.getRoleLevel() = 2 || admin.getRoleLevel() = 6) && list.status== 15 && list.approveStatusFinal!=1 && list.approveStatusFinal!=2 > <button type="button" class="am-btn am-btn-default am-btn-xs am-text-secondary" onclick="location.href='${base}/project/final/edit?id=${list.id}'"><span class="am-icon-pencil-square-o"></span>编辑决算 </button> </#if> <#--<button type="button" class="am-btn am-btn-default am-btn-xs am-text-secondary" onclick="location.href='${base}/project/detail?id=${list.id}'"><span class="am-icon-pencil-square-o"></span>查看 </button>--> <#if (list.creatorId==adminId && list.approveStatusEstimate == 0) || (list.creatorId==adminId && list.approveStatusBudget == 0) || (admin.getRoleLevel() = 6 && list.approveStatusSettle == 0 && list.approveStatusBudget == 2) || ((admin.getRoleLevel() = 2 || admin.getRoleLevel() = 6) && list.approveStatusFinal == 0)> <button type="button" class="am-btn am-btn-default am-btn-xs am-text-secondary" onclick="approveProject(${list.id}, ${list.status})"><span class="am-icon-pencil-square-o"></span>提交审核 </button> </#if> <#if adminId==list.approveId> <button type="button" class="am-btn am-btn-default am-btn-xs am-text-secondary" onclick="location.href='${base}/project/approve?listFrom=list&type=1&id=${list.id}'"><span class="am-icon-pencil-square-o"></span>审核 </button> </#if> <#--预算状态 待审核状态 --> <#if list.status==5 && list.approveStatusBudget==1 && list.actTaskName! != "执行董事" > <button type="button" class="am-btn am-btn-default am-btn-xs am-text-secondary" onclick="openHuiqianModal(${list.id}, '${list.name}')"><span class="am-icon-pencil-square-o"></span>会签 </button> </#if> <#if list.approveStatusEstimate != 0 > <button type="button" class="am-btn am-btn-default am-btn-xs am-text-secondary" onclick="location.href='${base}/project/taskRecords/${list.id?c}'"><span class="am-icon-pencil-square-o"></span>查看审核流程 </button> </#if> </div> </div> </td> </tr> </#list> </tbody> </table> </div> </div> </div> <#--<div class="am-modal am-modal-prompt" tabindex="-1" id="my-prompt-select-role-user"> <div class="am-modal-dialog"> <div class="am-modal-hd">请选择项目可见性</div> <div class="am-modal-bd"> 请勾选能够看到该项目的人员或角色 <ul id="treeSelectRoleUser" class="ztree"></ul> </div> <div class="am-modal-footer"> <span class="am-modal-btn" data-am-modal-cancel>取消</span> <span class="am-modal-btn" data-am-modal-confirm>提交</span> </div> </div> </div>--> <footer class="admin-content-footer"> <div class="am-cf"> <!-- 分页 --> <#if (pager.list)?exists && (pager.list?size>0) > <div class="am-fr"> <#include "../common/project_pager.ftl"> </div> <#else> <div class="am-kai" align="center"> <h3>没有找到任何记录!</h3> </div> </#if> </div> </footer> </div> <!-- 模态框(Modal) --> <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h4 class="modal-title" id="myModalLabel">您正在编辑项目编号</h4> </div> <div> <input type="text" id="newProjectNo" class="am-modal-prompt-input" placeholder="请输入项目编号" maxlength="50"/> <input type="hidden" id="modelId" name="keywords" value=''/> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal" data-am-modal-cancel>关闭</button> <button type="button" class="btn btn-primary" data-am-modal-confirm onclick="projectNoCheck('')">提交</button> </div> </div><!-- /.modal-content --> </div><!-- /.modal-dialog --> </div> <!-- /.modal --> <#--会签弹窗--> <div class="modal fade" id="myModal2" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h4 class="modal-title" id="myModalLabel">您正在进行项目会签,请确认该操作</h4> <h5 class="modal-title" id="myModalLabel">项目名称:<span id="hqProjectName" style="color: red"></span></h5> </div> <input type="hidden" id="hqProjectId" name="hqProjectId" value=''/> <div class="am-g am-form-group am-margin-top" style="display: flex;"> <div class="am-u-sm-3 am-u-md-3 am-text-right"> <span style="color: red;">*</span>请输入会签意见</div> <div class="am-u-sm-6 am-u-md-6"> <textarea id="doc-vld-ta-2" minlength="1" rows="3" cols="40" maxlength="300" class="am-input"></textarea> </div> <div class="am-u-sm-3 am-u-md-3 input-msg"></div> </div> <div> <div class="am-g am-form-group am-margin-top"> <div class="am-u-sm-3 am-u-md-3 am-text-right"><span style="color: red;">*</span>请上传会签单</div> <div class="am-u-sm-6 am-u-md-6"> <input type="text" id="icon" name="icon" maxlength="500" value="" required style="width: 300px;" placeholder="格式:gif、jpg、jpeg、png、pdf"/> </div> <div class="am-form-file am-text-xs"> <button type="button" class="am-btn am-btn-primary am-btn-sm" style="margin-left: 20px"> <i class="am-icon-cloud-upload"></i> 上传 </button> <input id="fileupload_button_icon" type="file" name="files[]" multiple> </div> <!-- The global progress bar --> <div id="progress-area-icon" class="am-margin-top-sm am-hide"> <div id="progress-text-icon" class="am-text-xs am-text-right"></div> <div id="progress" class="am-progress am-progress-xs"> <div class="am-progress-bar" style="width: 0%"></div> </div> </div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal" data-am-modal-cancel>关闭</button> <button type="button" class="btn btn-primary" data-am-modal-confirm onclick="huiQian()">提交</button> </div> </div><!-- /.modal-content --> </div><!-- /.modal-dialog --> </div> <!-- /.modal --> <#--设置审批承接人弹窗--> <div class="modal fade" id="myModal3" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content" style="width: 500px"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h4 class="modal-title" id="myModalLabel">请选择承接账号</h4> </div> <input type="hidden" id="hqProjectId" name="hqProjectId" value=''/> <div class="am-g am-form-group am-margin-top" style="display: flex;"> <div class="am-u-sm-6 am-u-md-6"> <select data-am-selected="{btnSize: 'sm',btnWidth: '150px',maxHeight: 300,searchBox: 1}" id="approveAdminSelect"> <#list adminList as l> <option value="${l.id}">${l.realName!}</option> </#list> </select> </div> <div class="am-u-sm-3 am-u-md-3 input-msg"></div> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal" data-am-modal-cancel>关闭</button> <button type="button" class="btn btn-primary" data-am-modal-confirm onclick="batchUpdateApprove()">提交</button> </div> </div><!-- /.modal-content --> </div><!-- /.modal-dialog --> </div> <!-- /.modal --> </@defaultLayout.layout> <script type="text/javascript" src="../modal/js/modal.js"></script> <script src="../assets/js/amazeui.switch.js"></script> <script src="${base}/assets/js/project_common.js"></script> <script src="${base}/common/jQuery-File-Upload/js/vendor/jquery.ui.widget.js"></script> <script type="text/javascript" src="${base}/common/jQuery-File-Upload/js/jquery.iframe-transport.js"></script> <script type="text/javascript" src="${base}/common/jQuery-File-Upload/js/jquery.fileupload.js"></script> <script src="${base}/common/jQuery-File-Upload/js/jquery.fileupload-process.js"></script> <script src="${base}/common/jQuery-File-Upload/js/jquery.fileupload-validate.js"></script> <script type="text/javascript"> var approveProject = function (id, status) { if (window.confirm('即将跳转详情页确认提交内容,请在确认后再提交')) { if (status == '1') { location.href = '${base}/project/edit?id=' + id; } else if (status == '5') { location.href = '${base}/project/budgetEdit?id=' + id; } else if (status == '10') { location.href = '${base}/project/settle/edit?id=' + id; } else if (status == '15') { location.href = '${base}/project/final/edit?id=' + id; } else { location.href = '${base}/project/list'; } <#--$.ajax({--> <#-- url: '${base}/project/saveApprove',--> <#-- data: {id:id},--> <#-- dataType: "json",--> <#-- async: false,--> <#-- success: function (data) {--> <#-- if (data.status == 0) {--> <#-- alert(data.msg);--> <#-- window.location.href = window.location.href;--> <#-- } else if (data.status == 1) {--> <#-- alert(data.msg);--> <#-- location.href = '${base}/project/toEditAllStatus?id=' + id;--> <#-- }--> <#-- }--> <#--});--> } }; var approve = function (id) { var pageNumber = $("#pageNumber").val(); var keywords = $("#keywords").val(); keywords = keywords.replace(/\{/g, '%7b').replace(/\}/g, '%7d'); console.log("keywords: " + keywords); location.href = '${base}/project/approve?listFrom=list&type=1&id=' + id + '&pageNumber=' + pageNumber + '&keywords=' + keywords; }; var sub_function = function (type) { $("#pageNumber").val(1); initSearch(type); $("#listForm").attr("action", "${base}/project/list"); $("#listForm").submit(); }; var initSearch = function (type) { var keywordsObj = {}; var extend = $("#extend").val(); keywordsObj.extend = extend; keywordsObj.orderType = type; if ($("#projectNo").val()) keywordsObj.projectNo = $("#projectNo").val(); if ($("#name").val()) keywordsObj.name = $("#name").val(); if ($("#creatorName").val()) keywordsObj.creatorName = $("#creatorName").val(); if ($("#status").val()) keywordsObj.status = $("#status").val(); if ($("#approveStatus").val()) keywordsObj.approveStatus = $("#approveStatus").val(); if ($("#deptId").val()) keywordsObj.deptId = $("#deptId").val(); if ($("#type").val()) keywordsObj.type = $("#type").val(); if ($("#underwrittenMode").val()) keywordsObj.underwrittenMode = $("#underwrittenMode").val(); if ($("#certainty").val()) keywordsObj.certainty = $("#certainty").val(); if (extend === '0') { if ($("#isSecond").val()) keywordsObj.isSecond = $("#isSecond").val(); if ($("#signType").val()) keywordsObj.signType = $("#signType").val(); if ($("#resolvePlan").val()) keywordsObj.resolvePlan = $("#resolvePlan").val(); if ($("#startDate").val()) keywordsObj.startDate = $("#startDate").val(); if ($("#endDate").val()) keywordsObj.endDate = $("#endDate").val(); if ($("#startUpdateDate").val()) keywordsObj.startUpdateDate = $("#startUpdateDate").val(); if ($("#endUpdateDate").val()) keywordsObj.endUpdateDate = $("#endUpdateDate").val(); if ($("#contractStartTime").val()) keywordsObj.contractStartTime = $("#contractStartTime").val(); if ($("#contractEndTime").val()) keywordsObj.contractEndTime = $("#contractEndTime").val(); if ($("#industryScene").val()) keywordsObj.industryScene = $("#industryScene").val(); } if ($("#customer").val()) keywordsObj.customer = $("#customer").val(); if ($("#terminalCustomer").val()) keywordsObj.terminalCustomer = $("#terminalCustomer").val(); if ($("#principal").val()) keywordsObj.principal = $("#principal").val(); var keywords = ""; if (!$.isEmptyObject(keywordsObj)) { keywords = JSON.stringify(keywordsObj); } console.log("keywords = " + keywords); $("#keywords").val(keywords); }; $(function () { $("#extend").on("click", function () { var extend = $("#extend").val(); if (extend === '0') { $(".extendCondition").hide(); $("#extend").val(1); $("#extend").text("扩展筛选项"); } else { $(".extendCondition").show(); $("#extend").val(0); $("#extend").text("隐藏筛选项"); } }); $("#submit-btn").on("click", function () { $("#pageNumber").val(1); setKeywords(); $("#listForm").attr("action","${base}/project/list"); $("#listForm").submit(); }); $("#submit-btn-export").on("click", function () { setKeywords(); $("#listForm").attr("action","${base}/project/export"); $("#listForm").submit(); }); var $allCheck = $("#allCheck");// 全选复选框 var $idsCheck = $('[name=ids]:checkbox');// ID复选框 var $authorizeButton = $("#authorizeButton");// 批量按钮 // 全选 $allCheck.click(function() { var isChecked = $allCheck.is(":checked"); if (isChecked == false) { $authorizeButton.prop("disabled", true); $idsCheck.prop("checked", false); } else { $authorizeButton.prop("disabled", false); $idsCheck.prop("checked", true); } }); // 无复选框被选中时,批量按钮不可用 $idsCheck.click(function() { var $idsChecked = $("[name='ids']:checked"); if ($idsChecked.length > 0) { $authorizeButton.prop("disabled", false); } else { $authorizeButton.prop("disabled", true); } if($idsChecked.length == $idsCheck.length){ $allCheck.prop("checked", true); }else { $allCheck.prop("checked", false); } }); function setKeywords() { var keywordsObj = {}; var extend = $("#extend").val(); keywordsObj.extend = extend; if ($("#orderTypeStr").val()) keywordsObj.orderType = $("#orderTypeStr").val(); if ($("#projectNo").val()) keywordsObj.projectNo = $("#projectNo").val(); if ($("#name").val()) keywordsObj.name = $("#name").val(); if ($("#creatorName").val()) keywordsObj.creatorName = $("#creatorName").val(); if ($("#status").val()) keywordsObj.status = $("#status").val(); if ($("#approveStatus").val()) keywordsObj.approveStatus = $("#approveStatus").val(); if ($("#deptId").val()) keywordsObj.deptId = $("#deptId").val(); if ($("#type").val()) keywordsObj.type = $("#type").val(); if ($("#underwrittenMode").val()) keywordsObj.underwrittenMode = $("#underwrittenMode").val(); if ($("#certainty").val()) keywordsObj.certainty = $("#certainty").val(); if (extend === '0') { if ($("#isSecond").val()) keywordsObj.isSecond = $("#isSecond").val(); if ($("#signType").val()) keywordsObj.signType = $("#signType").val(); if ($("#resolvePlan").val()) keywordsObj.resolvePlan = $("#resolvePlan").val(); if ($("#startDate").val()) keywordsObj.startDate = $("#startDate").val(); if ($("#endDate").val()) keywordsObj.endDate = $("#endDate").val(); if ($("#startUpdateDate").val()) keywordsObj.startUpdateDate = $("#startUpdateDate").val(); if ($("#endUpdateDate").val()) keywordsObj.endUpdateDate = $("#endUpdateDate").val(); if ($("#contractStartTime").val()) keywordsObj.contractStartTime = $("#contractStartTime").val(); if ($("#contractEndTime").val()) keywordsObj.contractEndTime = $("#contractEndTime").val(); if ($("#industryScene").val()) keywordsObj.industryScene = $("#industryScene").val(); } if ($("#customer").val()) keywordsObj.customer = $("#customer").val(); if ($("#terminalCustomer").val()) keywordsObj.terminalCustomer = $("#terminalCustomer").val(); if ($("#principal").val()) keywordsObj.principal = $("#principal").val(); var keywords = ""; if (!$.isEmptyObject(keywordsObj)) { keywords = JSON.stringify(keywordsObj); } console.log("keywords = " + keywords); $("#keywords").val(keywords); } generateFileupload("icon"); }); // 批量可见性 var authorize = function(url){ // var $authorizeButton = $("#authorizeButton");// 删除按钮 var ids = ""; $("input[name='ids']:checked").each(function(){ console.log("id: " + $(this).val()); ids +=$(this).val()+","; console.log("ids: " + ids); }); console.log("url: " + url + "?ids=" + ids); location.href=url + "?ids=" + ids; } //会签 var huiQian = function () { var projectId = $("#hqProjectId").val(); var fileUrl = $("#icon").val(); if (fileUrl == '') { alert("请上传会签单"); return; } var message = $("#doc-vld-ta-2").val(); if (message == '') { alert("请填写会签意见"); return; } var params = { message: message, fileUrl: fileUrl }; $.ajax({ url: '${base}/project/skipTask/' + projectId, data: JSON.stringify(params), dataType: "json", contentType: "application/json", type: 'post', async: false, success: function (data) { if (data.status == 0) { alert(data.msg); window.location.href=window.location.href; } else if (data.status == 1) { alert(data.msg); } } }); }; /** * 设置流程承接人 将自己审批的任务转交给别人 */ var batchUpdateApprove = function () { var adminId = $("#approveAdminSelect option:selected").val(); if (adminId == '') { alert("请选择承接账号"); return; } var params = { adminId: adminId }; $.ajax({ url: '${base}/project/batchUpdateApprove', data: JSON.stringify(params), dataType: "json", contentType: "application/json", type: 'post', async: false, success: function (data) { if (data.status == 0) { alert(data.msg); window.location.href=window.location.href; } else if (data.status == 1) { alert(data.msg); } } }); }; //上传会签单 var generateFileupload = function (name) { var progressArea = $("#progress-area-" + name);//div var progressText = $("#progress-text-" + name);//进度条提示 var progressBar = $(".am-progress-bar");//进度条 console.info(name); $("#fileupload_button_" + name).fileupload({ url: "${base}/file/upload", dataType: 'json', acceptFileTypes: /(\.|\/)(gif|jpe?g|png|pdf)$/i, maxFileSize: 20 * 1024 * 1024, maxNumberOfFiles: 1, messages: { maxFileSize: '最大允许上传的图片大小为20M', acceptFileTypes: '文件格式不正确,请上传gif、jpg、jpeg、png、pdf类型的图片文件' }, start: function (e) { progressArea.removeClass("am-hide"); progressText.removeClass("am-text-danger"); progressText.html(""); progressBar.css("width", "0%"); }, done: function (e, data) { console.log("--data-->"+ JSON.stringify(data.result.data)); //设置服务器返回的url $("#" + name).val(data.result.data.url); setTimeout(function () { progressArea.addClass("am-hide"); }, 1500); }, progressall: function (e, data) { var progress = parseInt(data.loaded / data.total * 100, 10); console.log(progress); progressBar.css("width", progress + "%"); progressText.html(progress + "%"); }, error: function (jqXHR2, textStatus, errorThrown) { progressArea.removeClass("am-hide"); progressText.addClass("am-text-danger"); progressText.html("imageupload error!"); progressBar.css("width", "0%"); setTimeout(function () { progressArea.addClass("am-hide"); }, 2000); }, fail: function (jqXHR2, textStatus) { progressArea.removeClass("am-hide"); progressText.addClass("am-text-danger"); progressText.html("imageupload fail!"); progressBar.css("width", "0%"); setTimeout(function () { progressArea.addClass("am-hide"); }, 2000); }, processfail: function (e, data) { var currentFile = data.files[data.index]; if (data.files.error && currentFile.error) { parent.layer.msg(currentFile.error); } } }); }; var deleteProject = function (id) { if (window.confirm('确定要删除此项目吗?')) { $.ajax({ url: '${base}/project/deleteProject/' + id, dataType: "json", async: false, success: function (data) { if (data.status == 0) { alert(data.msg); window.location.href = window.location.href; } else if (data.status == 1) { alert(data.msg); } } }); } }; var projectNo = function(id) { console.log("~~~~~~~~~~~~~"+id); $("#modelId").val(id); // $('#myModal').modal('show'); $('#myModal').modal({ relatedElement: this, onConfirm: function(id) { console.log("提交"); projectNoCheck(id); }, onCancel: function() { console.log("取消"); } }); }; var openHuiqianModal = function(id, name) { console.log("~~~~~~~~~~~~~"+id); $("#hqProjectId").val(id); $("#hqProjectName").html(name); $('#myModal2').modal({ relatedElement: this, onConfirm: function(id) { console.log("提交"); }, onCancel: function() { console.log("取消"); } }); }; var openChengjieModal = function() { $('#myModal3').modal({ relatedElement: this, onConfirm: function() { console.log("提交"); }, onCancel: function() { console.log("取消"); } }); }; var projectNoCheck = function () { var newProjectNo = $("#newProjectNo").val(); var id = $("#modelId").val(); $.ajax({ url: "${base}/project/editProjectNo?projectNo=" + newProjectNo + "&id=" + id, type: "get", dataType: "json", async: false, success: function (data) { alert(data.msg); window.location.href=window.location.href; } }); }; </script>