123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- const copyProject = (function () {
- const projectType = commonConstants.projectType;
- let curCopySelTree = null; //拷贝工程建设项目选项树
- function setEng(projID){
- let engQuery = {$or: [{deleteInfo: null}, {'deleteInfo.deleted': false}], projType: projectType.Engineering, userID: userID, ParentID: projID};
- CommonAjax.post('/pm/api/getProjectsByQuery', {user_id: userID, query: engQuery, options: '-_id -property'}, function (rstData) {
- $('#copyShare_selectEng').empty();
- for(let eng of rstData){
- let opt = $('<option>').val(eng.ID).text(eng.name);
- $('#copyShare_selectEng').append(opt);
- }
- });
- }
- function getFileHierarchyInfo(treeData){
- curCopySelTree = idTree.createNew({id: 'ID', pid: 'ParentID', nid: 'NextSiblingID', rootId: -1});
- curCopySelTree.loadDatas(treeData);
- let items = curCopySelTree.items;
- let rst = [];
- function getFileHierarchyName(node){
- let nodeName = node.data.name;
- let name = [];
- while (node.parent){
- name.push(node.parent.data.name ? node.parent.data.name : '');
- node = node.parent;
- }
- name = name.reverse();
- name.push(nodeName);
- return name.join('\\');
- }
- for(let node of items){
- if(node.children.length === 0 ){//project
- rst.push({ID: node.data.ID, fileHierarchyName: getFileHierarchyName(node)})
- }
- }
- return rst;
- }
- //设置拷贝工程下拉选择
- //@return {void}
- function setCopyModal(){
- //获取建设项目
- let projQuery = {$or: [{deleteInfo: null}, {'deleteInfo.deleted': false}], projType: {$in: [projectType.Project, projectType.Folder]}, userID: userID};
- CommonAjax.post('/pm/api/getProjectsByQuery', {user_id: userID, query: projQuery, options: '-_id'}, function (rstData) {
- let fileHierarchyData = getFileHierarchyInfo(rstData);
- $('#copyShare_selectProj').empty();
- for(let proj of fileHierarchyData){
- let opt = $('<option>').val(proj.ID).text(proj.fileHierarchyName);
- $('#copyShare_selectProj').append(opt);
- }
- //初始选择
- if(fileHierarchyData.length > 0){
- setEng(fileHierarchyData[0].ID);
- }
- });
- }
- //拷贝分享的工程
- //@param {Object}selected {Number}parentID @return {void}
- async function copyShareProject(projectInfo, projID, engID){
- try {
- if(!engID || !projectInfo){
- return;
- }
- let copyMap = {copy: null, update: null};
- let newName = $('#copyShare_name').val();
- if (!newName) {
- $('#copyShareTender-info').text('单位工程名称不可为空');
- $('#copyShareTender-info').show();
- return;
- }
- //获取单项工程的单位工程
- let tenderQuery = {$or: [{deleteInfo: null}, {'deleteInfo.deleted': false}], userID: userID, ParentID: engID};
- const rstData = await ajaxPost('/pm/api/getProjectsByQuery', {user_id: userID, query: tenderQuery, options: '-_id -property'}, false, 10000);
- let updateTender = null;
- for(let tender of rstData){
- if(tender.name === newName){
- $('#copyShareTender-info').text('已存在同名单位工程');
- $('#copyShareTender-info').show();
- return;
- }
- if(tender.NextSiblingID == -1){
- updateTender = tender;
- }
- }
- //更新前节点
- if(updateTender){
- copyMap.update = {query: {ID: updateTender.ID}};
- }
- //拷贝
- let copyData = {
- userID: userID,
- ID: projectInfo.ID,
- NextSiblingID: -1,
- ParentID: engID,
- name: newName,
- shareInfo: [],
- compilation: projectInfo.compilation,
- createDateTime: projectInfo.createDateTime,
- fileVer: projectInfo.fileVer ? projectInfo.fileVer : '',
- projType: projectInfo.projType,
- property: {},
- recentDateTime: projectInfo.recentDateTime,
- fullFolder: projectInfo.fullFolder
- };
- copyData.property.rootProjectID = projID;
- copyMap.copy = {document: copyData};
- $('#copyShare').modal('hide');
- $.bootstrapLoading.progressStart('拷贝项目', true);
- $("#progress_modal_body").text('正在拷贝项目,请稍候……');
- await ajaxPost('/pm/api/copyProjects', {projectMap: copyMap, user_id: userID, tenderCount: 1});
- const compilationID = projectInfo.compilation;
- importProcessChecking(null, null, ()=> socket.emit('pmTreeChange', { userID, compilationID}));
- } catch (err) {
- alert(err);
- }
- }
- async function importProcessChecking(key, processingFunc = null, completeFunc = null, immediately = false) {
- let count = 0;
- immediately ? checking() : setTimeout(checking, 2000);
- async function checking() {
- let result = await ajaxPost("/pm/api/importProcessChecking", { key: key, user_id: userID });
- if (result.error == 1) {
- let message = result.msg ? result.msg : result.message;
- setTimeout(function () {
- $.bootstrapLoading.progressEnd();//不做这个的话太快,页面不会自动关闭
- }, 500);
- alert(message);
- if (completeFunc) {
- completeFunc(result.data);
- }
- } else if (result.error == 0) {
- if (result.status == "processing") {
- // 只调用一次
- if (processingFunc && count === 0) {
- processingFunc(result);
- }
- count++;
- setTimeout(checking, 2000);
- } else if (result.status == "complete") {
- if (completeFunc) {
- completeFunc(result.data);
- }
- $.bootstrapLoading.progressEnd();
- //refreshAllPage();
- }
- }
- }
- }
- function eventListener(){
- //关闭拷贝工程
- $('#copyShare').on('hidden.bs.modal', function () {
- $('#copyShareProj-info').hide();
- $('#copyShareEng-info').hide();
- });
- //打开拷贝工程
- $('#copyShare').on('shown.bs.modal', function () {
- setCopyModal();
- //更改显示名称
- $('#copyShare_name').val(projectObj.project.projectInfo.name);
- });
- //拷贝工程改变选择建设项目
- $('#copyShare_selectProj').change(function () {
- $('#copyShareProj-info').hide();
- $('#copyShareEng-info').hide();
- $('#copyShareTender-info').hide();
- let curSelID = $(this).select().val();
- setEng(parseInt(curSelID));
- });
- //拷贝工程改变选择单项工程
- $('#copyShare_selectEng').change(function () {
- $('#copyShareTender-info').hide();
- });
- //确认拷贝
- $('#copyShare_confirm').click(function () {
- let selProj = $('#copyShare_selectProj').select().val();
- if(!selProj){
- $('#copyShareProj-info').show();
- return;
- }
- //目标建设项目的计税方法与单位工程的一致时,才可拷贝
- if (curCopySelTree) {
- let projectNode = curCopySelTree.nodes[curCopySelTree.prefix + selProj];
- if (!projectNode || !projectNode.data.property || projectNode.data.property.taxType != projectObj.project.property.taxType){
- alert('当前单位工程计税方法与目标建设项目不一致,不可复制。');
- return;
- }
- }
- let selEng = $('#copyShare_selectEng').select().val();
- if(!selEng){
- $('#copyShareEng-info').show();
- return;
- }
- copyShareProject(projectObj.project.projectInfo, parseInt(selProj), parseInt(selEng));
- });
- }
- return{eventListener}
- })()
- $(document).ready(function () {
- console.log("hehe")
- copyProject.eventListener();
- });
|