Browse Source

feat: 定额库编辑器,子目换算固化材料相关

vian 5 months atrás
parent
commit
9fcf9479ca

+ 1 - 1
config/config.js

@@ -127,7 +127,7 @@ module.exports = {
     uat_hw: {
         title: "公路2.0",
         startPort: 4080,
-        server: "172.18.111.231",
+        server: "112.74.42.187",
         port: "27017",
         dbname: 'stdHighway',
         options: {

+ 10 - 7
modules/all_models/ration_coe.js

@@ -17,12 +17,15 @@ var coeListSchema = mongoose.Schema({
     ID: String,                         // 系数ID(流水号ID)
     name: String,                       // 名称
     content: String,                    // 说明
-    rationID:String,
-    projectID:Number,
-    coeID:Number,
-    isAdjust:Number, //0不调整,1调整
-    seq:Number,//序数,排序用
-    coes: [coeSchema]
-}, {versionKey: false});
+    rationID: String,
+    projectID: Number,
+    coeID: Number,
+    isAdjust: Number, //0不调整,1调整
+    seq: Number,//序数,排序用
+    coes: [coeSchema],
+    actualVal: Number, // 实际值
+    maxVal: Number, // 最大值
+    minVal: Number, // 最小值
+}, { versionKey: false });
 
 mongoose.model('ration_coe', coeListSchema);

+ 3 - 0
modules/all_models/stdRation_coe.js

@@ -21,6 +21,9 @@ const coeListSchema = new Schema({
     libID: Number,                      // 所属定额定ID
     ID: Number,                         // 系数ID(流水号ID)
     serialNo: Number,                  //编号
+    actualVal: Number, // 实际值
+    maxVal: Number, // 最大值
+    minVal: Number, // 最小值
     name: String,                       // 名称
     content: String,                    // 说明
     original_code: String,               //原人材机编码

+ 1 - 0
web/maintain/ration_repository/dinge.html

@@ -206,6 +206,7 @@
                             </div>
                         </div>
                     </div>
+                    <!-- 子目换算 -->
                     <div class="main-side p-0 main-side-right" id="rightContent" style="width: 25%; display: none">
                         <div class="resize-x" id="slideResizeRight"></div>
                         <div style="width: 99%; float: left" id="zmhsWrap">

+ 32 - 6
web/maintain/ration_repository/js/coe.js

@@ -231,7 +231,10 @@ let coeOprObj = {
             { headerName: "名称", headerWidth: 200, dataCode: "name", dataType: "String", hAlign: "left", vAlign: "center", readOnly: false },
             { headerName: "内容", headerWidth: 150, dataCode: "content", dataType: "String", hAlign: "left", vAlign: "center", readOnly: false },
             { headerName: "原人材机编码", headerWidth: 90, dataCode: "original_code", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false },
-            { headerName: "可选人材机编码", headerWidth: 150, dataCode: "option_codes", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false }
+            { headerName: "可选人材机编码", headerWidth: 150, dataCode: "option_codes", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false },
+            { headerName: "实际值", headerWidth: 60, dataCode: "actualVal", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false },
+            { headerName: "最大值", headerWidth: 60, dataCode: "maxVal", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false },
+            { headerName: "最小值", headerWidth: 60, dataCode: "minVal", dataType: "String", hAlign: "center", vAlign: "center", readOnly: false },
         ]
     },
     buildSheet: function (container) {
@@ -293,8 +296,10 @@ let coeOprObj = {
                             alert('该编号已存在!');
                             args.sheet.setValue(args.row, args.col, updateObj[dataCode] + '');
                         }
-                    }
-                    else {
+                    } else if (['actualVal', 'maxVal', 'minVal'].includes(dataCode) && isNaN(inputT)) {
+                        alert('只能输入数值!');
+                        args.sheet.setValue(args.row, args.col, updateObj[dataCode] || '');
+                    } else {
                         updateObj[dataCode] = inputT;
                         me.setOptionList(dataCode, inputT, updateObj);
                         updateArr.push(updateObj);
@@ -323,6 +328,9 @@ let coeOprObj = {
                         args.sheet.setValue(args.row, args.col, '');
                         alert('该编号已存在!');
                     }
+                } else if (['actualVal', 'maxVal', 'minVal'].includes(dataCode) && isNaN(inputT)) {
+                    alert('只能输入数值!');
+                    args.sheet.setValue(args.row, args.col, updateObj[dataCode] + '');
                 }
                 else {
                     newCoe.serialNo = ++me.currentMaxNo;
@@ -359,6 +367,12 @@ let coeOprObj = {
         let items = sheetCommonObj.analyzePasteData(me.setting, info);
         let uniqItems = me.makeUniqItems(items);
         for (let i = 0, len = uniqItems.length; i < len; i++) {
+            for (let attr in uniqItems[i]) {
+                if (['actualVal', 'maxVal', 'minVal'].includes(attr) && isNaN(uniqItems[i][attr])) {
+                    uniqItems[i][attr] = undefined;
+                }
+            }
+
             let row = i + info.cellRange.row;
             //update
             if (row < me.currentCoeList.length) {
@@ -562,8 +576,18 @@ let coeOprObj = {
             }
         });
     },
+    keepNumber: function (arr) {
+        arr.forEach(item => {
+            Object.keys(item).forEach(key => {
+                if (['actualVal', 'maxVal', 'minVal'].includes(key)) {
+                    item[key] = +item[key];
+                }
+            })
+        })
+    },
     save: function (addArr, updateArr, deleteArr, refresh, callback) {
         let me = coeOprObj;
+        // me.keepNumber(updateArr);
         $.ajax({
             type: "POST",
             url: "api/saveCoeList",
@@ -599,7 +623,7 @@ let coeOprObj = {
     }
 };
 
-// 验证数量的有效性:可以输入数值,也可以输入表达式,eg: [人材机编码]*1.5+1
+// 验证数量的有效性:可以输入数值,也可以输入表达式,eg: [人材机编码]*1.5+1,1+([v]-50)/100。 [v]代表前台调用时,子目换算实际值
 const validateAmount = (amountStr) => {
     if (!amountStr) {
         return true;
@@ -609,7 +633,8 @@ const validateAmount = (amountStr) => {
         return true;
     }
     try {
-        str = amountStr.replace(/\s/g, '').replace(/\[\d+\]/g, '0');
+        debugger;
+        str = amountStr.replace(/\s/g, '').replace(/\[v\]/g, '0').replace(/\[\d+\]/g, '0');
         eval(str);
 
     } catch (error) {
@@ -723,7 +748,7 @@ let gljAdjOprObj = {
             dataCode = me.setting.header[args.col].dataCode;
         if (args.editingText && args.editingText.toString().trim().length > 0) {
             if (dataCode === 'amount' && !validateAmount(args.editingText)) {
-                alert("请输入数值或者表达式,如:[人材机编码]*0.3+1");
+                alert("请输入数值或者表达式,如:[人材机编码]*0.3+1、1+([v]-50)/100");
                 args.sheet.setValue(args.row, args.col, typeof me.currentGljAdjList[args.row] !== 'undefined' && typeof me.currentGljAdjList[args.row][dataCode] !== 'undefined'
                     ? me.currentGljAdjList[args.row][dataCode] + '' : '');
             }
@@ -891,6 +916,7 @@ let gljAdjOprObj = {
     onDelOpr: function (workBook, setting) {
         let me = gljAdjOprObj;
         workBook.commandManager().register('gljAdjDel', function () {
+            debugger;
             let sheet = workBook.getSheet(0);
             let sels = sheet.getSelections();
             let isUpdate = false;