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
5b662960
Commit
5b662960
authored
Mar 22, 2019
by
华国豪
🙄
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://gitlab.oytour.com/luochao/superman
parents
2e3b4bb8
931a4ec0
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
864 additions
and
655 deletions
+864
-655
EasyReport.vue
src/components/FinancialModule/ReportForm/EasyReport.vue
+1
-1
TeamRevenueReport.vue
...mponents/FinancialModule/ReportForm/TeamRevenueReport.vue
+18
-17
roomReservations.vue
src/components/Hotel/roomReservations.vue
+423
-310
roomReservationsDetails.vue
src/components/Hotel/roomReservationsDetails.vue
+422
-327
No files found.
src/components/FinancialModule/ReportForm/EasyReport.vue
View file @
5b662960
...
...
@@ -52,7 +52,7 @@
</el-form>
<div
class=
"page_EasyReport_export"
>
<button
class=
"normalBtn "
@
click=
"exportExcel"
>
导出EXCEL
</button>
<
button
class=
"normalBtn "
@
click=
"togbu"
>
一键同步
</button
>
<
!--
<button
class=
"normalBtn "
@
click=
"togbu"
>
一键同步
</button>
--
>
</div>
<button
class=
"normalBtn page_EasyReport_search"
@
click=
"getData"
>
确定
</button>
</div>
...
...
src/components/FinancialModule/ReportForm/TeamRevenueReport.vue
View file @
5b662960
...
...
@@ -515,7 +515,7 @@ tr._item_list td:last-child {
<button
class=
"hollowFixedBtn"
@
click=
"openKaiQiZzBox('一键关闭')"
>
一键关闭
</button>
-->
<button
class=
"normalBtn"
@
click=
"resetPageIndex(),getPageList()"
>
{{
$t
(
'pub.searchBtn'
)
}}
</button>
<button
class=
"hollowFixedBtn"
@
click=
"method5()"
>
导出
</button>
<
button
class=
"normalBtn"
@
click=
"togbu"
>
一键同步
</button
>
<
!--
<button
class=
"normalBtn"
@
click=
"togbu"
>
一键同步
</button>
--
>
<!--
<button
class=
"hollowFixedBtn"
@
click=
"exportExcelCurrentPage"
>
导出2
</button>
-->
</li>
</ul>
...
...
@@ -1070,7 +1070,7 @@ export default {
},
{
field
:
"MaoLiRate"
,
formatter
:
this
.
moneyFormat
,
//
formatter: this.moneyFormat,
title
:
"毛利率"
,
width
:
90
,
titleAlign
:
"left"
,
...
...
@@ -1681,7 +1681,7 @@ export default {
return
this
.
priceFormat
(
rowData
.
YongJinShouRu
);
if
(
field
===
"YingFu"
)
return
this
.
priceFormat
(
rowData
.
YingFu
);
if
(
field
===
"MaoLi"
)
return
this
.
priceFormat
(
rowData
.
MaoLi
);
if
(
field
===
"MaoLiRate"
)
return
rowData
.
MaoLiRate
+
"%"
;
// if (field === "MaoLiRate") return rowData.MaoLiRate
;
if
(
field
===
"ShiJiLiRun"
)
return
this
.
priceFormat
(
rowData
.
ShiJiLiRun
);
if
(
field
===
"TransportCost"
)
return
this
.
priceFormat
(
rowData
.
TransportCost
);
...
...
@@ -1861,24 +1861,25 @@ export default {
}
else
{
let
newData
=
[];
data
.
forEach
((
x
,
index
)
=>
{
x
.
MaoLiRate
=
x
.
MaoLiRate
+
"%"
;
if
(
index
!==
data
.
length
-
1
)
{
x
.
Is_Transport
=
x
.
Is_Transport
===
0
?
"否"
:
"是"
;
newData
.
push
(
x
);
}
else
{
x
.
MaoLiRate
=
this
.
total
===
0
?
0
:
parseFloat
(
x
.
MaoLiRate
/
this
.
total
);
x
.
AverageIncome
=
this
.
total
===
0
?
0
:
parseFloat
(
x
.
AverageIncome
/
this
.
total
);
x
.
AverageCost
=
this
.
total
===
0
?
0
:
parseFloat
(
x
.
AverageCost
/
this
.
total
);
x
.
AverageProfit
=
this
.
total
===
0
?
0
:
parseFloat
(
x
.
AverageProfit
/
this
.
total
);
//
x.MaoLiRate =
//
this.total === 0 ? 0 : parseFloat(x.MaoLiRate / this.total);
//
x.AverageIncome =
//
this.total === 0
//
? 0
//
: parseFloat(x.AverageIncome / this.total);
//
x.AverageCost =
//
this.total === 0
//
? 0
//
: parseFloat(x.AverageCost / this.total);
//
x.AverageProfit =
//
this.total === 0
//
? 0
//
: parseFloat(x.AverageProfit / this.total);
x
.
LineName
=
"合计"
;
x
.
TCID
=
""
;
x
.
TCNUM
=
""
;
...
...
src/components/Hotel/roomReservations.vue
View file @
5b662960
<
template
>
<div>
<div
class=
"query-box"
style=
"border-bottom: none;"
>
<ul>
<!--
<li><span><em>
线路
</em>
<el-select
v-model=
"msg.LineId"
filterable
:placeholder=
"$t('pub.pleaseSel')"
@
change=
"getLineTeamList(msg.LineId)"
>
<el-option
label=
"不限"
value=
'-1'
></el-option>
<el-option
v-for=
"item in LineList"
:label=
'item.LineName'
:value=
'item.LineID'
:key=
'item.LineID'
>
</el-option>
</el-select>
</span>
</li>
-->
<li><span><em>
系列
</em>
<el-select
v-model=
"msg.LineteamId"
filterable
:placeholder=
"$t('pub.pleaseSel')"
>
<el-option
label=
"不限"
value=
'-1'
></el-option>
<el-option
v-for=
"item in LineTeamList"
:label=
'item.LtName'
:value=
'item.LtID'
:key=
'item.LtID'
>
</el-option>
</el-select>
</span>
</li>
<li>
<span>
<em>
团号
</em><el-input
v-model=
'msg.TCNUM'
></el-input>
</span>
</li>
<li><span><em>
日期
</em><el-date-picker
v-model=
'msg.StartDate'
class=
'w135'
value-format=
"yyyy-MM-dd"
type=
"date"
></el-date-picker>
-
<el-date-picker
v-model=
'msg.EndDate'
class=
'w135'
value-format=
"yyyy-MM-dd"
type=
"date"
></el-date-picker>
</span>
</li>
<li>
<input
type=
"button"
class=
"normalBtn"
value=
"查询"
@
click=
"getList();resetPageIndex()"
/>
</li>
</ul>
</div>
<div
style=
"width: 100%; overflow-x: auto;padding-bottom: 10px; "
class=
"ownScrollbarStyle"
>
<table
border=
"0"
cellspacing=
"1"
cellpadding=
"0"
class=
"roomReservationsTalbe"
v-loading=
'loading'
>
<tr>
<th
width=
"w50"
>
序号
</th>
<th
width=
"120"
>
出发地
</th>
<th
width=
"120"
>
航班时间
</th>
<th
width=
"80"
>
公司团号
</th>
<th
width=
"120"
>
机位总数/(Y/E/F)
</th>
<th
width=
"120"
>
占床/不占床
</th>
<th
width=
"80"
>
实际用房数
</th>
<th></th>
<th
v-for=
'item in thLengthTitle'
>
{{
item
}}
</th>
<th>
备注
</th>
<th>
操作
</th>
</tr>
<tr
v-if=
"list.length==0"
>
<td
colspan=
"10"
>
暂无数据
</td>
</tr>
<tbody
v-for=
"(outItem,outindex) in list"
:class=
"
{roomReservationsSplitTrCss:outindex%2!=0}">
<template
v-for=
"(item,index) in outItem.StaticsReportList"
>
<tr>
<td
:rowspan=
"2*outItem.StaticsReportList.length"
v-if=
'index==0'
>
<div
style=
"max-width: 100px; min-width: 50px; "
>
{{
outindex
+
1
}}
</div>
<div
v-if=
'outItem.StaticsReportList.length>1'
class=
"w100"
>
合团号:
{{
outItem
.
NewCombinationNum
}}
</div>
</td>
<td><div
class=
"w80"
>
{{
item
.
StartCityNames
}}
</div></td>
<td><div
class=
"w80"
>
{{
item
.
FlightDate
}}
<el-popover
popper-class=
"roomReservations_tripDetails"
width=
"550"
trigger=
"click"
>
<table
width=
"100%"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
>
<tr
class=
"_color_666"
style=
"text-align:center;"
>
<th
width=
"60"
>
{{
$t
(
'Airticket.Air_segment'
)
}}
</th>
<th
width=
"80"
>
{{
$t
(
'system.query_flightNum'
)
}}
</th>
<th
width=
"150"
>
起飞时间
</th>
<th
width=
"80"
>
到达时间
</th>
<th
width=
"100"
>
经停城市
</th>
</tr>
<tr
v-for=
"(ds,din) in item.FlightList"
:key=
"din"
style=
"text-align:center;"
>
<td
class=
"_d_name _color_666"
>
<span
v-if=
"din==0"
>
{{
$t
(
'Airticket.Air_go'
)
}}
</span>
<span
v-else-if=
"din==item.FlightList.length-1"
>
{{
$t
(
'Airticket.Air_returnTrip'
)
}}
</span>
<span
v-else-if=
"din>0 && din!=item.FlightList.length-1"
>
{{
$t
(
'Airticket.Air_transit'
)
}}
</span>
</td>
<td>
<div>
{{
ds
.
Flight_number
}}
</div>
<div
style=
"margin-top:5px;"
>
{{
ds
.
AlName
}}
</div>
</td>
<td>
<div>
{{
ds
.
FlightDate
}}
{{
ds
.
Departure_time
}}
</div>
<div
style=
"margin-top:5px;"
>
{{
ds
.
dName
}}
</div>
</td>
<td>
<div>
{{
ds
.
FlightArrivalTime
}}
{{
ds
.
Arrival_time
}}
</div>
<div
style=
"margin-top:5px;"
>
{{
ds
.
aName
}}
</div>
</td>
<td>
{{
ds
.
StopoverName
}}
</td>
</tr>
</table>
<el-button
slot=
"reference"
class=
"normalBtn mt5"
style=
'height:24px; padding: 0 10px; background: #2AAEF2; border-color: #2AAEF2;'
>
详情
</el-button>
</el-popover>
</div></td>
<td><div
class=
"w120 link"
>
<p
@
click=
"goUrlT('productQuery',item.TCNUMS,'产品查询')"
>
{{
item
.
TCNUMS
}}
</p>
</div></td>
<td><div
class=
"w120 link"
>
<p
@
click=
"goUrlT('RegistrationList',item.TCIDS,'报名清单')"
>
{{
item
.
TotalSeat
}}
/
{{
item
.
CommonReport
.
HouseStatistics
.
RealityYSeatNum
}}
/
{{
item
.
CommonReport
.
HouseStatistics
.
RealityESeatNum
}}
/
{{
item
.
CommonReport
.
HouseStatistics
.
RealityFSeatNum
}}
</p>
</div></td>
<td><div
class=
"w80 link"
>
<p
@
click=
"goUrlT('passengerHouse',item.TCIDS,'房间分配')"
>
{{
item
.
CommonReport
.
HouseStatistics
.
NeedBed
}}
/
{{
item
.
CommonReport
.
HouseStatistics
.
NoNeedBed
}}
</p>
</div></td>
<td><div
class=
"w80"
>
{{
item
.
CommonReport
.
HouseStatistics
.
RealityRoomNum
}}
</div></td>
<td
style=
"vertical-align: top;"
>
<div
class=
"w260"
>
<p
class=
"pDateStyle"
>
时间
</p>
<p
class=
"pDateStyle"
style=
"height: 50px!important; line-height: 50px;"
>
酒店名称
</p>
<p
class=
"pDateStyle"
>
用房数
</p>
<p
class=
"pDateStyle"
>
房间预定数
</p>
<p
class=
"pDateStyle"
>
<span
v-show=
"item.CommonReport.HouseStatistics.HouseTypeList.length==0"
>
房型
</span>
<span
v-for=
"x in item.CommonReport.HouseStatistics.HouseTypeList"
>
{{
x
.
HouseTypeName
}}
</span>
</p>
</div>
</td>
<td
v-for=
"(x,ii) in item.CommonReport.HotelList"
style=
"vertical-align: top;"
>
<div
class=
"w150"
v-if=
'ii
<item
.
CommonReport
.
valueLength
'
>
<p
class=
"pDateStyle"
>
{{
x
.
CheckInDateStr
}}
</p>
<p
@
click=
"goUrlR('HotelManagement',x.HotelId,'酒店管理')"
class=
"pDateStyle phoverStype ownScrollbarStyle"
style=
"height: 50px!important; overflow:auto;"
>
<span
v-if=
'x.HotelOrderState==0'
class=
"colorE95252"
>
(待定)
</span>
{{
x
.
NewHotelName
}}
</p>
<p
class=
"pDateStyle"
>
{{
item
.
CommonReport
.
HouseStatistics
.
RealityRoomNum
}}
</p>
<p
class=
"pDateStyle"
>
<span
v-for=
"q in x.OrderDetailsList"
>
{{
q
.
HouseTypeCount
}}
</span>
</p>
<p
class=
"pDateStyle"
>
<span
v-for=
"x in item.CommonReport.HouseStatistics.HouseTypeList"
>
{{
x
.
HouseTypeCount
}}
</span>
<span
v-if=
"item.CommonReport.HouseStatistics.HouseTypeList.length==0"
>
暂无订房
</span>
</p>
</div>
<div>
<div
class=
"query-box"
style=
"border-bottom: none;"
>
<ul>
</td>
<td>
<div
class=
"w200"
>
{{
item
.
Remarks
}}
</div>
</td>
<td>
<div
class=
"w80 link"
>
<p
@
click=
"goUrl('roomReservationsDetails',item,'订房详情')"
>
详情
</p>
</div>
</td>
</tr>
<li><span><em>
系列
</em>
<el-select
v-model=
"msg.LineteamId"
filterable
:placeholder=
"$t('pub.pleaseSel')"
>
<el-option
label=
"不限"
value=
'-1'
></el-option>
<el-option
v-for=
"item in LineTeamList"
:label=
'item.LtName'
:value=
'item.LtID'
:key=
'item.LtID'
>
</el-option>
</el-select>
</span>
</li>
<li>
<span>
<em>
团号
</em>
<el-input
v-model=
'msg.TCNUM'
></el-input>
</span>
</li>
<li><span><em>
日期
</em>
<el-date-picker
v-model=
'msg.StartDate'
class=
'w135'
value-format=
"yyyy-MM-dd"
type=
"date"
></el-date-picker>
-
<el-date-picker
v-model=
'msg.EndDate'
class=
'w135'
value-format=
"yyyy-MM-dd"
type=
"date"
></el-date-picker>
</span>
</li>
<li>
<input
type=
"button"
class=
"normalBtn"
value=
"查询"
@
click=
"getList();resetPageIndex()"
/>
</li>
</ul>
</div>
<div
style=
"width: 100%; overflow-x: auto;padding-bottom: 10px; "
class=
"ownScrollbarStyle"
>
<table
border=
"0"
cellspacing=
"1"
cellpadding=
"0"
class=
"roomReservationsTalbe"
v-loading=
'loading'
>
<tr>
<td
:colspan=
"colspanTotal"
style=
"text-align: left!important;padding-left: 20px;"
>
<div
class=
"link"
>
<p
@
click=
"goUrlT('productQuery',item.TCNUMS,'产品查询')"
>
{{
item
.
Titles
}}
</p>
<div
v-show=
"outItem.StaticsReportList[0].DMCRemark!=''"
class=
"colorE95252"
>
地接备注:
{{
outItem
.
StaticsReportList
[
0
].
DMCRemark
}}
</div>
</div>
</td>
<th
width=
"w50"
>
序号
</th>
<th
width=
"120"
>
出发地
</th>
<th
width=
"120"
>
航班时间
</th>
<th
width=
"80"
>
公司团号
</th>
<th
width=
"120"
>
机位总数/(Y/E/F)
</th>
<th
width=
"120"
>
占床/不占床
</th>
<th
width=
"80"
>
实际用房数
</th>
<th></th>
<th
v-for=
'item in thLengthTitle'
>
{{
item
}}
</th>
<th>
备注
</th>
<th>
操作
</th>
</tr>
<tr
v-if=
"list.length==0"
>
<td
colspan=
"10"
>
暂无数据
</td>
</tr>
</
template
>
</tbody>
</table>
</div>
<el-pagination
background
@
current-change=
"handleCurrentChange"
:current-page
.
sync=
"currentPage"
layout=
"total,prev, pager, next, jumper"
:page-size=
msg.pageSize
:total=
total
></el-pagination>
</div>
<tbody
v-for=
"(outItem,outindex) in list"
:class=
"
{roomReservationsSplitTrCss:outindex%2!=0}">
<template
v-for=
"(item,index) in outItem.StaticsReportList"
>
<tr>
<td
:rowspan=
"2*outItem.StaticsReportList.length"
v-if=
'index==0'
>
<div
style=
"max-width: 100px; min-width: 50px; "
>
{{
outindex
+
1
}}
</div>
<div
v-if=
'outItem.StaticsReportList.length>1'
class=
"w100"
>
合团号:
{{
outItem
.
NewCombinationNum
}}
</div>
</td>
<td>
<div
class=
"w80"
>
{{
item
.
StartCityNames
}}
</div>
</td>
<td>
<div
class=
"w80"
>
{{
item
.
FlightDate
}}
<el-popover
popper-class=
"roomReservations_tripDetails"
width=
"550"
trigger=
"click"
>
<table
width=
"100%"
border=
"0"
cellspacing=
"0"
cellpadding=
"0"
>
<tr
class=
"_color_666"
style=
"text-align:center;"
>
<th
width=
"60"
>
{{
$t
(
'Airticket.Air_segment'
)
}}
</th>
<th
width=
"80"
>
{{
$t
(
'system.query_flightNum'
)
}}
</th>
<th
width=
"150"
>
起飞时间
</th>
<th
width=
"80"
>
到达时间
</th>
<th
width=
"100"
>
经停城市
</th>
</tr>
<tr
v-for=
"(ds,din) in item.FlightList"
:key=
"din"
style=
"text-align:center;"
>
<td
class=
"_d_name _color_666"
>
<span
v-if=
"din==0"
>
{{
$t
(
'Airticket.Air_go'
)
}}
</span>
<span
v-else-if=
"din==item.FlightList.length-1"
>
{{
$t
(
'Airticket.Air_returnTrip'
)
}}
</span>
<span
v-else-if=
"din>0 && din!=item.FlightList.length-1"
>
{{
$t
(
'Airticket.Air_transit'
)
}}
</span>
</td>
<td>
<div>
{{
ds
.
Flight_number
}}
</div>
<div
style=
"margin-top:5px;"
>
{{
ds
.
AlName
}}
</div>
</td>
<td>
<div>
{{
ds
.
FlightDate
}}
{{
ds
.
Departure_time
}}
</div>
<div
style=
"margin-top:5px;"
>
{{
ds
.
dName
}}
</div>
</td>
<td>
<div>
{{
ds
.
FlightArrivalTime
}}
{{
ds
.
Arrival_time
}}
</div>
<div
style=
"margin-top:5px;"
>
{{
ds
.
aName
}}
</div>
</td>
<td>
{{
ds
.
StopoverName
}}
</td>
</tr>
</table>
<el-button
slot=
"reference"
class=
"normalBtn mt5"
style=
'height:24px; padding: 0 10px; background: #2AAEF2; border-color: #2AAEF2;'
>
详情
</el-button>
</el-popover>
</div>
</td>
<td>
<div
class=
"w120 link"
>
<p
@
click=
"goUrlT('productQuery',item.TCNUMS,'产品查询')"
>
{{
item
.
TCNUMS
}}
</p>
</div>
</td>
<td>
<div
class=
"w120 link"
>
<p
@
click=
"goUrlT('RegistrationList',item.TCIDS,'报名清单')"
>
{{
item
.
TotalSeat
}}
/
{{
item
.
CommonReport
.
HouseStatistics
.
RealityYSeatNum
}}
/
{{
item
.
CommonReport
.
HouseStatistics
.
RealityESeatNum
}}
/
{{
item
.
CommonReport
.
HouseStatistics
.
RealityFSeatNum
}}
</p>
</div>
</td>
<td>
<div
class=
"w80 link"
>
<p
@
click=
"goUrlT('passengerHouse',item.TCIDS,'房间分配')"
>
{{
item
.
CommonReport
.
HouseStatistics
.
NeedBed
}}
/
{{
item
.
CommonReport
.
HouseStatistics
.
NoNeedBed
}}
</p>
</div>
</td>
<td>
<div
class=
"w80"
>
{{
item
.
CommonReport
.
HouseStatistics
.
RealityRoomNum
}}
</div>
</td>
<td
style=
"vertical-align: top;"
>
<div
class=
"w260"
>
<p
class=
"pDateStyle"
>
时间
</p>
<p
class=
"pDateStyle"
style=
"height: 50px!important; line-height: 50px;"
>
酒店名称
</p>
<p
class=
"pDateStyle"
>
用房数
</p>
<p
class=
"pDateStyle"
>
房间预定数
</p>
<p
class=
"pDateStyle"
>
<span
v-show=
"item.CommonReport.HouseStatistics.HouseTypeList.length==0"
>
房型
</span>
<span
v-for=
"x in item.CommonReport.HouseStatistics.HouseTypeList"
>
{{
x
.
HouseTypeName
}}
</span>
</p>
</div>
</td>
<td
v-for=
"(x,ii) in item.CommonReport.HotelList"
style=
"vertical-align: top;"
>
<div
class=
"w150"
v-if=
'ii
<item
.
CommonReport
.
valueLength
'
>
<p
class=
"pDateStyle"
>
{{
x
.
CheckInDateStr
}}
</p>
<p
@
click=
"goUrlR('HotelManagement',x.HotelId,'酒店管理')"
class=
"pDateStyle phoverStype ownScrollbarStyle"
style=
"height: 50px!important; overflow:auto;"
>
<span
v-if=
'x.HotelOrderState==0'
class=
"colorE95252"
>
(待定)
</span>
{{
x
.
NewHotelName
}}
</p>
<p
class=
"pDateStyle"
>
{{
item
.
CommonReport
.
HouseStatistics
.
RealityRoomNum
}}
</p>
<p
class=
"pDateStyle"
>
<span
v-for=
"q in x.OrderDetailsList"
>
{{
q
.
HouseTypeCount
}}
</span>
</p>
<p
class=
"pDateStyle"
>
<span
v-for=
"x in item.CommonReport.HouseStatistics.HouseTypeList"
>
{{
x
.
HouseTypeCount
}}
</span>
<span
v-if=
"item.CommonReport.HouseStatistics.HouseTypeList.length==0"
>
暂无订房
</span>
</p>
</div>
</td>
<td>
<div
class=
"w200"
>
{{
item
.
Remarks
}}
</div>
</td>
<td>
<div
class=
"w80 link"
>
<p
@
click=
"goUrl('roomReservationsDetails',item,'订房详情')"
>
详情
</p>
</div>
</td>
</tr>
<tr>
<td
:colspan=
"colspanTotal"
style=
"text-align: left!important;padding-left: 20px;"
>
<div
class=
"link"
>
<p
@
click=
"goUrlT('productQuery',item.TCNUMS,'产品查询')"
>
{{
item
.
Titles
}}
</p>
<div
v-show=
"outItem.StaticsReportList[0].DMCRemark!=''"
class=
"colorE95252"
>
地接备注:
{{
outItem
.
StaticsReportList
[
0
].
DMCRemark
}}
</div>
</div>
</td>
</tr>
</
template
>
</tbody>
</table>
</div>
<el-pagination
background
@
current-change=
"handleCurrentChange"
:current-page
.
sync=
"currentPage"
layout=
"total,prev, pager, next, jumper"
:page-size=
msg.pageSize
:total=
total
></el-pagination>
</div>
</template>
<
script
>
export
default
{
data
()
{
return
{
loading
:
false
,
currentPage
:
1
,
total
:
0
,
msg
:{
pageIndex
:
1
,
pageSize
:
5
,
SelectType
:
1
,
LineId
:
14
,
LineteamId
:
"-1"
,
StartDate
:
''
,
EndDate
:
''
},
LineList
:
[],
LineTeamList
:
[],
thLengthTitle
:[],
list
:[],
colspanTotal
:
0
,
}
},
methods
:
{
getLineList
()
{
this
.
apipost
(
"line_post_GetAllList"
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
LineList
=
res
.
data
.
data
;
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
});
},
//获取系列列表
getLineTeamList
(
lineId
)
{
this
.
LineTeamList
=
[];
this
.
apipost
(
"team_post_GetList"
,
{
lineID
:
14
,
isTOOP
:
1
export
default
{
data
()
{
return
{
loading
:
false
,
currentPage
:
1
,
total
:
0
,
msg
:
{
pageIndex
:
1
,
pageSize
:
5
,
SelectType
:
1
,
LineId
:
14
,
LineteamId
:
"-1"
,
StartDate
:
''
,
EndDate
:
''
},
res
=>
{
LineList
:
[],
LineTeamList
:
[],
thLengthTitle
:
[],
list
:
[],
colspanTotal
:
0
,
}
},
methods
:
{
getLineList
()
{
this
.
apipost
(
"line_post_GetAllList"
,
{},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
LineList
=
res
.
data
.
data
;
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
);
}
});
},
//获取系列列表
getLineTeamList
(
lineId
)
{
this
.
LineTeamList
=
[];
this
.
apipost
(
"team_post_GetList"
,
{
lineID
:
14
,
isTOOP
:
1
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
msg
.
LineteamId
=
"-1"
;
this
.
LineTeamList
=
res
.
data
.
data
;
}
}
);
},
goUrlR
(
path
,
obj
,
title
)
{
this
.
$router
.
push
({
name
:
path
,
query
:
{
"ID"
:
obj
,
blank
:
'y'
,
tab
:
title
}
})
},
goUrlT
(
path
,
obj
,
title
)
{
this
.
$router
.
push
({
name
:
path
,
query
:
{
"id"
:
obj
,
blank
:
'y'
,
tab
:
title
}
})
},
goUrl
(
path
,
obj
,
title
)
{
this
.
$router
.
push
({
name
:
path
,
query
:
{
"id"
:
obj
.
TCIDS
,
'TCNUM'
:
obj
.
TCNUMS
,
'flightTotal'
:
obj
.
TotalSeat
,
'GuestNum'
:
obj
.
CommonReport
.
HouseStatistics
.
RealityNum
,
'NewCombinationNum'
:
obj
.
NewCombinationNum
,
blank
:
'y'
,
tab
:
title
}
})
},
handleCurrentChange
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getList
();
},
resetPageIndex
()
{
this
.
msg
.
pageIndex
=
1
;
this
.
currentPage
=
1
;
},
getList
()
{
this
.
loading
=
true
this
.
apipost
(
'dmcstatistics_post_GetUniteCombinationNumService'
,
this
.
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
msg
.
LineteamId
=
"-1"
;
this
.
LineTeamList
=
res
.
data
.
data
;
this
.
loading
=
false
console
.
log
(
res
.
data
.
data
.
pageData
.
data
)
this
.
total
=
res
.
data
.
data
.
count
this
.
list
=
res
.
data
.
data
.
pageData
.
data
this
.
thLengthArr
=
[]
this
.
thLengthTitle
=
[]
this
.
colspanTotal
=
res
.
data
.
data
.
pageData
.
columnsCount
+
9
for
(
let
i
=
1
;
i
<=
res
.
data
.
data
.
pageData
.
columnsCount
;
i
++
)
{
this
.
thLengthTitle
.
push
(
'第'
+
i
+
'晚'
)
}
this
.
list
.
forEach
(
outItem
=>
{
outItem
.
StaticsReportList
.
forEach
(
item
=>
{
item
.
CommonReport
[
'valueLength'
]
=
item
.
CommonReport
.
HotelList
.
length
if
(
item
.
CommonReport
.
HotelList
.
length
<
res
.
data
.
data
.
pageData
.
columnsCount
)
{
let
_cha
=
res
.
data
.
data
.
pageData
.
columnsCount
-
item
.
CommonReport
.
HotelList
.
length
let
_chaArr
=
new
Array
()
for
(
let
i
=
0
;
i
<
_cha
;
i
++
)
{
_chaArr
.
push
({
'HotelName'
:
''
})
}
item
.
CommonReport
.
HotelList
=
item
.
CommonReport
.
HotelList
.
concat
(
_chaArr
)
}
else
{
}
})
})
// this.list.forEach(item=>{
// item.CommonReport['valueLength']=item.CommonReport.HotelList.length
// if(item.CommonReport.HotelList.length
<
res
.
data
.
data
.
pageData
.
columnsCount
){
// let _cha=res.data.data.pageData.columnsCount-item.CommonReport.HotelList.length
// let _chaArr=new Array()
// for (let i=0;i
<
_cha
;
i
++
)
{
// _chaArr.push({'HotelName':''})
// }
// item.CommonReport.HotelList=item.CommonReport.HotelList.concat(_chaArr)
// console.log(item.CommonReport)
// }else{
//
// }
// })
}
else
{
this
.
loading
=
false
this
.
$message
.
error
(
res
.
data
.
message
)
}
}
);
},
goUrlR
(
path
,
obj
,
title
){
this
.
$router
.
push
({
name
:
path
,
query
:{
"ID"
:
obj
,
blank
:
'y'
,
tab
:
title
}})
},
goUrlT
(
path
,
obj
,
title
){
this
.
$router
.
push
({
name
:
path
,
query
:{
"id"
:
obj
,
blank
:
'y'
,
tab
:
title
}})
},
goUrl
(
path
,
obj
,
title
){
this
.
$router
.
push
({
name
:
path
,
query
:{
"id"
:
obj
.
TCIDS
,
'TCNUM'
:
obj
.
TCNUMS
,
'flightTotal'
:
obj
.
TotalSeat
,
'GuestNum'
:
obj
.
CommonReport
.
HouseStatistics
.
RealityNum
,
'NewCombinationNum'
:
obj
.
NewCombinationNum
,
blank
:
'y'
,
tab
:
title
}})
},
handleCurrentChange
(
val
)
{
this
.
msg
.
pageIndex
=
val
;
this
.
getList
();
},
resetPageIndex
()
{
this
.
msg
.
pageIndex
=
1
;
this
.
currentPage
=
1
;
},
getList
(){
this
.
loading
=
true
this
.
apipost
(
'dmcstatistics_post_GetUniteCombinationNumService'
,
this
.
msg
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
){
this
.
loading
=
false
console
.
log
(
res
.
data
.
data
.
pageData
.
data
)
this
.
total
=
res
.
data
.
data
.
count
this
.
list
=
res
.
data
.
data
.
pageData
.
data
this
.
thLengthArr
=
[]
this
.
thLengthTitle
=
[]
this
.
colspanTotal
=
res
.
data
.
data
.
pageData
.
columnsCount
+
9
for
(
let
i
=
1
;
i
<=
res
.
data
.
data
.
pageData
.
columnsCount
;
i
++
){
this
.
thLengthTitle
.
push
(
'第'
+
i
+
'晚'
)
}
this
.
list
.
forEach
(
outItem
=>
{
outItem
.
StaticsReportList
.
forEach
(
item
=>
{
item
.
CommonReport
[
'valueLength'
]
=
item
.
CommonReport
.
HotelList
.
length
if
(
item
.
CommonReport
.
HotelList
.
length
<
res
.
data
.
data
.
pageData
.
columnsCount
){
let
_cha
=
res
.
data
.
data
.
pageData
.
columnsCount
-
item
.
CommonReport
.
HotelList
.
length
let
_chaArr
=
new
Array
()
for
(
let
i
=
0
;
i
<
_cha
;
i
++
)
{
_chaArr
.
push
({
'HotelName'
:
''
})
}
item
.
CommonReport
.
HotelList
=
item
.
CommonReport
.
HotelList
.
concat
(
_chaArr
)
}
else
{
}
})
})
// this.list.forEach(item=>{
// item.CommonReport['valueLength']=item.CommonReport.HotelList.length
// if(item.CommonReport.HotelList.length
<
res
.
data
.
data
.
pageData
.
columnsCount
){
// let _cha=res.data.data.pageData.columnsCount-item.CommonReport.HotelList.length
// let _chaArr=new Array()
// for (let i=0;i
<
_cha
;
i
++
)
{
// _chaArr.push({'HotelName':''})
// }
// item.CommonReport.HotelList=item.CommonReport.HotelList.concat(_chaArr)
// console.log(item.CommonReport)
// }else{
//
// }
// })
}
else
{
this
.
loading
=
false
this
.
$message
.
error
(
res
.
data
.
message
)
}
},
err
=>
{})
},
},
err
=>
{})
},
},
beforeCreate
(){
beforeCreate
()
{
},
mounted
()
{
let
myDate
=
new
Date
();
let
nowDate
=
let
myDate
=
new
Date
();
let
nowDate
=
myDate
.
getFullYear
()
+
"-"
+
parseInt
(
myDate
.
getMonth
()
+
1
)
+
"-"
+
myDate
.
getDate
();
this
.
msg
.
StartDate
=
nowDate
;
this
.
getList
()
// this.getLineList()
this
.
getLineTeamList
()
},
}
this
.
msg
.
StartDate
=
nowDate
;
this
.
getList
()
// this.getLineList()
this
.
getLineTeamList
()
},
}
</
script
>
<
style
>
.roomReservationsSplitTrCss
td
{
background
:
#eee
!important
;}
.roomReservationsTalbe
{
background
:
#ccc
;}
.roomReservationsTalbe
tr
th
{
background
:
#E6E6E6
;
height
:
40px
;
font-size
:
12px
;
color
:
#333
;}
.roomReservationsTalbe
tr
{
background
:
#fff
;
text-align
:
center
;
height
:
40px
;}
.roomReservationsTalbe
tr
td
{
font-size
:
12px
;}
.roomReservationsTalbe
tr
td
.pDateStyle
{
border-bottom
:
1px
solid
#ccc
;
min-height
:
24px
;
line-height
:
24px
;
margin-top
:
0
;
box-sizing
:
content-box
;
padding
:
0
10px
;}
.roomReservationsTalbe
tr
td
.pDateStyle
:last-child
{
border-bottom
:
none
;}
.roomReservationsTalbe
tr
td
.pDateStyle
>
span
:after
{
content
:
'/'
;}
.roomReservationsTalbe
tr
td
.pDateStyle
>
span
:last-child:after
{
content
:
''
}
.roomReservationsTalbe
tr
td
.link
p
:hover
{
text-decoration
:
underline
;
cursor
:
pointer
;}
.roomReservationsTalbe
tr
td
.phoverStype
:hover
{
text-decoration
:
underline
;
cursor
:
pointer
;}
.roomReservations_tripDetails
{
padding
:
0
;
box-shadow
:
0px
1px
3px
0px
#dedede
;
max-height
:
400px
;
overflow-y
:
auto
;}
.roomReservations_tripDetails
.popper__arrow
::after
{
border-bottom-color
:
#ededed
!important
;}
.roomReservations_tripDetails
table
{
padding
:
10px
0
0
20px
;
background-color
:
#ededed
;
border-collapse
:
collapse
;
border
:
1px
solid
#d2d2d2
;
font-size
:
12px
;}
.roomReservations_tripDetails
table
th
{
background-color
:
#ededed
;
padding
:
5px
;}
.roomReservations_tripDetails
table
td
{
background-color
:
#ffffff
;
padding
:
9px
15px
;
color
:
#333333
;
border
:
1px
solid
#d2d2d2
;}
.roomReservations_tripDetails
table
td
._d_name
{
background-color
:
#ededed
;}
.roomReservations_tripDetails
table
._color_666
{
color
:
#666666
;}
.roomReservations_tripDetails
table
tr
._color_666
th
{
padding
:
9px
15px
;}
.roomReservationsSplitTrCss
td
{
background
:
#eee
!important
;
}
.roomReservationsTalbe
{
background
:
#ccc
;
}
.roomReservationsTalbe
tr
th
{
background
:
#E6E6E6
;
height
:
40px
;
font-size
:
12px
;
color
:
#333
;
}
.roomReservationsTalbe
tr
{
background
:
#fff
;
text-align
:
center
;
height
:
40px
;
}
.roomReservationsTalbe
tr
td
{
font-size
:
12px
;
}
.roomReservationsTalbe
tr
td
.pDateStyle
{
border-bottom
:
1px
solid
#ccc
;
min-height
:
24px
;
line-height
:
24px
;
margin-top
:
0
;
box-sizing
:
content-box
;
padding
:
0
10px
;
}
.roomReservationsTalbe
tr
td
.pDateStyle
:last-child
{
border-bottom
:
none
;
}
.roomReservationsTalbe
tr
td
.pDateStyle
>
span
:after
{
content
:
'/'
;
}
.roomReservationsTalbe
tr
td
.pDateStyle
>
span
:last-child:after
{
content
:
''
}
.roomReservationsTalbe
tr
td
.link
p
:hover
{
text-decoration
:
underline
;
cursor
:
pointer
;
}
.roomReservationsTalbe
tr
td
.phoverStype
:hover
{
text-decoration
:
underline
;
cursor
:
pointer
;
}
.roomReservations_tripDetails
{
padding
:
0
;
box-shadow
:
0px
1px
3px
0px
#dedede
;
max-height
:
400px
;
overflow-y
:
auto
;
}
.roomReservations_tripDetails
.popper__arrow
::after
{
border-bottom-color
:
#ededed
!important
;
}
.roomReservations_tripDetails
table
{
padding
:
10px
0
0
20px
;
background-color
:
#ededed
;
border-collapse
:
collapse
;
border
:
1px
solid
#d2d2d2
;
font-size
:
12px
;
}
.roomReservations_tripDetails
table
th
{
background-color
:
#ededed
;
padding
:
5px
;
}
.roomReservations_tripDetails
table
td
{
background-color
:
#ffffff
;
padding
:
9px
15px
;
color
:
#333333
;
border
:
1px
solid
#d2d2d2
;
}
.roomReservations_tripDetails
table
td
._d_name
{
background-color
:
#ededed
;
}
.roomReservations_tripDetails
table
._color_666
{
color
:
#666666
;
}
.roomReservations_tripDetails
table
tr
._color_666
th
{
padding
:
9px
15px
;
}
</
style
>
src/components/Hotel/roomReservationsDetails.vue
View file @
5b662960
<
template
>
<div>
<div
class=
"query-box"
style=
"border-bottom: none;"
>
<ul>
<li>
<input
type=
"button"
class=
"fr normalBtn mb30"
value=
"保存"
@
click=
"saveList(1)"
/>
<input
type=
"button"
class=
"fr normalBtn mb30"
value=
"保存草稿"
@
click=
"saveList(0)"
/>
</li>
</ul>
</div>
<div
style=
"width: 100%; overflow-x: auto;padding-bottom: 10px; "
class=
"ownScrollbarStyle"
>
<table
border=
"0"
cellspacing=
"1"
cellpadding=
"0"
class=
"roomReservationsDetailsTalbe"
>
<tr>
<th
class=
"fz14"
colspan=
"10"
>
团队信息(定团号:
{{
NewCombinationNum
}}
)
</th>
<th
class=
"fz14"
colspan=
"12"
>
地接操作信息
</th>
</tr>
<tr>
<th
width=
"120"
>
公司团号
</th>
<th
width=
"200"
>
酒店名称
</th>
<th
width=
"80"
>
入住时间
</th>
<th
width=
"120"
>
机位总数/(Y/E/F)
</th>
<th
width=
"120"
>
占床/不占床
</th>
<th
width=
"80"
>
实际用房数
</th>
<th
width=
"150"
>
房间类型
</th>
<th
width=
"80"
>
房间数
</th>
<th
width=
"80"
>
房间人数
</th>
<th
width=
"200"
>
修改酒店
</th>
<th
width=
"150"
>
房间预定数
</th>
<th
width=
"120"
>
尚差房间数
</th>
<th
width=
"80"
>
单价/每人
</th>
<th
width=
"80"
>
免减人数
</th>
<th
width=
"80"
>
金额小计
</th>
<th
width=
"80"
>
返佣
</th>
<th
width=
"80"
>
金额总计
</th>
<th
width=
"80"
>
付款方式
</th>
<th
width=
"80"
>
联系电话
</th>
<th
width=
"80"
>
地址
</th>
<th
width=
"80"
>
订团号
</th>
<th
width=
"80"
>
备注
</th>
<th
width=
"80"
>
操作
</th>
</tr>
<tr
v-for=
"(item,index) in list"
>
<td
:rowspan=
"list.length"
v-if=
"index==0"
>
<div
class=
"w120"
>
<p
class=
"link"
@
click=
"goUrlT('productQuery',TCNUM,'产品查询')"
>
{{
TCNUM
}}
</p>
<el-button
@
click=
'openChart()'
v-if=
"CreateByAccount!=''"
type=
"primary"
style=
"background:#6DD875; border-color:#6DD875;padding:4px;margin-top:10px;"
>
联系OP
</el-button>
</div>
</td>
<td><div
class=
"w200 padding10"
>
<p
class=
"link"
style=
"word-break: normal;"
:class=
"
{'Hotel_red':item.HotelChangeState==3}" @click="goUrlR('HotelManagement',item.HotelId,'酒店管理')">
{{
item
.
HotelName
}}
</p>
</div>
</td>
<td><div
class=
"w80"
>
{{
item
.
CheckInDateStr
}}
</div></td>
<td>
<div
class=
"w120"
>
<p
class=
"link"
@
click=
"goUrlT('RegistrationList',item.TCID,'报名清单')"
>
{{
flightTotal
}}
/
{{
item
.
HouseStatistics
.
RealityYSeatNum
}}
/
{{
item
.
HouseStatistics
.
RealityESeatNum
}}
/
{{
item
.
HouseStatistics
.
RealityFSeatNum
}}
</p>
</div>
</td>
<td><div
class=
"w120"
>
<p
class=
"link"
@
click=
"goUrlT('passengerHouse',item.TCIDS,'房间分配')"
>
{{
item
.
HouseStatistics
.
NeedBed
}}
/
{{
item
.
HouseStatistics
.
NoNeedBed
}}
</p>
</div></td>
<td><div
class=
"w80"
>
{{
item
.
HouseStatistics
.
RealityRoomNum
}}
</div></td>
<td><div
class=
"w150"
>
<p
class=
"pHouseStyle"
v-for=
"o in item.HouseStatistics.HouseTypeList"
>
{{
o
.
HouseTypeName
}}
</p>
</div></td>
<td><div
class=
"w80"
>
<p
class=
"pHouseStyle"
v-for=
"o in item.HouseStatistics.HouseTypeList"
>
{{
o
.
HouseTypeCount
}}
</p>
</div></td>
<td><div
class=
"w80"
>
<p
class=
"pHouseStyle"
v-for=
"o in item.HouseStatistics.HouseTypeList"
>
{{
o
.
HouseGuestNum
}}
</p>
</div></td>
<td><div
class=
"w150"
>
<el-select
class=
'w120 sel'
v-model=
'item.NewHotelId'
filterable
:placeholder=
"$t('pub.pleaseSel')"
@
visible-change=
'getHotelList(item)'
@
change=
'sendValue(item)'
>
<el-option
v-for=
'itemHotel in item.hotelList'
:label=
'itemHotel.Name'
:value=
'itemHotel.ID'
:key=
'itemHotel.ID'
></el-option>
</el-select>
</div></td>
<td>
<div
class=
"w80"
>
<p
class=
"pHouseStyle"
v-for=
"o in item.OrderDetailsList"
>
<el-input
class=
'w50 tcenter'
@
keyup
.
native=
"checkInteger(o,'HouseTypeCount')"
v-model=
'o.HouseTypeCount'
></el-input>
</p>
</div>
</td>
<td>
<div
class=
"w80"
>
<p
class=
"pHouseStyle"
:class=
"
{colorRed:o.HouseTypeCount-item.HouseStatistics.HouseTypeList[index].HouseTypeCount
<0
}"
v-for=
"(o,index) in item.OrderDetailsList"
>
{{
o
.
HouseTypeCount
-
item
.
HouseStatistics
.
HouseTypeList
[
index
].
HouseTypeCount
}}
</p>
</div>
</td>
<td>
<div
class=
"w120"
>
<p
class=
"pHouseStyle"
v-for=
"(o,index) in item.OrderDetailsList"
@
input=
"calculationPrice(item)"
>
<el-input
@
keyup
.
native=
"checkInteger(o,'UnitPrice')"
class=
'w80 tcenter'
v-model=
'o.UnitPrice'
></el-input>
</p>
</div>
</td>
<td>
<div
class=
"w80"
>
<p
class=
"pHouseStyle"
v-for=
"(o,index) in item.OrderDetailsList"
@
input=
"calculationPrice(item)"
>
<el-input
class=
'w50'
@
keyup
.
native=
"checkInteger(o,'HotelDiscount')"
v-model=
'o.HotelDiscount'
></el-input>
</p>
</div>
</td>
<td>
<div
class=
"w80"
>
<p
class=
"pHouseStyle"
v-for=
"(o,index) in item.OrderDetailsList"
>
{{
o
.
UnitPrice
*
(
o
.
HouseGuestNum
-
o
.
HotelDiscount
)
}}
</p>
</div>
</td>
<td>
<!--返佣-->
<div
class=
"w80"
>
<p
class=
"pHouseStyle link"
v-for=
"(o,index) in item.OrderDetailsList"
@
input=
"calculationPrice(item)"
>
<span
class=
"spanlink"
v-if=
'o.IsRebateRatio==0'
@
click=
"goUrl('HotelInfo',o,'酒店管理')"
>
设置
</span>
<span
v-if=
'o.IsRebateRatio!=0'
>
{{
o
.
RebateRatio
}}
</span>
</p>
</div>
</td>
<td>
<div
class=
"w120"
>
{{
item
.
TotalPrice
}}
</div>
</td>
<td><div
class=
"w120"
>
<el-select
class=
'w100 sel'
v-model=
'item.PayStyle'
:placeholder=
"$t('pub.pleaseSel')"
>
<el-option
label=
'请选择'
value=
'0'
></el-option>
<el-option
label=
'现付'
value=
'1'
></el-option>
<el-option
label=
'签单'
value=
'2'
></el-option>
<el-option
label=
'实物抵扣'
value=
'5'
></el-option>
<el-option
label=
'预付'
value=
'4'
></el-option>
</el-select>
</div></td>
<td><div
class=
"w120"
>
{{
item
.
Tel
}}
</div></td>
<td><div
class=
"w200 padding10"
>
{{
item
.
Address
}}
</div></td>
<td>
<div
class=
"w150"
>
<el-input
class=
'w120'
v-model=
'item.ReserveNo'
></el-input>
</div>
</td>
<td>
<div
class=
"w150"
>
<el-input
type=
'textarea'
class=
'w120'
v-model=
'item.Remarks'
></el-input>
</div>
</td>
<td>
<input
type=
"button"
class=
"roomBtn"
value=
"保存"
@
click=
"SaveSingle(item)"
/>
</td>
</tr>
</table>
</div>
</div>
<div>
<div
class=
"query-box"
style=
"border-bottom: none;"
>
<ul>
<li>
<input
type=
"button"
class=
"fr normalBtn mb30"
value=
"保存"
@
click=
"saveList(1)"
/>
<input
type=
"button"
class=
"fr normalBtn mb30"
value=
"保存草稿"
@
click=
"saveList(0)"
/>
</li>
</ul>
</div>
<div
style=
"width: 100%; overflow-x: auto;padding-bottom: 10px; "
class=
"ownScrollbarStyle"
>
<table
border=
"0"
cellspacing=
"1"
cellpadding=
"0"
class=
"roomReservationsDetailsTalbe"
>
<tr>
<th
class=
"fz14"
colspan=
"10"
>
团队信息(定团号:
{{
NewCombinationNum
}}
)
</th>
<th
class=
"fz14"
colspan=
"12"
>
地接操作信息
</th>
</tr>
<tr>
<th
width=
"120"
>
公司团号
</th>
<th
width=
"200"
>
酒店名称
</th>
<th
width=
"80"
>
入住时间
</th>
<th
width=
"120"
>
机位总数/(Y/E/F)
</th>
<th
width=
"120"
>
占床/不占床
</th>
<th
width=
"80"
>
实际用房数
</th>
<th
width=
"150"
>
房间类型
</th>
<th
width=
"80"
>
房间数
</th>
<th
width=
"80"
>
房间人数
</th>
<th
width=
"200"
>
修改酒店
</th>
<th
width=
"150"
>
房间预定数
</th>
<th
width=
"120"
>
尚差房间数
</th>
<th
width=
"80"
>
单价/每人
</th>
<th
width=
"80"
>
免减人数
</th>
<th
width=
"80"
>
金额小计
</th>
<th
width=
"80"
>
返佣
</th>
<th
width=
"80"
>
金额总计
</th>
<th
width=
"80"
>
付款方式
</th>
<th
width=
"80"
>
联系电话
</th>
<th
width=
"80"
>
地址
</th>
<th
width=
"80"
>
订团号
</th>
<th
width=
"80"
>
备注
</th>
<th
width=
"80"
>
操作
</th>
</tr>
<tr
v-for=
"(item,index) in list"
>
<td
:rowspan=
"list.length"
v-if=
"index==0"
>
<div
class=
"w120"
>
<p
class=
"link"
@
click=
"goUrlT('productQuery',TCNUM,'产品查询')"
>
{{
TCNUM
}}
</p>
<el-button
@
click=
'openChart()'
v-if=
"CreateByAccount!=''"
type=
"primary"
style=
"background:#6DD875; border-color:#6DD875;padding:4px;margin-top:10px;"
>
联系OP
</el-button>
</div>
</td>
<td>
<div
class=
"w200 padding10"
>
<p
class=
"link"
style=
"word-break: normal;"
:class=
"
{'Hotel_red':item.HotelChangeState==3}"
@click="goUrlR('HotelManagement',item.HotelId,'酒店管理')">
{{
item
.
HotelName
}}
</p>
</div>
</td>
<td>
<div
class=
"w80"
>
{{
item
.
CheckInDateStr
}}
</div>
</td>
<td>
<div
class=
"w120"
>
<p
class=
"link"
@
click=
"goUrlT('RegistrationList',item.TCID,'报名清单')"
>
{{
flightTotal
}}
/
{{
item
.
HouseStatistics
.
RealityYSeatNum
}}
/
{{
item
.
HouseStatistics
.
RealityESeatNum
}}
/
{{
item
.
HouseStatistics
.
RealityFSeatNum
}}
</p>
</div>
</td>
<td>
<div
class=
"w120"
>
<p
class=
"link"
@
click=
"goUrlT('passengerHouse',item.TCIDS,'房间分配')"
>
{{
item
.
HouseStatistics
.
NeedBed
}}
/
{{
item
.
HouseStatistics
.
NoNeedBed
}}
</p>
</div>
</td>
<td>
<div
class=
"w80"
>
{{
item
.
HouseStatistics
.
RealityRoomNum
}}
</div>
</td>
<td>
<div
class=
"w150"
>
<p
class=
"pHouseStyle"
v-for=
"o in item.HouseStatistics.HouseTypeList"
>
{{
o
.
HouseTypeName
}}
</p>
</div>
</td>
<td>
<div
class=
"w80"
>
<p
class=
"pHouseStyle"
v-for=
"o in item.HouseStatistics.HouseTypeList"
>
{{
o
.
HouseTypeCount
}}
</p>
</div>
</td>
<td>
<div
class=
"w80"
>
<p
class=
"pHouseStyle"
v-for=
"o in item.HouseStatistics.HouseTypeList"
>
{{
o
.
HouseGuestNum
}}
</p>
</div>
</td>
<td>
<div
class=
"w150"
>
<el-select
class=
'w120 sel'
v-model=
'item.NewHotelId'
filterable
:placeholder=
"$t('pub.pleaseSel')"
@
visible-change=
'getHotelList(item)'
@
change=
'sendValue(item)'
>
<el-option
v-for=
'itemHotel in item.hotelList'
:label=
'itemHotel.Name'
:value=
'itemHotel.ID'
:key=
'itemHotel.ID'
></el-option>
</el-select>
</div>
</td>
<td>
<div
class=
"w80"
>
<p
class=
"pHouseStyle"
v-for=
"o in item.OrderDetailsList"
>
<el-input
class=
'w50 tcenter'
@
keyup
.
native=
"checkInteger(o,'HouseTypeCount')"
v-model=
'o.HouseTypeCount'
></el-input>
</p>
</div>
</td>
<td>
<div
class=
"w80"
>
<p
class=
"pHouseStyle"
:class=
"
{colorRed:o.HouseTypeCount-item.HouseStatistics.HouseTypeList[index].HouseTypeCount
<0
}"
v-for=
"(o,index) in item.OrderDetailsList"
>
{{
o
.
HouseTypeCount
-
item
.
HouseStatistics
.
HouseTypeList
[
index
].
HouseTypeCount
}}
</p>
</div>
</td>
<td>
<div
class=
"w120"
>
<p
class=
"pHouseStyle"
v-for=
"(o,index) in item.OrderDetailsList"
@
input=
"calculationPrice(item)"
>
<el-input
@
keyup
.
native=
"checkInteger(o,'UnitPrice')"
class=
'w80 tcenter'
v-model=
'o.UnitPrice'
>
</el-input>
</p>
</div>
</td>
<td>
<div
class=
"w80"
>
<p
class=
"pHouseStyle"
v-for=
"(o,index) in item.OrderDetailsList"
@
input=
"calculationPrice(item)"
>
<el-input
class=
'w50'
@
keyup
.
native=
"checkInteger(o,'HotelDiscount')"
v-model=
'o.HotelDiscount'
>
</el-input>
</p>
</div>
</td>
<td>
<div
class=
"w80"
>
<p
class=
"pHouseStyle"
v-for=
"(o,index) in item.OrderDetailsList"
>
{{
o
.
UnitPrice
*
(
o
.
HouseGuestNum
-
o
.
HotelDiscount
)
}}
</p>
</div>
</td>
<td>
<!--返佣-->
<div
class=
"w80"
>
<p
class=
"pHouseStyle link"
v-for=
"(o,index) in item.OrderDetailsList"
@
input=
"calculationPrice(item)"
>
<span
class=
"spanlink"
v-if=
'o.IsRebateRatio==0'
@
click=
"goUrl('HotelInfo',o,'酒店管理')"
>
设置
</span>
<span
v-if=
'o.IsRebateRatio!=0'
>
{{
o
.
RebateRatio
}}
</span>
</p>
</div>
</td>
<td>
<div
class=
"w120"
>
{{
item
.
TotalPrice
}}
</div>
</td>
<td>
<div
class=
"w120"
>
<el-select
class=
'w100 sel'
v-model=
'item.PayStyle'
:placeholder=
"$t('pub.pleaseSel')"
>
<el-option
label=
'请选择'
value=
'0'
></el-option>
<el-option
label=
'现付'
value=
'1'
></el-option>
<el-option
label=
'签单'
value=
'2'
></el-option>
<el-option
label=
'实物抵扣'
value=
'5'
></el-option>
<el-option
label=
'预付'
value=
'4'
></el-option>
</el-select>
</div>
</td>
<td>
<div
class=
"w120"
>
{{
item
.
Tel
}}
</div>
</td>
<td>
<div
class=
"w200 padding10"
>
{{
item
.
Address
}}
</div>
</td>
<td>
<div
class=
"w150"
>
<el-input
class=
'w120'
v-model=
'item.ReserveNo'
></el-input>
</div>
</td>
<td>
<div
class=
"w150"
>
<el-input
type=
'textarea'
class=
'w120'
v-model=
'item.Remarks'
></el-input>
</div>
</td>
<td>
<input
type=
"button"
class=
"roomBtn"
value=
"保存"
@
click=
"SaveSingle(item)"
/>
</td>
</tr>
</table>
</div>
</div>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
defaultSelectValue
:
0
,
list
:
[],
roomList
:
[],
TCNUM
:
''
,
flightTotal
:
0
,
GuestNum
:
0
,
hotelList
:
[],
//创建人头像
CreateByPhoto
:
''
,
//创建人联系电话
CreateByAccount
:
''
,
//创建人姓名
CreateByName
:
''
,
}
},
export
default
{
data
()
{
return
{
defaultSelectValue
:
0
,
list
:
[],
roomList
:
[],
TCNUM
:
''
,
flightTotal
:
0
,
GuestNum
:
0
,
hotelList
:
[],
//创建人头像
CreateByPhoto
:
''
,
//创建人联系电话
CreateByAccount
:
''
,
//创建人姓名
CreateByName
:
''
,
}
},
methods
:
{
//联系op
openChart
(){
this
.
MsgBus
.
$emit
(
'openChat'
,{
account
:
this
.
CreateByAccount
,
alias
:
this
.
CreateByName
,
avatar
:
this
.
CreateByPhoto
})
},
goUrl
(
path
,
obj
,
name
)
{
this
.
$router
.
push
({
path
:
path
,
query
:
{
id
:
obj
.
HotelId
,
blank
:
"y"
,
tab
:
name
}
});
},
goUrlR
(
path
,
obj
,
title
){
this
.
$router
.
push
({
name
:
path
,
query
:{
"ID"
:
obj
,
blank
:
'y'
,
tab
:
title
}})
},
goUrlT
(
path
,
obj
,
title
){
this
.
$router
.
push
({
name
:
path
,
query
:{
"id"
:
obj
,
blank
:
'y'
,
tab
:
title
}})
},
getList
(){
this
.
apipost
(
'dmcstatistics_get_GetHotelStaticsDetail'
,{
TCIDs
:
this
.
$route
.
query
.
id
,
NewCombinationNum
:
this
.
$route
.
query
.
NewCombinationNum
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
){
this
.
list
=
res
.
data
.
data
.
HotelList
;
this
.
CreateBy
=
res
.
data
.
data
.
CreateBy
;
this
.
CreateByPhoto
=
res
.
data
.
data
.
CreateByPhoto
;
this
.
CreateByAccount
=
res
.
data
.
data
.
CreateByAccount
;
this
.
list
.
forEach
(
item
=>
{
this
.
calculationPrice
(
item
)
item
.
hotelList
.
push
({
Name
:
item
.
NewHotelName
,
ID
:
item
.
NewHotelId
})
item
.
PayStyle
=
item
.
PayStyle
.
toString
()
item
.
OrderDetailsList
.
forEach
((
x
,
index1
)
=>
{
if
(
x
.
HouseTypeCount
<=
0
){
x
.
HouseTypeCount
=
item
.
HouseStatistics
.
HouseTypeList
[
index1
].
HouseTypeCount
.
toString
();
}
else
{
x
.
HouseTypeCount
=
x
.
HouseTypeCount
.
toString
();
}
x
.
HouseTypeCount
=
x
.
HouseTypeCount
.
toString
();
x
.
UnitPrice
=
x
.
UnitPrice
.
toString
();
x
.
HotelDiscount
=
x
.
HotelDiscount
.
toString
();
})
})
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
)
}
},
err
=>
{})
},
calculationPrice
(
obj
){
let
totalPrice
=
0
obj
.
OrderDetailsList
.
forEach
(
item
=>
{
totalPrice
+=
item
.
UnitPrice
*
(
item
.
HouseGuestNum
-
item
.
HotelDiscount
)
*
(
1
-
item
.
RebateRatio
/
100
)
})
obj
.
TotalPrice
=
totalPrice
.
toFixed
(
2
)
this
.
$forceUpdate
()
},
getHotelList
(
obj
){
this
.
apipost
(
'hotel_post_GetLineHotelList'
,{
IsGetPic
:
0
,
IsGetRemark
:
0
,
QCity
:
obj
.
QCity
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
){
obj
.
hotelList
=
res
.
data
.
data
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
)
}
},
err
=>
{})
},
sendValue
(
obj
){
if
(
obj
.
hotelList
.
length
>
0
)
{
let
ckedObj
=
obj
.
hotelList
.
find
(
item
=>
item
.
ID
==
obj
.
NewHotelId
)
obj
.
Address
=
ckedObj
.
Address
obj
.
Tel
=
ckedObj
.
Tel
obj
.
NewHotelName
=
ckedObj
.
Name
}
else
{
obj
.
Address
=
''
obj
.
Tel
=
''
}
},
saveList
(
type
){
if
(
type
==
0
){
this
.
list
.
forEach
(
item
=>
{
item
.
HotelOrderState
=
0
})
}
if
(
type
==
1
){
this
.
list
.
forEach
(
item
=>
{
item
.
HotelOrderState
=
1
})
}
this
.
list
.
forEach
(
x
=>
{
x
.
OrderDetailsList
.
forEach
(
y
=>
{
y
.
HouseTypeCount
=
parseInt
(
y
.
HouseTypeCount
);
y
.
UnitPrice
=
parseInt
(
y
.
UnitPrice
);
y
.
HotelDiscount
=
parseInt
(
y
.
HotelDiscount
);
})
})
this
.
apipost
(
'dmcstatistics_get_SetHotelOrder'
,
this
.
list
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
){
this
.
Success
(
res
.
data
.
message
)
}
else
{
this
.
Error
(
res
.
data
.
message
)
}
},
err
=>
{})
},
//单条保存
SaveSingle
(
item
){
item
.
HotelOrderState
=
1
;
this
.
apipost
(
'dmcstatistics_post_SetNewHotelOrder'
,
item
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
){
this
.
Success
(
res
.
data
.
message
)
}
else
{
this
.
Error
(
res
.
data
.
message
)
}
},
err
=>
{})
//联系op
openChart
()
{
this
.
MsgBus
.
$emit
(
'openChat'
,
{
account
:
this
.
CreateByAccount
,
alias
:
this
.
CreateByName
,
avatar
:
this
.
CreateByPhoto
})
},
goUrl
(
path
,
obj
,
name
)
{
this
.
$router
.
push
({
path
:
path
,
query
:
{
id
:
obj
.
HotelId
,
blank
:
"y"
,
tab
:
name
}
});
},
goUrlR
(
path
,
obj
,
title
)
{
this
.
$router
.
push
({
name
:
path
,
query
:
{
"ID"
:
obj
,
blank
:
'y'
,
tab
:
title
}
})
},
goUrlT
(
path
,
obj
,
title
)
{
this
.
$router
.
push
({
name
:
path
,
query
:
{
"id"
:
obj
,
blank
:
'y'
,
tab
:
title
}
})
},
getList
()
{
this
.
apipost
(
'dmcstatistics_get_GetHotelStaticsDetail'
,
{
TCIDs
:
this
.
$route
.
query
.
id
,
NewCombinationNum
:
this
.
$route
.
query
.
NewCombinationNum
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
list
=
res
.
data
.
data
.
HotelList
;
this
.
CreateBy
=
res
.
data
.
data
.
CreateBy
;
this
.
CreateByPhoto
=
res
.
data
.
data
.
CreateByPhoto
;
this
.
CreateByAccount
=
res
.
data
.
data
.
CreateByAccount
;
this
.
list
.
forEach
(
item
=>
{
this
.
calculationPrice
(
item
)
item
.
hotelList
.
push
({
Name
:
item
.
NewHotelName
,
ID
:
item
.
NewHotelId
})
item
.
PayStyle
=
item
.
PayStyle
.
toString
()
item
.
OrderDetailsList
.
forEach
((
x
,
index1
)
=>
{
if
(
x
.
HouseTypeCount
<=
0
)
{
x
.
HouseTypeCount
=
item
.
HouseStatistics
.
HouseTypeList
[
index1
].
HouseTypeCount
.
toString
();
}
else
{
x
.
HouseTypeCount
=
x
.
HouseTypeCount
.
toString
();
}
x
.
HouseTypeCount
=
x
.
HouseTypeCount
.
toString
();
x
.
UnitPrice
=
x
.
UnitPrice
.
toString
();
x
.
HotelDiscount
=
x
.
HotelDiscount
.
toString
();
})
})
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
)
}
},
err
=>
{})
},
calculationPrice
(
obj
)
{
let
totalPrice
=
0
obj
.
OrderDetailsList
.
forEach
(
item
=>
{
totalPrice
+=
item
.
UnitPrice
*
(
item
.
HouseGuestNum
-
item
.
HotelDiscount
)
*
(
1
-
item
.
RebateRatio
/
100
)
})
obj
.
TotalPrice
=
totalPrice
.
toFixed
(
2
)
this
.
$forceUpdate
()
},
getHotelList
(
obj
)
{
this
.
apipost
(
'hotel_post_GetLineHotelList'
,
{
IsGetPic
:
0
,
IsGetRemark
:
0
,
QCity
:
obj
.
QCity
},
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
obj
.
hotelList
=
res
.
data
.
data
}
else
{
this
.
$message
.
error
(
res
.
data
.
message
)
}
},
err
=>
{})
},
sendValue
(
obj
)
{
if
(
obj
.
hotelList
.
length
>
0
)
{
let
ckedObj
=
obj
.
hotelList
.
find
(
item
=>
item
.
ID
==
obj
.
NewHotelId
)
obj
.
Address
=
ckedObj
.
Address
obj
.
Tel
=
ckedObj
.
Tel
obj
.
NewHotelName
=
ckedObj
.
Name
}
else
{
obj
.
Address
=
''
obj
.
Tel
=
''
}
},
saveList
(
type
)
{
if
(
type
==
0
)
{
this
.
list
.
forEach
(
item
=>
{
item
.
HotelOrderState
=
0
})
}
if
(
type
==
1
)
{
this
.
list
.
forEach
(
item
=>
{
item
.
HotelOrderState
=
1
})
}
this
.
list
.
forEach
(
x
=>
{
x
.
OrderDetailsList
.
forEach
(
y
=>
{
y
.
HouseTypeCount
=
parseInt
(
y
.
HouseTypeCount
);
y
.
UnitPrice
=
parseInt
(
y
.
UnitPrice
);
y
.
HotelDiscount
=
parseInt
(
y
.
HotelDiscount
);
})
})
this
.
apipost
(
'dmcstatistics_get_SetHotelOrder'
,
this
.
list
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
Success
(
res
.
data
.
message
)
}
else
{
this
.
Error
(
res
.
data
.
message
)
}
},
err
=>
{})
},
//单条保存
SaveSingle
(
item
)
{
item
.
HotelOrderState
=
1
;
this
.
apipost
(
'dmcstatistics_post_SetNewHotelOrder'
,
item
,
res
=>
{
if
(
res
.
data
.
resultCode
==
1
)
{
this
.
Success
(
res
.
data
.
message
)
}
else
{
this
.
Error
(
res
.
data
.
message
)
}
},
err
=>
{})
}
},
created
()
{
}
},
mounted
()
{
this
.
TCNUM
=
this
.
$route
.
query
.
TCNUM
;
this
.
flightTotal
=
this
.
$route
.
query
.
flightTotal
;
this
.
GuestNum
=
this
.
$route
.
query
.
GuestNum
;
this
.
NewCombinationNum
=
this
.
$route
.
query
.
NewCombinationNum
;
this
.
getList
()
// this.getHotelList()
},
}
this
.
TCNUM
=
this
.
$route
.
query
.
TCNUM
;
this
.
flightTotal
=
this
.
$route
.
query
.
flightTotal
;
this
.
GuestNum
=
this
.
$route
.
query
.
GuestNum
;
this
.
NewCombinationNum
=
this
.
$route
.
query
.
NewCombinationNum
;
this
.
getList
()
},
}
</
script
>
<
style
>
.roomReservationsDetailsTalbe
.roomBtn
{
color
:
#fff
;
padding
:
0
10px
!important
;
height
:
30px
!important
;
.roomReservationsDetailsTalbe
.roomBtn
{
color
:
#fff
;
padding
:
0
10px
!important
;
height
:
30px
!important
;
background
:
#E95252
;
border
:
1px
solid
#E95252
;
cursor
:
pointer
;
border-radius
:
15px
;
margin
:
0
10px
;
}
.roomReservationsDetailsTalbe
{
background
:
#ddd
;}
.roomReservationsDetailsTalbe
tr
th
{
background
:
#eee
;
height
:
40px
;
font-size
:
12px
;
color
:
#333
;}
.roomReservationsDetailsTalbe
tr
{
background
:
#fff
;
text-align
:
center
;
height
:
40px
;}
.roomReservationsDetailsTalbe
tr
td
{
font-size
:
12px
;}
.roomReservationsDetailsTalbe
tr
td
.pHouseStyle
{
border-bottom
:
1px
solid
#ccc
;
height
:
28px
;
line-height
:
28px
;}
.roomReservationsDetailsTalbe
tr
td
.colorRed
{
color
:
#E95252
;}
.roomReservationsDetailsTalbe
tr
td
.pHouseStyle
:last-child
{
border-bottom
:
none
;}
.roomReservationsDetailsTalbe
tr
td
input
{
height
:
20px
!important
;
padding
:
0
!important
;
text-align
:
center
;}
.roomReservationsDetailsTalbe
tr
td
.sel
input
{
height
:
34px
!important
;
padding-right
:
20px
!important
;
padding-left
:
5px
!important
;
font-size
:
12px
!important
;}
.roomReservationsDetailsTalbe
tr
td
.link
:hover
{
text-decoration
:
underline
;
cursor
:
pointer
;}
.roomReservationsDetailsTalbe
.Hotel_red
{
color
:
red
;}
</
style
>
\ No newline at end of file
margin
:
0
10px
;
}
.roomReservationsDetailsTalbe
{
background
:
#ddd
;
}
.roomReservationsDetailsTalbe
tr
th
{
background
:
#eee
;
height
:
40px
;
font-size
:
12px
;
color
:
#333
;
}
.roomReservationsDetailsTalbe
tr
{
background
:
#fff
;
text-align
:
center
;
height
:
40px
;
}
.roomReservationsDetailsTalbe
tr
td
{
font-size
:
12px
;
}
.roomReservationsDetailsTalbe
tr
td
.pHouseStyle
{
border-bottom
:
1px
solid
#ccc
;
height
:
28px
;
line-height
:
28px
;
}
.roomReservationsDetailsTalbe
tr
td
.colorRed
{
color
:
#E95252
;
}
.roomReservationsDetailsTalbe
tr
td
.pHouseStyle
:last-child
{
border-bottom
:
none
;
}
.roomReservationsDetailsTalbe
tr
td
input
{
height
:
20px
!important
;
padding
:
0
!important
;
text-align
:
center
;
}
.roomReservationsDetailsTalbe
tr
td
.sel
input
{
height
:
34px
!important
;
padding-right
:
20px
!important
;
padding-left
:
5px
!important
;
font-size
:
12px
!important
;
}
.roomReservationsDetailsTalbe
tr
td
.link
:hover
{
text-decoration
:
underline
;
cursor
:
pointer
;
}
.roomReservationsDetailsTalbe
.Hotel_red
{
color
:
red
;
}
</
style
>
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