|
@@ -137,7 +137,69 @@
|
|
|
</div>
|
|
|
</el-collapse-item>
|
|
|
<el-collapse-item title="临时额外任务" name="2">
|
|
|
- <div>临时额外任务内容区域</div>
|
|
|
+ <el-table :data="extraTasks" style="width: 100%" border>
|
|
|
+ <el-table-column type="index" label="序号" width="80"></el-table-column>
|
|
|
+ <el-table-column prop="name" label="单项任务名称" width="300">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-input height="70" type="textarea" v-model="scope.row.name"
|
|
|
+ size="mini"></el-input>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="priorityId" label="优先级" width="100">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-select v-model="scope.row.priorityId" size="mini" placeholder="请选择">
|
|
|
+ <el-option v-for="item in initResp.taskLv" :key="item.id" :label="item.name"
|
|
|
+ :value="item.id"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="isUrgent" label="是否加急" width="100">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-switch v-model="scope.row.isUrgent" active-color="#13ce66"
|
|
|
+ inactive-color="#ff4949">
|
|
|
+ </el-switch>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="assignedUserId" label="指派给谁" width="120">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-select v-model="scope.row.assignedUserId" size="mini" placeholder="请选择">
|
|
|
+ <el-option v-for="item in initResp.users" :key="item.id"
|
|
|
+ :label="item.cnName" :value="item.id"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="timeRange" label="任务时间(起止)">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-date-picker v-model="scope.row.timeRange" type="datetimerange"
|
|
|
+ range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期"
|
|
|
+ size="mini" format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
+ @change="onExtraTaskTimeRangeChange(scope.$index)">
|
|
|
+ </el-date-picker>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="durationHours" label="任务默认完成小时数" width="160">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-input-number v-model="scope.row.durationHours" size="mini" :min="0"
|
|
|
+ :step="1"></el-input-number>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="操作" width="120">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <!-- <el-button class="czbtn" size="mini" type="primary"
|
|
|
+ @click="insertExtraTaskAbove(scope.$index)">插入行↑</el-button>
|
|
|
+ <br /> -->
|
|
|
+ <el-button class="czbtn" style="margin: 10px 0;" size="mini" type="danger"
|
|
|
+ @click="deleteExtraTask(scope.$index)">删除 <i
|
|
|
+ class="el-icon-delete"></i></el-button>
|
|
|
+ <br />
|
|
|
+ <!-- <el-button class="czbtn" size="mini" type="primary"
|
|
|
+ @click="insertExtraTaskBelow(scope.$index)">插入行↓</el-button> -->
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <div style="margin-top: 10px;text-align: center;">
|
|
|
+ <el-button size="small" type="primary" @click="addExtraTask">新增任务</el-button>
|
|
|
+ </div>
|
|
|
</el-collapse-item>
|
|
|
</el-collapse>
|
|
|
</div>
|
|
@@ -166,6 +228,8 @@ export default {
|
|
|
activeNames: ['1'], // 只展开主要任务
|
|
|
mainTasks: [
|
|
|
],
|
|
|
+ extraTasks: [
|
|
|
+ ],
|
|
|
form: {
|
|
|
id: 0,
|
|
|
name: '',
|
|
@@ -257,7 +321,8 @@ export default {
|
|
|
"workOrderId": 0,
|
|
|
"sort": this.mainTasks.length + 1,
|
|
|
"timeRange": [],
|
|
|
- "requiredFieldsValue": []
|
|
|
+ "requiredFieldsValue": [],
|
|
|
+ "isExtraTask": false
|
|
|
});
|
|
|
},
|
|
|
insertTaskAbove(index) {
|
|
@@ -272,7 +337,8 @@ export default {
|
|
|
"workOrderId": 0,
|
|
|
"sort": this.mainTasks.length + 1,
|
|
|
"timeRange": [],
|
|
|
- "requiredFieldsValue": []
|
|
|
+ "requiredFieldsValue": [],
|
|
|
+ "isExtraTask": false
|
|
|
});
|
|
|
},
|
|
|
insertTaskBelow(index) {
|
|
@@ -287,7 +353,8 @@ export default {
|
|
|
"workOrderId": 0,
|
|
|
"sort": this.mainTasks.length + 1,
|
|
|
"timeRange": [],
|
|
|
- "requiredFieldsValue": []
|
|
|
+ "requiredFieldsValue": [],
|
|
|
+ "isExtraTask": false
|
|
|
});
|
|
|
},
|
|
|
deleteTask(index) {
|
|
@@ -397,7 +464,6 @@ export default {
|
|
|
save() {
|
|
|
var tasks = this.mainTasks;
|
|
|
var i = 1;
|
|
|
- // 将forEach改为for循环
|
|
|
for (let j = 0; j < tasks.length; j++) {
|
|
|
const item = tasks[j];
|
|
|
item.startTime = item.timeRange[0];
|
|
@@ -406,21 +472,53 @@ export default {
|
|
|
i = i + 1;
|
|
|
if (!item.name) {
|
|
|
this.$message({
|
|
|
- message: '请填写任务名称',
|
|
|
+ message: '请填写主要任务名称',
|
|
|
type: 'warning'
|
|
|
});
|
|
|
return false;
|
|
|
}
|
|
|
if (!item.assignedUserId) {
|
|
|
this.$message({
|
|
|
- message: '请选择任务负责人',
|
|
|
+ message: '请选择主要任务负责人',
|
|
|
type: 'warning'
|
|
|
});
|
|
|
return false;
|
|
|
}
|
|
|
if (!item.timeRange[0] || !item.timeRange[1]) {
|
|
|
this.$message({
|
|
|
- message: '请选择任务时间',
|
|
|
+ message: '请选择主要任务时间',
|
|
|
+ type: 'warning'
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ i = 1;
|
|
|
+ // 处理额外任务
|
|
|
+ var extraTasks = this.extraTasks;
|
|
|
+ for (let j = 0; j < extraTasks.length; j++) {
|
|
|
+ const item = extraTasks[j];
|
|
|
+ item.startTime = item.timeRange[0];
|
|
|
+ item.endTime = item.timeRange[1];
|
|
|
+ item.sort = i;
|
|
|
+ i = i + 1;
|
|
|
+ if (!item.name) {
|
|
|
+ this.$message({
|
|
|
+ message: '请填写额外任务名称',
|
|
|
+ type: 'warning'
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (!item.assignedUserId) {
|
|
|
+ this.$message({
|
|
|
+ message: '请选择额外任务负责人',
|
|
|
+ type: 'warning'
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (!item.timeRange[0] || !item.timeRange[1]) {
|
|
|
+ this.$message({
|
|
|
+ message: '请选择额外任务时间',
|
|
|
type: 'warning'
|
|
|
});
|
|
|
return false;
|
|
@@ -430,7 +528,7 @@ export default {
|
|
|
var form = this.form;
|
|
|
form.createUserId = this.userId;
|
|
|
form.typeId = this.typeId;
|
|
|
- form.tasks = tasks;
|
|
|
+ form.tasks = tasks.concat(extraTasks);
|
|
|
|
|
|
this.$axios({
|
|
|
method: 'post',
|
|
@@ -459,6 +557,9 @@ export default {
|
|
|
this.mainTasks.forEach(item => {
|
|
|
item.assignedUserId = this.form.assignedUserId;
|
|
|
})
|
|
|
+ this.extraTasks.forEach(item => {
|
|
|
+ item.assignedUserId = this.form.assignedUserId;
|
|
|
+ })
|
|
|
},
|
|
|
getDetail() {
|
|
|
this.$axios({
|
|
@@ -471,12 +572,18 @@ export default {
|
|
|
// 处理响应数据
|
|
|
if (response.data.code == 200) {
|
|
|
this.initResp = response.data.data;
|
|
|
- var maintasks = response.data.data.workTask;
|
|
|
+ var maintasks = response.data.data.mainTask;
|
|
|
maintasks.forEach(item => {
|
|
|
item.timeRange = [item.startTime, item.endTime];
|
|
|
item.requiredFieldsValue = [];
|
|
|
})
|
|
|
this.mainTasks = maintasks;
|
|
|
+ var extraTasks = response.data.data.extraTask;
|
|
|
+ extraTasks.forEach(item => {
|
|
|
+ item.timeRange = [item.startTime, item.endTime];
|
|
|
+ item.requiredFieldsValue = [];
|
|
|
+ })
|
|
|
+ this.extraTasks = extraTasks;
|
|
|
this.form = response.data.data.workOrder;
|
|
|
} else {
|
|
|
this.$message({
|
|
@@ -491,6 +598,66 @@ export default {
|
|
|
this.loading = false;
|
|
|
});
|
|
|
},
|
|
|
+ // 在这里添加额外任务函数
|
|
|
+ addExtraTask() {
|
|
|
+ this.extraTasks.push({
|
|
|
+ "id": 0,
|
|
|
+ "name": "",
|
|
|
+ "priorityId": 1456,
|
|
|
+ "isUrgent": false,
|
|
|
+ "assignedUserId": this.form.assignedUserId || '',
|
|
|
+ "durationHours": 0,
|
|
|
+ "workOrderId": 0,
|
|
|
+ "sort": this.extraTasks.length + 1,
|
|
|
+ "timeRange": [],
|
|
|
+ "requiredFieldsValue": [],
|
|
|
+ "isExtraTask": true
|
|
|
+ });
|
|
|
+ },
|
|
|
+ insertExtraTaskAbove(index) {
|
|
|
+ // 在指定位置上方插入新行
|
|
|
+ this.extraTasks.splice(index, 0, {
|
|
|
+ "id": 0,
|
|
|
+ "name": "",
|
|
|
+ "priorityId": 1456,
|
|
|
+ "isUrgent": false,
|
|
|
+ "assignedUserId": this.form.assignedUserId || '',
|
|
|
+ "durationHours": 0,
|
|
|
+ "workOrderId": 0,
|
|
|
+ "sort": this.extraTasks.length + 1,
|
|
|
+ "timeRange": [],
|
|
|
+ "requiredFieldsValue": [],
|
|
|
+ "isExtraTask": true
|
|
|
+ });
|
|
|
+ },
|
|
|
+ insertExtraTaskBelow(index) {
|
|
|
+ // 在指定位置下方插入新行
|
|
|
+ this.extraTasks.splice(index + 1, 0, {
|
|
|
+ "id": 0,
|
|
|
+ "name": "",
|
|
|
+ "priorityId": 1456,
|
|
|
+ "isUrgent": false,
|
|
|
+ "assignedUserId": this.form.assignedUserId || '',
|
|
|
+ "durationHours": 0,
|
|
|
+ "workOrderId": 0,
|
|
|
+ "sort": this.extraTasks.length + 1,
|
|
|
+ "timeRange": [],
|
|
|
+ "requiredFieldsValue": [],
|
|
|
+ "isExtraTask": true
|
|
|
+ });
|
|
|
+ },
|
|
|
+ deleteExtraTask(index) {
|
|
|
+ this.extraTasks.splice(index, 1);
|
|
|
+ },
|
|
|
+ // 为额外任务添加时间范围变化处理方法
|
|
|
+ onExtraTaskTimeRangeChange(index) {
|
|
|
+ const task = this.extraTasks[index];
|
|
|
+ if (task.timeRange && task.timeRange.length === 2) {
|
|
|
+ task.durationHours = this.calcWorkHoursExact(task.timeRange[0], task.timeRange[1]);
|
|
|
+ } else {
|
|
|
+ task.durationHours = 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
</script>
|