123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656 |
- /**
- * Created by Zhong on 2017/10/30.
- */
- //测试数据
- let deleteInfo = {deleteBy: 76075, deleteDateTime: '2017-10-31', deleted: true};
- let temp_gc_datas = [
- {ID: 1, ParentID: -1, NextSiblingID: 7, name: 'testTreeA', projType: 'Project', userID: 76075, createDateTime: '2017-10-30', deleteInfo: deleteInfo,
- unitPriceFiles: [{name: 'uA', id: 100, root_project_id: 1, user_id: 76075, deleteInfo: deleteInfo}, {name: 'uB', id: 101, root_project_id: 1, user_id: 76075, deleteInfo: deleteInfo}],
- feeRateFiles: [{name: 'fA', ID: 'fr-1', rootProjectID: 1, userID: 76075, deleteInfo: deleteInfo}, {name: 'fB', ID: 'fr-2', rootProjectID: 1, userID: 76075, deleteInfo: deleteInfo}]},
- {ID: 2, ParentID: 1, NextSiblingID: 3, name: 'enA', projType: 'Engineering', userID: 76075, createDateTime: '2017-10-30', deleteInfo: deleteInfo},
- {ID: 3, ParentID: 1, NextSiblingID: -1, name: 'enB', projType: 'Engineering', userID: 76075, createDateTime: '2017-10-30', deleteInfo: deleteInfo},
- {ID: 4, ParentID: 3, NextSiblingID: 5, name: 'tenderA', projType: 'Tender', userID: 76075, createDateTime: '2017-10-30', deleteInfo: deleteInfo, property: {feeFile: {id: 'fr-1', name: 'fA'}, unitPriceFile: {id: 100, name: 'uA'}}},
- {ID: 5, ParentID: 3, NextSiblingID: 6, name: 'tenderB', projType: 'Tender', userID: 76075, createDateTime: '2017-10-30', deleteInfo: deleteInfo, property: {feeFile: {id: 'unD-1', name: 'unDF'}, unitPriceFile: {id: 100, name: 'uA'}}},
- {ID: 6, ParentID: 3, NextSiblingID: -1, name: 'tenderC', projType: 'Tender', userID: 76075, createDateTime: '2017-10-30', deleteInfo: deleteInfo, property: {feeFile: {id: 'fr-2', name: 'fB'}, unitPriceFile: {id: 101, name: 'uB'}}},
- {ID: 7, ParentID: -1, NextSiblingID: 10, name: 'testTreeB', projType: 'Project', userID: 76075, createDateTime: '2017-10-30', deleteInfo: deleteInfo,
- unitPriceFiles: [{name: 'uC', id: 102, root_project_id: 7, user_id: 76075, deleteInfo: deleteInfo}, {name: 'uD', id: 103, root_project_id: 7, user_id: 76075, deleteInfo: deleteInfo}],
- feeRateFiles: [{name: 'fC', ID: 'fr-3', rootProjectID: 7, userID: 76075, deleteInfo: deleteInfo}]},
- {ID: 8, ParentID: 7, NextSiblingID: -1, name: 'enC', projType: 'Engineering', userID: 76075, createDateTime: '2017-10-30', deleteInfo: deleteInfo},
- {ID: 9, ParentID: 8, NextSiblingID: -1, name: 'tenderD', projType: 'Tender', userID: 76075, createDateTime: '2017-10-30', deleteInfo: deleteInfo, property: {feeFile: {id: 'fr-3', name: 'fC'}, unitPriceFile: {id: 102, name: 'uC'}}},
- {ID: 10, ParentID: -1, NextSiblingID: -1, name: 'testTreeC', projType: 'Project', userID: 76075, createDateTime: '2017-10-30', unitPriceFiles: [], feeRateFiles: [{name: 'fC', ID: 'fr-3', rootProjectID: 7, userID: 76075, deleteInfo: deleteInfo}]},
- {ID: 11, ParentID: 10, NextSiblingID: -1, name: 'enD', projType: 'Engineering', userID: 76075, createDateTime: '2017-10-30'},
- {ID: 12, ParentID: 11, NextSiblingID: -1, name: 'tenderE', projType: 'Tender', userID: 76075, createDateTime: '2017-10-30', deleteInfo: deleteInfo, property: {feeFile: {id: 'fr-3', name: 'fC'}, unitPriceFile: {id: 103, name: 'uD'}}},
- {ID: 13, ParentID: 2, NextSiblingID: 14, name: 'tenderF', projType: 'Tender', userID: 76075, createDateTime: '2017-10-30', deleteInfo: deleteInfo, property: {feeFile: {id: 'unD-2', name: 'unDF2'}, unitPriceFile: {id: 102, name: 'uC'}}},
- {ID: 14, ParentID: 2, NextSiblingID: 15, name: 'tenderG', projType: 'Tender', userID: 76075, createDateTime: '2017-10-30', deleteInfo: deleteInfo, property: {feeFile: {id: 'fr-3', name: 'fC'}, unitPriceFile: {id: 102, name: 'uC'}}},
- {ID: 15, ParentID: 2, NextSiblingID: -1, name: 'tenderH', projType: 'Tender', userID: 76075, createDateTime: '2017-10-30', deleteInfo: deleteInfo, property: {feeFile: {id: 'qwqw', name: 'qweq'}, unitPriceFile: {id: 300, name: 'u30'}}}
- ];
- /*function getTestDatas(){
- let rst = [];
- for(let i = 0; i < 1000; i ++){
- let nid = i + 1 < 1000 ? i + 1 : -1;
- let obj = {ID: i, ParentID: -1, NextSiblingID: nid, name : 'test' + i, projType: 'Project', userID: 76075, createDateTime: '2017-11-3', deleteInfo: deleteInfo,
- unitPriceFiles: [{name: 'up' + i, id: i + 10000, deleteInfo: deleteInfo}], feeRateFiles: [{name: 'ff' + i, id: 'fr-' + i, deleteInfo: deleteInfo}]};
- rst.push(obj);
- }
- return rst;
- }*/
- let gcTree = null;
- let decDate = null;//恢复后的名称后缀(时间+恢复)
- /*let projectType = {
- folder: 'Folder',
- tender: 'Tender',
- project: 'Project',
- engineering: 'Engineering'
- };*/
- let fileType = {
- unitPriceFile: 'UnitPriceFile',
- feeRateFile: 'FeeRateFile'
- };
- //恢复路径t = tender, e = engineering, p = project
- let recPath = {t: 'T', t_e: 'T_E', t_e_p: 'T_E_P', e: 'E', e_p: 'E_P', p: 'P'};
- let gcTreeSetting = {
- tree: {
- id: 'ID',
- pid: 'ParentID',
- nid: 'NextSiblingID',
- btnColumn: 1,
- nullId: -1
- },
- columns: [
- {
- head: '',
- data: '',
- width: '40',
- event: {}
- },
- {
- head: '工程列表',
- data: 'name',
- width: '50%',
- 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(icon, ' ', text);
- },
- getIcon: function (html, node) {
- if (node.data.projType === projectType.tender) {
- html.push('<span class="poj-icon">└</span>');
- }
- }
- }
- },
- {
- head: '删除日期',
- data: 'deleteDateTime',
- width: '10%',
- event: {
- getText: function (html, node, text) {
- if (node.data.projType === projectType.tender) {
- html.push(deleted(node) ?
- node.data.deleteInfo.deleteDateTime : '');
- // 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 ? text : '');
- }
- }
- }
- },
- {
- head: '恢复',
- data: 'recovery',
- width: '10%',
- event: {
- getText: function (html, node, text) {
- if(node.data.projType === projectType.project && deleted(node)){
- html.push('<a href="javascript:void(0);" data-toggle="modal" data-target="#rePoj">恢复</a>');
- }
- else if(node.data.projType === projectType.engineering && deleted(node)){
- html.push('<a href="javascript:void(0);" data-toggle="modal" data-target="#rePoj">恢复</a>');
- }
- else if(node.data.projType === projectType.tender && deleted(node)){
- html.push('<a href="javascript:void(0);" data-toggle="modal" data-target="#rePoj">恢复</a>');
- }
- else {
- html.push('');
- }
- },
- tdBindEvent: function(td, node){
- $('a:eq(0)' ,td).bind('click', function () {
- let tenderNodes = m_getTenders(node);
- $('#rePoj .modal-header').empty();
- $('p', '#rePoj .modal-body').remove();
- $('#rePoj .modal-header').html(v_getTitle(node));
- $('#rePoj .modal-body').html(v_getMoBody(node, tenderNodes));
- console.log(node);
- console.log(node.preSibling());
- //test 获取更新的数据
- /*let updateDatas = m_getRecDatas(node);
- console.log(updateDatas);*/
- });
- }
- }
- },
- {
- head: '单价文件',
- data: 'unitPriceFiles',
- width: '10%',
- event: {
- getText: function (html, node, text) {
- if(node.data.projType === projectType.project && node.data.unitPriceFiles !== undefined && node.data.unitPriceFiles.length > 0){
- html.push('<a href="javascript:void(0);" data-toggle="modal" data-target="#reFile">恢复</a>');
- }
- },
- tdBindEvent: function (td, node) {
- $('a:eq(0)', td).bind('click', function () {
- let unitPriceFiles = node.data.unitPriceFiles;
- $('#reFile h5').text('恢复单价文件');
- $('tr', '#reFile tbody').remove();
- $('#reFile tbody').html(v_getFiles(fileType.unitPriceFile, unitPriceFiles));
- });
- }
- }
- },
- {
- head: '费率文件',
- data: 'feeRateFiles',
- width: '10%',
- event: {
- getText: function (html, node, text) {
- if(node.data.projType === projectType.project && node.data.feeRateFiles !== undefined && node.data.feeRateFiles.length > 0){
- html.push('<a href="javascript:void(0);" data-toggle="modal" data-target="#reFile">恢复</a>');
- }
- },
- tdBindEvent: function (td, node) {
- $('a:eq(0)', td).bind('click', function () {
- let feeRateFiles = node.data.feeRateFiles;
- $('#reFile h5').text('恢复费率文件');
- $('tr', '#reFile tbody').remove();
- $('#reFile tbody').html(v_getFiles(fileType.feeRateFile, feeRateFiles));
- });
- }
- }
- }
- ]
- };
- $(document).ready(function () {
- $('#tab_pm_gc').on('show.bs.tab', function () {
- gc_init();
- Tree = null;
- });
- e_recFiles($('#reFileBtn'));
- e_recProj($('#rePojBtn'));
- });
- function gc_init(){
- let table = $('#gcTree');
- $('thead', table).remove();
- $('tbody', table).remove();
- m_buildVirtualTree(temp_gc_datas);
- gcTree = $.fn.treeTable.init(table, gcTreeSetting, temp_gc_datas);
- //gcTree = $.fn.treeTable.init(table, gcTreeSetting, getTestDatas());
- }
- //项目恢复模态框标题
- function v_getTitle(node){
- let html = '';
- html += '<h5 class="modal-title">恢复 ';
- if(node.data.projType === projectType.project){
- html += '<i class="fa fa-cubes"></i>建设项目</h5>';
- }
- else if(node.data.projType === projectType.engineering){
- html += '<i class="fa fa-cube"></i>单项工程</h5>';
- }
- else if(node.data.projType === projectType.tender){
- html += '<i class="fa fa-sticky-note-o"></i>单位工程</h5>';
- }
- html += '<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>';
- return html;
- }
- //项目恢复模态框主体
- function v_getMoBody(oprNode, nodes){
- let html = '';
- if(oprNode.data.projType === projectType.tender){
- decDate = '(' + new Date().Format('MM-dd hh:mm:ss') + '恢复)';
- let recName = oprNode.data.name + decDate;
- html += '<p>恢复后将重命名为 <b>' + recName + '</b></p>';
- }
- else {
- if(oprNode.data.projType === projectType.project){
- html += '<p><i class="fa fa-cubes"></i> ' + oprNode.data.name + '下的单位工程都将恢复都将恢复,恢复后将重命名为</p>';
- }
- else if(oprNode.data.projType === projectType.engineering){
- html += '<p><i class="fa fa-cube"></i> ' + oprNode.data.name + '下的单位工程都将恢复都将恢复,恢复后将重命名为</p>';
- }
- html += ('<p>');
- for(let i = 0, len = nodes.length; i < len; i++){
- let recName = nodes[i].data.name + '(' + new Date().Format('MM-dd hh:mm:ss') +'恢复)';
- html += '<b>' + recName + '</b>、';
- }
- html = html.slice(0, html.length - 1);
- html += ('</p>');
- }
- html += ('<p>点“确定”按钮,确认从回收站中恢复</p>');
- return html;
- }
- //单价、费率文件恢复弹出框数据
- function v_getFiles(type, files){
- let html = '';
- for(let i = 0, len = files.length; i < len; i ++){
- let recName = type === fileType.unitPriceFile ? files[i].name + '单价文件' : files[i].name + '费率文件';
- let fileId = type === fileType.unitPriceFile ? files[i].id : files[i].ID;
- let recTime = new Date();
- let recTimeA = recTime.Format('yyyy-MM-dd');
- let recTimeB = recTime.Format('hh:mm:ss');
- html += '<tr><td>'+ recName +'</td><td>' + recTimeA + '<br>' + recTimeB + '</td><td><input name="fileItems" type="checkbox" fileId = "' + fileId + '" fileType = "' + type + '"></td></tr>';
- }
- return html;
- }
- //恢复单价、费率文件后前端显示变化
- function v_recFiles(project, fileIds, type){
- let projFiles;
- if(type === fileType.unitPriceFile){
- projFiles = project.data.unitPriceFiles;
- }
- else if(type === fileType.feeRateFile){
- projFiles = project.data.feeRateFiles;
- }
- if(projFiles && projFiles.length > 0){
- let tempFiles = [];
- for(let i = 0, len = projFiles.length; i < len; i++){
- let isExist = false;
- for(let j = 0, jLen = fileIds.length; j < jLen; j++){
- let id = projFiles[i].id || projFiles[i].ID || null;
- if(id && id === fileIds[j]){
- isExist = true;
- }
- }
- if(!isExist){
- tempFiles.push(projFiles[i]);
- }
- }
- if(type === fileType.unitPriceFile){
- project.data.unitPriceFiles = tempFiles;
- }
- else if(type === fileType.feeRateFile){
- project.data.feeRateFiles = tempFiles;
- }
- }
- }
- function v_removeNode(node){
- gcTree.removeNode(node);
- let parent = node.parent || null;
- if(parent && parent.children.length === 0 && parent.data !== undefined){
- v_removeNode(parent);
- }
- }
- function v_refreshNode(node){
- if(deleted(node)){
- delete node.data.deleteInfo;
- }
- gcTree.refreshNodesDom([node]);
- let parent = node.parent || null;
- if(parent && parent.data !== undefined){
- v_refreshNode(parent);
- }
- }
- //将获取的回收站中的数据建虚拟树
- function m_buildVirtualTree(datas){
- for(let i = 0, len = datas.length; i < len; i++){
- let children = datas[i].children || null;
- if(children){
- m_buildVirtualTree(children);
- }
- let next = datas[i+1] || null;
- if(next){
- datas[i].NextSiblingID = next.ID;
- }
- else {
- datas[i].NextSiblingID = -1;
- }
- }
- }
- //获得当前节点的tenders数据,模态提示框用
- function m_getTenders(node){
- if(node.data.projType === projectType.tender) return [node];
- else {
- let rst = [];
- if(node.children.length > 0){
- node.children.forEach(function (cNode) {
- if(cNode.children.length > 0){
- cNode.children.forEach(function (ccNode) {
- if(ccNode.data.projType === projectType.tender) rst.push(ccNode);
- });
- }
- else if(cNode.children.length === 0 && cNode.data.projType === projectType.tender){
- rst.push(cNode);
- }
- });
- }
- return rst;
- }
- }
- //获得要更新的数据(包含恢复的数据,维护项目管理树的数据)
- function m_getRecDatas(oprNode){
- let rst = Object.create(null);
- let rstProj = [], rstFile = [];
- let path;
- if(oprNode.data.projType === projectType.tender){
- path = recPath.t;
- let engineering = oprNode.parent || null;
- if(!engineering) return null;
- let project = engineering.parent || null;
- if(!project) return null;
- if(engineering && deleted(engineering)){
- path = recPath.t_e;
- }
- //恢复建设项目
- if(project && deleted(project)){
- path = recPath.t_e_p;
- }
- //恢复单价、费率文件
- rstFile = rstFile.concat(getUpdateFiles([oprNode], project));
- if(path === recPath.t){
- rstProj = rstProj.concat(getUpdateDatas(projectType.tender, oprNode, true, true));
- }
- else if(path === recPath.t_e){
- rstProj = rstProj.concat(getUpdateDatas(projectType.tender, oprNode, true, false));
- rstProj = rstProj.concat(getUpdateDatas(projectType.engineering, engineering, true, true));
- }
- else if(path === recPath.t_e_p){
- rstProj = rstProj.concat(getUpdateDatas(projectType.tender, oprNode, true, false));
- rstProj = rstProj.concat(getUpdateDatas(projectType.engineering, engineering, true, false));
- rstProj = rstProj.concat(getUpdateDatas(projectType.project, project, true, false));
- }
- }
- else if(oprNode.data.projType === projectType.engineering){
- path = recPath.e;
- let project = oprNode.parent || null;
- if(!project) return null;
- //恢复建设项目
- if(project && deleted(project)){
- path = recPath.e_p;
- }
- let tenders = oprNode.children;
- if(tenders.length > 0){
- for(let i = 0, len = tenders.length; i < len; i++){
- rstProj = rstProj.concat(getUpdateDatas(projectType.tender, tenders[i], true, false));
- }
- //恢复单价、费率文件
- rstFile = rstFile.concat(getUpdateFiles(tenders, project));
- }
- if(path === recPath.e){
- rstProj= rstProj.concat(getUpdateDatas(projectType.engineering, oprNode, true, true));
- }
- else if(path === recPath.e_p){
- rstProj= rstProj.concat(getUpdateDatas(projectType.engineering, oprNode, true, false));
- rstProj= rstProj.concat(getUpdateDatas(projectType.project, project, true, false));
- }
- }
- else if(oprNode.data.projType === projectType.project){
- path = recPath.p;
- let engineerings = oprNode.children;
- if(engineerings.length > 0){
- let allTenders = [];
- for(let i = 0, len = engineerings.length; i < len; i++){
- //恢复单项工程
- rstProj = rstProj.concat(getUpdateDatas(projectType.engineering, engineerings[i], false, false));
- let tenders = engineerings[i].children;
- allTenders = allTenders.concat(tenders);
- for(let j = 0, jLen = tenders.length; j < jLen; j++){
- //恢复单位工程
- rstProj = rstProj.concat(getUpdateDatas(projectType.tender, tenders[j], false, false));
- }
- }
- //恢复单价、费率文件
- rstFile = rstFile.concat(getUpdateFiles(allTenders, oprNode));
- }
- //恢复建设项目
- rstProj = rstProj.concat(getUpdateDatas(projectType.project, oprNode, false, false));
- }
- console.log(path);
- rst.proj = rstProj;
- rst.file = rstFile;
- return rst;
- }
- //获得勾选的单价、费率文件的id
- function m_getFilesIds(nodes){
- let rstSet = new Set();
- for(let i = 0, len = nodes.length; i < len; i++){
- let fileId = $(nodes[i]).attr('fileId') || null;
- if(fileId){
- if($(nodes[i]).attr('fileType') === fileType.unitPriceFile){
- fileId = parseInt(fileId);
- }
- rstSet.add(fileId);
- }
- }
- return Array.from(rstSet);
- }
- function m_project(node){
- if(node && node.data.projType === projectType.project) return node;
- if(!node) return null;
- let parent = node.parent || null;
- if(!parent) return null;
- if(parent && parent.data.projType === projectType.project) return parent;
- let gParent = parent.parent || null;
- if(!gParent) return null;
- if(gParent && gParent.data.projType === projectType.project) return gParent;
- return null;
- }
- //点击单价文件、费率文件下的恢复操作(确认)
- function e_recFiles(btn){
- btn.bind('click', function () {
- let recIds = m_getFilesIds($('[name = "fileItems"]:checked'));
- let fileType = $('[name = "fileItems"]:checked').attr('fileType');
- let selected = gcTree.selected();
- //backend
- let updateDatas = [];
- for(let i = 0, len = recIds.length; i < len; i++){
- updateDatas.push(getUpdateObj(fileType, {id: recIds[i]}, {deleteInfo: null}));
- }
- //front
- if(recIds.length > 0){
- v_recFiles(selected, recIds, fileType);
- if(deleted(selected)){
- delete selected.data.deleteInfo;
- }
- gcTree.refreshNodesDom([selected]);
- }
- });
- }
- //点击项目下的恢复操作(确认
- function e_recProj(btn){
- btn.bind('click', function () {
- let selected = gcTree.selected();
- //backend
- let updateObj = m_getRecDatas(selected);
- let updateDatas = updateObj.proj.concat(updateObj.file);
- let fileObj = getRecFileObj(updateObj.file);
- console.log(updateObj);
- //保存成功后回调front
- //front
- let project = m_project(selected);
- if(project){
- if(fileObj[fileType.unitPriceFile].length > 0){
- v_recFiles(project, fileObj[fileType.unitPriceFile], fileType.unitPriceFile);
- }
- if(fileObj[fileType.feeRateFile].length > 0){
- v_recFiles(project, fileObj[fileType.feeRateFile], fileType.feeRateFile);
- }
- }
- v_removeNode(selected);
- v_refreshNode(selected);
- });
- }
- function a_getGC(callback){
- $.ajax({
- type: 'post',
- url: '/pm/api/getGCDatas',
- dataType: 'json',
- timeout: 5000,
- success: function (result) {
- if(!result.error){
- if(callback){
- callback(result.data);
- }
- }
- }
- })
- }
- function a_rec(nodes, callback){
- $.ajax({
- type: 'post',
- url: '/pm/api/recGC',
- data: {nodes: JSON.stringify(nodes)},
- dataType: 'json',
- timeout: 5000,
- success: function (result) {
- if(!result.error){
- if(callback){
- callback();
- }
- }
- }
- })
- }
- function deleted(node){
- return node.data.deleteInfo !== undefined && node.data.deleteInfo.deleted;
- }
- function fIsExist(files, id, type){
- let isExist = false;
- for(let i = 0, len = files.length; i < len; i++){
- if((type === fileType.unitPriceFile && files[i].id === id) || (type === fileType.feeRateFile && files[i].ID === id)){
- isExist = true;
- break;
- }
- }
- return isExist;
- }
- function getRecFileObj(files){
- let rst = Object.create(null);
- let rst_UF = [], rst_FF = [];
- for(let i = 0, len = files.length; i < len; i++){
- if(files[i].findData !== undefined && files[i].findData.id !== undefined){
- if(files[i].updateType === fileType.unitPriceFile){
- rst_UF.push(files[i].findData.id);
- }
- else if(files[i].updateType === fileType.feeRateFile){
- rst_FF.push(files[i].findData.id);
- }
- }
- }
- rst[fileType.unitPriceFile] = rst_UF;
- rst[fileType.feeRateFile] = rst_FF;
- return rst;
- }
- function getUpdateObj(updateType, findData, updateData){
- let obj = Object.create(null);
- obj.updateType = updateType;
- obj.findData = findData;
- obj.updateData = updateData;
- return obj;
- }
- function getUpdateDatas(updateType, node, mtNID, mtPM){
- let rst = [];
- if(!decDate){
- decDate = '(' + new Date().Format('MM-dd hh:mm:ss') + '恢复)';
- }
- if(updateType === projectType.tender || updateType === projectType.engineering){
- //维护回收站树
- /* if(mtGC){
- rst.push(getUpdateObj(updateType, {NextSiblingID: node.data.ID, 'deleteInfo.deleted': true}, {NextSiblingID: node.data.NextSiblingID}));
- }*/
- //维护项目管理树
- if(mtPM){
- rst.push(getUpdateObj(updateType, {ParentID: node.data.ParentID, NextSiblingID: -1, deleteInfo: null}, {NextSiblingID: node.data.ID}));
- }
- //恢复
- if(mtNID){
- rst.push(getUpdateObj(updateType, {ID: node.data.ID, name: node.data.name + decDate}, {deleteInfo: null, NextSiblingID: -1}));
- }
- else {
- rst.push(getUpdateObj(updateType, {ID: node.data.ID, name: node.data.name + decDate}, {deleteInfo: null}));
- }
- }
- else if(updateType === projectType.project){
- /* //维护回收站树
- if(mtGC){
- rst.push(getUpdateObj(updateType, {NextSiblingID: node.data.ID, 'deleteInfo.deleted': true}, {NextSiblingID: node.data.NextSiblingID}));
- }*/
- //恢复
- rst.push(getUpdateObj(updateType, {ID: node.data.ID, name: node.data.name + decDate}, {deleteInfo: null}));//NextSibling为undefined,后端处理
- }
- return rst;
- }
- //unitPriceFile or feeRateFile
- function getUpdateFiles(tenders, project){
- let unitFiles = [], feeFiles = [], rst = [];
- for(let i = 0, len = tenders.length; i < len; i++){
- //恢复单价文件
- if(project && project.data.unitPriceFiles.length > 0 && fIsExist(project.data.unitPriceFiles, tenders[i].data.property.unitPriceFile.id, fileType.unitPriceFile)){
- unitFiles.push(tenders[i].data.property.unitPriceFile.id);
- }
- //恢复费率文件
- if(project && project.data.feeRateFiles.length > 0 && fIsExist(project.data.feeRateFiles, tenders[i].data.property.feeFile.id, fileType.feeRateFile)){
- feeFiles.push(tenders[i].data.property.feeFile.id);
- }
- }
- let ufIds = Array.from(new Set(unitFiles));
- let ffIds = Array.from(new Set(feeFiles));
- for(let i = 0, len = ufIds.length; i < len; i++){
- rst.push(getUpdateObj(fileType.unitPriceFile, {id: ufIds[i]}, {deleteInfo: null}));
- }
- for(let i = 0, len = ffIds.length; i < len; i++){
- rst.push(getUpdateObj(fileType.feeRateFile, {id: ffIds[i]}, {deleteInfo: null}));
- }
- return rst;
- }
|