|
|
@@ -14,6 +14,14 @@ var gljOprObj = {
|
|
|
detailSheet: null,
|
|
|
detailData: [],
|
|
|
GLJSelection: [],
|
|
|
+ pagingType: {
|
|
|
+ stdGLJ: 1,
|
|
|
+ complementaryGLJs: 2
|
|
|
+ },
|
|
|
+ // 是否正在分页
|
|
|
+ loadingPagination: false,
|
|
|
+ // 当前筛选条件下总数据数,用于判断是否需要继续分页
|
|
|
+ curPageTotal: 0,
|
|
|
selectedGLJClass: null,
|
|
|
parentNodeIds: {},
|
|
|
preActiveTab: '', //提升焦点变换性能 2019年4月12日
|
|
|
@@ -68,9 +76,10 @@ var gljOprObj = {
|
|
|
let me = gljOprObj, gljTypeId = treeNode.ID;
|
|
|
if (treeNode.ID) {
|
|
|
me.gljCurTypeId = treeNode.ID;
|
|
|
- me.filterLibGLJSheetData();
|
|
|
- me.showLibGLJSheetData();
|
|
|
- gljOprObj.initSelection({row: me.gljLibSheet.getActiveRowIndex()});
|
|
|
+ /* me.filterLibGLJSheetData();
|
|
|
+ me.showLibGLJSheetData();*/
|
|
|
+ me.loadPageData(gljOprObj.gljLibSheet, true, 0);
|
|
|
+ //gljOprObj.initSelection({row: me.gljLibSheet.getActiveRowIndex()});
|
|
|
}
|
|
|
} else {
|
|
|
if (treeNode.isParent) {
|
|
|
@@ -81,7 +90,6 @@ var gljOprObj = {
|
|
|
$('#selected_class').val(treeNode.ID);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
@@ -94,8 +102,8 @@ var gljOprObj = {
|
|
|
{headerName: "规格型号", headerWidth: 160, dataCode: "specs", dataType: "String", hAlign: "left", vAlign: "center"},
|
|
|
{headerName: "单位", headerWidth: 40, dataCode: "unit", dataType: "String", hAlign: "center", vAlign: "center"},
|
|
|
{headerName: "单价", headerWidth: 55, dataCode: "basePrice", dataType: "Number", formatter: "0.00", hAlign: "right", vAlign: "center"},
|
|
|
- {headerName: "类型", headerWidth: 60, dataCode: "gljType", dataType: "String", hAlign: "center", vAlign: "center"},
|
|
|
- {headerName: "新增", headerWidth: 40, dataCode: "isComplementary", dataType: "String", hAlign: "center", vAlign: "center", cellType: "checkBox"}
|
|
|
+ {headerName: "类型", headerWidth: 60, dataCode: "typeName", dataType: "String", hAlign: "center", vAlign: "center"},
|
|
|
+ {headerName: "新增", headerWidth: 40, dataCode: "isComplementary", dataType: "String", hAlign: "center", vAlign: "center", cellType: "checkBox", readOnly: true}
|
|
|
],
|
|
|
view: {
|
|
|
lockColumns: [0, 1, 2, 3, 4, 5, 6]
|
|
|
@@ -310,6 +318,29 @@ var gljOprObj = {
|
|
|
let me = gljOprObj;
|
|
|
me.initSelection(args.newSelections.length > 0 ? {row: args.newSelections[0].row} : {row: 0});
|
|
|
},
|
|
|
+ onTopRowChanged: function (sender, args) {
|
|
|
+ const me = gljOprObj;
|
|
|
+ const topRow = args.newTopRow;
|
|
|
+ const bottomRow = args.sheet.getViewportBottomRow(1);
|
|
|
+ const radioType = $("input[name='glj']:checked").val();
|
|
|
+ const curRecord = radioType === 'stdGLJ' ? me.stdGLJ : me.complementaryGLJs;
|
|
|
+ // 当前表显示数据数大于等于当前筛选情况下最大数据数,不获取下一分页
|
|
|
+ if (curRecord.length >= me.curPageTotal ||
|
|
|
+ me.loadingPagination) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (curRecord.length -1 === bottomRow) {
|
|
|
+ // 获取第curRecord.length行开始的数据
|
|
|
+ me.loadPageData(args.sheet, false, curRecord.length);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ loadPageData: function (sheet, reset, index) {
|
|
|
+ let condition = this.getPagingCondition(false, reset, false, index);
|
|
|
+ projectObj.project.ration_glj.getGLJDataPaging(condition, function (data) {
|
|
|
+ sheetCommonObj.appendData(sheet, condition.index, 0, gljOprObj.gljLibSheetSetting, data);
|
|
|
+ gljOprObj.initSelection({row: gljOprObj.gljLibSheet.getActiveRowIndex()});
|
|
|
+ });
|
|
|
+ },
|
|
|
getSelStyle: function (selected,settingStyle) {
|
|
|
let style = new GC.Spread.Sheets.Style();
|
|
|
if(settingStyle){
|
|
|
@@ -372,6 +403,10 @@ var gljOprObj = {
|
|
|
} else if (args.sheetName == 'quantity_detail') {
|
|
|
projectObj.project.quantity_detail.isSummationUpdate(args, gljOprObj.detailData, newval);
|
|
|
} else if (args.sheetName == 'glj_lib') {
|
|
|
+ if (gljOprObj.gljLibSheetSetting.header[args.col].readOnly) {
|
|
|
+ args.sheet.getCell(args.row, args.col).value(checkboxValue);
|
|
|
+ return;
|
|
|
+ }
|
|
|
if(gljOprObj.gljLibSheetSetting.header[args.col].dataCode === 'select'){
|
|
|
gljOprObj.setGLJSelection(args, newval);
|
|
|
}
|
|
|
@@ -978,6 +1013,86 @@ var gljOprObj = {
|
|
|
sheetCommonObj.showData(this.gljLibSheet, this.gljLibSheetSetting, this.gljLibSheetData, gljOprObj.distTypeTree);
|
|
|
this.gljLibSheet.setRowCount(this.gljLibSheetData.length);
|
|
|
},
|
|
|
+ // 根据人材机类型,设置人材机类型显示名称
|
|
|
+ setTypeName: function (distTypeData, data) {
|
|
|
+ data.forEach(item => {
|
|
|
+ let typeData = distTypeData.find(typeItem => typeItem.value === item.gljType);
|
|
|
+ if (typeData) {
|
|
|
+ item.typeName = typeData.text;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ /*
|
|
|
+ * 获取分页查询所需要的条件数据
|
|
|
+ * @param {Boolean}init 是否是初始化
|
|
|
+ * {Boolean}reset 是否重置数据 (点击分类树等)
|
|
|
+ * {Boolean}location 是否定位(替换初始化)
|
|
|
+ * {Number}index 分页数据开始索引
|
|
|
+ * @return {Object}
|
|
|
+ * */
|
|
|
+ getPagingCondition: function (init, reset, location, index) {
|
|
|
+ // 初始化情况下的条件
|
|
|
+ let condition = {
|
|
|
+ // 是否重置数据
|
|
|
+ reset,
|
|
|
+ // 是否定位
|
|
|
+ location,
|
|
|
+ // 开始取数据的位置
|
|
|
+ index,
|
|
|
+ // 限制条数
|
|
|
+ limit: 50,
|
|
|
+ // 初始化
|
|
|
+ init: init,
|
|
|
+ // 所在部分(标准、补充)
|
|
|
+ type: this.pagingType.stdGLJ,
|
|
|
+ // 替换数据,替换操作下有数据:编码、名称、规格、单位、类型
|
|
|
+ replace: null,
|
|
|
+ // 所在分类节点
|
|
|
+ classList: [],
|
|
|
+ // 搜索文本
|
|
|
+ search: ''
|
|
|
+ };
|
|
|
+ // 触发入口(添加、替换、批量替换)
|
|
|
+ const actionType = $('#actionType').val();
|
|
|
+ const replaceActions = ['replace', 'm_replace'];
|
|
|
+ // 替换相关
|
|
|
+ if (replaceActions.includes(actionType)) {
|
|
|
+ // 定额人材机界面选中的人材机
|
|
|
+ const selected = gljOprObj.sheetData[gljContextMenu.selectedRow];
|
|
|
+ condition.replace = {
|
|
|
+ code: selected.code,
|
|
|
+ name: selected.name,
|
|
|
+ specs: selected.specs,
|
|
|
+ unit: selected.unit,
|
|
|
+ gljType: selected.type
|
|
|
+ };
|
|
|
+ }
|
|
|
+ if (init) {
|
|
|
+ return condition;
|
|
|
+ }
|
|
|
+ condition.init = false;
|
|
|
+ // 标准、补充的选择
|
|
|
+ if ($('#glj_tree_div').is(':visible')) {
|
|
|
+ let radioType = $("input[name='glj']:checked").val();
|
|
|
+ condition.type = this.pagingType[radioType];
|
|
|
+ }
|
|
|
+ // 选中的分类
|
|
|
+ if (this.treeObj) {
|
|
|
+ let selNode = this.treeObj.getNodeByParam('ID', this.gljCurTypeId);
|
|
|
+ // 不为最顶层节点时,才赋值给withinClass
|
|
|
+ if (selNode && selNode.ParentID !== -1) {
|
|
|
+ const classList = this.parentNodeIds['_pNodeId_' + this.gljCurTypeId];
|
|
|
+ condition.classList = classList ? classList : [this.gljCurTypeId];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 搜索文本
|
|
|
+ let searchStr = $('#gljSearchKeyword').val().trim();
|
|
|
+ if(searchStr){
|
|
|
+ condition.search = searchStr;
|
|
|
+ }
|
|
|
+ return condition;
|
|
|
+
|
|
|
+ },
|
|
|
filterLibGLJSheetData: function () {
|
|
|
let me = this;
|
|
|
let val = $("input[name='glj']:checked").val();
|
|
|
@@ -1018,13 +1133,12 @@ var gljOprObj = {
|
|
|
}
|
|
|
},
|
|
|
addGLJsSelection: function (args, newVal) {
|
|
|
- var con_key = this.getIndex(this.gljLibSheetData[args.row], gljLibKeyArray);
|
|
|
+ const curGLJ = this.AllRecode[args.row];
|
|
|
+ const con_key = this.getIndex(curGLJ, gljLibKeyArray);
|
|
|
if (newVal == 1) {
|
|
|
this.GLJSelection.push(con_key);
|
|
|
- this.gljLibSheetData[args.row].select = 1;
|
|
|
} else if (newVal == 0) {
|
|
|
_.pull(this.GLJSelection, con_key);
|
|
|
- this.gljLibSheetData[args.row].select = 0;
|
|
|
}
|
|
|
},
|
|
|
replaceGLJSelection: function (args, newVal) {
|
|
|
@@ -1034,21 +1148,20 @@ var gljOprObj = {
|
|
|
args.sheet.getCell(args.row, args.col).value(1);
|
|
|
return;
|
|
|
}
|
|
|
- this.GLJSelection = [me.getIndex(this.gljLibSheetData[args.row], gljLibKeyArray)];
|
|
|
- this.gljLibSheetData[args.row].select = 1;
|
|
|
- var oindex = _.findIndex(this.gljLibSheetData, function (item) {
|
|
|
+ const curGLJ = this.AllRecode[args.row];
|
|
|
+ const connectKey = this.getIndex(curGLJ, gljLibKeyArray);
|
|
|
+ this.GLJSelection = [connectKey];
|
|
|
+ var oindex = _.findIndex(this.AllRecode, function (item) {
|
|
|
var i_key = me.getIndex(item, gljLibKeyArray);
|
|
|
return oldSelection == i_key;
|
|
|
});
|
|
|
if (oindex != -1) {
|
|
|
args.sheet.getCell(oindex, args.col).value(0);
|
|
|
- this.gljLibSheetData[oindex].select = 0;
|
|
|
} else {
|
|
|
var oldData = _.find(gljOprObj.AllRecode, function (item) {
|
|
|
var i_key = me.getIndex(item, gljLibKeyArray);
|
|
|
return oldSelection == i_key;
|
|
|
});
|
|
|
- oldData ? oldData.select = 0 : "";
|
|
|
}
|
|
|
},
|
|
|
filterLibGLJByType: function () {
|
|
|
@@ -1092,7 +1205,6 @@ var gljOprObj = {
|
|
|
distTypeTree.comboDatas.push({text: distTypeObj.data.fullName, value: distTypeObj.data.ID});
|
|
|
}
|
|
|
});
|
|
|
- console.log(distTypeTree);
|
|
|
return distTypeTree;
|
|
|
},
|
|
|
doInsertGLJ: function () {
|
|
|
@@ -1391,8 +1503,8 @@ var gljOprObj = {
|
|
|
if (!node) node = zTree.getNodeByTId('gljTree_1');
|
|
|
zTree.selectNode(node);
|
|
|
gljOprObj.gljCurTypeId = ID;
|
|
|
- gljOprObj.filterLibGLJSheetData();
|
|
|
- gljOprObj.showLibGLJSheetData();
|
|
|
+ //--gljOprObj.filterLibGLJSheetData();
|
|
|
+ //--gljOprObj.showLibGLJSheetData();
|
|
|
},
|
|
|
isExtraType:function (type) {
|
|
|
return _.includes(gljUtil.extraType,type)
|
|
|
@@ -1491,7 +1603,14 @@ var gljOprObj = {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+// 人材机选择界面的功能进行了适合分页的重构
|
|
|
+// 重构时,只有添加、替换、批量替换的入口。因此只对这三个入口相关的地方进行重构,其他入口的代码没有变更
|
|
|
+// 若以后放开其他入口,需要将其他入口的相应方法进行重构
|
|
|
$(function () {
|
|
|
+ $('#glj_tree_div').on('hidden.bs.modal', function () {
|
|
|
+ // 清空搜索框
|
|
|
+ $('#gljSearchKeyword').val('');
|
|
|
+ });
|
|
|
$('#glj_tree_div').on('shown.bs.modal', function (e) {
|
|
|
if (gljOprObj.gljLibSpresd == undefined) {
|
|
|
gljOprObj.gljLibSpresd = sheetCommonObj.buildSheet($('#gljLibSheet')[0], gljOprObj.gljLibSheetSetting, gljOprObj.stdGLJ.length + gljOprObj.complementaryGLJs.length);
|
|
|
@@ -1499,53 +1618,50 @@ $(function () {
|
|
|
gljOprObj.gljLibSpresd.bind(GC.Spread.Sheets.Events.ButtonClicked, gljOprObj.onButtonClick);
|
|
|
gljOprObj.gljLibSheet = gljOprObj.gljLibSpresd.getSheet(0);
|
|
|
gljOprObj.gljLibSheet.bind(GC.Spread.Sheets.Events.SelectionChanged, gljOprObj.onSelectionChanged);
|
|
|
+ gljOprObj.gljLibSheet.bind(GC.Spread.Sheets.Events.TopRowChanged, _.debounce(gljOprObj.onTopRowChanged, 100));
|
|
|
gljOprObj.gljLibSheet.setColumnWidth(0, 20, GC.Spread.Sheets.SheetArea.rowHeader);
|
|
|
gljOprObj.gljLibSheet.options.isProtected = true;
|
|
|
gljOprObj.gljLibSheet.name('glj_lib');
|
|
|
+ sheetCommonObj.setSheetBySetting(gljOprObj.gljLibSheet, gljOprObj.gljLibSheetSetting);
|
|
|
}
|
|
|
- gljOprObj.gljLibSheetData = gljOprObj.AllRecode;
|
|
|
- let gljClass = 0, selectMap = {};
|
|
|
+ let gljClass = 0,
|
|
|
+ selected,
|
|
|
+ connect_key;
|
|
|
if ($('#actionType').val() == 'add' || $('#actionType').val() == 'insert') {//插入,添加
|
|
|
gljOprObj.GLJSelection = [];
|
|
|
} else if($('#actionType').val() =='m_replace' || $('#actionType').val() == 'replace'){//替换、批量替换
|
|
|
- let selected = gljOprObj.sheetData[gljContextMenu.selectedRow];
|
|
|
- let connect_key = gljOprObj.getIndex(selected, gljKeyArray);
|
|
|
+ selected = gljOprObj.sheetData[gljContextMenu.selectedRow];
|
|
|
+ connect_key = gljOprObj.getIndex(selected, gljKeyArray);
|
|
|
gljOprObj.GLJSelection = [connect_key];
|
|
|
- selectMap[connect_key] = true;
|
|
|
- gljOprObj.filterLibGLJByType();
|
|
|
- }else if($('#actionType').val() =='addMix'){//添加组成物
|
|
|
+ // 找到定位的分类树
|
|
|
+ const locatedItem = gljOprObj.AllRecode.find(item => gljOprObj.getIndex(item, gljLibKeyArray) === connect_key);
|
|
|
+ if (locatedItem) {
|
|
|
+ gljClass = locatedItem.gljClass;
|
|
|
+ locatedItem.select = 1;
|
|
|
+ }
|
|
|
+ } else if($('#actionType').val() =='addMix'){//添加组成物
|
|
|
gljOprObj.GLJSelection = [];
|
|
|
projectGljObject.filterLibGLJForMixRatio();
|
|
|
- /*selections = projectGljObject.mixRatioData; 添加组成物的时候先不选中
|
|
|
- gljOprObj.GLJSelection = [];
|
|
|
- for(let s of selections){
|
|
|
- let s_key = gljOprObj.getIndex(s, gljKeyArray);
|
|
|
- selectMap[s_key] = true;
|
|
|
- gljOprObj.GLJSelection.push(s_key);
|
|
|
- }*/
|
|
|
- }
|
|
|
- for(let item of gljOprObj.gljLibSheetData){
|
|
|
- let item_key = gljOprObj.getIndex(item, gljLibKeyArray);
|
|
|
- if(selectMap[item_key]){
|
|
|
- item.select = 1 ;
|
|
|
- gljClass = item.gljClass;
|
|
|
- }
|
|
|
}
|
|
|
//替换,焦点定位至当前选中人材机
|
|
|
- if($('#actionType').val() =='m_replace' || $('#actionType').val() == 'replace'){
|
|
|
+ if ($('#actionType').val() =='m_replace' || $('#actionType').val() == 'replace') {
|
|
|
gljOprObj.locateZTree(gljClass);
|
|
|
- let selected = gljOprObj.sheetData[gljContextMenu.selectedRow];
|
|
|
- let index = _.findIndex(gljOprObj.gljLibSheetData, {code: selected.code});
|
|
|
+ sheetCommonObj.appendData(gljOprObj.gljLibSheet, 0, 0, gljOprObj.gljLibSheetSetting, gljOprObj.AllRecode);
|
|
|
+ const index = gljOprObj.AllRecode.findIndex(item => gljOprObj.getIndex(item, gljLibKeyArray) === connect_key);
|
|
|
gljOprObj.gljLibSheet.showRow(index, GC.Spread.Sheets.VerticalPosition.center);
|
|
|
gljOprObj.gljLibSheet.setActiveCell(index, 0);
|
|
|
gljOprObj.initSelection({row: index});
|
|
|
gljOprObj.gljLibSpresd.focus(true);
|
|
|
} else if ($('#actionType').val() === 'add') {
|
|
|
gljOprObj.locateZTree(null);
|
|
|
+ sheetCommonObj.appendData(gljOprObj.gljLibSheet, 0, 0, gljOprObj.gljLibSheetSetting, gljOprObj.AllRecode);
|
|
|
gljOprObj.gljLibSheet.showRow(0, GC.Spread.Sheets.VerticalPosition.top);
|
|
|
gljOprObj.gljLibSheet.setActiveCell(0, 0);
|
|
|
gljOprObj.initSelection({row: 0});
|
|
|
- } else gljOprObj.showLibGLJSheetData();
|
|
|
+ } else {
|
|
|
+ gljOprObj.showLibGLJSheetData();
|
|
|
+ }
|
|
|
+ console.timeEnd('getGLJData');
|
|
|
});
|
|
|
|
|
|
$('#mreplace_next_div').on('shown.bs.modal', function (e) {
|
|
|
@@ -1553,46 +1669,20 @@ $(function () {
|
|
|
gljOprObj.showScopeDatas();
|
|
|
});
|
|
|
|
|
|
-
|
|
|
- $('#glj_tree_div').on('hidden.bs.modal', function () {
|
|
|
- $('#gljSearchKeyword').val('');
|
|
|
- });
|
|
|
-
|
|
|
+ // 人材机选择界面标准、补充单选
|
|
|
$('.glj-radio').change(function () {
|
|
|
- let val = $("input[name='glj']:checked").val();
|
|
|
- if (val == 'allGljs') {
|
|
|
- gljOprObj.gljLibSheetData = gljOprObj.AllRecode;
|
|
|
- gljOprObj.filterLibGLJSheetData();
|
|
|
- gljOprObj.showLibGLJSheetData();
|
|
|
+ const val = $("input[name='glj']:checked").val();
|
|
|
+ if (val === 'stdGLJ') {
|
|
|
+ gljOprObj.initClassTree('std', gljOprObj.treeData.std, true);
|
|
|
} else {
|
|
|
- if(val === 'stdGLJ') {
|
|
|
- gljOprObj.initClassTree('std', gljOprObj.treeData.std, true);
|
|
|
- } else {
|
|
|
- gljOprObj.initClassTree('comple', gljOprObj.treeData.comple, true);
|
|
|
- }
|
|
|
- gljOprObj.initSelection({row: 0});
|
|
|
- //gljOprObj.gljLibSheetData = gljOprObj[val];
|
|
|
- /*gljOprObj.filterLibGLJSheetData();
|
|
|
- gljOprObj.showLibGLJSheetData();*/
|
|
|
- }
|
|
|
- });
|
|
|
-/* //工料机搜索
|
|
|
- $('#gljSearchKeyword').change(function () {
|
|
|
- gljOprObj.filterLibGLJSheetData();
|
|
|
- gljOprObj.showLibGLJSheetData();
|
|
|
- });
|
|
|
- $('#gljSearchKeyword').bind('keypress', function (e) {
|
|
|
- if(e.keyCode === 13){
|
|
|
- alert('2');
|
|
|
- $(this).blur();
|
|
|
- return false;
|
|
|
+ gljOprObj.initClassTree('comple', gljOprObj.treeData.comple, true);
|
|
|
}
|
|
|
- });*/
|
|
|
- $('#gljSearchKeyword').bind('keyup', function (e) {
|
|
|
- gljOprObj.filterLibGLJSheetData();
|
|
|
- gljOprObj.showLibGLJSheetData();
|
|
|
gljOprObj.initSelection({row: 0});
|
|
|
});
|
|
|
+ // 人材机选择页面搜索框
|
|
|
+ $('#gljSearchKeyword').bind('keyup', _.debounce(function() {
|
|
|
+ gljOprObj.loadPageData(gljOprObj.gljLibSheet, true, 0);
|
|
|
+ }, 500));
|
|
|
|
|
|
$('#glj_selected_conf').click(function () {
|
|
|
if (gljOprObj.GLJSelection.length < 1) {
|