gjy 3 年之前
父節點
當前提交
3710b7b0f2

+ 2 - 1
package.json

@@ -79,7 +79,8 @@
     "vuex": "3.1.0",
     "winsea-component-library": "http://maven.zthymaoyi.com/nexus/repository/npm-hosted/winsea-component-library/-/winsea-component-library-1.0.1.tgz",
     "winseaview": "^2.5.11",
-    "xe-utils": "^2.3.0"
+    "xe-utils": "^2.3.0",
+    "xlsx": "^0.17.2"
   },
   "devDependencies": {
     "@babel/core": "^7.0.0",

+ 3 - 1
src/api/V2/transport/index.js

@@ -53,4 +53,6 @@ export const API_POST_AUTOMOBILE_ALSOSTATE = '/tranProcessInfo/editStatus'
 //运输价格
 export const API_POST_AUTOMOBILE_TRANPRICE = '/tranProcessInfo/api/setUpTranPrice'
 // 删除运输车辆
-export const API_POST_DEL_HAULAGE_STAGE= '/tranCarInfo/api/deleteTranCar'
+export const API_POST_DEL_HAULAGE_STAGE= '/tranCarInfo/api/deleteTranCar'
+// 导入
+export const API_GET_IMPORT= '/importController/readDocument'

+ 5 - 3
src/model/transport/index.js

@@ -29,8 +29,8 @@ import {
     API_POST_AUTOMOBILE_TRANPRICE,
     API_POST_DEL_HAULAGE_STAGE, 
     API_POST_AUTOMOBILE_ALSOSTATE,
-    API_POST_AUTOMOBILE_STATEREC
-
+    API_POST_AUTOMOBILE_STATEREC,
+    API_GET_IMPORT
 } from '@/api/V2/transport'
 // 司机列表
 export const selectDriver = appRx.get(API_GET_TRAN_DRIVERINFO, errorCatcher, errorHandle, filter)
@@ -86,4 +86,6 @@ export const alsostate = appRx.post(API_POST_AUTOMOBILE_ALSOSTATE, errorCatcher,
 //设置运输价格
 export const setUpTranPrice = appRx.post(API_POST_AUTOMOBILE_TRANPRICE, errorCatcher, errorHandle, filter)
 //删除车辆
-export const delhaulagestage = appRx.post(API_POST_DEL_HAULAGE_STAGE, errorCatcher, errorHandle, filter)
+export const delhaulagestage = appRx.post(API_POST_DEL_HAULAGE_STAGE, errorCatcher, errorHandle, filter)
+// 导入
+export const importApplFileUrl = appRx.get(API_GET_IMPORT, errorCatcher, errorHandle, filter)

+ 125 - 4
src/views/tranManagement/tranManagementShippingFeedback.vue

@@ -143,9 +143,21 @@
           class="bg-bottom"
           type="primary"
           size="small"
-          @click="import(deptBudgetList)"
+          @click="import1()"
           >导入</el-button
         >
+        <el-upload style="margin-left: 8px;"
+          class="upload-demo inline-block margin-right-10"
+          action=""
+          :on-change="handleChange"
+          :show-file-list="false"
+          :on-remove="handleRemove"
+          :file-list="fileListUpload"
+          :limit="limitUpload"
+          accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"
+          :auto-upload="false">
+          <el-button  type="primary">导入</el-button>
+        </el-upload>
       </div>
       <div class="liaison">
         <div
@@ -355,7 +367,7 @@
 </template>
 <script>
 import { regionData} from 'element-china-area-data'
-import { seeCat, packList, feedback, state } from '@/model/transport/index'
+import { seeCat, packList, feedback, state,importApplFileUrl } from '@/model/transport/index'
 import { getstaff } from '@/model/warehouse/index'
 import WsUpload from '@/components/WsUpload'
 import mapDrag from '@/components/mapdrag/mapdrag'
@@ -415,6 +427,7 @@ export default {
       size: 10,
       value1: '',
       unitList: [],
+      fileTemp:'',
       freightspace: [
         {
           caseNo: '',
@@ -525,8 +538,116 @@ export default {
     handleClose() {
       this.accessoryTFs = false
     },
-    //导入
-    import() {},
+     handleChange(file, fileList) {
+            this.fileTemp = file.raw
+                let fileName = file.raw.name
+                let fileType = fileName.substring(fileName.lastIndexOf('.') + 1);
+                // 判断上传文件格式
+                if (this.fileTemp) {
+                    if ((fileType == 'xlsx') || (fileType == 'xls')) {
+                        this.importf(this.fileTemp)
+                    } else {
+                        this.$message({
+                            type: 'warning',
+                            message: '附件格式错误,请删除后重新上传!'
+                        })
+                    }
+                } else {
+                    this.$message({
+                        type: 'warning',
+                        message: '请上传附件!'
+                    })
+                }
+
+    },
+ importf(obj) {
+                this.dialogVisible = true;
+                let _this = this;
+                let inputDOM = this.$refs.inputer;   // 通过DOM取文件数据
+                this.file = event.currentTarget.files[0];
+                var rABS = false; //是否将文件读取为二进制字符串
+                var f = this.file;
+                var reader = new FileReader();
+                //if (!FileReader.prototype.readAsBinaryString) {
+                FileReader.prototype.readAsBinaryString = function (f) {
+                    var binary = "";
+                    var rABS = false; //是否将文件读取为二进制字符串
+                    var pt = this;
+                    var wb; //读取完成的数据
+                    var outdata;
+                    var reader = new FileReader();
+                    reader.onload = function (e) {
+                        var bytes = new Uint8Array(reader.result);
+                        var length = bytes.byteLength;
+                        for (var i = 0; i < length; i++) {
+                            binary += String.fromCharCode(bytes[i]);
+                        }
+                        var XLSX = require('xlsx');
+                        if (rABS) {
+                            wb = XLSX.read(btoa(fixdata(binary)), { //手动转化
+                                type: 'base64'
+                            });
+                        } else {
+                            wb = XLSX.read(binary, {
+                                type: 'binary'
+                            });
+                        }
+                        // outdata就是你想要的东西 excel导入的数据
+                        outdata = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]);
+                        // excel 数据再处理
+                        let arr = []
+                        outdata.map(v => {
+                            // let jsonString = JSON.stringify(v).replace(/\*/g, '').replace(/\s/ig,'');
+                            let jsonString = JSON.stringify(v).replace(/\//g, '').replace(/\s/ig,'');
+                            console.log(jsonString);
+                            v = JSON.parse(jsonString);
+                            let obj = {}
+                            //xxx代表列名
+                            obj.caseNo = v.箱号
+                            obj.titleNo= v.封号
+                            obj.binNumber = v.仓位号
+                            obj.positionWeight=v.散船重量
+                            obj.loadNetWeight = v.装船净重
+                            obj.loadingDate = v.装船日期
+                            arr.push(obj)
+                        })
+                        _this.freightspace.concat(arr)
+                    }
+                    reader.readAsArrayBuffer(f);
+                }
+                if (rABS) {
+                    reader.readAsArrayBuffer(f);
+                } else {
+                    reader.readAsBinaryString(f);
+                }
+            },
+    uploadSectionFile (param) {
+      var fileName = param.file.name.split('.')
+      var fileSuffix = fileName[fileName.length - 1]
+      if (
+        !(
+          fileSuffix.toLowerCase() == 'xlsx' ||
+          fileSuffix.toLowerCase() == 'xls'
+        )
+      ) {
+        EventBus.$emit('error', this.$t('upload.message08'))
+        loading.close()
+        return
+      }
+
+      var data = new FormData()
+      data.append('file', param.file)
+      data.append('compId', sessionStorage.getItem('ws-pf_compId'))
+      data.append('userId', sessionStorage.getItem('ws-pf_userId'))
+
+      importApplFileUrl(data)
+        .toPromise()
+        .then(success => {
+        
+          console.log(success)
+        })
+    },
+
     //完货
     finished() {
       this.$confirm(`完货操作后,装船信息不可修改,是否确定完货?`, {

+ 42 - 12
src/views/tranManagement/tranManagementTransporFeedback.vue

@@ -92,19 +92,39 @@
       <div class="small-title" style="font-size: 16px; width: 50%;float: left;">装车详情</div>
           <!-- 导入 -->
       <div style="font-size: 16px; width: 50%;float: left;text-align: right;">
-      <el-button
-        class="bg-bottom"
-        type="primary"
-        size="small"
-        @click="import(deptBudgetList)"
-        >导入</el-button
-      >
+      <el-upload style="margin-left: 8px;"
+          class=""
+          action="https://www.zthymaoyi.com/upload/admin"
+          :show-file-list="false"
+          :on-success="
+          (res, file) => {
+            uploadSuccessHandle(res)
+          }
+        "
+          accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"
+          >
+          <el-button  type="primary">导入</el-button>
+        </el-upload>
+        <el-upload style="margin-left: 8px;"
+          class="upload-demo"
+          action="https://www.zthymaoyi.com/upload/admin"
+          :show-file-list="false"
+          :on-success="
+          (res, file) => {
+            uploadSuccessHandle1(res)
+          }
+        "
+          accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel"
+          >
+          <el-button  type="primary">导入</el-button>
+        </el-upload>
+       
     </div>
       <div class="liaison">
         <div
           style="width: 100%"
           class="flex position"
-          v-for="(item, index) in this.freightspace"
+          v-for="(item, index) in freightspace"
           :key="index"
         >
           <ws-info-table>
@@ -319,7 +339,7 @@
 </template>
 <script>
 import { regionData, CodeToText, TextToCode } from 'element-china-area-data'
-import { seeCat, packList, feedback, getbank ,state} from '@/model/transport/index'
+import { seeCat, packList, feedback, getbank ,state,importApplFileUrl} from '@/model/transport/index'
 import { getstaff } from '@/model/warehouse/index'
 import WsUpload from '@/components/WsUpload'
 import mapDrag from '@/components/mapdrag/mapdrag'
@@ -354,6 +374,7 @@ export default {
       district: null,
       driverList: [],
       readonly: true,
+      fileTemp:{},
       listDate: { country: '中国', level: 'country', city: '' },
       citylist: [],
       compId: sessionStorage.getItem('ws-pf_compId'),
@@ -439,6 +460,17 @@ export default {
     },
   },
   methods: {
+    uploadSuccessHandle1(e){
+console.log(document.getElementsByClassName("upload-demo"))
+
+    },
+    uploadSuccessHandle(e) {
+      console.log(e)
+      importApplFileUrl({file:e.url}) .toPromise()
+                .then((response) => {
+                  console.log(response)
+                })
+    },
     dataFilter(val) {
       this.deptBudgetList.personCharge = val
       if (val) {
@@ -494,9 +526,7 @@ export default {
     },
     //下拉司机姓名改变事件
     selectdriver() {},
-    handleChange(value) {
-      this.selectedOptions = value
-    },
+
     returnsales() {
       this.deptBudgetList = {}
       this.freightspace = {}

+ 1 - 1
vue.config.js

@@ -141,7 +141,7 @@ module.exports = {
         // target: 'https://product-server.winsea.com/', //目标地址
         // target: 'http://standard-dev.winsea.com/', //目标地址
         // target: 'http://localhost:8090/',
-        target: 'http://192.168.1.120:8090/',
+        target: 'http://192.168.1.115:8090/',
         // target: 'http://192.168.1.122:9100/',
         // target: 'http://192.168.1.112:8090/',
         // target: 'http://192.168.1.121:8090/',