Browse Source

Merge branch 'master' of http://192.168.1.41:3000/SmartCost/ConstructionOperation

Conflicts:
	config/config.js
zhangweicheng 5 years ago
parent
commit
c94426a2af

+ 18 - 0
config/config.js

@@ -15,7 +15,25 @@ module.exports = {
             useMongoClient: true
         }
     },
+<<<<<<< HEAD
     pp:{  server: "172.18.111.231",
+=======
+    qa_outer: {
+        server: "smartcost.in.8866.org",
+        port: "26904",
+        options:{
+            user:'smartcost',
+            pass:'smartcost3850888',
+            auth: {
+                "authdb": "admin"
+            },
+            connectTimeoutMS: 100000,
+            useMongoClient: true
+        },
+        importURL:"192.168.1.184:6050"
+    },
+    pp:{  server: "112.74.42.187",
+>>>>>>> f60eae7d43d9b60ca03ff1f2d956e0d7fe79ac6a
         port: "27017",
         options:{
             user:'smartcost',

+ 1 - 0
modules/all_models/stdGlj_glj.js

@@ -34,6 +34,7 @@ const std_glj = new Schema({
     gljType: Number,
     shortName: String,
     unit: String,
+    taxRate: Number, // 税率
     adjCoe: Number,
     component: [std_gljComponent],
     materialType: Number, //三材类型:钢材1、钢筋2、木材3、水泥4、标准砖5

+ 36 - 12
web/maintain/std_glj_lib/js/glj.js

@@ -95,21 +95,18 @@ let repositoryGljObj = {
     materialTypeIdx: {'1': '钢材', '2': '钢筋', '3': '木材', '4': '水泥', '5': '商品砼', '6': '商品砂浆'},
     machineModel: {textArr: ['特', '大', '中', '小'], comboItems: [{text: '特', value: 1}, {text: '大', value: 2},{text: '中', value: 3}, {text: '小', value: 4}]},
     machineModelIdx: {'1': '特', '2': '大', '3': '中', '4': '小'},
+    taxRateTypes: [201, 205, 206, 302, 4, 5],
     distTypeTree: null,//add
     setting: {
         owner: "glj",
-        header:[//这个header会被覆盖的,不靠谱
-            {headerName:"编码",headerWidth:80,dataCode:"code", dataType: "String", formatter: "@", hAlign: "left", vAlign: "center"},
-            {headerName:"名称",headerWidth:160,dataCode:"name", dataType: "String", formatter: "@", hAlign: "left", vAlign: "center"},
-            {headerName:"规格型号",headerWidth:120,dataCode:"specs", dataType: "String", formatter: "@", hAlign: "left", vAlign: "center"},
-            {headerName:"单位",headerWidth:60,dataCode:"unit", dataType: "String", hAlign: "center", vAlign: "center"},
-            {headerName:"定额价",headerWidth:80,dataCode:"basePrice", dataType: "Number", formatter: "0.00", hAlign: "right", vAlign: "center"},
-            {headerName:"类型",headerWidth:90,dataCode:"gljType", dataType: "String", hAlign: "center", vAlign: "center"},
+        header:[ // 默认情况下这个header会在initHeaders方法中被追加到全的头部中,可能也会被一些费用定额覆盖
             {headerName:"调整系数",headerWidth:60,dataCode:"adjCoe", dataType: "Number", hAlign: "center", vAlign: "center"},
             {headerName:"三材类别",headerWidth:90,dataCode:"materialType", dataType: "String", hAlign: "center", vAlign: "center"},
             {headerName:"三材系数",headerWidth:60,dataCode:"materialCoe", dataType: "Number", hAlign: "center", vAlign: "center"},
-            {headerName:"机型",headerWidth:60,dataCode:"model", dataType: "Number", hAlign: "center", vAlign: "center"}
-
+            {headerName:"机型",headerWidth:60,dataCode:"model", dataType: "Number", hAlign: "center", vAlign: "center"},
+            {headerName:"工料指标类别",headerWidth:90,dataCode:"materialIndexType", dataType: "String", hAlign: "center", vAlign: "center"},
+            {headerName:"工料指标单位",headerWidth:90,dataCode:"materialIndexUnit", dataType: "String", hAlign: "center", vAlign: "center"},
+            {headerName:"单位转换系数",headerWidth:90,dataCode:"materialIndexCoe", dataType: "Number", hAlign: "center", vAlign: "center"}
         ],
         view:{
             comboBox:[
@@ -197,7 +194,7 @@ let repositoryGljObj = {
                 headers.push(colData);
             }
         }
-        let tailHeaders = [
+        /* let tailHeaders = [
             {headerName:"调整系数",headerWidth:60,dataCode:"adjCoe", dataType: "Number", hAlign: "center", vAlign: "center"},
             {headerName:"三材类别",headerWidth:90,dataCode:"materialType", dataType: "String", hAlign: "center", vAlign: "center"},
             {headerName:"三材系数",headerWidth:60,dataCode:"materialCoe", dataType: "Number", hAlign: "center", vAlign: "center"},
@@ -205,8 +202,8 @@ let repositoryGljObj = {
             {headerName:"工料指标类别",headerWidth:90,dataCode:"materialIndexType", dataType: "String", hAlign: "center", vAlign: "center"},
             {headerName:"工料指标单位",headerWidth:90,dataCode:"materialIndexUnit", dataType: "String", hAlign: "center", vAlign: "center"},
             {headerName:"单位转换系数",headerWidth:90,dataCode:"materialIndexCoe", dataType: "Number", hAlign: "center", vAlign: "center"}
-        ];
-        headers = headers.concat(tailHeaders);
+        ]; */
+        headers = headers.concat(this.setting.header);
         return headers;
     },
     //工料机单价赋初始值(没有单价属性,则单价字段为basePrice,否则单价字段为单价属性对象中的属性)
@@ -739,6 +736,7 @@ let repositoryGljObj = {
             let dataCode = me.setting.header[args.col].dataCode;
             me.currentGlj = me.currentCache[args.row];
             if(dataCode === 'code'
+                || (dataCode === 'taxRate' && !me.taxRateTypes.includes(me.currentGlj.gljType))
                 || (dataCode === 'adjCoe' && me.currentGlj.gljType !== 1 && me.currentGlj.gljType !== 303)
                 || (dataCode === 'materialCoe' && !me.currentGlj.materialType)
                 || (dataCode === 'model' && me.currentGlj.gljType !== 301)){
@@ -801,6 +799,10 @@ let repositoryGljObj = {
                             /*if(me.allowComponent.indexOf(rObj.gljType) !== -1){//更改成可添加组成物的类型,则将定额价设成零
                              rObj.basePrice = 0;
                              }*/
+                            // 工料机类型不为普通材料、商品混凝土、商品砂浆、机械组成物、主材、设备时,清空税率
+                            if (!me.taxRateTypes.includes(rObj.gljType)) {
+                                rObj.taxRate = null;
+                            }
                             //调整系数,工料机类型为人工和机上人工时,可输入整数
                             if((me.currentEditingGlj.gljType === 1 || me.currentEditingGlj.gljType === 303) && !(rObj.gljType === 1 || rObj.gljType === 303)){
                                 rObj.adjCoe = null;
@@ -834,6 +836,14 @@ let repositoryGljObj = {
                         });
                         return;
                     }
+                    else if (rObj.taxRate !== me.currentEditingGlj.taxRate) {
+                        if (isNaN(rObj.taxRate)) {
+                            args.sheet.setValue(args.row, args.col, me.currentEditingGlj.taxRate || '');
+                            alert('税率只能输入数值!');
+                            return;
+                        }
+                        rObj.taxRate = scMathUtil.roundTo(parseFloat(rObj.taxRate), -2);
+                    }
                     else if(rObj.adjCoe !== me.currentEditingGlj.adjCoe){//修改调整系数,整数控制
                         if(isNaN(rObj.adjCoe) || rObj.adjCoe % 1 !== 0){
                             args.sheet.setValue(args.row, args.col, me.currentEditingGlj.adjCoe ? me.currentEditingGlj.adjCoe : '');
@@ -1210,6 +1220,9 @@ let repositoryGljObj = {
                 if(pasteObj.gljType === me.distTypeTree.comboDatas[i].text){
                     pasteObj.gljType = me.distTypeTree.comboDatas[i].value;
                     isExsit = true;
+                    if (!me.taxRateTypes.includes(pasteObj.taxRate) && me.taxRateTypes.includes(tempObj.taxRate)) {
+                        tempObj.taxRate = null;
+                    }
                     //调整系数
                     if(pasteObj.gljType !== 1 && pasteObj.gljType !== 303){
                         tempObj.adjCoe = null;
@@ -1248,6 +1261,14 @@ let repositoryGljObj = {
                 isValid = false;
             }
         }
+        if (typeof pasteObj.taxRate !== 'undefined' 
+            && typeof pasteObj.gljType === 'undefined') {
+            if (me.taxRateTypes.includes(tempObj.gljType)) {
+                tempObj.taxRate = pasteObj.taxRate && !isNaN(pasteObj.taxRate) ? scMathUtil.roundTo(parseFloat(pasteObj.taxRate), -2) : null;
+            } else {
+                isValid = false;
+            }
+        }
         if(typeof pasteObj.adjCoe !== 'undefined' && typeof pasteObj.gljType === 'undefined'){
             if(tempObj.gljType && (tempObj.gljType === 1 || tempObj.gljType === 303) && typeof pasteObj.adjCoe !== 'undefined' && !isNaN(pasteObj.adjCoe) && pasteObj.adjCoe % 1 === 0) {
                 tempObj.adjCoe = pasteObj.adjCoe;
@@ -1391,6 +1412,9 @@ let repositoryGljObj = {
                 }
             }
         }
+        if (pasteObj.taxRate && (isNaN(pasteObj.taxRate) || !me.taxRateTypes.includes(pasteObj.gljType))) {
+            return false;
+        }
         if(pasteObj.adjCoe && typeof pasteObj.adjCoe !== 'undefined'){
             if(isNaN(pasteObj.adjCoe) || pasteObj.adjCoe % 1 !== 0){
                 return false;

+ 65 - 0
web/over_write/js/guangdong_2018.js

@@ -28,3 +28,68 @@ if(typeof materialComponent !== 'undefined'){
     //可以作为材料工料机组成物的工料机类型:普通材料
     materialComponent = [201];
 }
+
+// 人材机库追加的列头
+if (typeof repositoryGljObj !== 'undefined') {
+    repositoryGljObj.setting.header = [
+        {headerName:"税率",headerWidth:60,dataCode:"taxRate", dataType: "Number", hAlign: "center", vAlign: "center"},
+        {headerName:"调整系数",headerWidth:60,dataCode:"adjCoe", dataType: "Number", hAlign: "center", vAlign: "center"},
+        {headerName:"三材类别",headerWidth:90,dataCode:"materialType", dataType: "String", hAlign: "center", vAlign: "center"},
+        {headerName:"三材系数",headerWidth:60,dataCode:"materialCoe", dataType: "Number", hAlign: "center", vAlign: "center"},
+        {headerName:"机型",headerWidth:60,dataCode:"model", dataType: "Number", hAlign: "center", vAlign: "center"},
+        {headerName:"工料指标类别",headerWidth:90,dataCode:"materialIndexType", dataType: "String", hAlign: "center", vAlign: "center"},
+        {headerName:"工料指标单位",headerWidth:90,dataCode:"materialIndexUnit", dataType: "String", hAlign: "center", vAlign: "center"},
+        {headerName:"单位转换系数",headerWidth:90,dataCode:"materialIndexCoe", dataType: "Number", hAlign: "center", vAlign: "center"}
+    ]
+}
+
+//计税方式
+const taxModel = {'common': 1, 'simple': 2};
+//价格属性:计税方式
+const pricePropertiesTemplate = [
+    {
+        region: '全省',
+        taxModel: taxModel.common,
+        price: {
+            dataCode: 'price1',
+            dataName: '单价-一般'
+        }
+    },
+    {
+        region: '全省',
+        taxModel: taxModel.simple,
+        price: {
+            dataCode: 'price2',
+            dataName: '单价-简易'
+        }
+    }
+];
+
+//消耗量属性:计税方式
+const consumeAmtPropertiesTemplate = [
+    {
+        region: '全省',
+        taxModel: taxModel.common,
+        consumeAmt: {
+            dataCode: 'consumeAmt1',
+            dataName: '消耗-一般',
+            refPrice: 'price1' //关联的单价字段
+        }
+    },
+    {
+        region: '全省',
+        taxModel: taxModel.simple,
+        consumeAmt: {
+            dataCode: 'consumeAmt2',
+            dataName: '消耗-简易',
+            refPrice: 'price2' //关联的单价字段
+        }
+    }
+];
+
+if(typeof module !== 'undefined'){
+    module.exports = {
+        pricePropertiesTemplate: pricePropertiesTemplate,
+        consumeAmtPropertiesTemplate: consumeAmtPropertiesTemplate
+    };
+}