浏览代码

修改Sheet与idTree绑定树结构显示方式,以适应Sheet的复制粘贴功能

MaiXinRong 8 年之前
父节点
当前提交
1e854b7fb7

+ 1 - 6
modules/templates/controllers/bills_template_controller.js

@@ -3,7 +3,6 @@
  */
 var BillsTemplateData = require('../models/bills_template');
 
-//ͳһ»Øµ÷º¯Êý
 var callback = function(req, res, err, message, data){
     res.json({error: err, message: message, data: data});
 };
@@ -32,11 +31,7 @@ module.exports = {
     getNewBillsTemplateID: function (req, res) {
         var data = JSON.parse(req.body.data);
         BillsTemplateData.getNewBillsTemplateID(data.count, function (err, message, data) {
-            if (err === 0) {
-                callback(req, res, err, message, data);
-            } else {
-                callback(req, res, err, message, null);
-            }
+            callback(req, res, err, message, data);
         });
     }
 }

+ 34 - 0
public/web/common_ajax.js

@@ -0,0 +1,34 @@
+/**
+ * Created by Mai on 2017/4/20.
+ */
+
+var CommonAjax = {
+    post: function (url, data, successCallback, errorCallback) {
+        $.ajax({
+            type:"POST",
+            url: url,
+            data: {'data': JSON.stringify(data)},
+            dataType: 'json',
+            cache: false,
+            timeout: 50000,
+            success: function(result){
+                if (result.error === 0) {
+                    if (successCallback) {
+                        successCallback(result.data);
+                    }
+                } else {
+                    alert('error: ' + result.message);
+                    if (errorCallback) {
+                        errorCallback();
+                    }
+                }
+            },
+            error: function(jqXHR, textStatus, errorThrown){
+                alert('error ' + textStatus + " " + errorThrown);
+                if (errorCallback) {
+                    errorCallback();
+                }
+            }
+        });
+    }
+};

+ 2 - 12
public/web/tree_sheet_controller.js

@@ -18,18 +18,8 @@ var TREE_SHEET_CONTROLLER = {
             var that = this;
             TREE_SHEET_HELPER.showTreeData(this.setting, this.sheet, this.tree);
             this.sheet.bind(GC.Spread.Sheets.Events.SelectionChanged, function (e, info) {
-                that.setTreeSelected(that.tree.findNode(info.sheet.getTag(info.newSelections[0].row, info.newSelections[0].col)));
+                that.setTreeSelected(that.tree.items[info.newSelections[0].row]);
             });
-
-            /*this.sheet.bind(GC.Spread.Sheets.Events.EditEnded, function (sender, args) {
-                var result = tree.editedData(setting.cols[args.col].data.field, args.sheet.getTag(args.row, args.col), args.editingText);
-
-                if (result.allow) {
-                    TREE_SHEET_HELPER.refreshTreeNodeData(that.setting, that.sheet, result.nodes, false);
-                } else {
-                    TREE_SHEET_HELPER.refreshTreeNodeData(that.setting, that.sheet, [tree.findNode(args.sheet.getTag(args.row, args.col))], false);
-                };
-            });*/
         };
 
         controller.prototype.insert = function () {
@@ -57,7 +47,7 @@ var TREE_SHEET_CONTROLLER = {
                 if (this.tree.delete(this.tree.selected)) {
                     TREE_SHEET_HELPER.massOperationSheet(this.sheet, function () {
                         that.sheet.deleteRows(sels[0].row, that.tree.selected.posterityCount() + 1);
-                        that.setTreeSelected(that.tree.findNode(that.sheet.getTag(sels[0].row, 0, GC.Spread.Sheets.SheetArea.viewport)));
+                        that.setTreeSelected(that.tree.items[sels[0].row]);
                     });
                 }
             }

+ 3 - 9
public/web/tree_sheet_helper.js

@@ -95,12 +95,6 @@ var TREE_SHEET_HELPER = {
                     return data;
                 };
                 cell.value(getFieldText2());
-                /*if (node.data[colSetting.data.field]) {
-                    cell.value(node.data[colSetting.data.field]);
-                } else {
-                    cell.text('');
-                }*/
-                sheet.setTag(iRow, iCol, node.getID());
             });
             if (recursive) {
                 TREE_SHEET_HELPER.refreshTreeNodeData(setting, sheet, node.children, recursive);
@@ -165,7 +159,7 @@ var TREE_SHEET_HELPER = {
                     }
                 }
             }
-            var node = tree.findNode(options.sheet.getTag(options.row, options.col, options.SheetArea));
+            var node = tree.items[options.row];
             var showTreeLine = true;
 
             if (!node) { return; }
@@ -225,7 +219,7 @@ var TREE_SHEET_HELPER = {
         }
         TreeNodeCellType.prototype.processMouseDown = function (hitinfo) {
             var offset = -1;
-            var node = tree.findNode(hitinfo.sheet.getTag(hitinfo.row, hitinfo.col, hitinfo.sheetArea));
+            var node = tree.items[hitinfo.row];
             tree.selected = node;
             if (!node || node.children.length === 0) { return; }
             var centerX = hitinfo.cellRect.x + offset + node.depth() * indent + indent / 2;
@@ -236,7 +230,7 @@ var TREE_SHEET_HELPER = {
                 TREE_SHEET_HELPER.massOperationSheet(hitinfo.sheet, function () {
                     var iCount = node.posterityCount(), i, child;
                     for (i = 0; i < iCount; i++) {
-                        child = tree.findNode(hitinfo.sheet.getTag(hitinfo.row + i + 1, hitinfo.col, hitinfo.sheetArea));
+                        child = tree.items[hitinfo.row + i + 1];
                         hitinfo.sheet.setRowVisible(hitinfo.row + i + 1, child.visible, hitinfo.sheetArea);
                         //hitinfo.sheet.setRowVisible(hitinfo.row + i + 1, child.vis(), hitinfo.sheetArea);
                     }

+ 1 - 1
web/templates/html/bills.html

@@ -99,7 +99,7 @@
 <!-- service -->
 <script type="text/javascript" src="/web/templates/js/bills.js"></script>
 <script type="text/javascript" src="/web/templates/js/tp_bills_setting.js"></script>
-<script type="text/javascript">
+<script type="text/javascript" src="/public/web/common_ajax.js"></script>
     autoFlashHeight();
 </script>
 </html>

+ 18 - 38
web/templates/js/bills.js

@@ -3,32 +3,6 @@
  */
 $(document).ready(function () {
     var tempType = 3;
-    var PostData = function (url, data, successCallback, errorCallback) {
-        $.ajax({
-            type:"POST",
-            url: url,
-            data: {'data': JSON.stringify(data)},
-            dataType: 'json',
-            cache: false,
-            timeout: 50000,
-            success: function(result){
-                if (result.error === 0) {
-                    successCallback(result.data);
-                } else {
-                    alert('error: ' + result.message);
-                    if (errorCallback) {
-                        errorCallback();
-                    }
-                }
-            },
-            error: function(jqXHR, textStatus, errorThrown){
-                alert('error ' + textStatus + " " + errorThrown);
-                if (errorCallback) {
-                    errorCallback();
-                }
-            }
-        });
-    };
     var FormatUpdateData = function (data) {
         var updateData = {};
         updateData['user_id'] = userID;
@@ -69,26 +43,32 @@ $(document).ready(function () {
 
     billsSpread.options.tabStripVisible = false;
     billsSpread.options.scrollbarMaxAlign = true;
+    billsSpread.options.cutCopyIndicatorVisible = false;
+    billsSpread.options.allowCopyPasteExcelStyle = false;
     controller.bind('refreshBaseActn', RefreshBaseActn);
 
     billsSpread.bind(GC.Spread.Sheets.Events.EditEnded, function (sender, info) {
-        var node = controller.tree.findNode(info.sheet.getTag(info.row, info.col));
+        var node = controller.tree.items[info.row];
         var fieldName = controller.setting.cols[info.col].data.field;
         var data = {type: 'update', data: {ID: node.getID()}};
         data.data[fieldName] = info.editingText;
         var updateData = FormatUpdateData([data]);
-        PostData('/template/bills/updateBillsTemplate', updateData, function (data) {
+        CommonAjax.post('/template/bills/updateBillsTemplate', updateData, function (data) {
             node.data[fieldName] = info.editingText;
             controller.refreshTreeNode([node], false);
         }, function () {
             controller.refreshTreeNode([node], false);
         });
     });
+    billsSpread.bind(GC.Spread.Sheets.Events.ClipboardPasting, function (sender, args) {
+        console.log("ClipboardPasting");
+    });
     billsSpread.bind(GC.Spread.Sheets.Events.ClipboardPasted, function (e, info) {
+        console.log("ClipboardPasted");
         var node, iRow, iCol, curRow, curCol, datas = [], data, fieldName, updateData;
         for (iRow = 0; iRow < info.cellRange.rowCount; iRow ++) {
             curRow = info.cellRange.row + iRow;
-            node = controller.tree.findNode(info.sheet.getTag(curRow, 0));
+            node = controller.tree.items[curRow];
             if (node) {
                 data = {type: 'update', data: {ID: node.getID()}};
                 for (iCol = 0; iCol < info.cellRange.colCount; iCol++) {
@@ -99,15 +79,15 @@ $(document).ready(function () {
                 datas.push(data);
             }
         };
-        PostData('/template/bills/updateBillsTemplate', FormatUpdateData(datas), function (data) {
+        CommonAjax.post('/template/bills/updateBillsTemplate', FormatUpdateData(datas), function (data) {
             RefreshBillsData(data);
             controller.showTreeData();
         }, function () {
             controller.showTreeData();
-        })
+        });
     });
 
-    PostData('/template/bills/getBillsTemplate', {tempType: tempType}, function (data) {
+    CommonAjax.post('/template/bills/getBillsTemplate', {tempType: tempType}, function (data) {
         bills = data;
         tree.loadDatas(bills);
         controller.showTreeData();
@@ -118,7 +98,7 @@ $(document).ready(function () {
     });
 
     $('#insert').click(function () {
-        PostData('/template/bills/getNewBillsTemplateID', {count: 1}, function (data) {
+        CommonAjax.post('/template/bills/getNewBillsTemplateID', {count: 1}, function (data) {
             var selected = controller.tree.selected, updateData;
             controller.tree.maxNodeID(data.lowID - 1);
             controller.tree.rangeNodeID(data.highID);
@@ -142,7 +122,7 @@ $(document).ready(function () {
         var selected = controller.tree.selected, updateData;
         if (selected) {
             updateData = FormatUpdateData(controller.tree.getDeleteData(selected));
-            PostData('/template/bills/updateBillsTemplate', updateData, function (data) {
+            CommonAjax.post('/template/bills/updateBillsTemplate', updateData, function (data) {
                 controller.delete();
                 RefreshBillsData(data);
                 controller.showTreeData();
@@ -153,7 +133,7 @@ $(document).ready(function () {
         var selected = controller.tree.selected, updateData;
         if (selected) {
             updateData = FormatUpdateData(selected.getUpLevelData());
-            PostData('/template/bills/updateBillsTemplate', updateData, function (data) {
+            CommonAjax.post('/template/bills/updateBillsTemplate', updateData, function (data) {
                 controller.upLevel();
                 RefreshBillsData(data);
                 controller.showTreeData();
@@ -164,7 +144,7 @@ $(document).ready(function () {
         var selected = controller.tree.selected, updateData;
         if (selected) {
             updateData = FormatUpdateData(selected.getDownLevelData());
-            PostData('/template/bills/updateBillsTemplate', updateData, function (data) {
+            CommonAjax.post('/template/bills/updateBillsTemplate', updateData, function (data) {
                 controller.downLevel();
                 RefreshBillsData(data);
                 controller.showTreeData();
@@ -175,7 +155,7 @@ $(document).ready(function () {
         var selected = controller.tree.selected, updateData;
         if (selected) {
             updateData = FormatUpdateData(selected.getUpMoveData());
-            PostData('/template/bills/updateBillsTemplate', updateData, function (data) {
+            CommonAjax.post('/template/bills/updateBillsTemplate', updateData, function (data) {
                 controller.upMove();
                 RefreshBillsData(data);
                 controller.showTreeData();
@@ -186,7 +166,7 @@ $(document).ready(function () {
         var selected = controller.tree.selected, updateData;
         if (selected) {
             updateData = FormatUpdateData(selected.getDownMoveData());
-            PostData('/template/bills/updateBillsTemplate', updateData, function (data) {
+            CommonAjax.post('/template/bills/updateBillsTemplate', updateData, function (data) {
                 controller.downMove();
                 RefreshBillsData(data);
                 controller.showTreeData();