Browse Source

导出广东接口

vian 5 years ago
parent
commit
a40aec559b

+ 5 - 0
modules/main/routes/main_route.js

@@ -9,6 +9,10 @@ const pmFacade = require('../../pm/facade/pm_facade');
 let config = require("../../../config/config.js");
 import OptionsDao from '../../options/models/optionsModel';
 import optionSetting from '../../options/models/optionTypes';
+const regionMap = {
+    '重庆定额(2018)': '重庆市',
+    '广东定额(2018)': '广东省'
+};
 module.exports =function (app) {
     const baseController = new BaseController();
     app.get('/main', baseController.init, function(req, res) {
@@ -41,6 +45,7 @@ module.exports =function (app) {
                         userID: req.session.sessionUser.id,
                         projectData: projectData,
                         compilationName: req.session.sessionCompilation.name,
+                        region: regionMap[req.session.sessionCompilation.name] || '',
                         versionName: req.session.compilationVersion,
                         projectReadOnly: projectReadOnly,
                         projectCooperate: projectCooperate,

+ 7 - 7
web/building_saas/main/html/main.html

@@ -100,12 +100,12 @@
                             <a id="uploadGld" class="dropdown-item" href="#import" data-toggle="modal" data-target="#import">导入广联达算量Excel清单</a>
                         </div>
                     </span>
-                      <% if (compilationName === '重庆定额(2018)') { %>
+                      <% if (region === '重庆市' || region === '广东省') { %>
                       <span id="exportSpan" class="btn btn-light btn-sm" data-toggle="tooltip" data-original-title="数据接口" data-placement="bottom">
                     <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">导出重庆市电子招投标数据文件</a>
-                        <a class="dropdown-item" href="javascript:void(0)" id="SEIMenu"  >导出重庆市指标成果文件</a>
+                        <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>
                     </div>
                 </span>
                       <% } %>
@@ -2083,7 +2083,7 @@
     <div class="modal-dialog" role="document">
         <div class="modal-content">
             <div class="modal-header">
-                <h5 class="modal-title">重庆市电子招投标数据接口<!-- 重庆其他电子招投标数据接口 --></h5>
+                <h5 class="modal-title"><%= region %>电子招投标数据接口<!-- 重庆其他电子招投标数据接口 --></h5>
                 <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                     <span aria-hidden="true">&times;</span>
                 </button>
@@ -2092,7 +2092,7 @@
                 <!--检测提醒-->
                 <div class="card">
                     <div class="card-body">
-                        <h5 class="card-title">导出重庆市电子招投标数据接口文件</h5>
+                        <h5 class="card-title">导出<%= region %>电子招投标数据接口文件</h5>
                         <p class="card-text">导出之前,建议您执行项目自检功能,避免出现错误。</p>
                         <a id="export-check" href="javascript:void(0);" class="btn btn-primary">自检</a>
                     </div>
@@ -2451,8 +2451,6 @@
     <script type="text/javascript" src="/web/building_saas/main/js/models/cache_tree.js"></script>
     <script type="text/javascript" src="/web/building_saas/main/js/calc/calc_fees.js"></script>
     <script type="text/javascript" src="/web/building_saas/main/js/models/exportStdInterfaceBase.js"></script>
-    <script type="text/javascript" src="/web/building_saas/main/js/models/exportStandardInterface.js"></script>
-    <script type="text/javascript" src="/web/building_saas/main/js/models/exportSEIInterface.js"></script>
     <script type="text/javascript" src="/web/building_saas/main/js/models/overHeight.js"></script>
     <!--<script type="text/javascript" src="/web/building_saas/main/js/calc/ration_calc.js"></script>-->
     <!--<script type="text/javascript" src="/web/building_saas/main/js/calc/bills_calc.js"></script>-->
@@ -2527,6 +2525,8 @@
 
     <% if (overWriteUrl != undefined) { %>
          <script type="text/javascript" src="<%= overWriteUrl%>"></script>
+         <script type="text/javascript" src="<%= overWriteUrl.slice(0, -3) + '_export.js' %>"></script>
+         <script type="text/javascript" src="<%= overWriteUrl.slice(0, -3) + '_export_sei.js' %>"></script>
     <% } %>
 
 

+ 29 - 6
web/building_saas/main/js/models/exportStdInterfaceBase.js

@@ -54,6 +54,11 @@ const XML_EXPORT_BASE = (() => {
         Bid: 2,     //招标
         Control: 3  //控制价
     };
+    const EXPORT_KIND_NAME = {
+        1: '投标',
+        2: '招标',
+        3: '控制价'
+    };
     // 配置项
     const CONFIG = Object.freeze({
         HINT_START,
@@ -63,7 +68,8 @@ const XML_EXPORT_BASE = (() => {
         ADJUST_TYPE,
         TIMEOUT_TIME,
         GRANULARITY,
-        EXPORT_KIND
+        EXPORT_KIND,
+        EXPORT_KIND_NAME
     });
 
     // 缓存项 不需要的时候需要清空
@@ -108,12 +114,13 @@ const XML_EXPORT_BASE = (() => {
      * 一个节点对应一个构造方法,方便调整配置、方便其他版本开发、接手的人看起来更直观
      * @param  {String}name 节点名
      *         {Array}attrs 节点属性数据
-     *         {Array}failList 失败列表
+     *         {String}alias 别名,有些节点名称是英文,但是提示的时候需要显示中文的时候用
      * @return {void}
      * */
-    function Element(name, attrs) {
+    function Element(name, attrs, alias) {
         this.name = name;
-        let checkData = check(name, attrs);
+        const hintName = alias || name;
+        const checkData = check(hintName, attrs);
         this.fail = checkData.failHints;
         this.attrs = checkData.filterAttrs;
         handleXMLEntity(this.attrs);
@@ -167,7 +174,7 @@ const XML_EXPORT_BASE = (() => {
         for (let data of datas) {
             const isHasValue = hasValue(data.value);
             // 某属性是非必须的,并且设置了mustHasValue,意味着必须要有值才输出该属性
-            if (!data.required && data.mustHasValue && !hasValue) {
+            if (!data.required && data.mustHasValue && !isHasValue) {
                 continue;
             }
             // 值统一转换成String,并且处理各类型属性空值时的默认取值
@@ -525,7 +532,7 @@ const XML_EXPORT_BASE = (() => {
     }
 
     /*
-     * 通过getData接口获取单位工程详细数据
+     * 通过getData接口获取单位工程详细数据(带缓存功能)
      * @param  {Number}tenderID 单位工程ID
      *         {String}userID 用户ID
      * @return {Object} 跟projectObj.project的数据结构一致
@@ -723,6 +730,17 @@ const XML_EXPORT_BASE = (() => {
             };
         }
     }
+    // 获取节点的某属性
+    function getAttr(ele, name) {
+        return (ele.attrs.find(attr => attr.name === name) || {}).value;
+    }
+    // 设置节点的某属性
+    function setAttr(ele, name, value) {
+        const attr = ele.attrs.find(attr => attr.name === name);
+        if (attr) {
+            attr.value = value;
+        }
+    }
     // 从srcEle节点中获取元素名为eleName的元素
     function getElementFromSrc(srcEle, eleName) {
         if (!srcEle || !srcEle.children || !srcEle.children.length) {
@@ -814,6 +832,8 @@ const XML_EXPORT_BASE = (() => {
         transformCalcBaseState,
         getCodeSheetData,
         getElementFromSrc,
+        getAttr,
+        setAttr,
         getParsedData,
         setupCode,
         softCheck
@@ -838,6 +858,9 @@ const XML_EXPORT_BASE = (() => {
         for (let ele of eles) {
             rst += _startTag(ele);
             if (ele.children.length > 0) {
+                if (ele.children.some(c => !c)) {
+                    debugger;
+                }
                 rst += _toXMLStr(ele.children);
                 rst += _endTag(ele);
             }

+ 1 - 0
web/building_saas/main/js/views/export_view.js

@@ -113,6 +113,7 @@ const ExportView = (() => {
                 }
                 throw '自检完成,未检测到错误数据。'
             } catch (err) {
+                console.log(err);
                 alert(err);
             }
             pr.end();

web/building_saas/main/js/models/exportStandardInterface.js → web/over_write/js/chongqing_2018_export.js


web/building_saas/main/js/models/exportSEIInterface.js → web/over_write/js/chongqing_2018_export_sei.js


File diff suppressed because it is too large
+ 305 - 236
web/building_saas/main/js/models/exportStdInterface_gd18.js


+ 0 - 0
web/over_write/js/guangdong_2018_export_sei.js