|
@@ -29,12 +29,58 @@ $(document).ready(() => {
|
|
|
unitSheet.frozenColumnCount(5);
|
|
|
unitSheet.options.frozenlineColor = '#93b5e4';
|
|
|
|
|
|
+ const filterUnitTree = createNewPathTree('filter', {
|
|
|
+ id: 'ledger_id',
|
|
|
+ pid: 'ledger_pid',
|
|
|
+ order: 'order',
|
|
|
+ level: 'level',
|
|
|
+ rootId: -1,
|
|
|
+ fullPath: 'full_path',
|
|
|
+ });
|
|
|
+
|
|
|
const unitTreeObj = {
|
|
|
+ getFilterUnitTree: function (unitTree) {
|
|
|
+ const filter = $('#unit-filter').val();
|
|
|
+ if (!filter || unitTree.nodes.length === 0) return unitTree;
|
|
|
+ filterUnitTree.clearDatas();
|
|
|
+ const filterPath = [];
|
|
|
+ const checkFullPath = function (checkPath, valuePath) {
|
|
|
+ if (valuePath.indexOf(checkPath + '-') >= 0) return true;
|
|
|
+
|
|
|
+ const pathArray = checkPath.split('-');
|
|
|
+ const tmpArray = [];
|
|
|
+ for (let i = 0, iLen = pathArray.length; i < iLen; i++) {
|
|
|
+ tmpArray.push(pathArray.slice(0, i+1).join('-'));
|
|
|
+ }
|
|
|
+ for (const ta of tmpArray) {
|
|
|
+ if (ta === valuePath) return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ };
|
|
|
+ for (const node of unitTree.nodes) {
|
|
|
+ if ((node.code && node.code.indexOf(filter) >= 0) || (node.b_code && node.b_code.indexOf(filter) >= 0)
|
|
|
+ || (node.name && node.name.indexOf(filter) >= 0) || (node.pos_name && node.pos_name.indexOf(filter) >= 0))
|
|
|
+ filterPath.push(node.full_path);
|
|
|
+ }
|
|
|
+ for (const node of unitTree.nodes) {
|
|
|
+ for (const fp of filterPath) {
|
|
|
+ if (checkFullPath(fp, node.full_path)) {
|
|
|
+ filterUnitTree.addData(node, ['id', 'ledger_id', 'ledger_pid', 'order', 'level', 'full_path', 'pos_name',
|
|
|
+ 'code', 'b_code', 'name', 'unit', 'unit_price', 'quantity', 'total_price', 'drawing_code_merge', 'memo_merge']);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ filterUnitTree.sortTreeNode();
|
|
|
+ return filterUnitTree;
|
|
|
+ },
|
|
|
loadCurUnitData: function () {
|
|
|
const node = SpreadJsObj.getSelectObject(xmjSheet);
|
|
|
SpreadJsObj.resetTopAndSelect(unitSheet);
|
|
|
if (node && node.unitTree) {
|
|
|
- SpreadJsObj.loadSheetData(unitSheet, SpreadJsObj.DataType.Tree, node.unitTree);
|
|
|
+ const relaTree = unitTreeObj.getFilterUnitTree(node.unitTree);
|
|
|
+ if ($('#unit-show-1')[0].checked) relaTree.expandByLevel(1);
|
|
|
+ SpreadJsObj.loadSheetData(unitSheet, SpreadJsObj.DataType.Tree, relaTree);
|
|
|
} else {
|
|
|
SpreadJsObj.initSheet(unitSheet, unitSpreadSetting);
|
|
|
}
|
|
@@ -210,6 +256,22 @@ $(document).ready(() => {
|
|
|
xmjSpread.refresh();
|
|
|
unitSpread.refresh();
|
|
|
});
|
|
|
+
|
|
|
+
|
|
|
+ $('#unit-filter').bind('keydown', function (e) {
|
|
|
+ const evt = window.event || e;
|
|
|
+ if (e.keyCode == 13) unitTreeObj.loadCurUnitData();
|
|
|
+ });
|
|
|
+ $('#unit-show-1').bind('change', function () {
|
|
|
+ if (!unitSheet.zh_tree) return;
|
|
|
+ if (this.checked) {
|
|
|
+ unitSheet.zh_tree.expandByLevel(1);
|
|
|
+ SpreadJsObj.refreshTreeRowVisible(unitSheet);
|
|
|
+ } else {
|
|
|
+ unitSheet.zh_tree.expandByCustom(() => { return true; });
|
|
|
+ SpreadJsObj.refreshTreeRowVisible(unitSheet);
|
|
|
+ }
|
|
|
+ });
|
|
|
// 显示层次
|
|
|
(function (select, sheet) {
|
|
|
$(select).click(function () {
|