Browse Source

编办--计价规则--计价类别,显示清单模板

MaiXinRong 8 years ago
parent
commit
93c2e06f97

+ 18 - 2
modules/templates/controllers/bills_template_controller.js

@@ -1,11 +1,25 @@
 /**
+ * 清单模板控制器
  * Created by Mai on 2017/4/17.
  */
-var BillsTemplateData = require('../models/bills_template');
+/*
+var BillsTemplateData = require('../models/bills_template_model');
 
 var callback = function(req, res, err, message, data){
     res.json({error: err, message: message, data: data});
 };
+/!*
+class BillsTemplateController {
+    /!**
+     * 清单模板编辑页面
+     * @param req
+     * @param res
+     *!/
+    async index(req, res) {
+        let id = req.query.id;
+        let
+    }
+};*!/
 
 module.exports = {
     getBillsTemplate: function(req, res){
@@ -34,4 +48,6 @@ module.exports = {
             callback(req, res, err, message, data);
         });
     }
-}
+}
+
+export default BillsTemplateController;*/

+ 26 - 19
modules/templates/models/bills_template.js

@@ -2,25 +2,32 @@
  * Created by Mai on 2017/4/14.
  * 清单模板,新建项目使用
  */
-var counter = require("../../../public/counter/counter.js");
+import BaseModel from "../../common/base/base_model";
+import BillsTemplateSchema from "./schemas/bills_template";
 
-var mongoose = require('mongoose');
-var dbm = require("../../../config/db/db_manager");
-var templatesDB = dbm.getCfgConnection("templates");
-var Schema = mongoose.Schema;
-var deleteSchema = require('../../../public/models/delete_schema');
-var BillsTemplateSchema = new Schema({
-    ID: Number,
-    ParentID: Number,
-    NextSiblingID: Number,
-    code: String,
-    name: String,
-    unit: String,
-    deleteInfo: deleteSchema,
-    tempType: Number
-});
-var BillsTemplates = templatesDB.model('temp_bills', BillsTemplateSchema);
+class BillsTemplateModel extends BaseModel {
+    /**
+     * 构造函数
+     *
+     * @return {void}
+     */
+    constructor() {
+        let parent = super();
+        parent.model = BillsTemplateSchema;
+        parent.init();
+    }
+
+    async getTemplateData (valuationId) {
+        // 筛选字段
+        let field = {_id: 1, valuationId: 1, ID: 1, ParentID: 1, NextSiblingID: 1, code: 1, name: 1, unit: 1};
+        let data = await this.findDataByCondition({valuationId: valuationId}, field, false);
+
+        return data === null ? [] : data;
+    }
+};
 
+export default BillsTemplateModel;
+/*
 var BillsTemplateDAO = function(){};
 
 BillsTemplateDAO.prototype.getTemplate = function (type, callback) {
@@ -82,6 +89,6 @@ BillsTemplateDAO.prototype.getNewBillsTemplateID = function (count, callback) {
             callback(1, '获取主键失败', null);
         }
     });
-}
+};
 
-module.exports = new BillsTemplateDAO();
+module.exports = new BillsTemplateDAO();*/

+ 25 - 0
modules/templates/models/schemas/bills_template.js

@@ -0,0 +1,25 @@
+/**
+ * Created by Mai on 2017/8/17.
+ */
+import mongoose from "mongoose";
+let Schema = mongoose.Schema;
+
+let collectionName = 'temp_bills';
+
+let BillsTemplateSchema = {
+    // 树结构所需ID
+    ID: Number,
+    ParentID: Number,
+    NextSiblingID: Number,
+    // 编号
+    code: String,
+    // 名称
+    name: String,
+    // 单位
+    unit: String,
+    // 所属计价ID
+    valuationId: String
+};
+
+let model = mongoose.model(collectionName, new Schema(BillsTemplateSchema, {versionKey: false, collection: collectionName}));
+export {model as default, collectionName as collectionName};

+ 5 - 6
modules/templates/routes/bills_template_router.js

@@ -3,12 +3,11 @@
  */
 
 var express = require('express');
-
-var billsTemplateController = require('./../controllers/bills_template_controller');
-
+/*
+var billsTemplateController = require('./../controllers/bills_template_controller');*/
 
 module.exports = function (app) {
-    app.get('/template/bills', function (req, res) {
+    app.get('/template/bills/:id', function (req, res) {
         let checkAdmin = function (userAccount) {
             return true;
         }
@@ -32,12 +31,12 @@ module.exports = function (app) {
         }
     });
 
-    var billsTemplateRouter = express.Router();
+/*    var billsTemplateRouter = express.Router();
 
     billsTemplateRouter.post('/getBillsTemplate', billsTemplateController.getBillsTemplate);
     billsTemplateRouter.post('/updateBillsTemplate', billsTemplateController.updateBillsTemplate);
     billsTemplateRouter.post('/getNewBillsTemplateID', billsTemplateController.getNewBillsTemplateID);
-    app.use('/template/bills/api', billsTemplateRouter);
+    app.use('/template/bills/api', billsTemplateRouter);*/
 }
 
 

+ 7 - 0
modules/users/controllers/compilation_controller.js

@@ -11,6 +11,7 @@ import STDRationLibMapModel from "../../common/std/std_ration_lib_map_model";
 import STDBillLibListsModel from "../../common/std/std_bills_lib_lists_model";
 import STDGLJLibMapModel from "../../common/std/std_glj_lib_map_model";
 import {default as EngineeringConst, List as EngineeringList} from "../../common/const/engineering";
+import BillsTemplateModel from "../../templates/models/bills_template_model";
 
 class CompilationController extends BaseController {
 
@@ -116,6 +117,7 @@ class CompilationController extends BaseController {
         let valuationData = {};
         let valuationList = {};
         let gljList = [];
+        let billsTemplateData = [];
         try {
             let compilationModel = new CompilationModel();
             compilationList = await compilationModel.getCompilationList();
@@ -138,6 +140,10 @@ class CompilationController extends BaseController {
                 throw '不存在数据';
             }
 
+            // 获取清单模板数据
+            let billsTemplateModel = new BillsTemplateModel();
+            billsTemplateData = await billsTemplateModel.getTemplateData(valuationId);
+
         } catch (error) {
             console.log(error);
         }
@@ -148,6 +154,7 @@ class CompilationController extends BaseController {
             rationList: JSON.stringify(rationList),
             gljList: JSON.stringify(gljList),
             mainTreeCol: JSON.stringify(valuationData.main_tree_col),
+            billsTemplateData: JSON.stringify(billsTemplateData),
             engineeringList: EngineeringList,
             selectedCompilation: selectedCompilation,
             valuationData: valuationData,

+ 10 - 0
public/web/tree_sheet/tree_sheet_helper.js

@@ -3,6 +3,16 @@
  */
 
 var TREE_SHEET_HELPER = {
+    createNewSpread: function (obj) {
+        var spread = new GC.Spread.Sheets.Workbook(obj, {sheetCount: 1});
+        spread.options.tabStripVisible = false;
+        spread.options.scrollbarMaxAlign = true;
+        spread.options.cutCopyIndicatorVisible = false;
+        spread.options.allowCopyPasteExcelStyle = false;
+        spread.options.allowUserDragDrop = false;
+        spread.getActiveSheet().setRowCount(3);
+        return spread;
+    },
     getSheetCellStyle: function (setting) {
         var style = new GC.Spread.Sheets.Style();
         style.locked = setting.readOnly ? true : false;

+ 28 - 4
web/users/js/col_setting.js

@@ -88,6 +88,19 @@ let ColSettingObj = {
         this.initSheet(colEditSpread.getActiveSheet(), setting);
         this.setColCount(this.colSetting.cols.length);
         this.setHeaderRowCount(this.colSetting.headRows);
+        // headerHeight
+        for (let iRow in this.colSetting.headRowHeight) {
+            colEditSpread.getActiveSheet().setRowHeight(iRow, this.colSetting.headRowHeight[iRow], GC.Spread.Sheets.SheetArea.viewport);
+        }
+
+        if (setting.treeCol >= 0) {
+            $('#is-tree')[0].checked = true;
+            $('#tree-col-div').removeClass('hidden');
+            $('#tree-col').val(setting.treeCol);
+        } else {
+            $('#is-tree')[0].checked = false;
+            $('#tree-col-div').addClass('hidden');
+        }
 
         if (setting.cols) {
             let sheet = colEditSpread.getActiveSheet(), iRow;
@@ -119,7 +132,7 @@ let ColSettingObj = {
                 cell.cellType(this.cellType.readOnly).value(col.readOnly).hAlign(GC.Spread.Sheets.HorizontalAlign.right);
             }
         }
-        let cell = info.sheet.getCell(0, 0, GC.Spread.Sheets.SheetArea.viewport);
+        let cell = colEditSpread.getActiveSheet().getCell(0, 0, GC.Spread.Sheets.SheetArea.viewport);
         if (cell) {
             $('#font').val(cell.font());
         }
@@ -174,8 +187,8 @@ let ColSettingObj = {
         let setting = {}, sheet = colEditSpread.getActiveSheet();
         setting.emptyRows = parseInt($('#empty-rows').val());
         setting.headRows = parseInt($('#header-row-count').val());
-        if ($('#is-tree').checked) {
-            setting.treeCol = parseInt($('#treeCol').val());
+        if ($('#is-tree')[0].checked) {
+            setting.treeCol = parseInt($('#tree-col').val());
         }
         setting.headRowHeight = [];
         for (let iRow = 0; iRow < setting.headRows; iRow++) {
@@ -245,6 +258,13 @@ $('#header-row-count').change(function () {
     ColSettingObj.setHeaderRowCount(parseInt($(this).val()));
     ColSettingObj.colSetting.headRows = parseInt($(this).val());
 });
+$('#is-tree').click(function () {
+    if (this.checked) {
+        $('#tree-col-div').removeClass('hidden');
+    } else {
+        $('#tree-col-div').addClass('hidden');
+    }
+});
 $('#merge').click(function () {
     let sheet = colEditSpread.getActiveSheet();
     let sel = sheet.getSelections();
@@ -279,7 +299,11 @@ $('#save-col-setting').click(function () {
     mainTreeCol = JSON.stringify(ColSettingObj.colSetting);
     $('input:hidden[name="main_tree_col"]').val(mainTreeCol);
     $('#set-column').modal('hide');
-    SheetDataHelper.loadSheetHeader(ColSettingObj.colSetting, colSpread.getActiveSheet());
+
+    let billsTemplateTree = idTree.createNew({id: 'ID', pid: 'ParentID', nid: 'NextSiblingID', rootId: -1});
+    billsTemplateTree.loadDatas(JSON.parse(billsTemplateData));
+    TREE_SHEET_HELPER.loadSheetHeader(ColSettingObj.colSetting, colSpread.getActiveSheet());
+    TREE_SHEET_HELPER.showTreeData(ColSettingObj.colSetting, colSpread.getActiveSheet(), billsTemplateTree);
 });
 
 $('#h-left').click(function () {

+ 5 - 2
web/users/js/compilation.js

@@ -250,8 +250,11 @@ function initCompilation() {
         return false;
     }
     // 初始化 造价书列设置
-    colSpread = SheetDataHelper.createNewSpread($('#main-tree-col')[0]);
-    SheetDataHelper.loadSheetHeader(JSON.parse(mainTreeCol), colSpread.getActiveSheet());
+    colSpread = TREE_SHEET_HELPER.createNewSpread($('#main-tree-col')[0]);
+    let billsTemplateTree = idTree.createNew({id: 'ID', pid: 'ParentID', nid: 'NextSiblingID', rootId: -1});
+    billsTemplateTree.loadDatas(JSON.parse(billsTemplateData));
+    TREE_SHEET_HELPER.loadSheetHeader(JSON.parse(mainTreeCol), colSpread.getActiveSheet());
+    TREE_SHEET_HELPER.showTreeData(JSON.parse(mainTreeCol), colSpread.getActiveSheet(), billsTemplateTree);
 
     // 标准清单
     let html = '';

+ 7 - 2
web/users/views/compilation/add.html

@@ -102,7 +102,10 @@
                         </div>
                     </div>
                     <div class="col-md-8">
-                        <legend>造价书列设置<a href="javascript:void(0)" data-toggle="modal" data-target="#set-column" class="btn btn-primary btn-sm pull-right">设置</a></legend>
+                        <legend>清单模板 / 造价书列
+                            <a href="javascript:void(0)" data-toggle="modal" data-target="#set-column" class="btn btn-primary btn-sm pull-right">列设置</a>
+                            <a href="/template/bills/<%= valuationId %>" data-toggle="modal" data-target="" class="btn btn-primary btn-sm pull-right" style="margin-right:5px">模板设置</a>
+                        </legend>
                         <input type="hidden" name="main_tree_col" value="<%= mainTreeCol %>">
                         <div id="main-tree-col">
                         </div>
@@ -119,9 +122,11 @@
     let rationList = '<%- rationList %>';
     let gljList = '<%- gljList %>';
     let mainTreeCol = '<%- mainTreeCol %>';
+    let billsTemplateData = '<%- billsTemplateData %>';
     let colSpread = null;
     let colEditSpread = null;
 </script>
-<script type="text/javascript" src="/public/web/sheet/sheet_data_helper.js"></script>
+<script type="text/javascript" src="/public/web/id_tree.js"></script>
+<script type="text/javascript" src="/public/web/tree_sheet/tree_sheet_helper.js"></script>
 <script type="text/javascript" src="/web/users/js/compilation.js"></script>
 <%include ../compilation/modal.html %>

+ 10 - 2
web/users/views/compilation/modal.html

@@ -100,13 +100,21 @@
                             <input type="number" class="form-control input-sm" value="1" id="header-row-count">
                         </div>
                     </div>
-                    <div class="col-md-3">
+                </div>
+                <div class="row">
+                    <div class="col-md-2">
                         <div class="checkbox">
                             <label>
-                                <input type="checkbox" id="is-tree"> 是否包含树结构
+                                <input type="checkbox" id="is-tree" value> 是否包含树结构
                             </label>
                         </div>
                     </div>
+                    <div class="col-md-3" id="tree-col-div">
+                        <div class="input-group">
+                            <span class="input-group-addon" id="basic-addon1">树结构绘制列</span>
+                            <input type="number" class="form-control input-sm" value="1" id="tree-col">
+                        </div>
+                    </div>
                 </div>
                 <div class="">
                     <div class="btn-toolbar" role="toolbar">