Bladeren bron

签约清单,查找功能

MaiXinRong 3 jaren geleden
bovenliggende
commit
61bf2976b9
4 gewijzigde bestanden met toevoegingen van 148 en 4 verwijderingen
  1. 46 0
      app/public/js/ledger.js
  2. 47 0
      app/public/js/revise.js
  3. 27 1
      app/view/ledger/explode.ejs
  4. 28 3
      app/view/revise/info.ejs

+ 46 - 0
app/public/js/ledger.js

@@ -2782,6 +2782,52 @@ $(document).ready(function() {
                     }
                 });
             }
+            this.initDealBillsSearch();
+        }
+        search(keyword) {
+            this.searchResult = [];
+            this.searchCur = 0;
+            if (keyword) {
+                for (const [i, d] of this.data.entries()) {
+                    if (d.code.indexOf(keyword) >= 0 || d.name.indexOf(keyword) >= 0) this.searchResult.push(d);
+                }
+            }
+            $('#dbs-count').html(`结果:${this.searchResult.length}`);
+            if (this.searchResult.length > 0) SpreadJsObj.locateData(this.sheet, this.searchResult[0]);
+        }
+        searchPre() {
+            if (this.searchResult.length <= 1) return;
+            this.searchCur = this.searchCur - 1;
+            if (this.searchCur < 0) this.searchCur = this.searchResult.length - 1;
+            SpreadJsObj.locateData(this.sheet, this.searchResult[this.searchCur]);
+        }
+        searchNext() {
+            if (this.searchResult.length <= 1) return;
+            this.searchCur = this.searchCur + 1;
+            if (this.searchCur >= this.searchResult.length) this.searchCur = 0;
+            SpreadJsObj.locateData(this.sheet, this.searchResult[this.searchCur]);
+        }
+        searchClear() {
+            $('#dbs-keyword').val('');
+            this.searchResult = [];
+            this.searchCur = 0;
+            $('#dbs-count').html(`结果:${this.searchResult.length}`);
+        }
+        initDealBillsSearch() {
+            const self = this;
+            $('#dbs-keyword').change(function () { self.search(this.value); });
+            $('#dbs-pre').click(function (e) {
+                self.searchPre();
+                e.stopPropagation();
+            });
+            $('#dbs-next').click(function (e) {
+                self.searchNext();
+                e.stopPropagation();
+            });
+            $('#dbs-clear').click(function (e) {
+                self.searchClear();
+                e.stopPropagation();
+            });
         }
         loadData () {
             const self = this;

+ 47 - 0
app/public/js/revise.js

@@ -1981,6 +1981,7 @@ $(document).ready(() => {
             this.url = '/tender/' + window.location.pathname.split('/')[2] + '/deal';
             this.spreadSetting = spreadSetting;
             this.spread = SpreadJsObj.createNewSpread(this.obj);
+            this.sheet = this.spread.getActiveSheet();
             SpreadJsObj.initSheet(this.spread.getActiveSheet(), this.spreadSetting);
             if (!readOnly) {
                 this.spread.bind(spreadNS.Events.CellDoubleClick, function (e, info) {
@@ -2023,6 +2024,52 @@ $(document).ready(() => {
                 });
             }
             SpreadJsObj.forbiddenSpreadContextMenu(selector, this.spread);
+            this.initDealBillsSearch();
+        }
+        search(keyword) {
+            this.searchResult = [];
+            this.searchCur = 0;
+            if (keyword) {
+                for (const [i, d] of this.data.entries()) {
+                    if (d.code.indexOf(keyword) >= 0 || d.name.indexOf(keyword) >= 0) this.searchResult.push(d);
+                }
+            }
+            $('#dbs-count').html(`结果:${this.searchResult.length}`);
+            if (this.searchResult.length > 0) SpreadJsObj.locateData(this.sheet, this.searchResult[0]);
+        }
+        searchPre() {
+            if (this.searchResult.length <= 1) return;
+            this.searchCur = this.searchCur - 1;
+            if (this.searchCur < 0) this.searchCur = this.searchResult.length - 1;
+            SpreadJsObj.locateData(this.sheet, this.searchResult[this.searchCur]);
+        }
+        searchNext() {
+            if (this.searchResult.length <= 1) return;
+            this.searchCur = this.searchCur + 1;
+            if (this.searchCur >= this.searchResult.length) this.searchCur = 0;
+            SpreadJsObj.locateData(this.sheet, this.searchResult[this.searchCur]);
+        }
+        searchClear() {
+            $('#dbs-keyword').val('');
+            this.searchResult = [];
+            this.searchCur = 0;
+            $('#dbs-count').html(`结果:${this.searchResult.length}`);
+        }
+        initDealBillsSearch() {
+            const self = this;
+            $('#dbs-keyword').change(function () { self.search(this.value); });
+            $('#dbs-pre').click(function (e) {
+                self.searchPre();
+                e.stopPropagation();
+            });
+            $('#dbs-next').click(function (e) {
+                self.searchNext();
+                e.stopPropagation();
+            });
+            $('#dbs-clear').click(function (e) {
+                self.searchClear();
+                e.stopPropagation();
+            });
         }
         loadData (callback) {
             if (this.loaded) {

+ 27 - 1
app/view/ledger/explode.ejs

@@ -113,7 +113,7 @@
                     <div id="std-gcl" class="tab-pane tab-select-show">
                     </div>
                     <div id="deal-bills" class="tab-pane tab-select-show">
-                        <div class="sjs-bar-4">
+                        <div class="sjs-bar-4 d-flex">
                             <div class="pb-1">
                                 <% if (dealBillsPermission) { %>
                                 <a href="#upload-deal" data-toggle="modal" data-target="#upload-deal" class="btn btn-sm btn-primary">上传签约清单</a>
@@ -123,6 +123,32 @@
                                 <a href="#db-full-code" data-toggle="modal" data-target="#db-full-code" class="btn btn-sm btn-primary">转换长编号</a>
                                 <a href="/tender/<%- ctx.tender.id %>/deal/download/签约清单.xlsx" class="btn btn-sm btn-primary" style="display: none">下载签约清单</a>
                             </div>
+                            <div class="ml-auto mr-1">
+                                <div class="dropdown">
+                                    <button class="btn btn-sm btn-outline-secondary dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+                                        <i class="fa fa-search"></i>
+                                    </button>
+                                    <div class="dropdown-menu dropdown-menu-right">
+                                        <div class="px-2 border-primary border-1 d-flex" style="width: 300px">
+                                            <div class="d-inline-block">
+                                                <div class="input-group input-group-sm">
+                                                    <input type="text" class="form-control" id="dbs-keyword" placeholder="输入编号/名称查找">
+                                                    <div class="input-group-append" >
+                                                        <span class="input-group-text" id="dbs-count">结果:0</span>
+                                                    </div>
+                                                    <div class="input-group-append" >
+                                                        <button class="btn btn-outline-secondary" id="dbs-pre" type="button" title="上一个"><i class="fa fa-angle-double-left"></i></button>
+                                                        <button class="btn btn-outline-secondary" id="dbs-next" type="button" title="下一个"><i class="fa fa-angle-double-right"></i></button>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                            <div class="d-inline-block">
+                                                <button class="btn btn-light text-danger btn-sm ml-1" id="dbs-clear" type="button"><i class="fa fa-remove"></i></button>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
                         </div>
                         <div id="deal-bills-spread" class="sjs-sh-4">
                         </div>

+ 28 - 3
app/view/revise/info.ejs

@@ -143,9 +143,34 @@
                     <div id="std-gcl" class="tab-pane">
                     </div>
                     <div id="deal-bills" class="tab-pane">
-                        <div class="sjs-bar">
-                            签约清单
-                            <a href="/tender/<%- ctx.tender.id %>/deal/download/签约清单.xlsx" class="btn btn-sm btn-primary" style="display: none">下载签约清单</a>
+                        <div class="sjs-bar d-flex">
+                            <div class="pb-1">签约清单</div>
+                            <div class="ml-auto mr-1">
+                                <div class="dropdown">
+                                    <button class="btn btn-sm btn-outline-secondary dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
+                                        <i class="fa fa-search"></i>
+                                    </button>
+                                    <div class="dropdown-menu dropdown-menu-right">
+                                        <div class="px-2 border-primary border-1 d-flex" style="width: 300px">
+                                            <div class="d-inline-block">
+                                                <div class="input-group input-group-sm">
+                                                    <input type="text" class="form-control" id="dbs-keyword" placeholder="输入编号/名称查找">
+                                                    <div class="input-group-append" >
+                                                        <span class="input-group-text" id="dbs-count">结果:0</span>
+                                                    </div>
+                                                    <div class="input-group-append" >
+                                                        <button class="btn btn-outline-secondary" id="dbs-pre" type="button" title="上一个"><i class="fa fa-angle-double-left"></i></button>
+                                                        <button class="btn btn-outline-secondary" id="dbs-next" type="button" title="下一个"><i class="fa fa-angle-double-right"></i></button>
+                                                    </div>
+                                                </div>
+                                            </div>
+                                            <div class="d-inline-block">
+                                                <button class="btn btn-light text-danger btn-sm ml-1" id="dbs-clear" type="button"><i class="fa fa-remove"></i></button>
+                                            </div>
+                                        </div>
+                                    </div>
+                                </div>
+                            </div>
                         </div>
                         <div id="deal-bills-spread" class="sjs-sh">
                         </div>