|
@@ -580,6 +580,127 @@ var projectObj = {
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
+ onClipboardPasting: function (sender, info){
|
|
|
+ info.cancel = true;
|
|
|
+
|
|
|
+ let rIdx = info.sheet.getActiveRowIndex();
|
|
|
+ let node = projectObj.project.mainTree.items[rIdx];
|
|
|
+ if (!node.parent){
|
|
|
+ hintBox.infoBox('系统提示','大项费用不允许粘贴!', 1);
|
|
|
+ return false;
|
|
|
+ };
|
|
|
+
|
|
|
+ let colName = projectObj.project.projSetting.main_tree_col.cols[info.cellRange.col].data.field;
|
|
|
+ if (colName == 'code'){
|
|
|
+ function getNodeType(node) {
|
|
|
+ let t = null;
|
|
|
+ if (calcTools.isRationItem(node))
|
|
|
+ t = 1
|
|
|
+ else if (calcTools.isBill(node)){
|
|
|
+ if (calcTools.isBill_FB(node))
|
|
|
+ t = 2
|
|
|
+ else if (calcTools.isBill_FX(node) || calcTools.isBill_BX(node))
|
|
|
+ t = 3
|
|
|
+ else if (calcTools.isBill_BILL(node))
|
|
|
+ t = 4;
|
|
|
+ };
|
|
|
+ return t;
|
|
|
+ };
|
|
|
+ function getPasteTextArr(info) {
|
|
|
+ let copyText = info.pasteData.text.trim();
|
|
|
+ if (!copyText) return null;
|
|
|
+ let rows = copyText.split('\r\n');
|
|
|
+ let rstArr = [];
|
|
|
+ for (let row of rows) {
|
|
|
+ row = row.trim();
|
|
|
+ row = row.split('\t');
|
|
|
+ rstArr.push(row);
|
|
|
+ }
|
|
|
+ return rstArr;
|
|
|
+ };
|
|
|
+ function getPasteNodes(count, nodeType) {
|
|
|
+ let nodesArr = [];
|
|
|
+ let curNode = null;
|
|
|
+ for (let i = rIdx; i < rIdx + count; i++) {
|
|
|
+ curNode = projectObj.project.mainTree.items[i];
|
|
|
+ if (curNode && calcTools.isSameTypeNode(curNode, node)){
|
|
|
+ nodesArr.push(curNode);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ curNode = projectObj.project.mainTree.items[i - 1];
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ if (nodesArr.length < count){
|
|
|
+ if (projectObj.project.mainTree.selected != curNode)
|
|
|
+ projectObj.project.mainTree.selected = curNode;
|
|
|
+
|
|
|
+ let add = count - nodesArr.length;
|
|
|
+ for (let i = 0; i < add; i++) {
|
|
|
+ switch (nodeType) {
|
|
|
+ case 1:
|
|
|
+ curNode = projectObj.project.Ration.addNewRation(null,rationType.ration,null,true);
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ curNode = ProjectController.addFB(projectObj.project, projectObj.mainController);
|
|
|
+ break;
|
|
|
+ case 3:
|
|
|
+ curNode = ProjectController.addFX(projectObj.project, projectObj.mainController);
|
|
|
+ break;
|
|
|
+ case 4:
|
|
|
+ curNode = ProjectController.addBills(projectObj.project, projectObj.mainController);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!curNode){
|
|
|
+ hintBox.infoBox('系统提示','插入新结点出错,粘贴失败!', 1);
|
|
|
+ return nodesArr;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ nodesArr.push(curNode);
|
|
|
+ if (projectObj.project.mainTree.selected != curNode)
|
|
|
+ projectObj.project.mainTree.selected = curNode;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ return nodesArr;
|
|
|
+ };
|
|
|
+ function doPaste(datas, nodes, nodeType) {
|
|
|
+ if (nodeType == 1){ // 批量粘贴定额有严重的异步问题,这里要和清单分开处理
|
|
|
+ let updateRationCodes = [];
|
|
|
+ for (let i = 0; i < datas.length; i++) {
|
|
|
+ let ptNode = nodes[i];
|
|
|
+ let code = datas[i][0];
|
|
|
+ updateRationCodes.push({'node':ptNode, value:code});
|
|
|
+ }
|
|
|
+ projectObj.project.Ration.updateRationCodes(updateRationCodes);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ for (let i = 0; i < datas.length; i++) {
|
|
|
+ let ptNode = nodes[i];
|
|
|
+ let code = datas[i][0];
|
|
|
+ if (!(ptNode.data && ptNode.data.code && ptNode.data.code.sameText(code))){
|
|
|
+ projectObj.updateCode(ptNode, code);
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }
|
|
|
+ projectObj.mainController.refreshTreeNode(nodes);
|
|
|
+ };
|
|
|
+
|
|
|
+ let tagType = getNodeType(node);
|
|
|
+ if (!tagType){
|
|
|
+ hintBox.infoBox('系统提示', '该树结点类型不支持从项目编码列粘贴!', 1);
|
|
|
+ return false;
|
|
|
+ };
|
|
|
+
|
|
|
+ let datas = getPasteTextArr(info);
|
|
|
+ if (!datas) return;
|
|
|
+ let pasteNodes = getPasteNodes(datas.length, tagType);
|
|
|
+ doPaste(datas, pasteNodes, tagType);
|
|
|
+ };
|
|
|
+ },
|
|
|
mainSpreadEditEnded: function (sender, info) {
|
|
|
console.log('enterEDEnd');
|
|
|
let project = projectObj.project;
|
|
@@ -745,6 +866,8 @@ var projectObj = {
|
|
|
that.mainSpread.bind(GC.Spread.Sheets.Events.ButtonClicked, that.onButtonClick);
|
|
|
that.mainSpread.bind(GC.Spread.Sheets.Events.CellDoubleClick, that.onCellDoubleClick);
|
|
|
that.mainSpread.bind(GC.Spread.Sheets.Events.ColumnWidthChanged, that.onColumnWidthChanged);
|
|
|
+ that.mainSpread.bind(GC.Spread.Sheets.Events.ClipboardPasting, that.onClipboardPasting);
|
|
|
+
|
|
|
//let loadOtherStartTime = +new Date();
|
|
|
if(!projectReadOnly){
|
|
|
that.loadMainSpreadContextMenu();
|
|
@@ -765,8 +888,6 @@ var projectObj = {
|
|
|
if(projectReadOnly){
|
|
|
disableSpread(that.mainSpread);
|
|
|
}
|
|
|
- let themeName = that.mainSpread.getSheet(0).currentTheme().name();
|
|
|
- console.log(GC.Spread.Sheets.Themes[themeName]);
|
|
|
$.bootstrapLoading.end();
|
|
|
}
|
|
|
else {
|
|
@@ -1268,6 +1389,7 @@ var projectObj = {
|
|
|
const sheet = this.mainSpread.getActiveSheet();
|
|
|
sheet.setSelection(row, col, 1, 1);
|
|
|
this.mainController.setTreeSelected(this.mainController.tree.items[row]);//触发树节点选中事件
|
|
|
+ sheet.showRow(row, GC.Spread.Sheets.VerticalPosition.center);
|
|
|
},
|
|
|
// 选中区域合计数字
|
|
|
amountAreaNumber: function(e, info) {
|