Browse Source

标段属性,章节设置

MaiXinRong 6 năm trước cách đây
mục cha
commit
0f1c534497

+ 16 - 1
app/const/tender_info.js

@@ -8,7 +8,7 @@
  * @version
  */
 
-const parseInfo = ['deal_info', 'construction_unit', 'tech_param', 'decimal', 'precision', 'deal_param', 'display'];
+const parseInfo = ['deal_info', 'construction_unit', 'tech_param', 'decimal', 'precision', 'deal_param', 'display', 'chapter'];
 const defaultInfo = {
     // 合同信息
     deal_info: {
@@ -91,6 +91,21 @@ const defaultInfo = {
             dgnQty: false,
         },
     },
+    chapter: [
+        {code: '100', name: '总则'},
+        {code: '200', name: '路基'},
+        {code: '300', name: '路面'},
+        {code: '400', name: '桥梁、涵洞'},
+        {code: '500', name: '隧道'},
+        {code: '600', name: '安全设施及预埋管线'},
+        {code: '700', name: '绿化及环境保护'},
+        {code: '800', name: '公路沿线管理用房设施'},
+        {code: '900', name: '监控系统'},
+        {code: '1000', name: '收费系统'},
+        {code: '1100', name: '通信系统'},
+        {code: '1200', name: '消防系统'},
+        {code: '1300', name: '供配电及照明系统'},
+    ]
 };
 
 module.exports = {

+ 1 - 0
app/controller/tender_controller.js

@@ -201,6 +201,7 @@ module.exports = app => {
                     cooperation: ctx.session.sessionUser.cooperation,
                     lastStage,
                     audit: auditConst,
+                    jsFiles: this.app.jsFiles.common.concat(this.app.jsFiles.tender.info),
                 };
                 await this.layout('tender/detail.ejs', renderData);
             } catch (error) {

+ 4 - 1
app/public/js/spreadjs_rela/spreadjs_zh.js

@@ -658,7 +658,10 @@ const SpreadJsObj = {
             sheet.zh_setting.cols.forEach(function (col, i) {
                 if (fields.indexOf(col.field) !== -1) {
                     col.readOnly = readonly;
-                    sheet.getRange(-1, i, -1, 1).locked(col.readOnly || sheet.zh_setting.readOnly || false);
+                    for (let iRow = 0; iRow < sheet.getRowCount(); iRow++) {
+                        sheet.getCell(iRow, i).locked(col.readOnly || sheet.zh_setting.readOnly || false);
+                    }
+                    //sheet.getRange(-1, i, -1, 1, GC.Spread.Sheets.SheetArea.viewport).locked(col.readOnly || sheet.zh_setting.readOnly || false);
                 }
             });
         }

+ 84 - 11
app/public/js/tender.js

@@ -109,17 +109,6 @@ function setReadOnly(obj, readOnly) {
         $('input[type=checkbox]', obj).removeAttr('disabled');
     }
 }
-// 标段属性
-function loadTenderProperty() {
-    // 加载属性
-    loadCommonProperty();
-    loadCalculateProperty();
-    loadPrecisionProperty();
-    loadDealProperty();
-    loadDisplayProperty();
-    // 设置只读
-    setReadOnly('#shuxing', true);
-}
 // 获取当前合同支付应该使用的小数位数
 function getDealTpDecimal() {
     const spec = $('#decimal-pay')[0].checked;
@@ -181,6 +170,59 @@ function checkNumberValid(obj) {
 }
 
 $(document).ready(function() {
+    // 章节设置
+    const chapterObj = (function () {
+        const spreadSetting = {
+            cols: [
+                {title: '章节', colSpan: '1', rowSpan: '1', field: 'code', hAlign: 0, width: 100, formatter: '@', readOnly: true},
+                {title: '名称', colSpan: '1', rowSpan: '1', field: 'name', hAlign: 0, width: 230, formatter: '@', readOnly: true},
+            ],
+            emptyRows: 0,
+            headRows: 1,
+            headRowHeight: [40],
+            defaultRowHeight: 21,
+        };
+        const spread = SpreadJsObj.createNewSpread($('#chapter-spread')[0]);
+        spread.options.showVerticalScrollbar = false;
+        spread.options.showHorizontalScrollbar = false;
+        SpreadJsObj.initSheet(spread.getActiveSheet(), spreadSetting);
+
+        function loadChapterProperty() {
+            SpreadJsObj.loadSheetData(spread.getActiveSheet(), SpreadJsObj.DataType.Data, property.chapter);
+        }
+
+        function setReadOnly(readOnly) {
+            SpreadJsObj.resetFieldReadOnly(spread.getActiveSheet(), 'name', readOnly);
+        }
+
+        function getNewChapterData() {
+            const result = [];
+            const sheet = spread.getActiveSheet();
+            for (let iRow = 0; iRow < sheet.getRowCount(); iRow++) {
+                const data = {};
+                for (let iCol = 0; iCol < sheet.getColumnCount(); iCol++) {
+                    const col = spreadSetting.cols[iCol];
+                    data[col.field] = sheet.getText(iRow, iCol);
+                }
+                result.push(data);
+            }
+            return result;
+        }
+
+        return { loadChapterProperty, setReadOnly, getNewChapterData, }
+    })();
+    // 标段属性
+    function loadTenderProperty() {
+        // 加载属性
+        loadCommonProperty();
+        loadCalculateProperty();
+        loadPrecisionProperty();
+        loadDealProperty();
+        loadDisplayProperty();
+        chapterObj.loadChapterProperty();
+        // 设置只读
+        setReadOnly('#shuxing', true);
+    }
     loadTenderProperty();
 
     /**
@@ -400,6 +442,37 @@ $(document).ready(function() {
         });
     });
 
+    /**
+     * 章节设置
+     */
+    // 编辑
+    $('#edit-6').click(() => {
+        chapterObj.setReadOnly(false);
+        $('#post-6').parent().show();
+        $('#edit-6').parent().hide();
+    });
+    // 取消
+    $('#cancel-6').click(() => {
+        chapterObj.loadChapterProperty();
+        chapterObj.setReadOnly(true);
+        $('#post-6').parent().hide();
+        $('#edit-6').parent().show();
+    });
+    // 提交
+    $('#post-6').click(() => {
+        const prop = {
+            chapter: chapterObj.getNewChapterData(),
+        };
+        const tenderId = window.location.pathname.split('/')[2];
+        console.log(prop);
+        postData('/tender/' + tenderId + '/save', prop, function (data) {
+            chapterObj.setReadOnly(true);
+            property.chapter = data.chapter;
+            $('#post-6').parent().hide();
+            $('#edit-6').parent().show();
+        });
+    });
+
     //标段类型选择
     $('#tender_type_select').change(function () {
         const type = $(this).val() != 0 ? '/?type='+$(this).val() : '';

+ 18 - 2
app/view/tender/detail.ejs

@@ -107,6 +107,7 @@
                                 <a class="nav-link"  data-toggle="pill" href="#v-pills-3" role="tab">清单精度</a>
                                 <a class="nav-link"  data-toggle="pill" href="#v-pills-4" role="tab">合同参数</a>
                                 <a class="nav-link"  data-toggle="pill" href="#v-pills-5" role="tab">显示设置</a>
+                                <a class="nav-link"  data-toggle="pill" href="#v-pills-6" role="tab">章节设置</a>
                             </div>
                         </div>
                         <div class="col">
@@ -648,6 +649,23 @@
                                         </div>
                                     </div>
                                 </div>
+                                <!--章节设置-->
+                                <div class="tab-pane fade" id="v-pills-6" role="tabpanel" >
+                                    <!--操作-->
+                                    <div class="d-flex justify-content-end mt-3">
+                                        <span>
+                                            <button type="button" class="btn btn-sm btn-outline-primary" id="edit-6">编辑</button>
+                                        </span>
+                                        <span style="display: none">
+                                            <button type="button" class="btn btn-sm btn-outline-success" id="post-6"><i class="fa fa-check"></i> 提交</button>
+                                            <button type="button" class="btn btn-sm btn-outline-danger" id="cancel-6"><i class="fa fa-close"></i>  取消</button>
+                                        </span>
+                                    </div>
+                                    <legend class="mt-3">章节设置</legend>
+                                    <!--默认显示-->
+                                    <div class="form-group" id="chapter-spread" style="height: 380px; width: 600px;">
+                                    </div>
+                                </div>
                             </div>
                         </div>
                     </div>
@@ -656,7 +674,6 @@
         </div>
     </div>
 </div>
-<script src=/public/js/echarts/echarts.min.js></script>
 <script type="text/javascript">
     //4 标段期数计量进度//
     var myChart = echarts.init(document.getElementById('chartContainer4'));
@@ -831,4 +848,3 @@
 <script>
     let property = JSON.parse('<%- JSON.stringify(tenderInfo) %>');
 </script>
-<script type="text/javascript" src="/public/js/tender.js"></script>

+ 14 - 1
config/web.js

@@ -56,7 +56,9 @@ const JsFiles = {
                     "/public/js/ztree/jquery.ztree.core.js",
                     "/public/js/ztree/jquery.ztree.exedit.js",
                 ],
-                mergeFiles: ["/public/js/tender_list.js"],
+                mergeFiles: [
+                    "/public/js/tender_list.js"
+                ],
                 mergeFile: 'tender_list',
             },
             progress: {
@@ -75,6 +77,17 @@ const JsFiles = {
                 ],
                 mergeFiles: ["/public/js/tender_list_manage.js"],
                 mergeFile: 'tender_list_manage',
+            },
+            info: {
+                files: [
+                    "/public/js/echarts/echarts.min.js",
+                    "/public/js/spreadjs/sheets/gc.spread.sheets.all.10.0.1.min.js",
+                ],
+                mergeFiles: [
+                    "/public/js/spreadjs_rela/spreadjs_zh.js",
+                    "/public/js/tender.js",
+                ],
+                mergeFile: 'tender',
             }
         },
         ledger: {