Browse Source

0号台账下,清单查找定位,统一代码

MaiXinRong 5 years ago
parent
commit
a7638545d5

+ 20 - 55
app/public/js/ledger.js

@@ -1143,19 +1143,26 @@ $(document).ready(function() {
                 dealBills.spread.refresh();
             } else if (tab.attr('content') === '#search' && !searchLedger) {
                 if (!searchLedger) {
-                    searchLedger = new SearchLedger($('#search'), {
-                        cols: [
-                            {title: '项目节编号', field: 'code', hAlign: 0, width: 120, formatter: '@', readOnly: true},
-                            {title: '清单编号', field: 'b_code', hAlign: 0, width: 120, formatter: '@', readOnly: true},
-                            {title: '名称', field: 'name', width: 230, hAlign: 0, formatter: '@', readOnly: true},
-                            {title: '单位', field: 'unit', width: 50, hAlign: 1, formatter: '@', readOnly: true},
-                            {title: '单价', field: 'unit_price', hAlign: 2, width: 50, readOnly: true},
-                            {title: '数量', field: 'quantity', hAlign: 2, width: 50, readOnly: true},
-                        ],
-                        emptyRows: 0,
-                        headRows: 1,
-                        headRowHeight: [40],
-                        defaultRowHeight: 21,
+                    searchLedger = $.billsSearch({
+                        selector: '#search',
+                        searchSpread: ledgerSpread,
+                        resultSpreadSetting: {
+                            cols: [
+                                {title: '项目节编号', field: 'code', hAlign: 0, width: 120, formatter: '@', readOnly: true},
+                                {title: '清单编号', field: 'b_code', hAlign: 0, width: 120, formatter: '@', readOnly: true},
+                                {title: '名称', field: 'name', width: 230, hAlign: 0, formatter: '@', readOnly: true},
+                                {title: '单位', field: 'unit', width: 50, hAlign: 1, formatter: '@', readOnly: true},
+                                {title: '单价', field: 'unit_price', hAlign: 2, width: 50, readOnly: true},
+                                {title: '数量', field: 'quantity', hAlign: 2, width: 50, readOnly: true},
+                            ],
+                            emptyRows: 0,
+                            headRows: 1,
+                            headRowHeight: [40],
+                            defaultRowHeight: 21,
+                        },
+                        afterLocated: function () {
+                            posOperationObj.loadCurPosData();
+                        }
                     });
                 }
                 searchLedger.spread.refresh();
@@ -1495,48 +1502,6 @@ $(document).ready(function() {
             return result;
         }
      }
-    class SearchLedger {
-        constructor(obj, spreadSetting) {
-            const self = this;
-            this.obj = obj;
-            this.spreadSetting = spreadSetting;
-            this.spread = SpreadJsObj.createNewSpread($('#search-result', this.obj)[0]);
-            SpreadJsObj.initSheet(this.spread.getActiveSheet(), this.spreadSetting);
-            SpreadJsObj.forbiddenSpreadContextMenu('#search-result', this.spread);
-            $('input', this.obj).bind('keydown', function (e) {
-                if (e.keyCode == 13) {
-                    self.search();
-                }
-            });
-            $('#searchLedger', this.obj).bind('click', () => {self.search()});
-            this.spread.getActiveSheet().bind(GC.Spread.Sheets.Events.CellDoubleClick, function (e, info) {
-                const sheet = info.sheet;
-                const data = sheet.zh_data;
-                if (!data) { return }
-
-                const curBills = data[info.row];
-                if (!curBills) { return }
-
-                SpreadJsObj.locateTreeNode(ledgerSpread.getActiveSheet(), curBills.ledger_id, true);
-                posOperationObj.loadCurPosData();
-            });
-        }
-        search () {
-            const keyword = $('input', this.obj).val();
-            this.searchResult = [];
-            const sortData = SpreadJsObj.getSortData(ledgerSpread.getActiveSheet());
-            for (const node of sortData) {
-                if ((node.code && node.code.indexOf(keyword) > -1) ||
-                    node.b_code && node.b_code.indexOf(keyword) > -1 ||
-                    node.name && node.name.indexOf(keyword) > -1) {
-                    const data = JSON.parse(JSON.stringify(node));
-                    data.visible = true;
-                    this.searchResult.push(data);
-                }
-            }
-            SpreadJsObj.loadSheetData(this.spread.getActiveSheet(), 'data', this.searchResult);
-        }
-    }
 
     $('#searchAccount').click(() => {
         const data = {

+ 26 - 1
app/public/js/ledger_audit.js

@@ -103,7 +103,7 @@ $(document).ready(() => {
         SpreadJsObj.saveTopAndSelect(info.sheet, ckBillsSpread);
     });
 
-    let dealBills;
+    let dealBills, searchLedger;
     $.divResizer({
         select: '#right-spr',
         callback: function () {
@@ -163,6 +163,31 @@ $(document).ready(() => {
                     defaultRowHeight: 21,
                 });
                 dealBills.loadData();
+            } else if (tab.attr('content') === '#search' && !searchLedger) {
+                if (!searchLedger) {
+                    searchLedger = $.billsSearch({
+                        selector: '#search',
+                        searchSpread: ledgerSpread,
+                        resultSpreadSetting: {
+                            cols: [
+                                {title: '项目节编号', field: 'code', hAlign: 0, width: 120, formatter: '@', readOnly: true},
+                                {title: '清单编号', field: 'b_code', hAlign: 0, width: 120, formatter: '@', readOnly: true},
+                                {title: '名称', field: 'name', width: 230, hAlign: 0, formatter: '@', readOnly: true},
+                                {title: '单位', field: 'unit', width: 50, hAlign: 1, formatter: '@', readOnly: true},
+                                {title: '单价', field: 'unit_price', hAlign: 2, width: 50, readOnly: true},
+                                {title: '数量', field: 'quantity', hAlign: 2, width: 50, readOnly: true},
+                            ],
+                            emptyRows: 0,
+                            headRows: 1,
+                            headRowHeight: [40],
+                            defaultRowHeight: 21,
+                        },
+                        afterLocated: function () {
+                            loadCurPosData();
+                        }
+                    });
+                }
+                searchLedger.spread.refresh();
             }
         } else {
             tab.removeClass('active');

+ 57 - 0
app/public/js/ledger_search.js

@@ -103,4 +103,61 @@
         });
         return searchObj;
     }
+    $.billsSearch = function (setting) {
+        if (!setting.selector || !setting.searchSpread || !setting.resultSpreadSetting) return;
+        const resultId = setting.id + '-search-result';
+        const obj = $(setting.selector);
+        obj.html(
+            '                        <div class="sjs-bar-1">\n' +
+            '                            <div class="input-group input-group-sm">\n' +
+            '                                <input id="searchKeyword" type="text" class="form-control" placeholder="可查找 项目节编号/清单编号/名称" aria-label="Recipient\'s username" aria-describedby="button-addon2">\n' +
+            '                                <div class="input-group-append">\n' +
+            '                                    <button class="btn btn-outline-secondary" type="button"">搜索</button>\n' +
+            '                                </div>\n' +
+            '                            </div>\n' +
+            '                        </div>\n' +
+            '                        <div id="' + resultId + '" class="sjs-sh-1">\n' +
+            '                        </div>'
+        );
+        autoFlashHeight();
+        const resultSpread = SpreadJsObj.createNewSpread($('#' + resultId)[0]);
+        SpreadJsObj.initSheet(resultSpread.getActiveSheet(), setting.resultSpreadSetting);
+        SpreadJsObj.forbiddenSpreadContextMenu('#' + resultId, resultSpread);
+        const searchSheet = setting.searchSpread.getActiveSheet();
+        let searchResult = [];
+        const searchBills = function () {
+            const keyword = $('input', obj).val();
+            searchResult = [];
+            const sortData = SpreadJsObj.getSortData(searchSheet);
+            for (const node of sortData) {
+                if ((node.code && node.code.indexOf(keyword) > -1) ||
+                    node.b_code && node.b_code.indexOf(keyword) > -1 ||
+                    node.name && node.name.indexOf(keyword) > -1) {
+                    const data = JSON.parse(JSON.stringify(node));
+                    data.visible = true;
+                    searchResult.push(data);
+                }
+            }
+            SpreadJsObj.loadSheetData(resultSpread.getActiveSheet(), 'data', searchResult);
+        };
+
+        $('input', this.obj).bind('keydown', function (e) {
+            if (e.keyCode == 13) searchBills();
+        });
+        $('button', this.obj).bind('click', () => {searchBills()});
+        resultSpread.getActiveSheet().bind(spreadNS.Events.CellDoubleClick, function (e, info) {
+            const sheet = info.sheet;
+            const data = sheet.zh_data;
+            if (!data) { return }
+
+            const curBills = data[info.row];
+            if (!curBills) { return }
+
+            SpreadJsObj.locateTreeNode(searchSheet, curBills.ledger_id, true);
+            if (setting.afterLocated) {
+                setting.afterLocated();
+            }
+        });
+        return {spread: resultSpread};
+    }
 })(jQuery);

+ 26 - 1
app/public/js/revise.js

@@ -575,7 +575,7 @@ $(document).ready(() => {
             return result;
         }
     }
-    let stdChapter, stdBills;
+    let stdChapter, stdBills, searchLedger;
     const dealBills = new DealBills('#deal-bills-spread', {
         cols: [
             {title: '清单编号', field: 'code', hAlign: 0, width: 120, formatter: '@', readOnly: true},
@@ -691,6 +691,31 @@ $(document).ready(() => {
             } else if (tab.attr('content') === '#deal-bills') {
                 dealBills.loadData();
                 dealBills.spread.refresh();
+            } else if (tab.attr('content') === '#search' && !searchLedger) {
+                if (!searchLedger) {
+                    searchLedger = $.billsSearch({
+                        selector: '#search',
+                        searchSpread: billsSpread,
+                        resultSpreadSetting: {
+                            cols: [
+                                {title: '项目节编号', field: 'code', hAlign: 0, width: 120, formatter: '@', readOnly: true},
+                                {title: '清单编号', field: 'b_code', hAlign: 0, width: 120, formatter: '@', readOnly: true},
+                                {title: '名称', field: 'name', width: 230, hAlign: 0, formatter: '@', readOnly: true},
+                                {title: '单位', field: 'unit', width: 50, hAlign: 1, formatter: '@', readOnly: true},
+                                {title: '单价', field: 'unit_price', hAlign: 2, width: 50, readOnly: true},
+                                {title: '数量', field: 'quantity', hAlign: 2, width: 50, readOnly: true},
+                            ],
+                            emptyRows: 0,
+                            headRows: 1,
+                            headRowHeight: [40],
+                            defaultRowHeight: 21,
+                        },
+                        afterLocated: function () {
+                            posSpreadObj.loadCurPosData();
+                        }
+                    });
+                }
+                searchLedger.spread.refresh();
             }
         }
         billsSpread.refresh();

+ 7 - 2
app/view/ledger/audit.ejs

@@ -67,10 +67,12 @@
                 <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="deal-bills" class="tab-pane">
-                        <div class="sjs-bar-1"></div>
-                        <div class="sjs-sh-1" id="deal-bills-spread">
+                        <div class="sjs-bar-2"></div>
+                        <div class="sjs-sh-2" id="deal-bills-spread">
                         </div>
                     </div>
+                    <div id="search" class="tab-pane">
+                    </div>
                 </div>
             </div>
         </div>
@@ -81,6 +83,9 @@
                 <li class="nav-item">
                     <a class="nav-link" href="javascript: void(0);" role="tab" content="#deal-bills">签约清单</a>
                 </li>
+                <li class="nav-item">
+                    <a class="nav-link" href="javascript: void(0);" role="tab" content="#search">查找定位</a>
+                </li>
             </ul>
         </div>
     </div>

+ 10 - 10
app/view/ledger/explode.ejs

@@ -87,16 +87,16 @@
                 <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">
-                        <div class="sjs-bar-1">
-                            <div class="input-group input-group-sm">
-                                <input id="searchKeyword" type="text" class="form-control" placeholder="可查找 项目节编号/清单编号/名称" aria-label="Recipient's username" aria-describedby="button-addon2">
-                                <div class="input-group-append">
-                                    <button class="btn btn-outline-secondary" type="button" id="searchLedger">搜索</button>
-                                </div>
-                            </div>
-                        </div>
-                        <div id="search-result" class="sjs-sh-1">
-                        </div>
+                        <!--<div class="sjs-bar-1">-->
+                            <!--<div class="input-group input-group-sm">-->
+                                <!--<input id="searchKeyword" type="text" class="form-control" placeholder="可查找 项目节编号/清单编号/名称" aria-label="Recipient's username" aria-describedby="button-addon2">-->
+                                <!--<div class="input-group-append">-->
+                                    <!--<button class="btn btn-outline-secondary" type="button" id="searchLedger">搜索</button>-->
+                                <!--</div>-->
+                            <!--</div>-->
+                        <!--</div>-->
+                        <!--<div id="search-result" class="sjs-sh-1">-->
+                        <!--</div>-->
                     </div>
                     <div id="std-chapter" class="tab-pane">
                         <div class="sjs-bar-2">

+ 12 - 7
app/view/revise/info.ejs

@@ -92,10 +92,10 @@
                 <div class="resize-x" id="revise-right-spr" r-Type="width" div1="#left-view" div2="#right-view" title="调整大小" a-type="percent"><!--调整左右高度条--></div>
                 <div class="tab-content">
                     <div id="xd-content" class="tab-pane">
-                        <div class="sjs-bar-1">
+                        <div class="sjs-bar-2">
                             <div class="d-flex"><a href="javascirpt: void(0);" class="btn btn-sm btn-outline-success mb-1 ml-auto" id="save">保存</a></div>
                         </div>
-                        <div class="sjs-sh-1" style="overflow:auto">
+                        <div class="sjs-sh-2" style="overflow:auto">
                             <div class="form-group mt-2">
                                 <label >创建时间</label>
                                 <input type="" class="form-control" value="<%- revise.in_time.toLocaleString() %>" disabled>
@@ -110,22 +110,24 @@
                             </div>
                         </div>
                     </div>
+                    <div id="search" class="tab-pane">
+                    </div>
                     <div id="std-chapter" class="tab-pane">
-                        <div class="sjs-bar-2">
+                        <div class="sjs-bar-3">
                             <select class="form-control form-control-sm"><option>0号计量台帐部位参考(项目节)</option></select>
                         </div>
-                        <div id="std-chapter-spread" class="sjs-sh-2">
+                        <div id="std-chapter-spread" class="sjs-sh-3">
                         </div>
                     </div>
                     <div id="std-bills" class="tab-pane">
-                        <div class="sjs-bar-3">
+                        <div class="sjs-bar-4">
                             <select class="form-control form-control-sm"><option>0号计量台帐部位参考(项目节)</option></select>
                         </div>
-                        <div id="std-bills-spread" class="sjs-sh-3">
+                        <div id="std-bills-spread" class="sjs-sh-4">
                         </div>
                     </div>
                     <div id="deal-bills" class="tab-pane">
-                        <div id="deal-bills-spread" class="sjs-sh-4">
+                        <div id="deal-bills-spread" class="sjs-sh-5">
                         </div>
                     </div>
                 </div>
@@ -139,6 +141,9 @@
                     <a class="nav-link" content="#xd-content" href="javascript: void(0);">修订详情</a>
                 </li>
                 <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="#std-chapter" href="javascript: void(0);">项目节</a>
                 </li>
                 <li class="nav-item">