695593266@qq.com 1 тиждень тому
батько
коміт
528e337026

+ 14 - 6
src/views/batchRecord/print/electrodeBatchRecord/finishedProductOriginalRecord.vue

@@ -115,13 +115,21 @@
           </tr>
         </table>
 
-        <div style="margin-top: 30px; display: flex; justify-content: space-between;">
-          <div>检验员:{{ form.inspector }}</div>
-          <div>复核人:{{ form.checker }}</div>
+        <div style="margin-top: 30px; display: flex; justify-content: space-between; padding-right: 120px;">
+          <div style="width: 240px; display: flex; align-items: center;">
+            <span>检验员:</span><span style="flex: 1; min-width: 130px;">{{ form.inspector }}</span>
+          </div>
+          <div style="width: 240px; display: flex; align-items: center;">
+            <span>复核人:</span><span style="flex: 1; min-width: 130px;">{{ form.checker }}</span>
+          </div>
         </div>
-        <div style="display: flex; justify-content: space-between; margin-top: 15px;">
-          <div>日期:</div>
-          <div>日期:</div>
+        <div style="display: flex; justify-content: space-between; margin-top: 15px; padding-right: 120px;">
+          <div style="width: 240px; display: flex; align-items: center;">
+            <span>日期:</span><span style="flex: 1; min-width: 130px;"></span>
+          </div>
+          <div style="width: 240px; display: flex; align-items: center;">
+            <span>日期:</span><span style="flex: 1; min-width: 130px;"></span>
+          </div>
         </div>
       </div>
     </div>

+ 81 - 32
src/views/batchRecord/print/electrodeBatchRecord/materialBalance.vue

@@ -21,45 +21,57 @@
           </tr>
         </table>
 
-        <table style="width: 100%; border-collapse: collapse; margin-top: -1px;">
+        <table class="material-detail-table" style="width: 100%; border-collapse: collapse; margin-top: -1px; table-layout: fixed;">
+          <colgroup>
+            <col style="width: 4%;" />
+            <col style="width: 14%;" />
+            <col style="width: 14%;" />
+            <col style="width: 7%;" />
+            <col style="width: 11%;" />
+            <col style="width: 11%;" />
+            <col style="width: 9.75%;" />
+            <col style="width: 9.75%;" />
+            <col style="width: 9.75%;" />
+            <col style="width: 9.75%;" />
+          </colgroup>
           <thead>
             <tr>
-              <th style="border: 1px solid #000; padding: 6px; text-align: center; width: 4%;"></th>
-              <th style="border: 1px solid #000; padding: 6px; text-align: center;">物料名称</th>
-              <th style="border: 1px solid #000; padding: 6px; text-align: center;">规格型号</th>
-              <th style="border: 1px solid #000; padding: 6px; text-align: center;">单位</th>
-              <th style="border: 1px solid #000; padding: 6px; text-align: center;">领用数<br/>量</th>
-              <th style="border: 1px solid #000; padding: 6px; text-align: center;">不合格<br/>数量</th>
-              <th style="border: 1px solid #000; padding: 6px; text-align: center;">取样量</th>
-              <th style="border: 1px solid #000; padding: 6px; text-align: center;">使用量</th>
-              <th style="border: 1px solid #000; padding: 6px; text-align: center;">结余量</th>
-              <th style="border: 1px solid #000; padding: 6px; text-align: center;">平衡率</th>
+              <th class="material-detail-head"></th>
+              <th class="material-detail-head">物料名称</th>
+              <th class="material-detail-head">规格型号</th>
+              <th class="material-detail-head">单位</th>
+              <th class="material-detail-head">领用数<br/>量</th>
+              <th class="material-detail-head">不合格<br/>数量</th>
+              <th class="material-detail-head">取样量</th>
+              <th class="material-detail-head">使用量</th>
+              <th class="material-detail-head">结余量</th>
+              <th class="material-detail-head">平衡率</th>
             </tr>
           </thead>
           <tbody>
             <tr v-for="(item, idx) in paddedRawMaterialList" :key="'raw' + idx">
-              <td v-if="idx === 0" :rowspan="rawMaterialRows" style="border: 1px solid #000; padding: 6px; text-align: center; vertical-align: middle; writing-mode: vertical-lr; letter-spacing: 4px;">原材料</td>
-              <td style="border: 1px solid #000; padding: 6px; text-align: center;">{{ item.materialName }}</td>
-              <td style="border: 1px solid #000; padding: 6px; text-align: center;">{{ item.specification }}</td>
-              <td style="border: 1px solid #000; padding: 6px; text-align: center;">{{ item.unit }}</td>
-              <td style="border: 1px solid #000; padding: 6px; text-align: center;">{{ item.receiveQuantity }}</td>
-              <td style="border: 1px solid #000; padding: 6px; text-align: center;">{{ item.unqualifiedQuantity }}</td>
-              <td style="border: 1px solid #000; padding: 6px; text-align: center;">{{ item.sampleQuantity }}</td>
-              <td style="border: 1px solid #000; padding: 6px; text-align: center;">{{ item.usedQuantity }}</td>
-              <td style="border: 1px solid #000; padding: 6px; text-align: center;">{{ item.remainQuantity }}</td>
-              <td style="border: 1px solid #000; padding: 6px; text-align: center;">{{ item.balanceRate }}</td>
+              <td v-if="idx === 0" :rowspan="rawMaterialRows" class="material-category-cell">原材料</td>
+              <td class="material-detail-cell">{{ item.materialName }}</td>
+              <td class="material-detail-cell">{{ item.specification }}</td>
+              <td class="material-detail-cell">{{ item.unit }}</td>
+              <td class="material-detail-cell">{{ item.receiveQuantity }}</td>
+              <td class="material-detail-cell">{{ item.unqualifiedQuantity }}</td>
+              <td class="material-detail-cell">{{ item.sampleQuantity }}</td>
+              <td class="material-detail-cell">{{ item.usedQuantity }}</td>
+              <td class="material-detail-cell">{{ item.remainQuantity }}</td>
+              <td class="material-detail-cell">{{ item.balanceRate }}</td>
             </tr>
             <tr v-for="(item, idx) in paddedPackagingMaterialList" :key="'pkg' + idx">
-              <td v-if="idx === 0" :rowspan="packagingMaterialRows" style="border: 1px solid #000; padding: 6px; text-align: center; vertical-align: middle; writing-mode: vertical-lr; letter-spacing: 4px;">包装材料</td>
-              <td style="border: 1px solid #000; padding: 6px; text-align: center;">{{ item.materialName }}</td>
-              <td style="border: 1px solid #000; padding: 6px; text-align: center;">{{ item.specification }}</td>
-              <td style="border: 1px solid #000; padding: 6px; text-align: center;">{{ item.unit }}</td>
-              <td style="border: 1px solid #000; padding: 6px; text-align: center;">{{ item.receiveQuantity }}</td>
-              <td style="border: 1px solid #000; padding: 6px; text-align: center;">{{ item.unqualifiedQuantity }}</td>
-              <td style="border: 1px solid #000; padding: 6px; text-align: center;">{{ item.sampleQuantity }}</td>
-              <td style="border: 1px solid #000; padding: 6px; text-align: center;">{{ item.usedQuantity }}</td>
-              <td style="border: 1px solid #000; padding: 6px; text-align: center;">{{ item.remainQuantity }}</td>
-              <td style="border: 1px solid #000; padding: 6px; text-align: center;">{{ item.balanceRate }}</td>
+              <td v-if="idx === 0" :rowspan="packagingMaterialRows" class="material-category-cell">包装材料</td>
+              <td class="material-detail-cell">{{ item.materialName }}</td>
+              <td class="material-detail-cell">{{ item.specification }}</td>
+              <td class="material-detail-cell">{{ item.unit }}</td>
+              <td class="material-detail-cell">{{ item.receiveQuantity }}</td>
+              <td class="material-detail-cell">{{ item.unqualifiedQuantity }}</td>
+              <td class="material-detail-cell">{{ item.sampleQuantity }}</td>
+              <td class="material-detail-cell">{{ item.usedQuantity }}</td>
+              <td class="material-detail-cell">{{ item.remainQuantity }}</td>
+              <td class="material-detail-cell">{{ item.balanceRate }}</td>
             </tr>
           </tbody>
         </table>
@@ -168,7 +180,7 @@
         const win = window.open('', '_blank');
         win.document.open();
         win.document.write('<html><head><title>物料平衡表</title>');
-        win.document.write('<style>body{margin:0;padding:20px;font-family:"SimSun",serif;} table{border-collapse:collapse;width:100%;} td,th{border:1px solid #000;padding:6px;}</style>');
+        win.document.write('<style>body{margin:0;padding:20px;font-family:"SimSun",serif;} table{border-collapse:collapse;width:100%;} td,th{border:1px solid #000;padding:6px;} .material-detail-table{table-layout:fixed;} .material-detail-table tbody tr{height:28px;} .material-detail-head{border:1px solid #000;padding:5px 4px;text-align:center;line-height:1.35;} .material-category-cell{border:1px solid #000;padding:4px 2px;text-align:center;vertical-align:middle;writing-mode:vertical-lr;letter-spacing:2px;line-height:1.55;white-space:nowrap;} .material-detail-cell{border:1px solid #000;padding:5px 6px;text-align:center;line-height:1.5;word-break:break-all;overflow-wrap:anywhere;}</style>');
         win.document.write('</head><body>');
         win.document.write(el.innerHTML);
         win.document.write('</body></html>');
@@ -178,3 +190,40 @@
     }
   };
 </script>
+
+<style scoped>
+  .material-detail-table {
+    table-layout: fixed;
+  }
+
+  .material-detail-table tbody tr {
+    height: 28px;
+  }
+
+  .material-detail-head {
+    border: 1px solid #000;
+    padding: 5px 4px;
+    text-align: center;
+    line-height: 1.35;
+  }
+
+  .material-category-cell {
+    border: 1px solid #000;
+    padding: 4px 2px;
+    text-align: center;
+    vertical-align: middle;
+    writing-mode: vertical-lr;
+    letter-spacing: 2px;
+    line-height: 1.55;
+    white-space: nowrap;
+  }
+
+  .material-detail-cell {
+    border: 1px solid #000;
+    padding: 5px 6px;
+    text-align: center;
+    line-height: 1.5;
+    word-break: break-all;
+    overflow-wrap: anywhere;
+  }
+</style>

+ 17 - 1
src/views/productionPlan/components/newFactoryProductionScheduling.vue

@@ -2103,6 +2103,22 @@
           end_date: this.formatOrderSchedulingDayBoundary(endDate, 1)
         };
       },
+      getGanttRowStartTime(row = {}) {
+        const date = this.parseOrderSchedulingDate(
+          row.originalStartTime || row.start_date || row.startTime
+        );
+        return date ? date.getTime() : Number.MAX_SAFE_INTEGER;
+      },
+      sortGanttRowsByStartTime(rows = []) {
+        return [...rows].sort((a, b) => {
+          const startDiff =
+            this.getGanttRowStartTime(a) - this.getGanttRowStartTime(b);
+          if (startDiff !== 0) {
+            return startDiff;
+          }
+          return String(a.id || '').localeCompare(String(b.id || ''), 'zh-CN');
+        });
+      },
       async open(row) {
         const ids = Array.isArray(row?.ids) ? row.ids : [];
         const readonly = !!row?.readonly;
@@ -2489,7 +2505,7 @@
             });
           });
         });
-        return rows;
+        return this.sortGanttRowsByStartTime(rows);
       },
       // 添加班组行合并
       // addDuplicateCount(arr) {