Toggle navigation
Toggle navigation
This project
Loading...
Sign in
Fedex
/
imac-vue
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Snippets
Network
Create a new issue
Builds
Commits
Issue Boards
Authored by
jinhui.wang
2022-08-31 15:02:07 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
1d2bbcf0ca614cc8868c5d74239b8f53cad00ec6
1d2bbcf0
1 parent
9b600d6f
增加航线字典,手动配舱增加到航线,航班信息维护航线完善
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
960 additions
and
324 deletions
src/api/cargoSelect.js
src/api/system/dictionary.js
src/assets/languages/tableHeaders.js
src/assets/styles/index.scss
src/components/Drag/index.vue
src/main.js
src/settings.js
src/utils/FedEx.js
src/views/allocationConfig/cargoAllocation/index.vue
src/views/allocationConfig/cargoAllocation/info.vue
src/views/basicInformation/caExportPreQualification/index.vue
src/views/basicInformation/flightInformationMaintenance/index.vue
src/views/systemConfig/dictionaryConfig/dialog.vue
src/views/systemConfig/dictionaryConfig/index.vue
src/api/cargoSelect.js
View file @
1d2bbcf
...
...
@@ -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
})
}
...
...
src/api/system/dictionary.js
View file @
1d2bbcf
...
...
@@ -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
...
...
src/assets/languages/tableHeaders.js
View file @
1d2bbcf
...
...
@@ -13,25 +13,25 @@ let tableHeaders = {
status
:
1
},
{
columnChineseName
:
"
总重量(KG)
"
,
columnName
:
"
totalWeight
"
,
columnChineseName
:
"
航线
"
,
columnName
:
"
route
"
,
columnWidth
:
""
,
status
:
1
},
{
columnChineseName
:
"
已配
重量(KG)"
,
columnName
:
"
allocation
Weight"
,
columnChineseName
:
"
总
重量(KG)"
,
columnName
:
"
total
Weight"
,
columnWidth
:
""
,
status
:
1
},
{
columnChineseName
:
"
总体积(cm³
)"
,
columnName
:
"
totalVolumn
"
,
columnChineseName
:
"
已配重量(KG
)"
,
columnName
:
"
allocationWeight
"
,
columnWidth
:
""
,
status
:
1
},
{
columnChineseName
:
"已配体积(
c
m³)"
,
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
:
"
8
0"
,
columnWidth
:
"
10
0"
,
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
:
"
cre
ateUserName"
,
columnWidth
:
""
,
columnName
:
"
upd
ateUserName"
,
columnWidth
:
"
100
"
,
status
:
1
},
{
columnChineseName
:
"更新时间"
,
columnName
:
"
cre
ateTime"
,
columnWidth
:
""
,
columnName
:
"
upd
ateTime"
,
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
...
...
src/assets/styles/index.scss
View file @
1d2bbcf
...
...
@@ -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
...
...
src/components/Drag/index.vue
0 → 100644
View file @
1d2bbcf
<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
src/main.js
View file @
1d2bbcf
...
...
@@ -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
)
})
...
...
src/settings.js
View file @
1d2bbcf
...
...
@@ -58,5 +58,5 @@ module.exports = {
/**
* 版本号
*/
version
:
'version:1.
5
.0'
version
:
'version:1.
6
.0'
}
...
...
src/utils/FedEx.js
View file @
1d2bbcf
...
...
@@ -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
...
...
src/views/allocationConfig/cargoAllocation/index.vue
View file @
1d2bbcf
<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;
...
...
src/views/allocationConfig/cargoAllocation/info.vue
View file @
1d2bbcf
...
...
@@ -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: {
...
...
src/views/basicInformation/caExportPreQualification/index.vue
View file @
1d2bbcf
...
...
@@ -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"
...
...
src/views/basicInformation/flightInformationMaintenance/index.vue
View file @
1d2bbcf
...
...
@@ -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;
...
...
src/views/systemConfig/dictionaryConfig/dialog.vue
View file @
1d2bbcf
...
...
@@ -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
}
},
}
}
}
...
...
src/views/systemConfig/dictionaryConfig/index.vue
View file @
1d2bbcf
...
...
@@ -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
"
:select
Fixed="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
"
:select
ion="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.msg
Success
(res.msg)
this.msg
Warning
(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
...
...
Please
register
or
login
to post a comment