jinhui.wang

version:0.5.6,航班预审导入导出页面增加,通用方法修改,无用代码删除

import service from "../utils/request";
import request from '@/utils/request'
export function downLoadTemplate(template) {
return request({
url:'/caPreReviewImport/downLoadTemplate?template=' + template,
method:'get',
responseType:'blob',
})
}
export function importcaPreReview(file, type){
let formData = new FormData();
formData.append("file", file);
formData.append("type", type);
return request({
url:'/caPreReviewImport/importcaPreReview',
method:'post',
data:formData
})
}
......@@ -2,19 +2,46 @@ import request from '@/utils/request'
// 货物查询查询条件数据
export function findConditionData(data) {
return request({
url: '/cargo/findConditionData',
method: 'post',
data: data
})
return request({
url: '/cargo/findConditionData',
method: 'post',
data: data
})
}
//货物查询
export function findCargoData(data) {
return request({
url: '/cargo/findCargoData',
method: 'post',
data: data
})
url: '/cargo/findCargoData',
method: 'post',
data: data
})
}
//货物预审查询
export function findCagroPreData(data) {
return request({
url: '/cargo/findCagroPreData',
method: 'post',
data: data
})
}
//货物配舱查询
export function findCargoAllocationData(data) {
return request({
url: '/cargo/findCargoAllocationData',
method: 'post',
data: data
})
}
//导出excel
export function downloadExcel(data) {
return request({
url: '/cargo/excel',
method: 'post',
data: data,
responseType: 'blob',
})
}
......
......@@ -42,5 +42,5 @@ module.exports = {
/**
* 版本号
*/
version:'version:0.5.4'
version:'version:0.5.6'
}
......
......@@ -8,6 +8,7 @@ const mimeMap = {
// const baseUrl = 'https://imacuat.zmd.apac.fedex.com/IMAC2' //uat服务器
const baseUrl = 'http://47.103.140.98:7001/IMAC2' //阿里云服务器
// const baseUrl = 'http://192.168.1.133:7001/IMAC2' //测试服务器
export function downLoadZip(str, filename) {
var url = baseUrl + str
axios({
......@@ -19,50 +20,87 @@ export function downLoadZip(str, filename) {
resolveBlob(res, mimeMap.zip)
})
}
export function cargoXlsx(str, data) {
/**
* 解析blob响应内容并下载
* @param {*} res blob响应内容
* @param {String} mimeType MIME类型
*/
export function resolveBlob(res, mimeType) {
const aLink = document.createElement('a')
var blob = new Blob([res], { type: mimeType })
// //从response的headers中获取filename, 后端response.setHeader("Content-disposition", "attachment; filename=xxxx.docx") 设置的文件名;
var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')
var contentDisposition = decodeURI(res.headers['content-disposition'])
var result = patt.exec(contentDisposition)
var fileName = result[1]
fileName = fileName.replace(/\"/g, '')
aLink.href = URL.createObjectURL(blob)
aLink.setAttribute('download', fileName) // 设置下载文件名称
document.body.appendChild(aLink)
aLink.click()
document.body.removeChild(aLink);
}
// excel导出请求
export function downLoadXlsx(str, data,fileName) {
var url = baseUrl + str
return new Promise((resolve,rej)=>{
return new Promise((resolve,reject)=>{
axios({
method: 'post',
url: url,
data: data,
responseType: 'blob',
headers: { 'Authorization': getToken() }
// headers: { 'Authorization': decodeURIComponent(getToken()) }
//uat环境token需要做url解码处理
}).then(res => {
if (res.status === 200) {
cargoTableXlsx(res)
downLoadExcal(res,fileName)
}
resolve()
resolve(res)
}).catch((err)=>{
rej(err)
reject(err)
})
})
}
/**
* 解析blob响应内容并下载
* @param {*} res blob响应内容
* @param {String} mimeType MIME类型
*/
export function resolveBlob(res, mimeType) {
//excel导出下载
export function downLoadExcal(val,filename) {
const aLink = document.createElement('a')
var blob = new Blob([res], { type: mimeType })
// //从response的headers中获取filename, 后端response.setHeader("Content-disposition", "attachment; filename=xxxx.docx") 设置的文件名;
var patt = new RegExp('filename=([^;]+\\.[^\\.;]+);*')
var contentDisposition = decodeURI(res.headers['content-disposition'])
var result = patt.exec(contentDisposition)
var fileName = result[1]
fileName = fileName.replace(/\"/g, '')
aLink.href = URL.createObjectURL(blob)
const fileName = filename+".xlsx"
aLink.href = URL.createObjectURL(val.data)
aLink.setAttribute('download', fileName) // 设置下载文件名称
document.body.appendChild(aLink)
aLink.click()
document.body.removeChild(aLink);
}
//货物查询表导出
export function cargoTableXlsx(val) {
//航班预审导出
export function cargoXlsxPre(str, data) {
var url = baseUrl + str
return new Promise((resolve,reject)=>{
axios({
method: 'post',
url: url,
data: data,
responseType: 'blob',
headers: { 'Authorization': getToken() }
}).then(res => {
if (res.status === 200) {
cargoTableXlsxPre(res)
}
resolve()
}).catch((err)=>{
reject(err)
})
})
}
//航班预审导出
export function cargoTableXlsxPre(val) {
const aLink = document.createElement('a')
const fileName = "货物查询表.xlsx"
const fileName = "航班预审表.xlsx"
aLink.href = URL.createObjectURL(val.data)
aLink.setAttribute('download', fileName) // 设置下载文件名称
document.body.appendChild(aLink)
......
......@@ -288,7 +288,6 @@
},
/** 删除 启用 停用按钮操作 */
handleDeleteorPlayorpause(row, status, statusText) {
// debugger
//删除前需要停用
if (status === 0 && row.status != '3') {
this.$message({
......
<template>
<div class="app-container">
<el-form :model="queryParams" :inline="true" label-width="90px">
<el-row>
<el-col :span="8">
<el-form-item label="航班号:">
<el-input
type="textarea"
v-model="fltNo"
clearable
size="small"
class="formItem"
placeholder="AC001;AC002"
>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="航班日期从" prop="fltDateStart">
<el-date-picker
value-format="yyyy-MM-dd"
v-model="queryParams.fltDateStart"
type="date"
placeholder="选择日期"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="到" prop="fltDateEnd">
<el-date-picker
value-format="yyyy-MM-dd"
v-model="queryParams.fltDateEnd"
type="date"
placeholder="选择日期"
>
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="运单号:">
<el-input
size="small"
clearable
type="textarea"
v-model="queryParams.waybillNo"
class="formItem"
placeholder="xxxx;xxxx"
></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="站点">
<el-input
type="textarea"
v-model="siteName"
class="formItem"
placeholder="PVG;PEK"
clearable
size="small"
>
</el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="URSA:">
<el-input
clearable
size="small"
type="textarea"
v-model="ursa"
class="formItem"
placeholder="S_;P_;E2"
>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-switch
v-model="queryParams.reExport"
active-color="#13ce66"
active-text="重新导出"
style="padding-left: 35px"
>
</el-switch>
</el-col>
</el-row>
<br />
<el-form-item style="margin-top: 33px">
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button
type="warning"
:disabled="tableData.length == 0"
@click="xlse()"
:loading="downLoadingTip.downloading"
icon="el-icon-download"
size="mini"
>{{
downLoadingTip.downloading ? downLoadingTip.tip : "导出"
}}</el-button
>
</el-form-item>
</el-form>
<el-table
max-height="500"
highlight-current-row
border
stripe
v-loading="loading"
:data="tableData"
>
<el-table-column
label="运单号"
align="center"
prop="waybillNo"
width="120"
/>
<el-table-column
label="品牌描述"
align="center"
prop="nameDescription"
width="120"
/>
<el-table-column
label="航班日期"
align="center"
prop="fltDate"
width="130"
/>
<el-table-column label="航班号" align="center" prop="fltNo" />
<el-table-column
label="航班路线"
align="center"
prop="route"
width="150"
/>
<el-table-column
label="配置航班类型"
align="center"
prop="kindName"
width="130"
/>
<el-table-column label="尺寸" align="center" prop="sizeStr" />
<el-table-column label="件数" align="center" prop="qty" />
<el-table-column label="实际重量" align="center" prop="actualWeight" />
<el-table-column
label="创建时间"
align="center"
prop="createTime"
width="180"
/>
</el-table>
<pagination
v-show="total > 0"
:total="total"
layout=" prev, pager, next, jumper, sizes,total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.limitSize"
@pagination="findAllFltData"
/>
</div>
</template>
<script>
import { findCagroPreData } from "@/api/cargoSelect";
import { cargoXlsxPre } from "@/utils/zipdownload";
export default {
name: "caExportPreQualification",
data() {
return {
//导出
downLoadingTip: {
tip: "",
downloading: false,
},
tableData: [], //表格数据
// 遮罩层
loading: false,
// 弹出层标题
title: "",
// 总条数
total: 0,
// 原航班规则数据
findAllFltDatList: [],
// 新增修改查看规则弹出层
open: false,
// 查询参数
queryParams: {
limitStart: 0, //当前条数【代表第几条数据 +1开始】
pageNum: 1,
limitSize: 20, //一页显示多少条数据
fltDateStart: undefined, //航班日期开始
fltDateEnd: undefined, //航班日期结束
reExport: false,
//航班号
fltNo: null,
//运单号
waybillNo: "",
//站点
siteName: "",
//ursa
ursa: "",
},
// 表单校验
rules: {},
};
},
created() {},
methods: {
// 导出表格
xlse() {
this.downLoadingTip.downloading = true;
this.downLoadingTip.tip = "正在导出结果集请耐心等待";
let cargoXlse = { title: "航班预审表", cargoExportPreQueryDto: {} };
cargoXlse.cargoExportPreQueryDto = JSON.parse(
JSON.stringify(this.queryParams)
);
cargoXlse.cargoExportPreQueryDto.limitStart = 0;
cargoXlse.cargoExportPreQueryDto.limitSize = -1;
cargoXlsxPre("/cargo/excelPre", cargoXlse)
.then(() => {
this.downLoadingTip.downloading = false;
this.downLoadingTip.tip = "";
this.progress = 100;
})
.catch(() => {
this.downLoadingTip.downloading = false;
this.downLoadingTip.tip = "";
});
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1;
this.queryParams.start = 0;
this.findAllFltData();
},
/** 预审信息查寻*/
findAllFltData() {
this.loading = true;
if (this.queryParams.pageNum > 1) {
this.queryParams.limitStart =
(this.queryParams.pageNum - 1) * this.queryParams.limitSize;
} else {
this.queryParams.limitStart = 0;
}
findCagroPreData(this.queryParams).then((response) => {
if (response.code == 200) {
this.tableData = response.data.list;
this.total = response.data.totalCount;
this.loading = false;
} else {
this.msgError(response.msg);
}
});
},
},
computed: {
fltNo: {
get: function () {
return this.queryParams.fltNo;
},
set: function (val) {
this.queryParams.fltNo = val.toUpperCase();
},
},
siteName: {
get: function () {
return this.queryParams.siteName;
},
set: function (val) {
this.queryParams.siteName = val.toUpperCase();
},
},
ursa: {
get: function () {
return this.queryParams.ursa;
},
set: function (val) {
this.queryParams.ursa = val.toUpperCase();
},
},
},
};
</script>
<style scoped>
.tips {
float: right;
color: #606266;
font-size: 14px;
margin-right: 40px;
}
.formItem {
width: 100%;
max-width: 300px;
}
</style>
<template>
<div style="margin: 20px">
<el-form :inline="true" :model="form" class="demo-form-inline" size="small">
<el-form-item>
<el-upload action="/caPreReviewImport/importFlight" name="file" :http-request="uploadExcel"
:on-remove="handleRemove" :limit="1" :on-exceed="handleExceed" :file-list="fileList" accept=".xlsx"
class="upload-demo">
<el-button type="primary">点击上传</el-button>
</el-upload>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="downloadTempleate">下载模板</el-button>
</el-form-item>
</el-form>
<div style="font-size: 12px; font-weight: 700">
提示:<span style="color: #0000ff">以下为所提交的数据或出错信息</span>
</div>
<el-table ref="filterTable" :data="tableData" style="width: 100%; margin-top: 20px" size="small" border>
<el-table-column label="行号" prop="line" fixed width="50" align="center">
</el-table-column>
<el-table-column label="错误信息" prop="errorMessage" fixed width="300">
<template slot-scope="scope">
<div v-for="(m, key) in scope.row.errorMessage" :key="key">
{{ m }}
</div>
</template>
</el-table-column>
<el-table-column v-if="tableData.length == 0"></el-table-column>
<el-table-column v-if="tableData.length > 0" label="运单号" align="center" prop="A" />
<el-table-column v-if="tableData.length > 0" label="品名描述" align="center" prop="B" />
<el-table-column v-if="tableData.length > 0" label="航班日期" align="center" prop="C" />
<el-table-column v-if="tableData.length > 0" label="航班号" align="center" prop="D" />
<el-table-column v-if="tableData.length > 0" label="预审意见" align="center" prop="E" />
<!-- <el-table-column v-for="(value, key) in this.tableData[0]" :key="key"
v-if="key != 'errorMessage' && key != 'line'" :label="key" :prop="key" width="120"></el-table-column>-->
</el-table>
</div>
</template>
</div>
</template>
<script>
import {
downLoadTemplate,
importcaPreReview,
} from "@/api/caPreReviewImport";
export default {
data() {
return {
flightType: [],
form: {
type: "",
region: "",
},
fileList: [],
tableData: [],
};
},
methods: {
downloadTempleate() {
let fileName = "航班预审导入模板.xlsx";
downLoadTemplate().then((res) => {
if (res) {
const blob = new Blob([res]);
const link = document.createElement("a"); //创建a标签
link.download = fileName; //a标签添加属性
link.style.display = "none";
link.href = URL.createObjectURL(blob);
document.body.appendChild(link);
link.click(); //执行下载
URL.revokeObjectURL(link.href); //释放url
document.body.removeChild(link); //释放标签
} else {
this.$message.error("下载失败");
}
});
},
uploadExcel(option) {
//上传excel
const file = option.file;
console.log(option);
importcaPreReview(file, this.form.type).then((res) => {
if (res.code != 200) {
if (res.code == 603) {
this.$alert(res.msg, "提示", {
confirmButtonText: "确定",
type: "warning",
});
} else {
this.$message.error(res.msg);
this.tableData = res.data;
}
} else {
this.$message.success("导入成功");
this.tableData = res.data;
}
});
},
handleRemove(file, fileList) {
//清掉上传的文件
this.tableData = [];
this.fileList = [];
},
handleExceed(files) {
//重复上传文件
let file = {};
file.file = files[0];
file.name = files[0].name;
this.fileList = [];
this.fileList.push(file);
this.uploadExcel(file);
},
},
created() {
},
};
</script>
<style rel="stylesheet/scss" lang="scss">
.upload-demo {
float: right;
}
.el-upload-list {
display: inline-block;
margin-left: 10px;
vertical-align: top;
}
</style>
......@@ -475,13 +475,11 @@
findFltConditionData() {
findFltConditionDataApi().then(response => {
if (response.code == 200) {
// debugger
//航班种类
this.flightKindlist = response.data.flightKind;
//航班类型
this.flightTypelist = response.data.flightType;
//航班状态
// debugger
this.flightStatuslist = response.data.flightStatus;
} else {
......@@ -659,7 +657,6 @@
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
//debugger
let formdata = JSON.parse(JSON.stringify(this.form));
//高价百分比和低价百分比和不可以大于100
......