|
@@ -564,6 +564,119 @@ 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() {
|
|
|
+ let copyText = info.pasteData.text.trim();
|
|
|
+ let arr = copyText.split('\r\n');
|
|
|
+ return arr;
|
|
|
+ };
|
|
|
+ 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(texts, nodes, nodeType) {
|
|
|
+ if (nodeType == 1){
|
|
|
+ let updateRationCodes = [];
|
|
|
+ for (let i = 0; i < texts.length; i++) {
|
|
|
+ let ptNode = nodes[i];
|
|
|
+ let ptText = texts[i];
|
|
|
+ updateRationCodes.push({'node':ptNode, value:ptText});
|
|
|
+ }
|
|
|
+ projectObj.project.Ration.updateRationCodes(updateRationCodes);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ for (let i = 0; i < texts.length; i++) {
|
|
|
+ let ptNode = nodes[i];
|
|
|
+ let ptText = texts[i];
|
|
|
+ if (!(ptNode.data && ptNode.data.code && ptNode.data.code.sameText(ptText))){
|
|
|
+ projectObj.updateCode(ptNode, ptText);
|
|
|
+ };
|
|
|
+ }
|
|
|
+ }
|
|
|
+ projectObj.mainController.refreshTreeNode(nodes);
|
|
|
+ };
|
|
|
+
|
|
|
+ let tagType = getNodeType(node);
|
|
|
+ if (!tagType){
|
|
|
+ hintBox.infoBox('系统提示', '该树结点类型不支持从项目编码列粘贴!', 1);
|
|
|
+ return false;
|
|
|
+ };
|
|
|
+
|
|
|
+ let textArr = getPasteTextArr();
|
|
|
+ let pasteNodes = getPasteNodes(textArr.length, tagType);
|
|
|
+ doPaste(textArr, pasteNodes, tagType);
|
|
|
+ };
|
|
|
+ },
|
|
|
mainSpreadEditEnded: function (sender, info) {
|
|
|
console.log('enterEDEnd');
|
|
|
let project = projectObj.project;
|
|
@@ -728,6 +841,7 @@ 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){
|