| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 | <% include ./settle_menu.ejs %><div class="panel-content">    <div class="panel-title">        <div class="title-main d-flex">            <% include ./settle_mini_menu.ejs %>            <div>                <div class="d-inline-block">                    <div class="dropdown">                        <button class="btn btn-sm btn-light dropdown-toggle text-primary" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">                            <i class="fa fa-list-ol"></i> 显示层级                        </button>                        <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">                            <a class="dropdown-item" name="showLevel" tag="1" href="javascript: void(0);">第一层</a>                            <a class="dropdown-item" name="showLevel" tag="2" href="javascript: void(0);">第二层</a>                            <a class="dropdown-item" name="showLevel" tag="3" href="javascript: void(0);">第三层</a>                            <a class="dropdown-item" name="showLevel" tag="4" href="javascript: void(0);">第四层</a>                            <a class="dropdown-item" name="showLevel" tag="5" href="javascript: void(0);">第五层</a>                            <a class="dropdown-item" name="showLevel" tag="last" href="javascript: void(0);">最底层</a>                        </div>                    </div>                </div>            </div>            <div class="ml-auto">            </div>        </div>    </div>    <div class="content-wrap pr-46">        <div class="c-header p-0">        </div>        <div class="row w-100 sub-content">            <div id="left-view" class="c-body" style="width: 100%">                <!--上部分-->                <div class="sjs-height-1" id="settle-bills">                </div>                <!--下部分-->                <div class="bcontent-wrap" id="main-bottom">                    <div id="main-resize" class="resize-y" r-Type="height" div1="#settle-bills" div2="#main-bottom" store-id="settle-main" store-version="1.0.0" min="100"></div>                    <div class="bc-bar mb-1">                        <ul class="nav nav-tabs">                            <li class="nav-item">                                <a class="nav-link active" href="#">计量单元</a>                            </li>                        </ul>                    </div>                    <div class="sp-wrap" id="settle-pos">                    </div>                </div>            </div>            <div id="right-view" class="c-body" style="display: none; width: 33%;">                <div class="resize-x" id="right-spr" r-Type="width" div1="#left-view" div2="#right-view" title="调整大小" a-type="percent"><!--调整左右高度条--></div>                <div class="tab-content">                    <!--查找定位-->                    <div id="search" class="tab-pane tab-select-show">                        <div class="sjs-bar-1">                            <div class="input-group input-group-sm pb-1">                                <div class="input-group-prepend">                                    <div class="input-group-text">                                        <input type="radio" name="searchType" id="over"> 超计                                    </div>                                    <div class="input-group-text">                                        <input type="radio" name="searchType" id="empty"> 漏计                                    </div>                                </div>                                <input type="text" class="form-control form-control-sm" placeholder="可查找 项目节编号 / 清单编号 /名称" id="keyword">                                <div class="input-group-append">                                    <button class="btn btn-outline-secondary btn-sm" type="button" id="searchLedger">搜索</button>                                </div>                            </div>                        </div>                        <div id="search-result" class="sjs-sh-1">                        </div>                    </div>                    <div id="bills-tag" class="tab-pane tab-select-show">                    </div>                    <!--附件-->                    <div id="fujian" class="tab-pane tab-select-show">                    </div>                </div>            </div>        </div>        <div class="side-menu">            <!--右侧菜单-->            <ul class="nav flex-column right-nav">                <li class="nav-item">                    <a class="nav-link" content="#search" href="javascript: void(0);">查找定位</a>                </li>                <li class="nav-item">                    <a class="nav-link" content="#bills-tag" href="javascript: void(0);">书签</a>                </li>                <li class="nav-item">                    <a class="nav-link" content="#fujian" href="javascript: void(0);">附件</a>                </li>            </ul>        </div>    </div></div><div style="display: none">    <img src="/public/images/ellipsis_horizontal.png" id="ellipsis-icon" />    <img src="/public/images/icon-ok.png" id="icon-ok" />    <img src="/public/images/file_clip.png" id="rela-file-icon">    <img src="/public/images/file_clip_hover.png" id="rela-file-hover"></div><script>    const readOnly = <%- settle.readOnly %>;    const auditConst = JSON.parse(JSON.stringify('<%- auditConst %>'));    const tenderName = '<%- ctx.tender.name %>';    const settleOrder = <%- ctx.settle.settle_order %>;    const settleComplete = <%- (ctx.settle.audit_status === auditConst.status.checked ? 1 : 0 )%>;    const tenderInfo = JSON.parse(unescape('<%- escape(JSON.stringify(ctx.tender.info)) %>'));    const thousandth = <%- ctx.tender.info.display.thousandth %>;    const thirdParty = JSON.parse('<%- JSON.stringify(thirdParty) %>');    const settleStatusHint = JSON.parse('<%- JSON.stringify(settleStatusHint )%>');    const settleStatus = JSON.parse('<%- JSON.stringify(settleStatus )%>');    const settleStatusColor = JSON.parse('<%- JSON.stringify(settleStatusColor )%>');    const billsSpreadSetting = {        cols: [            {title: '结算状态', colSpan: '1', rowSpan: '2', field: 'settle_status', hAlign: 1, width: 60, formatter: '@', readOnly: true, getValue: function(data) {                // return data.b_code ? '' : settleStatusHint[data.settle_status] || ''                return settleStatusHint[data.settle_status] || '';            }},            {title: '项目节编号', colSpan: '1', rowSpan: '2', field: 'code', hAlign: 0, width: 145, formatter: '@', readOnly: true, cellType: 'tree'},            {title: '清单编号', colSpan: '1', rowSpan: '2', field: 'b_code', hAlign: 0, width: 70, formatter: '@', readOnly: true},            {title: '名称', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 185, formatter: '@', readOnly: true},            {title: '单位', colSpan: '1', rowSpan: '2', field: 'unit', hAlign: 1, width: 60, formatter: '@', readOnly: true, cellType: 'unit'},            {title: '单价', colSpan: '1', rowSpan: '2', field: 'unit_price', hAlign: 2, width: 60, readOnly: true, type: 'Number'},            {title: '台账|数量', colSpan: '2|1', rowSpan: '1|1', field: 'quantity', hAlign: 2, width: 60, readOnly: true, type: 'Number'},            {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'total_price', hAlign: 2, width: 60, readOnly: true, type: 'Number'},            {title: '本期合同结算|数量', colSpan: '2|1', rowSpan: '1|1', field: 'cur_contract_qty', hAlign: 2, width: 60, readOnly: true, type: 'Number'},            {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'cur_contract_tp', hAlign: 2, width: 60, readOnly: true, type: 'Number'},            {title: '本期数量变更|数量', colSpan: '2|1', rowSpan: '1|1', field: 'cur_qc_qty', hAlign: 2, width: 60, readOnly: true, type: 'Number'},            {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'cur_qc_tp', hAlign: 2, width: 60, readOnly: true, type: 'Number'},            {title: '本期完成结算|数量', colSpan: '3|1', rowSpan: '1|1', field: 'cur_gather_qty', hAlign: 2, width: 60, readOnly: true, type: 'Number'},            {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'cur_gather_tp', hAlign: 2, width: 60, readOnly: true, type: 'Number'},            {title: '|完成率(%)', colSpan: '1', rowSpan: '|1', field: 'cur_final_1_percent', hAlign: 2, width: 80, readOnly: true, type: 'Number'},            {title: '截止本期合同结算|数量', colSpan: '2|1', rowSpan: '1|1', field: 'end_contract_qty', hAlign: 2, width: 60, readOnly: true, type: 'Number'},            {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'end_contract_tp', hAlign: 2, width: 60, readOnly: true, type: 'Number'},            {title: '截止本期数量变更|数量', colSpan: '2|1', rowSpan: '1|1', field: 'end_qc_qty', hAlign: 2, width: 60, readOnly: true, type: 'Number'},            {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'end_qc_tp', hAlign: 2, width: 60, readOnly: true, type: 'Number'},            {title: '截止本期完成结算|数量', colSpan: '3|1', rowSpan: '1|1', field: 'end_gather_qty', hAlign: 2, width: 60, readOnly: true, type: 'Number'},            {title: '|金额', colSpan: '|1', rowSpan: '|1', field: 'end_gather_tp', hAlign: 2, width: 60, readOnly: true, type: 'Number'},            {title: '|完成率(%)', colSpan: '1', rowSpan: '|1', field: 'end_final_1_percent', hAlign: 2, width: 80, readOnly: true, type: 'Number'},            {title: '图(册)号', colSpan: '1', rowSpan: '2', field: 'drawing_code', hAlign: 0, width: 80, formatter: '@', readOnly: true},            {title: '备注', colSpan: '1', rowSpan: '2', field: 'memo', hAlign: 0, width: 100, formatter: '@', cellType: 'ellipsisAutoTip', readOnly: true},            <% if (ctx.session.sessionProject.gxby) { %>            {title: '工序报验', colSpan: '1', rowSpan: '2', field: 'gxby', hAlign: 1, width: 80, formatter: '@', readOnly: true},            <% } %>            <% if (ctx.session.sessionProject.dagl) { %>            {title: '档案管理', colSpan: '1', rowSpan: '2', field: 'dagl', hAlign: 1, width: 80, formatter: '@', readOnly: true},            <% } %>        ],        emptyRows: 0,        headRows: 2,        headRowHeight: [25, 25],        defaultRowHeight: 21,        headerFont: '12px 微软雅黑',        font: '12px 微软雅黑',        frozenColCount: 5,        frozenLineColor: '#93b5e4',        readOnly,        getForeColor: function(sheet, data, row, col, foreColor) {            if (col.field === 'settle_status') {                return data ? settleStatusColor[data.settle_status] || foreColor : foreColor;            } else {                return foreColor;            }        }    };    const posSpreadSetting = {        cols: [            {title: '结算状态', colSpan: '1', rowSpan: '2', field: 'settle_status', hAlign: 1, width: 60, formatter: '@', readOnly: true, getValue: function(data) { return settleStatusHint[data.settle_status] || '' }},            {title: '计量单元', colSpan: '1', rowSpan: '2', field: 'name', hAlign: 0, width: 180, formatter: '@', readOnly: true},            {title: '位置', colSpan: '1', rowSpan: '2', field: 'position', hAlign: 0, width: 60, formatter: '@', readOnly: true},            {title: '台账数量', colSpan: '1', rowSpan: '2', field: 'quantity', hAlign: 2, width: 60, formatter: '@', readOnly: true},            {title: '本期结算|合同', colSpan: '3|1', rowSpan: '1|1', field: 'cur_contract_qty', hAlign: 2, width: 60, type: 'Number', readOnly: true},            {title: '|数量变更', colSpan: '|1', rowSpan: '|1', field: 'cur_qc_qty', hAlign: 2, width: 80, type: 'Number', readOnly: true},            {title: '|完成', colSpan: '|1', rowSpan: '|1', field: 'cur_gather_qty', hAlign: 2, width: 60, type: 'Number', readOnly: true},            {title: '截止本期结算|合同', colSpan: '3|1', rowSpan: '1|1', field: 'end_contract_qty', hAlign: 2, width: 60, type: 'Number', readOnly: true},            {title: '|数量变更', colSpan: '|1', rowSpan: '|1', field: 'end_qc_qty', hAlign: 2, width: 80, type: 'Number', readOnly: true},            {title: '|完成', colSpan: '|1', rowSpan: '|1', field: 'end_gather_qty', hAlign: 2, width: 60, type: 'Number', readOnly: true},            {title: '图册号', colSpan: '1', rowSpan: '2', field: 'drawing_code', hAlign: 0, width: 80, formatter: '@'},            <% if (ctx.session.sessionProject.gxby) { %>            {title: '工序报验', colSpan: '1', rowSpan: '2', field: 'gxby', hAlign: 1, width: 80, formatter: '@', readOnly: true},            <% } %>            <% if (ctx.session.sessionProject.dagl) { %>            {title: '档案管理', colSpan: '1', rowSpan: '2', field: 'dagl', hAlign: 1, width: 80, formatter: '@', readOnly: true},            <% } %>        ],        emptyRows: 0,        headRows: 2,        headRowHeight: [25, 25],        headColWidth: [30],        defaultRowHeight: 21,        headerFont: '12px 微软雅黑',        font: '12px 微软雅黑',        readOnly,        getForeColor: function(sheet, data, row, col, foreColor) {            if (col.field === 'settle_status') {                return data ? settleStatusColor[data.settle_status] || foreColor : foreColor;            } else {                return foreColor;            }        }    };</script>
 |