|
|
@@ -247,6 +247,13 @@
|
|
|
>
|
|
|
</el-radio-group>
|
|
|
</div>
|
|
|
+
|
|
|
+ <div
|
|
|
+ style="margin-left: 50px; display: inline-block"
|
|
|
+ v-if="timeSlot(item)"
|
|
|
+ >
|
|
|
+ 时间段: {{ item.startDate }} ----- {{ item.endDate }}
|
|
|
+ </div>
|
|
|
</template>
|
|
|
<template v-slot:quantity="{ row }">
|
|
|
<el-input
|
|
|
@@ -271,7 +278,7 @@
|
|
|
:disabled="permissions(row)"
|
|
|
v-model="row.teamTimeDetailId"
|
|
|
placeholder="班次"
|
|
|
- @change="(e) => shiftSelection(e, row)"
|
|
|
+ @change="(e) => shiftSelection(e, row, item)"
|
|
|
>
|
|
|
<el-option
|
|
|
v-for="item in shiftList"
|
|
|
@@ -290,7 +297,7 @@
|
|
|
type="datetime"
|
|
|
value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
placeholder="开始时间"
|
|
|
- @change="handleStartTimeChange(row)"
|
|
|
+ @change="handleStartTimeChange(row, item)"
|
|
|
:picker-options="{
|
|
|
disabledDate: (time) => {
|
|
|
const end = row.endTime;
|
|
|
@@ -312,7 +319,7 @@
|
|
|
v-model="row.endTime"
|
|
|
type="datetime"
|
|
|
value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
- @change="handleEndTimeChange(row)"
|
|
|
+ @change="handleEndTimeChange(row, item)"
|
|
|
placeholder="完成时间"
|
|
|
:picker-options="{
|
|
|
disabledDate: (time) => {
|
|
|
@@ -402,7 +409,6 @@
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
-
|
|
|
import {
|
|
|
listByFirstTaskId,
|
|
|
listUserByIds,
|
|
|
@@ -522,6 +528,15 @@
|
|
|
if (row.status.code == 1) return true;
|
|
|
};
|
|
|
},
|
|
|
+ // 时间段显示
|
|
|
+ timeSlot() {
|
|
|
+ return (item) => {
|
|
|
+ if (!item.startDate || !item.endDate) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ };
|
|
|
+ },
|
|
|
columns() {
|
|
|
return [
|
|
|
{
|
|
|
@@ -625,14 +640,6 @@
|
|
|
this.shiftList = res;
|
|
|
});
|
|
|
},
|
|
|
- // 选中班次
|
|
|
- shiftSelection(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);
|
|
|
- this.$set(row, 'endTime', endTime);
|
|
|
- },
|
|
|
// 查询是否派单
|
|
|
queryCheckExists() {
|
|
|
let params = {
|
|
|
@@ -663,7 +670,6 @@
|
|
|
this.orderDis = false;
|
|
|
this.procTaskDis = false;
|
|
|
}
|
|
|
- console.log(res, '是否派单');
|
|
|
})
|
|
|
.catch((err) => {
|
|
|
this.$message.error(err.message);
|
|
|
@@ -732,13 +738,14 @@
|
|
|
selection: [], // 当前工序下面的指派 选中的数据
|
|
|
code: item.code, // 工序 编码
|
|
|
index: index, // 当前工序数据的下标
|
|
|
-
|
|
|
radioBun: {
|
|
|
// 指派按钮的操作状态 绑定 默认false(可操作)
|
|
|
- stationDis: false,
|
|
|
- staffDis: false,
|
|
|
- lineDis: false
|
|
|
- }
|
|
|
+ stationDis: false, // 工位按钮
|
|
|
+ staffDis: false, // 人员按钮
|
|
|
+ lineDis: false // 产线按钮
|
|
|
+ },
|
|
|
+ startDate: '', // 开始日期 (当前工序中最早的计划开始时间)
|
|
|
+ endDate: '' // 结束日期 (当前工序中最晚的计划结束时间)
|
|
|
};
|
|
|
list.push(obj);
|
|
|
});
|
|
|
@@ -753,6 +760,7 @@
|
|
|
this.procTaskDis = true;
|
|
|
this.$message.warning('当前任务没有首工序报工');
|
|
|
}
|
|
|
+ console.log(this.processList, '工序的数据 1234');
|
|
|
})
|
|
|
.catch((err) => {
|
|
|
this.processList = [];
|
|
|
@@ -786,7 +794,15 @@
|
|
|
this.form.teamName = data.name;
|
|
|
try {
|
|
|
const res = await listUserByIds([e]);
|
|
|
- this.crewList = res || [];
|
|
|
+ this.crewList =
|
|
|
+ res &&
|
|
|
+ res.map((el) => {
|
|
|
+ return {
|
|
|
+ code: el.code,
|
|
|
+ name: el.name,
|
|
|
+ id: el.id
|
|
|
+ };
|
|
|
+ });
|
|
|
// 查看当前的工序数据是不是 选择的人员 是的话同步更改
|
|
|
if (!this.processId || this.processId == 0) {
|
|
|
return;
|
|
|
@@ -803,14 +819,31 @@
|
|
|
// 获取产线数据
|
|
|
async getProductionData() {
|
|
|
const res = await lineByCurrentUser(this.form.workCenterId);
|
|
|
- this.productionList = res || [];
|
|
|
+ this.productionList =
|
|
|
+ res &&
|
|
|
+ res.map((el) => {
|
|
|
+ return {
|
|
|
+ name: el.name,
|
|
|
+ code: el.code,
|
|
|
+ id: el.id
|
|
|
+ };
|
|
|
+ });
|
|
|
},
|
|
|
// 查询工位数据
|
|
|
FirstTaskIdFn() {
|
|
|
// listByFirstTaskId(this.current.firstTaskId)
|
|
|
listByFirstTaskId(this.current.firstTaskId)
|
|
|
.then((res) => {
|
|
|
+ console.log(res, 'res -----');
|
|
|
this.stationList = res;
|
|
|
+ // res &&
|
|
|
+ // res.map((el) => {
|
|
|
+ // return {
|
|
|
+ // name: el.name,
|
|
|
+ // code: el.code,
|
|
|
+ // id: el.id
|
|
|
+ // };
|
|
|
+ // });
|
|
|
this.changeDispatch();
|
|
|
})
|
|
|
.catch((err) => {
|
|
|
@@ -869,22 +902,12 @@
|
|
|
let assignees = [];
|
|
|
let changeIds = [];
|
|
|
let flag = true; // 是否填写 校验
|
|
|
- // let digit = true; // 数字校验
|
|
|
row.selection.forEach((item) => {
|
|
|
if (!item.quantity || !item.startTime || !item.endTime) {
|
|
|
flag = false;
|
|
|
return;
|
|
|
}
|
|
|
- // if (item.quantity == 0) {
|
|
|
- // this.$message.warning('请检查所选数据的数量不能为0');
|
|
|
- // digit = false;
|
|
|
- // return;
|
|
|
- // }
|
|
|
- // if (item.weight == 0) {
|
|
|
- // this.$message.warning('请检查所选数据的重量不能为0');
|
|
|
- // digit = false;
|
|
|
- // return;
|
|
|
- // }
|
|
|
+
|
|
|
let Aobj = {
|
|
|
assigneeId: item.id,
|
|
|
quantity: item.quantity,
|
|
|
@@ -901,9 +924,6 @@
|
|
|
changeIds.push(item.changeId);
|
|
|
});
|
|
|
// 校验没过 就不往下进行
|
|
|
- // if (!digit) {
|
|
|
- // return;
|
|
|
- // }
|
|
|
if (!flag) {
|
|
|
this.$message.warning(
|
|
|
'请将所选数据的 数量,开始时间,完成时间 填写完毕'
|
|
|
@@ -1101,7 +1121,7 @@
|
|
|
this.$message.error(err.message);
|
|
|
});
|
|
|
},
|
|
|
- // 工序选择 有问题
|
|
|
+ // 工序选择
|
|
|
handleClick(tab) {
|
|
|
let id = tab.name;
|
|
|
this.processId = id;
|
|
|
@@ -1154,6 +1174,7 @@
|
|
|
// 对有操作过的数据进行赋值
|
|
|
this.operationalData(index, res, list);
|
|
|
} catch (err) {
|
|
|
+ console.log(err, 'errerrerrerrerr');
|
|
|
this.tabLoading = false;
|
|
|
this.$message.warning(err.message);
|
|
|
}
|
|
|
@@ -1218,9 +1239,15 @@
|
|
|
let listMap = {};
|
|
|
listArr.map((el, index) => (listMap[el.id] = index));
|
|
|
let arrList = codeT ? arrMap[codeT].arr : res[0].assignees;
|
|
|
+ dataRow.startDate = ''; // 每次计算的时候清空之前的
|
|
|
+ dataRow.endDate = '';
|
|
|
arrList.map((item) => {
|
|
|
if (item.assigneeType.code == dataRow.assignType) {
|
|
|
+ console.log(item, 'itemitemitemitemitemitemitemitemitemitem');
|
|
|
let idx = listMap[item.assigneeId];
|
|
|
+ if (!idx && idx !== 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
listArr[idx].status = item.status;
|
|
|
listArr[idx].startTime = item.startTime;
|
|
|
listArr[idx].endTime = item.endTime;
|
|
|
@@ -1228,11 +1255,53 @@
|
|
|
listArr[idx].weight = item.weight;
|
|
|
listArr[idx].changeId = item.id;
|
|
|
listArr[idx].teamTimeDetailId = item.teamTimeDetailId;
|
|
|
+ // this.compareAndSetTime(listArr[idx], dataRow);
|
|
|
+ // this.compareEndSetTime(listArr[idx], dataRow);
|
|
|
}
|
|
|
});
|
|
|
+ console.log(arrList, 'arrList arrList');
|
|
|
+ // 这里重新调用一个方法 计算出 startDate endDate
|
|
|
+ console.log(dataRow, 'dataRow +++++');
|
|
|
this.$set(dataRow, 'list', listArr);
|
|
|
this.$set(dataRow, 'radioBun', radioBun);
|
|
|
},
|
|
|
+
|
|
|
+ // 时间比较与赋值方法 开始时间
|
|
|
+ compareAndSetTime(data, dataRow) {
|
|
|
+ // 如果startDate为空,直接赋值为startTime
|
|
|
+ if (!dataRow.startDate) {
|
|
|
+ dataRow.startDate = data['startTime'];
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 转换为Date对象进行比较
|
|
|
+ const startTimeDate = new Date(data['startTime']);
|
|
|
+ const startDateDate = new Date(dataRow.startDate);
|
|
|
+
|
|
|
+ // 比较时间(getTime()获取时间戳)
|
|
|
+ if (startTimeDate.getTime() < startDateDate.getTime()) {
|
|
|
+ dataRow.startDate = data['startTime'];
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ // 时间比较与赋值方法 结束时间时间
|
|
|
+ compareEndSetTime(data, dataRow) {
|
|
|
+ // 如果startDate为空,直接赋值为endTime
|
|
|
+ if (!dataRow.endDate) {
|
|
|
+ dataRow.endDate = data['endTime'];
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 转换为Date对象进行比较
|
|
|
+ const endTimeDate = new Date(data['endTime']);
|
|
|
+ const endDateDate = new Date(dataRow.endDate);
|
|
|
+
|
|
|
+ // 比较时间(getTime()获取时间戳)
|
|
|
+ if (endTimeDate.getTime() > endDateDate.getTime()) {
|
|
|
+ dataRow.endDate = data['endTime'];
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
assignRadio(e) {},
|
|
|
// 数量正则 quantity
|
|
|
handleQuantityInput(e, row, item) {
|
|
|
@@ -1311,22 +1380,84 @@
|
|
|
row.weight = value;
|
|
|
this.calculateWeight(row, item);
|
|
|
},
|
|
|
-
|
|
|
+ // 选中班次
|
|
|
+ shiftSelection(e, row, item) {
|
|
|
+ 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);
|
|
|
+ this.$set(row, 'endTime', endTime);
|
|
|
+ this.handleStartTimeChange(row, item);
|
|
|
+ this.handleEndTimeChange(row, item);
|
|
|
+ },
|
|
|
// 【开始时间变化时】触发
|
|
|
- handleStartTimeChange(row) {
|
|
|
+ handleStartTimeChange(row, item) {
|
|
|
+ // 后一道工序的开始时间 不能小于前一道工序的结束时间
|
|
|
+ // if (item.index !== 0) {
|
|
|
+ // let frontIdx = item.index - 1;
|
|
|
+ // let frontName = this.processList[frontIdx].name;
|
|
|
+ // let time = this.processList[frontIdx].endDate;
|
|
|
+ // const frontTime = new Date(time); // 上一道工序的结束时间
|
|
|
+ // const startTime = new Date(row.startTime); // 开始时间
|
|
|
+ // const endTime = item.endTime ? new Date(item.endTime) : null; // 结束时间
|
|
|
+ // console.log(startTime,'startTime 开始的')
|
|
|
+ // if (endTime && endTime < frontTime) {
|
|
|
+ // row.endTime = '';
|
|
|
+ // }
|
|
|
+ // if (startTime < frontTime) {
|
|
|
+ // this.$message.info(
|
|
|
+ // `开始时间不能小于上一道工序${frontName}的结束时间${time}`
|
|
|
+ // );
|
|
|
+ // row.startTime = time;
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // 校验 是否 大于结束时间 wda
|
|
|
this.checkEndTimeValid(row);
|
|
|
+ // 更新当前结束时间段 每次计算的时候清空之前的
|
|
|
+ // item.startDate = '';
|
|
|
+ // item.list.forEach((el) => {
|
|
|
+ // this.compareAndSetTime(el, item);
|
|
|
+ // });
|
|
|
},
|
|
|
|
|
|
// 【结束时间变化时】触发
|
|
|
- handleEndTimeChange(row) {
|
|
|
- this.checkEndTimeValid(row);
|
|
|
+ handleEndTimeChange(row, item) {
|
|
|
+ // 当前工序的结束时间 不能大于后一道工序的开始时间
|
|
|
+ // if (item.index !== this.processList.length - 1) {
|
|
|
+ // let latterIdx = item.index + 1;
|
|
|
+ // let latterName = this.processList[latterIdx].name;
|
|
|
+ // let time = this.processList[latterIdx].startDate;
|
|
|
+ // const latterTime = new Date(time); // 下一道工序的开始时间
|
|
|
+ // const endTime = new Date(row.endTime); // 结束时间
|
|
|
+ // const startTime = item.startTime ? new Date(item.startTime) : null; // 开始时间
|
|
|
+ // console.log(startTime,'startTime')
|
|
|
+ // console.log(latterTime,'latterTime')
|
|
|
+ // if (startTime && startTime > latterTime) {
|
|
|
+ // row.startTime = '';
|
|
|
+ // }
|
|
|
+ // if (endTime > latterTime) {
|
|
|
+ // this.$message.info(
|
|
|
+ // `结束时间不能大于下一道工序${latterName}的开始时间${time}`
|
|
|
+ // );
|
|
|
+ // row.endTime = time;
|
|
|
+ // return;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ this.checkEndTimeValid(row, item);
|
|
|
+ // 更新当前结束时间段 每次计算的时候清空之前的
|
|
|
+ // item.endDate = '';
|
|
|
+ // item.list.forEach((el) => {
|
|
|
+ // this.compareEndSetTime(el, item);
|
|
|
+ // });
|
|
|
+ console.log(item, 'item,结束');
|
|
|
},
|
|
|
-
|
|
|
+ // 时间校验
|
|
|
checkEndTimeValid(row) {
|
|
|
const { startTime: start, endTime: end } = row;
|
|
|
- if (!start || !end) return; // 开始/结束时间未填,跳过
|
|
|
- const startTime = new Date(start);
|
|
|
- const endTime = new Date(end);
|
|
|
+ // if (!start || !end) return; // 开始/结束时间未填,跳过
|
|
|
+ const startTime = new Date(start); // 开始时间
|
|
|
+ const endTime = new Date(end); // 结束时间
|
|
|
if (endTime < startTime) {
|
|
|
row.endTime = new Date(startTime); // 修正为开始时间
|
|
|
this.$message.info('结束时间不能早于开始时间,已自动设为开始时间');
|