jinhui.wang

增加航线字典,手动配舱增加到航线,航班信息维护航线完善

......@@ -42,11 +42,11 @@ export function findCargoAllocationData(data) {
}
//手动配舱
export function allocationFlight(data){
export function allocationFlight(data) {
return request({
url:'/cargo/allocationFlight',
method:'post',
data:data
url: '/cargo/allocationFlight',
method: 'post',
data: data
})
}
......@@ -67,4 +67,42 @@ export function releaseCargo(data) {
method: 'post',
data: data,
})
}
\ No newline at end of file
}
//航班号+日期查询航线(手动配舱)
/**
* @param fltDate * 航班日期
* @param fltNo * 航班号
*/
export function findFlightRoute(data) {
return request({
url: '/cargo/findFlightRoute',
method: 'post',
data: data
})
}
//航班号+日期查询ACCS航线(手动配舱查询项)
/**
* @param fltDateAccs 航班日期
* @param fltNoAccs 航班号
*/
export function getAccsRoute(data) {
return request({
url: '/dmDataLog/getAccsRoute',
method: 'post',
data: data
})
}
//航班号+日期查询ACCS航线(货物查询查询项)
/**
* @param fltNoAccs 航班号 list
*/
export function getFlightsRoutes(data) {
return request({
url: '/dictionary/getFlightsRoutes',
method: 'post',
data: data
})
}
......
......@@ -129,7 +129,7 @@ export function addFlight(data) {
})
}
//虚拟航班新增
//虚拟航班删除
/**
* @param flightNo 航班名称 list *
*/
......@@ -139,4 +139,68 @@ export function delFlight(data) {
method: 'post',
data: data
})
}
//查询航线
/**
* @param fltNo 航班号
* @param page 页数
* @param size 页长
*/
export function queryRoute(data) {
return request({
url: '/dictionary/queryRoute',
method: 'post',
data: data
})
}
//新增航线
/**
* @param fltNo 航班号 *
* @param route 航线 *
*/
export function addRoute(data) {
return request({
url: '/dictionary/addRoute',
method: 'post',
data: data
})
}
//删除航线
/**
* @param id *
*/
export function delRoute(data) {
return request({
url: '/dictionary/delRoute',
method: 'post',
data: data
})
}
//航线排序
/**
* @param id *
*/
export function orderRoute(data) {
return request({
url: '/dictionary/orderRoute',
method: 'post',
data: data
})
}
//航线删除确认
/**
* @param fltNo 航班号
* @param route 航线
*/
export function checkFlightRoute(data) {
return request({
url: '/FlightPreserveController/checkFlightRoute',
method: 'post',
data: data
})
}
\ No newline at end of file
......
......@@ -13,25 +13,25 @@ let tableHeaders = {
status: 1
},
{
columnChineseName: "总重量(KG)",
columnName: "totalWeight",
columnChineseName: "航线",
columnName: "route",
columnWidth: "",
status: 1
},
{
columnChineseName: "已配重量(KG)",
columnName: "allocationWeight",
columnChineseName: "重量(KG)",
columnName: "totalWeight",
columnWidth: "",
status: 1
},
{
columnChineseName: "总体积(cm³)",
columnName: "totalVolumn",
columnChineseName: "已配重量(KG)",
columnName: "allocationWeight",
columnWidth: "",
status: 1
},
{
columnChineseName: "已配体积(cm³)",
columnChineseName: "已配体积(m³)",
columnName: "allocationVolumn",
columnWidth: "",
status: 1
......@@ -173,6 +173,13 @@ let tableHeaders = {
status: 1
},
{
columnChineseName: "体积",
columnName: "volume",
columnWidth: "100",
ext1: "sorTable",
status: 1
},
{
columnChineseName: "收件人国家代码",
columnName: "consigneeCountry",
columnWidth: "150",
......@@ -406,6 +413,12 @@ let tableHeaders = {
status: 1
},
{
columnChineseName: "航线",
columnName: "router",
columnWidth: "140",
status: 1
},
{
columnChineseName: "ACCS原航班日期",
columnName: "accsFlightDate",
columnWidth: "140",
......@@ -420,7 +433,7 @@ let tableHeaders = {
{
columnChineseName: "货物状态",
columnName: "cargoStatus",
columnWidth: "80",
columnWidth: "100",
status: 1
},
{
......@@ -458,18 +471,6 @@ let tableHeaders = {
status: 1
},
{
columnChineseName: "航班起飞时间",
columnName: "takeOffTime",
columnWidth: "120",
status: 1
},
{
columnChineseName: "Pre-MDE CutOff时间",
columnName: "cutOffTime",
columnWidth: "150",
status: 1
},
{
columnChineseName: "航班号",
columnName: "fltNo",
columnWidth: "100",
......@@ -524,13 +525,7 @@ let tableHeaders = {
status: 1
},
{
columnChineseName: "总体积(cm³)",
columnName: "totalVolume",
columnWidth: "100",
status: 1
},
{
columnChineseName: "已配体积(cm³)",
columnChineseName: "已配体积(m³)",
columnName: "alloctedVolume",
columnWidth: "120",
status: 1
......@@ -974,25 +969,37 @@ let tableHeaders = {
{
columnChineseName: "航班号",
columnName: "purposeOfFlightNo",
columnWidth: "100",
status: 1
},
{
columnChineseName: "航班日期",
columnName: "ruleDate",
columnWidth: "150",
status: 1
},
{
columnChineseName: "航线优先级",
columnName: "flightRoute",
columnWidth: "",
status: 1
},
{
columnChineseName: "状态",
columnName: "status",
columnWidth: "",
columnWidth: "100",
status: 1
},
{
columnChineseName: "操作人",
columnName: "createUserName",
columnWidth: "",
columnName: "updateUserName",
columnWidth: "100",
status: 1
},
{
columnChineseName: "更新时间",
columnName: "createTime",
columnWidth: "",
columnName: "updateTime",
columnWidth: "150",
status: 1
},
],
......@@ -1127,6 +1134,12 @@ let tableHeaders = {
status: 1
},
{
columnChineseName: "当前配载航线",
columnName: "flightRoute",
columnWidth: "130",
status: 1
},
{
columnChineseName: "ACCS原航班号",
columnName: "dmFlightNbr",
columnWidth: "120",
......@@ -1247,6 +1260,12 @@ let tableHeaders = {
status: 1
},
{
columnChineseName: "航线",
columnName: "flightRoute",
columnWidth: "",
status: 1
},
{
columnChineseName: "申报类别",
columnName: "declarationCategory",
columnWidth: "100",
......@@ -1350,7 +1369,22 @@ let tableHeaders = {
columnWidth: "",
status: 1
},
]
],
"fltRoute": [
{
columnChineseName: "航班名称",
columnName: "fltNo",
columnWidth: "",
ext1: "slot",
status: 1
},
{
columnChineseName: "航线",
columnName: "route",
columnWidth: "",
status: 1
},
],
}
export default tableHeaders;
\ No newline at end of file
......
......@@ -292,4 +292,8 @@ body {
.el-select-dropdown {
max-width: 300px;
}
.el-select-dropdown__wrap {
max-height: 350px !important;
}
\ No newline at end of file
......
<template>
<!-- 拖拽交换位置效果 -->
<transition-group tag="div" class="container">
<div class="item" v-for="(item, index) in list" :key="index" draggable="true"
@dragstart="handleDragStart($event, item)" @dragover.prevent="handleDragOver($event, item)"
@dragenter="handleDragEnter($event, item)" @dragend="handleDragEnd($event, item)">
<svg-icon v-if="!disabled" icon-class="drag-text" class="el-input__icon input-icon" style="color:#bfbfbf" />
<span>{{ item.route }}</span>
</div>
</transition-group>
</template>
<script>
// draggable 属性规定元素是否可拖动
// dragstart 事件在用户开始拖动元素或选择的文本时触发
// dragover 当某被拖动的对象在另一对象容器范围内拖动时触发此事件
// dragenter - 当被鼠标拖动的对象进入其容器范围内时触发此事件
// dragend - 用户完成元素拖动后触发
export default {
name: 'Toolbar',
props: {
data: {
type: Array,
default: null
},
disabled: {
type: Boolean,
default: false
}
},
data() {
return {
list: [],
dragging: null
}
},
created() {
this.list = this.data
},
watch: {
data(val) {
if (val) {
this.list = this.data
}
}
},
methods: {
handleDragStart(e, item) {
this.disabled ? '' : this.dragging = item;
},
handleDragEnd(e, item) {
this.disabled ? '' : this.dragging = null
},
//首先把div变成可以放置的元素,即重写dragenter/dragover
// DataTransfer 对象用来保存,通过拖放动作,拖动到浏览器的数据。
// 如果dropEffect 属性设定为none,则不允许被拖放到目标元素中。
handleDragOver(e) {
this.disabled ? '' : e.dataTransfer.dropEffect = 'move'// e.dataTransfer.dropEffect="move";//在dragenter中针对放置目标来设置!
},
handleDragEnter(e, item) {
if (!this.disabled) {
e.dataTransfer.effectAllowed = "move"//为需要移动的元素设置dragstart事件
if (item === this.dragging) {
return
}
const newItems = [...this.list]
const src = newItems.indexOf(this.dragging)
const dst = newItems.indexOf(item)
// 替换
newItems.splice(dst, 0, ...newItems.splice(src, 1))
// 让item的颜色等于新交换的颜色
this.list = newItems
this.$emit('drag', newItems)
}
}
}
}
</script>
<style lang="scss" scoped>
.container {
max-width: 350px;
min-height: 32px;
max-height: 150px;
overflow-y: scroll;
display: flex;
flex-direction: column;
padding: 0;
border: 1px solid #ccc;
&::-webkit-scrollbar {
width: 7px;
height: 7px;
}
&::-webkit-scrollbar-track {
background-color: #fff;
}
&::-webkit-scrollbar-thumb {
background-color: #ccc;
border-radius: 20px;
}
&::-webkit-scrollbar-thumb:hover {
background-color: #409eff;
}
&::-webkit-scrollbar-track-piece {
background: #F2F6FC;
}
}
.item {
overflow-x: hidden;
white-space: nowrap;
text-overflow: ellipsis;
/* border-bottom: 1px solid #ccc; */
cursor: move;
transition: all linear .3s
}
.item:hover {
background-color: #c6e2ff;
}
</style>
\ No newline at end of file
......@@ -11,10 +11,11 @@ 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
import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, download, handleTree, upCase, nowDate } from "@/utils/FedEx";
import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, download, handleTree, upCase, nowDate, getRoute } from "@/utils/FedEx";
import { isArray } from "@/utils/validate";
import Pagination from "@/components/Pagination";
// 自定义表格工具扩展
......@@ -22,8 +23,9 @@ import RightToolbar from "@/components/RightToolbar"
import Table from "@/components/Table"
import Tooltip from "@/components/Tooltip"
import HeaderSetting from "@/components/HeaderSetting"
import Drag from "@/components/Drag"
import tableHeaders from '@/assets/languages/tableHeaders'
import dictLabels from "@/assets/languages/dictLabels.js";
import dictLabels from "@/assets/languages/dictLabels.js"
import settings from './settings.js'
// 全局方法挂载
......@@ -36,6 +38,7 @@ Vue.prototype.download = download
Vue.prototype.handleTree = handleTree
Vue.prototype.upCase = upCase
Vue.prototype.nowDate = nowDate
Vue.prototype.getRoute = getRoute
Vue.prototype.isArray = isArray
Vue.prototype.tableHeaders = tableHeaders
Vue.prototype.dictLabels = dictLabels
......@@ -63,6 +66,7 @@ Vue.component('RightToolbar', RightToolbar)
Vue.component('Tables', Table)
Vue.component('Tooltips', Tooltip)
Vue.component('HeaderSetting', HeaderSetting)
Vue.component('Drag', Drag)
Vue.use(permission)
/**
......@@ -92,5 +96,6 @@ new Vue({
el: '#app',
router,
store,
i18n,
render: h => h(App)
})
......
......@@ -58,5 +58,5 @@ module.exports = {
/**
* 版本号
*/
version: 'version:1.5.0'
version: 'version:1.6.0'
}
......
......@@ -2,187 +2,202 @@
* 通用js方法封装处理
* Copyright (c) 2019 FedEx
*/
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 upCase(str) {
let newStr = str.replace(/;/g, ";").toUpperCase().trim();
return newStr;
}
//当前日期
export function nowDate() {
let date = new Date()
return `${date.getFullYear()}-${(date.getMonth() + 1) > 9 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)}-${(date.getDate()) > 9 ? date.getDate() : '0' + (date.getDate())}`
}
\ No newline at end of file
import { queryRoute } from '@/api/system/dictionary.js'
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 upCase(str) {
let newStr = str.replace(/;/g, ";").toUpperCase().trim();
return newStr;
}
//当前日期
export function nowDate() {
let date = new Date()
return `${date.getFullYear()}-${(date.getMonth() + 1) > 9 ? (date.getMonth() + 1) : '0' + (date.getMonth() + 1)}-${(date.getDate()) > 9 ? date.getDate() : '0' + (date.getDate())}`
}
//获取航线
export function getRoute(val) {
return queryRoute({ fltNo: val }).then(res => {
if (res.code === 200) {
return res.data
} else {
return res.msg
}
}).catch(err => {
console.log(err)
})
}
\ No newline at end of file
......
<template>
<div class="cargoAllocation">
<el-form ref="form" v-model="formData" class="form-header" label-position="right" label-width="auto" size="small">
<el-form ref="form" v-model="formData" class="form-header" label-position="right" label-width="auto" size="small"
@submit.native.prevent>
<el-row type="flex" style="flexWrap: wrap !important">
<el-col :span="6">
<el-form-item label="ACCS原航班日期">
......@@ -11,7 +12,8 @@
</el-col>
<el-col :span="6">
<el-form-item label="ACCS原航班号">
<el-input v-model="fltNo" placeholder="请输入ACCS原航班号" class="formItem" clearable></el-input>
<el-input v-model="fltNo" placeholder="请输入ACCS原航班号" class="formItem" clearable @change="fltNoChange">
</el-input>
</el-form-item>
</el-col>
<el-col :span="6">
......@@ -116,6 +118,23 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item>
<template slot="label">
<div style="display:inline-block">ACCS航线
<el-tooltip class="item" effect="dark" content="选择航线需要先输入航班号,才能选择对应得航线" placement="top-start">
<span class="el-icon-warning" style="color:#1890ff;font-size:16px"></span>
</el-tooltip>
</div>
</template>
<el-select class="formItem" v-model="formData.route" placeholder="不限" :disabled="routeList.length == 0"
clearable>
<el-option v-for="item in routeList" :label="item" :value="item" :key="item">
<Tooltips :content="item" :refName="item"></Tooltips>
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="运单号">
<el-input class="formItem" type="textarea" :rows="4" placeholder="请输入运单号(回车分割)" :maxlength="12000"
v-model="formData.waybillNo" clearable></el-input>
......@@ -187,7 +206,7 @@
<script>
import Dialog from "./info.vue";
import { findConditionData, findCargoAllocationData } from "@/api/cargoSelect";
import { findConditionData, findCargoAllocationData, getAccsRoute } from "@/api/cargoSelect";
import { allDictData } from "@/api/destinationFlight";
import { downLoadXlsx } from "@/utils/zipdownload";
......@@ -203,6 +222,7 @@ export default {
fltDateEnd: null,
typeId: null,
portName: null,
rtoue: null,
statusId: null,
kindToAllocFlightId: null,
serviceTypeId: null,
......@@ -230,6 +250,7 @@ export default {
SubCategory: [],
}, //查询条件
fltDate: [],
routeList: [],
ursaList: "",
siteNameList: "",
handingCodes: [],
......@@ -263,6 +284,8 @@ export default {
}
},
activated() {
this.tableSelection = []
this.cargoTotal()
this.seleData();
this.select();
},
......@@ -485,6 +508,20 @@ export default {
this.tableHeader = this.$store.getters.tableHeader['allocationCargo']
})
}
},
//获取航班号航线
fltNoChange(val) {
console.log(val)
this.routeList = []
getAccsRoute({ fltNoAccs: val }).then(res => {
if (res.code === 200) {
this.routeList = res.data
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
console.log(err)
})
}
},
computed: {
......@@ -524,7 +561,7 @@ export default {
};
</script>
<style lang="scss">
<style lang="scss" scoped>
.tips {
display: inline-block;
color: #606266;
......
......@@ -11,16 +11,31 @@
:label="item.name" :key="index" :show-overflow-tooltip="true" :formatter="formatter">
</el-table-column>
</el-table>
<el-form ref="form" label-position="right" label-width="auto" style="width: 400px; margin: 30px auto"
:model="formData" :rules="rules">
<el-form ref="form" class="form-header" label-position="right" label-width="auto"
style="width: 400px; margin: 30px auto" :model="formData" :rules="rules">
<el-form-item label="航班号" prop="fltNo">
<el-input v-model="fltNo" size="medium" placeholder="请输入航班号" maxlength="10" style="width: 350px"></el-input>
<el-input class="formItem" v-model="fltNo" size="medium" placeholder="请输入航班号" maxlength="10"
style="width: 350px"></el-input>
</el-form-item>
<el-form-item label="航班日期:" prop="fltDate">
<el-date-picker v-model="formData.fltDate" type="date" placeholder="选择日期" value-format="yyyy-MM-dd"
size="medium" style="width: 350px">
<el-date-picker class="formItem" v-model="formData.fltDate" type="date" placeholder="选择日期"
value-format="yyyy-MM-dd" size="medium" style="width: 350px" @change="dateChange">
</el-date-picker>
</el-form-item>
<el-form-item prop="route">
<template slot="label">
<div style="display:inline-block">航线:
<el-tooltip class="item" effect="dark" content="选择航线需要先输入航班号和航班日期,才能选择对应得航线" placement="top-start">
<span class="el-icon-warning" style="color:#1890ff;font-size:16px"></span>
</el-tooltip>
</div>
</template>
<el-select class="formItem" v-model="formData.route" placeholder="不限" :disabled="routeList.length == 0">
<el-option v-for="(item, index) in routeList" :label="item.route" :value="item.route" :key="index">
<Tooltips :content="item.route" :refName="item.route"></Tooltips>
</el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer">
<el-button @click="dialogBeforeClose">取 消</el-button>
......@@ -31,7 +46,7 @@
</template>
<script>
import { allocationFlight } from "@/api/cargoSelect";
import { allocationFlight, findFlightRoute } from "@/api/cargoSelect";
export default {
props: {
......@@ -50,6 +65,7 @@ export default {
ids: [],
fltNo: undefined,
fltDate: undefined,
route: undefined,
overweight: false,
},
cargoHeader: [
......@@ -68,6 +84,7 @@ export default {
{ name: "创建人", value: "createUserName" },
{ name: "创建时间", value: "createTime" },
],
routeList: [],
rules: {
fltNo: [
{
......@@ -83,6 +100,13 @@ export default {
trigger: "blur",
},
],
route: [
{
required: true,
message: "航线不能为空",
trigger: "blur",
},
],
},
loading: false,
};
......@@ -93,8 +117,11 @@ export default {
ids: [],
fltNo: undefined,
fltDate: undefined,
route: undefined,
flightId: undefined,
overweight: false,
};
this.routeList = []
},
//确定配舱
submit() {
......@@ -104,6 +131,11 @@ export default {
arr.push(item.id);
});
this.formData.ids = arr;
this.routeList.forEach(item => {
if (item.route === this.formData.route) {
this.formData.flightId = item.id
}
})
if (this.formData.fltNo && this.formData.fltDate) {
allocationFlight(this.formData).then((res) => {
this.loading = false;
......@@ -165,6 +197,26 @@ export default {
}
}
return cellValue
},
//日期选择变化
dateChange(val) {
let obj = {
fltNo: this.formData.fltNo,
fltDate: val
}
findFlightRoute(obj).then(res => {
if (res.code === 200) {
res.data[0].route.indexOf(';') <= 0 ?
this.routeList = res.data :
res.data[0].route.split(';').forEach(item => {
this.routeList.push({ id: res.data[0].id, route: item })
})
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
console.log(err)
})
}
},
computed: {
......
......@@ -55,14 +55,15 @@
</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" />
<el-table-column label="申报类别" align="center" prop="typeName" />
<el-table-column label="件数" align="center" prop="qty" width="70" />
<el-table-column label="实际重量" align="center" prop="actualWeight" width="100" />
<el-table-column :show-overflow-tooltip="true" label="品牌描述" align="center" prop="nameDescription" />
<el-table-column label="航班日期" align="center" prop="fltDate" />
<el-table-column label="航班号" align="center" prop="fltNo" width="100" />
<el-table-column label="航班路线" align="center" prop="route" />
<el-table-column label="配置航班类型" align="center" prop="kindName" width="130" />
<el-table-column label="尺寸" align="center" prop="sizeStr" width="70" />
<el-table-column label="件数" align="center" prop="qty" width="70" />
<el-table-column label="实际重量" align="center" prop="actualWeight" width="100" />
<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"
......
......@@ -71,10 +71,12 @@
@sortChange="sortChange" @sizeChange="sizeChange">
<template slot="optionColumn">
<el-table-column v-if="findAllFltDatList.length > 0" label="操作" align="center"
class-name="small-padding fixed-width" :fixed="tableHeader.length > 10 ? 'right' : false">
class-name="small-padding fixed-width" :fixed="tableHeader.length > 10 ? 'right' : false" width="160">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
v-hasPermi="['base:flightInfo:update']">修改</el-button>
<el-button size="mini" type="text" icon="el-icon-link" @click="goFlightAllocConfig(scope.row)">查看维度
</el-button>
</template>
</el-table-column>
</template>
......@@ -91,35 +93,46 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="该航班预审状态:">
<el-tag v-if="preAudit" :type="preAudit == '开启' ? 'success' : 'info'" effect="dark">{{ preAudit }}
</el-tag>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="航班日期" prop="fltDate">
<el-date-picker class="wid80" :disabled="formdisabled.fltDate" clearable size="small"
v-model="form.fltDate" type="date" value-format="yyyy-MM-dd" placeholder="选择航班日期">
</el-date-picker>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="Pre-MDE CutOff时间" prop="cutOffTime">
<el-select class="wid80" v-model="form.cutOffTime" clearable placeholder="选择时间(输入查找选项)" type="string"
filterable>
<el-option v-for="item in selectOption.cutOffTime" :key="item" :label="item" :value="item">
<el-form-item label="航班种类" prop="kindId">
<el-select class="wid80" v-model="form.kindId" :disabled="formdisabled.kindId" placeholder="请选择航班种类"
@change="kindChange">
<el-option v-for="item in selectOption.flightKindlist" :key="item.id" :label="item.chineseName"
:value="item.id">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="航班路线" prop="route">
<el-input class="wid80" v-model="form.route" placeholder="请输入航班路线(XXX-XXX字母大写,多组用;分割)" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="航班种类" prop="kindId">
<el-select class="wid80" v-model="form.kindId" placeholder="请选择航班种类">
<el-option v-for="item in selectOption.flightKindlist" :key="item.id" :label="item.chineseName"
:value="item.id">
<el-form-item prop="route">
<template slot="label">
<div style="display:inline-block">航班路线
<el-tooltip class="item" effect="dark" content="输入航班号后获取航线信息。航班种类为Purple Tail时可以进行多选,切换航班种类后需重新选择航线"
placement="top-start">
<span class="el-icon-warning" style="color:#1890ff;font-size:16px"></span>
</el-tooltip>
</div>
</template>
<el-select ref="routeSelect" class="wid80" v-model="form.route" :disabled="formdisabled.route"
placeholder="请选择航线" no-data-text="未查询到航线" @change="routeChange" :multiple='routeMultiple'
:key="routeMultiple">
<el-option v-for="item in routeList" :key="item.id" :label="item.route" :value="item.route">
</el-option>
</el-select>
</el-form-item>
......@@ -158,19 +171,13 @@
v-model="form.extraWeightPercent"></el-input-number>
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :span="12">
<el-form-item label="是否开启高低价" prop="highLowPriceFlg">
<el-switch class="wid80" @change="LowHighAvailable" v-model="form.highLowPriceFlg" :active-value="1"
:inactive-value="0" active-color="#13ce66">
</el-switch>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="该航班预审状态:">
<el-tag v-if="preAudit" :type="preAudit == '开启' ? 'success' : 'info'" effect="dark">{{ preAudit }}
</el-tag>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
......@@ -241,7 +248,7 @@
</div>
</el-dialog>
<el-dialog title="未删除成功航班" width="40%" center :visible.sync="dialogTableVisible" :close-on-click-modal="false"
:append-to-body="true" :show-close="false">
:append-to-body="true">
<el-table :data="gridData">
<el-table-column property="fltNo" label="航班号"></el-table-column>
<el-table-column property="fltDate" label="航班日期"></el-table-column>
......@@ -314,17 +321,17 @@ export default {
trigger: "blur",
},
],
// route: [
// {
// required: true,
// message: "航班线路不能为空",
// trigger: "blur",
// },
// {
// pattern: /^(([\~A-Z]{3,4})(\-[A-Z]{3,4})+)(;{1,1}(([\~A-Z]{3,4})(\-[A-Z]{3,4})+)){0,}$/,
// message: "请输入正确得航班线路"
// }
// ]
route: [
{
required: true,
message: "航班线路不能为空",
trigger: "blur",
},
// {
// pattern: /^(([\~A-Z]{3,4})(\-[A-Z]{3,4})+)(;{1,1}(([\~A-Z]{3,4})(\-[A-Z]{3,4})+)){0,}$/,
// message: "请输入正确得航班线路"
// }
]
},
//原航班规则数据
findAllFltDatList: [],
......@@ -338,12 +345,12 @@ export default {
fltNo: false,
//航班日期
fltDate: false,
//航班路线
route: false,
//航班种类
kindId: false,
//航班类型
typeId: false,
//航线
route: false,
//原始重量
originalWeight: false,
},
......@@ -411,6 +418,10 @@ export default {
ids: [],
//目的航班数据
sourceFlightAndFlightDate: [],
//航线数据
routeList: [],
//航线多选状态
routeMultiple: false,
//航班预审状态
preAudit: null,
//高价百分比是否打开
......@@ -444,6 +455,7 @@ export default {
}
},
activated() {
this.ids = []
this.findFltConditionData();
this.findAllFltData();
},
......@@ -467,6 +479,7 @@ export default {
methods: {
//输入航班号后
blurfltNo() {
this.routeList = []
if (
this.form.fltNo != null &&
this.form.fltNo != undefined &&
......@@ -493,17 +506,16 @@ export default {
//this.form.extraWeightPercent=response.data.extraWeightPercent=0;
}
//是否开启高低价:根据已存在的相同航班号对应的最新值进行设置,如果无相同航班号,按照默认设置‘是否开启高低价’ 为是,不可编辑
if (
response.data != null &&
response.data.highLowPriceFlg != null &&
response.data.highLowPriceFlg != undefined
) {
this.form.highLowPriceFlg = response.data.highLowPriceFlg;
} else {
this.$set(this.form, "highLowPriceFlg", 1);
//this.form.highLowPriceFlg = true;
}
//是否预审:根据已存在的相同航班号对应的最新值进行设置,如果无相同航班号,按照默认设置‘是否预审’ 为否,不可编辑;
// if (
// response.data != null &&
// response.data.highLowPriceFlg != null &&
// response.data.highLowPriceFlg != undefined
// ) {
// this.form.highLowPriceFlg = response.data.highLowPriceFlg;
// } else {
this.$set(this.form, "highLowPriceFlg", 0);
// //this.form.highLowPriceFlg = true;
// }
//高/低价百分比:根据已存在的相同航班号对应的最新值进行设置,如果无相同航班号,按照默认设置‘高价百分比’60%,‘低价百分比’40%,不可编辑
if (
response.data != null &&
......@@ -530,7 +542,24 @@ export default {
this.msgError(response.msg);
}
});
//获取航线
this.getRoute(this.form.fltNo).then(res => {
this.routeList = res.list
}).catch(err => {
console.log(err)
})
}
},
//航班种类修改
kindChange(val) {
if (val === 94076) {
this.form.route = []
this.routeMultiple = true
} else {
this.form.route = ''
this.routeMultiple = false
}
this.$refs.routeSelect.$forceUpdate()
},
//查询条件数据源
findFltConditionData() {
......@@ -590,7 +619,7 @@ export default {
handleAdd() {
this.reset();
this.findFltConditionData();
this.preAudit = null;
this.preAudit = null
this.open = true;
this.title = "添加航班信息";
this.form.id = null;
......@@ -602,10 +631,10 @@ export default {
this.formdisabled.fltNo = false;
//航班日期
this.formdisabled.fltDate = false;
//航班路线
this.formdisabled.route = false;
//航班种类
this.formdisabled.kindId = false;
//航线
this.formdisabled.route = false;
//航班类型
this.formdisabled.typeId = false;
//原始重量
......@@ -714,10 +743,15 @@ export default {
this.formdisabled.fltNo = true;
//航班日期
this.formdisabled.fltDate = true;
//航班种类
this.formdisabled.kindId = true;
//航线
this.formdisabled.route = true
//根据ID查item
findFltById(row).then((response) => {
if (response.code == 200) {
this.form = response.data;
this.form.route.split(';')
//是否开启高低价
// this.form.highLowPriceFlg = this.form.highLowPriceFlg === 1 ? true : false;
//是否预审
......@@ -729,6 +763,19 @@ export default {
}
});
},
//查看航班维度
goFlightAllocConfig(val) {
let obj = {
handle: 'update',
fltNo: val.fltNo,
fltDate: val.fltDate,
status: 'flightInformationMaintenance'
}
this.$router.push({
name: 'FlightAllocConfigInfo',
params: obj
})
},
/** 删除按钮操作 */
handleDelete(row) {
let fIds = [];
......@@ -797,10 +844,12 @@ export default {
// formdata.isNeedRequired = formdata.isNeedRequired ? 1 : 0;
//总重量更新
// formdata.totalWeight = this.Weightall()
formdata.route = this.form.route.toString().replace(/,/g, ';')
//处理数据
saveOrUpdate(formdata).then((response) => {
if (response.code === 200) {
this.msgSuccess("保存成功");
this.routeList = []
this.open = false;
this.findAllFltData();
} else {
......@@ -817,6 +866,7 @@ export default {
},
//取消按钮
cancel() {
this.routeList = []
this.open = false;
this.findAllFltData();
this.findFltConditionData();
......@@ -899,6 +949,10 @@ export default {
this.findAllFltData();
}
},
//航线修改
routeChange(val) {
this.$forceUpdate()
},
//多选框选中数据
tableSelect(val) {
this.ids = val.selection;
......
......@@ -4,8 +4,47 @@
append-to-body center>
<el-form ref="add" :model="newDictionary" label-width="auto" label-position="left" size="small"
:rules="rules" @submit.native.prevent>
<!-- 新增虚拟航班 -->
<div v-if="dictName == '虚拟航班'">
<el-form-item label="所属口岸" prop="portName">
<el-select v-model="newDictionary.portName" placeholder="选择口岸" disabled>
<el-option v-for="item in $store.state.user.portNames" :label="item" :value="item"
:key="item">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="航班名称" v-if="status == 'allAdd'" prop="flightNo">
<el-input type="textarea" v-model="flightNo" :rows="7" maxlength="255" show-word-limit
placeholder="用;分隔,单条航班名长度25">
</el-input>
</el-form-item>
<el-form-item label="航班名称" prop="flightNo" v-else>
<el-input type="text" v-model="flightNo" placeholder="请输入数据名称" maxlength="25"></el-input>
</el-form-item>
</div>
<!-- 新增航线 -->
<div v-else-if="dictName == '航线'">
<div v-if="status == 'add'">
<el-form-item label="航班号" prop="fltNo">
<el-input type="text" v-model="newDictionary.fltNo" placeholder="请输入航班号" maxlength="50">
</el-input>
</el-form-item>
<el-form-item label="航线" prop="route">
<el-input type="text" v-model="newDictionary.route" placeholder="请输入航线" maxlength="40">
</el-input>
</el-form-item>
</div>
<div v-else-if="status == 'sort'">
<el-form-item label="航班号" prop="fltNo">
<el-input type="text" v-model="newDictionary.fltNo" disabled></el-input>
</el-form-item>
<el-form-item label="航线">
<Drag :data="routeList" @drag="drag"></Drag>
</el-form-item>
</div>
</div>
<!-- 新增数据字典 -->
<div v-if="dictName != '虚拟航班'">
<div v-else>
<el-form-item label="所属父级" v-if="newDictionary.serviceCodeKey">
<el-input type="text" v-model="newDictionary.serviceCodeKey" placeholder="用回车分隔" disabled>
</el-input>
......@@ -32,24 +71,6 @@
</el-form-item>
</div>
</div>
<!-- 新增虚拟航班 -->
<div v-else>
<el-form-item label="所属口岸" prop="portName">
<el-select v-model="newDictionary.portName" placeholder="选择口岸" disabled>
<el-option v-for="item in $store.state.user.portNames" :label="item" :value="item"
:key="item">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="航班名称" v-if="status == 'allAdd'" prop="flightNo">
<el-input type="textarea" v-model="flightNo" :rows="7" maxlength="255" show-word-limit
placeholder="用;分隔,单条航班名长度25">
</el-input>
</el-form-item>
<el-form-item label="航班名称" prop="flightNo" v-else>
<el-input type="text" v-model="flightNo" placeholder="请输入数据名称" maxlength="25"></el-input>
</el-form-item>
</div>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" :loading="loading" @click="submit">确 定</el-button>
......@@ -60,7 +81,7 @@
</template>
<script>
import { addDict, addDictBatch, addServiceCodeBatch, addFlight } from '@/api/system/dictionary.js'
import { addDict, addDictBatch, addServiceCodeBatch, addFlight, addRoute, queryRoute, orderRoute } from '@/api/system/dictionary.js'
export default {
props: {
......@@ -83,7 +104,7 @@ export default {
},
data() {
return {
newDictionary: { flightNo: undefined, chineseName: undefined },
newDictionary: { flightNo: undefined, chineseName: undefined, route: undefined },
rules: {
chineseName: [
{
......@@ -98,8 +119,23 @@ export default {
message: "航班名称不能为空",
trigger: "blur",
},
]
],
fltNo: [
{
required: true,
message: "航班号不能为空",
trigger: "blur",
}
],
route: [
{
required: true,
message: "航线不能为空",
trigger: "blur",
}
],
},
routeList: [],
title: '',
loading: false,
}
......@@ -115,6 +151,18 @@ export default {
} else if (this.status == 'childrenAdd') {
this.newDictionary = this.addDictionary
this.title = '新增子集'
} else if (this.status == 'sort') {
this.newDictionary = this.addDictionary.serviceCodeKey
this.title = '航线排序'
queryRoute({ fltNo: this.newDictionary.fltNo }).then(res => {
if (res.code === 200) {
this.routeList = res.data.list
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
console.log(err)
})
}
// else if (this.status == 'update') {
// if (this.addDictionary.serviceCodeValue) {
......@@ -145,6 +193,23 @@ export default {
if (this.status == 'add') {
if (this.dictName === '虚拟航班') {
this.flightAdd()
} else if (this.dictName === '航线') {
let obj = {
fltNo: this.upCase(this.newDictionary.fltNo),
route: this.upCase(this.newDictionary.route)
}
addRoute(obj).then(res => {
this.loading = false
if (res.code === 200) {
this.msgSuccess(res.msg)
this.close()
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
this.loading = false
console.log(err)
})
} else {
addDict(this.newDictionary).then(res => {
this.loading = false
......@@ -210,6 +275,25 @@ export default {
console.log(err)
})
}
//航线排序
else if (this.status == 'sort') {
let arr = []
this.routeList.forEach(item => {
arr.push(item.id)
})
orderRoute(arr).then(res => {
this.loading = false
if (res.code === 200) {
this.msgSuccess(res.msg)
this.close()
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
this.loading = false
console.log(err)
})
}
}
})
},
......@@ -230,9 +314,14 @@ export default {
console.log(err)
})
},
//航线排序
drag(val) {
this.routeList = val
},
//关闭
close() {
this.newDictionary = { chineseName: null, code: null, remark: null }
this.routeList = []
this.clearValidate('add')
this.$emit('close', false)
},
......@@ -263,6 +352,25 @@ export default {
this.newDictionary.flightNo = val
}
},
},
fltNo: {
get: function () {
return this.newDictionary.fltNo
},
set: function (val) {
this.newDictionary.fltNo = this.upCase(val)
},
},
route: {
get: function () {
return this.newDictionary.route
},
set: function (val) {
const reg = /^([0-9a-zA-Z!@#$%^&*()`]{0,100})$/
if (reg.test(val)) {
this.newDictionary.route = val
}
},
}
}
}
......
......@@ -3,8 +3,9 @@
<el-card style="margin-bottom:10px">
<!-- cardHeader -->
<div slot="header" class="clearfix">
<span style="font-size:16px;font-weight:700">{{ (tableName == 'Site' ? '站点' : tableName ==
'虚拟航班' ? '虚拟航班' : tableName.replace(/( |^)[a-z]/g, L => L.toUpperCase())) + "表"
<span style="font-size:16px;font-weight:700">{{ (tableName == '航线' ? '航线' : tableName == 'Site' ? '站点' :
tableName ==
'虚拟航班' ? '虚拟航班' : tableName.replace(/( |^)[a-z]/g, L => L.toUpperCase())) + "表"
}}</span>
<div style="float: right; padding: 3px 0">
<span class="selectLabel mr10">切换字典表</span>
......@@ -13,6 +14,7 @@
:key="item.id">
</el-option>
<el-option label="虚拟航班" value="虚拟航班"></el-option>
<el-option label="航线" value="航线"></el-option>
</el-select>
</div>
</div>
......@@ -21,7 +23,7 @@
@submit.native.prevent>
<el-row :gutter="10" v-if="tableName != 'serviceCode'">
<el-col :span="6">
<el-form-item label="航班名称" v-if="tableName === '虚拟航班'">
<el-form-item label="航班名称" v-if="tableName === '虚拟航班' || tableName === '航线'">
<el-input v-model="selectDict.flightNo" size="small" style="width:80%"
placeholder="请输入航班名称"></el-input>
</el-form-item>
......@@ -38,8 +40,8 @@
v-hasPermi="['system:dictionary:add']">
{{ tableName === 'serviceCode' ? '新增父级' : '新增' }}
</el-button>
<el-button type="primary" icon="el-icon-plus" size="small" @click="addDic({ status: 'allAdd' })"
v-hasPermi="['system:dictionary:add']">
<el-button v-if="tableName != '航线'" type="primary" icon="el-icon-plus" size="small"
@click="addDic({ status: 'allAdd' })" v-hasPermi="['system:dictionary:add']">
{{ tableName === 'serviceCode' ? '批量新增父级' : '批量新增' }}
</el-button>
<el-button type="danger" icon="el-icon-delete" size="small" :disabled="nowSelect.length == 0"
......@@ -48,10 +50,10 @@
</div>
</el-form>
<!-- 表格 -->
<Tables v-if="tableName != 'serviceCode' && tableName != '虚拟航班'" ductName="dictionary" :selection="true"
:selectFixed="false" :order='true' :height="tableHeight" :data="tableData" :headerData="tableHeader"
:page="selectDict.page" :pageSizes="[20]" :totalCount="total" :loading="loading"
@currentChange="currentChange" layout="total,prev, pager, next, jumper, ->"
<Tables v-if="tableName != 'serviceCode' && tableName != '虚拟航班' && tableName != '航线'" ductName="dictionary"
:selection="true" :selectFixed="false" :order='true' :height="tableHeight" :data="tableData"
:headerData="tableHeader" :page="selectDict.page" :pageSizes="[20]" :totalCount="total"
:loading="loading" @currentChange="currentChange" layout="total,prev, pager, next, jumper, ->"
@tableSelect="tableSelection" @tableSelectAll="tableSelectAll">
<template slot="optionColumn">
<el-table-column label="操作" align="center">
......@@ -85,6 +87,28 @@
</el-table-column>
</template>
</Tables>
<!-- 航线表 -->
<Tables v-else-if="tableName === '航线'" ductName="dictionary" :selection="true" :selectFixed="false"
:order='true' :height="tableHeight" :data="tableData" :headerData="routeTable" :page="selectDict.page"
:pageSizes="[20]" :totalCount="total" :loading="loading" @currentChange="currentChange"
layout="total,prev, pager, next, jumper, ->" @tableSelect="tableSelection"
@tableSelectAll="tableSelectAll">
<template v-slot:fltNo="scope">
<el-link type="primary" @click="addDic({ data: scope.row, status: 'sort' })">
{{
scope.row.fltNo
}}<i class="el-icon-link"></i> </el-link>
</template>
<template slot="optionColumn">
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button size="mini" type="text" style="color:#ff4949" icon="el-icon-delete"
@click="delDict(scope.row)" v-hasPermi="['system:dictionary:delete']">删除
</el-button>
</template>
</el-table-column>
</template>
</Tables>
<!-- serviceCode表格(树形结构) -->
<Tables v-show="tableName === 'serviceCode'" ductName="dictionary" :order='false' :height="tableHeight"
:data="tableData" :headerData="serviceCodeHeader" :pageSize="selectDict.page" :pageSizes="[20]"
......@@ -142,7 +166,7 @@
<script>
import Dialog from './dialog.vue'
import { getDictNameList, getDictionaryList, getServiceCodeList, delServiceCodeCihild, delDict, flightType, delFlight } from '@/api/system/dictionary.js'
import { getDictNameList, getDictionaryList, getServiceCodeList, delServiceCodeCihild, delDict, flightType, delFlight, queryRoute, delRoute, checkFlightRoute } from '@/api/system/dictionary.js'
export default {
name: 'DictionaryConfig',
......@@ -159,6 +183,9 @@ export default {
},//字典查询条件
tableData: [],
tableHeader: this.tableHeaders['dict'],//表头
serviceCodeHeader: this.tableHeaders['dictServiceCode'],//serviceCode主表头
childrenTableHeader: this.tableHeaders['dictServiceCodeChildren'],//serviceCode子表头
routeTable: this.tableHeaders['fltRoute'],//航线表头
flightHeader: [
{
columnChineseName: "航班号",
......@@ -168,8 +195,6 @@ export default {
status: 1
}
],//虚拟航班表头
serviceCodeHeader: this.tableHeaders['dictServiceCode'],//serviceCode主表头
childrenTableHeader: this.tableHeaders['dictServiceCodeChildren'],//serviceCode子表头
dictNameList: [],//主表数据
addDictionary: {},//选择数据
nowSelect: [],
......@@ -248,6 +273,22 @@ export default {
}).catch(err => {
console.log(err)
})
} else if (this.tableName === '航线') {
let obj = {
fltNo: this.selectDict.flightNo,
page: this.selectDict.page,
size: this.selectDict.size
}
queryRoute(obj).then(res => {
if (res.code === 200) {
this.tableData = res.data.list
this.total = res.data.total
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
console.log(err)
})
} else {
getDictionaryList(this.selectDict).then(res => {
if (res.code === 200) {
......@@ -284,6 +325,8 @@ export default {
this.serviceCodeCihildDel([val.id])
} else if (this.tableName === '虚拟航班') {
this.flightDel([val.id])
} else if (this.tableName === '航线') {
this.routeDel({ data: [val], id: [val.id] })
} else {
this.dicDel([val.id])
}
......@@ -298,6 +341,8 @@ export default {
this.serviceCodeCihildDel(arr)
} else if (this.tableName === '虚拟航班') {
this.flightDel(arr)
} else if (this.tableName === '航线') {
this.routeDel({ data: this.nowSelect, id: arr })
} else {
this.dicDel(arr)
}
......@@ -354,7 +399,7 @@ export default {
if (res.code === 200) {
this.msgSuccess(res.msg)
} else {
this.msgSuccess(res.msg)
this.msgWarning(res.msg)
}
this.tableSelect(1)
}).catch(err => {
......@@ -362,6 +407,59 @@ export default {
})
}).catch(() => { })
},
//航线删除
routeDel(val) {
this.$confirm("是否要删除记录?", "注意!", {
closeOnClickModal: false,
confirmButtonText: "确定删除",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
let arr = []
val.data.forEach(item => {
arr.push({
fltNo: item.fltNo,
route: item.route
})
})
checkFlightRoute(arr).then(res => {
if (res.code === 202) {
this.$confirm(res.msg, "注意!", {
closeOnClickModal: false,
confirmButtonText: "确定删除",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
delRoute(val.id).then(res => {
if (res.code === 200) {
this.msgSuccess(res.msg)
} else {
this.msgWarning(res.msg)
}
this.tableSelect(1)
}).catch(err => {
console.log(err)
})
}).catch()
} else if (res.code === 200) {
delRoute(val.id).then(res => {
if (res.code === 200) {
this.msgSuccess(res.msg)
} else {
this.msgWarning(res.msg)
}
this.tableSelect(1)
}).catch(err => {
console.log(err)
})
} else {
this.msgWarning(res.msg)
}
}).catch(err => {
console.log(err)
})
}).catch(() => { })
},
//切换字典表
selectChange(val) {
this.tableName = val
......