jinhui.wang

手动配舱页面更新,样式修改,bug修正

......@@ -35,6 +35,14 @@ export function findCargoAllocationData(data) {
})
}
//手动配舱
export function allocationFlight(data){
return request({
url:'/cargo/allocationFlight',
method:'post',
data:data
})
}
//导出excel
export function downloadExcel(data) {
......
let ductLabels = {
"cargoRulesStatus":{
"1":"自动",
"2":"手动"
}
}
export default ductLabels;
\ No newline at end of file
var en = {
"common": {
"risk": "risk",
"exit": "exit",
"index":"index"
}
}
export default en
var zh = {
"common": {
"risk": "风险",
"exit": "退出",
"index":"首页"
}
}
export default zh
......@@ -12,7 +12,6 @@
:show-header="showHeader"
:height="height"
:highlight-current-row="highlightCurrentRow"
:label-position="labelPosition"
:lazy="lazy"
:downShiftKey="shiftKey"
:limitStart="limitStart"
......@@ -65,6 +64,8 @@
<script>
// import infoTable from "./info.vue";
import Item from "./item.vue";
import dictLabels from "../../assets/languages/dictLabels.js"
import { scrollTo } from '@/utils/scroll-to'
export default {
name: "Table",
components: {
......@@ -103,10 +104,6 @@ export default {
type: Boolean,
default: true,
},
labelPosition: {
type: String,
default: "left",
},
indent: {
type: Number,
default: 16,
......@@ -184,13 +181,11 @@ export default {
// align: "center",
// sorTable: false,
// fixed:false,
// formatter:{}
// },
};
},
created() {
this.newHeader = this.headerData;
this.total = this.data.length;
},
mounted() {
......@@ -198,12 +193,15 @@ export default {
methods: {
nextClick() {
this.$emit('currentChange',{page:this.pageNum + 1,start:this.limitStart + this.limitSize})
scrollTo(0,800);
},
prevClick() {
this.$emit('currentChange',{page:this.pageNum - 1,start:this.limitStart - this.limitSiz})
scrollTo(0,800);
},
currentChange(val) {
this.$emit('currentChange',{page:val,start: val*this.limitSize+1});
scrollTo(0,800);
},
tableSelect(selection, row) {
let end = row.index;
......@@ -253,9 +251,10 @@ export default {
this.$emit("SelectChange", selection);
},
clearTable(){
this.selectTable = []
this.$refs.tables.clearSelection()
},
itemChange(val) {},
// itemChange(val) {},
// checkChange(val) {
// console.log(val);
// },
......@@ -266,6 +265,11 @@ export default {
// console.log(val);
// },
formatter(row, column, cellValue, index) {
if(dictLabels[column.property]){
if(dictLabels[column.property][cellValue]){
return dictLabels[column.property][cellValue];
}
}
return cellValue;
},
},
......
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import ElementLocale from 'element-ui/lib/locale'
import enLocale from 'element-ui/lib/locale/lang/en'
import zhLocale from 'element-ui/lib/locale/lang/zh-CN'
import langZh from "@/assets/languages/zh.js"
import langEN from "@/assets/languages/en.js"
Vue.use(VueI18n)
const i18n = new VueI18n({
locale: 'zh',//默认语言
messages: {
'zh': {...langZh,...zhLocale},
'en': {...langEN,...enLocale}
}
})
ElementLocale.i18n((key, value) => i18n.t(key, value))
export default i18n
......@@ -2,7 +2,7 @@
<div v-if="!item.hidden">
<template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
<app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path)">
<el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
<el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}" style="paddingRight:0">
<item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />
</el-menu-item>
</app-link>
......
......@@ -11,6 +11,7 @@ import App from './App'
import store from './store'
import router from './router'
import permission from './directive/permission'
import i18n from './i18n/index'
import './assets/icons' // icon
import './permission' // permission control
......@@ -48,10 +49,9 @@ Vue.prototype.msgInfo = function (msg) {
// 全局组件挂载
Vue.component('Pagination', Pagination)
Vue.component('RightToolbar', RightToolbar)
Vue.component('Table', Table)
Vue.component('Tables',Table)
Vue.use(permission)
/**
* If you don't want to use mock-server
* you want to use MockJs for mock api
......@@ -73,5 +73,6 @@ new Vue({
el: '#app',
router,
store,
i18n,
render: h => h(App)
})
......
......@@ -3,174 +3,180 @@
* Copyright (c) 2019 FedEx
*/
const baseURL = process.env.VUE_APP_BASE_API
const baseURL = process.env.VUE_APP_BASE_API
// 日期格式化
export function parseTime(time, pattern) {
debugger
if (arguments.length === 0 || !time) {
return null
}
const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
let date
if (typeof time === 'object') {
date = time
} else {
if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
time = parseInt(time)
} else if (typeof time === 'string') {
time = time.replace(new RegExp(/-/gm), '/');
}
if ((typeof time === 'number') && (time.toString().length === 10)) {
time = time * 1000
}
date = new Date(time)
}
const formatObj = {
y: date.getFullYear(),
m: date.getMonth() + 1,
d: date.getDate(),
h: date.getHours(),
i: date.getMinutes(),
s: date.getSeconds(),
a: date.getDay()
}
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
let value = formatObj[key]
// Note: getDay() returns 0 on Sunday
if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }
if (result.length > 0 && value < 10) {
value = '0' + value
}
return value || 0
})
return time_str
}
// 表单重置
export function resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
}
// 添加日期范围
export function addDateRange(params, dateRange, propName) {
var search = params;
search.params = {};
if (null != dateRange && '' != dateRange) {
if (typeof (propName) === "undefined") {
search.params["beginTime"] = dateRange[0];
search.params["endTime"] = dateRange[1];
} else {
search.params["begin" + propName] = dateRange[0];
search.params["end" + propName] = dateRange[1];
}
}
return search;
}
// 回显数据字典
export function selectDictLabel(datas, value) {
var actions = [];
Object.keys(datas).some((key) => {
if (datas[key].dictValue == ('' + value)) {
actions.push(datas[key].dictLabel);
return true;
}
})
return actions.join('');
}
// 回显数据字典(字符串数组)
export function selectDictLabels(datas, value, separator) {
var actions = [];
var currentSeparator = undefined === separator ? "," : separator;
var temp = value.split(currentSeparator);
Object.keys(value.split(currentSeparator)).some((val) => {
Object.keys(datas).some((key) => {
if (datas[key].dictValue == ('' + temp[val])) {
actions.push(datas[key].dictLabel + currentSeparator);
}
})
})
return actions.join('').substring(0, actions.join('').length - 1);
}
// 通用下载方法
export function download(fileName) {
window.location.href = baseURL + "/common/download?fileName=" + encodeURI(fileName) + "&delete=" + true;
}
// 字符串格式化(%s )
export function sprintf(str) {
var args = arguments, flag = true, i = 1;
str = str.replace(/%s/g, function () {
var arg = args[i++];
if (typeof arg === 'undefined') {
flag = false;
return '';
}
return arg;
});
return flag ? str : '';
}
// 转换字符串,undefined,null等转化为""
export function praseStrEmpty(str) {
if (!str || str == "undefined" || str == "null") {
return "";
}
return str;
}
/**
* 构造树型结构数据
* @param {*} data 数据源
* @param {*} id id字段 默认 'id'
* @param {*} parentId 父节点字段 默认 'parentId'
* @param {*} children 孩子节点字段 默认 'children'
*/
export function handleTree(data, id, parentId, children) {
let config = {
id: id || 'id',
parentId: parentId || 'parentId',
childrenList: children || 'children'
};
var childrenListMap = {};
var nodeIds = {};
var tree = [];
for (let d of data) {
let parentId = d[config.parentId];
if (childrenListMap[parentId] == null) {
childrenListMap[parentId] = [];
}
nodeIds[d[config.id]] = d;
childrenListMap[parentId].push(d);
}
for (let d of data) {
let parentId = d[config.parentId];
if (nodeIds[parentId] == null) {
tree.push(d);
}
}
for (let t of tree) {
adaptToChildrenList(t);
}
function adaptToChildrenList(o) {
if (childrenListMap[o[config.id]] !== null) {
o[config.childrenList] = childrenListMap[o[config.id]];
}
if (o[config.childrenList]) {
for (let c of o[config.childrenList]) {
adaptToChildrenList(c);
}
}
}
return tree;
}
// 日期格式化
export function parseTime(time, pattern) {
//debugger
if (arguments.length === 0 || !time) {
return null
}
const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}'
let date
if (typeof time === 'object') {
date = time
} else {
if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) {
time = parseInt(time)
} else if (typeof time === 'string') {
time = time.replace(new RegExp(/-/gm), '/');
}
if ((typeof time === 'number') && (time.toString().length === 10)) {
time = time * 1000
}
date = new Date(time)
}
const formatObj = {
y: date.getFullYear(),
m: date.getMonth() + 1,
d: date.getDate(),
h: date.getHours(),
i: date.getMinutes(),
s: date.getSeconds(),
a: date.getDay()
}
const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
let value = formatObj[key]
// Note: getDay() returns 0 on Sunday
if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] }
if (result.length > 0 && value < 10) {
value = '0' + value
}
return value || 0
})
return time_str
}
// 表单重置
export function resetForm(refName) {
if (this.$refs[refName]) {
this.$refs[refName].resetFields();
}
}
// 添加日期范围
export function addDateRange(params, dateRange, propName) {
var search = params;
search.params = {};
if (null != dateRange && '' != dateRange) {
if (typeof (propName) === "undefined") {
search.params["beginTime"] = dateRange[0];
search.params["endTime"] = dateRange[1];
} else {
search.params["begin" + propName] = dateRange[0];
search.params["end" + propName] = dateRange[1];
}
}
return search;
}
// 回显数据字典
export function selectDictLabel(datas, value) {
var actions = [];
Object.keys(datas).some((key) => {
if (datas[key].dictValue == ('' + value)) {
actions.push(datas[key].dictLabel);
return true;
}
})
return actions.join('');
}
// 回显数据字典(字符串数组)
export function selectDictLabels(datas, value, separator) {
var actions = [];
var currentSeparator = undefined === separator ? "," : separator;
var temp = value.split(currentSeparator);
Object.keys(value.split(currentSeparator)).some((val) => {
Object.keys(datas).some((key) => {
if (datas[key].dictValue == ('' + temp[val])) {
actions.push(datas[key].dictLabel + currentSeparator);
}
})
})
return actions.join('').substring(0, actions.join('').length - 1);
}
// 通用下载方法
export function download(fileName) {
window.location.href = baseURL + "/common/download?fileName=" + encodeURI(fileName) + "&delete=" + true;
}
// 字符串格式化(%s )
export function sprintf(str) {
var args = arguments, flag = true, i = 1;
str = str.replace(/%s/g, function () {
var arg = args[i++];
if (typeof arg === 'undefined') {
flag = false;
return '';
}
return arg;
});
return flag ? str : '';
}
// 转换字符串,undefined,null等转化为""
export function praseStrEmpty(str) {
if (!str || str == "undefined" || str == "null") {
return "";
}
return str;
}
/**
* 构造树型结构数据
* @param {*} data 数据源
* @param {*} id id字段 默认 'id'
* @param {*} parentId 父节点字段 默认 'parentId'
* @param {*} children 孩子节点字段 默认 'children'
*/
export function handleTree(data, id, parentId, children) {
let config = {
id: id || 'id',
parentId: parentId || 'parentId',
childrenList: children || 'children'
};
var childrenListMap = {};
var nodeIds = {};
var tree = [];
for (let d of data) {
let parentId = d[config.parentId];
if (childrenListMap[parentId] == null) {
childrenListMap[parentId] = [];
}
nodeIds[d[config.id]] = d;
childrenListMap[parentId].push(d);
}
for (let d of data) {
let parentId = d[config.parentId];
if (nodeIds[parentId] == null) {
tree.push(d);
}
}
for (let t of tree) {
adaptToChildrenList(t);
}
function adaptToChildrenList(o) {
if (childrenListMap[o[config.id]] !== null) {
o[config.childrenList] = childrenListMap[o[config.id]];
}
if (o[config.childrenList]) {
for (let c of o[config.childrenList]) {
adaptToChildrenList(c);
}
}
}
return tree;
}
//字符串英文转大写,;转英文;
export function upCase(str){
let newStr = str.replace(/;/g,";").toUpperCase();
return newStr;
}
\ No newline at end of file
......
<template>
<div class="cargoAllocation">
<el-form ref="form" class="cargoForm form-header" label-width="auto" label-position="right">
<el-form ref="form" v-model="formData" class="form-header" label-position="right" label-width="auto" size="small">
<el-row type="flex" style="flexWrap: wrap !important">
<el-col :span="6">
<el-form-item label="ACCS原航班日期">
......@@ -10,13 +10,14 @@
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
v-model="fltDate"
:value-format="valueFormat"
>
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="申报类">
<el-form-item label="申报类">
<el-select
placeholder="不限"
v-model="formData.typeId"
......@@ -24,7 +25,7 @@
clearable
>
<el-option
v-for="item in findConditionData.cargoType"
v-for="item in selectData.findConditionData.cargoType"
:label="item.chineseName"
:value="item.id"
:key="item.id"
......@@ -43,7 +44,7 @@
clearable
>
<el-option
v-for="item in findConditionData.cargoCustomsReturnStatus"
v-for="item in selectData.findConditionData.cargoCustomsReturnStatus"
:label="item.chineseName"
:value="item.id"
:key="item.id"
......@@ -61,7 +62,7 @@
clearable
>
<el-option
v-for="item in findConditionData.cargoStatus"
v-for="item in selectData.findConditionData.cargoStatus"
:label="item.chineseName"
:value="item.id"
:key="item.id"
......@@ -70,19 +71,6 @@
</el-select>
</el-form-item>
</el-col>
<!-- <el-col :span="6">
<el-form-item label="是否自动">
<el-select
placeholder="不限"
v-model="formData.allocationTypeId"
class="formItem"
clearable
>
<el-option label="自动" value="2"> </el-option>
<el-option label="手动" value="1"> </el-option>
</el-select>
</el-form-item>
</el-col> -->
<el-col :span="6">
<el-form-item label="航班类型">
<el-select
......@@ -91,7 +79,7 @@
class="formItem"
clearable
>
<el-option v-for="item in fltTypes" :label="item.chineseName" v-model="item.id" :key="item.id"> </el-option>
<el-option v-for="item in selectData.fltTypes" :label="item.chineseName" v-model="item.id" :key="item.id"> </el-option>
</el-select>
</el-form-item>
</el-col>
......@@ -104,7 +92,7 @@
clearable
>
<el-option
v-for="item in findConditionData.cargoServiceType"
v-for="item in selectData.findConditionData.cargoServiceType"
:label="item.chineseName"
:value="item.id"
:key="item.id"
......@@ -114,57 +102,64 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="运单号">
<el-form-item label="ACCS原航班号">
<el-input
type="textarea"
placeholder="xxxx;xxxx"
v-model="formData.waybillNo"
v-model="fltNo"
placeholder="请输入ACCS原航班号"
class="formItem"
clearable
></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="ACCS原航班号">
<el-form-item label="运单号">
<el-input
class="formItem"
type="textarea"
v-model="formData.fltNo"
placeholder="xxxx;xxxx"
placeholder="请输入运单号(回车分割)"
v-model="formData.waybillNo"
rows="1"
></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="URSA">
<el-input
class="formItem"
type="textarea"
placeholder="S_;P_;E2"
v-model="ursa"
rows="1"
></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="站点">
<el-input
class="formItem"
type="textarea"
placeholder="PVG;PEK"
v-model="siteName"
rows="1"
></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="重量区间:">
<el-col :span="11"><el-input-number size="mini" v-model="formData.minWeight" :controls="false" :min="0"></el-input-number></el-col>
<el-form-item label="重量区间">
<el-col :span="11"><el-input-number class="formItem" size="mini" v-model="formData.minWeight" :controls="false"></el-input-number></el-col>
<el-col class="line" :span="2">-</el-col>
<el-col :span="11"><el-input-number size="mini" v-model="formData.maxWeight" :controls="false" :min="0"></el-input-number></el-col>
<el-col :span="11"><el-input-number class="formItem" size="mini" v-model="formData.maxWeight" :controls="false"></el-input-number></el-col>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="件数区间:">
<el-col :span="11"><el-input-number size="mini" v-model="formData.minNumber" :controls="false" :min="0"></el-input-number></el-col>
<el-form-item label="件数区间">
<el-col :span="11"><el-input-number class="formItem" size="mini" v-model="formData.minNumber" :controls="false"></el-input-number></el-col>
<el-col class="line" :span="2">-</el-col>
<el-col :span="11"><el-input-number size="mini" v-model="formData.maxNumber" :controls="false" :min="0"></el-input-number></el-col>
<el-col :span="11"><el-input-number class="formItem" size="mini" v-model="formData.maxNumber" :controls="false"></el-input-number></el-col>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="取件日期:">
<el-form-item label="取件日期">
<el-date-picker
v-model="formData.pickUpDate"
type="date"
......@@ -175,16 +170,18 @@
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="Handling Code:">
<el-checkbox-group v-model="formData.handingCodes">
<el-checkbox v-for="item in HandlingCode" :label="item.chineseName" v-model="item.id" :key="item.id"></el-checkbox>
<el-form-item label="Handling Code">
<el-empty description="暂无数据" v-if="selectData.HandlingCode.length == 0"></el-empty>
<el-checkbox-group v-model="handingCodes" v-else>
<el-checkbox v-for="item in selectData.HandlingCode" :label="item.chineseName" v-model="item.englishName" :key="item.id"></el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="Sub Category:">
<el-checkbox-group v-model="formData.subCategorys">
<el-checkbox v-for="item in SubCategory" :label="item.chineseName" v-model="item.id" :key="item.id"></el-checkbox>
<el-form-item label="Sub Category">
<el-empty description="暂无数据" v-if="selectData.SubCategory.length == 0"></el-empty>
<el-checkbox-group v-model="subCategorys" v-else>
<el-checkbox v-for="item in selectData.SubCategory" :label="item.chineseName" v-model="item.englishName" :key="item.id"></el-checkbox>
</el-checkbox-group>
</el-form-item>
</el-col>
......@@ -227,19 +224,20 @@
</div>
</div>
</el-form>
<Table
<Tables
ref="newTables"
:data="tableData"
:headerData="tableHeader"
:totalCount="totalCount"
:loading="loading"
:limitSize="formData.limitSize"
:limitSize="size"
:limitStart="formData.limitStart"
:shiftKey="shiftKey"
height="350"
height="450"
@tableSelect="tableSelect"
@tableSelectAll="tableSelectAll"
@currentChange="currentChange"
></Table>
></Tables>
<Dialog
:tableData="tableSelection"
:dialogVisible="dialogVisible"
......@@ -250,10 +248,11 @@
<script>
import Dialog from "./info.vue";
import { findConditionData, findCargoData } from "@/api/cargoSelect";
import { findConditionData, findCargoAllocationData } from "@/api/cargoSelect";
import { allDictData } from "@/api/destinationFlight";
import { findFltConditionDataApi } from "@/api/findAllFltData";
import { cargoXlsx } from "@/utils/zipdownload";
import { downLoadXlsx } from "@/utils/zipdownload";
import { upCase } from "@/utils/FedEx"
export default {
components: {
......@@ -262,12 +261,23 @@ export default {
data() {
return {
formData: {
// allocationTypeId: "1",
handingCodes:[],
subCategorys:[],
page:1,
limitStart: 0,
limitSize: 50,
fltDateStart:null,
fltDateEnd:null,
typeId:null,
statusId:null,
kindToAllocFlightId:null,
serviceTypeId:null,
waybillNo:null,
fltNo:null,
ursaList:null,
siteNameList:null,
minWeight:null,
maxWeight:null,
minNumber:null,
maxNumber:null,
pickUpDate:null,
handingCodes:null,
subCategorys:null,
}, //查询数据
tableHeader: [
{
......@@ -278,6 +288,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:true,
},
{
type: "index",
......@@ -287,6 +298,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -296,6 +308,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -305,6 +318,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -314,6 +328,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -323,6 +338,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -332,6 +348,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -341,6 +358,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -350,6 +368,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -359,6 +378,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -368,6 +388,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -377,6 +398,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -386,6 +408,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -395,6 +418,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -404,6 +428,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -413,6 +438,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -422,6 +448,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -431,6 +458,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -440,6 +468,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -449,6 +478,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -458,6 +488,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -467,6 +498,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -476,6 +508,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -485,6 +518,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -494,6 +528,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -503,6 +538,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -512,6 +548,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -521,6 +558,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -530,6 +568,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -539,6 +578,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -548,6 +588,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -557,6 +598,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -566,6 +608,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -575,6 +618,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -584,6 +628,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -593,6 +638,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -602,6 +648,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -611,6 +658,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -620,6 +668,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -629,6 +678,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -638,6 +688,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -647,6 +698,7 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
{
type: "",
......@@ -656,16 +708,26 @@ export default {
align: "center",
sorTable: false,
slot: null,
fixed:false,
},
], //表头数据
tableData: [], //表格数据
tableSelection: [], //选中数据
findConditionData: [],
fltTypes:[],
HandlingCode: [],
SubCategory: [],
selectData:{
findConditionData: [],
fltTypes:[],
HandlingCode: [],
SubCategory: [],
},//查询条件
fltDate:[],
ursaList:'',
siteNameList:'',
handingCodes:[],
subCategorys:[],
valueFormat: "yyyy-MM-dd",
totalCount: 0,
page:1,
size:100,
allWeight: 0,
allQty: 0,
dialogVisible: false,
......@@ -673,48 +735,54 @@ export default {
createDate: null,
loading: false,
downLoadingTip:{
tip:"正在导出本页结果集",
tip:"",
downloading: false,
},
};
},
created() {
//查询条件
new Promise((resolve,reject)=>{
findFltConditionDataApi().then(res=>{
allDictData().then(res=>{
if(res.code === 200){
this.fltTypes = res.data.flightType
this.selectData.SubCategory = res.data.subCategory;
this.selectData.HandlingCode = res.data.handlingCode;
}else{
reject(res.msg)
this.$message({
message: "查询条件不存在",
type: "warning",
});
}
}).catch(()=>{})
})
allDictData().then(res=>{
findFltConditionDataApi().then(res=>{
if(res.code === 200){
this.HandlingCode = res.data.handlingCode;
this.SubCategory = res.data.subCategory;
this.selectData.fltTypes = res.data.flightType
}else{
reject(res.msg)
this.$message({
message: "查询条件不存在",
type: "warning",
});
}
}).catch(()=>{})
})
findConditionData().then((res) => {
if (res.code == 200) {
this.findConditionData = res.data;
this.selectData.findConditionData = res.data;
} else {
reject(res.msg)
this.$message({
message: "查询条件不存在",
type: "warning",
});
}
}).catch(()=>{});
}).catch(err=>{
this.$message({
message: "查询条件不存在",
type: "warning",
});
})
// this.select();
})
this.select();
},
mounted(){
// this.selectData.HandlingCode.forEach((item,index)=>{
// if(item.id === 108093){
// this.selectData.HandlingCode.unshift(this.HandlingCode.splice(index,1)[0])
// }
// })
window.addEventListener("keydown", (code) => {
if (code.keyCode === 16 && code.shiftKey) {
this.shiftKey = true;
......@@ -729,13 +797,14 @@ export default {
methods: {
select() {
this.loading = true;
findCargoData(this.formData)
this.dataInfo()
findCargoAllocationData(this.formData)
.then((res) => {
this.loading = false;
if (res.code === 200) {
this.tableData = res.data.list;
if (res.data.list.length > 0) {
this.tableData = res.data.list;
this.totalCount = res.data.totalCount;
this.totalCount = res.data.total;
this.tableData.forEach((item,index = 0)=>{
item.index = index
})
......@@ -768,7 +837,68 @@ export default {
this.allQty = this.allQty.toFixed();
}
},
xlse(val) {},
dataInfo(){
this.formData.ursaList = null;
this.formData.siteNameList = null;
this.formData.handingCodes = null;
this.formData.subCategorys = null;
if(this.handingCodes.length > 0 ){
this.formData.handingCodes = this.handingCodes;
}
if(this.subCategorys.length > 0){
this.formData.subCategorys = this.subCategorys;
}
if(this.formData.minWeight === 0){
this.formData.minWeight = null;
}
if(this.formData.maxWeight === 0){
this.formData.maxWeight = null;
}
if(this.formData.minNumber === 0){
this.formData.minNumber = null;
}
if(this.formData.maxNumber === 0){
this.formData.maxNumber = null;
}
if(this.ursaList && this.ursaList != ''){
this.formData.ursaList = this.ursaList.split(';' || '')
}
if(this.siteNameList && this.siteNameList != ''){
this.formData.siteNameList = this.siteNameList.split(';' || '')
}
if(this.fltDate && this.fltDate.length > 0){
this.formData.fltDateStart = this.fltDate[0];
this.formData.fltDateEnd = this.fltDate[1];
}else{
this.formData.fltDateStart = null;
this.formData.fltDateEnd = null;
}
this.formData.page = this.page;
this.formData.size = this.size;
},
xlse(val) {
this.downLoadingTip.downloading = true;
this.dataInfo()
if(val === 0){
this.downLoadingTip.tip = '正在导出本页结果集';
downLoadXlsx('/cargo/allocationExcel',this.formData,'手动配舱表').then(res=>{
this.downLoadingTip.downloading = false;
}).catch(err=>{
this.downLoadingTip.downloading = false;
console.log(err)
})
}else{
this.downLoadingTip.tip = '正在导出全部结果集请耐心等待';
this.formData.page = null;
this.formData.size = null;
downLoadXlsx('/cargo/allocationExcel',this.formData,'手动配舱表').then(res=>{
this.downLoadingTip.downloading = false;
}).catch(err=>{
this.downLoadingTip.downloading = false;
console.log(err)
})
}
},
tableSelect(val) {
this.tableSelection = val.selection
this.cargoTotal()
......@@ -779,38 +909,68 @@ export default {
},
currentChange(val){
this.formData.limitStart = val.start;
this.formData.page = val.page;
this.page = val.page;
this.select()
},
addFit() {
this.dialogVisible = true;
let open = true;
this.tableSelection.forEach(item=>{
if(item.statusId != 107966){
open = false;
}
})
if(open){
this.dialogVisible = open;
}else{
this.$message({
message: "此类型货物不可配舱",
type: "warning",
});
this.tableSelection = [];
this.cargoTotal();
this.$refs.newTables.clearTable();
}
},
dialogBeforeClose(val) {
this.dialogVisible = val;
this.dialogVisible = val.close;
if(val.reload){
this.tableSelection = [];
this.$refs.newTables.clearTable();
this.cargoTotal();
this.select();
}
},
},
computed: {
fltNo: {
get: function () {
return this.formData.fltNo;
},
set: function (val) {
this.formData.fltNo = upCase(val);
},
},
ursa: {
get: function () {
return this.formData.ursaList;
return this.ursaList;
},
set: function (val) {
this.formData.ursaList = val.toUpperCase();
this.ursaList = upCase(val);
},
},
siteName: {
get: function () {
return this.formData.siteNameList;
return this.siteNameList;
},
set: function (val) {
this.formData.siteNameList = val.toUpperCase();
this.siteNameList = upCase(val);
},
},
},
};
</script>
<style>
<style lang="scss">
.tips {
display: inline-block;
color: #606266;
......@@ -821,4 +981,17 @@ export default {
.line{
text-align: center;
}
.el-empty{
width:30%;
height:37px;
padding:0px;
line-height: 37px;
.el-empty__image{
width: 0px;
height:0px;
}
.el-empty__description{
margin-top:0px;
}
}
</style>
\ No newline at end of file
......
......@@ -15,6 +15,7 @@
max-height="200"
border
stripe
highlight-current-row
style="width: 100%"
>
<el-table-column type="index" label="序号" align="center">
......@@ -30,35 +31,13 @@
>
</el-table-column>
</el-table>
<el-divider content-position="left">可配置航班信息</el-divider>
<el-table
:data="fltData"
size="mini"
height="200"
max-height="200"
border
stripe
style="width: 100%"
>
<el-table-column type="index" label="序号" align="center">
</el-table-column>
<el-table-column
v-for="(item, index) in fltHeader"
header-align="center"
align="center"
:prop="item.value"
:label="item.name"
:key="index"
:show-overflow-tooltip="true"
>
</el-table-column>
</el-table>
<el-form
ref="form"
label-position="right"
label-width="auto"
style="width: 400px; margin: 30px auto"
>
<el-form-item label="航班号">
<el-form-item label="航班号" prop="fltNo">
<el-input
v-model="fltNo"
size="medium"
......@@ -66,7 +45,7 @@
style="width: 350px"
></el-input>
</el-form-item>
<el-form-item label="航班日期:">
<el-form-item label="航班日期:" prop="fltDate">
<el-date-picker
v-model="formData.fltDate"
type="date"
......@@ -87,7 +66,7 @@
</template>
<script>
import { findAllFltDataApi } from "@/api/findAllFltData";
import { allocationFlight } from "@/api/cargoSelect";
export default {
props: {
dialogVisible: {
......@@ -101,17 +80,11 @@ export default {
},
data() {
return {
formData: { fltNo: "" },
fltSelect:{
limitStart: 0, //当前条数【代表第几条数据 +1开始】
pageNum: 1,
limitSize: -1, //一页显示多少条数据
fltDateStart: undefined, //航班日期开始
fltDateEnd: undefined, //航班日期结束
typeId: undefined, //航班类型
statusId: '83937', //航班状态
flightKindId: undefined, //航班种类
fltNo: undefined //航班号,要大写
formData: {
ids:[],
fltNo: undefined,
fltDate:undefined,
overweight:false
},
cargoHeader: [
{ name: "口岸代码", value: "portName" },
......@@ -141,19 +114,82 @@ export default {
{ name: "创建人", value: "createUserName" },
{ name: "创建时间", value: "createTime" },
],
fltData: [],
rules:{
fltNo: [{
required: true,
message: "航班号不能为空",
trigger: "blur"
}],
fltDate: [{
required: true,
message: "航班日期不能为空",
trigger: "change"
}],
}
};
},
methods: {
//确定配舱
submit() {
this.$emit("dialogBeforeClose", false);
let arr = [];
this.tableData.forEach(item => {
arr.push(item.id)
});
this.formData.ids = arr;
if(this.formData.fltNo && this.formData.fltDate){
allocationFlight(this.formData).then(res=>{//code 200 配舱成功 601 重量已满需要确认 其余code直接输出msg
if(code === 200){
this.$message({
message: "货物配舱成功",
type: "success",
});
}else if(code === 601){
this.$confirm('航班配重已满,是否继续配舱?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.formData.overweight = true;//确定继续overweight变为true再次请求接口
allocationFlight(this.formData).then(res=>{
if(code === 200){
this.$message({
message: "货物配舱成功",
type: "success",
});
this.$emit("dialogBeforeClose", {close:false,reload:false});
}else{
this.$message({
message: res.msg,
type: "warning",
});
}
})
}).catch(() => {//取消 取消当前配舱
this.$message({
message: "配舱已取消",
type: "success",
});
this.$emit("dialogBeforeClose", {close:false,reload:false});
});
}else{
this.$message({
message: res.msg,
type: "warning",
});
}
this.$emit("dialogBeforeClose", {close:false,reload:true});
})
}else{
this.$message({
message: "航班号或航班日期不能为空",
type: "warning",
});
}
},
dialogBeforeClose() {
this.$emit("dialogBeforeClose", false);
this.$emit("dialogBeforeClose", {close:false,reload:false});
},
},
watch:{
},
computed: {
fltNo: {
get: function () {
......
......@@ -4,9 +4,9 @@
<template v-else>
<el-form ref="form" :model="form" label-width="200px" size="small" :disabled="disable" :rules="rules">
<el-row :gutter="20">
<el-col :span="8">
<el-col :span="12">
<el-form-item label="航班号" prop="purposeOfFlightNo">
<el-input v-model.trim="form.purposeOfFlightNo" style="width: 30%" :disabled="nameDisabled"></el-input>
<el-input v-model.trim="form.purposeOfFlightNo" style="width: 60%" :disabled="nameDisabled"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
......@@ -100,8 +100,12 @@
<el-form-item label="申报类别">
<el-card shadow="never" style="width: 70%">
<el-checkbox-group v-model="form.typeOfGoods">
<el-checkbox v-for="item in cargoType" :key="item.id" :label="item.chineseName" :name="item.chineseName">
</el-checkbox>
<el-row>
<el-col :span="2" v-for="item in cargoType" :key="item.id">
<el-checkbox :label="item.chineseName" :name="item.chineseName">
</el-checkbox>
</el-col>
</el-row>
</el-checkbox-group>
</el-card>
</el-form-item>
......@@ -109,8 +113,11 @@
<el-form-item label="货物类型">
<el-card shadow="never" style="width: 70%">
<el-checkbox-group v-model="form.declarationCategory">
<el-checkbox v-for="item in cargoStatus" :key="item.id" :label="item.chineseName" :name="item.chineseName"
disabled></el-checkbox>
<el-row>
<el-col :span="3" v-for="item in cargoStatus" :key="item.id">
<el-checkbox :label="item.chineseName" :name="item.chineseName" disabled></el-checkbox>
</el-col>
</el-row>
</el-checkbox-group>
</el-card>
</el-form-item>
......@@ -118,8 +125,11 @@
<el-form-item label="Service Code">
<el-card shadow="never" style="width: 70%">
<el-checkbox-group v-model="form.serviceCode">
<el-checkbox v-for="item in serviceCode" :key="item.id" :label="item.englishName"
:name="item.englishName"></el-checkbox>
<el-row>
<el-col :span="2" v-for="item in serviceCode" :key="item.id">
<el-checkbox :label="item.englishName" :name="item.englishName"></el-checkbox>
</el-col>
</el-row>
</el-checkbox-group>
</el-card>
</el-form-item>
......@@ -127,8 +137,11 @@
<el-form-item label="Handling Code">
<el-card shadow="never" style="width: 70%">
<el-checkbox-group v-model="form.handlingCode">
<el-checkbox v-for="item in handlingCode" :key="item.id" :label="item.englishName"
:name="item.englishName"></el-checkbox>
<el-row>
<el-col :span="3" v-for="item in handlingCode" :key="item.id">
<el-checkbox :label="item.englishName" :name="item.englishName"></el-checkbox>
</el-col>
</el-row>
</el-checkbox-group>
</el-card>
</el-form-item>
......@@ -136,22 +149,27 @@
<el-form-item label="Sub Category">
<el-card shadow="never" style="width: 70%">
<el-checkbox-group v-model="form.subCategory">
<el-checkbox v-for="item in subCategory" :key="item.id" :label="item.englishName"
:name="item.englishName"></el-checkbox>
<el-row>
<el-col :span="3" v-for="item in subCategory" :key="item.id">
<el-checkbox :label="item.englishName" :name="item.englishName"></el-checkbox>
</el-col>
</el-row>
</el-checkbox-group>
</el-card>
</el-form-item>
<el-form-item>
</el-form-item>
</el-form>
<el-row style="margin-left: 200px">
<div style="marginLeft:200px">
<el-button type="primary" size="small" v-if="$route.params.handle != 'detail'" @click="submit('form')"
:loading="btnLoading">
<span v-if="$route.params.handle === 'add'">添加</span>
<span v-else>保存</span>
</el-button>
<el-button size="small" @click="close">取消</el-button>
</el-row>
:loading="btnLoading">
<span v-if="$route.params.handle === 'add'">添加</span>
<span v-else>保存</span>
</el-button>
<el-button size="small" @click="close">取消</el-button>
</div>
</template>
</div>
</template>
......
......@@ -232,7 +232,8 @@
<el-button :type="downLoadingTip.downloading?'warning':'primary'" size="small" @click="xlse(1)" :disabled="tableData.length==0" :loading="downLoadingTip.downloading"
>{{downLoadingTip.downloading?downLoadingTip.tip:"导出全部查询结果"}}</el-button
>
<el-progress class="progress" :stroke-width="12" :show-text="true" :percentage="progress" :status="progress == 100?'success':'warning'"></el-progress>
<span style="marginLeft:20px;color:#ffba00">全部导出上限80000条数据</span>
<el-progress v-if="progress!=0" class="progress" :stroke-width="12" :show-text="true" :percentage="progress" :status="progress == 100?'success':'warning'"></el-progress>
<div class="tips">
<span style="paddingRight: 50px">总重量:{{ allWeight }}</span>
<span>总件数:{{ allQty }}</span>
......@@ -283,6 +284,7 @@
<script>
import { findConditionData, findCargoData } from "@/api/cargoSelect";
import { downLoadXlsx } from "@/utils/zipdownload";
import { upCase } from "@/utils/FedEx"
export default {
name:"queryCargo",
......@@ -574,7 +576,7 @@ export default {
},
// 导出表格
xlse(page) {
this.progress = 0;
this.progress = 1;
this.downLoadingTip.downloading = true;
let cargoXlse = {title:"货物导出表",cargoConditionDto:{}};
if(this.formData.customsReceiptStatusId != null && this.formData.customsReceiptStatusId.length < 1){
......@@ -662,8 +664,7 @@ export default {
return this.formData.fltNo;
},
set: function (val) {
val = val.replace(/;/g,";");
this.formData.fltNo = val.toUpperCase();
this.formData.fltNo = upCase(val);
},
},
siteName: {
......@@ -671,8 +672,7 @@ export default {
return this.formData.siteName;
},
set: function (val) {
val = val.replace(/;/g,";");
this.formData.siteName = val.toUpperCase();
this.formData.siteName = upCase(val);
},
},
ursa: {
......@@ -680,8 +680,7 @@ export default {
return this.formData.ursa;
},
set: function (val) {
val = val.replace(/;/g,";");
this.formData.ursa = val.toUpperCase();
this.formData.ursa = upCase(val);
},
},
cargoPlaneNo:{
......@@ -689,8 +688,7 @@ export default {
return this.formData.cargoPlaneNo;
},
set: function (val) {
val = val.replace(/;/g,";");
this.formData.cargoPlaneNo = val.toUpperCase();
this.formData.cargoPlaneNo = upCase(val);
},
}
},
......