chenjun 1 сар өмнө
parent
commit
7080d47770

+ 4 - 0
src/views/lessRegistrationBagtag/index.vue

@@ -374,6 +374,10 @@
         })
       },
       async flightChange() {
+        if(this.flightValue == ""){
+          this.$message.error('航班不能为空')
+          return;
+        }
         if (this.typeValue == "0") {
           this.tableData2 = this.tableData2Old.filter(item => {
             return item.carrierFlights == this.flightValue

+ 1 - 1
src/views/newAbnormalBagDetails/components/baggageView.vue

@@ -67,7 +67,7 @@ export default {
         },
         {
           nodeCode: 'B_SECURITY',
-          nodeName: '检',
+          nodeName: '开始安检',
           timeProp: 'B_security_check_time',
           timeValue: '',
           loclProp: 'B_security_location',

+ 6 - 0
src/views/newArrival/index.vue

@@ -129,6 +129,11 @@ export default {
     this.getAirPortData()
   },
   mounted () {
+    let formData = sessionStorage.getItem("arrivalFormData");
+    formData = JSON.parse(formData)
+    if(formData.currentAirport && formData.flightDate){
+      this.formData = formData
+    }
     this.timer = setInterval(() => {
       this.getAirPortData()
     }, LOOP_INTERVAL.arrivalTable)
@@ -192,6 +197,7 @@ export default {
             filter: this.formatParams(),
             shouldReset: type !== 1
           }
+          sessionStorage.setItem("arrivalFormData",JSON.stringify(this.formData))
         } else {
           this.$message.error(res.message);
         }

+ 31 - 11
src/views/newBagDetails/components/baggageView.vue

@@ -13,7 +13,7 @@
               </div>
               <div class="baggage-track-chart">
                 <div class="step-line">
-                  <div v-for="(line, index) in 6" :key="index" :class="['step-line-segment', { 'step-line-active': activeStepLine(index,item.bagStatus) }]"></div>
+                  <div v-for="(line, index) in 7" :key="index" :class="['step-line-segment', { 'step-line-active': activeStepLine(index,item.bagStatus) }]"></div>
                 </div>
                 <div v-for="(p, cindex) in item.bagStatus" :key="cindex" :class="{ 'step-item': true, 'active-item': p.timeValue }">
                   <div :class="activeStepLineDanger(cindex,item)" class="step-circle">
@@ -67,7 +67,7 @@ export default {
         },
         {
           nodeCode: 'B_SECURITY',
-          nodeName: '检',
+          nodeName: '开始安检',
           timeProp: 'B_security_check_time',
           timeValue: '',
           loclProp: 'B_security_location',
@@ -235,10 +235,13 @@ export default {
   },
   methods: {
     //获取行李信息
-    async getLuggageList (id, dataContent = this.dataContent, page, pageSize) {
+    async getLuggageList (id='2203301', dataContent, page, pageSize) {
+      let parms = {}
+      parms['carrierFlightsDate'] = this.dataContent.carrierFlightsDate
+      parms['luggageNum'] = this.dataContent.luggageNum
       try {
         this.loading = true
-        const { code, returnData } = await this.getQueryList(id, dataContent, page, pageSize)
+        const { code, returnData } = await this.getQueryList(id, parms, page, pageSize)
         if (code == 0) {
           if (returnData.length === 0) {
             this.page--;
@@ -292,8 +295,8 @@ export default {
         if (this.noMore || this.loading) {
           return;
         }
-        this.getPNR()
-        // this.getLuggageList(SERVICE_ID.bagTableDqId, this.dataContent, ++this.page, this.pageSize);
+        // this.getPNR()
+        this.getLuggageList(2203301, this.dataContent, ++this.page, this.pageSize);
       }
     },
     //获取PNR
@@ -309,6 +312,7 @@ export default {
             returnData.map(item => {
               this.page = 0
               if(item.PNRNO && item.PNRNO!=null){
+                console.log(item.PNRNO)
                 let data = {
                   'PNRNO':item.PNRNO,
                   'carrierFlightsDate':this.dataContent.carrierFlightsDate,
@@ -376,6 +380,22 @@ export default {
         }
       })
       this.tableData = _.orderBy([...newArr], ["carrierFlightsDate", "takeTime"], ["asc"]);
+      // this.tableData = this.uniqueJsonArrByField(tableDatas,'carrierFlights')
+    },
+    uniqueJsonArrByField (jsonArr, field) {
+        // 数组长度小于2 或 没有指定去重字段 或 不是json格式数据
+        if (jsonArr.length < 2 || !field || typeof jsonArr[0] !== "object") return jsonArr;
+        let uniqueArr = [jsonArr[0]];
+        for (let i = 1; i < jsonArr.length; i++) {
+            let item = jsonArr[i];
+            let filterData = uniqueArr.filter(function (f_item) {
+                return item[field] && f_item[field] == item[field];
+            });
+            if (filterData.length == 0) { // 如果uniqueArr中不存在item
+                uniqueArr.push(item);
+            }
+        }
+        return uniqueArr;
     }
   }
 }
@@ -404,7 +424,7 @@ export default {
         flex-direction: row;
         justify-content: flex-start;
         align-items: flex-start;
-        line-height: 42px;
+        line-height: 60px;
 
         .title {
           width: 160px;
@@ -458,13 +478,13 @@ export default {
           width: calc(100% - 80px);
           height: 10px;
           position: absolute;
-          top: 16px;
+          top: 27px;
           right: 0;
           left: 0;
           margin: auto;
           display: flex;
           .step-line-segment {
-            width: calc(100% / 6);
+            width: calc(100% / 7);
             height: 100%;
             background: #afb4bf;
             &.step-line-active {
@@ -484,8 +504,8 @@ export default {
           z-index: 1;
           font-family: Helvetica, "Microsoft Yahei";
           .step-circle {
-            width: 42px;
-            height: 42px;
+            width: 60px;
+            height: 60px;
             border-radius: 50%;
             background: #aaacb2;
             .step-name {

+ 6 - 0
src/views/newDeparture/index.vue

@@ -129,6 +129,11 @@ export default {
     this.getAirPortData()
   },
   mounted () {
+    let formData = sessionStorage.getItem("departureFormData");
+    formData = JSON.parse(formData)
+    if(formData && formData.currentAirport && formData.flightDate){
+      this.formData = formData
+    }
     this.timer = setInterval(() => {
       this.getAirPortData()
     }, LOOP_INTERVAL.departureTable)
@@ -192,6 +197,7 @@ export default {
             filter: this.formatParams(),
             shouldReset: type !== 1
           }
+          sessionStorage.setItem("departureFormData",JSON.stringify(this.formData))
         } else {
           this.$message.error(res.message);
         }

+ 11 - 11
src/views/newFlightView/index.vue

@@ -21,10 +21,10 @@
             <el-descriptions-item label="起飞机场三字码">{{ infoObj.outAirport }}</el-descriptions-item>
             <el-descriptions-item label="登机口">{{ infoObj.gateCd }}</el-descriptions-item>
             <el-descriptions-item label="停机位"> {{ infoObj.depstandCd }}</el-descriptions-item>
-            <el-descriptions-item :span="2" v-if="!UTCvalue" label="计划起飞时间">{{ formatTime(infoObj.scheduleTakeOffTimeLocalOut) }}</el-descriptions-item>
-            <el-descriptions-item :span="2" v-if="!UTCvalue" label="实际起飞时间">{{ formatTime(infoObj.actualTakeOffTimeLocalOut) }}</el-descriptions-item>
-            <el-descriptions-item :span="2" v-if="UTCvalue" label="计划起飞UTC时间">{{ formatTime(infoObj.scheduleTakeOffTimeUTC) }}</el-descriptions-item>
-            <el-descriptions-item :span="2" v-if="UTCvalue" label="实际起飞UTC时间">{{ formatTime(infoObj.actualTakeOffTimeUTC) }}</el-descriptions-item>
+            <el-descriptions-item :span="2" v-if="!UTCvalue" :label="'计划'+infoObj.outAirport+'起飞时间'">{{ formatTime(infoObj.scheduleTakeOffTimeLocalOut) }}</el-descriptions-item>
+            <el-descriptions-item :span="2" v-if="!UTCvalue" :label="'实际'+infoObj.outAirport+'起飞时间'">{{ formatTime(infoObj.actualTakeOffTimeLocalOut) }}</el-descriptions-item>
+            <el-descriptions-item :span="2" v-if="UTCvalue" :label="'计划'+infoObj.outAirport+'起飞UTC时间'">{{ formatTime(infoObj.scheduleTakeOffTimeUTC) }}</el-descriptions-item>
+            <el-descriptions-item :span="2" v-if="UTCvalue" :label="'实际'+infoObj.outAirport+'起飞UTC时间'">{{ formatTime(infoObj.actualTakeOffTimeUTC) }}</el-descriptions-item>
           </el-descriptions>
         </div>
         <div class="newFlightView-left-top-list">
@@ -33,10 +33,10 @@
             <el-descriptions-item label="降落机场三字码">{{ infoObj.landAirport }}</el-descriptions-item>
             <el-descriptions-item label="提取转盘">{{infoObj.arrcarouselCd}}</el-descriptions-item>
             <el-descriptions-item label="停机位"> {{ infoObj.arrstandCd }}</el-descriptions-item>
-            <el-descriptions-item :span="2" v-if="!UTCvalue" label="计划降落时间">{{ formatTime(infoObj.scheduleLandInTimeLocalIn) }}</el-descriptions-item>
-            <el-descriptions-item :span="2" v-if="!UTCvalue" label="实际降落时间">{{ formatTime(infoObj.actualLandInTimeLocalIn) }}</el-descriptions-item>
-            <el-descriptions-item :span="2" v-if="UTCvalue" label="计划降落UTC时间">{{ formatTime(infoObj.scheduleLandInTimeUTC) }}</el-descriptions-item>
-            <el-descriptions-item :span="2" v-if="UTCvalue" label="实际降落UTC时间">{{ formatTime(infoObj.actualLandInTimeUTC) }}</el-descriptions-item>
+            <el-descriptions-item :span="2" v-if="!UTCvalue" :label="'计划'+infoObj.landAirport+'降落时间'">{{ formatTime(infoObj.scheduleLandInTimeLocalIn) }}</el-descriptions-item>
+            <el-descriptions-item :span="2" v-if="!UTCvalue" :label="'实际'+infoObj.landAirport+'降落时间'">{{ formatTime(infoObj.actualLandInTimeLocalIn) }}</el-descriptions-item>
+            <el-descriptions-item :span="2" v-if="UTCvalue" :label="'计划'+infoObj.landAirport+'降落UTC时间'">{{ formatTime(infoObj.scheduleLandInTimeUTC) }}</el-descriptions-item>
+            <el-descriptions-item :span="2" v-if="UTCvalue" :label="'实际'+infoObj.landAirport+'降落UTC时间'">{{ formatTime(infoObj.actualLandInTimeUTC) }}</el-descriptions-item>
           </el-descriptions>
         </div>
         <div class="newFlightView-left-top-list">
@@ -138,15 +138,15 @@ export default {
           value: 'estimated_load_number'
         },
         {
-          label: '检',
+          label: '开始安检',
           value: 'B_security_check_number'
         },
         {
-          label: '检L',
+          label: '开始安检L',
           value: 'B_security_check_number_L',
         },
         {
-          label: '检T',
+          label: '开始安检T',
           value: 'B_security_check_number_T',
         },
         {

+ 15 - 4
src/views/newQueryAdvance/index.vue

@@ -21,7 +21,7 @@
     </div>
     <!--表格-->
     <div class="advance__table">
-      <Table :pageSize="999" style="height:100%" ref="queryTable" :tableTag="tableTag" />
+      <Table :pageSize="9999" style="height:100%" ref="queryTable" :tableTag="tableTag" />
     </div>
     <!--高级查询-->
     <Dialog width="900px" :flag="gjFlag">
@@ -56,10 +56,16 @@
                       <el-option label="否" value="0" />
                     </el-select>
                   </template>
+                  <template v-else-if="item.prop === 'fourSecurity'">
+                    <el-select v-model="form.fourSecurity" size="small" clearable @keyup.esc.native="dialogFocus">
+                      <el-option label="四级安检通过" value="四级安检通过" />
+                      <el-option label="四级安检不通过" value="四级安检不通过" />
+                    </el-select>
+                  </template>
                   <template v-else-if="item.prop === 'activeState'">
                     <el-select v-model="form.activeState" size="small" clearable @keyup.esc.native="dialogFocus">
-                      <el-option label="未激活" value="0" />
-                      <el-option label="已激活" value="1" />
+                      <el-option label="未激活" value="1" />
+                      <el-option label="已激活" value="0" />
                     </el-select>
                   </template>
                   <template v-else-if="item.prop === 'checkInLocation'">
@@ -137,7 +143,8 @@ export default {
         luggageCount: '', //总件数
         canLoad: '', //是否可装载
         cantransportation: '', //是否可运输
-        No_BSM: '' //无BSM状态
+        No_BSM: '' ,//无BSM状态
+        fourSecurity:''//四级按键
       },
       formItems: [
         {
@@ -227,6 +234,10 @@ export default {
           prop: 'checkInLocation',
           label: '值机方式',
         },
+        {
+          prop: 'fourSecurity',
+          label: '四级安检',
+        },
       ],
       baggageTypeList: [
         {

+ 6 - 0
src/views/newTransfer/index.vue

@@ -97,6 +97,11 @@ export default {
     this.getAirPortData()
   },
   mounted () {
+    let formData = sessionStorage.getItem("transferFormData");
+    formData = JSON.parse(formData)
+    if(formData.currentAirport && formData.flightDate){
+      this.formData = formData
+    }
     this.timer = setInterval(() => {
       this.getAirPortData()
     }, LOOP_INTERVAL.transferArrivalTable)
@@ -166,6 +171,7 @@ export default {
             ...queryData,
             shouldReset: type !== 1
           }
+          sessionStorage.setItem("transferFormData",JSON.stringify(this.formData))
         } else {
           this.$message.error(res.message);
         }

+ 28 - 16
src/views/statisticsCharts/components/statisticsHeaderNew.vue

@@ -11,7 +11,7 @@
           <el-input v-model="formData[item.prop]" :size="item.size || 'small'" :placeholder="item.placeholder || '请输入'" :clearable="item.clearable" />
         </template>
         <template v-if="item.inputType === 'select'">
-          <el-select v-model="formData[item.prop]" :filterable="item.filterable" :default-first-option="item.filterable" :size="item.size || 'small'" :placeholder="item.placeholder || '请选择'" :multiple="item.multiple" :collapse-tags="item.multiple" :clearable="item.clearable" :disabled="item.disabled">
+          <el-select @change="change()" v-model="formData[item.prop]" :filterable="item.filterable" :default-first-option="item.filterable" :size="item.size || 'small'" :placeholder="item.placeholder || '请选择'" :multiple="item.multiple" :collapse-tags="item.multiple" :clearable="item.clearable" :disabled="item.disabled">
             <el-option v-for="option in item.options" :key="option.value" :value="option.value" :label="option.label" />
           </el-select>
         </template>
@@ -122,24 +122,32 @@ export default {
       }
     })
     const savedFormData = this.savedFormDataMap[this.$route.name]
+    let obj = {}
     this.formItems.forEach(item => {
       if (item.queryId && item.setKey) {
         this.getOptions(item.queryId, item.setKey, item.prop,item.authId)
       }
+      // if (savedFormData?.[item.prop]) {
+      //   obj[item.prop] = savedFormData[item.prop]
+      // } else if (item.defaultOption) {
+      //   obj[item.prop] = item.defaultOption
+      // }
+      // if(savedFormData?.['fd1']&&savedFormData?.['fd2']){
+      //   obj['fd1,fd2'] = [savedFormData['fd1'],savedFormData['fd2']]
+      // }
+      // console.log(obj)
 
-      if (savedFormData?.[item.prop]) {
-        this.formData[item.prop] = savedFormData[item.prop]
-        this.getData()
-      } else if (item.defaultOption) {
-        this.formData[item.prop] = item.defaultOption
-      }
-      if(savedFormData?.['fd1']&&savedFormData?.['fd2']){
-        this.formData['fd1,fd2'] = [savedFormData['fd1'],savedFormData['fd2']]
-      }
     })
+    if(savedFormData){
+      this.formData = savedFormData
+      this.getData()
+    }
     // this.$emit('update:data', this.formData)
   },
   methods: {
+    change(){
+      // console.log(this.formData)
+    },
     getData () {
       try {
         this.formItems.forEach(item => {
@@ -162,9 +170,9 @@ export default {
         return
       }
 
-      this.$emit('getFormData', this.formData)
+      this.$emit('getFormData', _.cloneDeep(this.formData))
       this.$store.dispatch('savedSettings/saveFormData', {
-        formData: this.formData
+        formData: _.cloneDeep(this.formData)
       })
     },
     exportClickHandler () {
@@ -219,14 +227,18 @@ export default {
       }
     },
     async getOptions (queryId, setKey, prop,authId) {
-      try {
-        const { code, returnData, message } = await TempQuery({
+      console.log(queryId)
+      let p = {
           serviceId: queryId,
           dataContent: [],
           event:"0",
           pageSize:"9999",
-          authId:authId
-        })
+        }
+      if(queryId != '8200233'){
+        p['authId'] = authId
+      }
+      try {
+        const { code, returnData, message } = await TempQuery(p)
         if (Number(code) === 0) {
           const arr = returnData.map(element => ({
             label: element[setKey],

+ 2 - 2
src/views/statisticsCharts/views/nodeStatisticsCharts.vue

@@ -131,8 +131,8 @@ export default {
           key: 'checkIn'
         },
         {
-          name: '检件数',
-          label: '检',
+          name: '开始安检件数',
+          label: '开始安检',
           key: 'B_security'
         },
         {

+ 1 - 1
src/views/statisticsCharts/views/report/scanningStatisticsNew.vue

@@ -45,7 +45,7 @@ export default {
   created () {
       const {auth_id } = this.$route.meta
       const { arrs } = getAuthData(auth_id)
-      const items = arrs.filter(item => item.auth_type == 6)
+      const items = arrs.filter(item => item.auth_type == 5)
       this.formItems = []
       items.map(v => {
         let item = {

+ 0 - 1
src/views/systemSettings/views/newAuth/components/select.vue

@@ -22,7 +22,6 @@
           <el-input size="small" type="text" :rows="5" placeholder="请输入绑定KEY" v-model="form.auth_comment"></el-input>
         </el-form-item>
       </div>
-
     </el-form>
   </div>
 </template>

+ 13 - 6
src/views/systemSettings/views/newAuth/components/table.vue

@@ -20,15 +20,21 @@
         </div>
         <div class="flex-wrap fr-list">
           <el-form-item label="服务ID">
-            <el-select @change="serviceChange" filterable style="width: 264px;" size="small" clearable v-model="form.serviceID" placeholder="请选择服务ID">
+            <el-select @change="serviceChange" filterable style="width: 150px;" size="small" clearable v-model="form.serviceID" placeholder="请选择服务ID">
               <el-option v-for="(item,index) in authArrs" :key="index" :label="item.serviceName" :value="item.serviceID"></el-option>
             </el-select>
           </el-form-item>
-          <el-form-item class="flex1" label="接收参数">
+          <el-form-item label="接收参数">
             <el-input size="small" clearable placeholder="请输入接收参数" v-model="form.queryparams"></el-input>
           </el-form-item>
-          <el-form-item class="flex1" label="权限描述">
-            <el-input size="small" type="textarea" :rows="1" placeholder="请输入权限描述" v-model="form.auth_comment"></el-input>
+          <el-form-item label="下拉绑定KEY">
+            <el-input size="small" type="text" :rows="5" placeholder="请输入绑定KEY" v-model="form.auth_comment"></el-input>
+          </el-form-item>
+          <el-form-item label="下拉显示方式">
+            <el-select size="small" clearable v-model="form.show_type" placeholder="请选择显示方式">
+              <el-option label="时间" value="datePicker"></el-option>
+              <el-option label="下拉" value="select"></el-option>
+            </el-select>
           </el-form-item>
         </div>
       </el-form>
@@ -283,7 +289,8 @@ export default {
         table_height: '',
         queryparams: '',
         serviceID: '',
-        page_size: ''
+        page_size: '',
+        show_type:'',
       },
       tableForm: {
         columnName: "",
@@ -491,4 +498,4 @@ export default {
     }
   }
 }
-</style>
+</style>

+ 1 - 1
src/views/systemSettings/views/newAuth/index.vue

@@ -52,7 +52,7 @@
                   <el-option label="按钮" :value="3"></el-option>
                   <el-option label="表格" :value="4"></el-option>
                   <el-option label="表格(文字)" :value="5"></el-option>
-                  <el-option label="下拉框" :value="6"></el-option>
+                  <!-- <el-option label="下拉框" :value="6"></el-option> -->
                 </el-select>
               </el-form-item>
             </div>

+ 2 - 2
src/views/systemSettings/views/newService/index.vue

@@ -474,7 +474,7 @@ export default {
             : event == 2
               ? await modifyData(params)
               : await moveData(params);
-        if (code == 0) {
+        if (code == '0') {
           this.$message.success("操作成功");
           this.resetTable();
           this.getQuery(this.queryId);
@@ -496,7 +496,7 @@ export default {
           event == 1
             ? await start(params)
             : await stop(params);
-        if (code == 0) {
+        if (code == '0') {
           this.resetTable()
           this.getQuery(this.queryId)
           this.$message.success("操作成功")

+ 759 - 0
src/views/upload/index1.vue

@@ -0,0 +1,759 @@
+<template>
+  <div class="upload">
+    <!-- <div class="upload-wrapper">
+      <header class="upload-header">
+        <div class="manageTitle">{{ title }}</div>
+        <el-upload ref="upload" action="#" multiple :loading="exceed" :accept="acceptTypesStr" :show-file-list="false" :http-request="uploadHandler" :before-upload="beforeUpload">
+          <el-button slot="trigger" type="primary" size="small">
+            上传文件
+          </el-button>
+        </el-upload>
+      </header>
+      <main class="upload-main">
+        <ul v-if="totalProgressList.length" class="upload-list">
+          <li v-for="(item, index) in totalProgressList" :key="item.key" class="upload-list-item">
+            <div class="upload-list-item-wrapper">
+              <div class="upload-list-item-image">
+                <img src="@/assets/nav/ic_ex.png" :alt="item.fileName" />
+              </div>
+              <div class="upload-list-item-details">
+                <div>
+                  <span class="upload-list-item-name">{{ item.fileName }}</span>
+                  <span class="upload-list-item-state" :class="stateClass(item.state)">{{ stateFormat(item.state) }}</span>
+                  <i v-show="item.state === 2" class="upload-list-item-retry el-icon-refresh-right" @click="retry(item)" />
+                </div>
+                <div>
+                  <span class="upload-list-item-time">{{ item.time }}</span>
+                </div>
+              </div>
+            </div>
+            <el-divider v-if="index !== totalProgressList.length - 1" />
+          </li>
+        </ul>
+        <NoData v-else :image-width="230" :image-height="160" />
+      </main>
+    </div> -->
+    <div class="upload-wrapper">
+      <header class="upload-header">
+        <div class="flex">
+          <div class="manageTitle">{{ title2 }}</div>
+          <div>
+            <el-date-picker
+              v-model="input"
+              size="small"
+              value-format="yyyy-MM-dd"
+              type="date"
+              placeholder="选择日期"
+            />
+            <el-select style="width: 100px;margin-left: 15px;" filterable v-model="airPortValue" size="small"
+              placeholder="选择航站" @change="airPortChange()">
+              <el-option v-for="item in airPortOptions" :key="item.IATACode" :label="item.IATACode"
+                :value="item.IATACode">
+              </el-option>
+            </el-select>
+            <el-button
+              class="btn-refresh"
+              type="primary"
+              icon="el-icon-search"
+              @click="getStateData"
+            />
+          </div>
+        </div>
+        <div class="upload-header-right">
+          <!-- <el-date-picker v-model="flightDate" size="small" type="daterange" value-format="yyyy-MM-dd" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="dateRangePickerOptions" :clearable="false" />
+          <el-button class="btn-refresh" type="primary" icon="el-icon-refresh" @click="getStateData" /> -->
+          <el-button
+            slot="trigger"
+            type="primary"
+            size="small"
+            @click="uploadFileClick()"
+          >
+            上传文件
+          </el-button>
+         <!-- <el-upload
+            ref="upload"
+            action="#"
+            multiple
+            :loading="exceed"
+            :accept="acceptTypesStr"
+            :show-file-list="false"
+            :http-request="uploadHandler"
+            :before-upload="beforeUpload"
+          >
+            <el-button
+              slot="trigger"
+              type="primary"
+              size="small"
+            >
+              上传文件
+            </el-button>
+          </el-upload> -->
+        </div>
+      </header>
+      <main class="upload-main">
+        <div class="upload-main-content flex-wrap">
+          <div
+            v-loading="loading1"
+            element-loading-text="拼命加载中"
+            element-loading-spinner="el-icon-loading"
+            element-loading-background="rgba(0, 0, 0, 0.8)"
+            class="upload-main-content-left"
+          >
+            <el-table
+              :data="capData"
+              border
+              stripe
+              fit
+              height="100%"
+              class="state-table"
+              :cell-class-name="cellClass"
+              @cell-click="stateClick"
+            >
+              <el-table-column label="日期">
+                <template slot-scope="scope">
+                  <div>{{ currDate(scope.row.thedate) }}</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                width="75"
+                prop="total"
+                label="总数"
+              />
+              <el-table-column
+                width="75"
+                prop="fail"
+                label="失败"
+              />
+            </el-table>
+          </div>
+          <div
+            v-loading="loading"
+            element-loading-text="拼命加载中"
+            element-loading-spinner="el-icon-loading"
+            element-loading-background="rgba(0, 0, 0, 0.8)"
+            class="upload-main-content-right"
+          >
+            <el-table
+              :data="tableData"
+              border
+              stripe
+              fit
+              height="100%"
+              class="upload-table"
+              :cell-class-name="cellClass"
+            >
+              <el-table-column
+                v-for="column in tableColumns"
+                :key="column.key"
+                :prop="column.prop"
+                :label="column.prop"
+              >
+                <template slot-scope="scope">
+                  <el-tooltip
+                    v-if="column.showTooltip"
+                    class="item"
+                    effect="dark"
+                    placement="top-start"
+                  >
+                    <div
+                      slot="content"
+                      class="tooltip-content"
+                    >
+                      {{
+                        formatter(
+                          scope.row,
+                          scope.column,
+                          scope.row[scope.column.property]
+                        )
+                      }}
+                    </div>
+                    <div class="tooltip-trigger">
+                      {{
+                        formatter(
+                          scope.row,
+                          scope.column,
+                          scope.row[scope.column.property]
+                        )
+                      }}
+                    </div>
+                  </el-tooltip>
+                  <span v-else>
+                    {{
+                      formatter(
+                        scope.row,
+                        scope.column,
+                        scope.row[scope.column.property]
+                      )
+                    }}
+                  </span>
+                </template>
+              </el-table-column>
+              <template #empty>
+                <NoData
+                  :image-width="230"
+                  :image-height="160"
+                />
+              </template>
+            </el-table>
+          </div>
+        </div>
+      </main>
+    </div>
+    <Dialog :flag="addta" @close="close()">
+      <div class="dialog-public-background">
+        <div class="title">文件上传</div>
+        <div class="content">
+          <el-form :model="dataForm" ref="dataForm" class="demo-dataForm" style="display: flex;flex-direction: column;justify-content: center;align-items: center;">
+              <el-select filterable v-model="upLoadAirPortValue" size="small"
+                placeholder="选择航站">
+                <el-option v-for="item in airPortOptions" :key="item.IATACode" :label="item.IATACode"
+                  :value="item.IATACode">
+                </el-option>
+              </el-select>
+            <el-form-item label="选择文件" prop="mailbox" style="margin: 20px 0;">
+              <el-upload
+                 ref="upload"
+                 action="#"
+                 multiple
+                 :loading="exceed"
+                 :accept="acceptTypesStr"
+                 :show-file-list="false"
+                 :http-request="uploadHandler"
+                 :before-upload="beforeUpload"
+               >
+                  <el-input size="medium" placeholder="点击上传文件"></el-input>
+              </el-upload>
+            </el-form-item>
+          </el-form>
+        </div>
+        <div class="foot center t30">
+          <el-button size="medium" @click="addta=false">关闭</el-button>
+        </div>
+      </div>
+    </Dialog>
+  </div>
+</template>
+
+<script>
+import { parseTime } from '@/utils'
+import { UploadFileNew, WhatQuery } from '@/api/temp'
+import NoData from '@/components/nodata/index.vue'
+import Dialog from "@/layout/components/Dialog/index.vue";
+import { getAuthData } from '@/utils/validate'
+
+const acceptTypes = ['xlsx', 'xls']
+const acceptTypesStr = acceptTypes.reduce((prevStr, currStr) => {
+  return `${prevStr}${prevStr ? ',' : ''}.${currStr}`
+}, '')
+
+const units = ['B', 'KB', 'MB', 'GB']
+const getUnit = (size, callTime = 0) => {
+  if (size < 1024) {
+    return `${size}${units[callTime]}`
+  }
+  return getUnit(size / 1024, callTime + 1)
+}
+const maxSize = 20 * 1024 * 1024
+const short = getUnit(maxSize)
+
+export default {
+  name: 'Upload',
+  components: { NoData,Dialog },
+  data() {
+    return {
+      dataForm:{},
+      title: '速运行李上传',
+      acceptTypesStr: acceptTypesStr,
+      totalProgressList: [],
+      limit: 10,
+      title2: '速运行李数据',
+      flightDate: new Array(2).fill(parseTime(new Date(), '{y}-{m}-{d}')),
+      dateRangePickerOptions: {
+        onPick: this.dateRangePickHandler,
+        disabledDate: this.dateRangeDisabled,
+      },
+      input: parseTime(Date.now(), '{y}-{m}-{d}'),
+      tableColumns: [
+        {
+          prop: 'C0',
+        },
+        {
+          prop: 'C1',
+        },
+        {
+          prop: 'C2',
+        },
+        {
+          prop: 'C3',
+        },
+        {
+          prop: 'C4',
+        },
+        {
+          prop: 'C5',
+        },
+        {
+          prop: 'C6',
+        },
+        {
+          prop: 'C7',
+        },
+        {
+          prop: 'C8',
+        },
+        {
+          prop: 'C9',
+        },
+        {
+          prop: 'createtime',
+        },
+        {
+          prop: 'message',
+        },
+        {
+          prop: 'sendResult',
+          showTooltip: true,
+        },
+      ],
+      tableData: [],
+      stateData: [],
+      loading: false,
+      loading1: false,
+      currentCell: null,
+      airPortValue: "",
+      upLoadAirPortValue: "",
+      airPortOptions:[],
+      addta:false
+    }
+  },
+  computed: {
+    currentProgressNum() {
+      return this.totalProgressList.reduce((prevCount, currentProgress) => {
+        return currentProgress.state > 0 ? prevCount : prevCount + 1
+      }, 0)
+    },
+    exceed() {
+      return this.currentProgressNum >= this.limit
+    },
+    currDate() {
+      return function (time) {
+        if (time) {
+          return parseTime(new Date(time), '{y}-{m}-{d} {h}:{i}:{s}')
+        } else {
+          return '-'
+        }
+      }
+    },
+    capData() {
+      const val = this.input
+      return this.stateData.filter(
+        data => !val || (data.thedate && data.thedate.includes(val))
+      )
+    },
+  },
+  // watch: {
+  //   flightDate: {
+  //     handler () {
+  //       this.getTableData()
+  //     },
+  //     deep: true,
+  //     immediate: true,
+  //   },
+  // },
+  created() {
+    const {auth_id } = this.$route.meta
+    const { arrs } = getAuthData(auth_id)
+    const items = arrs.filter(item => item.auth_type == 5)
+    if(items[0]){
+      this.getAirPort(items[0])
+    }
+  },
+  methods: {
+    uploadFileClick(){
+      this.addta = true
+    },
+    async getAirPort(data) {
+      try {
+        const {
+          code,
+          returnData
+        } = await WhatQuery({
+          "serviceId": data.serviceID,
+          "page": 1,
+          "pageSize": 9999,
+          "dataContent": [],
+          "authId":data.auth_id,
+          "event": "0"
+        })
+        if (Number(code) != '0') {
+          throw new Error('失败')
+        }
+        this.airPortOptions = returnData
+        this.upLoadAirPortValue=this.airPortOptions[0].IATACode;
+        this.airPortValue=this.airPortOptions[0].IATACode
+        this.getStateData()
+      } catch (error) {
+        this.$message.error('查询航站失败')
+      }
+    },
+    airPortChange() {
+
+    },
+    beforeUpload(file) {
+      const progress = this.getProgress(file)
+      if (progress && progress.state == 0) {
+        this.$message.warning(`${file.name} 上传中,请勿重复上传`)
+        return
+      }
+      if (this.exceed) {
+        this.$message.warning(
+          `${file.name} 上传出错:超出最大同时上传数量,最多同时上传 ${this.limit} 个文件`
+        )
+      }
+      const extensionName = file.name.split('.').pop()
+      const acceptExtention = acceptTypes.includes(extensionName)
+      if (!acceptExtention) {
+        this.$message.warning(
+          `${file.name} 上传出错:上传文件只能是 ${acceptTypes.join('/')} 格式`
+        )
+        return false
+      }
+      if (file.size > maxSize) {
+        this.$message.warning(
+          `${file.name} 上传出错:上传文件大小不能超过 ${short}`
+        )
+        return false
+      }
+    },
+    uploadHandler({ file }) {
+      if (!this.exceed) {
+        this.uploadFile(file)
+      }
+      const progress = this.getProgress(file)
+      if (progress) {
+        progress.state = this.exceed ? 2 : 0
+        return
+      }
+      const newProgress = {
+        file,
+        key: `${file.name}${file.lastModified}`,
+        fileName: file.name,
+        state: this.exceed ? 2 : 0,
+        time: parseTime(Date.now(), '{y}-{m}-{d} {h}:{i}:{s}'),
+      }
+      this.totalProgressList.push(newProgress)
+    },
+    stateClass(state) {
+      const classMap = ['pending', 'success', 'failure']
+      return `upload-list-item-state-${classMap[state]}`
+    },
+    stateFormat(state) {
+      const textMap = ['上传中···', '上传成功', '上传失败']
+      return textMap[state]
+    },
+    setState(file, state) {
+      const progress = this.getProgress(file)
+      if (progress) {
+        progress.state = state
+      }
+    },
+    getProgress(file) {
+      const key = `${file.name}${file.lastModified}`
+      return this.totalProgressList.find(progress => progress.key === key)
+    },
+    retry(progress) {
+      if (this.exceed) {
+        this.$message.warning('已达到最大同时上传数量,请稍后再试')
+        return
+      }
+      this.uploadFile(progress.file)
+      progress.state = 0
+    },
+    async uploadFile(file) {
+      try {
+        const formData = new FormData()
+        let obj = {
+          "stationCode": this.upLoadAirPortValue,
+          "userName":sessionStorage.getItem("userName")
+        }
+        formData.append('file', file)
+        formData.append('service_id', SERVICE_ID.expressTransportationUploadNew)
+        formData.append('dataContent', JSON.stringify(obj))
+        const { code } = await UploadFileNew(formData)
+        if (code != "0") {
+          throw new Error('失败')
+        }
+        this.$message.success(`${file.name} 上传成功`)
+        this.setState(file, 1)
+        this.getStateData()
+      } catch (error) {
+        this.$message.error(`${file.name} 上传失败`)
+        this.setState(file, 2)
+      }
+    },
+    dateRangePickHandler({ maxDate, minDate }) {
+      if (!maxDate) {
+        this.pickedDate = minDate
+      } else {
+        this.pickedDate = null
+      }
+    },
+    dateRangeDisabled(date) {
+      return this.pickedDate
+        ? Math.abs(date - this.pickedDate) > 2 * 24 * 60 * 60 * 1000
+        : false
+    },
+    cellClass({ row, column, rowIndex, columnIndex }) {
+      const classes = []
+      if (column.property === 'createtime') {
+        classes.push('pre-line')
+      }
+      if (['total', 'fail'].includes(column.property) && row[column.property]) {
+        classes.push('cell-click')
+        if (this.currentCell === `${row.dataObjectId}-${column.property}`) {
+          classes.push('cell-current')
+        }
+      }
+      return classes.join(' ')
+    },
+    formatter(row, column, cellValue) {
+      const value = String(cellValue ?? '').trim()
+      switch (column.property) {
+        case 'createtime':
+          return value.replace('T', '\n')
+        default:
+          return cellValue
+      }
+    },
+    async getTableData(cid = null, type = null) {
+      this.loading = true
+      try {
+        let obj = {}
+        if (cid) {
+          obj['dataObjectId'] = cid
+          obj['stationCode'] = this.airPortValue
+        }
+        if (type === 'fail') {
+          obj['message'] = this.airPortValue
+        }
+        const {
+          code,
+          returnData,
+        } = await WhatQuery({
+          serviceId: SERVICE_ID[
+            type === 'fail'
+              ? 'expressTransportationFail'
+              : 'expressTransportation'
+          ],
+          "page": 1,
+          "pageSize": 9999,
+          "dataContent":[obj],
+          "event": "0"
+        })
+        if (Number(code) != '0') {
+          throw new Error('失败')
+        }
+        this.tableData = returnData
+      } catch (error) {
+        console.log(error)
+        this.$message.error('查询表格失败')
+      }
+      this.loading = false
+    },
+    async getStateData() {
+      this.loading1 = true
+      try {
+        const {
+          code,
+          returnData,
+        } = await WhatQuery({
+          serviceId: SERVICE_ID.expressTransportationNum,
+          dataContent: [{
+            "stationCode": this.airPortValue
+          }],
+          "page": 1,
+          "pageSize": 500,
+          "event": "0"
+        })
+        if (Number(code) != '0') {
+          throw new Error('失败')
+        }
+        this.stateData = returnData
+      } catch (error) {
+        this.$message.error('查询表格失败')
+      }
+      this.loading1 = false
+    },
+    stateClick(row, column, cell, event) {
+      const { dataObjectId } = row
+      const type = column.property
+      if (dataObjectId && ['total', 'fail'].includes(type) && row[type]) {
+        this.currentCell = `${row.dataObjectId}-${column.property}`
+        this.getTableData(dataObjectId, type)
+      }
+    },
+  },
+}
+</script>
+
+<style lang="scss" scoped>
+.upload {
+  width: 100%;
+  height: calc(100vh - 100px);
+  padding: 24px 24px 0;
+  &-wrapper {
+    width: 100%;
+    padding: 24px 24px 0;
+    background-color: #fff;
+    height: 100%;
+  }
+  &-header {
+    display: flex;
+    justify-content: space-between;
+  }
+  &-main {
+    height: calc(100% - 32px);
+    padding-top: 30px;
+    &-content {
+      height: 100%;
+      padding-bottom: 32px;
+      &-left {
+        width: 330px;
+        margin-right: 20px;
+        ::v-deep .state-table {
+          .el-table__header {
+            .cell {
+              font-weight: bold;
+              color: #101116;
+              white-space: nowrap;
+            }
+          }
+          .cell {
+            text-align: center;
+          }
+        }
+      }
+      &-right {
+        flex: 1;
+        width: calc(100% - 350px);
+      }
+    }
+  }
+  &-list {
+    margin: 0;
+    padding: 0;
+    width: 100%;
+    height: 100%;
+    overflow-x: hidden;
+    overflow-y: auto;
+    &-item {
+      &-wrapper {
+        display: flex;
+        justify-content: flex-start;
+        align-items: center;
+      }
+      &-image {
+        margin-right: 16px;
+      }
+      &-details {
+        font-size: 14px;
+        font-family: Helvetica, 'Microsoft YaHei';
+        > div {
+          height: 16px;
+          line-height: 16px;
+          &:first-child {
+            margin-bottom: 6px;
+          }
+        }
+      }
+      &-name {
+        color: #303133;
+        margin-right: 16px;
+      }
+      &-state {
+        &-success {
+          color: #40a349;
+        }
+        &-failure {
+          color: #d53e3e;
+        }
+      }
+      &-retry {
+        width: 16px;
+        height: 16px;
+        text-align: center;
+        line-height: 16px;
+        border-radius: 50%;
+        margin-left: 16px;
+        font-size: 14px;
+        color: #2d67e3;
+        cursor: pointer;
+        &:hover {
+          background-color: #2d67e3;
+          color: #fff;
+        }
+      }
+      &-time {
+        color: #afb4bf;
+      }
+    }
+  }
+  ::v-deep .el-table {
+    width: 100%;
+    .cell {
+      padding: 0;
+      text-align: center;
+      font-size: 14px;
+      font-family: Helvetica, 'Microsoft YaHei';
+      letter-spacing: 0;
+    }
+    .el-table__header-wrapper,
+    .el-table__fixed-header-wrapper {
+      .cell {
+        font-weight: bold;
+        color: #101116;
+        white-space: nowrap;
+      }
+    }
+    .pre-line .cell {
+      white-space: pre-line;
+    }
+
+    &.state-table {
+      .el-table__cell {
+        background-color: transparent !important;
+        &.cell-click .cell {
+          color: #2d67e3;
+          cursor: pointer;
+        }
+
+        &.cell-current,
+        &:hover {
+          background-color: #d5e4f7 !important;
+        }
+      }
+    }
+  }
+}
+
+.upload-header-right {
+  display: flex;
+  align-items: center;
+}
+.btn-refresh {
+  margin-left: 10px;
+  padding: 0;
+  width: 30px;
+  height: 30px;
+}
+
+.tooltip-content {
+  max-width: 500px;
+}
+.tooltip-trigger {
+  padding: 0 10px;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+  overflow: hidden;
+}
+</style>