|
|
@@ -239,10 +239,13 @@
|
|
|
<template slot="append">{{ form.measuringUnit }}</template>
|
|
|
</el-input>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="请托工序:" prop="taskId">
|
|
|
+ <el-form-item label="请托工序:" prop="taskIdList">
|
|
|
<el-select
|
|
|
- v-model="form.taskId"
|
|
|
- placeholder="请选择"
|
|
|
+ v-model="form.taskIdList"
|
|
|
+ multiple
|
|
|
+ filterable
|
|
|
+ collapse-tags
|
|
|
+ placeholder="请从当前工序开始连续选择"
|
|
|
style="width: 260px"
|
|
|
@change="taskListChange"
|
|
|
>
|
|
|
@@ -467,7 +470,14 @@
|
|
|
totalCount: [
|
|
|
{ required: true, message: '请输入', trigger: 'change' }
|
|
|
],
|
|
|
- taskId: [{ required: true, message: '请选择', trigger: 'change' }]
|
|
|
+ taskIdList: [
|
|
|
+ {
|
|
|
+ type: 'array',
|
|
|
+ required: true,
|
|
|
+ message: '请选择请托工序',
|
|
|
+ trigger: 'change'
|
|
|
+ }
|
|
|
+ ]
|
|
|
},
|
|
|
|
|
|
form: {
|
|
|
@@ -482,6 +492,7 @@
|
|
|
isLast: 0,
|
|
|
describes: '',
|
|
|
taskId: '',
|
|
|
+ taskIdList: [],
|
|
|
planDeliveryTime: '',
|
|
|
beEntrustedDeptName: '',
|
|
|
beEntrustedFactoriesName: '',
|
|
|
@@ -697,15 +708,25 @@
|
|
|
let { data } = res;
|
|
|
if (data.length) {
|
|
|
data = data.filter((item) => item.taskId != -2);
|
|
|
- let arr = data.findIndex((item) =>
|
|
|
- item.name ? item.sourceTaskId : item.taskId == this.form.taskId
|
|
|
- );
|
|
|
+ const currentTaskId = this.form.taskId;
|
|
|
+ const arr = data.findIndex((item) => item.taskId == currentTaskId);
|
|
|
|
|
|
if (arr != -1) {
|
|
|
data.splice(0, arr);
|
|
|
}
|
|
|
|
|
|
this.pleaseNewStepsList = data;
|
|
|
+ const selectedTaskIds = Array.isArray(this.form.taskIdList)
|
|
|
+ ? this.form.taskIdList
|
|
|
+ : [];
|
|
|
+ const initialTaskIds = selectedTaskIds.length
|
|
|
+ ? selectedTaskIds
|
|
|
+ : currentTaskId
|
|
|
+ ? [currentTaskId]
|
|
|
+ : data.length
|
|
|
+ ? [data[0].taskId]
|
|
|
+ : [];
|
|
|
+ this.taskListChange(initialTaskIds, false);
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
@@ -813,12 +834,43 @@
|
|
|
this.$refs.timeDialogRef.open(this.attributeData, null, false);
|
|
|
},
|
|
|
|
|
|
- taskListChange() {
|
|
|
- const data = this.pleaseNewStepsList.filter(
|
|
|
- (it) => it.taskId == this.form.taskId
|
|
|
- );
|
|
|
+ taskListChange(taskIdList, showWarning = true) {
|
|
|
+ const selected = Array.isArray(taskIdList) ? taskIdList : [];
|
|
|
+ if (selected.length === 0) {
|
|
|
+ this.form.taskIdList = [];
|
|
|
+ this.form.taskId = '';
|
|
|
+ this.form.taskIds = '';
|
|
|
+ this.form.taskName = '';
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ const selectedIndexes = selected
|
|
|
+ .map((id) =>
|
|
|
+ this.pleaseNewStepsList.findIndex((item) => item.taskId == id)
|
|
|
+ )
|
|
|
+ .filter((index) => index >= 0);
|
|
|
+ if (selectedIndexes.length === 0) {
|
|
|
+ this.form.taskIdList = [];
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
- this.form.taskName = data[0].taskTypeName;
|
|
|
+ const endIndex = Math.max(...selectedIndexes);
|
|
|
+ const normalizedTasks = this.pleaseNewStepsList.slice(0, endIndex + 1);
|
|
|
+ const normalizedTaskIds = normalizedTasks.map((item) => item.taskId);
|
|
|
+ const isContinuous =
|
|
|
+ selectedIndexes.length === normalizedTaskIds.length &&
|
|
|
+ selectedIndexes.every((index) => index <= endIndex);
|
|
|
+
|
|
|
+ this.form.taskIdList = normalizedTaskIds;
|
|
|
+ this.form.taskId = normalizedTaskIds[0] || '';
|
|
|
+ this.form.taskIds = normalizedTaskIds.join(',');
|
|
|
+ this.form.taskName = normalizedTasks.length
|
|
|
+ ? normalizedTasks[0].taskTypeName
|
|
|
+ : '';
|
|
|
+
|
|
|
+ if (!isContinuous && showWarning) {
|
|
|
+ this.$message.info('请托工序必须连续,已自动补齐中间工序');
|
|
|
+ }
|
|
|
},
|
|
|
|
|
|
changeTaskId(e) {
|