瀏覽代碼

修改工料机添加逻辑,修改字段gljDistType to gljType gljType to gljClass

zhongzewei 8 年之前
父節點
當前提交
bf03089f50

+ 4 - 4
modules/ration_repository/models/glj_repository.js

@@ -9,7 +9,7 @@ var db = dbm.getCfgConnection("scConstruct");
 var async = require("async");
 var Schema = mongoose.Schema;
 
-var gljTypeSchema = mongoose.Schema({
+var gljClassSchema = mongoose.Schema({
     repositoryId: Number,
     ID: Number,
     ParentID: Number,
@@ -27,10 +27,10 @@ var gljSchema = mongoose.Schema({
     specs: String,
     unit: String,
     basePrice: Number,
-    gljType: Number, //这个是UI显示上的详细分类,对应gljTypeSchema
-    gljDistType: Number  //人工,材料,机械
+    gljClass: Number, //这个是UI显示上的详细分类,对应gljTypeSchema
+    gljType: Number  //人工,材料,机械
 });
-var gljTypeModel = db.model("std_ration_lib_glj_type",gljTypeSchema, "std_ration_lib_glj_type");
+var gljTypeModel = db.model("std_ration_lib_glj_type",gljClassSchema, "std_ration_lib_glj_type");
 var gljItemModel = db.model("std_ration_lib_glj_list",gljSchema, "std_ration_lib_glj_list");
 var repositoryMap = require('./repository_map');
 var counter = require('../../../public/counter/counter');

+ 43 - 4
public/web/sheet/sheet_common.js

@@ -109,8 +109,8 @@ var sheetCommonObj = {
             }
             for (var row = 0; row < data.length; row++) {
                 //var cell = sheet.getCell(row, col, GC.Spread.Sheets.SheetArea.viewport);
-                if(setting.header[col].dataCode === 'gljDistType' && data[row].gljDistType){
-                    let distTypeVal =  distTypeTree.distTypes[distTypeTree.prefix + data[row].gljDistType].data.fullName;
+                if(setting.header[col].dataCode === 'gljType' && data[row].gljType){
+                    let distTypeVal =  distTypeTree.distTypes[distTypeTree.prefix + data[row].gljType].data.fullName;
                     sheet.setValue(row, col, distTypeVal, ch);
                 }
                 else {
@@ -148,24 +148,63 @@ var sheetCommonObj = {
         }
         return rst;
     },
-    combineRowData: function(sheet, setting, row, distTypeTree) {
+    combineRowData: function(sheet, setting, row, repositoryGljObj) {
         var rst = {};
         let comboBoxCellType = sheet.getCellType(row, 5);
         let items = comboBoxCellType.items();
         for (var col = 0; col < setting.header.length; col++) {
-            if(setting.header[col].dataCode === 'gljDistType'){
+            if(setting.header[col].dataCode === 'gljType'){
                 items.forEach(function(item){
                     if(sheet.getValue(row, col) === item.text){
                         rst[setting.header[col].dataCode] = item.value;
                     }
                 });
             }
+           else if (setting.header[col].dataCode === 'code'){
+                if(repositoryGljObj){
+                    let gljList = repositoryGljObj.gljList,
+                        orgCode = repositoryGljObj.orgCode,
+                        isExist = false;
+                    for(let i=0; i< gljList.length; i++){
+                        if(gljList[i].code === sheet.getValue(row, col) && sheet.getValue(row, col)!== orgCode){
+                            $('#codeAlertBtn').click();
+                            sheet.getSheet(0).options.isProtected = true;
+                            $('#codAleConfBtn').click(function () {
+                                sheet.options.isProtected = false;
+                                sheet.setValue(row, 0, orgCode);
+                                sheet.setActiveCell(row, 0);
+                            });
+                            $('#codAleClose').click(function () {
+                                sheet.options.isProtected = false;
+                                sheet.setValue(row, 0, orgCode);
+                                sheet.setActiveCell(row, 0);
+                            });
+                            // sheet.setValue(row, col, orgCode);
+                            isExist = true
+                        }
+
+                    }
+                    if(!isExist){
+                        rst[setting.header[col].dataCode] = sheet.getValue(row, col);
+                    }
+                }
+                else{
+                    rst[setting.header[col].dataCode] = sheet.getValue(row, col);
+                }
+            }
             else{
                 rst[setting.header[col].dataCode] = sheet.getValue(row, col);
             }
         }
         return rst;
     },
+    combineRationRowData: function(sheet, setting, row) {
+        var rst = {};
+        for (var col = 0; col < setting.header.length; col++) {
+            rst[setting.header[col].dataCode] = sheet.getValue(row, col);
+        }
+        return rst;
+    },
     shieldAllCells: function(sheet) {
         sheet.options.isProtected = true;
     },

+ 41 - 0
web/maintain/ration_repository/gongliao.html

@@ -167,6 +167,47 @@
             </div>
         </div>
     </div>
+    <button id="gljAlertBtn" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#gljAlert" style="display: none"></button>
+    <button id="codeAlertBtn" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#codeAlert" style="display: none"></button>
+    <div class="modal fade" id="gljAlert" data-backdrop="static" style="display: none;" aria-hidden="true">
+        <input type="hidden" id="gdid" value="123">
+        <div class="modal-dialog" role="document">
+            <div class="modal-content">
+                <div class="modal-header">
+                    <h5 class="modal-title">取消确认</h5>
+                    <button type="button" id="gljAleClose" class="close" data-dismiss="modal" aria-label="Close">
+                        <span aria-hidden="true">×</span>
+                    </button>
+                </div>
+                <div class="modal-body">
+                    <h5 class="text-danger">还有值未输入,确认是否取消新增工料机?</h5>
+                </div>
+                <div class="modal-footer">
+                    <button type="button" class="btn btn-secondary" id="aleCanceBtn" data-dismiss="modal">取消</button>
+                    <a href="javascript: void(0);" id="aleConfBtn" class="btn btn-danger" data-dismiss="modal">确认</a>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="modal fade" id="codeAlert" data-backdrop="static" style="display: none;" aria-hidden="true">
+        <input type="hidden" id="codedid" value="123">
+        <div class="modal-dialog" role="document">
+            <div class="modal-content">
+                <div class="modal-header">
+                    <h5 class="modal-title">警告</h5>
+                    <button type="button" id="codAleClose" class="close" data-dismiss="modal" aria-label="Close">
+                        <span aria-hidden="true">×</span>
+                    </button>
+                </div>
+                <div class="modal-body">
+                    <h5 class="text-danger">输入的编号已存在,请重新输入!</h5>
+                </div>
+                <div class="modal-footer">
+                    <button type="button" class="btn btn-danger" id="codAleConfBtn" data-dismiss="modal">确认</button>
+                </div>
+            </div>
+        </div>
+    </div>
     <!-- JS. -->
     <script src="/lib/jquery/jquery.min.js"></script>
     <script src="/lib/tether/tether.min.js"></script>

+ 6 - 3
web/maintain/ration_repository/js/ration.js

@@ -119,7 +119,8 @@ var rationOprObj = {
             var cacheSection = me.getCache();
             if (cacheSection) {
                 for (var i = 0; i < args.rowCount; i++) {
-                    var hasUpdate = false, rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row + i),
+                    //var hasUpdate = false, rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row + i),
+                    var hasUpdate = false, rObj = sheetCommonObj.combineRationRowData(me.workBook.getSheet(0), me.setting, args.row + i),
                         isEmpty = sheetCommonObj.chkIfEmpty(rObj, me.setting);
                     for (var j = 0; j < cacheSection.length; j++) {
                         if (cacheSection[j][me.setting.header[0].dataCode] == rObj[me.setting.header[0].dataCode]) {
@@ -146,7 +147,8 @@ var rationOprObj = {
     },
     onCellEditStart: function(sender, args) {
         var me = rationOprObj;
-        var rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row);
+        //var rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row);
+        var rObj = sheetCommonObj.combineRationRowData(me.workBook.getSheet(0), me.setting, args.row);
         me.currentEditingRation = rObj;
         var cacheSection = me.getCache();
         if (cacheSection) {
@@ -159,7 +161,8 @@ var rationOprObj = {
         }
     },
     onCellEditEnd: function(sender, args) {
-        var me = rationOprObj, rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row),
+        //var me = rationOprObj, rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row),
+        var me = rationOprObj, rObj = sheetCommonObj.combineRationRowData(me.workBook.getSheet(0), me.setting, args.row),
             updateArr = [], addArr = [];
         if (me.currentEditingRation["ID"]) {
             rObj["ID"] = me.currentEditingRation["ID"];

+ 2 - 1
web/maintain/ration_repository/js/ration_assist.js

@@ -65,7 +65,8 @@ var rationAssistOprObj = {
         var me = rationAssistOprObj;
         if (!me.ration) {return;};
         var assList = me.ration.rationAssList;
-        var assObj = sheetCommonObj.combineRowData(me.sheet, me.setting, args.row);
+        //var assObj = sheetCommonObj.combineRowData(me.sheet, me.setting, args.row);
+        var assObj = sheetCommonObj.combineRationRowData(me.sheet, me.setting, args.row);
         // 新增
         if ((assList == undefined) || (assList && args.row >= assList.length)) {
             if (assObj.decimal == undefined || assObj.decimal == null){assObj.decimal = '0';};

+ 2 - 6
web/maintain/ration_repository/js/ration_glj.js

@@ -13,7 +13,7 @@ var rationGLJOprObj = {
             {headerName:"单位",headerWidth:160,dataCode:"unit", dataType: "String"},
             {headerName:"基价单位",headerWidth:160, dataCode:"basePrice", dataType: "Number", formatter:"0.00",  precision: 2},
             {headerName:"定额消耗",headerWidth:160, dataCode:"consumeAmt", dataType: "Number", precision: 3},
-            {headerName:"类型",headerWidth:160,dataCode:"gljDistType", dataType: "String"}
+            {headerName:"类型",headerWidth:160,dataCode:"gljType", dataType: "String"}
         ],
         view:{
             comboBox:[],
@@ -77,8 +77,6 @@ var rationGLJOprObj = {
         var me = this;
         me.sheet = sheet;
         me.getGljDistType(function () {
-            console.log(`distTypeTree`);
-            console.log(me.distTypeTree);
             sheetCommonObj.initSheet(me.sheet, me.setting, 30);
             me.sheet.bind(GC.Spread.Sheets.Events.ClipboardPasting, me.onClipboardPasting);
             me.sheet.bind(GC.Spread.Sheets.Events.ClipboardPasted, me.onClipboardPasted);
@@ -242,7 +240,7 @@ var rationGLJOprObj = {
         rst.specs = repGlj.specs;
         rst.unit = repGlj.unit;
         rst.basePrice = repGlj.basePrice;
-        rst.gljDistType = repGlj.gljDistType;
+        rst.gljType = repGlj.gljType;
         return rst;
     },
     getGljItems: function(rationItem) {
@@ -276,8 +274,6 @@ var rationGLJOprObj = {
                             }
                         }
                         me.cache["_GLJ_" + rationID] = cacheArr;
-                        console.log(`cache`);
-                        console.log(me.cache["_GLJ_" + rationID] );
                         me.showGljItems(rationID);
                     }
                     sheetCommonObj.lockCells(me.sheet, me.setting);

+ 93 - 12
web/maintain/ration_repository/js/repository_glj.js

@@ -46,7 +46,7 @@ var pageOprObj = {
             {headerName:"规格",headerWidth:260,dataCode:"specs", dataType: "String", hAlign: "left", vAlign: "center"},
             {headerName:"单位",headerWidth:120,dataCode:"unit", dataType: "String", hAlign: "center", vAlign: "center"},
             {headerName:"基价单价",headerWidth:120,dataCode:"basePrice", dataType: "Number", formatter: "0.00", hAlign: "right", vAlign: "center"},
-            {headerName:"类型",headerWidth:120,dataCode:"gljDistType", dataType: "String", hAlign: "center", vAlign: "center"}
+            {headerName:"类型",headerWidth:120,dataCode:"gljType", dataType: "String", hAlign: "center", vAlign: "center"}
         ],
         view:{
             comboBox:[
@@ -60,7 +60,7 @@ var pageOprObj = {
         let me = this;
         let distType;
         let distTypeTree = {
-            prefix : 'gljDistType',
+            prefix : 'gljType',
             distTypes: {},
             comboDatas: [],
             distTypesArr: []
@@ -164,9 +164,9 @@ var pageOprObj = {
             var cacheSection = [];
             var pArr = me.parentNodeIds["_pNodeId_" + type];
             for (var i = 0; i < data.length; i++) {
-                if (pArr && pArr.indexOf(data[i].gljType) >= 0) {
+                if (pArr && pArr.indexOf(data[i].gljClass) >= 0) {
                     cacheSection.push(data[i]);
-                } else if (type == data[i].gljType) {
+                } else if (type == data[i].gljClass) {
                     //data[i].gljDistType = me.distTypeTree.distTypes[me.distTypeTree.prefix + data[i].gljDistType].data.fullName;
                     cacheSection.push(data[i]);
                 }
@@ -184,18 +184,76 @@ var pageOprObj = {
         me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EditStarting, me.onCellEditStart);
         me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EditEnded, me.onCellEditEnd);
         me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.RangeChanged, me.onRangeChanged);
+        me.workBook.getSheet(0).bind(GC.Spread.Sheets.Events.EnterCell, me.onEnterCell);
     },
+     onEnterCell: function (sender, args) {
+         let me = repositoryGljObj;
+         me.cellRowIdx = args.row;
+         let isHasData = false;
+         if(me.addGljObj){
+             for(let i=0; i<me.setting.header.length; i++){
+                 if(me.addGljObj[me.setting.header[i].dataCode]){
+                     isHasData = true;
+                     break;
+                 }
+             }
+         }
+         if(isHasData){
+             console.log(`enterHasData`);
+             if(me.editingRowIdx !== me.cellRowIdx) {
+                 let isComple = true;
+                 let focusToCol;
+                 function getFocusToCol (me){
+                     for(let i=0; i< me.setting.header.length; i++){
+                         if(!me.addGljObj[me.setting.header[i].dataCode]){
+                             return i;
+                         }
+                     }
+                 }
+                 focusToCol = getFocusToCol(me);
+                 console.log(`focusTocol: ${focusToCol}`);
+                 for(let i=0; i< me.setting.header.length; i++){
+                     if(!me.addGljObj[me.setting.header[i].dataCode]){
+                         isComple = false
+                     }
+                 }
+                 if(isComple){
+
+                 }
+                 else {
+                    $('#gljAlertBtn').click();
+                     me.workBook.getSheet(0).options.isProtected = true;
+                     $('#aleCanceBtn').click(function () {
+                         me.workBook.getSheet(0).options.isProtected = false;
+                         me.workBook.getSheet(0).setActiveCell(me.editingRowIdx, focusToCol);
+                     });
+                     $('#gljAleClose').click(function () {
+                         me.workBook.getSheet(0).options.isProtected = false;
+                         me.workBook.getSheet(0).setActiveCell(me.editingRowIdx, focusToCol);
+                     });
+                     $('#aleConfBtn').click(function () {
+                         me.workBook.getSheet(0).options.isProtected = false;
+                         me.addGljObj = null;
+                         for(let col=0; col<me.setting.header.length; col++){
+                             me.workBook.getSheet(0).getCell(me.editingRowIdx, col).value('');
+                         }
+                         me.workBook.getSheet(0).setActiveCell(me.editingRowIdx, 0);
+                     });
+                 }
+             }
+         }
+     },
     onCellEditStart: function(sender, args) {
         var me = repositoryGljObj;
         var rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row);
         me.currentEditingGlj = rObj;
-        console.log(me.currentEditingGlj);//add
+        console.log(`currentEditingGlj`);
+        console.log(me.currentEditingGlj);
+        me.orgCode = me.workBook.getSheet(0).getValue(args.row, 0);
         var cacheSection = me.gljList;
-        console.log(`cacheSection`);
-        console.log(cacheSection);
         if (cacheSection) {
             for (var j = 0; j < cacheSection.length; j++) {
-                if (cacheSection[j][me.setting.header[0].dataCode] == rObj[me.setting.header[0].dataCode]) {
+                if (cacheSection[j][me.setting.header[0].dataCode] && cacheSection[j][me.setting.header[0].dataCode] == rObj[me.setting.header[0].dataCode]) {
                     rObj["ID"] = cacheSection[j]["ID"];
                     break;
                 }
@@ -203,17 +261,32 @@ var pageOprObj = {
         }
     },
     onCellEditEnd: function(sender, args) {
-        var me = repositoryGljObj, rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row, me.distTypeTree),
+        var me = repositoryGljObj, rObj = sheetCommonObj.combineRowData(me.workBook.getSheet(0), me.setting, args.row, me),
             updateArr = [], addArr = [];
+        me.editingRowIdx = args.row;
         if (me.currentEditingGlj["ID"]) {
             rObj["ID"] = me.currentEditingGlj["ID"];
             updateArr.push(rObj);
         } else {
-            addArr.push(rObj);
+            //add
+            me.addGljObj = rObj;
+            let isCanSav = true;
+            for(let i=0; i<me.setting.header.length; i++){
+                if(!rObj[me.setting.header[i].dataCode]){
+                    isCanSav = false;
+                    break;
+                }
+            }
+            if(isCanSav){
+                me.addGljObj = null;
+                addArr.push(rObj);
+            }
         }
         rObj.gljType = me.gljCurTypeId;
         me.currentEditingGlj = null;
-        me.mixUpdateRequest(updateArr, addArr, []);
+        if(updateArr.length >0 || addArr.length >0){
+           me.mixUpdateRequest(updateArr, addArr, []);
+        }
     },
     onRangeChanged: function(sender, args) {
         if (args.action == GC.Spread.Sheets.RangeChangedAction.clear) {
@@ -247,6 +320,8 @@ var pageOprObj = {
     },
     onClipboardPasting: function(sender, args) {
         var me = repositoryGljObj;
+        console.log(`me.parentNodeIds`);
+        console.log(me.parentNodeIds);
         if (args.cellRange.colCount != me.setting.header.length || me.gljCurTypeId < 0 || me.parentNodeIds["_pNodeId_" + me.gljCurTypeId]) {
             args.cancel = true;
         }
@@ -293,6 +368,8 @@ var pageOprObj = {
                     me.sortGlj();
                     me.currentCache = me.getCache();
                     me.showGljItems(me.gljList, me.gljCurTypeId);
+                    console.log(`me.cC`);
+                    console.log(me.currentCache);
                 }
             },
             error:function(err){
@@ -303,7 +380,7 @@ var pageOprObj = {
     getCache: function() {
         var me = this, rst = [];
         for (var i = 0; i < me.gljList.length; i++) {
-            if (me.gljList[i].gljType == me.gljCurTypeId) {
+            if (me.gljList[i].gljClass == me.gljCurTypeId) {
                 rst.push(me.gljList[i]);
             }
         }
@@ -363,6 +440,10 @@ var gljTypeTreeOprObj = {
         me.gljCurTypeId = treeNode.ID;
         console.log(`gljcurtypeId: ${me.gljCurTypeId}`);
         me.currentCache = me.getCache();
+        console.log(`gljList`);
+        console.log(me.gljList);
+        console.log(`nowCache`);
+        console.log(me.currentCache);
         me.showGljItems(me.gljList, gljTypeId);
         if (me.parentNodeIds["_pNodeId_" + treeNode.ID]) {
             sheetCommonObj.shieldAllCells(me.workBook.getSheet(0), me.setting);