Ver código fonte

重庆指标接口初步

zhangweicheng 5 anos atrás
pai
commit
bc9d5aa11c

+ 53 - 1
web/building_saas/main/html/main.html

@@ -105,7 +105,7 @@
                     <a class="dropdown-toggle" href="#" data-toggle="dropdown"><i class="fa  fa-code-fork"></i></a>
                     <div class="dropdown-menu" id="exportMenu">
                         <a class="dropdown-item" href="#export" data-toggle="modal" data-target="#export">导出<%= region %>电子招投标数据文件</a>
-                        <a class="dropdown-item" href="javascript:void(0)" id="SEIMenu"  >导出<%= region %>指标成果文件</a>
+                        <a class="dropdown-item" href="#exportIndex"  data-toggle="modal" data-target="#exportIndex" >导出<%= region %>指标成果文件</a>
                     </div>
                 </span>
                       <% } %>
@@ -2142,6 +2142,37 @@
         </div>
     </div>
 </div>
+
+<!--弹出 数据接口导出-->
+<div class="modal fade" id="exportIndex" data-backdrop="static">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title"><%= region %>指标成果文件接口<!-- 重庆其他电子招投标数据接口 --></h5>
+                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+                    <span aria-hidden="true">&times;</span>
+                </button>
+            </div>
+            <div class="modal-body">
+                <!--检测提醒-->
+                <div class="card">
+                    <div class="card-body">
+                        <h5 class="card-title">导出<%= region %>电子招投标数据接口文件</h5>
+                        <p class="card-text">导出之前,建议您执行项目自检功能,避免出现错误。</p>
+                        <a id="export-index-check" href="javascript:void(0);" class="btn btn-primary">自检</a>
+                    </div>
+                </div>
+            </div>
+            <div class="modal-footer">
+                <a id="export-index-confirm" href="javascript:void(0);" class="btn btn-primary">确定导出</a>
+                <button type="button" class="btn btn-secondary" data-dismiss="modal">关闭</button>
+            </div>
+        </div>
+    </div>
+</div>
+
+
+
 <!--设置导出工程编号-->
 <div class="modal fade" id="exportCode" data-backdrop="static">
     <div class="modal-dialog" role="document">
@@ -2156,6 +2187,27 @@
                 <div class="modal-auto-height" style="overflow: hidden" id="exportSpread">
                 </div>
                 <p>*工程编号作为单项、单位工程的标识,要求在建设项目下唯一。</p>
+
+
+                <div class="form-group" style="">
+                    <div class="form-check ml-4">
+                        <input class="form-check-input" type="checkbox"  id="sei1" checked>
+                        <label class="form-check-label" for="sei1">
+                            投标文件
+                        </label>
+                        <small class="form-text text-muted">投标工程数据文件</small>
+                        <input class="form-check-input" type="checkbox"  id="sei2" checked>
+                        <label class="form-check-label" for="sei2">
+                            投标文件
+                        </label>
+                        <small class="form-text text-muted">投标工程数据文件</small>
+                        <input class="form-check-input" type="checkbox"  id="sei3" checked>
+                        <label class="form-check-label" for="sei3">
+                            投标文件
+                        </label>
+                        <small class="form-text text-muted">投标工程数据文件</small>
+                    </div>
+                </div>
             </div>
             <div class="modal-footer">
                 <button type="button" class="btn btn-primary" id="exportCode-confirm">确定</button>

+ 98 - 29
web/over_write/js/chongqing_2018_export_sei.js

@@ -26,40 +26,92 @@ let exportUtil = {
     }
 };
 
-async function exportSEI(projectID) {
+let SEIObject = {};
 
-    let tenderProjects = [];
-    let errorMap = {};
-    let result = await ajaxPost("/project/getSEIProjects",{projectID:projectID});
+async function selfChecking(projectID,exprotCall=false) {//自检和正式导出共用接口
     let pr = new SCComponent.InitProgressBar();
-    pr.start('导出数据接口', '正在导出文件,请稍候……');
-    let project = getProject(result);
-    await prepareTenderDatas(tenderProjects,project);
+   if(!exprotCall) pr.start('导出数据接口', '正在自检,请稍候……');
 
-    if(!_.isEmpty(errorMap)){
-        showError(errorMap);
-        return pr.end();
+    //先检查招投标数据  - todo
+
+    //检查重庆指标接口数量
+    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);
+    SEIObject.selfChecked = true;
+    if(!exprotCall) pr.end();
+}
 
-    toXml(project);
 
-    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);
+
+    }catch (e){
+        console.log(e);
+    }finally {
+        pr.end();
+        $('#exportCode').modal('show');
+        //SEIObject.exporting = false;
+    }
 
-    
-    function showError(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);
-            }
+
+    async function saveZBFX(fileData) {
+        let zip = new JSZip();
+        for (let file of fileData) {
+            zip.file(file.fileName, file.blob, {binary: true});
         }
-        if(infoList.length > 20){
-            $('#hintBox_caption').addClass('export-check');
+        let zipFile = await zip.generateAsync({type: 'blob'});
+        saveAs(zipFile, '经济指标.ZBFX');
+    }
+
+}
+
+function showExportError(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);
         }
-        let msg = infoList.join(`<br>`);
-        alert(msg);
     }
+    if(infoList.length > 20){
+        $('#hintBox_caption').addClass('export-check');
+    }
+    let msg = infoList.join(`<br>`);
+    alert(msg);
+}
+
+async function getSEIIndexFile(projectID) {
+
+    let tenderProjects = [];
+    let errorMap = {};
+    let result = await ajaxPost("/project/getSEIProjects",{projectID:projectID});
+    let project = getProject(result);
+    await prepareTenderDatas(tenderProjects,project);
+
+    if(!_.isEmpty(errorMap)){
+        return [errorMap,null];
+    }
+    let file = toXml(project);
+
+    return [null,file];
 
     function getProject(orignal) {//取建设项目信息
         let basicInformation = getBaseInfo(orignal);
@@ -515,15 +567,32 @@ async function exportSEI(projectID) {
          //格式化
          xmlStr = formatXml(xmlStr);
          let blob = new Blob([xmlStr], {type: 'text/plain;charset=utf-8'});
-         saveAs(blob, '经济指标.ZBF');
+         return {
+             blob: blob,
+             fileName: "经济指标.ZBF"
+         };
+         //saveAs(blob, '经济指标.ZBF');
      }
 
 }
 
 $(function () {
-   $("#SEIMenu").click(async function () {
-       await exportSEI(projectObj.project.property.rootProjectID);
-       $("#exportMenu").removeClass("show");
-   })
+
+    $("#export-index-check").click( function (){
+        selfChecking(projectObj.project.property.rootProjectID);
+    });
+    $("#export-index-confirm").click(async function (){
+        await  exportSEI(projectObj.project.property.rootProjectID);
+       // $("#exportIndex").modal("hide");
+    });
+
+    $('#exportIndex').on('hide.bs.modal', function() {
+        SEIObject = {
+            exporting:false,
+            fileCache:[],
+            errorMap:{},
+            selfChecked:false
+        }
+    })
 
 });