|
@@ -82,12 +82,12 @@ var gljOprObj = {
|
|
header: [
|
|
header: [
|
|
{headerName: "选择", headerWidth: 40, dataCode: "select", hAlign: "center", vAlign: "center", cellType: "checkBox"},
|
|
{headerName: "选择", headerWidth: 40, dataCode: "select", hAlign: "center", vAlign: "center", cellType: "checkBox"},
|
|
{headerName: "编码", headerWidth: 80, dataCode: "code", dataType: "String", formatter: "@", hAlign: "left", vAlign: "center"},
|
|
{headerName: "编码", headerWidth: 80, dataCode: "code", dataType: "String", formatter: "@", hAlign: "left", vAlign: "center"},
|
|
- {headerName: "名称", headerWidth: 120, dataCode: "name", dataType: "String", hAlign: "left", vAlign: "center"},
|
|
|
|
- {headerName: "规格型号", headerWidth: 80, dataCode: "specs", dataType: "String", hAlign: "center", vAlign: "center"},
|
|
|
|
|
|
+ {headerName: "名称", headerWidth: 240, dataCode: "name", dataType: "String", hAlign: "left", vAlign: "center"},
|
|
|
|
+ {headerName: "规格型号", headerWidth: 190, dataCode: "specs", dataType: "String", hAlign: "left", vAlign: "center"},
|
|
{headerName: "单位", headerWidth: 40, dataCode: "unit", dataType: "String", hAlign: "center", vAlign: "center"},
|
|
{headerName: "单位", headerWidth: 40, dataCode: "unit", dataType: "String", hAlign: "center", vAlign: "center"},
|
|
- {headerName: "单价", headerWidth: 80, dataCode: "basePrice", dataType: "Number", formatter: "0.00", hAlign: "right", vAlign: "center"},
|
|
|
|
- {headerName: "类型", headerWidth: 80, dataCode: "gljType", dataType: "String", hAlign: "center", vAlign: "center"},
|
|
|
|
- {headerName: "是否新增", headerWidth: 80, dataCode: "isComplementary", dataType: "String", hAlign: "center", vAlign: "center", cellType: "checkBox"}
|
|
|
|
|
|
+ {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"}
|
|
],
|
|
],
|
|
view: {
|
|
view: {
|
|
lockColumns: [0, 1, 2, 3, 4, 5, 6]
|
|
lockColumns: [0, 1, 2, 3, 4, 5, 6]
|
|
@@ -100,20 +100,15 @@ var gljOprObj = {
|
|
sheetCommonObj.initSheet(me.sheet, me.setting, 30);
|
|
sheetCommonObj.initSheet(me.sheet, me.setting, 30);
|
|
sheet.name('ration_glj');
|
|
sheet.name('ration_glj');
|
|
me.bindSheetEvent(sheet);
|
|
me.bindSheetEvent(sheet);
|
|
- sheet.bind(GC.Spread.Sheets.Events.CellClick, me.onCellClick);
|
|
|
|
sheet.bind(GC.Spread.Sheets.Events.CellDoubleClick, me.onCellDoubleClick);
|
|
sheet.bind(GC.Spread.Sheets.Events.CellDoubleClick, me.onCellDoubleClick);
|
|
sheet.bind(GC.Spread.Sheets.Events.ClipboardChanged, me.onClipboardChanged);
|
|
sheet.bind(GC.Spread.Sheets.Events.ClipboardChanged, me.onClipboardChanged);
|
|
subSpread.bind(GC.Spread.Sheets.Events.ButtonClicked, me.onButtonClick);
|
|
subSpread.bind(GC.Spread.Sheets.Events.ButtonClicked, me.onButtonClick);
|
|
- sheet.bind(GC.Spread.Sheets.Events.EditStarting, function (sender, args) {
|
|
|
|
- if (args.row>=me.sheetData.length){
|
|
|
|
- args.cancel = true;
|
|
|
|
- }else if (me.sheetData[args.row].isMixRatio) {
|
|
|
|
- args.cancel = true;
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
if(!projectReadOnly){
|
|
if(!projectReadOnly){
|
|
gljContextMenu.loadGLJSpreadContextMenu();
|
|
gljContextMenu.loadGLJSpreadContextMenu();
|
|
}
|
|
}
|
|
|
|
+ sheet.bind(GC.Spread.Sheets.Events.SelectionChanged,function (sender,args) {
|
|
|
|
+ args.sheet.repaint();
|
|
|
|
+ });
|
|
},
|
|
},
|
|
initDetailSheet: function (sheet) {
|
|
initDetailSheet: function (sheet) {
|
|
var me = this;
|
|
var me = this;
|
|
@@ -122,15 +117,6 @@ var gljOprObj = {
|
|
// me.detailSheet.selectionUnit(0);//0 cell,1 row,2 col;
|
|
// me.detailSheet.selectionUnit(0);//0 cell,1 row,2 col;
|
|
sheet.name('quantity_detail');
|
|
sheet.name('quantity_detail');
|
|
me.bindSheetEvent(sheet);
|
|
me.bindSheetEvent(sheet);
|
|
- sheet.bind(GC.Spread.Sheets.Events.EditStarting, function (sender, args) {
|
|
|
|
- if(me.detailSheetReadonly()){
|
|
|
|
- args.cancel = true;
|
|
|
|
- }else {
|
|
|
|
- if(args.sheet.getValue(args.row,args.col)==null){//这里是为了解决当单元格里的值是null的时候,在单元格里输入数据,按键盘箭头移动光标的时候,会直接结束编辑,跳到另外的单元格。
|
|
|
|
- args.sheet.setValue(args.row,args.col,"");
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
},
|
|
},
|
|
detailSheetReadonly:function () {
|
|
detailSheetReadonly:function () {
|
|
let selected = projectObj.project.mainTree.selected;
|
|
let selected = projectObj.project.mainTree.selected;
|
|
@@ -183,6 +169,19 @@ var gljOprObj = {
|
|
if(selected){
|
|
if(selected){
|
|
if(me.isInstallationNode(selected)==true){
|
|
if(me.isInstallationNode(selected)==true){
|
|
args.cancel = true;
|
|
args.cancel = true;
|
|
|
|
+ }else {
|
|
|
|
+ if(args.sheetName == 'quantity_detail'){//工程量明细表
|
|
|
|
+ if(me.detailSheetReadonly()){
|
|
|
|
+ args.cancel = true;
|
|
|
|
+ }else {
|
|
|
|
+ if(args.sheet.getValue(args.row,args.col)==null){//这里是为了解决当单元格里的值是null的时候,在单元格里输入数据,按键盘箭头移动光标的时候,会直接结束编辑,跳到另外的单元格。
|
|
|
|
+ args.sheet.setValue(args.row,args.col,"");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(args.sheetName == 'ration_glj'){//定额工料机表
|
|
|
|
+ if(!me.rationGLJEditCheck(args)) args.cancel = true;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}else {
|
|
}else {
|
|
args.cancel = true;
|
|
args.cancel = true;
|
|
@@ -233,6 +232,32 @@ var gljOprObj = {
|
|
}
|
|
}
|
|
me.updateRationGLJ(args);
|
|
me.updateRationGLJ(args);
|
|
},
|
|
},
|
|
|
|
+ onSelectionChanged: function (sender, args) {
|
|
|
|
+ let me = gljOprObj;
|
|
|
|
+ me.initSelection(args.newSelections.length > 0 ? {row: args.newSelections[0].row} : {row: 0});
|
|
|
|
+ },
|
|
|
|
+ getSelStyle: function (selected) {
|
|
|
|
+ let style = new GC.Spread.Sheets.Style();
|
|
|
|
+ style.borderLeft = new GC.Spread.Sheets.LineBorder("#D4D4D4", GC.Spread.Sheets.LineStyle.thin);
|
|
|
|
+ style.borderTop = new GC.Spread.Sheets.LineBorder("#D4D4D4", GC.Spread.Sheets.LineStyle.thin);
|
|
|
|
+ style.borderRight = new GC.Spread.Sheets.LineBorder("#D4D4D4", GC.Spread.Sheets.LineStyle.thin);
|
|
|
|
+ style.borderBottom = new GC.Spread.Sheets.LineBorder("#D4D4D4", GC.Spread.Sheets.LineStyle.thin);
|
|
|
|
+ let colorOpts = optionsOprObj.getOption(optionsOprObj.optionsTypes.COLOROPTS);
|
|
|
|
+ let selectedColor = colorOpts.SELECTED.backColor,
|
|
|
|
+ recColor = 'White';
|
|
|
|
+ style.backColor = selected ? selectedColor : recColor;
|
|
|
|
+ return style;
|
|
|
|
+ },
|
|
|
|
+ initSelection: function (sel) {
|
|
|
|
+ let me = gljOprObj;
|
|
|
|
+ if(sel){
|
|
|
|
+ me.gljLibSheet.setStyle(sel.row, -1, me.getSelStyle(true));
|
|
|
|
+ }
|
|
|
|
+ if(me.preSelection){
|
|
|
|
+ me.gljLibSheet.setStyle(me.preSelection.row, -1, me.getSelStyle(false));
|
|
|
|
+ }
|
|
|
|
+ me.preSelection = sel;
|
|
|
|
+ },
|
|
onButtonClick: function (sender, args) {
|
|
onButtonClick: function (sender, args) {
|
|
if(args.sheet.isEditing()){
|
|
if(args.sheet.isEditing()){
|
|
args.sheet.endEdit();
|
|
args.sheet.endEdit();
|
|
@@ -281,14 +306,6 @@ var gljOprObj = {
|
|
installationFeeObj.onRationInstallValueChange(sender,args);
|
|
installationFeeObj.onRationInstallValueChange(sender,args);
|
|
}
|
|
}
|
|
},
|
|
},
|
|
- onCellClick: function (sender, args) {
|
|
|
|
- console.log('cellClick');
|
|
|
|
- var me = gljOprObj;
|
|
|
|
- if (args.row >= me.sheetData.length) {
|
|
|
|
- return;
|
|
|
|
- }
|
|
|
|
- me.editChecking(args);
|
|
|
|
- },
|
|
|
|
onCellDoubleClick:function (sender, args) {
|
|
onCellDoubleClick:function (sender, args) {
|
|
var me = gljOprObj;
|
|
var me = gljOprObj;
|
|
var header = me.setting.header;
|
|
var header = me.setting.header;
|
|
@@ -314,39 +331,32 @@ var gljOprObj = {
|
|
sheetCommonObj.copyTextToClipboard(cDatas);
|
|
sheetCommonObj.copyTextToClipboard(cDatas);
|
|
return;
|
|
return;
|
|
},
|
|
},
|
|
- editChecking: function (args) {
|
|
|
|
|
|
+ rationGLJEditCheck:function (args) {//true 可以编辑,false 不能编辑
|
|
var me = gljOprObj;
|
|
var me = gljOprObj;
|
|
var header = me.setting.header;
|
|
var header = me.setting.header;
|
|
- var disable = null;
|
|
|
|
- if (me.sheetData[args.row] != undefined) {
|
|
|
|
- if (me.sheetData[args.row].isMixRatio) {
|
|
|
|
- disable = true;
|
|
|
|
|
|
+ if (_.includes(me.setting.view.lockColumns, args.col)) return false;//如果是锁定的列,不能编辑
|
|
|
|
+ if(me.sheetData[args.row] != undefined){
|
|
|
|
+ if(me.sheetData[args.row].isMixRatio){//对于组成物列
|
|
|
|
+ return header[args.col].dataCode == 'marketPrice'//允许修改组成物市单价,其它的不可以
|
|
}else {
|
|
}else {
|
|
if (header[args.col] && header[args.col].dataCode == 'marketPrice') {
|
|
if (header[args.col] && header[args.col].dataCode == 'marketPrice') {
|
|
- if(me.marketPriceReadOnly({data:me.sheetData[args.row]})){
|
|
|
|
- disable = true;
|
|
|
|
- }else {
|
|
|
|
- disable = false;
|
|
|
|
- }
|
|
|
|
|
|
+ return !me.marketPriceReadOnly({data:me.sheetData[args.row]});
|
|
}
|
|
}
|
|
if (header[args.col] && header[args.col].dataCode == 'basePrice') {
|
|
if (header[args.col] && header[args.col].dataCode == 'basePrice') {
|
|
var isAdd = me.sheetData[args.row].isAdd;
|
|
var isAdd = me.sheetData[args.row].isAdd;
|
|
if(isAdd==1){//是新增但没有组成物时允许修改定额价
|
|
if(isAdd==1){//是新增但没有组成物时允许修改定额价
|
|
- if(me.marketPriceReadOnly({data:me.sheetData[args.row]})){//如果有组成物,不可修改
|
|
|
|
- disable = true;
|
|
|
|
- }else {
|
|
|
|
- disable = false;
|
|
|
|
- }
|
|
|
|
|
|
+ return !me.marketPriceReadOnly({data:me.sheetData[args.row]});//如果有组成物,不可修改
|
|
} else {
|
|
} else {
|
|
- disable = true;
|
|
|
|
|
|
+ return false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ return true;
|
|
}
|
|
}
|
|
|
|
+ }else {
|
|
|
|
+ return false
|
|
}
|
|
}
|
|
- if (disable != null) {
|
|
|
|
- me.sheet.getCell(args.row, args.col, GC.Spread.Sheets.SheetArea.viewport).locked(disable);
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
|
|
+ }
|
|
|
|
+ ,
|
|
hasComposition:function (ration_glj,isRationType) {//判断是否有组成物,有则返回true 现在主材类型的工料机也有可能有组成物。
|
|
hasComposition:function (ration_glj,isRationType) {//判断是否有组成物,有则返回true 现在主材类型的工料机也有可能有组成物。
|
|
let type = isRationType==true? ration_glj.subType:ration_glj.type;
|
|
let type = isRationType==true? ration_glj.subType:ration_glj.type;
|
|
if(notEditType.indexOf(type)!=-1||type==gljType.MAIN_MATERIAL){
|
|
if(notEditType.indexOf(type)!=-1||type==gljType.MAIN_MATERIAL){
|
|
@@ -504,36 +514,49 @@ var gljOprObj = {
|
|
let selected = this.sheet.getSelections();
|
|
let selected = this.sheet.getSelections();
|
|
this.combineWithProjectGlj(this.sheetData);
|
|
this.combineWithProjectGlj(this.sheetData);
|
|
this.sheet.setRowCount(0);
|
|
this.sheet.setRowCount(0);
|
|
- //console.log(+new Date())
|
|
|
|
- //this.sheet.getRange(0,-1,this.sheet.getRowCount(),-1).visible(true); //这个方法导致加载缓慢
|
|
|
|
this.sheetData = sortRationGLJ(this.sheetData);
|
|
this.sheetData = sortRationGLJ(this.sheetData);
|
|
this.sumQuantity();//计算总消耗量
|
|
this.sumQuantity();//计算总消耗量
|
|
this.addMixRatioToShow();//显示组成物信息
|
|
this.addMixRatioToShow();//显示组成物信息
|
|
- this.initRationTree(init);
|
|
|
|
|
|
+ this.initRationTree(init,this.getUnitPriceCodeMap());
|
|
sheetCommonObj.showData(this.sheet, this.setting, this.sheetData);
|
|
sheetCommonObj.showData(this.sheet, this.setting, this.sheetData);
|
|
if(selected){//定位光标到之前的位置
|
|
if(selected){//定位光标到之前的位置
|
|
this.sheet.setSelection(selected[0].row,selected[0].col,selected[0].rowCount,selected[0].colCount);
|
|
this.sheet.setSelection(selected[0].row,selected[0].col,selected[0].rowCount,selected[0].colCount);
|
|
}
|
|
}
|
|
},
|
|
},
|
|
- initRationTree: function (init) {
|
|
|
|
- this.sheet.getRange(-1, 0, -1, 1).cellType(this.getTreeNodeCellType(this.sheetData));
|
|
|
|
|
|
+ getUnitPriceCodeMap : function () {//取单价文件中,编码前缀一样的映射表
|
|
|
|
+ let codeMap = {};
|
|
|
|
+ let priceMap = projectObj.project.projectGLJ.datas.unitPriceMap;
|
|
|
|
+ if(priceMap){
|
|
|
|
+ for(let connectKey in priceMap){
|
|
|
|
+ let code = priceMap[connectKey].code;
|
|
|
|
+ if(code){
|
|
|
|
+ let preCode = code.split("-")[0];
|
|
|
|
+ if(codeMap[preCode]) {
|
|
|
|
+ codeMap[preCode].push({text:code,value:connectKey});
|
|
|
|
+ }else {
|
|
|
|
+ codeMap[preCode]=[{text:code,value:connectKey}];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return codeMap;
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ initRationTree: function (init,codeMap) {
|
|
|
|
+ this.sheet.suspendPaint();
|
|
|
|
+ this.sheet.suspendEvent();
|
|
|
|
+ this.sheet.setRowCount(this.sheetData.length >30?this.sheetData.length:30);
|
|
for (var i = 0; i < this.sheetData.length; i++) {
|
|
for (var i = 0; i < this.sheetData.length; i++) {
|
|
|
|
+ this.sheet.setCellType(i, 0,this.getTreeNodeCellType(this.sheetData,i,codeMap),GC.Spread.Sheets.SheetArea.viewport);
|
|
if (this.sheetData[i].hasOwnProperty('subList')) {
|
|
if (this.sheetData[i].hasOwnProperty('subList')) {
|
|
- /* var collapsed = false;
|
|
|
|
- if (init) {
|
|
|
|
- this.sheetData[i].collapsed = true;
|
|
|
|
- collapsed = true;
|
|
|
|
- } else {
|
|
|
|
- collapsed = this.sheetData[i].collapsed == undefined ? true : this.sheetData[i].collapsed;
|
|
|
|
- }*/
|
|
|
|
var collapsed = this.sheetData[i].collapsed == undefined ? true : this.sheetData[i].collapsed;
|
|
var collapsed = this.sheetData[i].collapsed == undefined ? true : this.sheetData[i].collapsed;
|
|
if (collapsed == true) {
|
|
if (collapsed == true) {
|
|
this.sheet.getRange(i + 1, -1, this.sheetData[i].subList.length, -1).visible(false);
|
|
this.sheet.getRange(i + 1, -1, this.sheetData[i].subList.length, -1).visible(false);
|
|
}
|
|
}
|
|
- //this.sheet.getRange(i+1, -1, this.sheetData[i].subList.length, -1).visible(!collapsed);// this.sheet.getRange(i+1, -1, this.sheetData[i].subList.length, -1).locked(true);
|
|
|
|
- //这个方法导致加载缓慢
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ this.sheet.resumeEvent();
|
|
|
|
+ this.sheet.resumePaint();
|
|
},
|
|
},
|
|
filterGljByRation: function (ration, datas) {
|
|
filterGljByRation: function (ration, datas) {
|
|
var gljList = [];
|
|
var gljList = [];
|
|
@@ -733,6 +756,10 @@ var gljOprObj = {
|
|
var updateField = me.setting.header[args.col].dataCode;
|
|
var updateField = me.setting.header[args.col].dataCode;
|
|
var recode = me.sheetData[args.row];
|
|
var recode = me.sheetData[args.row];
|
|
var newval;
|
|
var newval;
|
|
|
|
+ if(!me.rationGLJEditCheck(args)){
|
|
|
|
+ recode? me.sheet.getCell(args.row, args.col).value(recode[updateField]): me.sheet.getCell(args.row, args.col).value(null);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
if (updateField == 'marketPrice' || updateField == 'customQuantity' || updateField == 'basePrice') {
|
|
if (updateField == 'marketPrice' || updateField == 'customQuantity' || updateField == 'basePrice') {
|
|
if (args.editingText == null) {
|
|
if (args.editingText == null) {
|
|
updateField == 'marketPrice' ? newval = 0 : newval = "";
|
|
updateField == 'marketPrice' ? newval = 0 : newval = "";
|
|
@@ -752,6 +779,12 @@ var gljOprObj = {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ if(updateField == 'code'){
|
|
|
|
+ if (!gljUtil.isDef(args.editingText)||args.editingText==''||args.editingText.indexOf('|-|') === -1||this.isRationGLJExit(args.editingText)) {//说明是选中自已,或者是已存在的工料机
|
|
|
|
+ me.sheet.getCell(args.row, args.col).value(recode[updateField]);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
newval = args.editingText == null ? "" : args.editingText;
|
|
newval = args.editingText == null ? "" : args.editingText;
|
|
}
|
|
}
|
|
if (newval === recode[updateField]) {//如果值完全相等,则不需要更新
|
|
if (newval === recode[updateField]) {//如果值完全相等,则不需要更新
|
|
@@ -759,10 +792,23 @@ var gljOprObj = {
|
|
}
|
|
}
|
|
if (updateField == 'marketPrice' || updateField == 'basePrice') {
|
|
if (updateField == 'marketPrice' || updateField == 'basePrice') {
|
|
projectObj.project.projectGLJ.updatePriceFromRG(recode, updateField, newval);
|
|
projectObj.project.projectGLJ.updatePriceFromRG(recode, updateField, newval);
|
|
|
|
+ }else if(updateField == 'code'){//替换单价文件中已经有的工料机
|
|
|
|
+ projectObj.project.ration_glj.updateRationGLJByChangeCode(recode, updateField, newval);
|
|
} else {
|
|
} else {
|
|
projectObj.project.ration_glj.updateRationGLJByEdit(recode, updateField, newval);
|
|
projectObj.project.ration_glj.updateRationGLJByEdit(recode, updateField, newval);
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
+ isRationGLJExit:function (connectKey) {
|
|
|
|
+ for(let rg of gljOprObj.sheetData){
|
|
|
|
+ if(rg.isMixRatio == true){
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ if(gljOprObj.getIndex(rg, gljKeyArray) == connectKey){//存在一样的工料机
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
|
|
+ },
|
|
updateRationTypeGLJ: function (value, node, fieldName,editingText) {
|
|
updateRationTypeGLJ: function (value, node, fieldName,editingText) {
|
|
let newval;
|
|
let newval;
|
|
let updatePrice = false;
|
|
let updatePrice = false;
|
|
@@ -965,9 +1011,12 @@ var gljOprObj = {
|
|
var project = projectObj.project;
|
|
var project = projectObj.project;
|
|
gljOprObj.GLJSelection = _.filter(gljOprObj.GLJSelection, function (n) {
|
|
gljOprObj.GLJSelection = _.filter(gljOprObj.GLJSelection, function (n) {
|
|
var rg = _.find(gljOprObj.sheetData, function (item) {
|
|
var rg = _.find(gljOprObj.sheetData, function (item) {
|
|
|
|
+ if(item.isMixRatio == true){
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
var i_key = gljOprObj.getIndex(item, gljKeyArray);
|
|
var i_key = gljOprObj.getIndex(item, gljKeyArray);
|
|
return n == i_key
|
|
return n == i_key
|
|
- })
|
|
|
|
|
|
+ });
|
|
return rg ? false : true;
|
|
return rg ? false : true;
|
|
})
|
|
})
|
|
if (gljOprObj.GLJSelection.length > 0 && selected && selected.sourceType == ModuleNames.ration) {
|
|
if (gljOprObj.GLJSelection.length > 0 && selected && selected.sourceType == ModuleNames.ration) {
|
|
@@ -1121,7 +1170,7 @@ var gljOprObj = {
|
|
}
|
|
}
|
|
return node;
|
|
return node;
|
|
},
|
|
},
|
|
- getTreeNodeCellType: function (data) {
|
|
|
|
|
|
+ getTreeNodeCellType: function (data,index,codeMap) {
|
|
var ns = GC.Spread.Sheets;
|
|
var ns = GC.Spread.Sheets;
|
|
var rectW = 10;
|
|
var rectW = 10;
|
|
var rectH = 10;
|
|
var rectH = 10;
|
|
@@ -1183,7 +1232,11 @@ var gljOprObj = {
|
|
return offset;
|
|
return offset;
|
|
}
|
|
}
|
|
|
|
|
|
- TreeNodeCellType.prototype = new ns.CellTypes.Text();
|
|
|
|
|
|
+ if(isDef(index) && data[index] && data[index].isMixRatio !==true){
|
|
|
|
+ TreeNodeCellType.prototype = sheetCommonObj.getDynamicCombo();
|
|
|
|
+ }else {
|
|
|
|
+ TreeNodeCellType.prototype = new ns.CellTypes.Text();
|
|
|
|
+ }
|
|
TreeNodeCellType.prototype.paint = function (ctx, value, x, y, w, h, style, options) {
|
|
TreeNodeCellType.prototype.paint = function (ctx, value, x, y, w, h, style, options) {
|
|
if (value != null) {
|
|
if (value != null) {
|
|
var offset = margin + rectW + 6;
|
|
var offset = margin + rectW + 6;
|
|
@@ -1203,17 +1256,21 @@ var gljOprObj = {
|
|
GC.Spread.Sheets.CellTypes.Text.prototype.paint.apply(this, arguments);
|
|
GC.Spread.Sheets.CellTypes.Text.prototype.paint.apply(this, arguments);
|
|
}
|
|
}
|
|
};
|
|
};
|
|
- // override getHitInfo to allow cell type get mouse messages
|
|
|
|
TreeNodeCellType.prototype.getHitInfo = function (x, y, cellStyle, cellRect, context) {
|
|
TreeNodeCellType.prototype.getHitInfo = function (x, y, cellStyle, cellRect, context) {
|
|
- return {
|
|
|
|
- x: x,
|
|
|
|
- y: y,
|
|
|
|
- row: context.row,
|
|
|
|
- col: context.col,
|
|
|
|
- cellStyle: cellStyle,
|
|
|
|
- cellRect: cellRect,
|
|
|
|
- sheetArea: context.sheetArea
|
|
|
|
- };
|
|
|
|
|
|
+ if(x < cellRect.x+cellRect.width -15){
|
|
|
|
+ return {
|
|
|
|
+ x: x,
|
|
|
|
+ y: y,
|
|
|
|
+ row: context.row,
|
|
|
|
+ col: context.col,
|
|
|
|
+ cellStyle: cellStyle,
|
|
|
|
+ cellRect: cellRect,
|
|
|
|
+ sheetArea: context.sheetArea
|
|
|
|
+ };
|
|
|
|
+ }else {
|
|
|
|
+ return GC.Spread.Sheets.CellTypes.ComboBox.prototype.getHitInfo.apply(this, arguments);
|
|
|
|
+ }
|
|
|
|
+
|
|
};
|
|
};
|
|
TreeNodeCellType.prototype.processMouseDown = function (hitinfo) {
|
|
TreeNodeCellType.prototype.processMouseDown = function (hitinfo) {
|
|
var recode = data[hitinfo.row];
|
|
var recode = data[hitinfo.row];
|
|
@@ -1227,10 +1284,26 @@ var gljOprObj = {
|
|
hitinfo.sheet.getRange(hitinfo.row + 1, -1, recode.subList.length, -1).visible(!collapsed);
|
|
hitinfo.sheet.getRange(hitinfo.row + 1, -1, recode.subList.length, -1).visible(!collapsed);
|
|
hitinfo.sheet.invalidateLayout();
|
|
hitinfo.sheet.invalidateLayout();
|
|
hitinfo.sheet.repaint();
|
|
hitinfo.sheet.repaint();
|
|
|
|
+ return;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ GC.Spread.Sheets.CellTypes.ComboBox.prototype.processMouseDown.apply(this, arguments);
|
|
|
|
+ // GC.Spread.Sheets.CellTypes.Text.prototype.paint.apply(this, arguments);
|
|
};
|
|
};
|
|
- return new TreeNodeCellType()
|
|
|
|
|
|
+ let cellType = new TreeNodeCellType();
|
|
|
|
+ let options = [];
|
|
|
|
+ if(isDef(index) && data[index] && data[index].isMixRatio !==true){
|
|
|
|
+ let code = data[index].code;
|
|
|
|
+ if(code) {
|
|
|
|
+ let preCode = code.split("-")[0];
|
|
|
|
+ if( codeMap[preCode]) options = codeMap[preCode];
|
|
|
|
+ if(options.length>0) _.remove(options,{'value':gljOprObj.getIndex(data[index], gljKeyArray)})//去掉本身
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ cellType.editorValueType(GC.Spread.Sheets.CellTypes.EditorValueType.value);
|
|
|
|
+ cellType.itemHeight(options.length).items(options);
|
|
|
|
+ }
|
|
|
|
+ return cellType;
|
|
},
|
|
},
|
|
marketPriceReadOnly: function (node) {
|
|
marketPriceReadOnly: function (node) {
|
|
let hasCom = false;
|
|
let hasCom = false;
|
|
@@ -1258,8 +1331,11 @@ $(function () {
|
|
$('#glj_tree_div').on('shown.bs.modal', function (e) {
|
|
$('#glj_tree_div').on('shown.bs.modal', function (e) {
|
|
if (gljOprObj.gljLibSpresd == undefined) {
|
|
if (gljOprObj.gljLibSpresd == undefined) {
|
|
gljOprObj.gljLibSpresd = sheetCommonObj.buildSheet($('#gljLibSheet')[0], gljOprObj.gljLibSheetSetting, gljOprObj.stdGLJ.length + gljOprObj.complementaryGLJs.length);
|
|
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.gljLibSpresd.bind(GC.Spread.Sheets.Events.ButtonClicked, gljOprObj.onButtonClick);
|
|
gljOprObj.gljLibSheet = gljOprObj.gljLibSpresd.getSheet(0);
|
|
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.options.isProtected = true;
|
|
gljOprObj.gljLibSheet.name('glj_lib');
|
|
gljOprObj.gljLibSheet.name('glj_lib');
|
|
}
|
|
}
|
|
@@ -1299,6 +1375,7 @@ $(function () {
|
|
let index = _.findIndex(gljOprObj.gljLibSheetData, {code: selected.code});
|
|
let index = _.findIndex(gljOprObj.gljLibSheetData, {code: selected.code});
|
|
gljOprObj.gljLibSheet.showRow(index, GC.Spread.Sheets.VerticalPosition.center);
|
|
gljOprObj.gljLibSheet.showRow(index, GC.Spread.Sheets.VerticalPosition.center);
|
|
gljOprObj.gljLibSheet.setActiveCell(index, 0);
|
|
gljOprObj.gljLibSheet.setActiveCell(index, 0);
|
|
|
|
+ gljOprObj.initSelection({row: index});
|
|
gljOprObj.gljLibSpresd.focus(true);
|
|
gljOprObj.gljLibSpresd.focus(true);
|
|
}
|
|
}
|
|
else gljOprObj.showLibGLJSheetData();
|
|
else gljOprObj.showLibGLJSheetData();
|