|
@@ -1,9 +1,20 @@
|
|
/**
|
|
/**
|
|
- * Created by Mai on 2017/2/24.
|
|
|
|
|
|
+ * 项目管理相关js
|
|
|
|
+ *
|
|
|
|
+ * @author CaiAoLin
|
|
|
|
+ * @date 2017/8/22
|
|
|
|
+ * @version
|
|
*/
|
|
*/
|
|
-
|
|
|
|
-var Tree = null, movetoZTree = null, copytoZTree = null;
|
|
|
|
-var ProjTreeSetting = {
|
|
|
|
|
|
+let Tree = null;
|
|
|
|
+let movetoZTree = null;
|
|
|
|
+let copytoZTree = null;
|
|
|
|
+let projectType = {
|
|
|
|
+ folder: 'Folder',
|
|
|
|
+ tender: 'Tender',
|
|
|
|
+ project: 'Project',
|
|
|
|
+ engineering: 'Engineering'
|
|
|
|
+};
|
|
|
|
+let ProjTreeSetting = {
|
|
tree: {
|
|
tree: {
|
|
id: 'ID',
|
|
id: 'ID',
|
|
pid: 'ParentID',
|
|
pid: 'ParentID',
|
|
@@ -24,23 +35,39 @@ var ProjTreeSetting = {
|
|
width: '78%',
|
|
width: '78%',
|
|
event: {
|
|
event: {
|
|
getText: function (html, node, text) {
|
|
getText: function (html, node, text) {
|
|
- html.push((node && node.data && node.data.projType === 'Folder') ? ' ' : '');
|
|
|
|
|
|
+ let className = '';
|
|
|
|
+ switch (node.data.projType) {
|
|
|
|
+ case projectType.folder:
|
|
|
|
+ className = "fa fa-folder-open-o";
|
|
|
|
+ break;
|
|
|
|
+ case projectType.tender:
|
|
|
|
+ className = "fa fa-sticky-note-o";
|
|
|
|
+ break;
|
|
|
|
+ case projectType.project:
|
|
|
|
+ className = "fa fa-cubes";
|
|
|
|
+ break;
|
|
|
|
+ case projectType.engineering:
|
|
|
|
+ className = "fa fa-cube";
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ let icon = '<i class ="tree-icon '+ className +'"></i>';
|
|
|
|
+ html.push((node && node.data && node.data.projType === projectType.folder) ? ' ' : '');
|
|
html.push('<a ');
|
|
html.push('<a ');
|
|
- if (node && node.data && node.data.projType === 'Tender') {
|
|
|
|
|
|
+ if (node && node.data) {
|
|
//html.push('href="/main?project=', node.id(), '"');
|
|
//html.push('href="/main?project=', node.id(), '"');
|
|
html.push('href="javacript:void(0);"');
|
|
html.push('href="javacript:void(0);"');
|
|
}
|
|
}
|
|
- html.push('>', text, '<a>');
|
|
|
|
|
|
+ html.push('>', icon, ' ', text, '<a>');
|
|
},
|
|
},
|
|
getIcon: function (html, node) {
|
|
getIcon: function (html, node) {
|
|
- if (node.data.projType === 'Folder') {
|
|
|
|
- html.push('<i class ="tree-icon fa fa-folder-open-o"></i>');
|
|
|
|
- } else {
|
|
|
|
- html.push('<span class="poj-icon">└</span>');
|
|
|
|
- }
|
|
|
|
|
|
+
|
|
|
|
+ // html.push('<i class ="tree-icon '+ className +'"></i>');
|
|
|
|
+ // if (node.data.projType === 'Tender') {
|
|
|
|
+ // html.push('<span class="poj-icon">└</span>');
|
|
|
|
+ // }
|
|
},
|
|
},
|
|
tdBindEvent: function (td, node) {
|
|
tdBindEvent: function (td, node) {
|
|
- if (node.data.projType === 'Tender') {
|
|
|
|
|
|
+ if (node.data.projType === projectType.tender) {
|
|
$('a:eq(1)', td).bind('click', function () {
|
|
$('a:eq(1)', td).bind('click', function () {
|
|
BeforeOpenProject(node.id(), {'fullFolder': GetFullFolder(node.parent)}, function () {
|
|
BeforeOpenProject(node.id(), {'fullFolder': GetFullFolder(node.parent)}, function () {
|
|
window.location.href = '/main?project=' + node.id();
|
|
window.location.href = '/main?project=' + node.id();
|
|
@@ -57,7 +84,9 @@ var ProjTreeSetting = {
|
|
width: '10%',
|
|
width: '10%',
|
|
event: {
|
|
event: {
|
|
getText: function (html, node, text) {
|
|
getText: function (html, node, text) {
|
|
- html.push(text ? new Date(text).Format('yyyy-MM-dd') : '');
|
|
|
|
|
|
+ if (node.data.projType === projectType.tender) {
|
|
|
|
+ html.push(text ? new Date(text).Format('yyyy-MM-dd') : '');
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
},
|
|
@@ -67,7 +96,9 @@ var ProjTreeSetting = {
|
|
width: '10%',
|
|
width: '10%',
|
|
event: {
|
|
event: {
|
|
getText: function (html, node, text) {
|
|
getText: function (html, node, text) {
|
|
- html.push(text ? new Date(text).Format('yyyy-MM-dd') : '');
|
|
|
|
|
|
+ if (node.data.projType === projectType.tender) {
|
|
|
|
+ html.push(text ? new Date(text).Format('yyyy-MM-dd') : '');
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -80,7 +111,7 @@ var ProjTreeSetting = {
|
|
},
|
|
},
|
|
onSelectNode: function (node) {
|
|
onSelectNode: function (node) {
|
|
// 新建文件夹 是否可见
|
|
// 新建文件夹 是否可见
|
|
- if (node.data.projType === 'Tender') {
|
|
|
|
|
|
+ if (node.data.projType === projectType.tender) {
|
|
$('#addFolderBtn').hide();
|
|
$('#addFolderBtn').hide();
|
|
} else {
|
|
} else {
|
|
$('#addFolderBtn').show();
|
|
$('#addFolderBtn').show();
|
|
@@ -90,7 +121,7 @@ var ProjTreeSetting = {
|
|
// 删除可见
|
|
// 删除可见
|
|
$('#delBtn').show();
|
|
$('#delBtn').show();
|
|
// 移动到、复制到、共享、协同 是否可见
|
|
// 移动到、复制到、共享、协同 是否可见
|
|
- if (node.data.projType === 'Tender') {
|
|
|
|
|
|
+ if (node.data.projType === projectType.tender) {
|
|
$('#movetoBtn').show();
|
|
$('#movetoBtn').show();
|
|
$('#copytoBtn').show();
|
|
$('#copytoBtn').show();
|
|
$('#shareBtn').show();
|
|
$('#shareBtn').show();
|
|
@@ -104,522 +135,225 @@ var ProjTreeSetting = {
|
|
$('td:eq(0)', node.row).append($('<i class="fa fa-sort" data-toggle="tooltip" data-placement="top" title="长安拖动"></i>'));
|
|
$('td:eq(0)', node.row).append($('<i class="fa fa-sort" data-toggle="tooltip" data-placement="top" title="长安拖动"></i>'));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-}
|
|
|
|
-// 从服务器拉取数据
|
|
|
|
-var LoadProjTree = function () {
|
|
|
|
- var table = $('#ProjTree');
|
|
|
|
- $('thead', table).remove();
|
|
|
|
- $('tbody', table).remove();
|
|
|
|
- GetAllProjectData(function (data) {
|
|
|
|
- Tree = $.fn.treeTable.init(table, ProjTreeSetting, data);
|
|
|
|
- });
|
|
|
|
};
|
|
};
|
|
|
|
|
|
-var GetNeedUpdatePreNode = function (parent, next) {
|
|
|
|
- if (next) {
|
|
|
|
- return next.preSibling();
|
|
|
|
- } else if (parent) {
|
|
|
|
- return parent.firstChild();
|
|
|
|
- } else {
|
|
|
|
- return null;
|
|
|
|
- }
|
|
|
|
- /*if (parent && parent.id() !== -1) {
|
|
|
|
- if (next && next.preSibling()) {
|
|
|
|
- return next.preSibling();
|
|
|
|
- } else {
|
|
|
|
- return parent.lastChild();
|
|
|
|
|
|
+$(document).ready(function() {
|
|
|
|
+ init();
|
|
|
|
+
|
|
|
|
+ // 新增建设项目点击
|
|
|
|
+ $('#addProjBtn').click(function () {
|
|
|
|
+ if (Tree) {
|
|
|
|
+ $('#add-add-project-dialog').modal('show');
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
- return null;
|
|
|
|
- }*/
|
|
|
|
-};
|
|
|
|
-var GetPreNodeUpdateData = function (pre, nid) {
|
|
|
|
- var data = {};
|
|
|
|
- data['updateType'] = 'update';
|
|
|
|
- data['updateData'] = {};
|
|
|
|
- data.updateData[Tree.setting.tree.id] = pre.id();
|
|
|
|
- data.updateData[Tree.setting.tree.id] = nid;
|
|
|
|
- return data;
|
|
|
|
-}
|
|
|
|
-// 获取新建项目数据
|
|
|
|
-var GetAddProjUpdateData = function (parent, next, name, newId) {
|
|
|
|
- var datas = [], updateData, pre;
|
|
|
|
- updateData = {};
|
|
|
|
- updateData['updateType'] = 'new';
|
|
|
|
- updateData['updateData'] = {};
|
|
|
|
- updateData['updateData'][Tree.setting.tree.id] = newId;
|
|
|
|
- updateData['updateData'][Tree.setting.tree.pid] = parent ? parent.id() : -1;
|
|
|
|
- updateData['updateData'][Tree.setting.tree.nid] = next ? next.id() : -1;
|
|
|
|
- updateData['updateData']['name'] = name;
|
|
|
|
- updateData['updateData']['projType'] = 'Tender';
|
|
|
|
- datas.push(updateData);
|
|
|
|
- return datas;
|
|
|
|
-};
|
|
|
|
-var GetAddFolderProjUpdateData = function (parent, next, folderName1, folderName2, name, newId) {
|
|
|
|
- var datas = [], updateData, folderData1, folderData2, pre;
|
|
|
|
- var addUpdateData = function (parentId, nextId, name, projType) {
|
|
|
|
- var data = {};
|
|
|
|
- data['updateType'] = 'new';
|
|
|
|
- data['updateData'] = {};
|
|
|
|
- data['updateData'][Tree.setting.tree.id] = newId;
|
|
|
|
- data['updateData'][Tree.setting.tree.pid] = parentId;
|
|
|
|
- data['updateData'][Tree.setting.tree.nid] = nextId;
|
|
|
|
- data['updateData']['name'] = name;
|
|
|
|
- data['updateData']['projType'] = projType;
|
|
|
|
- newId += 1;
|
|
|
|
- datas.push(data);
|
|
|
|
- return data;
|
|
|
|
- }
|
|
|
|
- folderData1 = addUpdateData(parent.id(), next ? next.id() : -1, folderName1, 'Folder');
|
|
|
|
- folderData2 = addUpdateData(folderData1.updateData[Tree.setting.tree.id], -1, folderName2, 'Folder');
|
|
|
|
- addUpdateData(folderData2.updateData[Tree.setting.tree.id], -1, name, 'Tender');
|
|
|
|
- return datas;
|
|
|
|
-};
|
|
|
|
-// 获取新建文件夹数据
|
|
|
|
-var GetAddForlderUpdateData = function (parent, next, folderName, newId) {
|
|
|
|
- var datas = [], updateData, pre;
|
|
|
|
- updateData = {};
|
|
|
|
- updateData['updateType'] = 'new';
|
|
|
|
- updateData['updateData'] = {};
|
|
|
|
- updateData['updateData'][Tree.setting.tree.id] = newId;
|
|
|
|
- updateData['updateData'][Tree.setting.tree.pid] = parent ? parent.id() : -1;
|
|
|
|
- updateData['updateData'][Tree.setting.tree.nid] = next ? next.id() : -1;
|
|
|
|
- updateData['updateData']['name'] = folderName;
|
|
|
|
- updateData['updateData']['projType'] = 'Folder';
|
|
|
|
- datas.push(updateData);
|
|
|
|
|
|
+ });
|
|
|
|
|
|
- pre = GetNeedUpdatePreNode(parent, next);
|
|
|
|
- if (pre) {
|
|
|
|
- datas.push(GetPreNodeUpdateData(pre, newId));
|
|
|
|
- }
|
|
|
|
- return datas;
|
|
|
|
-};
|
|
|
|
|
|
+ // 新增建设项目操作
|
|
|
|
+ $('#addProjOk').click(function () {
|
|
|
|
+ AddProject();
|
|
|
|
+ });
|
|
|
|
|
|
-var GetNextChangeUpdateData = function (datas, node, next) {
|
|
|
|
- var data = null;
|
|
|
|
- if (node && node.id() !== -1) {
|
|
|
|
- data = {};
|
|
|
|
- data['updateType'] = 'update';
|
|
|
|
- data['updateData'] = {};
|
|
|
|
- data['updateData'][Tree.setting.tree.id] = node.id();
|
|
|
|
- data['updateData'][Tree.setting.tree.nid] = next ? next.id() : -1;
|
|
|
|
- datas.push(data);
|
|
|
|
- }
|
|
|
|
- return data;
|
|
|
|
-}
|
|
|
|
-var GetFullFolder = function (node) {
|
|
|
|
- var fullFolder = [],
|
|
|
|
- cur = node;
|
|
|
|
- while (cur && cur.data) {
|
|
|
|
- fullFolder.unshift(cur.data.name);
|
|
|
|
- cur = cur.parent;
|
|
|
|
- }
|
|
|
|
- return fullFolder;
|
|
|
|
-}
|
|
|
|
-var GetDeleteUpdateData = function (node) {
|
|
|
|
- var datas = [], updateData,
|
|
|
|
- pre = node.preSibling(),
|
|
|
|
- deleteNodeData = function (node) {
|
|
|
|
- var data = {};
|
|
|
|
- data['updateType'] = 'delete';
|
|
|
|
- data['updateData'] = {};
|
|
|
|
- data['updateData'][Tree.setting.tree.id] = node.id();
|
|
|
|
- if (node.data.projType === 'Tender') {
|
|
|
|
- data['updateData']['FullFolder'] = GetFullFolder(node.parent);
|
|
|
|
|
|
+ // 新增单项项目点击
|
|
|
|
+ $("#add-engineering-btn").click(function() {
|
|
|
|
+ let selectedItem = Tree.selected();
|
|
|
|
+ try {
|
|
|
|
+ if (selectedItem === null) {
|
|
|
|
+ throw '请选择要添加到的项目工程';
|
|
}
|
|
}
|
|
- return data;
|
|
|
|
- },
|
|
|
|
- addDeleteChildren = function (children) {
|
|
|
|
- children.forEach(function(child){
|
|
|
|
- datas.push(deleteNodeData(child));
|
|
|
|
- addDeleteChildren(child.children);
|
|
|
|
- });
|
|
|
|
- };
|
|
|
|
- if (pre && pre.id() !== -1) {
|
|
|
|
- updateData = {};
|
|
|
|
- updateData['updateType'] = 'update';
|
|
|
|
- updateData['updateData'] = {};
|
|
|
|
- updateData['updateData'][Tree.setting.tree.id] = pre.id();
|
|
|
|
- updateData['updateData'][Tree.setting.tree.nid] = node ? node.nid() : -1;
|
|
|
|
- datas.push(updateData);
|
|
|
|
- }
|
|
|
|
- datas.push(deleteNodeData(node));
|
|
|
|
- addDeleteChildren(node.children);
|
|
|
|
- return datas;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-var GetMoveUpdateData = function (node, parent, next) {
|
|
|
|
- var datas = [], updateData;
|
|
|
|
- updateData = GetNextChangeUpdateData(datas, node.preSibling(), node.nextSibling);
|
|
|
|
- if (next) {
|
|
|
|
- updateData = GetNextChangeUpdateData(datas, next.preSibling(), node);
|
|
|
|
- }
|
|
|
|
- updateData = {};
|
|
|
|
- updateData['updateType'] = 'update';
|
|
|
|
- updateData['updateData'] = {};
|
|
|
|
- updateData['updateData'][Tree.setting.tree.id] = node.id();
|
|
|
|
- updateData['updateData'][Tree.setting.tree.pid] = parent ? parent.id() : -1;
|
|
|
|
- updateData['updateData'][Tree.setting.tree.nid] = next ? next.id() : -1;
|
|
|
|
- datas.push(updateData);
|
|
|
|
- return datas;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-var GetCopyUpdateData = function (node, parent, next, newId){
|
|
|
|
- var datas = [], updateData, pre;
|
|
|
|
- updateData = {};
|
|
|
|
- updateData['updateType'] = 'copy';
|
|
|
|
- updateData['srcProjectId'] = node.id();
|
|
|
|
- updateData['updateData'] = {};
|
|
|
|
- updateData['updateData'][Tree.setting.tree.id] = newId + 1;
|
|
|
|
- updateData['updateData'][Tree.setting.tree.pid] = parent ? parent.id() : -1;
|
|
|
|
- updateData['updateData'][Tree.setting.tree.nid] = next ? next.id() : -1;
|
|
|
|
- updateData['updateData']['name'] = node.data.name;
|
|
|
|
- updateData['updateData']['projType'] = node.data.projType;
|
|
|
|
- datas.push(updateData);
|
|
|
|
-
|
|
|
|
- pre = GetNeedUpdatePreNode(parent, next);
|
|
|
|
- if (pre) {
|
|
|
|
- updateData = {};
|
|
|
|
- updateData['updateType'] = 'update';
|
|
|
|
- updateData['updateData'] = {};
|
|
|
|
- updateData['updateData'][Tree.setting.tree.id] = pre.id();
|
|
|
|
- updateData['updateData'][Tree.setting.tree.nid] = node.tree.maxNodeId() + 1;
|
|
|
|
- datas.push(updateData);
|
|
|
|
- }
|
|
|
|
- return datas;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-var ConvertTreeToZtree = function (Tree, zTreeObj, filterNode) {
|
|
|
|
- var setting = {
|
|
|
|
- data: {
|
|
|
|
- simpleData: {
|
|
|
|
- enable:true,
|
|
|
|
- idKey: "id",
|
|
|
|
- pIdKey: "pId",
|
|
|
|
- rootPId: "-1"
|
|
|
|
- }
|
|
|
|
- }},
|
|
|
|
- zTreeData = [],
|
|
|
|
- exportNodesData = function (nodes) {
|
|
|
|
- nodes.forEach(function (node) {
|
|
|
|
- if (node !== filterNode) {
|
|
|
|
- var data = {};
|
|
|
|
- data['id'] = node.data[Tree.setting.tree.id];
|
|
|
|
- data['pId'] = node.pid();
|
|
|
|
- data['name'] = node.data['name'];
|
|
|
|
- data['isParent'] = node.data.projType === 'Folder';//(node.data.projType === 'Folder' && node.children.length === 0);
|
|
|
|
- data['open'] = node.data.projType === 'Folder';//node.children.length !== 0;
|
|
|
|
- zTreeData.push(data);
|
|
|
|
- exportNodesData(node.children);
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
- };
|
|
|
|
- exportNodesData(Tree._root.children);
|
|
|
|
- return $.fn.zTree.init(zTreeObj, setting, zTreeData);
|
|
|
|
-};
|
|
|
|
-var GetTargetTreeNode = function (zTreeObj) {
|
|
|
|
- var ztree_selected;
|
|
|
|
- if (zTreeObj && Tree) {
|
|
|
|
- ztree_selected = zTreeObj.getSelectedNodes().length === 0 ? null : zTreeObj.getSelectedNodes()[0];
|
|
|
|
- return ztree_selected ? Tree.findNode(ztree_selected.id) : null;
|
|
|
|
- } else {
|
|
|
|
- return null;
|
|
|
|
- }
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-var AddFolderChildValid = function (node) {
|
|
|
|
- if (node.data.projType === 'Folder') {
|
|
|
|
- if (node.children.length === 0) {
|
|
|
|
- return true;
|
|
|
|
- } else {
|
|
|
|
- return (node.firstChild().data.projType === 'Folder');
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-};
|
|
|
|
-var AddTenderChildValid = function (node) {
|
|
|
|
- if (node.data.projType === 'Folder') {
|
|
|
|
- if (node.children.length === 0) {
|
|
|
|
- return true;
|
|
|
|
- } else {
|
|
|
|
- return (node.firstChild().data.projType === 'Tender');
|
|
|
|
|
|
+ let selectedType = selectedItem.data !== undefined ? selectedItem.data.projType : '';
|
|
|
|
+ if (selectedType !== projectType.project) {
|
|
|
|
+ throw '单项项目只能添加到建设项目中';
|
|
|
|
+ }
|
|
|
|
+ $("#add-engineering-dialog").modal("show");
|
|
|
|
+ } catch (error) {
|
|
|
|
+ alert(error);
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
- return false;
|
|
|
|
- }
|
|
|
|
-};
|
|
|
|
|
|
+ });
|
|
|
|
|
|
-LoadProjTree();
|
|
|
|
-$('#movetoBtn').hide();
|
|
|
|
-$('#copytoBtn').hide();
|
|
|
|
-$('#shareBtn').hide();
|
|
|
|
-$('#cooperateBtn').hide();
|
|
|
|
|
|
+ // 新增单项工程操作
|
|
|
|
+ $("#add-engineering-confirm").click(function() {
|
|
|
|
+ AddEngineering();
|
|
|
|
+ });
|
|
|
|
|
|
-// 新建文件夹
|
|
|
|
-$('#addFolderBtn').click(function () {
|
|
|
|
- if (Tree) {
|
|
|
|
- $('#addFolder').modal('show');
|
|
|
|
- }
|
|
|
|
-});
|
|
|
|
-$('#addFolderOk').click(function () {
|
|
|
|
- var form = $('#addFolder');
|
|
|
|
- var name = $('#folder-name-input').val();
|
|
|
|
- var parent, next;
|
|
|
|
- if (name) {
|
|
|
|
- if (Tree.selected()) {
|
|
|
|
- if (Tree.selected().children.length === 0 || Tree.selected().firstChild().data.projType === 'Folder') {
|
|
|
|
- parent = Tree.selected();
|
|
|
|
- next = Tree.selected().firstChild();
|
|
|
|
- } else {
|
|
|
|
- parent = Tree.selected().parent;
|
|
|
|
- next = Tree.selected().nextSibling;
|
|
|
|
|
|
+ // 新增单位工程点击
|
|
|
|
+ $("#add-tender-btn").click(function() {
|
|
|
|
+ let selectedItem = Tree.selected();
|
|
|
|
+ try {
|
|
|
|
+ if (selectedItem === null) {
|
|
|
|
+ throw '请选择要添加到的单项工程';
|
|
|
|
+ }
|
|
|
|
+ let selectedType = selectedItem.data !== undefined ? selectedItem.data.projType : '';
|
|
|
|
+ if (selectedType !== projectType.engineering) {
|
|
|
|
+ throw '单项项目只能添加到单项工程中';
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
- parent = Tree._root;
|
|
|
|
- next = Tree.firstNode();
|
|
|
|
|
|
+ $("#add-tender-dialog").modal("show");
|
|
|
|
+ } catch (error) {
|
|
|
|
+ alert(error);
|
|
}
|
|
}
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ // 新增单位工程
|
|
|
|
+ $("#add-tender-confirm").click(function() {
|
|
|
|
+ AddTender();
|
|
|
|
+ });
|
|
|
|
|
|
- CommonAjax.post('/pm/api/getNewProjectID', {count: 1}, function (IDs) {
|
|
|
|
- var updateData = GetAddForlderUpdateData(parent, next, name, IDs.lowID);
|
|
|
|
- Tree.maxNodeId(IDs.lowID - 1);
|
|
|
|
- UpdateProjectData(updateData, function(datas){
|
|
|
|
- datas.forEach(function (data) {
|
|
|
|
- if (data.updateType === 'new') {
|
|
|
|
- Tree.addNodeData(data.updateData, parent, next);
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- form.modal('hide');
|
|
|
|
- });
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
});
|
|
});
|
|
|
|
|
|
-// 新建工程
|
|
|
|
-var AddProj = function () {
|
|
|
|
- var name = $('#tenderName').val();
|
|
|
|
- if (name !== '') {
|
|
|
|
- // if (Tree.selected()){
|
|
|
|
- // if (Tree.selected().data.projType === 'Tender') {
|
|
|
|
- // parent = Tree.selected().parent;
|
|
|
|
- // next = Tree.selected().next;
|
|
|
|
- // } else {
|
|
|
|
- // if (Tree.selected().firstNode.data.projType === 'Tender') {
|
|
|
|
- // parent = Tree.selected();
|
|
|
|
- // next = Tree.selected().firstNode();
|
|
|
|
- // } else {
|
|
|
|
- // return;
|
|
|
|
- // }
|
|
|
|
- // }
|
|
|
|
- // } else {
|
|
|
|
- // parent = Tree._root();
|
|
|
|
- // next = Tree.firstNode();
|
|
|
|
- // }
|
|
|
|
- CommonAjax.post('/pm/api/getNewProjectID', {count: 1}, function (IDs) {
|
|
|
|
- var updateData = GetAddProjUpdateData(Tree._root, Tree.firstNode(), name, IDs.lowID);
|
|
|
|
- Tree.maxNodeId(IDs.lowID - 1);
|
|
|
|
- UpdateProjectData(updateData, function (datas) {
|
|
|
|
- datas.forEach(function (data) {
|
|
|
|
- var parent, next;
|
|
|
|
- if (data.updateType === 'new') {
|
|
|
|
- parent = data.updateData.parentId === -1 ? Tree._root : Tree.findNode(data.updateData.parentId);
|
|
|
|
- next = data.updateData.nextId === -1 ? null : Tree.findNode(data.updateData.nextId);
|
|
|
|
- Tree.addNodeData(data.updateData, parent, next);
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- $('#addProj').modal('hide');
|
|
|
|
|
|
+/**
|
|
|
|
+ * 初始化数据
|
|
|
|
+ *
|
|
|
|
+ * @return {void}
|
|
|
|
+ */
|
|
|
|
+function init() {
|
|
|
|
+ let table = $('#ProjTree');
|
|
|
|
+ $('thead', table).remove();
|
|
|
|
+ $('tbody', table).remove();
|
|
|
|
+ GetAllProjectData(function (data) {
|
|
|
|
+ Tree = $.fn.treeTable.init(table, ProjTreeSetting, data);
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 新增建设项目
|
|
|
|
+ *
|
|
|
|
+ * @return {boolean}
|
|
|
|
+ */
|
|
|
|
+function AddProject() {
|
|
|
|
+ let name = $('#project-name').val();
|
|
|
|
+ if (name === '') {
|
|
|
|
+ alert('请填写工程');
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ GetNewProjectId(function(IDs) {
|
|
|
|
+ let typeInfo = {
|
|
|
|
+ updateType: 'new',
|
|
|
|
+ projectType: projectType.project
|
|
|
|
+ };
|
|
|
|
+ let updateData = GetUpdateData(Tree._root, Tree.firstNode(), name, IDs.lowID, typeInfo);
|
|
|
|
+ Tree.maxNodeId(IDs.lowID - 1);
|
|
|
|
+ UpdateProjectData(updateData, function (datas) {
|
|
|
|
+ datas.forEach(function (data) {
|
|
|
|
+ let parent = null;
|
|
|
|
+ let next = null;
|
|
|
|
+ if (data.updateType === 'new') {
|
|
|
|
+ parent = data.updateData.parentId === -1 ? Tree._root : Tree.findNode(data.updateData.parentId);
|
|
|
|
+ next = data.updateData.nextId === -1 ? null : Tree.findNode(data.updateData.nextId);
|
|
|
|
+ Tree.addNodeData(data.updateData, parent, next);
|
|
|
|
+ }
|
|
});
|
|
});
|
|
|
|
+ $('#add-project-dialog').modal('hide');
|
|
});
|
|
});
|
|
- }
|
|
|
|
|
|
+ });
|
|
}
|
|
}
|
|
-var AddFolderProj = function () {
|
|
|
|
- var nameB = $('#buildName').val(), nameX = $('#xiangName').val(), name = $('#tenderName').val();
|
|
|
|
- if (nameB !== '' && nameX !== '' && name !== '') {
|
|
|
|
- CommonAjax.post('/pm/api/getNewProjectID', {count: 3}, function (IDs) {
|
|
|
|
- var updateData = GetAddFolderProjUpdateData(Tree._root, Tree.firstNode(), nameB, nameX, name, IDs.lowID);
|
|
|
|
- Tree.maxNodeId(IDs.lowID - 1);
|
|
|
|
- UpdateProjectData(updateData, function (datas) {
|
|
|
|
- datas.forEach(function (data) {
|
|
|
|
- var parent, next;
|
|
|
|
- if (data.updateType === 'new') {
|
|
|
|
- parent = data.updateData[Tree.setting.tree.pid] === -1 ? Tree._root : Tree.findNode(data.updateData[Tree.setting.tree.pid]);
|
|
|
|
- next = data.updateData[Tree.setting.tree.nid] === -1 ? null : Tree.findNode(data.updateData[Tree.setting.tree.nid]);
|
|
|
|
- Tree.addNodeData(data.updateData, parent, next);
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- $('#addProj').modal('hide');
|
|
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * 新增同级元素
|
|
|
|
+ *
|
|
|
|
+ * @param {String} name
|
|
|
|
+ * @param {String} type
|
|
|
|
+ * @param {function} callback
|
|
|
|
+ * @return {void}
|
|
|
|
+ */
|
|
|
|
+function AddSiblingsItem(name, type, callback) {
|
|
|
|
+ let parent = Tree.selected();
|
|
|
|
+ let next = Tree.selected().firstChild();
|
|
|
|
+ GetNewProjectId(function(IDs) {
|
|
|
|
+ let typeInfo = {
|
|
|
|
+ updateType: 'new',
|
|
|
|
+ projectType: type
|
|
|
|
+ };
|
|
|
|
+ let updateData = GetUpdateData(parent, next, name, IDs.lowID, typeInfo);
|
|
|
|
+ Tree.maxNodeId(IDs.lowID - 1);
|
|
|
|
+ UpdateProjectData(updateData, function(datas){
|
|
|
|
+ datas.forEach(function (data) {
|
|
|
|
+ if (data.updateType === 'new') {
|
|
|
|
+ Tree.addNodeData(data.updateData, parent, next);
|
|
|
|
+ }
|
|
});
|
|
});
|
|
|
|
+ callback();
|
|
});
|
|
});
|
|
- }
|
|
|
|
|
|
+ });
|
|
}
|
|
}
|
|
-$('#addProjBtn').click(function () {
|
|
|
|
- if (Tree) {
|
|
|
|
- $('#addProj').modal('show');
|
|
|
|
- }
|
|
|
|
-});
|
|
|
|
-$('#addProjOk').click(function () {
|
|
|
|
- var hasFolder = $('#isAddFolder>input').is(':checked');
|
|
|
|
- if (hasFolder) {
|
|
|
|
- AddFolderProj();
|
|
|
|
- } else {
|
|
|
|
- AddProj();
|
|
|
|
- }
|
|
|
|
-});
|
|
|
|
-$('#isAddFolder').change(function () {
|
|
|
|
- if ($('input',this).is(':checked')) {
|
|
|
|
- $('#moreinfo').collapse('show');
|
|
|
|
- } else {
|
|
|
|
- $('#moreinfo').collapse('hide');
|
|
|
|
- }
|
|
|
|
-});
|
|
|
|
|
|
|
|
-// 重命名
|
|
|
|
-$('#renameBtn').click(function() {
|
|
|
|
- if (Tree && Tree.selected()) {
|
|
|
|
- $('#rename').modal('show');
|
|
|
|
- }
|
|
|
|
-})
|
|
|
|
-$('#rename').on('show.bs.modal', function () {
|
|
|
|
- $('#newName').attr('placeholder', Tree.selected().data.name);
|
|
|
|
-});
|
|
|
|
-$('#renameOk').click(function () {
|
|
|
|
- var select = Tree.selected(),
|
|
|
|
- newName = $('#newName').val(),
|
|
|
|
- form = $('#rename');
|
|
|
|
- if (select && newName !== select.data.name) {
|
|
|
|
- RenameProject(select.id(), newName, function () {
|
|
|
|
- form.modal('hide');
|
|
|
|
- select.data.name = newName;
|
|
|
|
- Tree.refreshNodesDom([select]);
|
|
|
|
- });
|
|
|
|
- } else {
|
|
|
|
- form.modal('hide');
|
|
|
|
|
|
+/**
|
|
|
|
+ * 新增单项工程
|
|
|
|
+ *
|
|
|
|
+ * @return {boolean}
|
|
|
|
+ */
|
|
|
|
+function AddEngineering() {
|
|
|
|
+ let name = $('#engineering-name').val();
|
|
|
|
+ if (name === '') {
|
|
|
|
+ alert('请填写单项工程名称');
|
|
|
|
+ return false;
|
|
}
|
|
}
|
|
-});
|
|
|
|
|
|
+ AddSiblingsItem(name, projectType.engineering, function() {
|
|
|
|
+ $("#add-engineering-dialog").modal("hide");
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
|
|
-// 删除
|
|
|
|
-$('#delBtn').click(function() {
|
|
|
|
- if (Tree && Tree.selected()) {
|
|
|
|
- $('#del').modal('show');
|
|
|
|
- }
|
|
|
|
-});
|
|
|
|
-$('#del').on('show.bs.modal', function() {
|
|
|
|
- var hasTenderChild = function (children) {
|
|
|
|
- var i;
|
|
|
|
- for (i = 0; i < children.length; i++) {
|
|
|
|
- if (children[i].children.length === 0) {
|
|
|
|
- if (children[i].data.projType === 'Tender') {
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
- } else if (hasTenderChild(children[i].children)) {
|
|
|
|
- return true;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+/**
|
|
|
|
+ * 新增单位工程
|
|
|
|
+ *
|
|
|
|
+ * @return {boolean}
|
|
|
|
+ */
|
|
|
|
+function AddTender() {
|
|
|
|
+ let name = $('#tender-name').val();
|
|
|
|
+ if (name === '') {
|
|
|
|
+ alert('请填写单位工程名称');
|
|
return false;
|
|
return false;
|
|
- };
|
|
|
|
- if (Tree.selected().children.length == 0) {
|
|
|
|
- $('#tenderHint').show();
|
|
|
|
- $('#tenderHint').text('删除 "' + Tree.selected().data.name +'" ?');
|
|
|
|
- $('#folderHint').hide();
|
|
|
|
- } else {
|
|
|
|
- $('#tenderHint').hide();
|
|
|
|
- $('#folderHint').show();
|
|
|
|
- $('#folderHint').text('删除 "'+ Tree.selected().data.name +'" 以及它包含的子项?');
|
|
|
|
- }
|
|
|
|
- if (hasTenderChild([Tree.selected()])) {
|
|
|
|
- $('#restoreHint').show();
|
|
|
|
- } else {
|
|
|
|
- $('#restoreHint').hide();
|
|
|
|
}
|
|
}
|
|
-});
|
|
|
|
-$('#deleteProjOk').click(function () {
|
|
|
|
- var updateData, form = $('#del');
|
|
|
|
- if (Tree) {
|
|
|
|
- updateData = GetDeleteUpdateData(Tree.selected());
|
|
|
|
- UpdateProjectData(updateData, function () {
|
|
|
|
- form.modal('hide');
|
|
|
|
- Tree.removeNode(Tree.selected());
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
-});
|
|
|
|
|
|
+ AddSiblingsItem(name, projectType.tender, function() {
|
|
|
|
+ $("#add-tender-dialog").modal("hide");
|
|
|
|
+ });
|
|
|
|
+}
|
|
|
|
|
|
-// 移动至
|
|
|
|
-$('#movetoBtn').click(function () {
|
|
|
|
- if (Tree && Tree.selected()) {
|
|
|
|
- $('#moveto').modal('show');
|
|
|
|
- }
|
|
|
|
-});
|
|
|
|
-$('#moveto').on('show.bs.modal', function () {
|
|
|
|
- movetoZTree = ConvertTreeToZtree(Tree, $('#treeDemo'), Tree.selected());
|
|
|
|
-});
|
|
|
|
-$('#movetoOk').click(function () {
|
|
|
|
- var updateData, form = $('#moveto'),
|
|
|
|
- target = GetTargetTreeNode($.fn.zTree.getZTreeObj('treeDemo')),
|
|
|
|
- parent, next, cur = Tree.selected();
|
|
|
|
- if (target) {
|
|
|
|
- if (target.data.projType === 'Tender') {
|
|
|
|
- parent = target.parent;
|
|
|
|
- next = target.nextSibling;
|
|
|
|
- } else {
|
|
|
|
- parent = target;
|
|
|
|
- next = target.firstChild();
|
|
|
|
- }
|
|
|
|
|
|
|
|
- if (parent !== cur.parent || (next !== cur && next !== cur.nextSibling)){
|
|
|
|
- updateData = GetMoveUpdateData(Tree.selected(), parent, next);
|
|
|
|
- UpdateProjectData(updateData, function (data) {
|
|
|
|
- form.modal('hide');
|
|
|
|
- Tree.move(Tree.selected(), parent, next);
|
|
|
|
- });
|
|
|
|
- } else {
|
|
|
|
- form.modal('hide');
|
|
|
|
- }
|
|
|
|
|
|
+/**
|
|
|
|
+ * 组织更新数据
|
|
|
|
+ *
|
|
|
|
+ * @param {Object} parent
|
|
|
|
+ * @param {Object} next
|
|
|
|
+ * @param {String} name
|
|
|
|
+ * @param {Object} type
|
|
|
|
+ * @return {Object}
|
|
|
|
+ */
|
|
|
|
+function GetUpdateData(parent, next, name, newId, type) {
|
|
|
|
+ let data = [];
|
|
|
|
+ let updateData = {};
|
|
|
|
+ updateData['updateType'] = type.updateType === undefined ? 'new' : type.updateType;
|
|
|
|
+ updateData['updateData'] = {};
|
|
|
|
+ updateData['updateData'][Tree.setting.tree.id] = newId;
|
|
|
|
+ updateData['updateData'][Tree.setting.tree.pid] = parent ? parent.id() : -1;
|
|
|
|
+ updateData['updateData'][Tree.setting.tree.nid] = next ? next.id() : -1;
|
|
|
|
+ updateData['updateData']['name'] = name;
|
|
|
|
+ updateData['updateData']['projType'] = type.projectType !== undefined ? type.projectType : 'Tender';
|
|
|
|
+ data.push(updateData);
|
|
|
|
+ return data;
|
|
|
|
+}
|
|
|
|
+/**
|
|
|
|
+ * 获取需要更新的前节点
|
|
|
|
+ *
|
|
|
|
+ * @param {Object} parent
|
|
|
|
+ * @param {Object} next
|
|
|
|
+ * @return {Object}
|
|
|
|
+ */
|
|
|
|
+function GetNeedUpdatePreNode(parent, next) {
|
|
|
|
+ if (next) {
|
|
|
|
+ return next.preSibling();
|
|
|
|
+ } else if (parent) {
|
|
|
|
+ return parent.firstChild();
|
|
} else {
|
|
} else {
|
|
- form.modal('hide');
|
|
|
|
- }
|
|
|
|
-})
|
|
|
|
-
|
|
|
|
-// 复制到
|
|
|
|
-$('#copytoBtn').click(function () {
|
|
|
|
- if (Tree && Tree.selected()) {
|
|
|
|
- $('#copyto').modal('show');
|
|
|
|
|
|
+ return null;
|
|
}
|
|
}
|
|
-});
|
|
|
|
-$('#copyto').on('show.bs.modal', function () {
|
|
|
|
- copytoZTree = ConvertTreeToZtree(Tree, $('#treeDemo2'));
|
|
|
|
-});
|
|
|
|
-$('#copytoOk').click(function() {
|
|
|
|
- var form = $('#copyto'),
|
|
|
|
- target = GetTargetTreeNode($.fn.zTree.getZTreeObj('treeDemo2')),
|
|
|
|
- parent, next, cur = Tree.selected();
|
|
|
|
- if (target && (target.data.projType === 'Tender' || target.children.length === 0 || target.firstChild().data.projType === 'Tender')) {
|
|
|
|
- if (target.data.projType === 'Tender') {
|
|
|
|
- parent = target.parent;
|
|
|
|
- next = target.nextSibling;
|
|
|
|
- } else {
|
|
|
|
- parent = target;
|
|
|
|
- next = target.firstChild();
|
|
|
|
- }
|
|
|
|
|
|
+}
|
|
|
|
|
|
- if (parent !== cur.parent || (next !== cur && next !== cur.nextSibling)){
|
|
|
|
- CommonAjax.post('/pm/api/getNewProjectID', {count: 1}, function (IDs) {
|
|
|
|
- var updateData = GetCopyUpdateData(cur, parent, next, IDs.lowID);
|
|
|
|
- Tree.maxNodeId(IDs.lowID - 1);
|
|
|
|
- CommonAjax.post('/pm/api/copyProjects', {updateData: updateData}, function (data) {
|
|
|
|
- form.modal('hide');
|
|
|
|
- data.forEach(function (nodeData) {
|
|
|
|
- if (nodeData.updateType === 'copy') {
|
|
|
|
- Tree.addNodeData(nodeData.updateData, parent, next);
|
|
|
|
- }
|
|
|
|
- });
|
|
|
|
- }, function () {
|
|
|
|
- form.modal('hide');
|
|
|
|
- });
|
|
|
|
- });
|
|
|
|
- } else {
|
|
|
|
- form.modal('hide');
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- form.modal('hide');
|
|
|
|
- }
|
|
|
|
-});
|
|
|
|
|
|
+/**
|
|
|
|
+ * 获取最新id
|
|
|
|
+ *
|
|
|
|
+ * @param {function} callback
|
|
|
|
+ * @return {void}
|
|
|
|
+ */
|
|
|
|
+function GetNewProjectId(callback) {
|
|
|
|
+ CommonAjax.post('/pm/api/getNewProjectID', {count: 1}, function(data) {
|
|
|
|
+ callback(data);
|
|
|
|
+ });
|
|
|
|
+}
|