226 lines
6.0 KiB
JavaScript
Raw Normal View History

2022-06-08 14:51:11 +08:00
/* 标准方法加载保存调试项目弹出任务面板日历面板
-----------------------------------------------------------------------------*/
var ServicesPath = mini_JSPath + "../plusproject/services/"; //Ajax交互路径根据实际项目部署路径需要修改
var LoadProjectUrl = ServicesPath + 'load.aspx';
var SaveProjectUrl = ServicesPath + 'save.aspx';
function doSetProjectData(project, dataProject) {
if (project.showProjectTask) {
var root = { Name: dataProject.Name, isProject: true };
root.children = dataProject.Tasks;
dataProject.Tasks = [root];
project.loadData(dataProject);
//如果是将项目作为顶级父任务,则需要处理下数据联动
project.orderProject();
} else {
project.loadData(dataProject);
}
}
function doGetProjectData(project) {
var dataProject = project.getData();
dataProject.RemovedTasks = project.getRemovedTasks();
if (project.showProjectTask) {
var Tasks = dataProject.Tasks;
var root = Tasks[0];
if (root && root.isProject) { //如果第一条任务是项目任务,则克隆一个新项目数据
dataProject.Tasks = [];
var clone = mini.clone(dataProject);
dataProject.Tasks = Tasks; //还原原始数据
dataProject = clone;
dataProject.Tasks = root.children;
}
}
return dataProject;
}
function LoadProject(params, project, callback) {
if (typeof params != "object") params = { projectuid: params };
project.loading();
$.ajax({
url: LoadProjectUrl,
data: params,
cache: false,
success: function (text) {
var dataProject = mini.decode(text);
doSetProjectData(project, dataProject);
//project.orderProject();
//加载时自动排程,如果有变动,需要提示
// if (project.isChanged()) {
// alert("项目数据加载时自动调整");
// }
//
if (callback) callback(project);
project.unmask();
},
error: function (jqXHR, textStatus, errorThrown) {
alert("加载失败, 错误码:" + textStatus);
project.unmask();
}
});
}
function SaveProject(project, callback, params) {
var dataProject = doGetProjectData(project);
var json = mini.encode(dataProject);
project.mask("数据保存中,请稍后...");
if (!params) params = {};
params.project = json;
$.ajax({
url: SaveProjectUrl,
type: "post",
data: params,
success: function (text) {
alert("保存成功,项目UID" + text);
project.acceptChanges();
if (callback) callback(project);
project.unmask();
},
error: function (jqXHR, textStatus, errorThrown) {
alert("保存失败, 错误码:" + textStatus);
project.unmask();
}
});
}
function TrackProject(project) {
// var list = project.getTaskList();
// list.forEach(function (o) {
// delete o._id;
// delete o._uid;
// delete o._pid;
// delete o._level;
// delete o._x;
// delete o._state;
// });
var dataProject = project.getData();
var json = mini.encode(dataProject);
document.write(json);
//把生成的项目JSON数据发送给技术支持人员方便技术人员进行调试定位项目问题
}
function LoadJSONProject(url, project, callback) {
project.loading();
$.ajax({
url: url,
cache: false,
success: function (text) {
var dataProject = mini.decode(text);
doSetProjectData(project, dataProject);
if (callback) callback(project);
project.unmask();
},
error: function (jqXHR, textStatus, errorThrown) {
alert("加载失败, 错误码:" + textStatus);
project.unmask();
}
});
}
//创建任务面板
var taskWindow = null;
function ShowTaskWindow(project, tabName) {
var task = project.getSelected();
if (task) {
if (!taskWindow) {
taskWindow = new TaskWindow();
}
taskWindow.setTitle("编辑任务");
taskWindow.show();
taskWindow.setData(task, project,
function (action) {
if (action == 'ok') {
try {
var taskData = taskWindow.getData();
project.updateTask(task, taskData);
} catch (ex) {
alert("error:"+ex.message);
return false;
}
}
}
);
if (tabName) {
taskWindow.activeTab(tabName);
}
} else {
alert("请先选择任务");
}
}
//日历面板
var calendarWindow = null;
function ShowCalendarWindow(project) {
if (!calendarWindow) {
calendarWindow = new CalendarWindow();
}
calendarWindow.show();
calendarWindow.setData(project.getCalendars(), project,
function (action) {
if (action == "ok") {
var calendars = calendarWindow.getData();
var calendarUID = calendarWindow.CalendarsCombo.getValue();
project.beginUpdate();
project.setCalendars(calendars);
project.setCalendarUID(calendarUID);
project.endUpdate();
}
}
);
}
//资源面板
var resourcesWindow;
function ShowResourcesWindow(project) {
if (!resourcesWindow) {
resourcesWindow = new ResourcesWindow();
}
resourcesWindow.show();
resourcesWindow.setData(project.data.Resources, project,
function (action) {
if (action == "ok") {
var resources = resourcesWindow.getData();
project.setResources(resources);
}
}
);
}