甘特图新增弹窗
This commit is contained in:
parent
9a1d82934b
commit
5771243166
@ -1,22 +1,29 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<!-- saved from url=(0049)http://www.plusgantt.com/gantt/demo/ExtGantt.html -->
|
<!-- saved from url=(0049)http://www.plusgantt.com/gantt/demo/ExtGantt.html -->
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml" class=" ext-strict x-viewport">
|
<html xmlns="http://www.w3.org/1999/xhtml" class=" ext-strict x-viewport">
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||||
<title>Ext甘特图</title>
|
<title>Ext甘特图</title>
|
||||||
|
|
||||||
<meta name="keywords" content="extgantt,extjs,gantt,甘特图">
|
<meta name="keywords" content="extgantt,extjs,gantt,甘特图" />
|
||||||
<meta name="description" content="普加甘特图可以与ExtJS无缝集成">
|
<meta name="description" content="普加甘特图可以与ExtJS无缝集成" />
|
||||||
<!--extjs css-->
|
<!--extjs css-->
|
||||||
<link href="./Ext甘特图_files/ext-all.css" rel="stylesheet" type="text/css">
|
<link
|
||||||
<link href="./Ext甘特图_files/icons.css" rel="stylesheet" type="text/css">
|
href="./Ext甘特图_files/ext-all.css"
|
||||||
<link href="./Ext甘特图_files/miniui.css" rel="stylesheet" type="text/css">
|
rel="stylesheet"
|
||||||
<link href="./Ext甘特图_files/skin.css" rel="stylesheet" type="text/css">
|
type="text/css"
|
||||||
|
/>
|
||||||
|
<link href="./Ext甘特图_files/icons.css" rel="stylesheet" type="text/css" />
|
||||||
|
<link
|
||||||
|
href="./Ext甘特图_files/miniui.css"
|
||||||
|
rel="stylesheet"
|
||||||
|
type="text/css"
|
||||||
|
/>
|
||||||
|
<link href="./Ext甘特图_files/skin.css" rel="stylesheet" type="text/css" />
|
||||||
<!-- <link href="./Ext甘特图_files/skin.css" rel="stylesheet" type="text/css"> -->
|
<!-- <link href="./Ext甘特图_files/skin.css" rel="stylesheet" type="text/css"> -->
|
||||||
|
</head>
|
||||||
|
|
||||||
</head>
|
<body class="ext-webkit ext-chrome ext-mac x-border-layout-ct" id="ext-gen3">
|
||||||
|
|
||||||
<body class="ext-webkit ext-chrome ext-mac x-border-layout-ct" id="ext-gen3">
|
|
||||||
<!--引入ExtJS-->
|
<!--引入ExtJS-->
|
||||||
<script type="text/javascript" src="./Ext甘特图_files/ext-base.js"></script>
|
<script type="text/javascript" src="./Ext甘特图_files/ext-base.js"></script>
|
||||||
<script type="text/javascript" src="./Ext甘特图_files/ext-all.js"></script>
|
<script type="text/javascript" src="./Ext甘特图_files/ext-all.js"></script>
|
||||||
@ -24,18 +31,54 @@
|
|||||||
<script src="./Ext甘特图_files/jquery.js" type="text/javascript"></script>
|
<script src="./Ext甘特图_files/jquery.js" type="text/javascript"></script>
|
||||||
<script src="./Ext甘特图_files/miniui.js" type="text/javascript"></script>
|
<script src="./Ext甘特图_files/miniui.js" type="text/javascript"></script>
|
||||||
<script src="./Ext甘特图_files/zh_CN.js" type="text/javascript"></script>
|
<script src="./Ext甘特图_files/zh_CN.js" type="text/javascript"></script>
|
||||||
<script src="./Ext甘特图_files/CalendarWindow.js" type="text/javascript"></script>
|
<script
|
||||||
<script src="./Ext甘特图_files/ProjectMenu.js" type="text/javascript"></script>
|
src="./Ext甘特图_files/CalendarWindow.js"
|
||||||
<script src="./Ext甘特图_files/StatusColumn.js" type="text/javascript"></script>
|
type="text/javascript"
|
||||||
<script src="./Ext甘特图_files/TaskWindow.js" type="text/javascript"></script>
|
></script>
|
||||||
<script src="./Ext甘特图_files/ResourcesWindow.js" type="text/javascript"></script>
|
<script
|
||||||
<script src="./Ext甘特图_files/ProjectServices.js" type="text/javascript"></script>
|
src="./Ext甘特图_files/ProjectMenu.js"
|
||||||
<script src="./Ext甘特图_files/swfobject.js" type="text/javascript"></script>
|
type="text/javascript"
|
||||||
<script src="./Ext甘特图_files/GanttService.js" type="text/javascript"></script>
|
></script>
|
||||||
<script src="./Ext甘特图_files/GanttMenu.js" type="text/javascript"></script>
|
<script
|
||||||
<script src="./Ext甘特图_files/GanttSchedule.js" type="text/javascript"></script>
|
src="./Ext甘特图_files/StatusColumn.js"
|
||||||
<script src="./Ext甘特图_files/RGanttMenu.js" type="text/javascript"></script>
|
type="text/javascript"
|
||||||
<script src="./Ext甘特图_files/RGanttSchedule.js" type="text/javascript"></script>
|
></script>
|
||||||
|
<script
|
||||||
|
src="./Ext甘特图_files/TaskWindow.js"
|
||||||
|
type="text/javascript"
|
||||||
|
></script>
|
||||||
|
<script
|
||||||
|
src="./Ext甘特图_files/ResourcesWindow.js"
|
||||||
|
type="text/javascript"
|
||||||
|
></script>
|
||||||
|
<script
|
||||||
|
src="./Ext甘特图_files/ProjectServices.js"
|
||||||
|
type="text/javascript"
|
||||||
|
></script>
|
||||||
|
<script
|
||||||
|
src="./Ext甘特图_files/swfobject.js"
|
||||||
|
type="text/javascript"
|
||||||
|
></script>
|
||||||
|
<script
|
||||||
|
src="./Ext甘特图_files/GanttService.js"
|
||||||
|
type="text/javascript"
|
||||||
|
></script>
|
||||||
|
<script
|
||||||
|
src="./Ext甘特图_files/GanttMenu.js"
|
||||||
|
type="text/javascript"
|
||||||
|
></script>
|
||||||
|
<script
|
||||||
|
src="./Ext甘特图_files/GanttSchedule.js"
|
||||||
|
type="text/javascript"
|
||||||
|
></script>
|
||||||
|
<script
|
||||||
|
src="./Ext甘特图_files/RGanttMenu.js"
|
||||||
|
type="text/javascript"
|
||||||
|
></script>
|
||||||
|
<script
|
||||||
|
src="./Ext甘特图_files/RGanttSchedule.js"
|
||||||
|
type="text/javascript"
|
||||||
|
></script>
|
||||||
|
|
||||||
<!-- 引入axios -->
|
<!-- 引入axios -->
|
||||||
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
|
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
|
||||||
@ -44,21 +87,22 @@
|
|||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
//页面加载就绪
|
//页面加载就绪
|
||||||
window.onload = () => {
|
window.onload = () => {
|
||||||
console.log('window.onload')
|
console.log("window.onload");
|
||||||
var parentUrl = getParentUrl()
|
var parentUrl = getParentUrl();
|
||||||
console.log('parentUrl', parentUrl)
|
console.log("parentUrl", parentUrl);
|
||||||
if (parentUrl.indexOf('dataBoard') != -1) {
|
if (parentUrl.indexOf("dataBoard") != -1) {
|
||||||
document.getElementById('ext-gen3').classList.add('greyBox')
|
document.getElementById("ext-gen3").classList.add("greyBox");
|
||||||
} else {
|
} else {
|
||||||
document.getElementById('ext-gen3').classList.remove('greyBox')
|
document.getElementById("ext-gen3").classList.remove("greyBox");
|
||||||
}
|
}
|
||||||
|
|
||||||
//获取请求地址
|
//获取请求地址
|
||||||
let url = window.parent.document.getElementById("iframe").contentWindow.location.search;
|
let url = window.parent.document.getElementById("iframe").contentWindow
|
||||||
var parameter = url.split('='); //所有参数
|
.location.search;
|
||||||
var requestUrl = parameter[1].split('&')[0]; //请求服务器的地址
|
var parameter = url.split("="); //所有参数
|
||||||
var projectSn = parameter[2].split('&')[0]; //projectSn
|
var requestUrl = parameter[1].split("&")[0]; //请求服务器的地址
|
||||||
var token = parameter[3]
|
var projectSn = parameter[2].split("&")[0]; //projectSn
|
||||||
|
var token = parameter[3];
|
||||||
var listData = [];
|
var listData = [];
|
||||||
|
|
||||||
//转换时间戳
|
//转换时间戳
|
||||||
@ -81,114 +125,137 @@
|
|||||||
var date = new Date(inputTime);
|
var date = new Date(inputTime);
|
||||||
var y = date.getFullYear();
|
var y = date.getFullYear();
|
||||||
var m = date.getMonth() + 1;
|
var m = date.getMonth() + 1;
|
||||||
m = m < 10 ? ('0' + m) : m;
|
m = m < 10 ? "0" + m : m;
|
||||||
var d = date.getDate();
|
var d = date.getDate();
|
||||||
d = d < 10 ? ('0' + d) : d;
|
d = d < 10 ? "0" + d : d;
|
||||||
return y + '-' + m + '-' + d
|
return y + "-" + m + "-" + d;
|
||||||
};
|
}
|
||||||
getListData = () => {
|
getListData = () => {
|
||||||
axios.defaults.headers.common['Authorization'] = 'Bearer' + ' ' + token;
|
axios.defaults.headers.common["Authorization"] =
|
||||||
axios.get(requestUrl + 'xmgl/progressTask/getParentChildList', { params: { projectSn: projectSn }, }).then(res => {
|
"Bearer" + " " + token;
|
||||||
|
axios
|
||||||
|
.get(requestUrl + "xmgl/progressTask/getParentChildList", {
|
||||||
|
params: { projectSn: projectSn },
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
if (res.data.code == 200) {
|
if (res.data.code == 200) {
|
||||||
console.log('查询结果', res.data.result)
|
console.log("查询结果", res.data.result);
|
||||||
let dataArr = res.data.result;
|
let dataArr = res.data.result;
|
||||||
let number = 0;
|
let number = 0;
|
||||||
let type = false;
|
let type = false;
|
||||||
for (let i = 0; i < dataArr.length; i++) {
|
for (let i = 0; i < dataArr.length; i++) {
|
||||||
let data = {
|
let data = {
|
||||||
"id": dataArr[i].id,
|
id: dataArr[i].id,
|
||||||
// "UID": dataArr[i].id, //任务唯一标识符
|
// "UID": dataArr[i].id, //任务唯一标识符
|
||||||
"taskName": dataArr[i].taskName, //任务名称
|
taskName: dataArr[i].taskName, //任务名称
|
||||||
"progressRatio": dataArr[i].progressRatio, //完成百分比
|
PercentComplete: dataArr[i].progressRatio, //完成百分比
|
||||||
"duration": dataArr[i].duration, //工期
|
duration: dataArr[i].duration, //工期
|
||||||
"Start": dataArr[i].startDate, //计划开始日期
|
Start: dataArr[i].startDate, //计划开始日期
|
||||||
"Finish": dataArr[i].finishDate, //计划完成日期
|
Finish: dataArr[i].finishDate, //计划完成日期
|
||||||
"actualStartDate": dataArr[i].actualStartDate, //实际开始日期
|
actualStartDate: dataArr[i].actualStartDate, //实际开始日期
|
||||||
"actualFinishDate": dataArr[i].actualFinishDate, //实际完成日期
|
actualFinishDate: dataArr[i].actualFinishDate, //实际完成日期
|
||||||
"children": [], //子级
|
children: [], //子级
|
||||||
"remark": dataArr[i].remark, //备注
|
remark: dataArr[i].remark, //备注
|
||||||
// "PredecessorLink":dataArr[i].predecessorIds,
|
// "PredecessorLink":dataArr[i].predecessorIds,
|
||||||
"PredecessorLink": [
|
PredecessorLink: [
|
||||||
{
|
{
|
||||||
"PredecessorUID": dataArr[i].predecessorIds
|
Type: 1,
|
||||||
}
|
PredecessorUID: number-1
|
||||||
],
|
},
|
||||||
}
|
|
||||||
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 = {
|
|
||||||
"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": [ //前置任务字段
|
|
||||||
{
|
|
||||||
"PredecessorUID": dataArr[i].children[j].predecessorIds
|
|
||||||
}
|
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
console.log('参数传进去了吗2222',children.PredecessorLink)
|
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 = {
|
||||||
|
id: dataArr[i].children[j].id,
|
||||||
|
UID: number, //任务唯一标识符
|
||||||
|
taskName: dataArr[i].children[j].taskName, //任务名称
|
||||||
|
PercentComplete: 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
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
console.log(
|
||||||
|
"参数传进去了吗2222",
|
||||||
|
children.PredecessorLink
|
||||||
|
);
|
||||||
data.children.push(children);
|
data.children.push(children);
|
||||||
if (threeData[j].children.length > 0) {
|
if (threeData[j].children.length > 0) {
|
||||||
for (let k = 0; k < threeData[j].children.length; k++) {
|
for (let k = 0; k < threeData[j].children.length; k++) {
|
||||||
number++;
|
number++;
|
||||||
console.log('threeData[j].children', threeData[j].children[k])
|
console.log(
|
||||||
|
"threeData[j].children",
|
||||||
|
threeData[j].children[k]
|
||||||
|
);
|
||||||
let children2 = {
|
let children2 = {
|
||||||
"id": threeData[j].children[k].id,
|
id: threeData[j].children[k].id,
|
||||||
"UID": number,
|
UID: number,
|
||||||
"taskName": threeData[j].children[k].taskName, //任务名称
|
taskName: threeData[j].children[k].taskName, //任务名称
|
||||||
"progressRatio": threeData[j].children[k].progressRatio, //完成百分比
|
PercentComplete:
|
||||||
"duration": threeData[j].children[k].duration, //工期
|
threeData[j].children[k].progressRatio, //完成百分比
|
||||||
"Start": threeData[j].children[k].startDate, //计划开始日期
|
duration: threeData[j].children[k].duration, //工期
|
||||||
"Finish": threeData[j].children[k].finishDate, //计划完成日期
|
Start: threeData[j].children[k].startDate, //计划开始日期
|
||||||
"actualStartDate": threeData[j].children[k].actualStartDate, //实际开始日期
|
Finish: threeData[j].children[k].finishDate, //计划完成日期
|
||||||
"actualFinishDate": threeData[j].children[k].actualFinishDate, //实际完成日期
|
actualStartDate:
|
||||||
"children": [], //子级
|
threeData[j].children[k].actualStartDate, //实际开始日期
|
||||||
"remark": threeData[j].children[k].remark, //备注
|
actualFinishDate:
|
||||||
|
threeData[j].children[k].actualFinishDate, //实际完成日期
|
||||||
|
children: [], //子级
|
||||||
|
remark: threeData[j].children[k].remark, //备注
|
||||||
// "PredecessorLink":threeData[j].children[k].predecessorIds,
|
// "PredecessorLink":threeData[j].children[k].predecessorIds,
|
||||||
"PredecessorLink": [ //前置任务字段
|
PredecessorLink: [
|
||||||
|
//前置任务字段
|
||||||
{
|
{
|
||||||
"PredecessorUID": threeData[j].children[k].predecessorIds
|
Type: 1,
|
||||||
}
|
PredecessorUID:number-1
|
||||||
|
},
|
||||||
],
|
],
|
||||||
};
|
};
|
||||||
data.children[0].children.push(children2)
|
data.children[0].children.push(children2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
console.log('此时递归后的data数据', data)
|
console.log("此时递归后的data数据", data);
|
||||||
number++;
|
number++;
|
||||||
listData.push(data)
|
listData.push(data);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
alert(res.data.message)
|
alert(res.data.message);
|
||||||
}
|
}
|
||||||
gantt.loadTasks(listData);
|
gantt.loadTasks(listData);
|
||||||
gantt.unmask();
|
gantt.unmask();
|
||||||
})
|
});
|
||||||
}
|
};
|
||||||
getListData();
|
getListData();
|
||||||
|
|
||||||
//创建ext面板
|
//创建ext面板
|
||||||
var viewport = new Ext.Viewport({
|
var viewport = new Ext.Viewport({
|
||||||
layout: 'border',
|
layout: "border",
|
||||||
items: [
|
items: [
|
||||||
new Ext.BoxComponent({
|
new Ext.BoxComponent({
|
||||||
region: 'north',
|
region: "north",
|
||||||
height: 0,
|
height: 0,
|
||||||
// autoEl: {
|
// autoEl: {
|
||||||
// tag: 'div',
|
// tag: 'div',
|
||||||
@ -196,32 +263,35 @@
|
|||||||
// }
|
// }
|
||||||
}),
|
}),
|
||||||
{
|
{
|
||||||
region: 'west',
|
region: "west",
|
||||||
id: 'west-panel',
|
id: "west-panel",
|
||||||
title: 'West',
|
title: "West",
|
||||||
split: false,
|
split: false,
|
||||||
width: 0,
|
width: 0,
|
||||||
minSize: 175,
|
minSize: 175,
|
||||||
maxSize: 400,
|
maxSize: 400,
|
||||||
collapsible: true,
|
collapsible: true,
|
||||||
margins: '0 0 0 0',
|
margins: "0 0 0 0",
|
||||||
layout: {
|
layout: {
|
||||||
type: 'accordion',
|
type: "accordion",
|
||||||
animate: true
|
animate: true,
|
||||||
},
|
},
|
||||||
items: [{
|
items: [
|
||||||
title: 'Navigation',
|
{
|
||||||
|
title: "Navigation",
|
||||||
border: false,
|
border: false,
|
||||||
iconCls: 'nav'
|
iconCls: "nav",
|
||||||
}, {
|
},
|
||||||
title: 'Settings',
|
{
|
||||||
html: '<p>Some settings in here.</p>',
|
title: "Settings",
|
||||||
|
html: "<p>Some settings in here.</p>",
|
||||||
border: false,
|
border: false,
|
||||||
iconCls: 'settings'
|
iconCls: "settings",
|
||||||
}]
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
new Ext.TabPanel({
|
new Ext.TabPanel({
|
||||||
region: 'center', //部署的区域,参考上图,center是中间显示页面区域
|
region: "center", //部署的区域,参考上图,center是中间显示页面区域
|
||||||
autoScroll: true,
|
autoScroll: true,
|
||||||
animScroll: true,
|
animScroll: true,
|
||||||
resizTabs: true,
|
resizTabs: true,
|
||||||
@ -229,7 +299,7 @@
|
|||||||
activeTab: 0,
|
activeTab: 0,
|
||||||
deferredRender: false,
|
deferredRender: false,
|
||||||
defaults: {
|
defaults: {
|
||||||
autoScroll: true
|
autoScroll: true,
|
||||||
},
|
},
|
||||||
tabMargin: 0,
|
tabMargin: 0,
|
||||||
items: [
|
items: [
|
||||||
@ -237,11 +307,10 @@
|
|||||||
id: "extwrap",
|
id: "extwrap",
|
||||||
title: "甘特图",
|
title: "甘特图",
|
||||||
region: "center",
|
region: "center",
|
||||||
})
|
}),
|
||||||
]
|
],
|
||||||
|
}),
|
||||||
})
|
],
|
||||||
]
|
|
||||||
});
|
});
|
||||||
////////////////////////////////////////////
|
////////////////////////////////////////////
|
||||||
var extControl = Ext.get("extwrap");
|
var extControl = Ext.get("extwrap");
|
||||||
@ -258,8 +327,8 @@
|
|||||||
header: "ID<br/>String",
|
header: "ID<br/>String",
|
||||||
width: 50,
|
width: 50,
|
||||||
editor: {
|
editor: {
|
||||||
type: "textbox"
|
type: "textbox",
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
columns.push(idColumn);
|
columns.push(idColumn);
|
||||||
var stringColumn = {
|
var stringColumn = {
|
||||||
@ -268,8 +337,8 @@
|
|||||||
field: "taskName",
|
field: "taskName",
|
||||||
width: 150,
|
width: 150,
|
||||||
editor: {
|
editor: {
|
||||||
type: "textbox"
|
type: "textbox",
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
columns.push(stringColumn);
|
columns.push(stringColumn);
|
||||||
var linkColumn = {
|
var linkColumn = {
|
||||||
@ -278,7 +347,7 @@
|
|||||||
field: "predecessorLink",
|
field: "predecessorLink",
|
||||||
width: 150,
|
width: 150,
|
||||||
editor: {
|
editor: {
|
||||||
type: "textbox"
|
type: "textbox",
|
||||||
},
|
},
|
||||||
// renderer: function (e) {
|
// renderer: function (e) {
|
||||||
// console.log('前置任务',e)
|
// console.log('前置任务',e)
|
||||||
@ -291,56 +360,56 @@
|
|||||||
header: "计划开始日期<br/>Date",
|
header: "计划开始日期<br/>Date",
|
||||||
field: "Start",
|
field: "Start",
|
||||||
width: 100,
|
width: 100,
|
||||||
renderer: function (e) {
|
renderer: function(e) {
|
||||||
var date = e.value;
|
var date = e.value;
|
||||||
if (!date) return "";
|
if (!date) return "";
|
||||||
return formatDateTime(e.value)
|
return formatDateTime(e.value);
|
||||||
},
|
},
|
||||||
editor: {
|
editor: {
|
||||||
type: "datepicker"
|
type: "datepicker",
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
columns.push(dateColumn1);
|
columns.push(dateColumn1);
|
||||||
var dateColumn2 = {
|
var dateColumn2 = {
|
||||||
header: "计划完成日期<br/>Date",
|
header: "计划完成日期<br/>Date",
|
||||||
field: "Finish",
|
field: "Finish",
|
||||||
width: 100,
|
width: 100,
|
||||||
renderer: function (e) {
|
renderer: function(e) {
|
||||||
var date = e.value;
|
var date = e.value;
|
||||||
if (!date) return "";
|
if (!date) return "";
|
||||||
return formatDateTime(e.value)
|
return formatDateTime(e.value);
|
||||||
},
|
},
|
||||||
editor: {
|
editor: {
|
||||||
type: "datepicker"
|
type: "datepicker",
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
columns.push(dateColumn2);
|
columns.push(dateColumn2);
|
||||||
var dateColumn3 = {
|
var dateColumn3 = {
|
||||||
header: "实际开始日期<br/>Date",
|
header: "实际开始日期<br/>Date",
|
||||||
field: "actualStartDate",
|
field: "actualStartDate",
|
||||||
width: 100,
|
width: 100,
|
||||||
renderer: function (e) {
|
renderer: function(e) {
|
||||||
var date = e.value;
|
var date = e.value;
|
||||||
if (!date) return "";
|
if (!date) return "";
|
||||||
return formatDateTime(e.value)
|
return formatDateTime(e.value);
|
||||||
},
|
},
|
||||||
editor: {
|
editor: {
|
||||||
type: "datepicker"
|
type: "datepicker",
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
columns.push(dateColumn3);
|
columns.push(dateColumn3);
|
||||||
var dateColumn4 = {
|
var dateColumn4 = {
|
||||||
header: "实际完成日期<br/>Date",
|
header: "实际完成日期<br/>Date",
|
||||||
field: "actualFinishDate",
|
field: "actualFinishDate",
|
||||||
width: 100,
|
width: 100,
|
||||||
renderer: function (e) {
|
renderer: function(e) {
|
||||||
var date = e.value;
|
var date = e.value;
|
||||||
if (!date) return "";
|
if (!date) return "";
|
||||||
return formatDateTime(e.value)
|
return formatDateTime(e.value);
|
||||||
},
|
},
|
||||||
editor: {
|
editor: {
|
||||||
type: "datepicker"
|
type: "datepicker",
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
columns.push(dateColumn4);
|
columns.push(dateColumn4);
|
||||||
var durationColumn = {
|
var durationColumn = {
|
||||||
@ -349,18 +418,18 @@
|
|||||||
field: "duration",
|
field: "duration",
|
||||||
width: 60,
|
width: 60,
|
||||||
editor: {
|
editor: {
|
||||||
type: "textbox"
|
type: "textbox",
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
columns.push(durationColumn);
|
columns.push(durationColumn);
|
||||||
var proColumn = {
|
var proColumn = {
|
||||||
name: "percentComplete",
|
name: "percentComplete",
|
||||||
header: "进度比例<br/>String",
|
header: "进度比例<br/>String",
|
||||||
field: "progressRatio",
|
field: "PercentComplete",
|
||||||
width: 60,
|
width: 60,
|
||||||
editor: {
|
editor: {
|
||||||
type: "textbox"
|
type: "textbox",
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
columns.push(proColumn);
|
columns.push(proColumn);
|
||||||
var remarkColumn = {
|
var remarkColumn = {
|
||||||
@ -370,15 +439,15 @@
|
|||||||
width: 150,
|
width: 150,
|
||||||
editor: {
|
editor: {
|
||||||
type: "textbox",
|
type: "textbox",
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
columns.push(remarkColumn);
|
columns.push(remarkColumn);
|
||||||
//将列集合数组设置给甘特图
|
//将列集合数组设置给甘特图
|
||||||
gantt.setColumns(columns);
|
gantt.setColumns(columns);
|
||||||
gantt.setTreeColumn("name")
|
gantt.setTreeColumn("name");
|
||||||
gantt.addTask({
|
gantt.addTask({
|
||||||
name: "11111"
|
name: "11111",
|
||||||
})
|
});
|
||||||
// // 新增时触发
|
// // 新增时触发
|
||||||
// var cellCommitAdd = (e) => {
|
// var cellCommitAdd = (e) => {
|
||||||
// let uid = e.task.UID; //修改行的id
|
// let uid = e.task.UID; //修改行的id
|
||||||
@ -391,7 +460,7 @@
|
|||||||
|
|
||||||
//右键菜单
|
//右键菜单
|
||||||
var ganttMenu = new GanttMenu();
|
var ganttMenu = new GanttMenu();
|
||||||
console.log('右键菜单有哪些', ganttMenu)
|
console.log("右键菜单有哪些", ganttMenu);
|
||||||
gantt.setContextMenu(ganttMenu);
|
gantt.setContextMenu(ganttMenu);
|
||||||
gantt.loading();
|
gantt.loading();
|
||||||
//渲染
|
//渲染
|
||||||
@ -399,9 +468,10 @@
|
|||||||
var data = listData;
|
var data = listData;
|
||||||
gantt.loadTasks(data);
|
gantt.loadTasks(data);
|
||||||
gantt.unmask();
|
gantt.unmask();
|
||||||
}, 3000)
|
}, 3000);
|
||||||
|
|
||||||
var cellCommitEdit = (e) => {
|
var cellCommitEdit = (e) => {
|
||||||
|
console.log("eeeeeeee", e);
|
||||||
var data = {
|
var data = {
|
||||||
taskName: e.task.taskName,
|
taskName: e.task.taskName,
|
||||||
Start: e.task.Start,
|
Start: e.task.Start,
|
||||||
@ -412,21 +482,22 @@
|
|||||||
progressRatio: e.task.progressRatio,
|
progressRatio: e.task.progressRatio,
|
||||||
remark: e.task.remark,
|
remark: e.task.remark,
|
||||||
id: e.task.id,
|
id: e.task.id,
|
||||||
projectSn: projectSn
|
projectSn: projectSn,
|
||||||
|
};
|
||||||
|
data[e.field] = e.value;
|
||||||
|
let data2 = {};
|
||||||
|
for (let d in data) {
|
||||||
|
if (d == "Start" || d == "Finish" || d == "PercentComplete") {
|
||||||
|
if (d == "Start") {
|
||||||
|
data2.startDate = data[d];
|
||||||
|
} else if (d == "finishDate") {
|
||||||
|
data2.startDate = data[d];
|
||||||
|
}else if( d == "PercentComplete"){
|
||||||
|
data2.progressRatio = data[d];
|
||||||
}
|
}
|
||||||
data[e.field] = e.value
|
} else {
|
||||||
let data2={};
|
data2[d] = data[d];
|
||||||
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]
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// let {Start:startDate,Finish:finishDate}=data
|
// let {Start:startDate,Finish:finishDate}=data
|
||||||
@ -438,65 +509,144 @@
|
|||||||
// let value = e.value; //修改的内容
|
// let value = e.value; //修改的内容
|
||||||
// var task = e.task; //修改的内容
|
// var task = e.task; //修改的内容
|
||||||
// // 请求接口的参数
|
// // 请求接口的参数
|
||||||
console.log('参数', data2)
|
console.log("参数", data2);
|
||||||
|
if (e.task.hasOwnProperty("id")) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
axios.post(requestUrl + 'xmgl/progressTask/updateProgressTask', data2).then(res => {
|
axios
|
||||||
console.log('修改返回', res)
|
.post(
|
||||||
|
requestUrl + "xmgl/progressTask/updateProgressTask",
|
||||||
|
data2
|
||||||
|
)
|
||||||
|
.then((res) => {
|
||||||
|
console.log("修改返回", res);
|
||||||
if (res.data.code == 200) {
|
if (res.data.code == 200) {
|
||||||
alert('编辑成功!')
|
alert("编辑成功!");
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}, 500)
|
}, 500);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
//右侧 拖拽
|
//右侧 拖拽
|
||||||
var itemdragcomplete = (e) => {
|
var itemdragcomplete = (e) => {
|
||||||
let requestData = {
|
let requestData = {
|
||||||
id: e.item.UID,
|
id: e.item.UID,
|
||||||
projectSn: projectSn
|
projectSn: projectSn,
|
||||||
};
|
};
|
||||||
let startTime = formatDateTime(e.item.Start).substring(0, 10);
|
let startTime = formatDateTime(e.item.Start).substring(0, 10);
|
||||||
let endTime = formatDateTime(e.item.Finish).substring(0, 10);
|
let endTime = formatDateTime(e.item.Finish).substring(0, 10);
|
||||||
requestData.startTime = startTime;
|
requestData.startTime = startTime;
|
||||||
requestData.endTime = endTime;
|
requestData.endTime = endTime;
|
||||||
axios.post(requestUrl + 'xmgl/progressItem/edit', requestData).then(res => {
|
axios
|
||||||
|
.post(requestUrl + "xmgl/progressItem/edit", requestData)
|
||||||
|
.then((res) => {
|
||||||
if (res.data.code == 200) {
|
if (res.data.code == 200) {
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
// var project = e.source;
|
// var project = e.source;
|
||||||
// var task = e.task;
|
// var task = e.task;
|
||||||
//e是事件对象, 具体请看每个事件的"参数类型"
|
//e是事件对象, 具体请看每个事件的"参数类型"
|
||||||
};
|
};
|
||||||
gantt.on('CellCommitEdit', cellCommitEdit);
|
gantt.on("CellCommitEdit", cellCommitEdit);
|
||||||
gantt.on('itemdragcomplete', itemdragcomplete);
|
gantt.on("itemdragcomplete", itemdragcomplete);
|
||||||
|
};
|
||||||
}
|
|
||||||
function getParentUrl() {
|
function getParentUrl() {
|
||||||
var url = "";
|
var url = "";
|
||||||
try {
|
try {
|
||||||
url = window.top.document.location.href
|
url = window.top.document.location.href;
|
||||||
} catch (M) {
|
} catch (M) {
|
||||||
if (window.parent) {
|
if (window.parent) {
|
||||||
try {
|
try {
|
||||||
url = window.parent.document.location.href
|
url = window.parent.document.location.href;
|
||||||
} catch (L) {
|
} catch (L) {
|
||||||
url = ""
|
url = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (url === "") {
|
if (url === "") {
|
||||||
url = document.location.href
|
url = document.location.href;
|
||||||
}
|
}
|
||||||
return url
|
return url;
|
||||||
}
|
}
|
||||||
|
document.getElementById('cancel').onclick=function(){
|
||||||
|
console.log('取消')
|
||||||
|
document.getElementById('addDiv').style.display = 'none';
|
||||||
|
}
|
||||||
|
// function cancel(){
|
||||||
|
// console.log('取消')
|
||||||
|
// document.getElementById('addDiv').style.display = 'none';
|
||||||
|
// }
|
||||||
|
// function submit(){
|
||||||
|
// console.log('确定')
|
||||||
|
// }
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="x-layout-split x-layout-split-west x-splitbar-h" id="west-panel-xsplit"
|
<div
|
||||||
style="left: 205px; top: 32px; height: 889px;"> </div>
|
class="x-layout-split x-layout-split-west x-splitbar-h"
|
||||||
<div id="ext-gen9" class="x-unselectable x-splitbar-proxy x-splitbar-proxy-h"></div>
|
id="west-panel-xsplit"
|
||||||
<div class="mini-supergrid-editwrap"
|
style="left: 205px; top: 32px; height: 889px;"
|
||||||
style="position: absolute; z-index: 1006; display: none; top: 580px; left: 802px; width: 100px;"></div>
|
>
|
||||||
</body>
|
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
id="ext-gen9"
|
||||||
|
class="x-unselectable x-splitbar-proxy x-splitbar-proxy-h"
|
||||||
|
></div>
|
||||||
|
<div
|
||||||
|
class="mini-supergrid-editwrap"
|
||||||
|
style="position: absolute; z-index: 1006; display: none; top: 580px; left: 802px; width: 100px;"
|
||||||
|
></div>
|
||||||
|
|
||||||
|
<div class="addDiv" id="addDiv">
|
||||||
|
<div class="addbox">
|
||||||
|
<div class="row">
|
||||||
|
<p>任务名称:</p><input id="taskName" type="input">
|
||||||
|
<div class="row">
|
||||||
|
<p>前置任务:</p><input id="predecessorIds" type="input">
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<p>计划开始日期:</p><input id="startDate" type="text" placeholder="yyyy-MM-dd格式">
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<p>计划完成日期:</p><input id="finishDate" type="text" placeholder="yyyy-MM-dd格式">
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<p>实际开始时间:</p><input id="actualStartDate" type="text" placeholder="yyyy-MM-dd格式">
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<p>实际完成时间:</p><input id="actualFinishDate" type="text" placeholder="yyyy-MM-dd格式">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<button id="cancel" class="btn cancel">取消</button>
|
||||||
|
<button id="" class="btn submit">确定</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
<style>
|
||||||
|
.addDiv{
|
||||||
|
display: none;
|
||||||
|
position:absolute;
|
||||||
|
top: 20%;
|
||||||
|
left: 30%;
|
||||||
|
z-index: 9999;
|
||||||
|
width: 400px;
|
||||||
|
height: 400px;
|
||||||
|
border: 1px solid #000;
|
||||||
|
}
|
||||||
|
.addbox{
|
||||||
|
margin: 20px;
|
||||||
|
}
|
||||||
|
.row{
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
p{
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
.btn{
|
||||||
|
width:80px;
|
||||||
|
height: 30px;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
</html>
|
</html>
|
||||||
@ -95,24 +95,38 @@ mini.extend(GanttMenu, mini.Menu, {
|
|||||||
// },
|
// },
|
||||||
|
|
||||||
__OnAdd: function(e) {
|
__OnAdd: function(e) {
|
||||||
console.log("点击新增执行");
|
console.log("点击新增执行",e);
|
||||||
var gantt = this.owner;
|
var gantt = this.owner;
|
||||||
var targetTask = gantt.getSelected();
|
var targetTask = gantt.getSelected();
|
||||||
var task = gantt.newTask();
|
var task = gantt.newTask()
|
||||||
console.log("=====添加", task);
|
|
||||||
//加到选中任务之后
|
//加到选中任务之后
|
||||||
// gantt.addTask(task, "after", targetTask);
|
// gantt.addTask(task, "after", targetTask);
|
||||||
// 新增弹窗
|
document.getElementById('addDiv').style.display = 'block';
|
||||||
// 没有父级的时候
|
console.log('vvvvv',document.getElementById('addDiv'))
|
||||||
if (!targetTask) {
|
|
||||||
// var x;
|
// if(!e.task.taskName){
|
||||||
// var name=prompt("请输入任务名称",""); //显示默认文本 ""
|
// data.taskName = e.task.taskName
|
||||||
// var duration=prompt("请输入工期",""); //显示默认文本 ""
|
// }
|
||||||
// var duration=prompt("请输入工期",""); //显示默认文本 ""
|
// console.log('data',data)
|
||||||
// var dutyUserName=prompt("请输入负责人名称",""); //显示默认文本 ""
|
// if(e.task.taskName !="" && e.task.Start!="" && e.task.Finish!="" && e.task.duration!=""&&e.task.progressRatio!=""&&e.task.remark!=""){
|
||||||
// console.log('name',name,duration,dutyUserName,)
|
// var data2 = {
|
||||||
|
// 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,
|
||||||
|
// // projectSn: projectSn,
|
||||||
|
// };
|
||||||
|
// // 没有父级的时候
|
||||||
|
// if (targetTask) {
|
||||||
|
// data.parentId = e.task.id
|
||||||
|
// }
|
||||||
|
// console.log('添加data',data)
|
||||||
|
// }
|
||||||
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
__OnEdit: function(e) {
|
__OnEdit: function(e) {
|
||||||
var gantt = this.owner;
|
var gantt = this.owner;
|
||||||
@ -129,7 +143,6 @@ mini.extend(GanttMenu, mini.Menu, {
|
|||||||
.location.search;
|
.location.search;
|
||||||
var parameter = url.split("="); //所有参数
|
var parameter = url.split("="); //所有参数
|
||||||
var requestUrl = parameter[1].split("&")[0]; //请求服务器的地址
|
var requestUrl = parameter[1].split("&")[0]; //请求服务器的地址
|
||||||
console.log("=======task", task);
|
|
||||||
if (task) {
|
if (task) {
|
||||||
if (confirm('确定删除任务 "' + task.taskName + '" ?')) {
|
if (confirm('确定删除任务 "' + task.taskName + '" ?')) {
|
||||||
gantt.removeTask(task);
|
gantt.removeTask(task);
|
||||||
|
|||||||
@ -35,7 +35,7 @@ GanttSchedule.prototype = {
|
|||||||
__OnCellBeginEdit: function (e) {
|
__OnCellBeginEdit: function (e) {
|
||||||
var task = e.record, field = e.field;
|
var task = e.record, field = e.field;
|
||||||
if (task.Summary) {
|
if (task.Summary) {
|
||||||
if (field == 'Start' || field == 'Finish' || field == 'Duration') {
|
if (field == 'Start' || field == 'Finish' || field == 'duration') {
|
||||||
e.cancel = true;
|
e.cancel = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -59,12 +59,12 @@ GanttSchedule.prototype = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (field) {
|
switch (field) {
|
||||||
case "Duration":
|
case "duration":
|
||||||
task.Duration = value;
|
task.duration = value;
|
||||||
|
|
||||||
if (task.Start) {
|
if (task.Start) {
|
||||||
task.Finish = maxTime(task.Start);
|
task.Finish = maxTime(task.Start);
|
||||||
task.Finish.setDate(task.Finish.getDate() + task.Duration - 1);
|
task.Finish.setDate(task.Finish.getDate() + task.duration - 1);
|
||||||
|
|
||||||
gantt.setTaskModified(task, "Finish");
|
gantt.setTaskModified(task, "Finish");
|
||||||
}
|
}
|
||||||
@ -75,7 +75,7 @@ GanttSchedule.prototype = {
|
|||||||
|
|
||||||
if (task.Start) {
|
if (task.Start) {
|
||||||
task.Finish = maxTime(task.Start);
|
task.Finish = maxTime(task.Start);
|
||||||
task.Finish.setDate(task.Start.getDate() + task.Duration - 1);
|
task.Finish.setDate(task.Start.getDate() + task.duration - 1);
|
||||||
|
|
||||||
gantt.setTaskModified(task, "Finish");
|
gantt.setTaskModified(task, "Finish");
|
||||||
}
|
}
|
||||||
@ -86,9 +86,9 @@ GanttSchedule.prototype = {
|
|||||||
|
|
||||||
if (task.Finish && task.Start) {
|
if (task.Finish && task.Start) {
|
||||||
var days = parseInt((task.Finish - task.Start) / (3600 * 24 * 1000));
|
var days = parseInt((task.Finish - task.Start) / (3600 * 24 * 1000));
|
||||||
task.Duration = days + 1;
|
task.duration = days + 1;
|
||||||
|
|
||||||
gantt.setTaskModified(task, "Duration");
|
gantt.setTaskModified(task, "duration");
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user