Prechádzať zdrojové kódy

1.修改工料机读取组成物的逻辑
2.把工料机页面取消,加入到main页面
3.修改计划规则为计价规则

olym 8 rokov pred
rodič
commit
93801a6e9b

+ 91 - 0
modules/common/std/std_glj_lib_glj_list_model.js

@@ -0,0 +1,91 @@
+/**
+ * 工料机总库相关业务逻辑
+ *
+ * @author CaiAoLin
+ * @date 2017/7/11
+ * @version
+ */
+import BaseModel from "../base/base_model";
+import STDRationLibGLJListSchemas from "./schemas/std_ration_lib_glj_list";
+
+class STDGLJLibGLJListModel extends BaseModel {
+
+    /**
+     * 构造函数
+     *
+     * @return {void}
+     */
+    constructor() {
+        let parent = super();
+        parent.model = STDRationLibGLJListSchemas;
+        parent.init();
+    }
+
+    /**
+     * 根据id获取数据
+     *
+     * @param {Number|Array} id
+     * @return {Promise}
+     */
+    async getDataById(id) {
+        let result = null;
+        try {
+            if (!id instanceof Array) {
+                id = parseInt(id);
+                if (isNaN(id)) {
+                    throw 'id有误';
+                }
+            }
+            let condition = {ID: {"$in": id}};
+            result = await this.findDataByCondition(condition, null, false);
+        } catch (error) {
+            console.log(error);
+            result = null;
+        }
+
+        return result;
+    }
+
+    /**
+     * 获取对应组成物数据
+     *
+     * @param {String} code
+     * @return {Promise}
+     */
+    async getComponent(code) {
+        let result = [];
+        let libGljData = await this.findDataByCondition({code: code});
+        if (libGljData === null || libGljData.component.length <= 0) {
+            return result;
+        }
+
+        let componentIdList = [];
+        let componentConsume = {};
+        // 整理数据
+        for (let component of libGljData.component) {
+            componentIdList.push(component.ID);
+            componentConsume[component.ID] = component.consumeAmt;
+        }
+
+        let condition = {ID: {$in: componentIdList}};
+        let componentGljData = await this.findDataByCondition(condition, null, false);
+
+        if (componentGljData === null) {
+            return result;
+        }
+
+        let componentData = [];
+        componentGljData = JSON.stringify(componentGljData);
+        componentGljData = JSON.parse(componentGljData);
+        for(let gljData of componentGljData) {
+            gljData.connectCode = code;
+            gljData.consumption = componentConsume[gljData.ID];
+            componentData.push(gljData);
+        }
+
+        return componentData;
+    }
+
+}
+
+export default STDGLJLibGLJListModel;

+ 0 - 51
modules/common/std/std_ration_lib_glj_list_model.js

@@ -1,51 +0,0 @@
-/**
- * 工料机总库相关业务逻辑
- *
- * @author CaiAoLin
- * @date 2017/7/11
- * @version
- */
-import BaseModel from "../base/base_model";
-import STDRationLibGLJListSchemas from "./schemas/std_ration_lib_glj_list";
-
-class STDRationLibGLJListModel extends BaseModel {
-
-    /**
-     * 构造函数
-     *
-     * @return {void}
-     */
-    constructor() {
-        let parent = super();
-        parent.model = STDRationLibGLJListSchemas;
-        parent.init();
-    }
-
-    /**
-     * 根据id获取数据
-     *
-     * @param {Number|Array} id
-     * @return {Promise}
-     */
-    async getDataById(id) {
-        let result = null;
-        try {
-            if (!id instanceof Array) {
-                id = parseInt(id);
-                if (isNaN(id)) {
-                    throw 'id有误';
-                }
-            }
-            let condition = {ID: {"$in": id}};
-            result = await this.findDataByCondition(condition, null, false);
-        } catch (error) {
-            console.log(error);
-            result = null;
-        }
-
-        return result;
-    }
-
-}
-
-export default STDRationLibGLJListModel;

+ 22 - 17
modules/glj/controllers/glj_controller.js

@@ -25,16 +25,21 @@ class GLJController extends BaseController {
     }
 
     /**
-     * 工料机汇总页
+     * 获取工料机相关数据
      *
      * @param {object} request
      * @param {object} response
      * @return {void}
      */
-    async index(request, response) {
+    async getGljList(request, response) {
         // 标段id
-        let projectId = request.query.project;
+        let projectId = request.body.project_id;
         projectId = parseInt(projectId);
+        let responseData = {
+            err: 0,
+            msg: '',
+            data: {}
+        };
         try {
             if (isNaN(projectId) || projectId <= 0) {
                 throw '标段id有误';
@@ -53,21 +58,21 @@ class GLJController extends BaseController {
             let gljListModel = new GLJListModel();
             let [gljList, mixRatioConnectData] = await gljListModel.getListByProjectId(projectId, unitPriceFileId);
 
-            let renderData = {
-                gljList: JSON.stringify(gljList),
-                mixRatioConnectData: JSON.stringify(mixRatioConnectData),
+            responseData.data.gljList = gljList;
+            responseData.data.mixRatioConnectData = mixRatioConnectData;
+            responseData.data.constData = {
                 materialIdList: gljListModel.materialIdList,
                 ownCompositionTypes: gljListModel.ownCompositionTypes,
                 hostname: request.hostname,
                 roomId: unitPriceFileId,
                 GLJTypeConst: JSON.stringify(GLJTypeConst),
-                userID: request.session.sessionUser.ssoId,
             };
-            response.render('glj/html/glj_index', renderData);
         } catch (error) {
-            response.status(404).send('404 Error');
+            responseData.err = 1;
+            responseData.msg = error;
         }
 
+        response.json(responseData);
     }
 
     /**
@@ -241,15 +246,15 @@ class GLJController extends BaseController {
     async test(request, response) {
         // 从定额库获取的数据
         let data = {
-            glj_id: 803,
+            glj_id: 17,
             project_id: 1,
-            code: '85011701',
-            name: '电动夯实机 夯能20~62N·m',
-            specs: '夯能20~62N·m',
-            unit: '台班',
-            type: GLJTypeConst.GENERAL_MACHINE,
-            base_price: 120.45,
-            market_price: 120.45
+            code: '00010201',
+            name: '土石方综合工日',
+            specs: '',
+            unit: '工日',
+            type: GLJTypeConst.LABOUR,
+            base_price: 50,
+            market_price: 50
         };
         try {
             let gljListModel = new GLJListModel();

+ 19 - 38
modules/glj/models/glj_list_model.js

@@ -13,7 +13,7 @@ import STDMixRatioModel from "../../common/std/std_mix_ratio_model";
 import UnitPriceFileModel from "./unit_price_file_model";
 import GLJTypeConst from "../../common/const/glj_type_const";
 import RationGLJFacade from "../../ration_glj/facade/ration_glj_facade";
-import STDRationLibGLJListModel from "../../common/std/std_ration_lib_glj_list_model";
+import STDGLJLibGLJListModel from "../../common/std/std_glj_lib_glj_list_model";
 import STDGLJType from "../../../public/cache/std_glj_type_util";
 import MixRatioModel from "./mix_ratio_model";
 
@@ -410,18 +410,18 @@ class GLJListModel extends BaseModel {
      */
     async compositionInit(code, projectId, unitPriceFileId) {
         // 查找对应组成物的项目工料机数据
-        let [projectGljList, compositionList] = await this.getCompositionGLJList(code, projectId, 'name');
+        let [projectGljList, compositionGljList] = await this.getCompositionGLJList(code, projectId, 'name');
 
         // 整理配合比待插入数据
         let mixRatioInsertData = [];
-        for (let tmp of compositionList) {
+        for (let tmp of compositionGljList) {
             // 配合比数据插入
             let mixRatioData = {
                 consumption: tmp.consumption,
-                glj_id: tmp.glj_id,
+                glj_id: tmp.ID,
                 unit_price_file_id: unitPriceFileId,
-                connect_code: tmp.connect_code,
-                glj_type: tmp.glj_type
+                connect_code: tmp.connectCode,
+                glj_type: tmp.gljType
             };
             mixRatioInsertData.push(mixRatioData);
         }
@@ -434,32 +434,9 @@ class GLJListModel extends BaseModel {
             throw '组成物插入单价数据失败!';
         }
         // 如果已经存在则后续操作停止
-        if(projectGljList.length === compositionList.length) {
-            return;
-        }
-
-        // 插入不存在的项目工料机数据
-        let notInGLJId = [];
-        let compositionData = {};
-        for(let tmp of compositionList) {
-            compositionData[tmp.glj_id] = tmp;
-            if (projectGljList[tmp.name] !== undefined) {
-                continue;
-            }
-            // 把不存在的工料机总库id加入数组
-            notInGLJId.push(tmp.glj_id);
-        }
-
-        // 如果没有对应的数据则忽略后面的操作
-        if (notInGLJId.length <= 0) {
+        if(projectGljList.length === compositionGljList.length) {
             return;
         }
-        // 查找对应工料机总库数据
-        let stdRationLibGLJListModel = new STDRationLibGLJListModel();
-        let stdGLJData = await stdRationLibGLJListModel.getDataById(notInGLJId);
-        if (stdGLJData === null || stdGLJData.length <= 0) {
-            throw '没有找到对应的工料机总库数据';
-        }
 
         // 获取工料机类型以及整理数据
         let gljTypeList = STDGLJType.getStdGljTypeCacheObj().toArray();
@@ -471,7 +448,10 @@ class GLJListModel extends BaseModel {
         // 整理插入的数据
         let gljInsertData = [];
         let unitPriceInsertData = [];
-        for (let tmp of stdGLJData) {
+        for(let tmp of compositionGljList) {
+            if (projectGljList[tmp.name] !== undefined) {
+                continue;
+            }
             // 项目工料机插入的数据
             let gljData = {
                 glj_id: tmp.ID,
@@ -479,7 +459,7 @@ class GLJListModel extends BaseModel {
                 code: tmp.code,
                 name: tmp.name,
                 specs: tmp.specs,
-                unit: tmp.unit,
+                unit: tmp.unit === undefined ? '' : tmp.unit,
             };
             gljInsertData.push(gljData);
 
@@ -523,6 +503,7 @@ class GLJListModel extends BaseModel {
         try {
             // 查找对应的项目工料机数据
             let projectGLJData = await this.getDataById(projectGLJId);
+
             let allowType = [GLJTypeConst.MIX_RATIO, GLJTypeConst.CONCRETE, GLJTypeConst.MORTAR,
                 GLJTypeConst.GENERAL_MACHINE];
 
@@ -587,17 +568,17 @@ class GLJListModel extends BaseModel {
      * @return {Promise} 返回组成物工料机数据和组成物列表数据
      */
     async getCompositionGLJList(code, projectId, indexBy = null) {
-        // 首先获取对应组成物列表
-        let stdMixRatioModel = new STDMixRatioModel();
-        let compositionList = await stdMixRatioModel.getDataByCode(code);
+        // 获取对应的组成物数据
+        let stdGljLibGljListModel = new STDGLJLibGLJListModel();
+        let componentGljList = await stdGljLibGljListModel.getComponent(code);
 
-        if (compositionList.length <= 0) {
+        if (componentGljList.length <= 0) {
             throw '不存在对应的组成物';
         }
 
         let codeList = [];
         let nameList = [];
-        for(let tmp of compositionList) {
+        for(let tmp of componentGljList) {
             codeList.push(tmp.code);
             nameList.push(tmp.name);
         }
@@ -606,7 +587,7 @@ class GLJListModel extends BaseModel {
         let condition = {code: {"$in": codeList}, name: {"$in": nameList}, project_id: projectId};
         let gljData = await this.findDataByCondition(condition, {_id: 0}, false, indexBy);
 
-        return [gljData, compositionList];
+        return [gljData, componentGljList];
     }
 
     /**

+ 1 - 1
modules/glj/routes/glj_router.js

@@ -13,7 +13,7 @@ const router = Express.Router();
 let gljController = new GLJController();
 
 // action定义区域
-router.get('/', gljController.init, gljController.index);
+router.post('/getData', gljController.init, gljController.getGljList);
 router.post('/update', gljController.init, gljController.updateData);
 router.post('/get-ratio', gljController.init, gljController.getRatio);
 router.post('/delete-ratio', gljController.init, gljController.deleteMixRatio);

+ 55 - 0
web/building_saas/glj/html/glj_index.html

@@ -0,0 +1,55 @@
+<div class="toolsbar px-1">
+    <div class="tools-btn btn-group align-top">
+        <a href="" class="btn btn-sm"><i class="fa fa-arrow-down" aria-hidden="true"></i>下移</a>
+        <a href="" class="btn btn-sm"><i class="fa fa-arrow-up" aria-hidden="true"></i>上移</a>
+        <a href="" class="btn btn-sm"><i class="fa fa-arrow-left" aria-hidden="true"></i></a>
+        <a href="" class="btn btn-sm"><i class="fa fa-arrow-right" aria-hidden="true"></i></a>
+        <a href="" class="btn btn-sm"><i class="fa fa-undo" aria-hidden="true"></i></a>
+    </div>
+</div>
+<div class="container-fluid">
+    <div class="row">
+        <div class="main-content col-lg-12 p-0">
+            <div class="top-content">
+                <div class="main-data-top" id="project-glj">
+                    <p style="text-align: center; margin-top: 30px;">正在加载数据</p>
+                </div>
+            </div>
+            <div class="bottom-content">
+                <ul class="nav nav-tabs" role="tablist">
+                    <li class="nav-item">
+                        <a class="nav-link active" data-toggle="tab" data-name="ration" href="#de" role="tab">相关定额</a>
+                    </li>
+                    <li class="nav-item">
+                        <a class="nav-link" data-toggle="tab" data-name="mix-ratio" href="#ph" role="tab">配合比表</a>
+                    </li>
+                    <li class="nav-item">
+                        <a class="nav-link" data-toggle="tab" data-name="machine" href="#jx" role="tab">机械单价</a>
+                    </li>
+                </ul>
+                <!-- Tab panes -->
+                <div class="tab-content">
+                    <div class="tab-pane active" id="de" role="tabpanel">
+                        <div class="main-data-bottom ovf-hidden">
+                            相关定额
+                        </div>
+                    </div>
+                    <div class="tab-pane" id="ph" role="tabpanel">
+                        <div class="main-data-bottom" id="mix-ratio">
+                        </div>
+                    </div>
+                    <div class="tab-pane" id="jx" role="tabpanel">
+                        <div class="main-data-bottom" id="machine">
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+<script type="text/javascript" src="/web/building_saas/glj/js/project_glj.js"></script>
+<script type="text/javascript" src="/web/building_saas/glj/js/composition.js"></script>
+<script type="text/javascript" src="/web/building_saas/glj/js/socket.js"></script>
+<script type="text/javascript" src="/web/building_saas/glj/js/common_spread.js"></script>
+<script type="text/javascript" src="/web/building_saas/glj/js/composition_spread.js"></script>
+<script type="text/javascript" src="/web/building_saas/glj/js/project_glj_spread.js"></script>

web/glj/js/common_spread.js → web/building_saas/glj/js/common_spread.js


web/glj/js/composition.js → web/building_saas/glj/js/composition.js


+ 1 - 1
web/glj/js/composition_spread.js

@@ -125,7 +125,7 @@ CompositionSpread.prototype.getRatioData = function(projectGLJid) {
         success: function(response) {
             if (response.err === 0) {
                 response.data = JSON.parse(response.data);
-                console.log(response.data);
+
                 // 设置数据
                 self.sheetObj.setData(response.data);
                 self.specialColumn(response.data);

+ 77 - 14
web/glj/js/project_glj.js

@@ -7,12 +7,87 @@
  */
 let projectGLJSpread = null;
 let projectGLJSheet = null;
+
+// websocket所需
+let host = '';
+let socket = null;
+let roomId = 0;
+// 判定常量
+let materialIdList = [];
+let canNotChangeTypeId = [];
+let GLJTypeConst = [];
+// spreadjs载入数据所需
+let jsonData = [];
+let mixRatioConnectData = [];
+
 let currentTag = '';
 let isChanging = false;
 $(document).ready(function () {
+    $('#tab_gongliaoji').on('shown.bs.tab', function (e) {
+        init();
+    });
+
+    // 是否主动更改数据
+    // $("#message").on('click', '#load-data', function() {
+    //     $("#notify").slideUp('fast');
+    //     if (changeInfo.length > 0) {
+    //         for (let index in changeInfo) {
+    //             let cell = gljSheet.getCell(changeInfo[index].row, changeInfo[index].col, GC.Spread.Sheets.SheetArea.viewport);
+    //             cell.value(changeInfo[index].newValue);
+    //         }
+    //     }
+    //     changeInfo = [];
+    // });
+});
+
+/**
+ * 初始化数据
+ *
+ * @return {void}
+ */
+function init() {
+    // 加载工料机数据
+    $.ajax({
+        url: '/glj/getData',
+        type: 'post',
+        dataType: 'json',
+        data: {project_id: scUrlUtil.GetQueryString('project')},
+        error: function() {
+            alert('数据传输错误');
+        },
+        beforeSend: function() {
+
+        },
+        success: function(response) {
+            if (response.err === 1) {
+                let msg = response.msg !== undefined && response.msg !== '' ? response.msg : '读取工料机数据失败!';
+                alert(msg);
+                return false;
+            }
+            let data = response.data;
+            // 赋值
+            jsonData = data.gljList !== undefined && data.gljList.length > 0 ? data.gljList : [];
+            mixRatioConnectData = data.mixRatioConnectData !== undefined ? data.mixRatioConnectData : mixRatioConnectData;
 
-    projectInfoObj.showProjectInfo();
+            host = data.constData.hostname !== undefined ? data.constData.hostname : '';
+            materialIdList = data.constData.materialIdList !== undefined ? data.constData.materialIdList : materialIdList;
+            roomId = data.constData.roomId !== undefined ? data.constData.roomId : roomId;
+            canNotChangeTypeId = data.constData.ownCompositionTypes !== undefined ?
+                data.constData.ownCompositionTypes : canNotChangeTypeId;
+            GLJTypeConst = data.constData.GLJTypeConst !== undefined ? JSON.parse(data.constData.GLJTypeConst) : GLJTypeConst;
 
+            spreadInit();
+        }
+    });
+
+}
+
+/**
+ * spreadjs相关初始化
+ *
+ * @return {void}
+ */
+function spreadInit() {
     projectGLJSpread = new ProjectGLJSpread();
     projectGLJSpread.successCallback = successTrigger;
     projectGLJSheet = projectGLJSpread.init();
@@ -45,19 +120,7 @@ $(document).ready(function () {
             projectGLJSheet.filterData('unit_price.type', []);
         }
     });
-
-    // 是否主动更改数据
-    // $("#message").on('click', '#load-data', function() {
-    //     $("#notify").slideUp('fast');
-    //     if (changeInfo.length > 0) {
-    //         for (let index in changeInfo) {
-    //             let cell = gljSheet.getCell(changeInfo[index].row, changeInfo[index].col, GC.Spread.Sheets.SheetArea.viewport);
-    //             cell.value(changeInfo[index].newValue);
-    //         }
-    //     }
-    //     changeInfo = [];
-    // });
-});
+}
 
 /**
  * 成功事件

+ 5 - 4
web/glj/js/project_glj_spread.js

@@ -61,7 +61,7 @@ ProjectGLJSpread.prototype.init = function () {
         {name: '父级关联编码', field: 'connect_code', visible: false},
         {name: '消耗量', field: 'ratio_data', visible: false},
     ];
-    let sourceData = JSON.parse(jsonData);
+    let sourceData = jsonData;
 
     this.sheetObj = new CommonSpreadJs(header);
     this.sheetObj.init('project-glj');
@@ -115,7 +115,7 @@ ProjectGLJSpread.prototype.init = function () {
         let type = activeSheet.getValue(row, typeColumn);
 
         // 如果类型为混凝土、砂浆、配合比、机械,则提示
-        if (field === 'unit_price.market_price' && canNotChangeTypeId.indexOf(type + '') >= 0) {
+        if (field === 'unit_price.market_price' && canNotChangeTypeId.indexOf(type) >= 0) {
             alert('当前工料机的市场单价由组成物计算得出,不可直接修改');
         }
     });
@@ -224,9 +224,10 @@ ProjectGLJSpread.prototype.specialColumn = function (sourceData) {
     let connectCodeColumn = this.sheetObj.getFieldColumn('connect_code');
     let consumptionColumn = this.sheetObj.getFieldColumn('consumption');
     let activeSheet = this.sheetObj.getSheet();
+
     for (let data of sourceData) {
         // 只有材料才显示是否暂估
-        if (materialIdList.indexOf(data.unit_price.type + '') < 0) {
+        if (materialIdList.indexOf(data.unit_price.type) < 0) {
             let string = new GC.Spread.Sheets.CellTypes.Text();
             activeSheet.setCellType(rowCounter, isEvaluateColumn, string, GC.Spread.Sheets.SheetArea.viewport);
             // 锁定该单元格
@@ -235,7 +236,7 @@ ProjectGLJSpread.prototype.specialColumn = function (sourceData) {
         }
 
         // 如果类型为混凝土、砂浆、配合比、机械,则市场单价不能修改
-        if (canNotChangeTypeId.indexOf(data.unit_price.type + '') >= 0) {
+        if (canNotChangeTypeId.indexOf(data.unit_price.type) >= 0) {
             this.firstMixRatioRow = this.firstMixRatioRow === -1 && data.unit_price.type !== GLJTypeConst.GENERAL_MACHINE ?
                 rowCounter : this.firstMixRatioRow;
             this.firstMachineRow = this.firstMachineRow === -1 && data.unit_price.type === GLJTypeConst.GENERAL_MACHINE ?

web/glj/js/socket.io.slim.js → web/building_saas/glj/js/socket.io.slim.js


web/glj/js/socket.js → web/building_saas/glj/js/socket.js


+ 2 - 70
web/building_saas/main/html/main.html

@@ -90,7 +90,7 @@
         <div class="main-nav">
             <ul class="nav nav-tabs flex-column" role="tablist">
                 <li class="nav-item"><a class="active" data-toggle="tab" href="#zaojiashu" role="tab">造价书</a></li>
-                <li class="nav-item"><a href="#" id="glj-link">工料机</a></li>
+                <li class="nav-item"><a data-toggle="tab" href="#gongliaoji" id="tab_gongliaoji" role="tab">工料机</a></li>
                 <li class="nav-item"><a data-toggle="tab" href="#fee_rates" id="tab_fee_rate" role="tab" onclick="">费率</a></li>
                 <li class="nav-item"><a data-toggle="tab" href="#calc_program_manage" id="tab_calc_program_manage" role="tab" onclick="">计算程序</a></li>
                 <li class="nav-item"><a data-toggle="tab" href="#baobiao" role="tab" onclick="">报表</a></li>
@@ -240,72 +240,7 @@
               </div>
             </div>
             <div class="tab-pane" id="gongliaoji" role="tabpanel">
-              <!--工料机-->
-              <div class="toolsbar px-1">
-                  <div class="tools-btn btn-group align-top">
-                      <a href="" class="btn btn-sm"><i class="fa fa-arrow-down" aria-hidden="true"></i>下移</a>
-                      <a href="" class="btn btn-sm"><i class="fa fa-arrow-up" aria-hidden="true"></i>上移</a>
-                      <a href="" class="btn btn-sm"><i class="fa fa-arrow-left" aria-hidden="true"></i></a>
-                      <a href="" class="btn btn-sm"><i class="fa fa-arrow-right" aria-hidden="true"></i></a>
-                      <a href="" class="btn btn-sm"><i class="fa fa-undo" aria-hidden="true"></i></a>
-                  </div>
-              </div>
-              <div class="container-fluid">
-                  <div class="row">
-                      <div class="main-content col-lg-12 p-0">
-                          <div class="fluid-content">
-                              <div class="warp-p2">
-                                  <table class="table table-sm table-bordered m-0">
-                                      <thead>
-                                          <tr>
-                                              <th>编码</th>
-                                              <th>名称</th>
-                                              <th>规格型号</th>
-                                              <th>单位</th>
-                                              <th>类型</th>
-                                              <th>人工工种</th>
-                                              <th>调整系数</th>
-                                              <th>总消耗量</th>
-                                              <th>基价单价</th>
-                                              <th>调整基价</th>
-                                              <th>市场单价</th>
-                                              <th>市场价合计</th>
-                                              <th>是否暂估</th>
-                                              <th>供货方式</th>
-                                              <th>甲供数量</th>
-                                              <th>出厂价</th>
-                                              <th>交货方式</th>
-                                              <th>... </th>
-                                          </tr>
-                                      </thead>
-                                      <tbody>
-                                          <tr>
-                                              <td>00010201</td>
-                                              <td>土石方综合工日</td>
-                                              <td> </td>
-                                              <td>工日</td>
-                                              <td>人</td>
-                                              <td>土石方人工</td>
-                                              <td> </td>
-                                              <td>100.232</td>
-                                              <td>38</td>
-                                              <td> </td>
-                                              <td>38</td>
-                                              <td>市场价合计</td>
-                                              <td>是否暂估</td>
-                                              <td>供货方式</td>
-                                              <td>甲供数量</td>
-                                              <td>出厂价</td>
-                                              <td>交货方式</td>
-                                              <td>... </td>
-                                          </tr>
-                                      </tbody>
-                                  </table>
-                              </div>
-                          </div>
-                      </div>
-                  </div>
-              </div>
+                <%include ../../glj/html/glj_index.html %>
             </div>
             <div class="tab-pane" id="baobiao" role="tabpanel">
               <!--报表-->
@@ -615,9 +550,6 @@
 
         $(document).ready(function(){
   			//createTree();
-            // 获取project
-            var projectId = getQueryString('project');
-            $("#glj-link").attr("href", "/glj?project=" + projectId);
 
 /*            $("#tab_calc_program").click(function(){
                 location.href = '/web/building_saas/main/html/calc_program.html';

+ 1 - 1
web/building_saas/pm/js/pm_main.js

@@ -180,7 +180,7 @@ $(document).ready(function() {
     $("input[name='valuation_type']").click(function() {
         let type = $(this).val();
         let targetData = type === 'bill' ? JSON.parse(billValuation) : JSON.parse(rationValuation);
-        let html = '<option value="">请选择计规则</option>';
+        let html = '<option value="">请选择计规则</option>';
 
         for(let valuation of targetData) {
             if (valuation === null) {

+ 0 - 14
web/glj/html/footer.html

@@ -1,14 +0,0 @@
-<!-- JS. -->
-<script src="/lib/jquery/jquery.min.js"></script>
-<script src="/lib/tether/tether.min.js"></script>
-<script src="/lib/bootstrap/bootstrap.min.js"></script>
-<script src="/web/building_saas/js/global.js"></script>
-<script src="/web/glj/js/socket.io.slim.js"></script>
-<script>GC.Spread.Sheets.LicenseKey = "559432293813965#A0y3iTOzEDOzkjMyMDN9UTNiojIklkI1pjIEJCLi4TPB9mM5AFNTd4cvZ7SaJUVy3CWKtWYXx4VVhjMpp7dYNGdx2ia9sEVlZGOTh7NRlTUwkWR9wEV4gmbjBDZ4ElR8N7cGdHVvEWVBtCOwIGW0ZmeYVWVr3mI0IyUiwCMzETN8kzNzYTM0IicfJye&Qf35VfiEzRwEkI0IyQiwiIwEjL6ByUKBCZhVmcwNlI0IiTis7W0ICZyBlIsIyNyMzM5ADI5ADNwcTMwIjI0ICdyNkIsIibj9SbvNmL4N7bjRnch56ciojIz5GRiwiI8+Y9sWY9QmZ0Jyp96uL9v6L0wap9biY9qiq95q197Wr9g+89iojIh94Wiqi";</script>
-
-</body>
-<script type="text/javascript">
-    autoFlashHeight();
-</script>
-
-</html>

+ 0 - 102
web/glj/html/glj_index.html

@@ -1,102 +0,0 @@
-<%include header.html %>
-<link rel="stylesheet" href="/lib/jquery-contextmenu/jquery.contextMenu.css">
-<div class="main">
-    <div class="main-nav">
-        <ul class="nav flex-column">
-            <li><a href="">造价书</a></li>
-            <li><a href="#" class="active">工料机</a></li>
-            <li><a href="">报表</a></li>
-            <li><a href="">费率</a></li>
-        </ul>
-    </div>
-    <div class="content">
-        <div class="toolsbar px-1">
-            <div class="tools-btn btn-group align-top">
-                <a href="" class="btn btn-sm"><i class="fa fa-arrow-down" aria-hidden="true"></i>下移</a>
-                <a href="" class="btn btn-sm"><i class="fa fa-arrow-up" aria-hidden="true"></i>上移</a>
-                <a href="" class="btn btn-sm"><i class="fa fa-arrow-left" aria-hidden="true"></i></a>
-                <a href="" class="btn btn-sm"><i class="fa fa-arrow-right" aria-hidden="true"></i></a>
-                <a href="" class="btn btn-sm"><i class="fa fa-undo" aria-hidden="true"></i></a>
-            </div>
-        </div>
-        <div class="container-fluid">
-            <div class="row">
-                <div class="main-content col-lg-12 p-0">
-                    <div class="top-content">
-                        <div class="main-data-top" id="project-glj">
-                            <p style="text-align: center; margin-top: 30px;">正在加载数据</p>
-                        </div>
-                    </div>
-                    <div class="bottom-content">
-                        <ul class="nav nav-tabs" role="tablist">
-                            <li class="nav-item">
-                                <a class="nav-link active" data-toggle="tab" data-name="ration" href="#de" role="tab">相关定额</a>
-                            </li>
-                            <li class="nav-item">
-                                <a class="nav-link" data-toggle="tab" data-name="mix-ratio" href="#ph" role="tab">配合比表</a>
-                            </li>
-                            <li class="nav-item">
-                                <a class="nav-link" data-toggle="tab" data-name="machine" href="#jx" role="tab">机械单价</a>
-                            </li>
-                        </ul>
-                        <!-- Tab panes -->
-                        <div class="tab-content">
-                            <div class="tab-pane active" id="de" role="tabpanel">
-                                <div class="main-data-bottom ovf-hidden">
-                                    相关定额
-                                </div>
-                            </div>
-                            <div class="tab-pane" id="ph" role="tabpanel">
-                                <div class="main-data-bottom" id="mix-ratio">
-                                </div>
-                            </div>
-                            <div class="tab-pane" id="jx" role="tabpanel">
-                                <div class="main-data-bottom" id="machine">
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-<script type="text/javascript">
-    let jsonData = '<%- gljList %>';
-    let mixRatioConnectData = '<%- mixRatioConnectData %>';
-    mixRatioConnectData = JSON.parse(mixRatioConnectData);
-
-    let materialIdList = '<%- materialIdList %>';
-    materialIdList = materialIdList !== '' ? materialIdList.split(",") : '';
-    let host = '<%= hostname %>';
-    let socket = null;
-    let roomId = '<%= roomId %>';
-    let changeInfo = [];
-    let GLJTypeConst = '<%- GLJTypeConst %>';
-    GLJTypeConst = JSON.parse(GLJTypeConst);
-
-    // 混凝土、砂浆、配合比、机械 市场单价不能修改
-    let canNotChangeTypeId = '<%- ownCompositionTypes %>';
-    canNotChangeTypeId = canNotChangeTypeId !== '' ? canNotChangeTypeId.split(",") : '';
-    let userID = '<%=userID %>';
-</script>
-<%include footer.html %>
-<script type="text/javascript" src="/lib/jquery-contextmenu/jquery.contextMenu.js"></script>
-<script type="text/javascript" src="/public/web/sheet/sheet_data_helper.js"></script>
-<script type="text/javascript" src="/public/web/number_util.js"></script>
-<script type="text/javascript" src="/web/glj/js/socket.js"></script>
-<script type="text/javascript" src="/web/glj/js/common_spread.js"></script>
-<script type="text/javascript" src="/web/glj/js/composition_spread.js"></script>
-<script type="text/javascript" src="/web/glj/js/project_glj_spread.js"></script>
-<script type="text/javascript" src="/web/glj/js/project_glj.js"></script>
-<script type="text/javascript" src="/web/glj/js/composition.js"></script>
-<script type="text/javascript" src="/web/building_saas/js/global.js"></script>
-<script type="text/javascript" src="/public/web/common_ajax.js"></script>
-<script type="text/javascript" src="/public/web/url_util.js"></script>
-<script type="text/javascript" src="/web/building_saas/main/js/views/project_info.js"></script>
-<script type="text/javascript">
-$(document).ready(function() {
-    let projectId = getQueryString("project");
-    $(".main-nav .nav li > a").not(".active").attr("href", "/main?project=" + projectId);
-});
-</script>

+ 0 - 90
web/glj/html/header.html

@@ -1,90 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
-    <meta charset="UTF-8">
-    <title><%= title %>-Smartcost</title>
-    <link rel="stylesheet" href="/lib/bootstrap/css/bootstrap.min.css">
-    <link rel="stylesheet" href="/web/building_saas/css/main.css">
-    <link rel="stylesheet" href="/lib/font-awesome/font-awesome.min.css">
-    <link rel="stylesheet" href="/lib/spreadjs/sheets/css/gc.spread.sheets.excel2013lightGray.10.0.1.css">
-    <script type="text/javascript" src="/public/web/sheet/sheet_common.js"></script>
-    <script type="text/javascript" src="/public/web/sheet/sheet_data_helper.js"></script>
-    <script src="/lib/spreadjs/sheets/gc.spread.sheets.all.10.0.1.min.js"></script>
-    <style type="text/css">
-        #chat-content {
-            border: 1px solid #000;
-            width: 500px;
-            height: 600px;
-        }
-        #notify {
-            display: none;
-        }
-    </style>
-</head>
-<body>
-<div class="header">
-    <div class="top-msg clearfix" id="notify">
-        <div class="alert alert-warning mb-0 py-0" role="alert">
-            <button type="button" class="close" data-dismiss="alert" aria-label="Close">
-                <span aria-hidden="true">&times;</span>
-            </button>
-            <span id="message"><strong>注意!</strong> 这是一条消息通知 <a href="#">链接</a></span>
-        </div>
-    </div>
-    <nav class="navbar navbar-toggleable-lg navbar-light bg-faded p-0 justify-content-between">
-        <span class="header-logo px-2">Smartcost</span>
-        <div class="navbar-text" id="fullpath"><a href="project-management.html">项目管理</a><i class="fa fa-angle-right fa-fw"></i>文件夹<i
-                class="fa fa-angle-right fa-fw"></i>建设项目<i class="fa fa-angle-right fa-fw"></i>单项工程<i
-                class="fa fa-angle-right fa-fw"></i>单位工程
-        </div>
-        <div class="float-lg-right navbar-text pt-0">
-            <div class="dropdown d-inline-block">
-                <button class="btn btn-link btn-sm dropdown-toggle" type="button" data-toggle="dropdown">陈特</button>
-                <div class="dropdown-menu dropdown-menu-right">
-                    <a class="dropdown-item" href="user-info.html" target="_blank">账号资料</a>
-                    <a class="dropdown-item" href="user-buy.html" target="_blank">产品购买</a>
-                    <a class="dropdown-item" href="user-set.html" target="_blank">偏好设置</a>
-                </div>
-            </div>
-            <span class="btn btn-link btn-sm new-msg">
-                  <i class="fa fa-envelope-o" aria-hidden="true"></i>&nbsp;2
-                </span>
-            <button class="btn btn-link btn-sm">注销</button>
-        </div>
-    </nav>
-    <nav class="navbar navbar-toggleable-lg justify-content-between navbar-light p-0">
-        <ul class="nav navbar-nav px-1">
-            <li class="nav-item">
-                <a class="nav-link" href="#" aria-haspopup="true" aria-expanded="false"><i class="fa fa-sliders"></i> 选项</a>
-            </li>
-            <li class="nav-item dropdown">
-                <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown" aria-haspopup="true"
-                   aria-expanded="false"><i class="fa fa-wrench"></i> 工具</a>
-                <div class="dropdown-menu">
-                    <a class="dropdown-item" href="#">定额库编辑器</a>
-                    <a class="dropdown-item" href="#">工料机库编辑器</a>
-                </div>
-            </li>
-            <li class="nav-item dropdown">
-                <a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown" aria-haspopup="true"
-                   aria-expanded="false"><i class="fa fa-question-circle-o"></i> 帮助</a>
-                <div class="dropdown-menu">
-                    <a class="dropdown-item" href="#">帮助</a>
-                    <a class="dropdown-item" href="#">升级说明</a>
-                    <a class="dropdown-item" href="#">重庆市2008定额说明</a>
-                    <a class="dropdown-item" href="#">纵横官网</a>
-                    <a class="dropdown-item" href="#">动画教程</a>
-                    <a class="dropdown-item" href="#">联系客服</a>
-                    <a class="dropdown-item" href="#">关于</a>
-                </div>
-            </li>
-            <li class="nav-item">
-                <a class="nav-link" href="#" aria-haspopup="true" aria-expanded="false"><i class="fa fa-history"></i>
-                    历史记录</a>
-            </li>
-        </ul>
-        <form class="form-inline">
-            <input class="form-control form-control-sm mr-1" type="text" placeholder="告诉我你想做什么">
-        </form>
-    </nav>
-</div>