浏览代码

feat:全国公路导入接口,视图相关

vian 5 年之前
父节点
当前提交
8ee0457346

+ 46 - 0
web/building_saas/pm/html/project-management.html

@@ -705,6 +705,49 @@
     </div>
     </div>
 </div>
 </div>
 
 
+<!--弹出 数据接口导出-->
+<div class="modal fade" id="interface-import-modal" data-backdrop="static">
+    <div class="modal-dialog" role="document">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title">电子招投标数据接口
+                </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="form-group row">
+                    <label for="staticEmail" class="col-auto col-form-label col-form-label-sm">选择文件</label>
+                    <div class="col">
+                        <div class="custom-file custom-file-sm">
+                            <input type="file" class="custom-file-input" id="interface-import-file" lang="zh">
+                            <label class="custom-file-label" for="customFile" style="white-space: nowrap; overflow: hidden;">请选择导入文件</label>
+                        </div>
+                    </div>
+                </div>
+                <div class="form-group row">
+                    <label class="mb-0 pr-0 col-2 col-form-label col-form-label-sm">地区选择</label>
+                    <div class="col-6 row" style="margin-left: -11px;">
+                        <div class="col-6 pr-0">
+                            <select class="form-control  form-control-sm" id="import-parent-area">
+                            </select>
+                        </div>
+                        <div class="col-6 pr-0">
+                            <select class="form-control  form-control-sm" id="import-sub-area">
+                            </select>
+                        </div>
+                    </div>
+                </div>
+            </div>
+            <div class="modal-footer">
+                <a id="interface-import-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>
+
 <!-- JS. -->
 <!-- JS. -->
 <script src = "/lib/spreadjs/sheets/gc.spread.sheets.all.11.1.2.min.js"></script>
 <script src = "/lib/spreadjs/sheets/gc.spread.sheets.all.11.1.2.min.js"></script>
 <script src = "/lib/fileSaver/FileSaver.min.js"></script>
 <script src = "/lib/fileSaver/FileSaver.min.js"></script>
@@ -731,6 +774,9 @@
 <script src="/web/building_saas/pm/js/pm_newMain.js"></script>
 <script src="/web/building_saas/pm/js/pm_newMain.js"></script>
 <script src="/web/building_saas/pm/js/pm_gc.js"></script>
 <script src="/web/building_saas/pm/js/pm_gc.js"></script>
 <script src="/web/building_saas/pm/js/pm_share.js"></script>
 <script src="/web/building_saas/pm/js/pm_share.js"></script>
+<script src="/web/building_saas/standard_interface/config.js"></script>
+<script src="/web/building_saas/standard_interface/index.js"></script>
+<script src="/web/building_saas/standard_interface/import/view.js"></script>
 <!-- zTree -->
 <!-- zTree -->
 <script type="text/javascript" src="/lib/ztree/jquery.ztree.core.js"></script>
 <script type="text/javascript" src="/lib/ztree/jquery.ztree.core.js"></script>
 <script type="text/javascript" src="/lib/ztree/jquery.ztree.excheck.js"></script>
 <script type="text/javascript" src="/lib/ztree/jquery.ztree.excheck.js"></script>

+ 1 - 1
web/building_saas/standard_interface/export/view.js

@@ -85,6 +85,6 @@ const EXPORT_VIEW = (() => {
 })();
 })();
 
 
 $(document).ready(() => {
 $(document).ready(() => {
-  $('#interface-export-modal').on('show.bs.modal', () => STD_INTERFACE.initExportAreas($('#export-parent-area'), $('#export-sub-area')));
+  $('#interface-export-modal').on('show.bs.modal', () => STD_INTERFACE.initInterfaceAreas($('#export-parent-area'), $('#export-sub-area')));
   EXPORT_VIEW.exportListener();
   EXPORT_VIEW.exportListener();
 })
 })

+ 61 - 0
web/building_saas/standard_interface/import/view.js

@@ -0,0 +1,61 @@
+/*
+ * @Descripttion: 导入接口视图相关
+ * @Author: vian
+ * @Date: 2020-09-08 09:36:52
+ */
+const IMPORT_VIEW = (() => {
+
+  /**
+   * 根据接口配置文件,设置可被接受的导入文件类型
+   * @param {Object} $file - 文件选择Jquery dom
+   * @return {Void}
+   */
+  function initFileAccept($file) {
+    const set = new Set();
+    Object
+      .values(INTERFACE_CONFIG)
+      .forEach(config => {
+        Object
+          .values(config.fileSuffix)
+          .forEach(suffix => set.add(suffix));
+      });
+    const accept = [...set].join(',');
+    $file.prop('accept', accept);
+  }
+
+  // 导入相关事件监听器
+  function importListener() {
+    // 导入确认事件
+    $('#interface-import-confirm').click(async function () {
+      try {
+        const file = $('#interface-import-file')[0].files[0];
+        if (!file) {
+          throw '请选择导入文件。';
+        }
+        // 按照地区动态加载导入脚本
+        const parentArea = $('#import-parent-area').val();
+        const subArea = $('#import-sub-area').val();
+        if (!parentArea || !subArea) {
+          throw '请选择有效地区。';
+        }
+        const areaKey = `${parentArea}@${subArea}`;
+        await STD_INTERFACE.loadScriptByArea(areaKey, STD_INTERFACE.ScriptType.IMPORT);
+      } catch (err) {
+        alert(err);
+      }
+    });
+  }
+
+  return {
+    importListener,
+    initFileAccept,
+  };
+})();
+
+$(document).ready(() => {
+  $('#interface-import-modal').on('show.bs.modal', () => {
+    IMPORT_VIEW.initFileAccept($('#interface-import-file'));
+    STD_INTERFACE.initInterfaceAreas($('#import-parent-area'), $('#import-sub-area'));
+  });
+  IMPORT_VIEW.importListener();
+});

+ 9 - 5
web/building_saas/standard_interface/index.js

@@ -36,7 +36,7 @@ const STD_INTERFACE = (() => {
   'use strict';
   'use strict';
 
 
   // 根据地区配置,初始化地区选项
   // 根据地区配置,初始化地区选项
-  function initExportAreas($parentAreas, $subAreas) {
+  function initInterfaceAreas($parentAreas, $subAreas) {
     const connectedAreas = Object.keys(INTERFACE_CONFIG);
     const connectedAreas = Object.keys(INTERFACE_CONFIG);
     const parentMap = {};
     const parentMap = {};
     connectedAreas.forEach(connectedArea => {
     connectedAreas.forEach(connectedArea => {
@@ -51,13 +51,17 @@ const STD_INTERFACE = (() => {
     $subAreas.html(subAreasHtml);
     $subAreas.html(subAreasHtml);
     // 父级地区变更,子地区选项更新
     // 父级地区变更,子地区选项更新
     $parentAreas.change(function () {
     $parentAreas.change(function () {
-      EXPORT_VIEW.resetState(); // 清空接口缓存
+      if (typeof EXPORT_VIEW !== 'undefined') {
+        EXPORT_VIEW.resetState(); // 清空导出接口缓存
+      }
       const curArea = $(this).val();
       const curArea = $(this).val();
       const subAreasHtml = parentMap[curArea].reduce((acc, area) => acc += `<option value="${area}">${area}</option>`, '');
       const subAreasHtml = parentMap[curArea].reduce((acc, area) => acc += `<option value="${area}">${area}</option>`, '');
       $subAreas.html(subAreasHtml);
       $subAreas.html(subAreasHtml);
     });
     });
     $subAreas.change(function () {
     $subAreas.change(function () {
-      EXPORT_VIEW.resetState();
+      if (typeof EXPORT_VIEW !== 'undefined') {
+        EXPORT_VIEW.resetState(); // 清空导出接口缓存
+      }
     })
     })
   }
   }
 
 
@@ -112,7 +116,6 @@ const STD_INTERFACE = (() => {
     if (area === curArea) {
     if (area === curArea) {
       return;
       return;
     }
     }
-    curArea = area;
     const configItem = INTERFACE_CONFIG[area];
     const configItem = INTERFACE_CONFIG[area];
     if (!configItem) {
     if (!configItem) {
       throw new Error(`[${area}]不存在有效配置。`);
       throw new Error(`[${area}]不存在有效配置。`);
@@ -123,10 +126,11 @@ const STD_INTERFACE = (() => {
     }
     }
     const fullPath = `/web/building_saas/standard_interface/${scriptType}/${scriptName}`;
     const fullPath = `/web/building_saas/standard_interface/${scriptType}/${scriptName}`;
     await loadScript(fullPath);
     await loadScript(fullPath);
+    curArea = area;
   }
   }
 
 
   return {
   return {
-    initExportAreas,
+    initInterfaceAreas,
     ScriptType,
     ScriptType,
     loadScriptByArea,
     loadScriptByArea,
   };
   };