甘特图排产

This commit is contained in:
JinLu.Yin 2022-05-17 12:25:19 +08:00
parent 64b4f6269a
commit a10bbcc09f
2 changed files with 103 additions and 3 deletions

View File

@ -1,14 +1,47 @@
<template>
<div class="app-container">
<el-row :gutter="10" class="mb8">
<el-col :span="1"></el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
@click="handleUpdate"
v-hasPermi="['mes:pro:schedule:edit']"
>保存</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
@click="handleClose"
>关闭</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-refresh"
size="mini"
@click="handleRefresh"
>重新加载</el-button>
</el-col>
</el-row>
<div class="wrapper">
<div class="container">
<GanttChar class="left-container" ref="ganttChar" optType="edit" :tasks="tasks"></GanttChar>
<GanttChar class="left-container" ref="ganttChar" optType="edit" :ids="changedTaskIds" :tasks="tasks"></GanttChar>
</div>
</div>
</div>
</template>
<script>
import GanttChar from "./ganttx.vue";
import {listGanttTaskList} from "@/api/mes/pro/protask";
import {listGanttTaskList,updateProtask} from "@/api/mes/pro/protask";
export default {
name:'',
components:{GanttChar},
@ -18,6 +51,7 @@ export default {
data: [],
links: []
},
changedTaskIds:[],
optType:'edit',
//
queryParams: {
@ -42,6 +76,17 @@ export default {
ancestors: null,
status: null,
},
form:{
taskId: null,
startTime: null,
duration: null,
endTime: null
}
}
},
watch: {
tasks(){
console.log("TaskChanged");
}
},
created(){
@ -50,12 +95,51 @@ export default {
methods: {
getGanttTasks(){
listGanttTaskList(this.queryParams).then(response =>{
debugger;
this.tasks.data = response.data.data;
this.tasks.links = response.data.links;
this.$refs.ganttChar.reload();
});
},
handleUpdate(){
debugger;
if(this.changedTaskIds.length>0){
this.reset();
this.changedTaskIds.forEach(id => {
debugger;
let nTask = this.tasks.data.filter(task => task.id == id)[0];
let startDate = new Date(nTask.start_date);
let endDate = new Date(nTask.end_date);
this.form.taskId = nTask.id;
this.form.startTime = startDate.getFullYear()+'-'+(startDate.getMonth()+1)+'-'+startDate.getDate()+' '+startDate.getHours()+':'+startDate.getMinutes()+':'+startDate.getSeconds();
this.form.duration = nTask.duration;
this.form.endTime = endDate.getFullYear()+'-'+(endDate.getMonth()+1)+'-'+endDate.getDate()+' '+endDate.getHours()+':'+endDate.getMinutes()+':'+endDate.getSeconds();
updateProtask(this.form).then(response =>{
console.log("update success:"+id);
},err =>{
debugger;
console.log("update failed:"+err.msg);
});
});
this.changedTaskIds =[];
this.$modal.msgSuccess("保存成功");
}
},
handleRefresh(){
this.$refs.ganttChar.reload();
},
handleClose(){
const obj = { path: "/mes/pro/proschedule" };
this.$tab.closeOpenPage(obj);
},
reset() {
this.form = {
taskId: null,
startTime: null,
duration: null,
endTime: null,
};
},
}
}
</script>

View File

@ -23,6 +23,12 @@ export default {
default (){
return 'view'
}
},
ids: {
type: Array,
default (){
return []
}
}
},
@ -168,6 +174,16 @@ export default {
// 3.7
gantt.config.details_on_dblclick = true;
let t = this.$props.tasks;
let c = this.$props.ids;
gantt.attachEvent("onAfterTaskUpdate",function(id,obj){
debugger;
let tt = t.data.filter( item=> item.id == id);
tt=obj;
c.push(id);
});
}
}
}