浏览代码

调差清单设置 no.3 up

laiguoran 3 年之前
父节点
当前提交
2d2ab19932
共有 4 个文件被更改,包括 36 次插入22 次删除
  1. 4 1
      app/controller/material_controller.js
  2. 1 4
      app/extend/helper.js
  3. 25 16
      app/public/js/material_checklist.js
  4. 6 1
      app/service/material_checklist.js

+ 4 - 1
app/controller/material_controller.js

@@ -446,7 +446,10 @@ module.exports = app => {
                 responseData.data.curLedgerData = await ctx.service.stageBills.getStagesData(ctx.tender.id, ctx.material.stage_id);
                 responseData.data.curPosData = await ctx.service.stagePos.getStagesData(ctx.tender.id, ctx.material.stage_id, 'list');
                 // 获取清单设置已选清单
-                responseData.data.materialChecklistData = await ctx.service.materialChecklist.getAllDataByCondition({ where: { tid: ctx.tender.id }, orders: [['order', 'asc']] });
+                const materialChecklistData = await ctx.service.materialChecklist.getAllDataByCondition({ where: { tid: ctx.tender.id } });
+                responseData.data.materialChecklistData = materialChecklistData.sort(function(a, b) {
+                    return ctx.helper.compareCode(a.b_code, b.b_code);
+                });
                 ctx.body = responseData;
             } catch (err) {
                 this.log(err);

+ 1 - 4
app/extend/helper.js

@@ -431,7 +431,7 @@ module.exports = {
         } else if (!str2) {
             return -1;
         }
-
+        const numReg = /^[0-9]+$/;
         function compareSubCode(code1, code2) {
             if (numReg.test(code1)) {
                 if (numReg.test(code2)) {
@@ -444,10 +444,7 @@ module.exports = {
                 return 1;
             }
             return code1 === code2 ? 0 : (code1 < code2 ? -1 : 1); // code1.localeCompare(code2);
-
-
         }
-        const numReg = /^[0-9]+$/;
         const aCodes = str1.split(symbol),
             bCodes = str2.split(symbol);
         for (let i = 0, iLength = Math.min(aCodes.length, bCodes.length); i < iLength; ++i) {

+ 25 - 16
app/public/js/material_checklist.js

@@ -183,7 +183,8 @@ $(document).ready(() => {
         SpreadJsObj.loadSheetData(ledgerSpread.getActiveSheet(), SpreadJsObj.DataType.Data, materialChecklistData);
         SpreadJsObj.resetTopAndSelect(ledgerSpread.getActiveSheet());
         if (materialChecklistData.length > 0) {
-            loadMaterialData(materialChecklistData[0].order, 0);
+            const index = _.findIndex(gclGatherData, { b_code: materialChecklistData[0].b_code, name: materialChecklistData[0].name, unit: materialChecklistData[0].unit, unit_price: materialChecklistData[0].unit_price });
+            loadMaterialData(index, 0);
         } else {
             loadMaterialData(-1, 0);
         }
@@ -272,16 +273,15 @@ $(document).ready(() => {
         const pushData = [];
         for (const sc of select_checklist) {
             const order = parseInt($(sc).val());
-            const checklistInfo = _.find(materialChecklistData, { order: order });
+            const checklistInfo = _.find(materialChecklistData, { b_code: gclGatherData[order].b_code, name: gclGatherData[order].name, unit: gclGatherData[order].unit, unit_price: gclGatherData[order].unit_price });
             if (!checklistInfo) {
                 pushData.push({
-                    order: order,
                     b_code: gclGatherData[order].b_code,
                     name: gclGatherData[order].name,
                     unit: gclGatherData[order].unit,
                     unit_price: gclGatherData[order].unit_price,
-                    quantity: gclGatherData[order].quantity,
-                    total_price: gclGatherData[order].total_price,
+                    quantity: gclGatherData[order].quantity ? gclGatherData[order].quantity : null,
+                    total_price: gclGatherData[order].total_price ? gclGatherData[order].total_price : null,
                     had_bills: 0,
                 })
             }
@@ -290,7 +290,8 @@ $(document).ready(() => {
         const removeData = [];
         for (const nsc of notSelect_checklist) {
             const order = parseInt($(nsc).val());
-            const checklistInfo = _.find(materialChecklistData, { order: order });
+            // const order = parseInt($(nsc).attr('data-index'));
+            const checklistInfo = _.find(materialChecklistData, { b_code: gclGatherData[order].b_code, name: gclGatherData[order].name, unit: gclGatherData[order].unit, unit_price: gclGatherData[order].unit_price });
             if (checklistInfo) {
                removeData.push(checklistInfo.id);
             }
@@ -308,7 +309,8 @@ $(document).ready(() => {
         SpreadJsObj.loadSheetData(ledgerSpread.getActiveSheet(), SpreadJsObj.DataType.Data, newMaterialChecklistData);
         SpreadJsObj.resetTopAndSelect(ledgerSpread.getActiveSheet());
         if (newMaterialChecklistData.length > 0) {
-            loadMaterialData(newMaterialChecklistData[0].order, 0);
+            const index = _.findIndex(gclGatherData, { b_code: newMaterialChecklistData[0].b_code, name: newMaterialChecklistData[0].name, unit: newMaterialChecklistData[0].unit, unit_price: newMaterialChecklistData[0].unit_price });
+            loadMaterialData(index, 0);
         } else {
             loadMaterialData(-1, 0);
         }
@@ -330,7 +332,8 @@ $(document).ready(() => {
         // 获取当前项目节或部位明细id
         const sheet = ledgerSpread.getActiveSheet();
         const select = SpreadJsObj.getSelectObject(sheet);
-        const gcl = gclGatherData[select.order].leafXmjs;
+        const gclIndex = _.findIndex(gclGatherData, { b_code: select.b_code, name: select.name, unit: select.unit, unit_price: select.unit_price });
+        const gcl = gclGatherData[gclIndex].leafXmjs;
         const index = materialChecklistData.indexOf(select);
         const datas = [];
         for (const xmj of gcl) {
@@ -349,7 +352,7 @@ $(document).ready(() => {
         postData(window.location.pathname + '/save', {type: 'adds', checklist: { id: select.id, had_bills: 1 }, postData: {xmjs: datas, mbIds: mb_id}}, function (result) {
             materialListData = result;
             materialChecklistData[index].had_bills = 1;
-            loadMaterialData(select.order, 0);
+            loadMaterialData(gclIndex, 0);
             // SpreadJsObj.reLoadRowData(ledgerSpread.getActiveSheet(), index);
             $('#addgl').modal('hide');
         });
@@ -364,7 +367,8 @@ $(document).ready(() => {
                 const sheet = ledgerSpread.getActiveSheet();
                 const select = SpreadJsObj.getSelectObject(sheet);
                 const index = materialChecklistData.indexOf(select);
-                const gcl = gclGatherData[select.order].leafXmjs;
+                const gclIndex = _.findIndex(gclGatherData, { b_code: select.b_code, name: select.name, unit: select.unit, unit_price: select.unit_price });
+                const gcl = gclGatherData[gclIndex].leafXmjs;
                 const datas = [];
                 for (const xmj of gcl) {
                     const data = {
@@ -389,7 +393,7 @@ $(document).ready(() => {
                 postData(window.location.pathname + '/save', {type: 'dels', checklist, postData: { xmjs: datas, mb_id: materialSelect.mb_id }}, function (result) {
                     materialListData = result;
                     if (checklist) materialChecklistData[index].had_bills = checklist.had_bills;
-                    loadMaterialData(select.order, 0);
+                    loadMaterialData(gclIndex, 0);
                     // SpreadJsObj.reLoadRowData(ledgerSpread.getActiveSheet(), index);
                 });
             },
@@ -445,7 +449,8 @@ $(document).ready(() => {
                     // 更新至服务器
                     const ledgerSheet = ledgerSpread.getActiveSheet();
                     const ledgerSelect = SpreadJsObj.getSelectObject(ledgerSheet);
-                    const gcl = gclGatherData[ledgerSelect.order].leafXmjs;
+                    const gclIndex = _.findIndex(gclGatherData, { b_code: ledgerSelect.b_code, name: ledgerSelect.name, unit: ledgerSelect.unit, unit_price: ledgerSelect.unit_price });
+                    const gcl = gclGatherData[gclIndex].leafXmjs;
                     const datas = [];
                     for (const xmj of gcl) {
                         const data = {
@@ -458,7 +463,7 @@ $(document).ready(() => {
                     console.log(exprQuantity, datas, select.mb_id);
                     postData(window.location.pathname + '/save', { type:'updates', updateData: { xmjs: datas, expr: exprQuantity.expr, quantity: exprQuantity.quantity, mb_id: select.mb_id } }, function (result) {
                         materialListData = result;
-                        loadMaterialData(ledgerSelect.order, 0);
+                        loadMaterialData(gclIndex, 0);
                         materialSpread.getActiveSheet().setSelection(info.row + 1, info.col, 1, 1);
                     }, function () {
                         SpreadJsObj.reLoadRowData(info.sheet, info.row);
@@ -541,7 +546,8 @@ $(document).ready(() => {
                 }
                 const ledgerSheet = ledgerSpread.getActiveSheet();
                 const ledgerSelect = SpreadJsObj.getSelectObject(ledgerSheet);
-                const gcl = gclGatherData[ledgerSelect.order].leafXmjs;
+                const gclIndex = _.findIndex(gclGatherData, { b_code: ledgerSelect.b_code, name: ledgerSelect.name, unit: ledgerSelect.unit, unit_price: ledgerSelect.unit_price });
+                const gcl = gclGatherData[gclIndex].leafXmjs;
                 const datas = [];
                 for (const xmj of gcl) {
                     const data2 = {
@@ -555,7 +561,7 @@ $(document).ready(() => {
                 // 更新至服务器
                 postData(window.location.pathname + '/save', { type:'pastes', updateData: { xmjs: datas, pasteData: data } }, function (result) {
                     materialListData = result;
-                    loadMaterialData(ledgerSelect.order, 0);
+                    loadMaterialData(gclIndex, 0);
                     materialSpread.getActiveSheet().setSelection(info.cellRange.row, info.cellRange.col, info.cellRange.rowCount, info.cellRange.colCount);
                 }, function () {
                     SpreadJsObj.reLoadRowData(info.sheet, info.row);
@@ -742,7 +748,10 @@ $(document).ready(() => {
         if (info.oldSelections !== undefined) {
             const iOldRow = info.oldSelections[0].row, iNewRow = info.newSelections[0].row;
             if (iNewRow !== iOldRow) {
-                loadMaterialData(materialChecklistData[iNewRow].order, 0);
+                const sheet = ledgerSpread.getActiveSheet();
+                const select = SpreadJsObj.getSelectObject(sheet);
+                const index = _.findIndex(gclGatherData, { b_code: select.b_code, name: select.name, unit: select.unit, unit_price: select.unit_price });
+                loadMaterialData(index, 0);
             }
         }
     });

+ 6 - 1
app/service/material_checklist.js

@@ -40,8 +40,13 @@ module.exports = app => {
                     }
                 }
                 await transaction.commit();
-                return await this.getAllDataByCondition({ where: { tid: this.ctx.tender.id }, orders: [['order', 'asc']] });
+                const materialChecklistData = await this.getAllDataByCondition({ where: { tid: this.ctx.tender.id } });
+                const self = this;
+                return await materialChecklistData.sort(function(a, b) {
+                    return self.ctx.helper.compareCode(a.b_code, b.b_code);
+                });
             } catch (err) {
+                console.log(err);
                 await transaction.rollback();
                 throw err;
             }