|
@@ -0,0 +1,190 @@
|
|
|
+<% include ./list_menu.ejs %>
|
|
|
+<div class="panel-content">
|
|
|
+ <div class="panel-title">
|
|
|
+ <div class="title-main d-flex">
|
|
|
+ <% include ./list_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>
|
|
|
+ </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>
|
|
|
+ </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 = true;
|
|
|
+ const tenderName = '<%- ctx.tender.name %>';
|
|
|
+ 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: true,
|
|
|
+ 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: true,
|
|
|
+ getForeColor: function(sheet, data, row, col, foreColor) {
|
|
|
+ if (col.field === 'settle_status') {
|
|
|
+ return data ? settleStatusColor[data.settle_status] || foreColor : foreColor;
|
|
|
+ } else {
|
|
|
+ return foreColor;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+</script>
|