Sfoglia il codice sorgente

任务派单 bug修改

jingshuyong 10 mesi fa
parent
commit
4eead7255b

+ 86 - 11
src/views/produceOrder/components/releaseDialog/index.vue

@@ -168,13 +168,14 @@
             :name="item.id"
           >
             <ele-pro-table
-              ref="tableRef"
+              :ref="`tableRef${index}`"
               v-loading="tabLoading"
               :columns="columns"
               :datasource="item.list"
               :pageSize="20"
               :selection.sync="item.selection"
               cache-key="systemRoleTable"
+              row-key="id"
               class="table"
             >
               <template v-slot:toolbar>
@@ -269,9 +270,10 @@
                   @input="(e) => handleWeightInput(e, row, item)"
                 ></el-input>
               </template>
-              <template v-slot:teamTimeDetailId="{ row }">
+              <template v-slot:teamTimeIds="{ row }">
                 <el-select
-                  v-model="row.teamTimeDetailId"
+                  v-model="row.teamTimeIds"
+                  multiple
                   placeholder="班次"
                   :disabled="permissions(row, item)"
                   @change="(e) => shiftSelection(e, row, item)"
@@ -516,11 +518,11 @@
             width: 140
           },
           {
-            slot: 'teamTimeDetailId',
-            prop: 'teamTimeDetailId',
+            slot: 'teamTimeIds',
+            prop: 'teamTimeIds',
             label: '班次',
             align: 'center',
-            minWidth: 140
+            minWidth: 220
           },
           {
             slot: 'startTime',
@@ -591,7 +593,6 @@
           this.form.factoryName = res[0].factoryName;
           this.form.workCenterId = res[0].id;
           this.factoriesId = res[0].factoryId;
-          console.log(res, 'res 工作中心数据');
           // 查首工序
           this.changeWork(res[0].id); // 选择工作中心
           this.getProductionData(res[0].id); // 查询产线
@@ -841,8 +842,8 @@
             assigneeType: row.assignType,
             assigneeName: item.name
           };
-          if (item.teamTimeDetailId) {
-            Aobj.teamTimeDetailId = item.teamTimeDetailId;
+          if (item.teamTimeIds) {
+            Aobj.teamTimeIds = item.teamTimeIds;
           }
           assignees.push(Aobj);
           changeIds.push(item.changeId);
@@ -870,6 +871,8 @@
             workCenterName: this.form.workCenterName,
             workOrderId: this.current.apsWorkOrderId,
             sourceType: 2,
+            mesWorkOrderId: this.current.id,
+            mesWorkOrderCode: this.current.code,
             assignees
           };
         }
@@ -1027,7 +1030,7 @@
             listArr[idx].quantity = item.quantity;
             listArr[idx].weight = item.weight;
             listArr[idx].changeId = item.id;
-            listArr[idx].teamTimeDetailId = item.teamTimeDetailId;
+            listArr[idx].teamTimeIds = item.teamTimeIds;
             this.compareAndSetTime(listArr[idx], dataRow);
             this.compareEndSetTime(listArr[idx], dataRow);
           }
@@ -1080,6 +1083,7 @@
         row.quantity = value;
         this.calculateQuantity(row, item);
         this.bringWeight(row.quantity, row);
+        this.selectedListData(row, item);
       },
       // 自动算重量
       bringWeight(value, row) {
@@ -1144,10 +1148,13 @@
         // 更新绑定值
         row.weight = value;
         this.calculateWeight(row, item);
+        this.selectedListData(row, item);
       },
       // 选中班次
       shiftSelection(e, row, item) {
-        let data = this.shiftList.find((item) => item.id == e);
+        // this.selectedListData(row, item);
+        let data = this.shifTimeData(e, row);
+        // let data = this.shiftList.find((item) => item.id == e);
         let startTime = `${this.dateValue} ${data.startTime}`;
         let endTime = `${this.dateValue} ${data.endTime}`;
         this.$set(row, 'startTime', startTime);
@@ -1155,11 +1162,78 @@
         this.handleStartTimeChange(row, item);
         this.handleEndTimeChange(row, item);
       },
+      // 默认选中当前更改数据
+      selectedListData(row, item) {
+        this.$nextTick(() => {
+          let data = item.selection.find((el) => el.id == row.id);
+          if (!data) {
+            let ids = item.selection.map((el) => el.id);
+            ids.push(row.id);
+            let tab = `tableRef${[item.index]}`;
+            this.$refs[tab][0].setSelectedRowKeys(ids);
+          }
+        });
+      },
+      // 多选班次时间数据
+      shifTimeData(e, row) {
+        if (!e || e.length == 0) {
+          return {
+            startTime: row.startTime,
+            endTime: row.endTime
+          };
+        }
+        let startTime = '';
+        let endTime = '';
+        e.map((el) => {
+          let obj = this.shiftList.find((item) => item.id == el);
+          if (!startTime) {
+            startTime = obj.startTime;
+          }
+          if (!endTime) {
+            endTime = obj.endTime;
+          }
+          // 获取更小的
+          startTime =
+            this.compareTime(startTime, obj.startTime) !== -1
+              ? obj.startTime
+              : startTime;
+          // 获取更大的
+          endTime =
+            this.compareTime(endTime, obj.endTime) !== 1
+              ? obj.endTime
+              : endTime;
+        });
+
+        return {
+          startTime,
+          endTime
+        };
+      },
+      // 将HH:mm:ss格式的时间转换为总秒数
+      timeToSeconds(timeStr) {
+        const [hours, minutes, seconds] = timeStr.split(':').map(Number);
+        return hours * 3600 + minutes * 60 + seconds;
+      },
+      // this.$refs.table.setSelectedRowKeys(ids);
+      // 比较两个时间的大小
+      compareTime(time1, time2) {
+        const sec1 = this.timeToSeconds(time1);
+        const sec2 = this.timeToSeconds(time2);
+
+        if (sec1 > sec2) {
+          return 1; // time1 更大
+        } else if (sec1 < sec2) {
+          return -1; // time2 更大
+        } else {
+          return 0; // 两个时间相等
+        }
+      },
       // 【开始时间变化时】触发
       handleStartTimeChange(row, item) {
         if (!row.startTime) {
           return;
         }
+        this.selectedListData(row, item);
         // 这一道工序的开始时间 不能小于前一道工序的结束时间
         const startTime = new Date(row.startTime); // 开始时间
         if (item.index !== 0) {
@@ -1239,6 +1313,7 @@
         if (!row.endTime) {
           return;
         }
+        this.selectedListData(row, item);
         const endTime = new Date(row.endTime); // 结束时间
         // 当前工序的结束时间 不能大于后一道工序的开始时间
         if (item.index !== this.processList.length - 1) {

+ 32 - 1
src/views/produceOrder/index.vue

@@ -17,6 +17,7 @@
         <el-tab-pane label="已延期" name="7"></el-tab-pane>
       </el-tabs>
       <!-- 数据表格 -->
+       <!--   :cache-key="cacheKeyUrl" -->
       <ele-pro-table
         ref="table"
         :key="activeName"
@@ -24,7 +25,6 @@
         :columns="newColumns"
         :datasource="datasource"
         row-key="code"
-        :cache-key="cacheKeyUrl"
         :selection.sync="selection"
         @sort-change="onSortChange"
         autoAmendPage
@@ -479,6 +479,34 @@
               return obj && obj.label;
             }
           },
+          {
+            prop: 'bomType',
+            label: '生产类型',
+            align: 'center',
+            width: 120,
+            formatter: (row) => {
+              if (row.bomType == 2) {
+                return '加工(MBOM)';
+              }
+              if (row.bomType == 3) {
+                return '装配(ABOM)';
+              }
+              return '';
+            }
+          },
+          {
+            prop: 'bomCategoryName',
+            label: 'BOM版本',
+            align: 'center',
+            width: 130,
+            showOverflowTooltip: true,
+            formatter: (row) => {
+              if (row.bomCategoryName) {
+                return `${row.bomCategoryName} (V${row.bomCategoryVersions}.0)`;
+              }
+              return '';
+            }
+          },
           {
             prop: 'produceRoutingName',
             label: '工艺路线',
@@ -650,6 +678,9 @@
       },
       dispatchBtn() {
         return (row) => {
+          if (Number(row.taskId) == NaN || Number(row.taskId) <= 0) {
+            return false;
+          }
           return !!row.taskId;
         };
       },