浏览代码

1. 台账分解,加载标段列表
2. 台账分解,标段切换

MaiXinRong 7 年之前
父节点
当前提交
48f82f58c7

+ 1 - 0
app/base/base_controller.js

@@ -60,6 +60,7 @@ class BaseController extends Controller {
             message: JSON.stringify(message),
             dropDownMenu: data.dropDownMenu === undefined ? [] : data.dropDownMenu,
             breadCrumb: data.breadCrumb === undefined ? '' : data.breadCrumb,
+            tenderList: data.tenderList === undefined ? [] : data.tenderList
         };
         await this.ctx.render('layout/layout.ejs', renderData);
     }

+ 54 - 13
app/controller/ledger_controller.js

@@ -32,22 +32,38 @@ module.exports = app => {
          * @return {void}
          */
         async explode(ctx) {
-            let tenderId = ctx.session.sessionUser.tenderId;
-            if (!tenderId) {
-                // 根据标段列表获取默认tenderId
+            if (ctx.request.query.tenderId) {
+                const tenderId = parseInt(ctx.request.query.tenderId);
+                const tender = await ctx.service.tender.getDataById(tenderId);
+                ctx.session.sessionUser.tenderId = tender.id;
+                ctx.session.sessionUser.tenderName = tender.name;
+
+                ctx.redirect('/ledger/explode');
+            } else {
+                let tenderId = ctx.session.sessionUser.tenderId;
                 const tenderList = await ctx.service.tender.getList();
-                if (tenderList && tenderList.length > 0) {
-                    tenderId = tenderList[0].id;
-                    ctx.session.sessionUser.tenderId = tenderId;
-                } else {
-                    throw '项目无标段数据';
+                for (const tender of tenderList) {
+                    tender.url = ctx.menuList.ledger.children.explode.url + '?tenderId=' + tender.id;
                 }
+
+                if (!tenderId) {
+                    // 根据标段列表获取默认tenderId
+                    if (tenderList && tenderList.length > 0) {
+                        tenderId = tenderList[0].id;
+                        ctx.session.sessionUser.tenderId = tenderId;
+                        ctx.session.sessionUser.tenderName = tenderList[0].name;
+                    } else {
+                        throw '项目无标段数据';
+                    }
+                }
+
+                const ledgerData = await ctx.service.ledger.getDataByTenderId(tenderId);
+                const renderData = {
+                    ledger: JSON.stringify(ledgerData),
+                    tenderList: tenderList
+                };
+                await this.layout('ledger/explode.ejs', renderData);
             }
-            const ledgerData = await ctx.service.ledger.getDataByTenderId(tenderId);
-            const renderData = {
-                ledger: JSON.stringify(ledgerData)
-            };
-            await this.layout('ledger/explode.ejs', renderData);
         }
 
         /**
@@ -132,6 +148,31 @@ module.exports = app => {
             ctx.body = responseData;
         };
 
+        async updateInfo(ctx) {
+            const responseData = {
+                err: 0,
+                msg: '',
+                data: []
+            };
+            try {
+                const tenderId = ctx.session.sessionUser.tenderId;
+                if (!tenderId) {
+                    throw '当前未打开标段';
+                }
+                const data = JSON.parse(ctx.request.body.data);
+                if (data instanceof Array) {
+                    responseData.data = await ctx.service.ledger.updateInfos(tenderId, data);
+                } else {
+                    responseData.data = await ctx.service.ledger.updateInfo(tenderId, data);
+                }
+            } catch (err) {
+                responseData.err = 1;
+                responseData.msg = err;
+            }
+
+            ctx.body = responseData;
+        };
+
         /**
          * 台账变更页面
          *

+ 7 - 3
app/public/js/spreadjs_rela/spreadjs_zh.js

@@ -187,9 +187,11 @@ const SpreadJsObj = {
                 sheet.zh_setting.cols.forEach(function (col, j) {
                     const cell = sheet.getCell(i, j);
                     if (col.field !== '' && data[col.field]) {
-                        cell.value(data[col.field]);
+                        cell.value(data[col.field]).locked(col.readOnly || false);
+                    } else {
+                        cell.locked(col.readOnly || false);
                     }
-                })
+                });
             });
             // 设置列单元格格式
             sheet.zh_setting.cols.forEach(function (col, j) {
@@ -226,7 +228,9 @@ const SpreadJsObj = {
                 sheet.zh_setting.cols.forEach(function (col, j) {
                     const cell = sheet.getCell(i, j);
                     if (col.field !== '' && data[col.field]) {
-                        cell.value(data[col.field]);
+                        cell.value(data[col.field]).locked(col.readOnly || false);
+                    } else {
+                        cell.locked(col.readOnly || false);
                     }
                 });
             };

+ 7 - 4
app/view/layout/tender_list.ejs

@@ -1,13 +1,16 @@
 <div class="poj-name">
-    <span class="name">WWUJ-1</span>
+    <span class="name">
+        <%- ctx.session.sessionUser.tenderName %>
+    </span>
     <div class="btn-group">
         <a class=" btn" data-toggle="dropdown">
             <span class="fa fa-caret-down" data-toggle="tooltip" data-placement="bottom" title="切换标段"></span>
         </a>
         <div class="dropdown-menu">
-            <a href="#" class="dropdown-item">WWUJ-2</a>
-            <a href="#" class="dropdown-item">WWUJ-3</a>
-            <a href="#" class="dropdown-item">WWUJ-4</a>
+            <% for (const tender of tenderList) { %>
+            <% if (tender.id === ctx.session.sessionUser.tenderId) { continue } %>
+            <a href="<%= tender.url %>" class="dropdown-item"><%= tender.name %></a>
+            <% } %>
         </div>
     </div>
 </div>

+ 6 - 0
config/config.default.js

@@ -54,5 +54,11 @@ module.exports = appInfo => {
         authKey: 'fb5ef483e44b9556512a9febef376051',
     };
 
+    // 前端验证
+    config.jsValidator = {
+        client: {},
+        app: true,
+    };
+
     return config;
 };

+ 1 - 0
config/config.local.js

@@ -48,6 +48,7 @@ module.exports = appInfo => {
         key: '9b67989994f9def437ea68bb495f0162',
     };
 
+    // 前端验证
     config.jsValidator = {
         client: {},
         app: true,

+ 6 - 0
config/config.qa.js

@@ -48,5 +48,11 @@ module.exports = appInfo => {
         key: '9b67989994f9def437ea68bb495f0162',
     };
 
+    // 前端验证
+    config.jsValidator = {
+        client: {},
+        app: true,
+    };
+
     return config;
 };