瀏覽代碼

spreadjs多个选中删除功能

laiguoran 4 年之前
父節點
當前提交
90346f9e04
共有 1 個文件被更改,包括 39 次插入25 次删除
  1. 39 25
      app/public/js/material_exponent.js

+ 39 - 25
app/public/js/material_exponent.js

@@ -236,38 +236,53 @@ $(document).ready(() => {
             if (sheet.zh_setting && sheet.zh_data) {
                 const sel = sheet.getSelections()[0];
                 if (!sel) return;
-
-                const col = sheet.zh_setting.cols[sel.col];
-                const select = SpreadJsObj.getSelectObject(sheet);
-                const orgValue = select[col.field];
-                if (sel.colCount > 1) {
-                    toastr.warning('请勿同时删除多列数据');
-                }
-                if (orgValue === null || col.field === 'type' || col.field === 'is_summary') {
-                    return;
-                }
-                if (col.field === 'weight_num') {
-                    if(materialExponentCol.readOnly.isConstant(select)) {
-                        return;
+                const sortData = sheet.zh_data || [];
+                const data = [];
+                for (let iRow = sel.row; iRow < sel.row + sel.rowCount; iRow++) {
+                    // let bPaste = true;
+                    const exData = sortData[iRow];
+                    const materialExData = { id: sortData[iRow].id };
+                    for (let iCol = 0; iCol < sel.colCount; iCol++) {
+                        const curCol = sel.col + iCol;
+                        const colSetting = sheet.zh_setting.cols[curCol];
+                        if (!colSetting) continue;
+                        const orgValue = sortData[iRow][colSetting.field];
+                        if(orgValue === null) {
+                            // bPaste = false;
+                            continue;
+                        }
+                        if (exData.type === materialType.ex_type[0].value && colSetting.field !== 'weight_num') {
+                            // bPaste = false;
+                            continue;
+                        }
+                        if (colSetting.field === 'type' || colSetting.field === 'calc_num' || colSetting.field === 'is_summary'){
+                            // bPaste = false;
+                            continue;
+                        }
+                        materialExData[colSetting.field] = null;
+                        sortData[iRow][colSetting.field] = null;
                     }
-                } else {
-                    if(materialExponentCol.readOnly.isEdit(select)) {
-                        return
+                    if (exData.type !== materialType.ex_type[0].value) materialExData.calc_num = materialExponentCol.getValue.calc_num(sortData[iRow]);
+                    const arr = Object.keys(materialExData);
+                    if (arr.length !== 1) {
+                        data.push(materialExData);
                     }
                 }
-                select[col.field] = null;
-                select.calc_num = materialExponentCol.getValue.calc_num(select);
-                // console.log(select);
+                if (data.length === 0) {
+                    SpreadJsObj.reLoadSheetData(sheet);
+                    return;
+                }
+                // console.log(data);
                 // 更新至服务器
-                postData(window.location.pathname + '/save', { type:'update', updateData: select }, function (result) {
+                postData(window.location.pathname + '/save', { type:'paste', updateData: data }, function (result) {
+                    materialExponentData = result.info;
+                    SpreadJsObj.loadSheetData(materialExponentSpread.getActiveSheet(), SpreadJsObj.DataType.Data, materialExponentData);
                     ex_tp = result.ex_tp;
                     ex_expr = result.ex_expr;
                     resetExTpTable();
-                    SpreadJsObj.reLoadRowData(sheet, sel.row);
-                    materialExponentData.splice(sel.row, 1, select);
                 }, function () {
-                    select[col.field] = orgValue;
-                    SpreadJsObj.reLoadRowData(sheet, sel.row);
+                    SpreadJsObj.reLoadSheetData(sheet);
+                    return;
                 });
             }
         },
@@ -344,7 +359,6 @@ $(document).ready(() => {
                             continue;
                         }
                         const total_weight = ZhCalc.add(ZhCalc.sub(_.sumBy(materialExponentData, 'weight_num'), parseFloat(orgValue)), num);
-                        console.log(total_weight, _.sumBy(materialExponentData, 'weight_num'), orgValue, num);
                         if (total_weight > 1) {
                             toastMessageUniq(getPasteHint(hint.weightNumberCan, hintRow));
                             bPaste = false;