| 
					
				 | 
			
			
				@@ -13,11 +13,11 @@ const importView = (() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let xmlObj = null;  //导入xml转化后的对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     let tbcObj = null;  //待确认对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //显示、隐藏提示上传文件窗口相关提示信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    function showUploadAlert(success, msg){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(!success){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    function showUploadAlert(success, msg) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!success) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $('#uploadAlert').removeClass('alert-success'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $('#uploadAlert').addClass('alert-danger'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $('#uploadAlert').removeClass('alert-danger'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $('#uploadAlert').addClass('alert-success'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -122,7 +122,7 @@ const importView = (() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $('#tbc-tenderName').val(curData.name || ''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $('#tbc-engineering').val(curData.engineering || ''); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             curData.temp.confirmed = true;   //增加确认信息(已读) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (this.curIdx === this.datas.length -1) { //到最后一个数据了,无法点击下一工程 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (this.curIdx === this.datas.length - 1) { //到最后一个数据了,无法点击下一工程 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 $('#tbc-next').prop('disabled', true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 $('#tbc-next').prop('disabled', false); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -150,7 +150,7 @@ const importView = (() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 $('#tbc-prev').prop('disabled', false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (this.curIdx !== this.datas.length -1 ) {    //不为最后一个数据了,可以点击下一工程 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (this.curIdx !== this.datas.length - 1) {    //不为最后一个数据了,可以点击下一工程 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 $('#tbc-next').prop('disabled', false); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 $('#tbc-next').prop('disabled', true); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -190,8 +190,8 @@ const importView = (() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //工程专业名称去重 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let engineeringNames = [...new Set(this.engineeringList.map(data => data.lib.name))]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let engineeringHtml = engineeringNames.map(name => 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-             `<option ${tenderData.temp.engineering === name ? 'selected' : ''} value="${name}">${name}</option>`); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-             $('#tbc-engineering').html(engineeringHtml); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                `<option ${tenderData.temp.engineering === name ? 'selected' : ''} value="${name}">${name}</option>`); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            $('#tbc-engineering').html(engineeringHtml); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //$('#tbc-engineering').html(`<option selected value="${tenderData.engineering}">${tenderData.engineering}</option>`); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             //费用标准,若当前工程有费用标准数据(该数据本身没有费用标准数据,选择过了,就会记录),则选中该费用标准 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let feeOptsHtml = engineerings.map(data => 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -218,12 +218,12 @@ const importView = (() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     function getTaxData(query, engineeringList) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //工程专业名称 + 费用标准名称 确定一个工程专业数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let engineering = engineeringList.find(data => query.engineeringName === data.lib.name && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                       query.feeStandard === data.lib.feeName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            query.feeStandard === data.lib.feeName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!engineering || !Array.isArray(engineering.lib.tax_group)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return engineering.lib.tax_group.find(data => query.taxType == data.taxType && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                                          query.calcProgram === data.program_lib.name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            query.calcProgram === data.program_lib.name); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //获取单位工程项目属性的一些数据(新建单位工程需要,前端能获取到的一些数据,还有一些数据需要后端获取: rootProjectID, projectFeature..) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /* 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -247,7 +247,7 @@ const importView = (() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //当前工程专业数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let curEngineering = tbcObj.engineeringList.find(data => query.engineeringName === data.lib.name && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        query.feeStandard === data.lib.feeName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            query.feeStandard === data.lib.feeName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             region: '全省',   //地区 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             valuationType: tbcObj.valuationType,    //计价方式 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -264,19 +264,19 @@ const importView = (() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             indexName: curEngineering.lib.indexName,    // 指标名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             engineerInfoLibID: curEngineering.lib.engineer_info_lib[0] ? curEngineering.lib.engineer_info_lib[0].id : '',   // 工程信息指标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             engineerFeatureLibID: curEngineering.lib.engineer_feature_lib[0] ? curEngineering.lib.engineer_feature_lib[0].id : '',  //工程特征指标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            economicLibID: curEngineering.lib.economic_lib[0] ?  curEngineering.lib.economic_lib[0].id : '',    // 主要经济指标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            economicLibID: curEngineering.lib.economic_lib[0] ? curEngineering.lib.economic_lib[0].id : '',    // 主要经济指标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             mainQuantityLibID: curEngineering.lib.main_quantity_lib[0] ? curEngineering.lib.main_quantity_lib[0].id : '',   // 主要工程量指标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             materialLibID: curEngineering.lib.material_lib[0] ? curEngineering.lib.material_lib[0].id : '', // 主要工料指标 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            calcProgram: {name: taxData.program_lib.name, id: taxData.program_lib.id},  //计算程序 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            calcProgram: { name: taxData.program_lib.name, id: taxData.program_lib.id },  //计算程序 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             colLibID: taxData.col_lib.id,   //列设置 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             templateLibID: taxData.template_lib.id, //清单模板 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            unitPriceFile: {name: curData.name, id: ''},    //新建单价文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            feeFile: {name: curData.name, id: `newFeeRate@@${taxData.fee_lib.id}`}  //新建费率文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            unitPriceFile: { name: curData.name, id: '' },    //新建单价文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            feeFile: { name: curData.name, id: `newFeeRate@@${taxData.fee_lib.id}` }  //新建费率文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     function eventListen() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //选择文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        $('#customFile').change(async function() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        $('#customFile').change(async function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let file = $(this)[0].files[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $('#import-confirm').prop('disabled', true);    //确认导入无效 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             $('.custom-file-label').text(`${file ? file.name : ''}`);   //设置选择框文本 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -285,7 +285,7 @@ const importView = (() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             hideTBCInfo(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             if (file) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let reg = /(xml|XML|qtf|QTF)$/; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if(file.name && !reg.test(file.name)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (file.name && !reg.test(file.name)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     $('.selFile').hide(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     showUploadAlert(false, '请选择xml或qtf文件。'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     return; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -425,7 +425,7 @@ const importView = (() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     data.property = getProperty(tbcObj, data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //默认定额库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     let curEngineering = tbcObj.engineeringList.find(enData => data.temp.engineering === enData.lib.name && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    data.temp.feeStandard === enData.lib.feeName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        data.temp.feeStandard === enData.lib.feeName); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     let defaultLib = curEngineering.lib.ration_lib.find(data => data.isDefault) || curEngineering.lib.ration_lib[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     data.defaultRationLib = parseInt(defaultLib.id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     //此费用定额下可用的定额库id,人材机库id 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -433,7 +433,7 @@ const importView = (() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     data.gljLibIDs = curEngineering.lib.glj_lib.map(data => parseInt(data.id)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //确定生成建设项目的父、前、后节点ID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let {parentProjectID, preProjectID, nextProjectID} = projTreeObj.getRelProjectID(projTreeObj.tree.selected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let { parentProjectID, preProjectID, nextProjectID } = projTreeObj.getRelProjectID(projTreeObj.tree.selected); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 xmlObj.ParentID = parentProjectID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 xmlObj.preID = preProjectID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 xmlObj.NextSiblingID = nextProjectID; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -443,44 +443,31 @@ const importView = (() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     xmlObj.name += `(${moment(Date.now()).format('YYYY-MM-DD HH:mm:ss')})`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 $('#importInterface').modal('hide'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //TEST====================== 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                /*let importData = await importXML.transformData(xmlObj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                console.log(importData);*/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                //TEST====================== 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 pr.start('导入文件', '正在生成文件,请稍候……'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let importData = await importXML.transformData(xmlObj); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let blob = new Blob([JSON.stringify(importData)], {type: 'text/plain;charset=utf-8'}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                let formData = new FormData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                formData.append('file', blob); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                $.ajax({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    url: '/pm/import/importInterface', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    type: 'POST', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    data: formData, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    cache: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    contentType: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    processData: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    timeout: 1000 * 60 * 3, //3分钟 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    success: function(response){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (response.data && Array.isArray(response.data)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            doAfterImport(response.data); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        pr.end(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        setTimeout(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            STATE.importing = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        }, 500); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    error: function(jqXHR){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        pr.end(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        throw `与服务器通信发生错误${jqXHR.status} ${jqXHR.statusText}`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                let blob = new Blob([JSON.stringify(importData)], { type: 'text/plain;charset=utf-8' }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 转换成File实例 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const key = `${uuid.v1()}.json`; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const file = new File([blob], key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 上传文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                console.time(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                await projTreeObj.getUploadToken(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                await UPLOAD_CDN.uploadSync(file, key, projTreeObj.uptoken); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                // 下载并处理文件 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                const rstData = await ajaxPost('/pm/import/importInterface', { key }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                console.timeEnd(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (Array.isArray(rstData)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    doAfterImport(rstData); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } catch (err) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                console.log(err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                alert(err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } finally { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                projTreeObj.uptoken = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 setTimeout(function () { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     STATE.importing = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 }, 500); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 pr.end(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                console.log(err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                alert(err); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 导入窗口激活 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -515,9 +502,9 @@ const importView = (() => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 next = projTreeObj.tree.items.find(node => node.data.ID === data.NextSiblingID); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             lastNode = projTreeObj.insert(data, parent, next); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if(lastNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (lastNode) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             projTreeObj.workBook.getSheet(0).showRow(lastNode.serialNo(), GC.Spread.Sheets.VerticalPosition.center); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return {eventListen}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return { eventListen }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 })(); 
			 |