Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
SuperMan
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
罗超
SuperMan
Commits
5419dd3b
Commit
5419dd3b
authored
Aug 28, 2019
by
黄奎
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
酒店操作、分房排除自由行和单机票
parent
08ac1174
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
429 additions
and
385 deletions
+429
-385
TravelPassengerList2.vue
...ponents/TravelManager/TravelList/TravelPassengerList2.vue
+174
-343
TravelpassengerList.vue
...mponents/TravelManager/TravelList/TravelpassengerList.vue
+251
-38
config.js
src/router/config.js
+4
-4
No files found.
src/components/TravelManager/TravelList/TravelPassengerList2.vue
View file @
5419dd3b
<
style
>
.PassengerList2
.PT_teamTable.PT_teamTable
{
width
:
500px
;
border-collapse
:
collapse
;
}
.PT_teamTable
td
,
.PT_teamTable
th
{
border
:
1px
solid
#dcdcdc
;
padding
:
5px
;
height
:
30px
;
}
.PT_teamTable
tr
th
{
background
:
#eee
;
height
:
30px
;
border
:
1px
solid
#dcdcdc
;
}
.PT_teamTable
tr
td
{
background
:
#fff
;}
.travelpassengerlist
{
font-size
:
12px
;
background
:
#dcdcdc
;}
.travelpassengerlist
tr
th
{
height
:
30px
;
}
.travelpassengerlist
tr
td
{
background
:
#fff
;
text-align
:
center
;}
/*拒签人员*/
.travelpassengerlist
.redTr
td
{
.PassengerList2
.PT_teamTable
{
width
:
800px
;
border-collapse
:
collapse
;
}
.PassengerList2
.PT_teamTable
td
,
.PassengerList2
.PT_teamTable
th
{
border
:
1px
solid
#dcdcdc
;
padding
:
5px
;
height
:
30px
;
}
.PassengerList2
.PT_teamTable
tr
th
{
background
:
#eee
;
height
:
30px
;
border
:
1px
solid
#dcdcdc
;
}
.PassengerList2
.PT_teamTable
tr
td
{
background
:
#fff
;
}
.PassengerList2
.travelpassengerlist
{
font-size
:
12px
;
background
:
#dcdcdc
;
}
.PassengerList2
.travelpassengerlist
tr
th
{
height
:
30px
;
}
.PassengerList2
.travelpassengerlist
tr
td
{
background
:
#fff
;
text-align
:
center
;
}
/*拒签人员*/
.PassengerList2
.travelpassengerlist
.redTr
td
{
color
:
#E95252
;
}
.leader2Btn
{
color
:
#fff
;
padding
:
0
15px
;
height
:
30px
;
background
:
#e95252
;
border
:
1px
solid
#e95252
;
cursor
:
pointer
;
border-radius
:
15px
;
}
.PassengerList2
input
.houseno
{
border
:
none
;
border-bottom
:
1px
solid
#dcdcdc
;
transition
:
all
linear
.5s
;
}
.PassengerList2
input
.houseno
:focus
{
border-bottom
:
1px
solid
#e95252
;
}
.tips__
{
color
:
#e95252
;
text-align
:
center
;
margin
:
10px
;
}
}
</
style
>
<
template
>
<div
class=
"flexOne PassengerList
PassengerList
2"
>
<div
class=
"flexOne PassengerList2"
>
<div
class=
"query-box"
>
<ul>
<li>
...
...
@@ -57,38 +47,27 @@
<tr>
<th
width=
"140"
>
团号
</th>
<th>
团名
</th>
<th
width=
"60"
>
人数
</th>
<th
width=
"120"
>
出发日期
</th>
</tr>
<tr
v-for=
"item in QueryMsg.TeamInfoData"
>
<td><a
@
click=
"goUrlTravelControl('团控列表','TravelControlList',item.TCID,item.TCNUM)"
style=
"cursor:pointer;color:blue;"
>
{{
item
.
TCNUM
}}
</a></td>
<td><a
@
click=
"goUrlTravelControl('团控列表','TravelControlList',item.TCID,item.TCNUM)"
style=
"cursor:pointer;color:blue;"
>
{{
item
.
TCNUM
}}
</a></td>
<td>
{{
item
.
Title
}}
</td>
<td>
{{
item
.
Inventory
}}
人
</td>
<td>
{{
item
.
StartDate
}}
{{
item
.
WeekStr
}}
</td>
</tr>
</table>
</li>
<li>
<input
type=
"button"
class=
"normalBtn"
v-if=
"!allDIs"
value=
"分房表确认"
@
click=
"querenHotel()"
>
<input
type=
"button"
class=
"normalBtn"
value=
"导出报表"
@
click=
"exportExcel()"
>
</li>
</ul>
</div>
<p
class=
"tips__"
v-if=
"allDIs"
>
op已确认分房,不能在进行任何操作
</p>
<table
style=
"margin-bottom: 50px;"
class=
"travelpassengerlist"
border=
"0"
cellspacing=
"1"
cellpadding=
"0"
v-loading=
"QueryMsg.loading"
>
<table
class=
"travelpassengerlist"
border=
"0"
cellspacing=
"1"
cellpadding=
"0"
v-loading=
"QueryMsg.loading"
>
<tr>
<th
width=
"50"
>
房间数
</th>
<th
width=
"50"
>
房号
</th>
<th
width=
"130"
>
酒店及房型
</th>
<th
width=
"130"
>
旅客姓名
</th>
<th
width=
"120"
>
占床
</th>
<th
width=
"110"
>
英文姓
</th>
<th
width=
"145"
>
英文名
</th>
<th
width=
"45"
>
性别
</th>
...
...
@@ -108,35 +87,23 @@
<th
width=
"120"
>
签证类型
</th>
</tr>
<tr>
<td
v-show=
"QueryMsg.dataList.Length==0"
colspan=
"
23
"
align=
"center"
>
暂无数据
</td>
<td
v-show=
"QueryMsg.dataList.Length==0"
colspan=
"
12
"
align=
"center"
>
暂无数据
</td>
</tr>
<!--
<template
v-for=
"(item, index) in QueryMsg.dataList"
>
-->
<tr
v-for=
"(subItem, subIndex) in dataList"
:class=
"
{'redTr':subItem.VisaState==1}">
<td>
{{
subIndex
+
1
}}
</td>
<td
width=
"80"
>
<el-select
v-model=
"subItem.HouseNo"
placeholder=
"请选择"
@
change=
"sortNumberN(subItem, subIndex)"
>
<el-option
v-for=
"(hs, hsIndex) in numberList"
:disabled=
"(subItem.HouseType == 1 && IsLeaderGuide == 1) || hs.dis || allDIs"
:key=
"hs.name"
:label=
"hs.name"
:value=
"hs.name"
>
</el-option>
</el-select>
</td>
<tbody
v-for=
"(item,index) in QueryMsg.dataList"
:key=
"index"
>
<tr
v-for=
"(subItem,subIndex) in item"
:class=
"
{'redTr':subItem.VisaState==1}">
<td
v-if=
"subIndex==0"
:rowspan=
"subItem.RowsCount"
>
{{
index
+
1
}}
</td>
<td
v-if=
"subIndex==0"
:rowspan=
"subItem.RowsCount"
></td>
<td>
<el-select
v-model=
"subItem.HouseType"
placeholder=
"请选择"
@
change=
"changeRmType(subItem, subIndex)"
>
<el-option
:disabled=
"(subItem.HouseType == 1 && IsLeaderGuide == 1) || allDIs"
v-for=
"(hs, hsIndex) in HouseTypeList"
:key=
"hsIndex"
:label=
"hs.HouseName"
:value=
"hs.HouseType"
>
</el-option>
</el-select>
<!--自然单间 指定单间(单房差)-->
<template
v-if=
"subItem.SingleRoomType==subItem.HouseType"
>
{{
getHouseTypeStr
(
subItem
.
HouseType
)
}}
</
template
>
<
template
v-else
>
{{
getHouseTypeStr
(
subItem
.
SingleRoomType
)
}}
<br
/><span
style=
"color:red;"
>
(指定)
</span>
</
template
>
<
template
v-if=
"subItem.IsBed==0"
><br
/><span
style=
"color:red;"
>
(不占床)
</span></
template
>
</td>
<td>
{{subItem.GuestName}}
</td>
<td>
{{
subItem
.
IsBed
==
1
?
'占床'
:
'不占床'
}}
</td>
<td>
{{subItem.ESurName}}
</td>
<td>
{{subItem.EName}}
</td>
<td>
{{getSexStr(subItem)}}
</td>
...
...
@@ -150,280 +117,144 @@
<td>
{{subItem.MobilePhone}}
</td>
<td>
{{subItem.IdCard}}
</td>
<td>
{{subItem.UnitPrice}}
</td>
<td>
{{
subItem
.
CreateBy
Str
}}
</td>
<td>
{{subItem.CreateBy}}
</td>
<td>
{{subItem.GroupTypeStr}}
</td>
<td
align=
"center"
>
经济舱
<br>
(Y)
</td>
<td>
{{
subItem
.
VisaType
Str
}}
{{
subItem
.
VisaTypeStr
==
1
?
'拒签'
:
"正常"
}}
</td>
<td>
{{subItem.VisaType
}} {{subItem.VisaState
==1?'拒签':"正常"}}
</td>
</tr>
<!--
</
template
>
-->
<tr
v-if=
"!allDIs"
>
<td
style=
"text-align:right"
colspan=
"23"
><input
type=
"button"
value=
"保存"
class=
"leader2Btn"
@
click=
"saveOPSetGuestHouse"
></td>
</tr>
</tbody>
</table>
</div>
</template>
<
script
>
export
default
{
data
()
{
return
{
//请求数据
msg
:
{
PageIndex
:
1
,
PageSize
:
100
,
TCID
:
0
,
OrderId
:
0
,
currentPage
:
1
},
IsHaveLeader
:
1
,
//1-有领队,0-无领队
IsLeaderGuide
:
0
,
//1-领兼导,0-领队
TCID
:
0
,
QueryMsg
:
{
loading
:
true
,
//返回数据
dataList
:
[],
TCID
:
0
,
OrderId
:
0
,
//团期数据
TeamInfoData
:
[]
},
houseList
:
[],
HouseTypeList
:
[],
numberList
:
[],
dataList
:
[],
allDIs
:
false
,
};
},
methods
:
{
// 确认酒店
querenHotel
:
function
(){
this
.
apipost
(
"travel_get_UpdateOpSureHouse"
,
{
TCID
:
this
.
TCID
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
$message
.
success
(
'操作成功'
)
this
.
getList
()
}
else
{
this
.
$message
.
error
(
'操作失败'
)
}
export
default
{
data
()
{
return
{
//请求数据
msg
:
{
PageIndex
:
1
,
PageSize
:
100
,
TCID
:
0
,
OrderId
:
0
,
currentPage
:
1
,
isGetTicket
:
1
,
//不查询机票
isGetZiYouXing
:
1
,
//不查询自由行
},
err
=>
{}
);
},
// 修改类型
changeRmType
:
function
(
obj
,
index
){
let
list
=
this
.
dataList
;
for
(
let
i
=
0
;
i
<
list
.
length
;
i
++
)
{
if
(
obj
.
HouseNo
===
list
[
i
].
HouseNo
)
{
list
[
i
].
HouseType
=
obj
.
HouseType
list
[
i
].
SingleRoomType
=
obj
.
HouseType
}
}
list
=
list
.
sort
(
this
.
compare
)
this
.
dataList
=
list
;
},
compare
:
function
(
obj1
,
obj2
)
{
var
val1
=
Number
(
obj1
.
HouseNo
);
var
val2
=
Number
(
obj2
.
HouseNo
);
if
(
val1
<
val2
)
{
return
-
1
;
}
else
if
(
val1
>
val2
)
{
return
1
;
}
else
{
return
0
;
IsHaveLeader
:
1
,
//1-有领队,0-无领队
IsLeaderGuide
:
0
,
//1-领兼导,0-领队
TCID
:
0
,
QueryMsg
:
{
loading
:
true
,
//返回数据
dataList
:
[],
TCID
:
0
,
OrderId
:
0
,
//团期数据
TeamInfoData
:
[]
}
};
},
// 修改房号
sortNumberN
:
function
(
obj
,
index
){
let
list
=
this
.
dataList
;
// 选择房号后循环数据把房号相同的数据房型修改成一样的
for
(
let
i
=
0
;
i
<
list
.
length
;
i
++
)
{
if
(
obj
.
HouseNo
===
list
[
i
].
HouseNo
&&
obj
.
Id
!==
list
[
i
].
Id
)
{
obj
.
HouseType
=
list
[
i
].
HouseType
list
[
index
].
SingleRoomType
=
list
[
i
].
HouseType
}
}
list
=
list
.
sort
(
this
.
compare
)
this
.
dataList
=
list
;
},
//保存分房
saveOPSetGuestHouse
:
function
(){
this
.
apipost
(
"travel_get_OPSetGuestHouse"
,
this
.
dataList
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
$message
.
success
(
'操作成功'
)
this
.
getList
()
}
else
{
this
.
$message
.
error
(
'操作失败'
)
methods
:
{
goUrlTravelControl
(
name
,
path
,
id
,
tcmun
)
{
this
.
$router
.
push
({
name
:
path
,
query
:
{
id
:
id
,
tcmun
:
tcmun
,
blank
:
"y"
,
tab
:
name
}
},
err
=>
{}
);
},
goUrlTravelControl
(
name
,
path
,
id
,
tcmun
)
{
this
.
$router
.
push
({
name
:
path
,
query
:
{
id
:
id
,
tcmun
:
tcmun
,
blank
:
"y"
,
tab
:
name
});
},
//获取性别字符串
getSexStr
(
item
)
{
var
str
=
""
;
if
(
item
.
Sex
==
1
)
{
str
=
"男"
;
}
else
{
str
=
"女"
;
}
});
},
//获取性别字符串
getSexStr
(
item
)
{
var
str
=
""
;
if
(
item
.
Sex
==
1
)
{
str
=
"男"
;
}
else
{
str
=
"女"
;
}
return
str
;
},
//获取房间类型
getHouseTypeStr
(
HouseType
)
{
var
str
=
""
;
if
(
HouseType
==
1
)
{
str
=
"自然单间"
;
}
else
if
(
HouseType
==
2
)
{
str
=
"标准双人间"
;
}
else
if
(
HouseType
==
3
)
{
str
=
"大床房"
;
}
else
if
(
HouseType
==
4
)
{
str
=
"三人间"
;
}
else
if
(
HouseType
==
5
)
{
str
=
"拼凑双人间"
;
}
else
{
str
=
"未分配"
;
}
return
str
;
},
getHouseTypeList
:
function
(){
this
.
apipost
(
"travel_get_GetHouseType"
,
this
.
msg
,
res
=>
{
this
.
QueryMsg
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
HouseTypeList
=
res
.
data
.
data
;
}
},
err
=>
{}
);
},
setDataList
:
function
(
list
){
var
Diningmap
=
{},
Diningdest
=
[];
for
(
var
i
=
0
;
i
<
list
.
length
;
i
++
){
var
ai
=
list
[
i
];
if
(
!
Diningmap
[
ai
.
HouseNo
]){
Diningdest
.
push
({
HouseType
:
ai
.
HouseType
,
HouseNo
:
ai
.
HouseNo
,
data
:
[
ai
]
});
Diningmap
[
ai
.
HouseNo
]
=
ai
;
}
else
{
for
(
var
j
=
0
;
j
<
Diningdest
.
length
;
j
++
){
var
dj
=
Diningdest
[
j
];
if
(
dj
.
HouseType
==
ai
.
HouseType
&&
dj
.
HouseNo
==
ai
.
HouseNo
){
dj
.
data
.
push
(
ai
);
break
;
return
str
;
},
//获取房间类型
getHouseTypeStr
(
HouseType
)
{
var
str
=
""
;
if
(
HouseType
==
1
)
{
str
=
"自然单间"
;
}
else
if
(
HouseType
==
2
)
{
str
=
"标准双人间"
;
}
else
if
(
HouseType
==
3
)
{
str
=
"大床房"
;
}
else
if
(
HouseType
==
4
)
{
str
=
"三人间"
;
}
else
if
(
HouseType
==
5
)
{
str
=
"拼凑双人间"
;
}
else
{
str
=
"未分配"
;
}
return
str
;
},
//获取数据
getList
()
{
this
.
QueryMsg
.
loading
=
true
;
this
.
apipost
(
"travel_get_GetTravelGuestPageList"
,
this
.
msg
,
res
=>
{
this
.
QueryMsg
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
QueryMsg
.
dataList
=
res
.
data
.
data
.
pageData
.
result
;
this
.
IsHaveLeader
=
res
.
data
.
data
.
pageData
.
IsHaveLeader
;
this
.
IsLeaderGuide
=
res
.
data
.
data
.
pageData
.
IsLeaderGuide
;
}
}
},
err
=>
{}
);
},
exportExcel
()
{
this
.
QueryMsg
.
loading
=
true
;
//导出报表
let
msg
=
{
TCID
:
this
.
msg
.
TCID
,
isGetTicket
:
1
,
//不查询机票
isGetZiYouXing
:
1
,
//不查询自由行
};
var
fileName
=
"旅客名单.xls"
;
if
(
this
.
QueryMsg
.
TeamInfoData
!=
null
)
{
fileName
=
"【"
+
this
.
QueryMsg
.
TeamInfoData
[
0
].
TCNUM
+
"】旅客名单.xls"
;
}
}
this
.
QueryMsg
.
dataList
=
Diningdest
;
},
//获取数据
getList
()
{
this
.
QueryMsg
.
loading
=
true
;
this
.
apipost
(
"travel_get_GetTravelGuestPageList_V2"
,
this
.
msg
,
res
=>
{
this
.
GetLocalFile
(
"travel_get_GetTravelGuestExport"
,
msg
,
fileName
,
res
=>
{
this
.
QueryMsg
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
let
list
=
res
.
data
.
data
.
pageData
.
result
;
this
.
IsHaveLeader
=
res
.
data
.
data
.
pageData
.
IsHaveLeader
;
this
.
IsLeaderGuide
=
res
.
data
.
data
.
pageData
.
IsLeaderGuide
;
this
.
houseList
=
res
.
data
.
data
.
pageData
.
houseList
;
let
disNum
=
[],
numberList
=
this
.
numberList
;
this
.
allDIs
=
res
.
data
.
data
.
pageData
.
OpSureHouse
==
2
?
true
:
false
list
.
map
(
x
=>
{
if
(
x
.
HouseType
==
1
&&
this
.
IsLeaderGuide
==
1
){
disNum
.
push
(
x
.
HouseNo
)
}
})
for
(
let
i
=
0
;
i
<
disNum
.
length
;
i
++
){
for
(
let
o
=
0
;
o
<
numberList
.
length
;
o
++
){
if
(
disNum
[
i
]
==
numberList
[
o
].
name
){
numberList
[
o
].
dis
=
true
}
}
});
},
//获取团期信息
getTeamInfo
()
{
var
qmsg
=
{
TCID
:
this
.
TCID
,
};
this
.
apipost
(
"travel_get_GetTravelPriceReportInfo"
,
qmsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
QueryMsg
.
TeamInfoData
=
res
.
data
.
data
;
}
this
.
dataList
=
list
this
.
numberList
=
numberList
// this.setDataList(list)
}
},
err
=>
{}
);
},
exportExcel
()
{
//导出报表
let
msg
=
{
TCID
:
this
.
msg
.
TCID
};
var
fileName
=
"旅客名单.xls"
;
if
(
this
.
QueryMsg
.
TeamInfoData
!=
null
)
{
fileName
=
"【"
+
this
.
QueryMsg
.
TeamInfoData
[
0
].
TCNUM
+
"】旅客名单.xls"
;
},
err
=>
{}
);
}
this
.
GetLocalFile
(
"travel_get_GetTravelGuestExport"
,
msg
,
fileName
);
},
//获取团期信息
getTeamInfo
()
{
var
qmsg
=
{
TCID
:
this
.
TCID
};
this
.
apipost
(
"travel_get_GetTravelPriceReportInfo"
,
qmsg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
QueryMsg
.
TeamInfoData
=
res
.
data
.
data
;
}
},
err
=>
{}
);
mounted
()
{
this
.
TCID
=
this
.
$route
.
query
.
id
;
this
.
msg
.
TCID
=
this
.
TCID
;
this
.
msg
.
OrderId
=
this
.
$route
.
query
.
OrderId
;
this
.
getTeamInfo
();
this
.
getList
();
}
},
mounted
()
{
let
numberList
=
[]
for
(
let
i
=
0
;
i
<
99
;
i
++
)
{
numberList
.
push
({
name
:
`
${
i
+
1
}
`
,
dis
:
false
,
})
}
this
.
numberList
=
numberList
this
.
TCID
=
this
.
$route
.
query
.
id
;
this
.
msg
.
TCID
=
this
.
TCID
;
this
.
msg
.
OrderId
=
this
.
$route
.
query
.
OrderId
;
this
.
getTeamInfo
();
this
.
getList
();
this
.
getHouseTypeList
();
}
};
</
script
>
\ No newline at end of file
};
</
script
>
src/components/TravelManager/TravelList/TravelpassengerList.vue
View file @
5419dd3b
<
style
>
.PT_teamTable
{
width
:
8
0
0px
;
.P
assengerList
.PT_teamTable.P
T_teamTable
{
width
:
8
5
0px
;
border-collapse
:
collapse
;
}
.PT_teamTable
td
,
.PT_teamTable
th
{
.P
assengerList
.P
T_teamTable
td
,
.P
assengerList
.P
T_teamTable
th
{
border
:
1px
solid
#dcdcdc
;
padding
:
5px
;
height
:
30px
;
}
.PT_teamTable
tr
th
{
.P
assengerList
.P
T_teamTable
tr
th
{
background
:
#eee
;
height
:
30px
;
border
:
1px
solid
#dcdcdc
;
}
.PT_teamTable
tr
td
{
.P
assengerList
.P
T_teamTable
tr
td
{
background
:
#fff
;
}
.travelpassengerlist
{
.
PassengerList
.
travelpassengerlist
{
font-size
:
12px
;
background
:
#dcdcdc
;
}
.travelpassengerlist
tr
th
{
.
PassengerList
.
travelpassengerlist
tr
th
{
height
:
30px
;
}
.travelpassengerlist
tr
td
{
.
PassengerList
.
travelpassengerlist
tr
td
{
background
:
#fff
;
text-align
:
center
;
}
/*拒签人员*/
.travelpassengerlist
.redTr
td
{
.
PassengerList
.
travelpassengerlist
.redTr
td
{
color
:
#E95252
;
}
.PassengerList
.leader2Btn
{
color
:
#fff
;
padding
:
0
15px
;
height
:
30px
;
background
:
#e95252
;
border
:
1px
solid
#e95252
;
cursor
:
pointer
;
border-radius
:
15px
;
}
.PassengerList
input
.houseno
{
border
:
none
;
border-bottom
:
1px
solid
#dcdcdc
;
transition
:
all
linear
.5s
;
}
.PassengerList
input
.houseno
:focus
{
border-bottom
:
1px
solid
#e95252
;
}
.PassengerList
.tips__
{
color
:
#e95252
;
text-align
:
center
;
margin
:
10px
;
}
</
style
>
<
template
>
<div
class=
"flexOne PassengerList"
>
<div
class=
"flexOne PassengerList
PassengerList
"
>
<div
class=
"query-box"
>
<ul>
<li>
...
...
@@ -51,29 +77,31 @@
<tr>
<th
width=
"140"
>
团号
</th>
<th>
团名
</th>
<th
width=
"60"
>
人数
</th>
<th
width=
"120"
>
出发日期
</th>
</tr>
<tr
v-for=
"item in QueryMsg.TeamInfoData"
>
<td><a
@
click=
"goUrlTravelControl('团控列表','TravelControlList',item.TCID,item.TCNUM)"
style=
"cursor:pointer;color:blue;"
>
{{
item
.
TCNUM
}}
</a></td>
<td>
{{
item
.
Title
}}
</td>
<td>
{{
item
.
Inventory
}}
人
</td>
<td>
{{
item
.
StartDate
}}
{{
item
.
WeekStr
}}
</td>
</tr>
</table>
</li>
<li>
<input
type=
"button"
class=
"normalBtn"
v-if=
"!allDIs"
value=
"分房表确认"
@
click=
"querenHotel()"
>
<input
type=
"button"
class=
"normalBtn"
value=
"导出报表"
@
click=
"exportExcel()"
>
</li>
</ul>
</div>
<table
class=
"travelpassengerlist"
border=
"0"
cellspacing=
"1"
cellpadding=
"0"
v-loading=
"QueryMsg.loading"
>
<p
class=
"tips__"
v-if=
"allDIs"
>
op已确认分房,不能在进行任何操作
</p>
<table
style=
"margin-bottom: 50px;"
class=
"travelpassengerlist"
border=
"0"
cellspacing=
"1"
cellpadding=
"0"
v-loading=
"QueryMsg.loading"
>
<tr>
<th
width=
"50"
>
房间数
</th>
<th
width=
"50"
>
房号
</th>
<th
width=
"130"
>
酒店及房型
</th>
<th
width=
"130"
>
旅客姓名
</th>
<th
width=
"120"
>
占床
</th>
<th
width=
"110"
>
英文姓
</th>
<th
width=
"145"
>
英文名
</th>
<th
width=
"45"
>
性别
</th>
...
...
@@ -93,23 +121,28 @@
<th
width=
"120"
>
签证类型
</th>
</tr>
<tr>
<td
v-show=
"QueryMsg.dataList.Length==0"
colspan=
"
12
"
align=
"center"
>
暂无数据
</td>
<td
v-show=
"QueryMsg.dataList.Length==0"
colspan=
"
23
"
align=
"center"
>
暂无数据
</td>
</tr>
<tbody
v-for=
"(item,index) in QueryMsg.dataList"
:key=
"index"
>
<tr
v-for=
"(subItem,subIndex) in item"
:class=
"
{'redTr':subItem.VisaState==1}">
<td
v-if=
"subIndex==0"
:rowspan=
"subItem.RowsCount"
>
{{
index
+
1
}}
</td>
<td
v-if=
"subIndex==0"
:rowspan=
"subItem.RowsCount"
></td>
<tbody>
<tr
v-for=
"(subItem, subIndex) in dataList"
:class=
"
{'redTr':subItem.VisaState==1}">
<td>
{{
subIndex
+
1
}}
</td>
<td
width=
"80"
>
<el-select
v-model=
"subItem.HouseNo"
placeholder=
"请选择"
@
change=
"sortNumberN(subItem, subIndex)"
>
<el-option
v-for=
"(hs, hsIndex) in numberList"
:disabled=
"(subItem.HouseType == 1 && IsLeaderGuide == 1) || hs.dis || allDIs"
:key=
"hs.name"
:label=
"hs.name"
:value=
"hs.name"
>
</el-option>
</el-select>
</td>
<td>
<!--自然单间 指定单间(单房差)-->
<template
v-if=
"subItem.SingleRoomType==subItem.HouseType"
>
{{
getHouseTypeStr
(
subItem
.
HouseType
)
}}
</
template
>
<
template
v-else
>
{{
getHouseTypeStr
(
subItem
.
SingleRoomType
)
}}
<br
/><span
style=
"color:red;"
>
(指定)
</span>
</
template
>
<
template
v-if=
"subItem.IsBed==0"
><br
/><span
style=
"color:red;"
>
(不占床)
</span></
template
>
<el-select
v-model=
"subItem.HouseType"
placeholder=
"请选择"
@
change=
"changeRmType(subItem, subIndex)"
>
<el-option
:disabled=
"(subItem.HouseType == 1 && IsLeaderGuide == 1) || allDIs"
v-for=
"(hs, hsIndex) in HouseTypeList"
:key=
"hsIndex"
:label=
"hs.HouseName"
:value=
"hs.HouseType"
>
</el-option>
</el-select>
</td>
<td>
{{
subItem
.
GuestName
}}
</td>
<td>
{{
subItem
.
IsBed
==
1
?
'占床'
:
'不占床'
}}
</td>
<td>
{{
subItem
.
ESurName
}}
</td>
<td>
{{
subItem
.
EName
}}
</td>
<td>
{{
getSexStr
(
subItem
)
}}
</td>
...
...
@@ -123,12 +156,51 @@
<td>
{{
subItem
.
MobilePhone
}}
</td>
<td>
{{
subItem
.
IdCard
}}
</td>
<td>
{{
subItem
.
UnitPrice
}}
</td>
<td>
{{subItem.CreateBy}}
</td>
<td>
{{
subItem
.
CreateBy
Str
}}
</td>
<td>
{{
subItem
.
GroupTypeStr
}}
</td>
<td
align=
"center"
>
经济舱
<br>
(Y)
</td>
<td>
{{subItem.VisaType}} {{subItem.VisaState==1?'拒签':"正常"}}
</td>
<td>
{{
subItem
.
VisaTypeStr
}}
{{
subItem
.
VisaTypeStr
==
1
?
'拒签'
:
"正常"
}}
</td>
</tr>
<tr
v-if=
"!allDIs"
style=
"height:50px; line-height:50px;"
>
<td
style=
"text-align:right"
colspan=
"23"
><input
type=
"button"
value=
"保存"
class=
"leader2Btn"
@
click=
"saveOPSetGuestHouse"
></td>
</tr>
</tbody>
<!--单机票和自由行-->
<tbody>
<tr
style=
"height:50px; line-height:50px;"
>
<td
colspan=
"23"
></td>
</tr>
<tr
v-for=
"(subItem, subIndex) in otherList"
:class=
"
{'redTr':subItem.VisaState==1}">
<td>
{{
subIndex
+
1
}}
</td>
<td
width=
"80"
>
</td>
<td>
{{
subItem
.
GroupTypeStr
}}
</td>
<td>
{{
subItem
.
GuestName
}}
</td>
<td>
{{
subItem
.
IsBed
==
1
?
'占床'
:
'不占床'
}}
</td>
<td>
{{
subItem
.
ESurName
}}
</td>
<td>
{{
subItem
.
EName
}}
</td>
<td>
{{
getSexStr
(
subItem
)
}}
</td>
<td>
{{
subItem
.
Birthday
}}
</td>
<td>
{{
subItem
.
PeopleType
}}
</td>
<td>
{{
subItem
.
BirthdayAddress
}}
</td>
<td>
{{
subItem
.
PassportNo
}}
</td>
<td>
{{
subItem
.
PassportAddress
}}
</td>
<td>
{{
subItem
.
PassportIssued
}}
</td>
<td>
{{
subItem
.
PassportExpiry
}}
</td>
<td>
{{
subItem
.
MobilePhone
}}
</td>
<td>
{{
subItem
.
IdCard
}}
</td>
<td>
{{
subItem
.
UnitPrice
}}
</td>
<td>
{{
subItem
.
CreateByStr
}}
</td>
<td>
{{
subItem
.
GroupTypeStr
}}
</td>
<td
align=
"center"
>
经济舱
<br>
(Y)
</td>
<td>
{{
subItem
.
VisaTypeStr
}}
{{
subItem
.
VisaTypeStr
==
1
?
'拒签'
:
"正常"
}}
</td>
</tr>
</tbody>
</table>
...
...
@@ -144,7 +216,9 @@
PageSize
:
100
,
TCID
:
0
,
OrderId
:
0
,
currentPage
:
1
currentPage
:
1
,
isGetTicket
:
1
,
//查询机票
isGetZiYouXing
:
1
,
//查询自由行
},
IsHaveLeader
:
1
,
//1-有领队,0-无领队
IsLeaderGuide
:
0
,
//1-领兼导,0-领队
...
...
@@ -157,10 +231,85 @@
OrderId
:
0
,
//团期数据
TeamInfoData
:
[]
}
},
houseList
:
[],
HouseTypeList
:
[],
numberList
:
[],
dataList
:
[],
otherList
:
[],
//单机票和自由行列表
allDIs
:
false
,
};
},
methods
:
{
// 确认酒店
querenHotel
:
function
()
{
this
.
apipost
(
"travel_get_UpdateOpSureHouse"
,
{
TCID
:
this
.
TCID
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
$message
.
success
(
'操作成功'
)
this
.
getList
()
}
else
{
this
.
$message
.
error
(
'操作失败'
)
}
},
err
=>
{}
);
},
// 修改类型
changeRmType
:
function
(
obj
,
index
)
{
let
list
=
this
.
dataList
;
for
(
let
i
=
0
;
i
<
list
.
length
;
i
++
)
{
if
(
obj
.
HouseNo
===
list
[
i
].
HouseNo
)
{
list
[
i
].
HouseType
=
obj
.
HouseType
list
[
i
].
SingleRoomType
=
obj
.
HouseType
}
}
list
=
list
.
sort
(
this
.
compare
)
this
.
dataList
=
list
;
},
compare
:
function
(
obj1
,
obj2
)
{
var
val1
=
Number
(
obj1
.
HouseNo
);
var
val2
=
Number
(
obj2
.
HouseNo
);
if
(
val1
<
val2
)
{
return
-
1
;
}
else
if
(
val1
>
val2
)
{
return
1
;
}
else
{
return
0
;
}
},
// 修改房号
sortNumberN
:
function
(
obj
,
index
)
{
let
list
=
this
.
dataList
;
// 选择房号后循环数据把房号相同的数据房型修改成一样的
for
(
let
i
=
0
;
i
<
list
.
length
;
i
++
)
{
if
(
obj
.
HouseNo
===
list
[
i
].
HouseNo
&&
obj
.
Id
!==
list
[
i
].
Id
)
{
obj
.
HouseType
=
list
[
i
].
HouseType
list
[
index
].
SingleRoomType
=
list
[
i
].
HouseType
}
}
list
=
list
.
sort
(
this
.
compare
)
this
.
dataList
=
list
;
},
//保存分房
saveOPSetGuestHouse
:
function
()
{
this
.
apipost
(
"travel_get_OPSetGuestHouse"
,
this
.
dataList
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
$message
.
success
(
'操作成功'
)
this
.
getList
()
}
else
{
this
.
$message
.
error
(
'操作失败'
)
}
},
err
=>
{}
);
},
goUrlTravelControl
(
name
,
path
,
id
,
tcmun
)
{
this
.
$router
.
push
({
name
:
path
,
...
...
@@ -200,37 +349,92 @@
}
return
str
;
},
getHouseTypeList
:
function
()
{
this
.
apipost
(
"travel_get_GetHouseType"
,
this
.
msg
,
res
=>
{
this
.
QueryMsg
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
HouseTypeList
=
res
.
data
.
data
;
}
},
err
=>
{}
);
},
setDataList
:
function
(
list
)
{
var
Diningmap
=
{},
Diningdest
=
[];
for
(
var
i
=
0
;
i
<
list
.
length
;
i
++
)
{
var
ai
=
list
[
i
];
if
(
!
Diningmap
[
ai
.
HouseNo
])
{
Diningdest
.
push
({
HouseType
:
ai
.
HouseType
,
HouseNo
:
ai
.
HouseNo
,
data
:
[
ai
]
});
Diningmap
[
ai
.
HouseNo
]
=
ai
;
}
else
{
for
(
var
j
=
0
;
j
<
Diningdest
.
length
;
j
++
)
{
var
dj
=
Diningdest
[
j
];
if
(
dj
.
HouseType
==
ai
.
HouseType
&&
dj
.
HouseNo
==
ai
.
HouseNo
)
{
dj
.
data
.
push
(
ai
);
break
;
}
}
}
}
this
.
QueryMsg
.
dataList
=
Diningdest
;
},
//获取数据
getList
()
{
this
.
QueryMsg
.
loading
=
true
;
this
.
apipost
(
"travel_get_GetTravelGuestPageList"
,
"travel_get_GetTravelGuestPageList
_V2
"
,
this
.
msg
,
res
=>
{
this
.
QueryMsg
.
loading
=
false
;
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
QueryMsg
.
dataList
=
res
.
data
.
data
.
pageData
.
result
;
let
list
=
res
.
data
.
data
.
pageData
.
result
;
this
.
otherList
=
res
.
data
.
data
.
pageData
.
otherResult
;
this
.
IsHaveLeader
=
res
.
data
.
data
.
pageData
.
IsHaveLeader
;
this
.
IsLeaderGuide
=
res
.
data
.
data
.
pageData
.
IsLeaderGuide
;
this
.
houseList
=
res
.
data
.
data
.
pageData
.
houseList
;
let
disNum
=
[],
numberList
=
this
.
numberList
;
this
.
allDIs
=
res
.
data
.
data
.
pageData
.
OpSureHouse
==
2
?
true
:
false
list
.
map
(
x
=>
{
if
(
x
.
HouseType
==
1
&&
this
.
IsLeaderGuide
==
1
)
{
disNum
.
push
(
x
.
HouseNo
)
}
})
for
(
let
i
=
0
;
i
<
disNum
.
length
;
i
++
)
{
for
(
let
o
=
0
;
o
<
numberList
.
length
;
o
++
)
{
if
(
disNum
[
i
]
==
numberList
[
o
].
name
)
{
numberList
[
o
].
dis
=
true
}
}
}
this
.
dataList
=
list
this
.
numberList
=
numberList
}
},
err
=>
{}
);
},
exportExcel
()
{
this
.
QueryMsg
.
loading
=
true
;
//导出报表
let
msg
=
{
TCID
:
this
.
msg
.
TCID
TCID
:
this
.
msg
.
TCID
,
isGetTicket
:
0
,
//查询机票
isGetZiYouXing
:
0
,
//查询自由行
};
var
fileName
=
"旅客名单.xls"
;
if
(
this
.
QueryMsg
.
TeamInfoData
!=
null
)
{
fileName
=
"【"
+
this
.
QueryMsg
.
TeamInfoData
[
0
].
TCNUM
+
"】旅客名单.xls"
;
}
this
.
GetLocalFile
(
"travel_get_GetTravelGuestExport"
,
msg
,
fileName
,
res
=>
{
this
.
QueryMsg
.
loading
=
false
;
});
this
.
GetLocalFile
(
"travel_get_GetTravelGuestExport"
,
msg
,
fileName
);
},
//获取团期信息
...
...
@@ -251,11 +455,20 @@
}
},
mounted
()
{
let
numberList
=
[]
for
(
let
i
=
0
;
i
<
99
;
i
++
)
{
numberList
.
push
({
name
:
`
${
i
+
1
}
`
,
dis
:
false
,
})
}
this
.
numberList
=
numberList
this
.
TCID
=
this
.
$route
.
query
.
id
;
this
.
msg
.
TCID
=
this
.
TCID
;
this
.
msg
.
OrderId
=
this
.
$route
.
query
.
OrderId
;
this
.
getTeamInfo
();
this
.
getList
();
this
.
getHouseTypeList
();
}
};
...
...
src/router/config.js
View file @
5419dd3b
...
...
@@ -1928,16 +1928,16 @@ export default {
title
:
'领队用款'
},
},
{
path
:
'/TravelPassengerList
'
,
//旅客名单 可
分房
name
:
'TravelPassengerList'
,
path
:
'/TravelPassengerList
2'
,
//旅客名单 不能
分房
name
:
'TravelPassengerList
2
'
,
component
:
resolve
=>
require
([
'@/components/TravelManager/TravelList/TravelPassengerList2'
],
resolve
),
meta
:
{
title
:
'旅客名单'
},
},
{
path
:
'/TravelPassengerList
2'
,
//旅客名单 不能分房
name
:
'TravelPassengerList
2
'
,
path
:
'/TravelPassengerList
'
,
//旅客名单 可分房
name
:
'TravelPassengerList'
,
component
:
resolve
=>
require
([
'@/components/TravelManager/TravelList/TravelPassengerList'
],
resolve
),
meta
:
{
title
:
'旅客名单'
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment