Browse Source

Merge branch '1.0.0_online' of http://smartcost.f3322.net:3000/SmartCost/ConstructionOperation into 1.0.0_online

TonyKang 6 years ago
parent
commit
b49fba378c

+ 3 - 0
modules/bills_lib/controllers/bills_permissionController.js

@@ -59,6 +59,9 @@ class billsPermContr extends baseController{
     isUsed(req, res){
         billsController.isUsed(req, res);
     }
+    uploadImg(req, res){
+
+    }
 
 }
 

+ 43 - 41
modules/bills_lib/routes/bills_lib_routes.js

@@ -17,58 +17,60 @@ let itemsContr = new ItemsPermContr();
 
 module.exports =function (app) {
     app.get("/stdBillsmain", viewsContr.auth, viewsContr.init, viewsContr.redirectStdBillsMain);
-     app.get("/stdBills", viewsContr.auth, viewsContr.init, viewsContr.redirectStdBills);
-     app.get('/stdJobs', viewsContr.auth, viewsContr.init, viewsContr.redirectStdJobs);
-     app.get('/stdItems', viewsContr.auth, viewsContr.init, viewsContr.redirectStdItems);
+    app.get("/stdBills", viewsContr.auth, viewsContr.init, viewsContr.redirectStdBills);
+    app.get('/stdJobs', viewsContr.auth, viewsContr.init, viewsContr.redirectStdJobs);
+    app.get('/stdItems', viewsContr.auth, viewsContr.init, viewsContr.redirectStdItems);
 
-     billsRouter.post('/getCompilationList', billsLibContr.auth, billsLibContr.init, billsLibContr.getCompilationList);
-     billsRouter.post('/getMaxNumber', billsLibContr.auth, billsLibContr.init, billsLibContr.getMaxNumber);
-     billsRouter.post('/getABillsLib', billsLibContr.auth, billsLibContr.init, billsLibContr.getABillsLib);
-     billsRouter.post("/getStdBillsLib", billsLibContr.auth, billsLibContr.init, billsLibContr.getStdBillsLib);
-     billsRouter.post("/createStdBillsLib", billsLibContr.auth, billsLibContr.init, billsLibContr.createStdBillsLib);
+    billsRouter.post('/getCompilationList', billsLibContr.auth, billsLibContr.init, billsLibContr.getCompilationList);
+    billsRouter.post('/getMaxNumber', billsLibContr.auth, billsLibContr.init, billsLibContr.getMaxNumber);
+    billsRouter.post('/getABillsLib', billsLibContr.auth, billsLibContr.init, billsLibContr.getABillsLib);
+    billsRouter.post("/getStdBillsLib", billsLibContr.auth, billsLibContr.init, billsLibContr.getStdBillsLib);
+    billsRouter.post("/createStdBillsLib", billsLibContr.auth, billsLibContr.init, billsLibContr.createStdBillsLib);
     billsRouter.post("/deleteStdBillsLib", billsLibContr.auth, billsLibContr.init, billsLibContr.deleteStdBillsLib);
     billsRouter.post("/renameStdBillsLib", billsLibContr.auth, billsLibContr.init, billsLibContr.renameStdBillsLib);
     billsRouter.post("/getStdBillsLibName", billsLibContr.auth, billsLibContr.init, billsLibContr.getStdBillsLibName);
+    //上传图片
+    billsRouter.post('/uploadImg', billsContr.uploadImg);
 
     billsRouter.post("/upMove", billsContr.auth, billsContr.init, billsContr.upMove);
     billsRouter.post("/downMove", billsContr.auth, billsContr.init, billsContr.downMove);
-     billsRouter.post("/getCurrentUniqId", billsContr.auth, billsContr.init, billsContr.getCurrentUniqId);
-     billsRouter.post("/getBills", billsContr.auth, billsContr.init, billsContr.getBills);
-     billsRouter.post("/createBills", billsContr.auth, billsContr.init, billsContr.createBills);
-     billsRouter.post("/updatePNId", billsContr.auth, billsContr.init, billsContr.updatePNId);
-     billsRouter.post("/upLevel", billsContr.auth, billsContr.init, billsContr.upLevel);
-     billsRouter.post("/downLevel", billsContr.auth, billsContr.init, billsContr.downLevel);
-     billsRouter.post("/updateBills", billsContr.auth, billsContr.init, billsContr.updateBills);
-     billsRouter.post("/updateSectionInfo", billsContr.auth, billsContr.init, billsContr.updateSectionInfo);
-     billsRouter.post("/updateBillsArr", billsContr.auth, billsContr.init, billsContr.updateBillsArr);
-     billsRouter.post("/removeTotal", billsContr.auth, billsContr.init, billsContr.removeTotal);
-     billsRouter.post("/updateSerialNo", billsContr.auth, billsContr.init, billsContr.updateSerialNo);
-     billsRouter.post("/pasteBills", billsContr.auth, billsContr.init, billsContr.pasteBills);
-     billsRouter.post('/updateRecharge', billsContr.auth, billsContr.init, billsContr.updateRecharge);
-     billsRouter.post('/pasteRel', billsContr.auth, billsContr.init, billsContr.pasteRel);
-     billsRouter.post("/deleteBills", billsContr.auth, billsContr.init, billsContr.deleteBills);
-     billsRouter.post("/isUsed", billsContr.auth, billsContr.init, billsContr.isUsed);
+    billsRouter.post("/getCurrentUniqId", billsContr.auth, billsContr.init, billsContr.getCurrentUniqId);
+    billsRouter.post("/getBills", billsContr.auth, billsContr.init, billsContr.getBills);
+    billsRouter.post("/createBills", billsContr.auth, billsContr.init, billsContr.createBills);
+    billsRouter.post("/updatePNId", billsContr.auth, billsContr.init, billsContr.updatePNId);
+    billsRouter.post("/upLevel", billsContr.auth, billsContr.init, billsContr.upLevel);
+    billsRouter.post("/downLevel", billsContr.auth, billsContr.init, billsContr.downLevel);
+    billsRouter.post("/updateBills", billsContr.auth, billsContr.init, billsContr.updateBills);
+    billsRouter.post("/updateSectionInfo", billsContr.auth, billsContr.init, billsContr.updateSectionInfo);
+    billsRouter.post("/updateBillsArr", billsContr.auth, billsContr.init, billsContr.updateBillsArr);
+    billsRouter.post("/removeTotal", billsContr.auth, billsContr.init, billsContr.removeTotal);
+    billsRouter.post("/updateSerialNo", billsContr.auth, billsContr.init, billsContr.updateSerialNo);
+    billsRouter.post("/pasteBills", billsContr.auth, billsContr.init, billsContr.pasteBills);
+    billsRouter.post('/updateRecharge', billsContr.auth, billsContr.init, billsContr.updateRecharge);
+    billsRouter.post('/pasteRel', billsContr.auth, billsContr.init, billsContr.pasteRel);
+    billsRouter.post("/deleteBills", billsContr.auth, billsContr.init, billsContr.deleteBills);
+    billsRouter.post("/isUsed", billsContr.auth, billsContr.init, billsContr.isUsed);
 
-     billsRouter.post("/getJobContent", jobsContr.auth, jobsContr.init, jobsContr.getJobContent);
-     billsRouter.post("/createJobContent", jobsContr.auth, jobsContr.init, jobsContr.createJobContent);
-     billsRouter.post("/updateJobContent", jobsContr.auth, jobsContr.init, jobsContr.updateJobContent);
-     billsRouter.post("/deleteJobContent", jobsContr.auth, jobsContr.init, jobsContr.deleteJobContent);
-     billsRouter.post("/pasteJobs", jobsContr.auth, jobsContr.init, jobsContr.pasteJobs);
-     billsRouter.post("/edCreateJob", jobsContr.auth, jobsContr.init, jobsContr.edCreateJob);
-     billsRouter.post("/edUpdateJob", jobsContr.auth, jobsContr.init, jobsContr.edUpdateJob);
+    billsRouter.post("/getJobContent", jobsContr.auth, jobsContr.init, jobsContr.getJobContent);
+    billsRouter.post("/createJobContent", jobsContr.auth, jobsContr.init, jobsContr.createJobContent);
+    billsRouter.post("/updateJobContent", jobsContr.auth, jobsContr.init, jobsContr.updateJobContent);
+    billsRouter.post("/deleteJobContent", jobsContr.auth, jobsContr.init, jobsContr.deleteJobContent);
+    billsRouter.post("/pasteJobs", jobsContr.auth, jobsContr.init, jobsContr.pasteJobs);
+    billsRouter.post("/edCreateJob", jobsContr.auth, jobsContr.init, jobsContr.edCreateJob);
+    billsRouter.post("/edUpdateJob", jobsContr.auth, jobsContr.init, jobsContr.edUpdateJob);
 
-     billsRouter.post("/getItemCharacter", itemsContr.auth, itemsContr.init, itemsContr.getItemCharacter);
-     billsRouter.post("/createItemCharacter", itemsContr.auth, itemsContr.init, itemsContr.createItemCharacter);
-     billsRouter.post("/updateItemCharacter", itemsContr.auth, itemsContr.init, itemsContr.updateItemCharacter);
-     billsRouter.post("/updateValue", itemsContr.auth, itemsContr.init, itemsContr.updateValue);
-     billsRouter.post("/deleteItemCharacter", itemsContr.auth, itemsContr.init, itemsContr.deleteItemCharacter);
-     billsRouter.post("/pasteItems", itemsContr.auth, itemsContr.init, itemsContr.pasteItems);
-     billsRouter.post("/pasteValues", itemsContr.auth, itemsContr.init, itemsContr.pasteValues);
-     billsRouter.post("/edCreateItem", itemsContr.auth, itemsContr.init, itemsContr.edCreateItem);
-     billsRouter.post("/edUpdateItem", itemsContr.auth, itemsContr.init, itemsContr.edUpdateItem);
+    billsRouter.post("/getItemCharacter", itemsContr.auth, itemsContr.init, itemsContr.getItemCharacter);
+    billsRouter.post("/createItemCharacter", itemsContr.auth, itemsContr.init, itemsContr.createItemCharacter);
+    billsRouter.post("/updateItemCharacter", itemsContr.auth, itemsContr.init, itemsContr.updateItemCharacter);
+    billsRouter.post("/updateValue", itemsContr.auth, itemsContr.init, itemsContr.updateValue);
+    billsRouter.post("/deleteItemCharacter", itemsContr.auth, itemsContr.init, itemsContr.deleteItemCharacter);
+    billsRouter.post("/pasteItems", itemsContr.auth, itemsContr.init, itemsContr.pasteItems);
+    billsRouter.post("/pasteValues", itemsContr.auth, itemsContr.init, itemsContr.pasteValues);
+    billsRouter.post("/edCreateItem", itemsContr.auth, itemsContr.init, itemsContr.edCreateItem);
+    billsRouter.post("/edUpdateItem", itemsContr.auth, itemsContr.init, itemsContr.edUpdateItem);
 
     app.use("/stdBillsEditor", billsRouter);
 
-}
+};
 
 

+ 17 - 2
modules/ration_repository/models/ration_item.js

@@ -28,7 +28,7 @@ rationItemDAO.prototype.getRationItemsByLib = async function (rationRepId, showH
     }
     else {
         const stdBillsLibListsModel = new STDGLJListModel();
-        const stdGLJData = await stdBillsLibListsModel.getGljItemsByRepId(rationLib.gljLib, '-_id ID code name unit');
+        const stdGLJData = await stdBillsLibListsModel.getGljItemsByRepId(rationLib.gljLib, '-_id ID code name unit gljType');
         let gljMapping = {};
         for(let glj of stdGLJData){
             gljMapping[glj.ID] = glj;
@@ -36,6 +36,21 @@ rationItemDAO.prototype.getRationItemsByLib = async function (rationRepId, showH
         //设置悬浮
         for(let ration of rations){
             let hintsArr = [];
+            //对人材机进行排序
+            ration.rationGljList.sort(function (a, b) {
+                let gljA = gljMapping[a.gljId],
+                    gljB = gljMapping[b.gljId];
+                if(gljA && gljB){
+                    let aV = gljA.gljType + gljA.code,
+                        bV = gljB.gljType + gljB.code;
+                    if(aV > bV) {
+                        return 1;
+                    } else if(aV < bV) {
+                        return -1;
+                    }
+                }
+                return 0;
+            });
             for(let rationGlj of ration.rationGljList){
                 let subGlj = gljMapping[rationGlj.gljId];
                 if(subGlj){
@@ -623,7 +638,7 @@ rationItemDAO.prototype.calcForRation = function (stdGljList, ration) {
     //根据工料机类型划分价格
     const labour = [1],
         material = [201, 202, 203, 204, 205, 206, 207],
-        machine = [301, 302, 303],
+        machine = [301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312],
         manage = [6],
         profit = [7],
         risk = [8];

+ 55 - 0
web/common/html/uploadImg.html

@@ -0,0 +1,55 @@
+<div class="modal fade" id="uploadimg" data-backdrop="static" style="display: none;" aria-hidden="true">
+    <div class="modal-dialog modal-lg" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">上传图片</h5>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">×</span>
+                </button>
+            </div>
+            <div class="modal-body">
+                <div class="card mb-3">
+                    <div class="card-block">
+                        <div class="form-group">
+                            <input type="file" id="uploadImgFile" accept="image/*">
+                        </div>
+                    </div>
+                </div>
+                <div class="row">
+                    <div class="col-4">
+                        <div class="card">
+                            <img class="card-img-top" src="" alt="Card image cap" height="180px">
+                            <div class="card-block">
+                                <p class="card-text"><input class="form-control form-control-sm" value="<img src='http://smar.com/images/22.jpg'>" readonly=""><small class="mr-2">2018-09-01 上传</small><a href="#" class="text-danger">删除</a></p>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="col-4">
+                        <div class="card">
+                            <img class="card-img-top" src="" alt="Card image cap" height="180px">
+                            <div class="card-block">
+                                <p class="card-text"><input class="form-control form-control-sm" value="<img src='http://smar.com/images/22.jpg'>" readonly=""><small class="mr-2">2018-09-01 上传</small><a href="#" class="text-danger">删除</a></p>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="col-4">
+                        <div class="card">
+                            <img class="card-img-top" src="" alt="Card image cap" height="180px">
+                            <div class="card-block">
+                                <p class="card-text"><input class="form-control form-control-sm" value="<img src='http://smar.com/images/22.jpg'>" readonly=""><small class="mr-2">2018-09-01 上传</small><a href="#" class="text-danger">删除</a></p>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="btn-group ml-3 mt-3">
+                        <button class="btn btn-sm btn-secondary" disabled="">上一页</button>
+                        <button class="btn btn-sm btn-secondary disabled">1 / 3</button>
+                        <button class="btn btn-sm btn-secondary">下一页</button>
+                    </div>
+                </div>
+            </div>
+            <div class="modal-footer">
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
+            </div>
+        </div>
+    </div>
+</div>

+ 42 - 0
web/common/js/uploadImg.js

@@ -0,0 +1,42 @@
+'use strict';
+
+/**
+ *
+ *
+ * @author Zhong
+ * @date 2018/10/17
+ * @version
+ */
+
+
+/*
+* 上传图片,清单规则、定额说明、定额工程量计算规则共用
+* 通过各自的上传图片按钮value值判定触发来源
+* 根据触发来源放置图片位置,一个来源一个文件夹,便于管理
+* */
+$('#uploadImgFile').change(function(){
+    let file = $(this)[0],
+        img = file.files[0],
+        trigger = $('#uploadImgTrigger').val();//触发源
+    if(img){
+        let formData = new FormData();
+        formData.append('img', img);
+        formData.append('trigger', trigger);
+        $.ajax({
+            url: '/stdBillsEditor/uploadImg',
+            type: 'POST',
+            data: formData,
+            cache: false,
+            contentType: false,
+            beforeSend: function() {
+                $.bootstrapLoading.start();
+            },
+            success: function(response){
+                $.bootstrapLoading.end();
+            },
+            error: function(){
+                $.bootstrapLoading.end();
+            }
+        });
+    }
+});

+ 5 - 1
web/maintain/billsGuidance_lib/js/billsGuidance.js

@@ -596,7 +596,8 @@ const billsGuidance = (function () {
                             divWidth = 590;
                             $(this._toolTipElement).width(divWidth);
                         }
-                        $(this._toolTipElement).css("top", setting.pos.y  + hitinfo.y - divHeight).css("left", setting.pos.x - divWidth);
+                        let top = setting.pos.y  + hitinfo.y - divHeight < 0 ? 0 :  setting.pos.y + hitinfo.cellRect.y - divHeight;
+                        $(this._toolTipElement).css("top", top).css("left", setting.pos.x - divWidth);
                     }
                     else{
                         $(this._toolTipElement).css("top", setting.pos.y + hitinfo.y +15).css("left", setting.pos.x + hitinfo.x + 15);
@@ -959,6 +960,9 @@ const billsGuidance = (function () {
             }
         }
         getDelDatas(selected);
+        if(selected.preSibling) {
+            updateDatas.push({updateType: updateType.update, findData: {ID: selected.preSibling.getID()}, updateData: {NextSiblingID: selected.getNextSiblingID()}});
+        }
         updateGuideItems(updateDatas, function () {
             controller.delete();
             refreshBtn(bills.tree.selected.guidance.tree.selected);

+ 3 - 0
web/maintain/bills_lib/html/qingdan.html

@@ -85,6 +85,7 @@
                   </div>-->
                   <div class="form-group">
                       <a class="pull-right" href="javacript:void(0);" data-toggle="modal" data-target="#help" >html怎么写?</a>
+                      <!--<a id="uploadImgTrigger" value="billsRecharge" class="pull-right mr-3" href="javacript:void(0);" data-toggle="modal" data-target="#uploadimg" ><i class="fa fa-image"></i>上传图片</a>-->
                       <label for="exampleTextarea">补注:</label>
                       <textarea class="form-control" id="exampleTextarea" rows="8"></textarea>
                   </div>
@@ -342,6 +343,7 @@
             </div>
         </div>
     </div>
+    <%include ../../../common/html/uploadImg.html %>
     <!-- JS. -->
     <script src = "/lib/spreadjs/sheets/gc.spread.sheets.all.11.1.2.min.js"></script>
     <script>GC.Spread.Sheets.LicenseKey =  '<%- LicenseKey %>';</script>
@@ -363,6 +365,7 @@
     <script src="/web/maintain/bills_lib/scripts/tools.js"></script>
     <script src="/lib/codemirror/codemirror.js"></script>
     <script src="/lib/codemirror/xml.js"></script>
+    <script src="/web/common/js/uploadImg.js"></script>
 </body>
 <script type="text/javascript">
     var codeEditor = CodeMirror.fromTextArea(document.getElementById("exampleTextarea"), {

+ 4 - 4
web/maintain/ration_repository/js/ration.js

@@ -79,10 +79,10 @@ let rationOprObj = {
             sheetCoe = rationCoeOprObj.sheet, settingCoe = rationCoeOprObj.setting,
             sheetAss = rationAssistOprObj.sheet, settingAss = rationAssistOprObj.setting,
             sheetInst = rationInstObj.sheet, settingInst = rationInstObj.setting;
-        sheetCommonObj.cleanSheet(sheetGLJ, settingGLJ, -1);
-        sheetCommonObj.cleanSheet(sheetCoe, settingCoe, -1);
-        sheetCommonObj.cleanSheet(sheetAss, settingAss, -1);
-        sheetCommonObj.cleanSheet(sheetInst, settingInst, -1);
+        sheetCommonObj.cleanData(sheetGLJ, settingGLJ, -1);
+        sheetCommonObj.cleanData(sheetCoe, settingCoe, -1);
+        sheetCommonObj.cleanData(sheetAss, settingAss, -1);
+        sheetCommonObj.cleanData(sheetInst, settingInst, -1);
         let cacheSection = me.getCache();
         if (cacheSection && row < cacheSection.length) {
             rationGLJOprObj.getGljItems(cacheSection[row], function () {

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

@@ -177,7 +177,7 @@ var rationAssistOprObj = {
         var me = this;
         me.ration = ration;
 
-        sheetCommonObj.cleanSheet(me.sheet, me.setting, -1);
+        sheetCommonObj.cleanData(me.sheet, me.setting, -1);
         sheetCommonObj.unShieldAllCells(me.sheet);
 
         if (ration == undefined || ration.rationAssList == undefined ||

+ 22 - 12
web/maintain/ration_repository/js/ration_glj.js

@@ -465,9 +465,14 @@ var rationGLJOprObj = {
                                 me.cache["_GLJ_" + me.currentRationItem.ID] = me.cache["_GLJ_" + me.currentRationItem.ID].concat(recoveryArr);
                             }
                             me.cache["_GLJ_" + me.currentRationItem.ID].sort(function(a, b) {
-                                var rst = 0;
-                                if (a.code > b.code) rst = 1
-                                else if (a.code < b.code) rst = -1;
+                                let rst = 0;
+                                let aV = a.gljType + a.code,
+                                    bV = b.gljType + b.code;
+                                if (aV > bV) {
+                                    rst = 1;
+                                } else if (aV < bV) {
+                                    rst = -1;
+                                }
                                 return rst;
                             });
                         }
@@ -486,9 +491,11 @@ var rationGLJOprObj = {
                         }
                         //更新的工料机不存在
                         me.cache["_GLJ_" + me.currentRationItem.ID].sort(function(a, b) {
-                            var rst = 0;
-                            if (a.code > b.code) rst = 1
-                            else if (a.code < b.code) rst = -1;
+                            let rst = 0;
+                            let aV = a.gljType + a.code,
+                                bV = b.gljType + b.code;
+                            if (aV > bV) rst = 1
+                            else if (aV < bV) rst = -1;
                             return rst;
                         });
                         $('#alertModalBtn').click();
@@ -670,11 +677,12 @@ var rationGLJOprObj = {
                             function compare(){
                                 return function (a, b) {
                                     let rst = 0;
-                                    if (a.code > b.code) {
-                                        rst = 1;
-                                    }
-                                    else if (a.code < b.code) {
+                                    let aV = a.gljType + a.code,
+                                        bV = b.gljType + b.code;
+                                    if (aV > bV) {
                                         rst = -1;
+                                    } else if (aV < bV) {
+                                        rst = 1;
                                     }
                                     return rst;
                                 }
@@ -697,10 +705,12 @@ var rationGLJOprObj = {
             sheetCommonObj.cleanData(me.sheet, me.setting, -1);
             me.cache["_GLJ_" + rationID].sort(function (a, b) {
                 let rst = 0;
-                if(a.code > b.code){
+                let aV = a.gljType + a.code,
+                    bV = b.gljType + b.code;
+                if(aV > bV){
                     rst = 1;
                 }
-                else if(a.code < b.code){
+                else if(aV < bV){
                     rst = -1;
                 }
                 return rst;