From 9a1d82934b883a08c71b17d9d6f923ec4fb7f03c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=AA=86=E4=B9=90?= <342503599@qq.com>
Date: Sat, 5 Nov 2022 13:35:16 +0800
Subject: [PATCH] =?UTF-8?q?=E7=94=98=E7=89=B9=E5=9B=BE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
public/doc/ExtGantt/Ext甘特图.html | 497 ++++++++++--------
.../doc/ExtGantt/Ext甘特图_files/GanttMenu.js | 238 +++++----
public/doc/ExtGantt/Ext甘特图_files/add.html | 42 ++
src/assets/js/api/scheduleInfo.js | 5 +-
.../projectFront/scheduleManage/ganttwo.vue | 74 +--
.../scheduleManage/projectNodeDetail.vue | 70 ++-
.../scheduleManage/projectNodeManage2.vue | 39 +-
.../projectFront/scheduleManage/warning.vue | 118 ++---
8 files changed, 624 insertions(+), 459 deletions(-)
create mode 100644 public/doc/ExtGantt/Ext甘特图_files/add.html
diff --git a/public/doc/ExtGantt/Ext甘特图.html b/public/doc/ExtGantt/Ext甘特图.html
index 0ab3373a..41aa88b2 100644
--- a/public/doc/ExtGantt/Ext甘特图.html
+++ b/public/doc/ExtGantt/Ext甘特图.html
@@ -1,7 +1,6 @@
-
Ext甘特图
@@ -18,72 +17,6 @@
-
-
-
-
@@ -113,10 +46,10 @@
window.onload = () => {
console.log('window.onload')
var parentUrl = getParentUrl()
- console.log('parentUrl',parentUrl)
- if(parentUrl.indexOf('dataBoard')!=-1){
+ console.log('parentUrl', parentUrl)
+ if (parentUrl.indexOf('dataBoard') != -1) {
document.getElementById('ext-gen3').classList.add('greyBox')
- }else{
+ } else {
document.getElementById('ext-gen3').classList.remove('greyBox')
}
@@ -129,6 +62,21 @@
var listData = [];
//转换时间戳
+ // function formatDateTime(inputTime) {
+ // var date = new Date(inputTime);
+ // var y = date.getFullYear();
+ // var m = date.getMonth() + 1;
+ // m = m < 10 ? ('0' + m) : m;
+ // var d = date.getDate();
+ // d = d < 10 ? ('0' + d) : d;
+ // var h = date.getHours();
+ // h = h < 10 ? ('0' + h) : h;
+ // var minute = date.getMinutes();
+ // var second = date.getSeconds();
+ // minute = minute < 10 ? ('0' + minute) : minute;
+ // second = second < 10 ? ('0' + second) : second;
+ // return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
+ // };
function formatDateTime(inputTime) {
var date = new Date(inputTime);
var y = date.getFullYear();
@@ -136,61 +84,93 @@
m = m < 10 ? ('0' + m) : m;
var d = date.getDate();
d = d < 10 ? ('0' + d) : d;
- var h = date.getHours();
- h = h < 10 ? ('0' + h) : h;
- var minute = date.getMinutes();
- var second = date.getSeconds();
- minute = minute < 10 ? ('0' + minute) : minute;
- second = second < 10 ? ('0' + second) : second;
- return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
+ return y + '-' + m + '-' + d
};
-
-
- //获取列表数据
getListData = () => {
- axios.defaults.headers.common['Authorization'] = 'Bearer'+' '+ token;
- axios.post(requestUrl + 'xmgl/progressManage/viewProjectProgressManageList', { projectSn }).then(res => {
+ axios.defaults.headers.common['Authorization'] = 'Bearer' + ' ' + token;
+ axios.get(requestUrl + 'xmgl/progressTask/getParentChildList', { params: { projectSn: projectSn }, }).then(res => {
if (res.data.code == 200) {
- console.log(res.data.result)
+ console.log('查询结果', res.data.result)
let dataArr = res.data.result;
let number = 0;
- let type= false;
+ let type = false;
for (let i = 0; i < dataArr.length; i++) {
let data = {
- "UID": dataArr[i].tempBranchId, //任务唯一标识符
- "PercentComplete": dataArr[i].progressRatio, //完成百分比
- "Duration": dataArr[i].duration, //工期
- "Finish": dataArr[i].branchEndTime, //完成日期
- "Start": dataArr[i].branchStartTime, //开始日期
- "Name": dataArr[i].branchProjectName, //任务名称
+ "id": dataArr[i].id,
+ // "UID": dataArr[i].id, //任务唯一标识符
+ "taskName": dataArr[i].taskName, //任务名称
+ "progressRatio": dataArr[i].progressRatio, //完成百分比
+ "duration": dataArr[i].duration, //工期
+ "Start": dataArr[i].startDate, //计划开始日期
+ "Finish": dataArr[i].finishDate, //计划完成日期
+ "actualStartDate": dataArr[i].actualStartDate, //实际开始日期
+ "actualFinishDate": dataArr[i].actualFinishDate, //实际完成日期
"children": [], //子级
- "Note": '', //备注
- 'branchId': dataArr[i].branchId,
+ "remark": dataArr[i].remark, //备注
+ // "PredecessorLink":dataArr[i].predecessorIds,
+ "PredecessorLink": [
+ {
+ "PredecessorUID": dataArr[i].predecessorIds
+ }
+ ],
}
+ console.log('参数传进去了吗',data.PredecessorLink)
if (dataArr[i].children.length > 0) {
+ let threeData = dataArr[i].children
+ let threeNum = 0
for (let j = 0; j < dataArr[i].children.length; j++) {
+ console.log('有关联的前置任务嘛', dataArr[i].children[j].predecessorIds)
number++;
let children = {
- "UID":number,
- "Name": dataArr[i].children[j].subitemProjectName, //名称
- "Duration": dataArr[i].children[j].duration, //工期
- "PercentComplete": dataArr[i].children[j].progressRatio, //进度
- "Finish": dataArr[i].children[j].endTime, //完成日期
- "Start": dataArr[i].children[j].startTime, //开始日期
+ "id": dataArr[i].children[j].id,
+ "UID": number, //任务唯一标识符
+ "taskName": dataArr[i].children[j].taskName, //任务名称
+ "progressRatio": dataArr[i].children[j].progressRatio, //完成百分比
+ "duration": dataArr[i].children[j].duration, //工期
+ "Start": dataArr[i].children[j].startDate, //计划开始日期
+ "Finish": dataArr[i].children[j].finishDate, //计划完成日期
+ "actualStartDate": dataArr[i].children[j].actualStartDate, //实际开始日期
+ "actualFinishDate": dataArr[i].children[j].actualFinishDate, //实际完成日期
+ "children": [], //子级
+ "remark": dataArr[i].children[j].remark, //备注
+ // "PredecessorLink":dataArr[i].children[j].predecessorIds,
"PredecessorLink": [ //前置任务字段
- {
- "Type": 1,
- "PredecessorUID": number-1
- }
- ],
- "Note": dataArr[i].children[j].taskDescription //备注
+ {
+ "PredecessorUID": dataArr[i].children[j].predecessorIds
+ }
+ ],
};
-
+ console.log('参数传进去了吗2222',children.PredecessorLink)
data.children.push(children);
+ if (threeData[j].children.length > 0) {
+ for (let k = 0; k < threeData[j].children.length; k++) {
+ number++;
+ console.log('threeData[j].children', threeData[j].children[k])
+ let children2 = {
+ "id": threeData[j].children[k].id,
+ "UID": number,
+ "taskName": threeData[j].children[k].taskName, //任务名称
+ "progressRatio": threeData[j].children[k].progressRatio, //完成百分比
+ "duration": threeData[j].children[k].duration, //工期
+ "Start": threeData[j].children[k].startDate, //计划开始日期
+ "Finish": threeData[j].children[k].finishDate, //计划完成日期
+ "actualStartDate": threeData[j].children[k].actualStartDate, //实际开始日期
+ "actualFinishDate": threeData[j].children[k].actualFinishDate, //实际完成日期
+ "children": [], //子级
+ "remark": threeData[j].children[k].remark, //备注
+ // "PredecessorLink":threeData[j].children[k].predecessorIds,
+ "PredecessorLink": [ //前置任务字段
+ {
+ "PredecessorUID": threeData[j].children[k].predecessorIds
+ }
+ ],
+ };
+ data.children[0].children.push(children2)
+ }
+ }
}
};
- console.log(data)
- // debugger;
+ console.log('此时递归后的data数据', data)
number++;
listData.push(data)
}
@@ -200,7 +180,6 @@
gantt.loadTasks(listData);
gantt.unmask();
})
-
}
getListData();
@@ -272,9 +251,147 @@
gantt.setStyle("width:100%;height:100%");
gantt.render(extControl.dom);
+ var columns = [];
+ var idColumn = {
+ name: "id",
+ field: "id",
+ header: "ID
String",
+ width: 50,
+ editor: {
+ type: "textbox"
+ }
+ };
+ columns.push(idColumn);
+ var stringColumn = {
+ name: "name",
+ header: "任务名称
String",
+ field: "taskName",
+ width: 150,
+ editor: {
+ type: "textbox"
+ }
+ };
+ columns.push(stringColumn);
+ var linkColumn = {
+ name: "predecessorLink",
+ header: "前置任务
Array",
+ field: "predecessorLink",
+ width: 150,
+ editor: {
+ type: "textbox"
+ },
+ // renderer: function (e) {
+ // console.log('前置任务',e)
+ // console.log('====e.value',e.value)
+ // if (!e.value) return "";
+ // },
+ };
+ columns.push(linkColumn);
+ var dateColumn1 = {
+ header: "计划开始日期
Date",
+ field: "Start",
+ width: 100,
+ renderer: function (e) {
+ var date = e.value;
+ if (!date) return "";
+ return formatDateTime(e.value)
+ },
+ editor: {
+ type: "datepicker"
+ }
+ };
+ columns.push(dateColumn1);
+ var dateColumn2 = {
+ header: "计划完成日期
Date",
+ field: "Finish",
+ width: 100,
+ renderer: function (e) {
+ var date = e.value;
+ if (!date) return "";
+ return formatDateTime(e.value)
+ },
+ editor: {
+ type: "datepicker"
+ }
+ };
+ columns.push(dateColumn2);
+ var dateColumn3 = {
+ header: "实际开始日期
Date",
+ field: "actualStartDate",
+ width: 100,
+ renderer: function (e) {
+ var date = e.value;
+ if (!date) return "";
+ return formatDateTime(e.value)
+ },
+ editor: {
+ type: "datepicker"
+ }
+ };
+ columns.push(dateColumn3);
+ var dateColumn4 = {
+ header: "实际完成日期
Date",
+ field: "actualFinishDate",
+ width: 100,
+ renderer: function (e) {
+ var date = e.value;
+ if (!date) return "";
+ return formatDateTime(e.value)
+ },
+ editor: {
+ type: "datepicker"
+ }
+ };
+ columns.push(dateColumn4);
+ var durationColumn = {
+ name: "duration",
+ header: "工期
String",
+ field: "duration",
+ width: 60,
+ editor: {
+ type: "textbox"
+ }
+ };
+ columns.push(durationColumn);
+ var proColumn = {
+ name: "percentComplete",
+ header: "进度比例
String",
+ field: "progressRatio",
+ width: 60,
+ editor: {
+ type: "textbox"
+ }
+ };
+ columns.push(proColumn);
+ var remarkColumn = {
+ name: "remark",
+ header: "备注
String",
+ field: "remark",
+ width: 150,
+ editor: {
+ type: "textbox",
+ }
+ };
+ columns.push(remarkColumn);
+ //将列集合数组设置给甘特图
+ gantt.setColumns(columns);
+ gantt.setTreeColumn("name")
+ gantt.addTask({
+ name: "11111"
+ })
+ // // 新增时触发
+ // var cellCommitAdd = (e) => {
+ // let uid = e.task.UID; //修改行的id
+ // let text = e.text; //修改 作用于时间
+ // let field = e.field; //修改的字段
+ // let value = e.value; //修改的内容
+ // var task = e.task; //修改的内容
+ // }
+ // console.log('====新增的参数',cellCommitAdd)
+
//右键菜单
var ganttMenu = new GanttMenu();
- console.log('右键菜单有哪些',ganttMenu)
+ console.log('右键菜单有哪些', ganttMenu)
gantt.setContextMenu(ganttMenu);
gantt.loading();
//渲染
@@ -283,97 +400,55 @@
gantt.loadTasks(data);
gantt.unmask();
}, 3000)
- //修改参数时触发
+
var cellCommitEdit = (e) => {
- let uid = e.task.UID; //修改行的id
- let text = e.text; //修改 作用于时间
- let field = e.field; //修改的字段
- let value = e.value; //修改的内容
- var task = e.task; //修改的内容
- let stair = typeof (uid) != 'number' && uid.indexOf('b') == 0 ? true : false; //是不是一级
- let branchId = '';
- //是一级 循环获取一级的id;
- if (stair) {
- if(field == 'PercentComplete'){
- alert('这里修改进度无效,将不会保存')
- return
- }
- if(field == 'Note'){
- alert('一级修改备注无效,将不会保存')
- return
- }
- if(field == 'PredecessorLink'){
- alert('一级设置前置任务无效,将不会保存')
- return
- }
- for (let i = 0; i < listData.length; i++) {
- if (listData[i].UID == uid) {
- branchId = listData[i].branchId;
- }
- }
- //请求的内容
- let requestData = {
- id: branchId,
- projectSn: projectSn
- }
- field == 'Name' ? requestData.branchProjectName = value : '';
- // field == 'Note' ? requestData.taskDescription = value : '';
- // field == 'PercentComplete' ? requestData.progressRatio = value : '';
- setTimeout(() => {
- axios.post(requestUrl + 'xmgl/progressManage/edit', requestData).then(res => {
- if (res.data.code == 200) {
- }
- })
- }, 200)
+ var data = {
+ taskName: e.task.taskName,
+ Start: e.task.Start,
+ Finish: e.task.Finish,
+ actualStartDate: e.task.actualStartDate,
+ actualFinishDate: e.task.actualFinishDate,
+ duration: e.task.duration,
+ progressRatio: e.task.progressRatio,
+ remark: e.task.remark,
+ id: e.task.id,
+ projectSn: projectSn
+ }
+ data[e.field] = e.value
+ let data2={};
+ for(let d in data){
+ if(d=='Start'||d=='Finish'){
+ if(d=='Start'){
+ data2.startDate=data[d]
+ }else if(d=='finishDate'){
+ data2.startDate=data[d]
+ }
+ }else{
+ data2[d]=data[d]
+ }
- } else {
- //二级修改
- let requestData = {
- id: uid,
- projectSn: projectSn
- };
- //修改的是工期时
- if (field == 'Duration') {
- setTimeout(() => {
- let startTime = formatDateTime(task.Start).substring(0, 10);
- let endTime = formatDateTime(task.Finish).substring(0, 10);
- requestData.duration = value;
- requestData.startTime = startTime;
- requestData.endTime = endTime;
- }, 100)
- }
- //修改开始时间 或 结束时间
- if (field == 'Start' || field == 'Finish') {
- setTimeout(() => {
- let startTime = formatDateTime(task.Start).substring(0, 10);
- let endTime = formatDateTime(task.Finish).substring(0, 10);
- requestData.startTime = startTime;
- requestData.endTime = endTime;
- }, 100)
- }
-
- if(field == 'PercentComplete'){
- alert('这里修改进度无效,将不会保存')
- return
- }
-
- field == 'Name' ? requestData.branchProjectName = value : '';
- field == 'PredecessorLink' ? requestData.predecessoruid = value : '';
-
- field == 'Note' ? requestData.taskDescription = value : '';
-
- setTimeout(() => {
- axios.post(requestUrl + 'xmgl/progressItem/edit', requestData).then(res => {
- if (res.data.code == 200) {
- }
- })
- }, 200)
}
- // var project = e.source;
- // var task = e.task;
- //e是事件对象, 具体请看每个事件的"参数类型"
- };
+ // let {Start:startDate,Finish:finishDate}=data
+ // let startDate=data.
+
+ // let uid = e.task.UID; //修改行的id
+ // let text = e.text; //修改 作用于时间
+ // let field = e.field; //修改的字段
+ // let value = e.value; //修改的内容
+ // var task = e.task; //修改的内容
+ // // 请求接口的参数
+ console.log('参数', data2)
+ setTimeout(() => {
+ axios.post(requestUrl + 'xmgl/progressTask/updateProgressTask', data2).then(res => {
+ console.log('修改返回', res)
+ if (res.data.code == 200) {
+ alert('编辑成功!')
+ }
+ })
+ }, 500)
+
+ }
//右侧 拖拽
var itemdragcomplete = (e) => {
@@ -397,23 +472,23 @@
gantt.on('itemdragcomplete', itemdragcomplete);
}
- function getParentUrl(){
+ function getParentUrl() {
var url = "";
- try {
- url = window.top.document.location.href
- } catch(M) {
- if (window.parent) {
- try {
- url = window.parent.document.location.href
- } catch(L) {
- url = ""
+ try {
+ url = window.top.document.location.href
+ } catch (M) {
+ if (window.parent) {
+ try {
+ url = window.parent.document.location.href
+ } catch (L) {
+ url = ""
+ }
}
}
- }
- if (url === "") {
- url = document.location.href
- }
- return url
+ if (url === "") {
+ url = document.location.href
+ }
+ return url
}
@@ -424,4 +499,4 @@
style="position: absolute; z-index: 1006; display: none; top: 580px; left: 802px; width: 100px;">
-
+