/** * Created by chen on 2017/7/25. */ var gljContextMenu = { selectedRow :null, selectedCol:null, clipboard:null, loadGLJSpreadContextMenu: function () { $.contextMenu({ selector: '#subSpread', build: this.onbuild, items: { "replace_glj": { name: '替换', icon: 'fa-sign-in', disabled: function () { var sheetData = gljOprObj.sheetData; if(gljOprObj.isInstallationNode(projectObj.project.mainTree.selected)){ return true; } if(subSpread.getActiveSheetIndex()==0&&sheetData!=null&&sheetData.length>0&&gljContextMenu.selectedRow0&&gljContextMenu.selectedRow0&&gljContextMenu.selectedRow0&&gljContextMenu.selectedRow0&&gljContextMenu.selectedRowsheetData.length; } } return false }, callback: function () { projectObj.project.quantity_detail.insertQuantityDetail(gljContextMenu.selectedRow); }, visible: function(key, opt){ return subSpread.getActiveSheet().name()=='quantity_detail'; } }, "delete_detail": { name: '删除行', icon: 'fa-remove', disabled: function () { if(subSpread.getActiveSheet().name()=='quantity_detail'){ var sheetData = gljOprObj.detailData; return gljContextMenu.selectedRow>sheetData.length-1; } return false }, callback:function () { projectObj.project.quantity_detail.deleteQuantityDetail(gljContextMenu.selectedRow); }, visible: function(key, opt){ return subSpread.getActiveSheet().name()=='quantity_detail'; } }, "move_up": { name: '上移', icon: 'fa-arrow-up', disabled: function () { if(subSpread.getActiveSheet().name()=='quantity_detail'){ var sheetData = gljOprObj.detailData; return gljContextMenu.selectedRow==0||gljContextMenu.selectedRow>sheetData.length-1; } return false; }, callback: function () { projectObj.project.quantity_detail.moveUp(gljContextMenu.selectedRow); }, visible: function(key, opt){ return subSpread.getActiveSheet().name()=='quantity_detail'; } }, "move_down": { name: '下移', icon: 'fa-arrow-down', disabled: function () { if(subSpread.getActiveSheet().name()=='quantity_detail'){ var sheetData = gljOprObj.detailData; return gljContextMenu.selectedRow>sheetData.length-2; } return false; }, callback: function () { projectObj.project.quantity_detail.moveDown(gljContextMenu.selectedRow); }, visible: function(key, opt){ return subSpread.getActiveSheet().name()=='quantity_detail'; } }, "copy": { name: '复制', icon: 'fa-files-o', disabled: function () { if(subSpread.getActiveSheet().name()=='quantity_detail'){ let sheet = subSpread.getActiveSheet(); let sheetData = gljOprObj.detailData; let value = sheet.getCell(gljContextMenu.selectedRow,gljContextMenu.selectedCol).value(); if(gljContextMenu.selectedRow>sheetData.length-1||value==null){ return true; } if(gljOprObj.detailSetting.header[gljContextMenu.selectedCol].dataCode == 'isSummation'){//累加列恢显 return true; } } return false; }, callback: function () { gljContextMenu.clipboard={ row:gljContextMenu.selectedRow, col:gljContextMenu.selectedCol }; }, visible: function(key, opt){ return subSpread.getActiveSheet().name()=='quantity_detail'; } }, "paste": { name: '粘贴', icon: 'fa-clipboard', disabled: function () { if(subSpread.getActiveSheet().name()=='quantity_detail'){ let sheetData = gljOprObj.detailData; let dataCode = gljOprObj.detailSetting.header[gljContextMenu.selectedCol].dataCode; if(gljContextMenu.selectedRow>sheetData.length||gljContextMenu.clipboard==null){ return true; } //结果列和累加列灰显 if(dataCode == 'result' || dataCode == 'isSummation'){ return true; } } return false; }, callback: function () { var sheet = subSpread.getActiveSheet(); var c=gljContextMenu.clipboard; console.log(sheet.getCell(c.row,c.col).value()); var args={ 'row':gljContextMenu.selectedRow, 'col':gljContextMenu.selectedCol, 'editingText':sheet.getCell(c.row,c.col).value() } gljOprObj.onEditDetailSheet(args); }, visible: function(key, opt){ return subSpread.getActiveSheet().name()=='quantity_detail'; } }, "modify_rule": { name: '修改规则', icon: 'fa-sign-in', disabled: function () {//当选中空行或者ruleID为空的情况下,灰显 if(subSpread.getActiveSheet().name()=='rationInstallSheet'){ let sheetData = installationFeeObj.rationInstallData; if(gljContextMenu.selectedRow>sheetData.length-1){ return true } let ri = sheetData[gljContextMenu.selectedRow]; if(!ri.ruleId||ri.ruleId==''){ return true; } } return false; }, callback: function () { $("#modify_feeRule").modal({show:true}); }, visible: function(key, opt){ return subSpread.getActiveSheet().name()=='rationInstallSheet'; } }, "apply_to_FX": { name: '应用到当前分项', icon: 'fa-sign-in', disabled: function () { if(subSpread.getActiveSheet().name()=='rationInstallSheet'){ let sheetData = installationFeeObj.rationInstallData; if(gljContextMenu.selectedRow>sheetData.length-1){ return true; } if(sheetData[gljContextMenu.selectedRow].unifiedSetting == 1){ return true; } } return false; }, callback: function () { installationFeeObj.applyRuleTo('FX',gljContextMenu.selectedRow); }, visible: function(key, opt){ return subSpread.getActiveSheet().name()=='rationInstallSheet'; } }, "apply_to_FB": { name: '应用到当前分部', icon: 'fa-sign-in', disabled: function () { if(subSpread.getActiveSheet().name()=='rationInstallSheet'){ let sheetData = installationFeeObj.rationInstallData; if(gljContextMenu.selectedRow>sheetData.length-1){ return true; } if(sheetData[gljContextMenu.selectedRow].unifiedSetting == 1){ return true; } } return false; }, callback: function () { installationFeeObj.applyRuleTo('FB',gljContextMenu.selectedRow); }, visible: function(key, opt){ return subSpread.getActiveSheet().name()=='rationInstallSheet'; } }, "apply_to_PRO": { name: '应用到当前项目', icon: 'fa-sign-in', disabled: function () { if(subSpread.getActiveSheet().name()=='rationInstallSheet'){ let sheetData = installationFeeObj.rationInstallData; if(gljContextMenu.selectedRow>sheetData.length-1){ return true; } if(sheetData[gljContextMenu.selectedRow].unifiedSetting == 1){ return true; } } return false; }, callback: function () { installationFeeObj.applyRuleTo('PJ',gljContextMenu.selectedRow); }, visible: function(key, opt){ return subSpread.getActiveSheet().name()=='rationInstallSheet'; } } } }); }, onbuild:function ($trigger, e) { var target = SheetDataHelper.safeRightClickSelection($trigger, e, subSpread); gljContextMenu.selectedRow = target.row; gljContextMenu.selectedCol = target.col; if(subSpread.getActiveSheet().name() == 'ration_glj'){ gljOprObj.sheetInitSelection({row: target.row, col: target.col}); } //controller.setTreeSelected(controller.tree.items[target.row]); return target.hitTestType === GC.Spread.Sheets.SheetArea.viewport || target.hitTestType === GC.Spread.Sheets.SheetArea.rowHeader; }, initGLJSelectView: function () { if (gljOprObj.gljLibSpresd == undefined) { gljOprObj.gljLibSpresd = sheetCommonObj.buildSheet($('#gljLibSheet')[0], gljOprObj.gljLibSheetSetting, gljOprObj.stdGLJ.length + gljOprObj.complementaryGLJs.length); sheetCommonObj.spreadDefaultStyle(gljOprObj.gljLibSpresd); 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.setColumnWidth(0, 20, GC.Spread.Sheets.SheetArea.rowHeader); gljOprObj.gljLibSheet.options.isProtected = true; gljOprObj.gljLibSheet.name('glj_lib'); } gljOprObj.gljLibSheetData = gljOprObj.AllRecode; let gljClass = 0, selectMap = {}; if ($('#actionType').val() == 'add' || $('#actionType').val() == 'insert' || $('#actionType').val() == 'insertEquipment') {//插入,添加 gljOprObj.GLJSelection = []; } else if($('#actionType').val() =='m_replace' || $('#actionType').val() == 'replace'){//替换、批量替换 let selected = gljOprObj.sheetData[gljContextMenu.selectedRow]; let connect_key = gljOprObj.getIndex(selected, gljKeyArray); gljOprObj.GLJSelection = [connect_key]; selectMap[connect_key] = true; gljOprObj.filterLibGLJByType(); }else if($('#actionType').val() =='addMix'|| $('#actionType').val() =='unitPriceAddMix'){//添加组成物 gljOprObj.GLJSelection = []; projectGljObject.filterLibGLJForMixRatio(); } for(let item of gljOprObj.gljLibSheetData){ let item_key = gljOprObj.getIndex(item, gljLibKeyArray); if(selectMap[item_key]){ item.select = 1 ; gljClass = item.gljClass; } else { item.select = 0; } } //替换,焦点定位至当前选中人材机 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}); 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() === 'insertEquipment') {//右键插入设备,人材机选择窗口,应默认固定到分类"养护管理设备"。 let locateClass = gljOprObj.treeData.std.find(function (stdClass) { return stdClass.Name === '养护管理设备'; }); if (locateClass) { gljClass = locateClass.ID; gljOprObj.locateZTree(gljClass); gljOprObj.gljLibSheet.showRow(0, GC.Spread.Sheets.VerticalPosition.top); gljOprObj.gljLibSheet.setActiveCell(0, 0); gljOprObj.initSelection({row: 0}); } } else if ($('#actionType').val() === 'add') { gljOprObj.locateZTree(null); gljOprObj.gljLibSheet.showRow(0, GC.Spread.Sheets.VerticalPosition.top); gljOprObj.gljLibSheet.setActiveCell(0, 0); gljOprObj.initSelection({row: 0}); } else { gljOprObj.showLibGLJSheetData(); } } } function initLibOptions(libData) { const html = libData.reduce((acc, lib) => acc += ``, ''); $('#glj-lib-select').html(html); } function getActionUrl(actionType) { const rootUrl = `/rationGlj/getGLJData/${commonConstants.COMPILATION}` switch (actionType) { case 'add': case 'addMix': case 'insert': case 'unitPriceAddMix': case 'insertEquipment': return `${rootUrl}/0/true`; case 'replace': case 'm_replace': const selected = gljOprObj.sheetData[gljContextMenu.selectedRow]; const gljLibId = selected.repositoryId || commonConstants.COMPLEMENTARY_LIB; return `${rootUrl}/${gljLibId}/true`; case 'change': // 更改选择库 const selectGLJLibID = $('#glj-lib-select').val(); return `${rootUrl}/${selectGLJLibID}/false`; } } function getGLJData(actionType, isInitial = true,getLibFunc) { const url = getActionUrl(actionType); if (actionType === 'change') { actionType = $('#actionType').val(); } $('#actionType').val(actionType); $.bootstrapLoading.start(); if(!getLibFunc)getLibFunc = projectObj.project.ration_glj.getGLJData; getLibFunc(url, function (result) { // 目前只有浙江2015 湖南 - 山东 需要特殊处理处理 if (gljOprObj.sortSelectViewGLJ) { gljOprObj.sortSelectViewGLJ(result.datas.stdGLJ); gljOprObj.sortSelectViewGLJ(result.datas.complementaryGLJs); } else { result.datas.stdGLJ = _.sortBy(result.datas.stdGLJ, 'code'); result.datas.complementaryGLJs = _.sortBy(result.datas.complementaryGLJs, 'code'); } gljOprObj.stdGLJ=result.datas.stdGLJ; gljOprObj.complementaryGLJs=result.datas.complementaryGLJs; for(let compleGlj of gljOprObj.complementaryGLJs){ //是否新增 compleGlj.isComplementary = true; } gljOprObj.AllRecode=gljOprObj.stdGLJ.concat(gljOprObj.complementaryGLJs); //gljOprObj.AllRecode=gljOprObj.stdGLJ; gljOprObj.distTypeTree=gljOprObj.getComboData(result.datas.distTypeTree); gljOprObj.treeData = result.datas.treeData; if (gljOprObj.treeData.std.length) { gljOprObj.initClassTree('std', gljOprObj.treeData.std, !isInitial); } else if (gljOprObj.treeData.comple.length) { gljOprObj.initClassTree('comple', gljOprObj.treeData.comple, !isInitial); } if (isInitial) { initLibOptions(result.datas.libData); $('#modalCon').width($(window).width()*0.5); if(actionType == "m_replace"){ $('#glj_selected_conf').hide(); $('#replace_next_btn').show(); }else { $('#glj_selected_conf').show(); $('#replace_next_btn').hide(); } $("#glj_tree_div").modal({show:true}); setTimeout(function(){ gljOprObj.gljLibSpresd?gljOprObj.gljLibSpresd.refresh():''; }, 200); } else { gljContextMenu.initGLJSelectView(); } $.bootstrapLoading.end(); }) } function showGLJClassTree(record) { let engineerID = projectObj.project.projectInfo.property.engineering_id; CommonAjax.post('/rationGlj/getGLJClass/'+engineerID,record, function (data) { if(data.exist==true){ alert("当前人材机已存在。"); }else { gljOprObj.selectedGLJClass = record; $("#glj_class_div").modal({show:true}); zTreeHelper.createTree(data.items, gljOprObj.gljTreeSetting, "classTree", gljOprObj); } }) }