فهرست منبع

查找定位,调整

MaiXinRong 5 سال پیش
والد
کامیت
22cab5db34
1فایلهای تغییر یافته به همراه56 افزوده شده و 15 حذف شده
  1. 56 15
      app/public/js/shares/cs_tools.js

+ 56 - 15
app/public/js/shares/cs_tools.js

@@ -275,12 +275,27 @@ const showSideTools = function (show) {
         if (!setting.searchRangeStr) setting.searchRangeStr = '项目节编号/清单编号/名称';
         const resultId = setting.id + '-search-result';
         const obj = $(setting.selector);
+        let filter = [];
+        if (setting.searchOver || setting.searchEmpty) {
+            filter.push('<select class="form-control form-control-sm" id="search-filter">');
+            filter.push('<option value="">台账</option>');
+            if (setting.searchOver) filter.push('<option value="over">超计</option>');
+            if (setting.searchEmpty) filter.push('<option value="less">漏计</option>');
+            filter.push('</select>');
+            // filter.push('<div class="input-group-prepend">');
+            // filter.push('<button class="btn btn-outline-secondary dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">台帐</button>');
+            // filter.push('<div class="dropdown-menu">');
+            // filter.push('<a class="dropdown-item" href="javascripty: void(0)" id="search-bills">台账</a>');
+            // filter.push('<a class="dropdown-item" href="javascripty: void(0)" id="search-over">超计</a>');
+            // filter.push('<a class="dropdown-item" href="javascripty: void(0)" id="search-less">漏计</a>');
+            // filter.push('</div>');
+            // filter.push('</div>');
+        }
         obj.html(
             '                        <div class="sjs-bar">\n' +
             '                            <div class="input-group input-group-sm pb-1">\n' +
             '                                <div class="input-group-prepend">\n' +
-            (setting.searchOver ? '                                    <div class="input-group-text"><input type="radio" name="searchType" id="over"> 超计</div>\n' : '') +
-            (setting.searchEmpty ? '                                    <div class="input-group-text"><input type="radio" name="searchType" id="empty"> 漏计</div>\n' : '') +
+            filter.join('') +
             '                                </div>' +
             '                                <input id="searchKeyword" type="text" class="form-control" placeholder="可查找 ' + setting.searchRangeStr + '" aria-label="Recipient\'s username" aria-describedby="button-addon2">\n' +
             '                                <div class="input-group-append">\n' +
@@ -297,6 +312,16 @@ const showSideTools = function (show) {
         SpreadJsObj.forbiddenSpreadContextMenu('#' + resultId, resultSpread);
         const searchSheet = setting.searchSpread.getActiveSheet();
         let searchResult = [];
+        const search = function () {
+            const filter = $('#search-filter').val();
+            if (filter === 'over') {
+                searchOver();
+            } else if (filter === 'less') {
+                searchLess();
+            } else {
+                searchBills();
+            }
+        };
         const searchBills = function () {
             const keyword = $('#searchKeyword', obj).val();
             searchResult = [];
@@ -320,42 +345,60 @@ const showSideTools = function (show) {
             }
         };
         const searchOver = function () {
+            const keyword = $('#searchKeyword', obj).val();
             searchResult = [];
             const sortData = SpreadJsObj.getSortData(searchSheet);
             for (const node of sortData) {
                 if (node.children && node.children.length > 0) continue;
                 if (setting.checkOver && setting.checkOver(node)) {
-                    const data = JSON.parse(JSON.stringify(node));
-                    data.visible = true;
-                    searchResult.push(data);
+                    if (!keyword ||
+                        (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);
+                    }
                 }
             }
             calculateCompletePercent(searchResult);
             SpreadJsObj.loadSheetData(resultSpread.getActiveSheet(), 'data', searchResult);
         };
         const searchEmpty = function () {
+            const keyword = $('#searchKeyword', obj).val();
             searchResult = [];
             const sortData = SpreadJsObj.getSortData(searchSheet);
             for (const node of sortData) {
                 if (node.children && node.children.length > 0) continue;
                 if (setting.checkEmpty && setting.checkEmpty(node)) {
-                    const data = JSON.parse(JSON.stringify(node));
-                    data.visible = true;
-                    searchResult.push(data);
+                    if (!keyword ||
+                        (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);
+                    }
                 }
             }
             calculateCompletePercent(searchResult);
             SpreadJsObj.loadSheetData(resultSpread.getActiveSheet(), 'data', searchResult);
         };
         const searchLess = function () {
+            const keyword = $('#searchKeyword', obj).val();
             searchResult = [];
             const sortData = SpreadJsObj.getSortData(searchSheet);
             for (const node of sortData) {
                 if (node.children && node.children.length > 0) continue;
                 if (setting.checkLess && setting.checkLess(node)) {
-                    const data = JSON.parse(JSON.stringify(node));
-                    data.visible = true;
-                    searchResult.push(data);
+                    if (!keyword ||
+                        (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);
+                    }
                 }
             }
             calculateCompletePercent(searchResult);
@@ -363,11 +406,9 @@ const showSideTools = function (show) {
         };
 
         $('input', obj).bind('keydown', function (e) {
-            if (e.keyCode == 13) searchBills();
+            if (e.keyCode == 13) search();
         });
-        $('button', obj).bind('click', () => {searchBills()});
-        $('#over', obj).bind('change', () => {searchOver()});
-        $('#empty', obj).bind('change', () => {searchLess()});
+        $('button', obj).bind('click', () => {search()});
         resultSpread.getActiveSheet().bind(spreadNS.Events.CellDoubleClick, function (e, info) {
             const sheet = info.sheet;
             const data = sheet.zh_data;