Procházet zdrojové kódy

期,计量台账,允许修改备注

MaiXinRong před 5 roky
rodič
revize
f74cd738e7

+ 3 - 3
app/const/spread.js

@@ -124,7 +124,7 @@ const stageTz = {
             {title: '本期批注', colSpan: '1', rowSpan: '2', field: 'postil', hAlign: 0, width: 100, formatter: '@', cellType: 'autoTip'},
             {title: '图(册)号', colSpan: '1', rowSpan: '2', field: 'drawing_code', hAlign: 0, width: 80, formatter: '@', readOnly: true},
             //{title: '累计完成率(%)', colSpan: '1', rowSpan: '2', field: 'percent', hAlign: 0, width: 100, readOnly: true, type: 'Number'},
-            {title: '备注', colSpan: '1', rowSpan: '2', field: 'memo', hAlign: 0, width: 100, formatter: '@', cellType: 'ellipsisAutoTip', readOnly: true},
+            {title: '备注', colSpan: '1', rowSpan: '2', field: 'memo', hAlign: 0, width: 100, formatter: '@', cellType: 'ellipsisAutoTip'},
         ],
         emptyRows: 0,
         headRows: 2,
@@ -183,7 +183,7 @@ const stageCl = {
             {title: '本期批注', colSpan: '1', rowSpan: '2', field: 'postil', hAlign: 0, width: 100, formatter: '@', cellType: 'autoTip'},
             {title: '图(册)号', colSpan: '1', rowSpan: '2', field: 'drawing_code', hAlign: 0, width: 80, formatter: '@', readOnly: true},
             //{title: '累计完成率(%)', colSpan: '1', rowSpan: '2', field: 'percent', hAlign: 0, width: 100, readOnly: true, type: 'Number'},
-            {title: '备注', colSpan: '1', rowSpan: '2', field: 'memo', hAlign: 0, width: 100, formatter: '@', cellType: 'ellipsisAutoTip', readOnly: true},
+            {title: '备注', colSpan: '1', rowSpan: '2', field: 'memo', hAlign: 0, width: 100, formatter: '@', cellType: 'ellipsisAutoTip'},
         ],
         emptyRows: 0,
         headRows: 2,
@@ -245,7 +245,7 @@ const stageNoCl = {
             {title: '经济指标',  colSpan: '1', rowSpan: '2', field: 'final_dgn_price', hAlign: 2, width: 60, readOnly: true, type: 'Number'},
             {title: '本期批注', colSpan: '1', rowSpan: '2', field: 'postil', hAlign: 0, width: 100, formatter: '@', cellType: 'autoTip'},
             {title: '图(册)号', colSpan: '1', rowSpan: '2', field: 'drawing_code', hAlign: 0, width: 80, formatter: '@', readOnly: true},
-            {title: '备注', colSpan: '1', rowSpan: '2', field: 'memo', hAlign: 0, width: 100, formatter: '@', cellType: 'ellipsisAutoTip', readOnly: true},
+            {title: '备注', colSpan: '1', rowSpan: '2', field: 'memo', hAlign: 0, width: 100, formatter: '@', cellType: 'ellipsisAutoTip'},
         ],
         emptyRows: 0,
         headRows: 2,

+ 5 - 0
app/controller/stage_controller.js

@@ -247,6 +247,11 @@ module.exports = app => {
                 if (data.pos) {
                     responseData.data = await ctx.service.stagePos.updateStageData(data.pos);
                 } else if (data.bills) {
+                    if (data.bills.main) {
+                        const updateDatas = data.bills.main instanceof Array ? data.bills.main : [data.bills.main];
+                        const result = await ctx.app.mysql.updateRows(ctx.service.ledger.tableName, updateDatas);
+                        responseData.data.bills = await ctx.service.ledger.getDataByIds(this.ctx.helper._.map(updateDatas, 'id'));
+                    }
                     if (data.bills.dgn) {
                         responseData.data.dgn = await ctx.service.stageBillsDgn.saveDgnData(data.bills.dgn);
                     }

+ 31 - 13
app/public/js/stage.js

@@ -561,7 +561,12 @@ $(document).ready(() => {
                     }
                 }
 
-                if (col.field.indexOf('_dgn_') > 0) {
+                if (col.field === 'memo') {
+                    updateData.main = {
+                        id: node.id
+                    };
+                    updateData.main[col.field] = newValue;
+                } else if (col.field.indexOf('_dgn_') > 0) {
                     updateData.dgn = {
                         id: node.id
                     };
@@ -604,12 +609,12 @@ $(document).ready(() => {
                 if (validCols.length === 0) { return; }
 
                 const sortData = sheet.zh_tree.nodes;
-                const datas = [], dgnDatas = [];
+                const datas = [], dgnDatas = [], mainDatas = [];
                 for (let iRow = sel.row; iRow < sel.row + sel.rowCount; iRow++) {
                     const node = sortData[iRow];
                     if (node) {
-                        const data = { lid: node.id }, dgnData = { id: node.id };
-                        let filter = true, filterDgn = true;
+                        const data = { lid: node.id }, dgnData = { id: node.id }, mainData = { id: node.id };
+                        let filter = true, filterDgn = true, filterMain = true;
                         for (const iCol of validCols) {
                             const colSetting = sheet.zh_setting.cols[iCol];
                             if (sheet.zh_setting.dgnUpFields.indexOf(colSetting.field) !== -1) {
@@ -625,6 +630,9 @@ $(document).ready(() => {
                                     dgnData[colSetting.field] = 0;
                                     filterDgn = false;
                                 }
+                            } else if (colSetting.field === 'memo') {
+                                mainData[colSetting.field] = null;
+                                filterMain = false;
                             } else {
                                 data[colSetting.field] = null;
                                 filter = false;
@@ -632,12 +640,14 @@ $(document).ready(() => {
                         }
                         if (!filter) datas.push(data);
                         if (!filterDgn) dgnDatas.push(dgnData);
+                        if (!filterMain) mainDatas.push(mainData);
                     }
                 }
-                if (datas.length > 0 || dgnDatas.length > 0) {
+                if (datas.length > 0 || dgnDatas.length > 0 || mainDatas.length > 0) {
                     const bills = {};
                     if (datas.length > 0) bills.stage = datas;
                     if (dgnDatas.length > 0) bills.dgn = dgnDatas;
+                    if (mainDatas.length > 0) bills.main = mainDatas;
                     postData(window.location.href + '/update', {bills: bills}, function (result) {
                         const nodes = stageTree.loadPostStageData(result);
                         stageTreeSpreadObj.refreshTreeNodes(slSpread.getActiveSheet(), nodes);
@@ -653,7 +663,8 @@ $(document).ready(() => {
                 const stageField = ['contract_qty', 'contract_tp', 'qc_qty', 'postil'];
                 for (let iCol = range.col; iCol < range.col + range.colCount; iCol++) {
                     const col = info.sheet.zh_setting.cols[iCol];
-                    if ((stageField.indexOf(col.field) === -1) && setting.dgnUpFields.indexOf(col.field) === -1) {
+                    if ((stageField.indexOf(col.field) === -1) && setting.dgnUpFields.indexOf(col.field) === -1
+                        && col.field !== 'memo') {
                         toastr.error('不可修改此数据');
                         info.cancel = true;
                         return;
@@ -664,15 +675,15 @@ $(document).ready(() => {
         clipboardPasted(e, info) {
             if (info.sheet.zh_setting && info.sheet.zh_tree) {
                 const sheet = info.sheet, setting = info.sheet.zh_setting;
-                const filterNodes = [], datas = [], dgnDatas = [];
+                const filterNodes = [], datas = [], dgnDatas = [], mainDatas = [];
                 let bHint = false;
 
                 for (let iRow = 0; iRow < info.cellRange.rowCount; iRow++) {
                     const curRow = iRow + info.cellRange.row;
                     const node = sheet.zh_tree.getItemsByIndex(curRow);
 
-                    const data = {lid: node.id}, dgnData = {id: node.id};
-                    let filter = false, filterDgn = false;
+                    const data = {lid: node.id}, dgnData = {id: node.id}, mainData = {id: node.id};
+                    let filter = true, filterDgn = true, filterMain = true;
                     for (let iCol = 0; iCol < info.cellRange.colCount; iCol++) {
                         const curCol = info.cellRange.col + iCol;
                         const col = info.sheet.zh_setting.cols[curCol];
@@ -690,31 +701,36 @@ $(document).ready(() => {
                             const num = _.toNumber(text);
                             if (num) {
                                 dgnData[col.field] = num;
+                                filterDgn = false;
                             } else {
                                 try {
                                     dgnData[col.field] = math.evaluate(transExpr(text));
+                                    filterDgn = false;
                                 } catch(err) {
                                     if (!bHint) {
                                         toastr.warning('粘贴了非法表达式,已过滤');
                                         bHint = true;
                                     }
-                                    filterDgn = true;
                                 }
                             }
+                        } else if (col.field === 'memo') {
+                            mainData.memo = text;
+                            filterMain = false;
                         } else {
                             if (col.type === 'Number') {
                                 const num = _.toNumber(text);
                                 if (num) {
                                     data[col.field] = num;
+                                    filter = false;
                                 } else {
                                     try {
                                         data[col.field] = math.evaluate(transExpr(text));
+                                        filter = false;
                                     } catch(err) {
                                         if (!bHint) {
                                             toastr.warning('粘贴了非法表达式,已过滤');
                                             bHint = true;
                                         }
-                                        filter = true;
                                     }
                                 }
                             } else {
@@ -722,17 +738,19 @@ $(document).ready(() => {
                             }
                         }
                     }
-                    if (filter && filterDgn) {
+                    if (filter && filterDgn && filterMain) {
                         filterNodes.push(node);
                     } else {
                         if (!filter) datas.push(data);
                         if (!filterDgn) dgnDatas.push(dgnData);
+                        if (!filterMain) mainDatas.push(mainData);
                     }
                 }
-                if (datas.length > 0 || dgnDatas.length > 0) {
+                if (datas.length > 0 || dgnDatas.length > 0 || mainDatas.length > 0) {
                     const updateData = {};
                     if (datas.length > 0) updateData.stage = datas;
                     if (dgnDatas.length > 0) updateData.dgn = dgnDatas;
+                    if (mainDatas.length > 0) updateData.main = mainDatas;
                     postData(window.location.href + '/update', {bills: updateData}, function (data) {
                         const nodes = stageTree.loadPostStageData(data);
                         stageTreeSpreadObj.refreshTreeNodes(slSpread.getActiveSheet(), nodes.concat(filterNodes));

+ 5 - 5
config/config.default.js

@@ -115,7 +115,7 @@ module.exports = appInfo => {
     // 是否压缩替换前端js
     config.min = true;
 
-    config.version = '1.0.0';
+    config.version = '1.0.1';
 
     // 压缩设置
     config.gzip = {
@@ -127,17 +127,17 @@ module.exports = appInfo => {
     config.customLogger = {
         // 操作失败日志
         fail: {
-            file: path.join(appInfo.root, 'logs/fail.log'),
+            file: path.join(appInfo.root, 'logs/' + appInfo.name + '-' + config.version + '/fail.log'),
         },
         // 以下为业务日志
         ledger: {
-            file: path.join(appInfo.root, 'logs/ledger.log'),
+            file: path.join(appInfo.root, 'logs/' + appInfo.name + '-' + config.version + '/ledger.log'),
         },
         stage: {
-            file: path.join(appInfo.root, 'logs/stage.log'),
+            file: path.join(appInfo.root, 'logs/' + appInfo.name + '-' + config.version + 'stage.log'),
         },
         mixed: {
-            file: path.join(appInfo.root, 'logs/mixed.log'),
+            file: path.join(appInfo.root, 'logs/' + appInfo.name + '-' + config.version + 'mixed.log'),
         }
     };