123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359 |
- /**
- * 项目管理相关js
- *
- * @author CaiAoLin
- * @date 2017/8/22
- * @version
- */
- let Tree = null;
- let movetoZTree = null;
- let copytoZTree = null;
- let projectType = {
- folder: 'Folder',
- tender: 'Tender',
- project: 'Project',
- engineering: 'Engineering'
- };
- let ProjTreeSetting = {
- tree: {
- id: 'ID',
- pid: 'ParentID',
- nid: 'NextSiblingID',
- btnColumn: 1,
- nullId: -1
- },
- columns: [
- {
- head: '',
- data: '',
- width: '40',
- event: {}
- },
- {
- head: '工程列表',
- data: 'name',
- width: '78%',
- event: {
- getText: function (html, node, text) {
- 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 ');
- if (node && node.data) {
- //html.push('href="/main?project=', node.id(), '"');
- html.push('href="javacript:void(0);"');
- }
- 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>');
- // }
- },
- tdBindEvent: function (td, node) {
- if (node.data.projType === projectType.tender) {
- $('a:eq(1)', td).bind('click', function () {
- BeforeOpenProject(node.id(), {'fullFolder': GetFullFolder(node.parent)}, function () {
- window.location.href = '/main?project=' + node.id();
- });
- return false;
- });
- }
- }
- }
- },
- {
- head: '最近使用',
- data: 'lastDateTime',
- width: '10%',
- event: {
- getText: function (html, node, text) {
- if (node.data.projType === projectType.tender) {
- html.push(text ? new Date(text).Format('yyyy-MM-dd') : '');
- }
- }
- }
- },
- {
- head: '创建日期',
- data: 'createDateTime',
- width: '10%',
- event: {
- getText: function (html, node, text) {
- if (node.data.projType === projectType.tender) {
- html.push(text ? new Date(text).Format('yyyy-MM-dd') : '');
- }
- }
- }
- }
- ],
- viewEvent: {
- beforeSelect: function (node) {
- if (node && node.row) {
- $('td:eq(0)', node.row).children().remove();
- }
- },
- 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();
- }
- $('td:eq(0)', node.row).append($('<i class="fa fa-sort" data-toggle="tooltip" data-placement="top" title="长安拖动"></i>'));
- }
- }
- };
- $(document).ready(function() {
- init();
- // 新增建设项目点击
- $('#addProjBtn').click(function () {
- if (Tree) {
- $('#add-add-project-dialog').modal('show');
- }
- });
- // 新增建设项目操作
- $('#addProjOk').click(function () {
- AddProject();
- });
- // 新增单项项目点击
- $("#add-engineering-btn").click(function() {
- let selectedItem = Tree.selected();
- try {
- if (selectedItem === null) {
- throw '请选择要添加到的项目工程';
- }
- let selectedType = selectedItem.data !== undefined ? selectedItem.data.projType : '';
- if (selectedType !== projectType.project) {
- throw '单项项目只能添加到建设项目中';
- }
- $("#add-engineering-dialog").modal("show");
- } catch (error) {
- alert(error);
- }
- });
- // 新增单项工程操作
- $("#add-engineering-confirm").click(function() {
- AddEngineering();
- });
- // 新增单位工程点击
- $("#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 '单项项目只能添加到单项工程中';
- }
- $("#add-tender-dialog").modal("show");
- } catch (error) {
- alert(error);
- }
- });
- // 新增单位工程
- $("#add-tender-confirm").click(function() {
- AddTender();
- });
- });
- /**
- * 初始化数据
- *
- * @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');
- });
- });
- }
- /**
- * 新增同级元素
- *
- * @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();
- });
- });
- }
- /**
- * 新增单项工程
- *
- * @return {boolean}
- */
- function AddEngineering() {
- let name = $('#engineering-name').val();
- if (name === '') {
- alert('请填写单项工程名称');
- return false;
- }
- AddSiblingsItem(name, projectType.engineering, function() {
- $("#add-engineering-dialog").modal("hide");
- });
- }
- /**
- * 新增单位工程
- *
- * @return {boolean}
- */
- function AddTender() {
- let name = $('#tender-name').val();
- if (name === '') {
- alert('请填写单位工程名称');
- return false;
- }
- AddSiblingsItem(name, projectType.tender, function() {
- $("#add-tender-dialog").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 {
- return null;
- }
- }
- /**
- * 获取最新id
- *
- * @param {function} callback
- * @return {void}
- */
- function GetNewProjectId(callback) {
- CommonAjax.post('/pm/api/getNewProjectID', {count: 1}, function(data) {
- callback(data);
- });
- }
|