Ver código fonte

3.0.82 增加excel导入

liuyanpeng 2 anos atrás
pai
commit
3e58dc3ebc
4 arquivos alterados com 236 adições e 1 exclusões
  1. 1 1
      package.json
  2. 231 0
      src/customer/ExcelImport.vue
  3. 2 0
      src/index.js
  4. 2 0
      src/routes/main_routes.js

+ 1 - 1
package.json

@@ -1,7 +1,7 @@
 {
   "name": "client-base-v4",
   "description": "Leanwo Prodog Client",
-  "version": "3.0.81",
+  "version": "3.0.82",
   "author": "yangzhijie1488 <yangzhijie1488@163.com>",
   "scripts": {
     "dev": "cross-env webpack serve --config ./webpack.dev.js",

+ 231 - 0
src/customer/ExcelImport.vue

@@ -0,0 +1,231 @@
+<template>
+  <div class="grid-container">
+    <div class="grid-item-1">
+      <Navbar
+        :title="title"
+        :is-go-back="false"
+      />
+    </div>
+    <div
+      class="grid-item-2"
+      style="margin-bottom: 5px;"
+    >
+      <div class="btn-group">
+        <button
+          class="btn btn-primary"
+          @click="generate()"
+        >
+          确定
+        </button>
+        <button
+          class="btn btn-warning"
+          @click="back()"
+        >
+          撤销
+        </button>
+      </div>
+      <!-- 选择文件 -->
+      <div class="row">
+        <div class="col-md-12">
+          <div class="form-inline">
+            <div class="form-group">
+              <form id="uploadForm" enctype="multipart/form-data">
+                <input id="file" ref="uploadFileInput" type="file" class="fileInput form-control" @change="handleFile" />
+              </form>
+            </div>
+            <div class="form-group">
+              <label>{{ uploadFilePath }}</label>
+              <select v-model="selectedIndex" class="form-control">
+                <option v-for="(sheetItem,index) in sheetItems" :key="index" :value="index">  
+                  {{ sheetItem }}
+                </option>
+              </select>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import Common from '../common/Common.js';
+import { IFrameUtil } from 'pc-component-v3';
+
+export default {
+
+  components: { },
+  data: function () {
+    return {
+      uuid : '',
+      'uploadFilePath' : '',
+      'selectedIndex' : -1,
+      'sheetItems' : [],
+      cacheData:{},
+      infoWindowId: '',
+      obj:{},
+      formData:undefined,
+    };
+  },
+
+  mounted: function () {
+    this.uuid = this.$route.params.uuid;
+    this.type = this.$route.params.type;
+  },
+
+  methods: {
+
+    /**
+			 * 导入数据至采购电子元器件详表
+			 */
+    generate : function(){
+      var _self = this;
+      let modelData = parent.getModelData();
+      let generateDocumentModelData = {
+        windowNo: modelData.windowNo,
+        parentTabIndex: modelData.tabIndex,
+        sheetIndex: _self.selectedIndex,
+        modelData: modelData,
+        inputDatas: [],
+      };
+      let url = null;
+      if (_self.type == 'stockInLineImport') {
+        // 填写excel后台地址
+        // url = 'stockInResource/saveImportModelData';
+      }else{
+        Notify.error('提示', '不识别的Excel导入地址。' + _self.type, false);
+        return;
+      }
+      // 返回modelData
+      _self.responseReceiveData(generateDocumentModelData, url);
+    },
+    /**
+			 * 根据导入的数据返回modelData
+			 * @param {Object} obj
+			 */
+    responseReceiveData : function(obj, url){
+      var _self = this;
+      $.ajax({
+        url: Common.getApiURL(url),
+        type: 'post',
+        dataType : 'json',
+        contentType : 'application/json',
+        data : JSON.stringify(obj),
+        beforeSend:function(request){
+          Common.addTokenToRequest(request);
+        },
+        success: function(modelData){
+          if (modelData != undefined) {
+            if (modelData.saveDatas != undefined) {
+              modelData.saveDatas.forEach(function (item) {
+                if(item.editMode == null){
+                  item.editMode = true;
+                }
+                item.tabIndex = 1;
+              });
+            }
+            parent.modelDataChanged(modelData);
+
+            _self.back();
+          }
+        },	
+        error: function (XMLHttpRequest, textStatus, errorThrown){
+          Common.processException(XMLHttpRequest, textStatus, errorThrown);
+        },
+      });
+    },
+
+    /**
+			 * [handleFile 选择文件]
+			 * @return {[type]} [description]
+			 */
+    handleFile : function(){
+      var _self = this;
+      _self.uploadFilePath = event.currentTarget.value;
+      if(_self.uploadFilePath.length == 0){
+        Common.showDialog('提示:','必须选择一个文件', 'danger');
+        return ;
+      }
+      if(!_self.uploadFilePath.toLowerCase().endsWith('.xls') && !_self.uploadFilePath.toLowerCase().endsWith('.xlsx')){
+        Common.showDialog('警告:','必须是Excel 2003~2007 文件格式(xls)', 'error');
+        return ;
+      }
+      _self.formData = new FormData();
+      _self.formData.append('file', document.getElementById('uploadForm')[0].files[0]);
+      $.ajax({
+        url : Common.getApiURL('dataImportResource/uploadFile'),
+        type : 'post',
+        beforeSend : function(request){
+          Common.addTokenToRequest(request);
+        },
+        data: _self.formData,   
+        contentType: false,  
+        processData: false,
+        success : function(data){
+          _self.showSheetItems(data);
+          _self.$refs.uploadFileInput.value = '';
+        },
+        error: function (XMLHttpRequest, textStatus, errorThrown){
+          Common.processException(XMLHttpRequest, textStatus, errorThrown);
+        },
+      });
+    },
+    
+    /**
+			 * [showSheetItems 渲染Excel Sheet]
+			 * @param  {[type]} data [description]
+			 * @return {[type]}      [description]
+			 */
+    showSheetItems : function(data){
+      var _self = this;
+      // 清空数据
+      _self.sheetItems.splice(0, _self.sheetItems.length);
+      if(data == undefined || data.length == 0){
+        return;
+      }
+
+      for(var i=0, len = data.length; i < len; i++){
+        _self.sheetItems.push(data[i]);
+        _self.selectedIndex = i-1;
+      }
+    },
+
+    /**
+         * 返回,关闭模态框
+         */
+    back: function () {
+      IFrameUtil.close();
+    },
+  },
+};
+
+
+</script>
+
+<style scoped>
+    .grid-container {
+        display: grid;
+        grid-template-columns: 100%;
+        grid-template-rows: min-content min-content auto;
+        height: calc(100vh - 35px);
+        width: 100%;
+        padding: 10px;
+    }
+    
+    .grid-item-1 {
+        grid-row: 1 / 2;
+        grid-column: 1 / 2;
+    }
+    
+    .grid-item-2 {
+        grid-row: 2 / 3;
+        grid-column: 1 / 2;
+    }
+    
+    .grid-item-3 {
+        overflow: auto;
+        grid-row: 3/4;
+        grid-column: 1 / 2;
+        height: 100%;
+    }
+</style>

+ 2 - 0
src/index.js

@@ -36,6 +36,7 @@ import DataImportPanel from './customer/DataImportPanel.vue';
 import Notification from './client/Notification.vue';
 import SingleNotification from './client/SingleNotification.vue';
 import GenerateDocumentTool from './customer/GenerateDocumentTool.vue';
+import ExcelImport from './customer/ExcelImport.vue';
 import UserParameters from './client/UserParameters.vue';
 import OrganizationEditPanel from './client/OrganizationEditPanel.vue';
 import BarCodeEdit from './customer/BarCodeEdit.vue';
@@ -133,4 +134,5 @@ export {
   PrintCard,
   DataArchive,
   ArchivalRecord,
+  ExcelImport,
 };

+ 2 - 0
src/routes/main_routes.js

@@ -61,6 +61,7 @@ const PrintTemp = () => import(/* webpackChunkName: "component-test-6" */ '../cu
 const PrintCard = () => import('../print/PrintCard.vue');
 const DataArchive = () => import('../archive/DataArchive.vue');
 const ArchivalRecord = () => import('../archive/ArchivalRecord.vue');
+const ExcelImport = () => import('../customer/ExcelImport.vue');
 import { ProcessReport } from 'pc-component-v3';
 
 export default [
@@ -373,4 +374,5 @@ export default [
   { path: '/desktop/delegationReport', component: DelegationReport },
   { path: '/desktop/dataArchive', component: DataArchive },//数据归档
   { path: '/desktop/archivalRecord', component: ArchivalRecord },//数据归档
+  { path: '/desktop/excelImport', component: ExcelImport },//数据归档
 ];