| 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();});
 |