|
@@ -60,11 +60,9 @@ let ProjTreeSetting = {
|
|
|
html.push('>', icon, ' ', text, '<a>');
|
|
|
},
|
|
|
getIcon: function (html, node) {
|
|
|
-
|
|
|
- // html.push('<i class ="tree-icon '+ className +'"></i>');
|
|
|
- // if (node.data.projType === 'Tender') {
|
|
|
- // html.push('<span class="poj-icon">└</span>');
|
|
|
- // }
|
|
|
+ if (node.data.projType === projectType.tender) {
|
|
|
+ html.push('<span class="poj-icon">└</span>');
|
|
|
+ }
|
|
|
},
|
|
|
tdBindEvent: function (td, node) {
|
|
|
if (node.data.projType === projectType.tender) {
|
|
@@ -110,28 +108,27 @@ let ProjTreeSetting = {
|
|
|
}
|
|
|
},
|
|
|
onSelectNode: function (node) {
|
|
|
- // 新建文件夹 是否可见
|
|
|
- if (node.data.projType === projectType.tender) {
|
|
|
- $('#addFolderBtn').hide();
|
|
|
- } else {
|
|
|
- $('#addFolderBtn').show();
|
|
|
- }
|
|
|
- // 重命名可见
|
|
|
- $('#renameBtn').show();
|
|
|
- // 删除可见
|
|
|
- $('#delBtn').show();
|
|
|
- // 移动到、复制到、共享、协同 是否可见
|
|
|
- if (node.data.projType === projectType.tender) {
|
|
|
- $('#movetoBtn').show();
|
|
|
- $('#copytoBtn').show();
|
|
|
- $('#shareBtn').show();
|
|
|
- $('#cooperateBtn').show();
|
|
|
- } else {
|
|
|
- $('#movetoBtn').hide();
|
|
|
- $('#copytoBtn').hide();
|
|
|
- $('#shareBtn').hide();
|
|
|
- $('#cooperateBtn').hide();
|
|
|
+ $(".tools-btn > a").not(".disabled").addClass("disabled");
|
|
|
+ switch(node.data.projType) {
|
|
|
+ case projectType.project:
|
|
|
+ $("#add-engineering-btn").removeClass("disabled");
|
|
|
+ break;
|
|
|
+ case projectType.folder:
|
|
|
+ $("#add-folder-btn").removeClass("disabled");
|
|
|
+ $("#add-project-btn").removeClass("disabled");
|
|
|
+ break;
|
|
|
+ case projectType.engineering:
|
|
|
+ $("#add-tender-btn").removeClass("disabled");
|
|
|
+ break;
|
|
|
+ case projectType.tender:
|
|
|
+ $("#move-to-btn").removeClass("disabled");
|
|
|
+ $("#copy-to-btn").removeClass("disabled");
|
|
|
+ $("#share-btn").removeClass("disabled");
|
|
|
+ $("#cooperate-btn").removeClass("disabled");
|
|
|
+ break;
|
|
|
}
|
|
|
+ $("#del-btn").removeClass("disabled");
|
|
|
+ $("#rename-btn").removeClass("disabled");
|
|
|
$('td:eq(0)', node.row).append($('<i class="fa fa-sort" data-toggle="tooltip" data-placement="top" title="长安拖动"></i>'));
|
|
|
}
|
|
|
}
|
|
@@ -141,9 +138,17 @@ $(document).ready(function() {
|
|
|
init();
|
|
|
|
|
|
// 新增建设项目点击
|
|
|
- $('#addProjBtn').click(function () {
|
|
|
- if (Tree) {
|
|
|
- $('#add-add-project-dialog').modal('show');
|
|
|
+ $('#add-project-btn').click(function () {
|
|
|
+ let selectedItem = Tree.selected();
|
|
|
+ try {
|
|
|
+ let selectedType = selectedItem !== null && selectedItem.data !== undefined ?
|
|
|
+ selectedItem.data.projType : projectType.folder;
|
|
|
+ if (selectedType !== projectType.folder) {
|
|
|
+ throw '建设项目只能添加到最外层或文件夹中';
|
|
|
+ }
|
|
|
+ $('#add-project-dialog').modal('show');
|
|
|
+ } catch (error) {
|
|
|
+ alert(error);
|
|
|
}
|
|
|
});
|
|
|
|
|
@@ -196,6 +201,237 @@ $(document).ready(function() {
|
|
|
AddTender();
|
|
|
});
|
|
|
|
|
|
+ // 新增文件夹按钮点击
|
|
|
+ $("#add-folder-btn").click(function() {
|
|
|
+ let selectedItem = Tree.selected();
|
|
|
+ try {
|
|
|
+ let selectedType = selectedItem !== null && selectedItem.data !== undefined ?
|
|
|
+ selectedItem.data.projType : projectType.folder;
|
|
|
+ if (selectedType !== projectType.folder) {
|
|
|
+ throw '文件夹只能添加在最外层或者添加在文件夹中';
|
|
|
+ }
|
|
|
+ $("#add-folder-dialog").modal("show");
|
|
|
+ } catch (error) {
|
|
|
+ alert(error);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // 新增文件夹操作
|
|
|
+ $("#add-folder-confirm").click(function() {
|
|
|
+ AddFolder();
|
|
|
+ });
|
|
|
+
|
|
|
+ // 删除按钮点击
|
|
|
+ $('#del-btn').click(function() {
|
|
|
+ if (Tree && Tree.selected()) {
|
|
|
+ $('#del').modal('show');
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // 删除时文字替换
|
|
|
+ $('#del').on('show.bs.modal', function() {
|
|
|
+ let hasTenderChild = function (children) {
|
|
|
+ for (let 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 false;
|
|
|
+ };
|
|
|
+ // 显示内容
|
|
|
+ let tenderHintElement = $('#tenderHint');
|
|
|
+ let folderHintElement = $('#folderHint');
|
|
|
+ if (Tree.selected().children.length === 0) {
|
|
|
+ tenderHintElement.show();
|
|
|
+ tenderHintElement.text('删除 "' + Tree.selected().data.name +'" ?');
|
|
|
+ folderHintElement.hide();
|
|
|
+ } else {
|
|
|
+ tenderHintElement.hide();
|
|
|
+ folderHintElement.show();
|
|
|
+ folderHintElement.text('删除 "'+ Tree.selected().data.name +'" 以及它包含的子项?');
|
|
|
+ }
|
|
|
+ // 显示是否可以找回
|
|
|
+ if (hasTenderChild([Tree.selected()])) {
|
|
|
+ $('#restoreHint').show();
|
|
|
+ } else {
|
|
|
+ $('#restoreHint').hide();
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // 删除操作
|
|
|
+ $('#delete-confirm').click(function () {
|
|
|
+ let updateData = null;
|
|
|
+ let dialog = $('#del');
|
|
|
+ if (Tree) {
|
|
|
+ updateData = GetDeleteUpdateData(Tree.selected());
|
|
|
+ UpdateProjectData(updateData, function () {
|
|
|
+ dialog.modal('hide');
|
|
|
+ Tree.removeNode(Tree.selected());
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // 重命名按钮点击
|
|
|
+ $('#rename-btn').click(function() {
|
|
|
+ if (!Tree) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (!Tree.selected()) {
|
|
|
+ alert('请选择需要重命名的数据');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $('#rename-dialog').modal('show');
|
|
|
+ });
|
|
|
+
|
|
|
+ // 重命名操作
|
|
|
+ $("#rename-confirm").click(function() {
|
|
|
+ let select = Tree.selected();
|
|
|
+ let newName = $('#rename-name').val();
|
|
|
+ let dialog = $('#rename-dialog');
|
|
|
+ if (newName === '') {
|
|
|
+ alert('请输入重命名的名称');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (newName === select.data.name) {
|
|
|
+ dialog.modal('hide');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ RenameProject(select.id(), newName, function () {
|
|
|
+ dialog.modal('hide');
|
|
|
+ select.data.name = newName;
|
|
|
+ Tree.refreshNodesDom([select]);
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ // 移动到按钮点击
|
|
|
+ $('#move-to-btn').click(function () {
|
|
|
+ if (Tree && Tree.selected()) {
|
|
|
+ $('#move-to-dialog').modal('show');
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // 移动到窗口内容重组
|
|
|
+ $('#move-to-dialog').on('show.bs.modal', function () {
|
|
|
+ movetoZTree = ConvertTreeToZtree(Tree, $('#treeDemo'), Tree.selected());
|
|
|
+ });
|
|
|
+
|
|
|
+ // 移动到操作
|
|
|
+ $('#move-to-confirm').click(function () {
|
|
|
+ let updateData = null;
|
|
|
+ let dialog = $('#move-to-dialog');
|
|
|
+ let target = GetTargetTreeNode($.fn.zTree.getZTreeObj('treeDemo'));
|
|
|
+ let cur = Tree.selected();
|
|
|
+
|
|
|
+ if (!target) {
|
|
|
+ dialog.modal('hide');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (target.data.projType !== projectType.engineering) {
|
|
|
+ alert("请移动到单项工程中!");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ let parent = target;
|
|
|
+ let next = target.firstChild();
|
|
|
+ if (parent !== cur.parent || (next !== cur && next !== cur.nextSibling)){
|
|
|
+ let typeInfo = {
|
|
|
+ updateType: 'update',
|
|
|
+ projectType: null
|
|
|
+ };
|
|
|
+ updateData = GetUpdateData(parent, next, '', Tree.selected().id(), typeInfo);
|
|
|
+ UpdateProjectData(updateData, function (data) {
|
|
|
+ dialog.modal('hide');
|
|
|
+ Tree.move(Tree.selected(), parent, next);
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ dialog.modal('hide');
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ // 复制到按钮点击
|
|
|
+ $('#copy-to-btn').click(function () {
|
|
|
+ let selectedItem = Tree.selected();
|
|
|
+ try {
|
|
|
+ let selectedType = selectedItem !== null && selectedItem.data !== undefined ?
|
|
|
+ selectedItem.data.projType : '';
|
|
|
+ if (selectedType !== projectType.tender) {
|
|
|
+ throw '请选择单位工程进行复制';
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ alert(error);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ $('#copy-to-dialog').modal('show');
|
|
|
+ });
|
|
|
+ // 复制到弹层替换
|
|
|
+ $('#copy-to-dialog').on('show.bs.modal', function () {
|
|
|
+ copytoZTree = ConvertTreeToZtree(Tree, $('#treeDemo2'), null);
|
|
|
+ });
|
|
|
+
|
|
|
+ // 复制到操作
|
|
|
+ $("#copy-to-confirm").click(function() {
|
|
|
+ let dialog = $('#copy-to-dialog');
|
|
|
+ let target = GetTargetTreeNode($.fn.zTree.getZTreeObj('treeDemo2'));
|
|
|
+ let parent = null;
|
|
|
+ let next = null;
|
|
|
+ let pre = null;
|
|
|
+ let cur = Tree.selected();
|
|
|
+ if (!target) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (target.data.projType !== projectType.engineering) {
|
|
|
+ alert("请移动到单项工程中!");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (target.data.projType !== projectType.tender && target.children.length !== 0 &&
|
|
|
+ target.firstChild().data.projType !== projectType.tender) {
|
|
|
+ dialog.modal('hide');
|
|
|
+ }
|
|
|
+
|
|
|
+ if (target.data.projType === projectType.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, user_id: userID}, function (IDs) {
|
|
|
+ let typeInfo = {
|
|
|
+ updateType: 'copy',
|
|
|
+ projType: cur.data.projectType
|
|
|
+ };
|
|
|
+ let updateData = GetUpdateData(parent, next, cur.data.name, IDs.lowID, typeInfo);
|
|
|
+ updateData['srcProjectId'] = cur.id();
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ Tree.maxNodeId(IDs.lowID - 1);
|
|
|
+ CommonAjax.post('/pm/api/copyProjects', {updateData: updateData, user_id: userID}, function (data) {
|
|
|
+ dialog.modal('hide');
|
|
|
+ data.forEach(function (nodeData) {
|
|
|
+ if (nodeData.updateType === 'copy') {
|
|
|
+ Tree.addNodeData(nodeData.updateData, parent, next);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }, function () {
|
|
|
+ dialog.modal('hide');
|
|
|
+ });
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
});
|
|
|
|
|
|
/**
|
|
@@ -210,6 +446,11 @@ function init() {
|
|
|
GetAllProjectData(function (data) {
|
|
|
Tree = $.fn.treeTable.init(table, ProjTreeSetting, data);
|
|
|
});
|
|
|
+
|
|
|
+ // 显示默认两个可选菜单
|
|
|
+ $(".tools-btn > a").not(".disabled").addClass("disabled");
|
|
|
+ $("#add-folder-btn").removeClass("disabled");
|
|
|
+ $("#add-project-btn").removeClass("disabled");
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -223,24 +464,36 @@ function AddProject() {
|
|
|
alert('请填写工程');
|
|
|
return false;
|
|
|
}
|
|
|
+ AddChildrenItem(name, projectType.project, function() {
|
|
|
+ $("#add-project-dialog").modal("hide");
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 新增子元素
|
|
|
+ *
|
|
|
+ * @param {String} name
|
|
|
+ * @param {String} type
|
|
|
+ * @param {function} callback
|
|
|
+ * @return {void}
|
|
|
+ */
|
|
|
+function AddChildrenItem(name, type, callback) {
|
|
|
+ let parent = Tree.selected() ? Tree.selected() : Tree._root;
|
|
|
+ let next = Tree.selected() ? Tree.selected().firstChild() : Tree.firstNode();
|
|
|
GetNewProjectId(function(IDs) {
|
|
|
let typeInfo = {
|
|
|
updateType: 'new',
|
|
|
- projectType: projectType.project
|
|
|
+ projectType: type
|
|
|
};
|
|
|
- let updateData = GetUpdateData(Tree._root, Tree.firstNode(), name, IDs.lowID, typeInfo);
|
|
|
+ let updateData = GetUpdateData(parent, next, name, IDs.lowID, typeInfo);
|
|
|
Tree.maxNodeId(IDs.lowID - 1);
|
|
|
- UpdateProjectData(updateData, function (datas) {
|
|
|
+ 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');
|
|
|
+ callback();
|
|
|
});
|
|
|
});
|
|
|
}
|
|
@@ -254,8 +507,9 @@ function AddProject() {
|
|
|
* @return {void}
|
|
|
*/
|
|
|
function AddSiblingsItem(name, type, callback) {
|
|
|
- let parent = Tree.selected();
|
|
|
- let next = Tree.selected().firstChild();
|
|
|
+ let selected = Tree.selected();
|
|
|
+ let parent = selected ? selected.parent : Tree._root;
|
|
|
+ let next = selected ? selected.nextSibling : Tree.firstNode();
|
|
|
GetNewProjectId(function(IDs) {
|
|
|
let typeInfo = {
|
|
|
updateType: 'new',
|
|
@@ -285,7 +539,7 @@ function AddEngineering() {
|
|
|
alert('请填写单项工程名称');
|
|
|
return false;
|
|
|
}
|
|
|
- AddSiblingsItem(name, projectType.engineering, function() {
|
|
|
+ AddChildrenItem(name, projectType.engineering, function() {
|
|
|
$("#add-engineering-dialog").modal("hide");
|
|
|
});
|
|
|
}
|
|
@@ -301,11 +555,40 @@ function AddTender() {
|
|
|
alert('请填写单位工程名称');
|
|
|
return false;
|
|
|
}
|
|
|
- AddSiblingsItem(name, projectType.tender, function() {
|
|
|
+ AddChildrenItem(name, projectType.tender, function() {
|
|
|
$("#add-tender-dialog").modal("hide");
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * 新增文件夹
|
|
|
+ *
|
|
|
+ * @return {boolean}
|
|
|
+ */
|
|
|
+function AddFolder() {
|
|
|
+ let name = $('#folder-name').val();
|
|
|
+ if (name === '') {
|
|
|
+ alert('请填写文件夹名称');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ let selectedItem = Tree.selected();
|
|
|
+ if (selectedItem !== null) {
|
|
|
+ // 判断是否超过3层
|
|
|
+ if (selectedItem.parent !== null && selectedItem.parent.parent !== null &&
|
|
|
+ selectedItem.parent.parent.parent !== null) {
|
|
|
+ alert("文件夹不能超过3层");
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ AddChildrenItem(name, projectType.folder, function() {
|
|
|
+ $("#add-folder-dialog").modal("hide");
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ AddSiblingsItem(name, projectType.folder, function() {
|
|
|
+ $("#add-folder-dialog").modal("hide");
|
|
|
+ });
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
/**
|
|
|
* 组织更新数据
|
|
@@ -321,14 +604,75 @@ function GetUpdateData(parent, next, name, newId, type) {
|
|
|
let updateData = {};
|
|
|
updateData['updateType'] = type.updateType === undefined ? 'new' : type.updateType;
|
|
|
updateData['updateData'] = {};
|
|
|
- updateData['updateData'][Tree.setting.tree.id] = newId;
|
|
|
+ if (newId !== '') {
|
|
|
+ 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';
|
|
|
+ if (name !== '') {
|
|
|
+ updateData['updateData']['name'] = name;
|
|
|
+ }
|
|
|
+ if (type !== null && type.projectType !== null) {
|
|
|
+ updateData['updateData']['projType'] = type.projectType !== undefined ? type.projectType : 'Tender';
|
|
|
+ }
|
|
|
+
|
|
|
data.push(updateData);
|
|
|
return data;
|
|
|
}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 获取删除数据
|
|
|
+ *
|
|
|
+ * @return {Object} node
|
|
|
+ * @return {Object}
|
|
|
+ */
|
|
|
+function GetDeleteUpdateData(node) {
|
|
|
+ let 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);
|
|
|
+ }
|
|
|
+ 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;
|
|
|
+};
|
|
|
+
|
|
|
+/**
|
|
|
+ * 获取父级所有名称
|
|
|
+ *
|
|
|
+ * @return {Array}
|
|
|
+ */
|
|
|
+function GetFullFolder (node) {
|
|
|
+ let fullFolder = [];
|
|
|
+ let cur = node;
|
|
|
+ while (cur && cur.data) {
|
|
|
+ fullFolder.unshift(cur.data.name);
|
|
|
+ cur = cur.parent;
|
|
|
+ }
|
|
|
+ return fullFolder;
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* 获取需要更新的前节点
|
|
|
*
|
|
@@ -356,4 +700,117 @@ function GetNewProjectId(callback) {
|
|
|
CommonAjax.post('/pm/api/getNewProjectID', {count: 1}, function(data) {
|
|
|
callback(data);
|
|
|
});
|
|
|
-}
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 重命名项目
|
|
|
+ *
|
|
|
+ * @param {Number} projectId
|
|
|
+ * @param {String} newName
|
|
|
+ * @param {function} callback
|
|
|
+ * @return {void}
|
|
|
+ */
|
|
|
+function RenameProject(projectId, newName, callback) {
|
|
|
+ $.ajax({
|
|
|
+ type: "POST",
|
|
|
+ url: '/pm/api/renameProject',
|
|
|
+ data: {'data': JSON.stringify({"user_id": userID, "id": projectId, "newName": newName})},
|
|
|
+ dataType: 'json',
|
|
|
+ cache: false,
|
|
|
+ timeout: 5000,
|
|
|
+ success: function(result){
|
|
|
+ if (result.error === 0) {
|
|
|
+ callback();
|
|
|
+ } else {
|
|
|
+ alert('error' + result.message);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ error: function(iqXHR, textStatus, errorThrown){
|
|
|
+ alert('error ' + textStatus + " " + errorThrown)
|
|
|
+ }
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 转换当前树结构为zTree结构
|
|
|
+ *
|
|
|
+ * @param {Object} Tree
|
|
|
+ * @param {Object} zTreeObj
|
|
|
+ * @param {Object} filterNode
|
|
|
+ * @return {Mixed}
|
|
|
+ */
|
|
|
+function ConvertTreeToZtree(Tree, zTreeObj, filterNode) {
|
|
|
+ let setting = {
|
|
|
+ data: {
|
|
|
+ simpleData: {
|
|
|
+ enable:true,
|
|
|
+ idKey: "id",
|
|
|
+ pIdKey: "pId",
|
|
|
+ rootPId: "-1"
|
|
|
+ }
|
|
|
+ }};
|
|
|
+ let 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);
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 获取指定zTree节点
|
|
|
+ *
|
|
|
+ * @param {Object} zTreeObj
|
|
|
+ * @return {object}
|
|
|
+ */
|
|
|
+function GetTargetTreeNode(zTreeObj) {
|
|
|
+ if (!zTreeObj || !Tree) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ let ztree_selected = zTreeObj.getSelectedNodes().length === 0 ? null : zTreeObj.getSelectedNodes()[0];
|
|
|
+ return ztree_selected ? Tree.findNode(ztree_selected.id) : null;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+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 GetMoveUpdateData = function (node, parent, next) {
|
|
|
+ var datas = [], updateData;
|
|
|
+ updateData = GetNextChangeUpdateData(datas, node.preSibling(), node.nextSibling);
|
|
|
+ if (next) {
|
|
|
+ updateData = GetNextChangeUpdateData(datas, next.preSibling(), node);
|
|
|
+ }
|
|
|
+ console.log(updateData);
|
|
|
+ return false;
|
|
|
+ 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;
|
|
|
+};
|