正在显示
11 个修改的文件
包含
568 行增加
和
15 行删除
| @@ -1972,9 +1972,9 @@ | @@ -1972,9 +1972,9 @@ | ||
| 1972 | } | 1972 | } |
| 1973 | }, | 1973 | }, |
| 1974 | "cfb": { | 1974 | "cfb": { |
| 1975 | - "version": "1.1.3", | ||
| 1976 | - "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.1.3.tgz", | ||
| 1977 | - "integrity": "sha512-joXBW0nMuwV9no7UTMiyVJnQL6XIU3ThXVjFUDHgl9MpILPOomyfaGqC290VELZ48bbQKZXnQ81UT5HouTxHsw==", | 1975 | + "version": "1.1.4", |
| 1976 | + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.1.4.tgz", | ||
| 1977 | + "integrity": "sha512-rwFkl3aFO3f+ljR27YINwC0x8vPjyiEVbYbrTCKzspEf7Q++3THdfHVgJYNUbxNcupJECrLX+L40Mjm9hm/Bgw==", | ||
| 1978 | "requires": { | 1978 | "requires": { |
| 1979 | "adler-32": "~1.2.0", | 1979 | "adler-32": "~1.2.0", |
| 1980 | "commander": "^2.16.0", | 1980 | "commander": "^2.16.0", |
| @@ -6313,7 +6313,7 @@ | @@ -6313,7 +6313,7 @@ | ||
| 6313 | }, | 6313 | }, |
| 6314 | "normalize-wheel": { | 6314 | "normalize-wheel": { |
| 6315 | "version": "1.0.1", | 6315 | "version": "1.0.1", |
| 6316 | - "resolved": "https://registry.npm.taobao.org/normalize-wheel/download/normalize-wheel-1.0.1.tgz", | 6316 | + "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz", |
| 6317 | "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU=" | 6317 | "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU=" |
| 6318 | }, | 6318 | }, |
| 6319 | "npm": { | 6319 | "npm": { |
| @@ -10548,7 +10548,8 @@ | @@ -10548,7 +10548,8 @@ | ||
| 10548 | "raw-loader": { | 10548 | "raw-loader": { |
| 10549 | "version": "0.5.1", | 10549 | "version": "0.5.1", |
| 10550 | "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", | 10550 | "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", |
| 10551 | - "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=" | 10551 | + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", |
| 10552 | + "dev": true | ||
| 10552 | }, | 10553 | }, |
| 10553 | "read-pkg": { | 10554 | "read-pkg": { |
| 10554 | "version": "1.1.0", | 10555 | "version": "1.1.0", |
| @@ -11355,6 +11356,7 @@ | @@ -11355,6 +11356,7 @@ | ||
| 11355 | "version": "0.7.2", | 11356 | "version": "0.7.2", |
| 11356 | "resolved": "https://registry.npmjs.org/script-loader/-/script-loader-0.7.2.tgz", | 11357 | "resolved": "https://registry.npmjs.org/script-loader/-/script-loader-0.7.2.tgz", |
| 11357 | "integrity": "sha512-UMNLEvgOAQuzK8ji8qIscM3GIrRCWN6MmMXGD4SD5l6cSycgGsCo0tX5xRnfQcoghqct0tjHjcykgI1PyBE2aA==", | 11358 | "integrity": "sha512-UMNLEvgOAQuzK8ji8qIscM3GIrRCWN6MmMXGD4SD5l6cSycgGsCo0tX5xRnfQcoghqct0tjHjcykgI1PyBE2aA==", |
| 11359 | + "dev": true, | ||
| 11358 | "requires": { | 11360 | "requires": { |
| 11359 | "raw-loader": "~0.5.1" | 11361 | "raw-loader": "~0.5.1" |
| 11360 | } | 11362 | } |
| @@ -11769,9 +11771,9 @@ | @@ -11769,9 +11771,9 @@ | ||
| 11769 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" | 11771 | "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" |
| 11770 | }, | 11772 | }, |
| 11771 | "ssf": { | 11773 | "ssf": { |
| 11772 | - "version": "0.10.2", | ||
| 11773 | - "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.10.2.tgz", | ||
| 11774 | - "integrity": "sha512-rDhAPm9WyIsY8eZEKyE8Qsotb3j/wBdvMWBUsOhJdfhKGLfQidRjiBUV0y/MkyCLiXQ38FG6LWW/VYUtqlIDZQ==", | 11774 | + "version": "0.10.3", |
| 11775 | + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.10.3.tgz", | ||
| 11776 | + "integrity": "sha512-pRuUdW0WwyB2doSqqjWyzwCD6PkfxpHAHdZp39K3dp/Hq7f+xfMwNAWIi16DyrRg4gg9c/RvLYkJTSawTPTm1w==", | ||
| 11775 | "requires": { | 11777 | "requires": { |
| 11776 | "frac": "~1.1.2" | 11778 | "frac": "~1.1.2" |
| 11777 | } | 11779 | } |
| @@ -13105,6 +13107,11 @@ | @@ -13105,6 +13107,11 @@ | ||
| 13105 | "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", | 13107 | "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", |
| 13106 | "dev": true | 13108 | "dev": true |
| 13107 | }, | 13109 | }, |
| 13110 | + "wmf": { | ||
| 13111 | + "version": "1.0.2", | ||
| 13112 | + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", | ||
| 13113 | + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==" | ||
| 13114 | + }, | ||
| 13108 | "wordwrap": { | 13115 | "wordwrap": { |
| 13109 | "version": "1.0.0", | 13116 | "version": "1.0.0", |
| 13110 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", | 13117 | "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", |
| @@ -13180,17 +13187,18 @@ | @@ -13180,17 +13187,18 @@ | ||
| 13180 | } | 13187 | } |
| 13181 | }, | 13188 | }, |
| 13182 | "xlsx": { | 13189 | "xlsx": { |
| 13183 | - "version": "0.15.1", | ||
| 13184 | - "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.15.1.tgz", | ||
| 13185 | - "integrity": "sha512-z+o4+QPMc32EPboLCzJAz94o0Zyy+8jrmWTsVpfzwknFln9qDO6/HN1KrGGVC4//sGA7dh4R3HA4fhbGIKCDOA==", | 13190 | + "version": "0.15.6", |
| 13191 | + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.15.6.tgz", | ||
| 13192 | + "integrity": "sha512-7vD9eutyLs65iDjNFimVN+gk/oDkfkCgpQUjdE82QgzJCrBHC4bGPH7fzKVyy0UPp3gyFVQTQEFJaWaAvZCShQ==", | ||
| 13186 | "requires": { | 13193 | "requires": { |
| 13187 | "adler-32": "~1.2.0", | 13194 | "adler-32": "~1.2.0", |
| 13188 | - "cfb": "^1.1.3", | 13195 | + "cfb": "^1.1.4", |
| 13189 | "codepage": "~1.14.0", | 13196 | "codepage": "~1.14.0", |
| 13190 | "commander": "~2.17.1", | 13197 | "commander": "~2.17.1", |
| 13191 | "crc-32": "~1.2.0", | 13198 | "crc-32": "~1.2.0", |
| 13192 | "exit-on-epipe": "~1.0.1", | 13199 | "exit-on-epipe": "~1.0.1", |
| 13193 | - "ssf": "~0.10.2" | 13200 | + "ssf": "~0.10.3", |
| 13201 | + "wmf": "~1.0.1" | ||
| 13194 | } | 13202 | } |
| 13195 | }, | 13203 | }, |
| 13196 | "xtend": { | 13204 | "xtend": { |
| @@ -22,12 +22,11 @@ | @@ -22,12 +22,11 @@ | ||
| 22 | "moment": "^2.24.0", | 22 | "moment": "^2.24.0", |
| 23 | "npm": "^6.8.0", | 23 | "npm": "^6.8.0", |
| 24 | "nprogress": "^0.2.0", | 24 | "nprogress": "^0.2.0", |
| 25 | - "script-loader": "^0.7.2", | ||
| 26 | "vue": "^2.2.2", | 25 | "vue": "^2.2.2", |
| 27 | "vue-i18n": "^8.14.0", | 26 | "vue-i18n": "^8.14.0", |
| 28 | "vue-router": "^2.3.0", | 27 | "vue-router": "^2.3.0", |
| 29 | "vuex": "^2.0.0-rc.6", | 28 | "vuex": "^2.0.0-rc.6", |
| 30 | - "xlsx": "^0.15.1" | 29 | + "xlsx": "^0.15.6" |
| 31 | }, | 30 | }, |
| 32 | "devDependencies": { | 31 | "devDependencies": { |
| 33 | "autoprefixer": "^6.7.2", | 32 | "autoprefixer": "^6.7.2", |
| @@ -64,6 +63,7 @@ | @@ -64,6 +63,7 @@ | ||
| 64 | "qs": "^6.7.0", | 63 | "qs": "^6.7.0", |
| 65 | "rimraf": "^2.6.0", | 64 | "rimraf": "^2.6.0", |
| 66 | "sass-loader": "^6.0.0", | 65 | "sass-loader": "^6.0.0", |
| 66 | + "script-loader": "^0.7.2", | ||
| 67 | "semver": "^5.3.0", | 67 | "semver": "^5.3.0", |
| 68 | "shelljs": "^0.7.6", | 68 | "shelljs": "^0.7.6", |
| 69 | "url-loader": "^0.5.8", | 69 | "url-loader": "^0.5.8", |
src/api/agent-excel/index.js
0 → 100644
| @@ -18,6 +18,7 @@ export default { | @@ -18,6 +18,7 @@ export default { | ||
| 18 | method: 'GET', | 18 | method: 'GET', |
| 19 | url: url, | 19 | url: url, |
| 20 | params: params, | 20 | params: params, |
| 21 | + timeout: 30000, | ||
| 21 | headers: { | 22 | headers: { |
| 22 | 'Content-Type': 'application/x-www-form-urlencoded' | 23 | 'Content-Type': 'application/x-www-form-urlencoded' |
| 23 | } | 24 | } |
| @@ -65,6 +65,7 @@ router.beforeEach((to, from, next) => { | @@ -65,6 +65,7 @@ router.beforeEach((to, from, next) => { | ||
| 65 | 65 | ||
| 66 | const message = Vue.prototype.$message; | 66 | const message = Vue.prototype.$message; |
| 67 | axios.defaults.baseURL = '/api'; | 67 | axios.defaults.baseURL = '/api'; |
| 68 | +axios.defaults.timeout = 120000; | ||
| 68 | axios.interceptors.response.use( | 69 | axios.interceptors.response.use( |
| 69 | res => { | 70 | res => { |
| 70 | //对响应数据做些事 | 71 | //对响应数据做些事 |
| @@ -119,6 +120,14 @@ axios.interceptors.response.use( | @@ -119,6 +120,14 @@ axios.interceptors.response.use( | ||
| 119 | path: "/error/502" | 120 | path: "/error/502" |
| 120 | }); | 121 | }); |
| 121 | } | 122 | } |
| 123 | + if (error.response.status === 503) { | ||
| 124 | + message({ | ||
| 125 | + // 饿了么的消息弹窗组件 | ||
| 126 | + message: '503相关服务服务未找到', | ||
| 127 | + type: "error" | ||
| 128 | + }); | ||
| 129 | + } | ||
| 130 | + | ||
| 122 | if (error.response.status === 404) { | 131 | if (error.response.status === 404) { |
| 123 | message({ | 132 | message({ |
| 124 | // 饿了么的消息弹窗组件 | 133 | // 饿了么的消息弹窗组件 |
| @@ -48,6 +48,8 @@ import ComeCar from './views/staff/come_car.vue' | @@ -48,6 +48,8 @@ import ComeCar from './views/staff/come_car.vue' | ||
| 48 | import OnDuty from './views/staff/on_duty.vue' | 48 | import OnDuty from './views/staff/on_duty.vue' |
| 49 | import WaterStationsPatrol from './views/water/water_stations_patrol.vue' | 49 | import WaterStationsPatrol from './views/water/water_stations_patrol.vue' |
| 50 | import Location from './views/empt/Location.vue' | 50 | import Location from './views/empt/Location.vue' |
| 51 | +import AgentExcelExport from './views/excel/exportExcel-agent' | ||
| 52 | +import NMMSExcelExport from './views/excel/exportExcel-NMMS' | ||
| 51 | 53 | ||
| 52 | let routes = [ | 54 | let routes = [ |
| 53 | { | 55 | { |
| @@ -100,6 +102,16 @@ let routes = [ | @@ -100,6 +102,16 @@ let routes = [ | ||
| 100 | ] | 102 | ] |
| 101 | }, | 103 | }, |
| 102 | { | 104 | { |
| 105 | + path: '/analysis', | ||
| 106 | + component: Home, | ||
| 107 | + name: '统计分析', | ||
| 108 | + iconCls: 'fa fa-id-card-o', | ||
| 109 | + children: [ | ||
| 110 | + { path: '/agentexport', component: AgentExcelExport, name: '出港统计' }, | ||
| 111 | + { path: '/nmmsexport', component: NMMSExcelExport, name: '进港统计' }, | ||
| 112 | + ] | ||
| 113 | + }, | ||
| 114 | + { | ||
| 103 | path: '/output', | 115 | path: '/output', |
| 104 | component: Home, | 116 | component: Home, |
| 105 | name: '出港业务申报', | 117 | name: '出港业务申报', |
| 1 | +<template> | ||
| 2 | + <div style="display:inline-block;"> | ||
| 3 | + <label class="radio-label">导出是否自动适配列宽: </label> | ||
| 4 | + <el-radio-group v-model="autoWidth"> | ||
| 5 | + <el-radio :label="true" border>True</el-radio> | ||
| 6 | + <el-radio :label="false" border>False</el-radio> | ||
| 7 | + </el-radio-group> | ||
| 8 | + </div> | ||
| 9 | +</template> | ||
| 10 | + | ||
| 11 | +<script> | ||
| 12 | +export default { | ||
| 13 | + props: { | ||
| 14 | + value: { | ||
| 15 | + type: Boolean, | ||
| 16 | + default: true | ||
| 17 | + } | ||
| 18 | + }, | ||
| 19 | + computed: { | ||
| 20 | + autoWidth: { | ||
| 21 | + get() { | ||
| 22 | + return this.value | ||
| 23 | + }, | ||
| 24 | + set(val) { | ||
| 25 | + this.$emit('input', val) | ||
| 26 | + } | ||
| 27 | + } | ||
| 28 | + } | ||
| 29 | +} | ||
| 30 | +</script> |
| 1 | +<template> | ||
| 2 | + <div style="display:inline-block;"> | ||
| 3 | + <label class="radio-label">导出类型: </label> | ||
| 4 | + <el-select v-model="bookType" style="width:120px;" > | ||
| 5 | + <el-option | ||
| 6 | + v-for="item in options" | ||
| 7 | + :key="item" | ||
| 8 | + :label="item" | ||
| 9 | + :value="item"/> | ||
| 10 | + </el-select> | ||
| 11 | + </div> | ||
| 12 | +</template> | ||
| 13 | + | ||
| 14 | +<script> | ||
| 15 | +export default { | ||
| 16 | + props: { | ||
| 17 | + value: { | ||
| 18 | + type: String, | ||
| 19 | + default: 'xlsx' | ||
| 20 | + } | ||
| 21 | + }, | ||
| 22 | + data() { | ||
| 23 | + return { | ||
| 24 | + options: ['xlsx', 'csv', 'txt'] | ||
| 25 | + } | ||
| 26 | + }, | ||
| 27 | + computed: { | ||
| 28 | + bookType: { | ||
| 29 | + get() { | ||
| 30 | + return this.value | ||
| 31 | + }, | ||
| 32 | + set(val) { | ||
| 33 | + this.$emit('input', val) | ||
| 34 | + } | ||
| 35 | + } | ||
| 36 | + } | ||
| 37 | +} | ||
| 38 | +</script> |
| 1 | +<template> | ||
| 2 | + <div style="display:inline-block;"> | ||
| 3 | + <!-- $t is vue-i18n global function to translate lang --> | ||
| 4 | + <label class="radio-label" style="padding-left:0;">导出文件名: </label> | ||
| 5 | + <el-input placeholder="非必填,默认导出文件名为excel-list.xlsx" v-model="filename" style="width:340px;" prefix-icon="el-icon-document"/> | ||
| 6 | + </div> | ||
| 7 | +</template> | ||
| 8 | + | ||
| 9 | +<script> | ||
| 10 | +export default { | ||
| 11 | + props: { | ||
| 12 | + value: { | ||
| 13 | + type: String, | ||
| 14 | + default: '' | ||
| 15 | + } | ||
| 16 | + }, | ||
| 17 | + computed: { | ||
| 18 | + filename: { | ||
| 19 | + get() { | ||
| 20 | + return this.value | ||
| 21 | + }, | ||
| 22 | + set(val) { | ||
| 23 | + this.$emit('input', val) | ||
| 24 | + } | ||
| 25 | + } | ||
| 26 | + } | ||
| 27 | +} | ||
| 28 | +</script> |
src/views/excel/exportExcel-NMMS.vue
0 → 100755
| 1 | +<template> | ||
| 2 | + <!-- $t is vue-i18n global function to translate lang --> | ||
| 3 | + <div class="app-container"> | ||
| 4 | + <!--工具条--> | ||
| 5 | + <el-col :span="24" class="toolbar" style="padding-bottom: 0px;"> | ||
| 6 | + <el-form :inline="true" :model="searchText"> | ||
| 7 | + <el-form-item> | ||
| 8 | + <el-date-picker v-model="searchText.startdate" value-format="yyyy-MM-dd" type="date" | ||
| 9 | + placeholder="开始航班日期" | ||
| 10 | + ></el-date-picker> | ||
| 11 | + </el-form-item> | ||
| 12 | + <el-form-item> | ||
| 13 | + <el-date-picker v-model="searchText.enddate" value-format="yyyy-MM-dd" type="date" | ||
| 14 | + placeholder="结束航班日期" | ||
| 15 | + ></el-date-picker> | ||
| 16 | + </el-form-item> | ||
| 17 | + <el-form-item> | ||
| 18 | + <el-button :loading="listLoading" style="margin:0 0 20px 20px;" type="primary" icon="document" @click="fetchData">查询</el-button> | ||
| 19 | + </el-form-item> | ||
| 20 | + <el-tag | ||
| 21 | + :key="note.message" | ||
| 22 | + :type="note.type"> | ||
| 23 | + {{note.message}} | ||
| 24 | + </el-tag> | ||
| 25 | + </el-form> | ||
| 26 | + </el-col> | ||
| 27 | + <div> | ||
| 28 | + <FilenameOption v-model="filename" /> | ||
| 29 | + <AutoWidthOption v-model="autoWidth" /> | ||
| 30 | + <BookTypeOption v-model="bookType" /> | ||
| 31 | + <el-button :loading="downloadLoading" style="margin:0 0 20px 20px;" type="primary" icon="document" @click="handleDownload">导出 Excel</el-button> | ||
| 32 | + </div> | ||
| 33 | + | ||
| 34 | + <el-table v-loading="listLoading" element-loading-text="拼命加载中" border fit highlight-current-row> | ||
| 35 | + <el-table-column align="center" label="Id" width="95"> | ||
| 36 | + <template slot-scope="scope"> | ||
| 37 | + {{ scope.$index }} | ||
| 38 | + </template> | ||
| 39 | + </el-table-column> | ||
| 40 | + <el-table-column label="运单号"> | ||
| 41 | + <template slot-scope="scope"> | ||
| 42 | + {{ scope.row.waybillnomaster }} | ||
| 43 | + </template> | ||
| 44 | + </el-table-column> | ||
| 45 | + <el-table-column label="航班号" width="115" align="center"> | ||
| 46 | + <template slot-scope="scope"> | ||
| 47 | + {{ scope.row.flightno }} | ||
| 48 | + </template> | ||
| 49 | + </el-table-column> | ||
| 50 | + <el-table-column align="center" label="航班日期" width="220" :formatter="dateFormat"> | ||
| 51 | + <template slot-scope="scope"> | ||
| 52 | + <i class="el-icon-time"/> | ||
| 53 | + <span>{{ scope.row.flightDate | parseTime('{y}-{m}-{d}')}}</span> | ||
| 54 | + </template> | ||
| 55 | + </el-table-column> | ||
| 56 | + <el-table-column label="航段" width="110" align="center"> | ||
| 57 | + <template slot-scope="scope"> | ||
| 58 | + <el-tag>{{ scope.row.segment }}</el-tag> | ||
| 59 | + </template> | ||
| 60 | + </el-table-column> | ||
| 61 | + </el-table> | ||
| 62 | + </div> | ||
| 63 | +</template> | ||
| 64 | + | ||
| 65 | +<script> | ||
| 66 | +import { getNmmsAnalysisList } from '@/api/agent-excel' | ||
| 67 | +import { parseTime } from '@/utils' | ||
| 68 | + | ||
| 69 | +// options components | ||
| 70 | +import FilenameOption from './components/FilenameOption' | ||
| 71 | +import AutoWidthOption from './components/AutoWidthOption' | ||
| 72 | +import BookTypeOption from './components/BookTypeOption' | ||
| 73 | +import Export2Excel from '@/vendor/Export2Excel' | ||
| 74 | +export default { | ||
| 75 | + name: 'ExportExcelNMMS', | ||
| 76 | + components: { FilenameOption, AutoWidthOption, BookTypeOption }, | ||
| 77 | + data() { | ||
| 78 | + return { | ||
| 79 | + list: [], | ||
| 80 | + fetchList: [], | ||
| 81 | + listLoading: false, | ||
| 82 | + downloadLoading: false, | ||
| 83 | + filename: '', | ||
| 84 | + autoWidth: true, | ||
| 85 | + bookType: 'xlsx', | ||
| 86 | + searchText: { | ||
| 87 | + startdate: undefined, | ||
| 88 | + enddate: undefined | ||
| 89 | + }, | ||
| 90 | + note: { | ||
| 91 | + type: 'info', | ||
| 92 | + message: '' | ||
| 93 | + } | ||
| 94 | + | ||
| 95 | + } | ||
| 96 | + }, | ||
| 97 | + created() { | ||
| 98 | + // this.fetchData() | ||
| 99 | + }, | ||
| 100 | + filters: { | ||
| 101 | + parseTime: parseTime | ||
| 102 | + }, | ||
| 103 | + methods: { | ||
| 104 | + dateFormat:function(row,column){ | ||
| 105 | + var t=new Date(row.updateTime);//row 表示一行数据, updateTime 表示要格式化的字段名称 | ||
| 106 | + return t.getFullYear()+"-"+(t.getMonth()+1)+"-"+t.getDate(); | ||
| 107 | + }, | ||
| 108 | + fetchData() { | ||
| 109 | + this.listLoading = true | ||
| 110 | + getNmmsAnalysisList(this.searchText).then(response => { | ||
| 111 | + this.list = response.data.data | ||
| 112 | + this.listLoading = false | ||
| 113 | + this.$message({ | ||
| 114 | + message: '数据查询成功,可以下载excel', | ||
| 115 | + type: 'success' | ||
| 116 | + }); | ||
| 117 | + this.note.message = '数据查询成功,可以下载excel;共'+this.list.length+'条数据'; | ||
| 118 | + this.note.type = 'success'; | ||
| 119 | + }) | ||
| 120 | + }, | ||
| 121 | + handleDownload() { | ||
| 122 | + this.downloadLoading = true | ||
| 123 | + import('@/vendor/Export2Excel').then(excel => { | ||
| 124 | + const tHeader = [ | ||
| 125 | + '航班号', | ||
| 126 | + '航班日期', | ||
| 127 | + '航段', | ||
| 128 | + '主运单号', | ||
| 129 | + '分单号', | ||
| 130 | + '运单件数', | ||
| 131 | + '运单重量', | ||
| 132 | + '舱单件数', | ||
| 133 | + '舱单重量', | ||
| 134 | + '品名', | ||
| 135 | + '航班起始站', | ||
| 136 | + '航班起始站中文', | ||
| 137 | + '航班目的站', | ||
| 138 | + '航班目的站中文', | ||
| 139 | + '发货人国家', | ||
| 140 | + '发货人国家中文', | ||
| 141 | + '发货人区域' | ||
| 142 | + ] | ||
| 143 | + const filterVal = [ | ||
| 144 | + 'flightno', | ||
| 145 | + 'flightDate', | ||
| 146 | + 'segment', | ||
| 147 | + 'waybillnomaster', | ||
| 148 | + 'waybillnosecondary', | ||
| 149 | + 'totalpiece', | ||
| 150 | + 'totalweight', | ||
| 151 | + 'manifesttotalpiece', | ||
| 152 | + 'manifesttotalweight', | ||
| 153 | + 'productname', | ||
| 154 | + 'originatingstation', | ||
| 155 | + 'originatingstationcn', | ||
| 156 | + 'destinationstation', | ||
| 157 | + 'destinationstationcn', | ||
| 158 | + 'shipperCountrycode', | ||
| 159 | + 'countrydescchn', | ||
| 160 | + 'areadescchn' | ||
| 161 | + ] | ||
| 162 | + const list = this.list | ||
| 163 | + const data = this.formatJson(filterVal, list) | ||
| 164 | + excel.export_json_to_excel({ | ||
| 165 | + header: tHeader, | ||
| 166 | + data, | ||
| 167 | + filename: this.filename, | ||
| 168 | + autoWidth: this.autoWidth, | ||
| 169 | + bookType: this.bookType | ||
| 170 | + }) | ||
| 171 | + this.downloadLoading = false | ||
| 172 | + }) | ||
| 173 | + }, | ||
| 174 | + formatJson(filterVal, jsonData) { | ||
| 175 | + return jsonData.map(v => filterVal.map(j => { | ||
| 176 | + if (j === 'timestamp') { | ||
| 177 | + return parseTime(v[j]) | ||
| 178 | + } else { | ||
| 179 | + return v[j] | ||
| 180 | + } | ||
| 181 | + })) | ||
| 182 | + } | ||
| 183 | + } | ||
| 184 | +} | ||
| 185 | +</script> | ||
| 186 | + | ||
| 187 | +<style> | ||
| 188 | +.radio-label { | ||
| 189 | + font-size: 14px; | ||
| 190 | + color: #606266; | ||
| 191 | + line-height: 40px; | ||
| 192 | + padding: 0 12px 0 30px; | ||
| 193 | +} | ||
| 194 | +</style> | ||
| 195 | + |
src/views/excel/exportExcel-agent.vue
0 → 100755
| 1 | +<template> | ||
| 2 | + <!-- $t is vue-i18n global function to translate lang --> | ||
| 3 | + <div class="app-container"> | ||
| 4 | + <!--工具条--> | ||
| 5 | + <el-col :span="24" class="toolbar" style="padding-bottom: 0px;"> | ||
| 6 | + <el-form :inline="true" :model="searchText"> | ||
| 7 | + <el-form-item> | ||
| 8 | + <el-date-picker v-model="searchText.startdate" value-format="yyyy-MM-dd" type="date" | ||
| 9 | + placeholder="开始航班日期" | ||
| 10 | + ></el-date-picker> | ||
| 11 | + </el-form-item> | ||
| 12 | + <el-form-item> | ||
| 13 | + <el-date-picker v-model="searchText.enddate" value-format="yyyy-MM-dd" type="date" | ||
| 14 | + placeholder="结束航班日期" | ||
| 15 | + ></el-date-picker> | ||
| 16 | + </el-form-item> | ||
| 17 | + <el-form-item> | ||
| 18 | + <el-button :loading="downloadLoading" style="margin:0 0 20px 20px;" type="primary" icon="document" @click="fetchData">查询</el-button> | ||
| 19 | + </el-form-item> | ||
| 20 | + </el-form> | ||
| 21 | + </el-col> | ||
| 22 | + <div> | ||
| 23 | + <FilenameOption v-model="filename" /> | ||
| 24 | + <AutoWidthOption v-model="autoWidth" /> | ||
| 25 | + <BookTypeOption v-model="bookType" /> | ||
| 26 | + <el-button :loading="downloadLoading" style="margin:0 0 20px 20px;" type="primary" icon="document" @click="handleDownload">导出 Excel</el-button> | ||
| 27 | + </div> | ||
| 28 | + | ||
| 29 | + <el-table v-loading="listLoading" :data="list" element-loading-text="拼命加载中" border fit highlight-current-row> | ||
| 30 | + <el-table-column align="center" label="Id" width="95"> | ||
| 31 | + <template slot-scope="scope"> | ||
| 32 | + {{ scope.$index }} | ||
| 33 | + </template> | ||
| 34 | + </el-table-column> | ||
| 35 | + <el-table-column label="运单号"> | ||
| 36 | + <template slot-scope="scope"> | ||
| 37 | + {{ scope.row.autoid }} | ||
| 38 | + </template> | ||
| 39 | + </el-table-column> | ||
| 40 | + <el-table-column label="承运人" width="110" align="center"> | ||
| 41 | + <template slot-scope="scope"> | ||
| 42 | + <el-tag>{{ scope.row.totalpiece }}</el-tag> | ||
| 43 | + </template> | ||
| 44 | + </el-table-column> | ||
| 45 | + <el-table-column label="航班号" width="115" align="center"> | ||
| 46 | + <template slot-scope="scope"> | ||
| 47 | + {{ scope.row.manifesttotalpiece }} | ||
| 48 | + </template> | ||
| 49 | + </el-table-column> | ||
| 50 | + <el-table-column align="center" label="航班日期" width="220" :formatter="dateFormat"> | ||
| 51 | + <template slot-scope="scope"> | ||
| 52 | + <i class="el-icon-time"/> | ||
| 53 | + <span>{{ scope.row.manifesttotalweight | parseTime('{y}-{m}-{d}')}}</span> | ||
| 54 | + </template> | ||
| 55 | + </el-table-column> | ||
| 56 | + </el-table> | ||
| 57 | + </div> | ||
| 58 | +</template> | ||
| 59 | + | ||
| 60 | +<script> | ||
| 61 | +import { getAnalysisList } from '@/api/agent-excel' | ||
| 62 | +import { parseTime } from '@/utils' | ||
| 63 | + | ||
| 64 | +// options components | ||
| 65 | +import FilenameOption from './components/FilenameOption' | ||
| 66 | +import AutoWidthOption from './components/AutoWidthOption' | ||
| 67 | +import BookTypeOption from './components/BookTypeOption' | ||
| 68 | +import Export2Excel from '@/vendor/Export2Excel' | ||
| 69 | +export default { | ||
| 70 | + name: 'ExportExcel', | ||
| 71 | + components: { FilenameOption, AutoWidthOption, BookTypeOption }, | ||
| 72 | + data() { | ||
| 73 | + return { | ||
| 74 | + list: [], | ||
| 75 | + fetchList: [], | ||
| 76 | + listLoading: false, | ||
| 77 | + downloadLoading: false, | ||
| 78 | + filename: '', | ||
| 79 | + autoWidth: true, | ||
| 80 | + bookType: 'xlsx', | ||
| 81 | + searchText: { | ||
| 82 | + startdate: undefined, | ||
| 83 | + enddate: undefined | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + } | ||
| 87 | + }, | ||
| 88 | + created() { | ||
| 89 | + // this.fetchData() | ||
| 90 | + }, | ||
| 91 | + filters: { | ||
| 92 | + parseTime: parseTime | ||
| 93 | + }, | ||
| 94 | + methods: { | ||
| 95 | + dateFormat:function(row,column){ | ||
| 96 | + var t=new Date(row.updateTime);//row 表示一行数据, updateTime 表示要格式化的字段名称 | ||
| 97 | + return t.getFullYear()+"-"+(t.getMonth()+1)+"-"+t.getDate(); | ||
| 98 | + }, | ||
| 99 | + fetchData() { | ||
| 100 | + this.listLoading = true | ||
| 101 | + getAnalysisList(this.searchText).then(response => { | ||
| 102 | + this.list = response.data.data | ||
| 103 | + this.listLoading = false | ||
| 104 | + }) | ||
| 105 | + }, | ||
| 106 | + handleDownload() { | ||
| 107 | + this.downloadLoading = true | ||
| 108 | + import('@/vendor/Export2Excel').then(excel => { | ||
| 109 | + const tHeader = ['运单号', | ||
| 110 | + '航空托运人名称', | ||
| 111 | + '航空销售代理人名称', | ||
| 112 | + '航协编号', | ||
| 113 | + '航空公司运输证明', | ||
| 114 | + '运输条件鉴定书', | ||
| 115 | + '承运人', | ||
| 116 | + '航班号', | ||
| 117 | + '航班日期', | ||
| 118 | + '航班起始站', | ||
| 119 | + '航班目的站', | ||
| 120 | + '运单件数', | ||
| 121 | + '运单重量', | ||
| 122 | + '操作时间', | ||
| 123 | + '关区', | ||
| 124 | + '预配品名', | ||
| 125 | + '收货人公司', | ||
| 126 | + '收货人地址', | ||
| 127 | + '收货人城市', | ||
| 128 | + '收货人电话', | ||
| 129 | + '收货人国家', | ||
| 130 | + '收货人名称', | ||
| 131 | + '发货人名称', | ||
| 132 | + '发货人地址', | ||
| 133 | + '发货人城市', | ||
| 134 | + '发货人国家', | ||
| 135 | + '发货人电话', | ||
| 136 | + '发货人名称', | ||
| 137 | + '海关回执状态', | ||
| 138 | + '海关回执信息', | ||
| 139 | + '发货人编码', | ||
| 140 | + '收货人编码', | ||
| 141 | + '货物品名', | ||
| 142 | + '二级类名称', | ||
| 143 | + '一级类名称', | ||
| 144 | + '代理人三字码', | ||
| 145 | + '代理人全称', | ||
| 146 | + '代理人类别', | ||
| 147 | + '代理联系人', | ||
| 148 | + '代理联系人电话' | ||
| 149 | + ] | ||
| 150 | + const filterVal = [ | ||
| 151 | + 'autoid', | ||
| 152 | + 'waybillnomaster', | ||
| 153 | + 'segment', | ||
| 154 | + 'originatingstation', | ||
| 155 | + 'destinationstation', | ||
| 156 | + 'totalweight', | ||
| 157 | + 'totalpiece', | ||
| 158 | + 'manifesttotalpiece', | ||
| 159 | + 'manifesttotalweight', | ||
| 160 | + 'flightno', | ||
| 161 | + 'productname', | ||
| 162 | + 'customsstatus', | ||
| 163 | + 'carrier1', | ||
| 164 | + 'arrivalstation1', | ||
| 165 | + 'carrier2', | ||
| 166 | + 'arrivalstation2', | ||
| 167 | + 'carrier3', | ||
| 168 | + 'arrivalstation3', | ||
| 169 | + 'paymode', | ||
| 170 | + 'customscode', | ||
| 171 | + 'specialgoodscode', | ||
| 172 | + 'shippername', | ||
| 173 | + 'shipperaddress', | ||
| 174 | + 'consigneename', | ||
| 175 | + 'consigneeaddress', | ||
| 176 | + 'receiptinformation', | ||
| 177 | + 'specificConsigneePhone', | ||
| 178 | + 'consigneePhone', | ||
| 179 | + 'status', | ||
| 180 | + 'isbatch', | ||
| 181 | + 'originatingstationBill', | ||
| 182 | + 'destinationstationBill', | ||
| 183 | + 'reportorder', | ||
| 184 | + 'islast', | ||
| 185 | + 'shipperCode', | ||
| 186 | + 'shipperCountrycode', | ||
| 187 | + 'shipperPhone', | ||
| 188 | + 'shipperFax', | ||
| 189 | + 'consigneeCode', | ||
| 190 | + 'consigneeCountrycode' | ||
| 191 | + ] | ||
| 192 | + const list = this.list | ||
| 193 | + const data = this.formatJson(filterVal, list) | ||
| 194 | + excel.export_json_to_excel({ | ||
| 195 | + header: tHeader, | ||
| 196 | + data, | ||
| 197 | + filename: this.filename, | ||
| 198 | + autoWidth: this.autoWidth, | ||
| 199 | + bookType: this.bookType | ||
| 200 | + }) | ||
| 201 | + this.downloadLoading = false | ||
| 202 | + }) | ||
| 203 | + }, | ||
| 204 | + formatJson(filterVal, jsonData) { | ||
| 205 | + return jsonData.map(v => filterVal.map(j => { | ||
| 206 | + if (j === 'timestamp') { | ||
| 207 | + return parseTime(v[j]) | ||
| 208 | + } else { | ||
| 209 | + return v[j] | ||
| 210 | + } | ||
| 211 | + })) | ||
| 212 | + } | ||
| 213 | + } | ||
| 214 | +} | ||
| 215 | +</script> | ||
| 216 | + | ||
| 217 | +<style> | ||
| 218 | +.radio-label { | ||
| 219 | + font-size: 14px; | ||
| 220 | + color: #606266; | ||
| 221 | + line-height: 40px; | ||
| 222 | + padding: 0 12px 0 30px; | ||
| 223 | +} | ||
| 224 | +</style> | ||
| 225 | + |
-
请 注册 或 登录 后发表评论