|
@@ -23,72 +23,127 @@ let exportUtil = {
|
|
|
},
|
|
|
getIndexBills:function (bills) {
|
|
|
return gljUtil.getIndexBills(bills,fixedFlag,_,scMathUtil);
|
|
|
+ },
|
|
|
+ getProjectInfo :async function (data) {
|
|
|
+ let result = await ajaxPost("/pm/api/exportProject",data);
|
|
|
+ return result;
|
|
|
+ },
|
|
|
+ getProjectFile:async function(projectID,projectName){
|
|
|
+ let spString = "|----|";
|
|
|
+ let sumString = "";
|
|
|
+ let result = await exportUtil.getProjectInfo({projectID:projectID,type:"main",user_id: userID});
|
|
|
+ let result_arr = result.split(spString);
|
|
|
+ sumString = result_arr[0];
|
|
|
+ if(result_arr.length == 2){
|
|
|
+ let tenders = JSON.parse(result_arr[1]);
|
|
|
+ for(let t of tenders){
|
|
|
+ let tenderString = await exportUtil.getProjectInfo({projectID:t,rootProjectID:projectID,type:"sub",user_id: userID});
|
|
|
+ await setTimeoutSync(null,500);//设置间隔
|
|
|
+ sumString = sumString + spString +tenderString;
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ throw new Error("数据错误 导出建设项目失败!");
|
|
|
+ }
|
|
|
+ let blob = new Blob([sumString], {type: 'text/plain;charset=utf-8'});
|
|
|
+ return {
|
|
|
+ blob: blob,
|
|
|
+ fileName: projectName+".ybp"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ exprotZBFX:async function (codes) {
|
|
|
+ let pr = new SCComponent.InitProgressBar();
|
|
|
+ pr.start('导出数据接口', '正在导出,请稍候……');
|
|
|
+ try {
|
|
|
+ if(SEIObject.fileCache.length== 2){
|
|
|
+ let tem = SEIObject.fileCache.shift();
|
|
|
+ let fileArry =await XML_EXPORT_BASE.getExtractFile(codes,tem.extractData);
|
|
|
+ //添加招投标数据文件
|
|
|
+ SEIObject.fileCache = SEIObject.fileCache.concat(fileArry);
|
|
|
+
|
|
|
+ //导出建设项目数据
|
|
|
+ let projectFile = await exportUtil.getProjectFile(projectObj.project.property.rootProjectID,$("#rootProjectName").val());
|
|
|
+ //导出压缩包
|
|
|
+ SEIObject.fileCache.push(projectFile);
|
|
|
+ await saveZBFX(SEIObject.fileCache);
|
|
|
+ }
|
|
|
+ }catch (e){
|
|
|
+ console.log(e);
|
|
|
+ alert(e.message);
|
|
|
+ }finally {
|
|
|
+ pr.end();
|
|
|
+ $('#exportCode').modal('hide');
|
|
|
+ $('#exportIndex').modal('hide');
|
|
|
+ }
|
|
|
+
|
|
|
+ async function saveZBFX(fileData) {
|
|
|
+ let zip = new JSZip();
|
|
|
+ for (let file of fileData) {
|
|
|
+ zip.file(file.fileName, file.blob, {binary: true});
|
|
|
+ }
|
|
|
+ let zipFile = await zip.generateAsync({type: 'blob'});
|
|
|
+ saveAs(zipFile, '经济指标.ZBFX');
|
|
|
+ }
|
|
|
}
|
|
|
};
|
|
|
|
|
|
-let SEIObject = {};
|
|
|
+let SEIObject = {
|
|
|
+ exporting:false,
|
|
|
+ fileCache:[],
|
|
|
+ errorMap:{},
|
|
|
+ selfChecked:false
|
|
|
+};
|
|
|
|
|
|
async function selfChecking(projectID,exprotCall=false) {//自检和正式导出共用接口
|
|
|
- let pr = new SCComponent.InitProgressBar();
|
|
|
- if(!exprotCall) pr.start('导出数据接口', '正在自检,请稍候……');
|
|
|
-
|
|
|
- //先检查招投标数据 - todo
|
|
|
-
|
|
|
- //检查重庆指标接口数量
|
|
|
- if(_.isEmpty(SEIObject.errorMap)){
|
|
|
- let [errorMap,SEIFile] = await getSEIIndexFile(projectID);
|
|
|
- if(errorMap) {
|
|
|
- SEIObject.errorMap = errorMap;
|
|
|
- }else {
|
|
|
- SEIObject.fileCache.push(SEIFile);
|
|
|
+ if(SEIObject.selfChecked == false){//自检过了就不用重复自检了
|
|
|
+ let extraData = await XML_EXPORT_BASE.getExtractData();
|
|
|
+ SEIObject.errorMap = extraData.failList;
|
|
|
+ SEIObject.fileCache.push(extraData);
|
|
|
+ //检查重庆指标接口数量
|
|
|
+ if(_.isEmpty(SEIObject.errorMap)){
|
|
|
+ let [errorMap,SEIFile] = await getSEIIndexFile(projectID);
|
|
|
+ if(errorMap) {
|
|
|
+ SEIObject.errorMap = errorMap;
|
|
|
+ }else {
|
|
|
+ SEIObject.fileCache.push(SEIFile);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- _.isEmpty(SEIObject.errorMap)?alert("自检完成,未检测到错误数据。"): showExportError(SEIObject.errorMap);
|
|
|
+ if(_.isEmpty(SEIObject.errorMap)){
|
|
|
+ if(!exprotCall) alert("自检完成,未检测到错误数据。")
|
|
|
+ }else{
|
|
|
+ showExportError(SEIObject.errorMap);
|
|
|
+ }
|
|
|
SEIObject.selfChecked = true;
|
|
|
- if(!exprotCall) pr.end();
|
|
|
}
|
|
|
|
|
|
|
|
|
async function exportSEI(projectID){
|
|
|
if(!_.isEmpty(SEIObject.errorMap)) return showExportError(SEIObject.errorMap);//如果自检的时候已经有错误,直接提示;
|
|
|
let pr = new SCComponent.InitProgressBar();
|
|
|
- pr.start('导出数据接口', '正在导出文件,请稍候……');
|
|
|
SEIObject.exporting = true;
|
|
|
try {
|
|
|
- if(!SEIObject.selfChecked){//没有经过自检,则从招投标接口开始取数据
|
|
|
- await selfChecking(projectID,true);
|
|
|
- if(!_.isEmpty(SEIObject.errorMap)) return pr.end();
|
|
|
- }
|
|
|
- //导出建设项目数据
|
|
|
- //导出压缩包
|
|
|
- // saveZBFX(SEIObject.fileCache);
|
|
|
-
|
|
|
+ if(!SEIObject.selfChecked) pr.start('导出数据接口', '正在自检,请稍候……');
|
|
|
+ await selfChecking(projectID,true);
|
|
|
+ pr.end();
|
|
|
+ await setTimeoutSync(null,300);//设置间隔
|
|
|
+ $('#exportCode').modal('show');
|
|
|
}catch (e){
|
|
|
console.log(e);
|
|
|
- }finally {
|
|
|
pr.end();
|
|
|
- $('#exportCode').modal('show');
|
|
|
- //SEIObject.exporting = false;
|
|
|
+ alert(e.message);
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
- async function saveZBFX(fileData) {
|
|
|
- let zip = new JSZip();
|
|
|
- for (let file of fileData) {
|
|
|
- zip.file(file.fileName, file.blob, {binary: true});
|
|
|
- }
|
|
|
- let zipFile = await zip.generateAsync({type: 'blob'});
|
|
|
- saveAs(zipFile, '经济指标.ZBFX');
|
|
|
- }
|
|
|
-
|
|
|
}
|
|
|
|
|
|
-function showExportError(errorMap) {
|
|
|
+function showExportError(errorMap) {//errorMap 如果是一个数组,则是招投标接口传过来的
|
|
|
let infoList = [];
|
|
|
- for(let name in errorMap){
|
|
|
- infoList.push(`<span style="font-weight: bold">单位工程“${name}”下:</span>`);
|
|
|
- for(let err of errorMap[name]){
|
|
|
- infoList.push(err);
|
|
|
+ if(Array.isArray(errorMap)){
|
|
|
+ infoList = errorMap;
|
|
|
+ }else {
|
|
|
+ for(let name in errorMap){
|
|
|
+ infoList.push(`<span style="font-weight: bold">单位工程“${name}”下:</span>`);
|
|
|
+ for(let err of errorMap[name]){
|
|
|
+ infoList.push(err);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
if(infoList.length > 20){
|
|
@@ -578,8 +633,17 @@ async function getSEIIndexFile(projectID) {
|
|
|
|
|
|
$(function () {
|
|
|
|
|
|
- $("#export-index-check").click( function (){
|
|
|
- selfChecking(projectObj.project.property.rootProjectID);
|
|
|
+ $("#export-index-check").click(async function (){
|
|
|
+ let pr = new SCComponent.InitProgressBar();
|
|
|
+ pr.start('导出数据接口', '正在自检,请稍候……');
|
|
|
+ try {
|
|
|
+ await selfChecking(projectObj.project.property.rootProjectID);
|
|
|
+ }catch (e){
|
|
|
+ console.log(e);
|
|
|
+ }finally {
|
|
|
+ pr.end();
|
|
|
+ }
|
|
|
+
|
|
|
});
|
|
|
$("#export-index-confirm").click(async function (){
|
|
|
await exportSEI(projectObj.project.property.rootProjectID);
|