Commit bf3cfb10 authored by 华国豪's avatar 华国豪 🙄
parents d96cb3cf 8e692580
...@@ -53,8 +53,10 @@ ...@@ -53,8 +53,10 @@
<tr> <tr>
<td colspan="2"> <td colspan="2">
<span style="padding-left:5px;" class="link" <span style="padding-left:5px;" class="link"
@click="goUrlR('restaurantList',subItem.DiningID,'餐厅列表')">{{subItem.DiningName}}</span> @click="goUrlR('restaurantList',subItem.DiningID,'餐厅列表')">{{subItem.DiningName}}
<br/>
真实名称: {{subItem.DiningRealName}}
</span>
</td> </td>
</tr> </tr>
<tr> <tr>
...@@ -82,7 +84,7 @@ ...@@ -82,7 +84,7 @@
<el-option v-for='itemHotel in item.DinnerList' :label='itemHotel.RealName' :value='itemHotel.ID' <el-option v-for='itemHotel in item.DinnerList' :label='itemHotel.RealName' :value='itemHotel.ID'
:key='itemHotel.ID'></el-option> :key='itemHotel.ID'></el-option>
</el-select> </el-select>
<span style="color:green">{{subItem.NewDiningName}}</span><br/> <span style="color:green">{{subItem.NewDiningRealName}}</span><br/>
<el-popover placement="right" width="540" trigger="click" v-model="subItem.isShowPop"> <el-popover placement="right" width="540" trigger="click" v-model="subItem.isShowPop">
<comCheckDinner :ref="'comCheckDinner'+index+subIndex+''" :UseDate="item.UseTimeStr" <comCheckDinner :ref="'comCheckDinner'+index+subIndex+''" :UseDate="item.UseTimeStr"
v-on:childDinner="childDinnerList"> v-on:childDinner="childDinnerList">
...@@ -261,6 +263,7 @@ ...@@ -261,6 +263,7 @@
oldData.PayStyleExt = obj.PayStyle; oldData.PayStyleExt = obj.PayStyle;
oldData.NewDiningID = obj.ID; oldData.NewDiningID = obj.ID;
oldData.NewDiningName = obj.Name; oldData.NewDiningName = obj.Name;
oldData.NewDiningRealName=obj.RealName;
this.list.forEach(x => { this.list.forEach(x => {
x.DiningSummaryList.forEach(y => { x.DiningSummaryList.forEach(y => {
y.isShowPop = false; y.isShowPop = false;
......
...@@ -1390,7 +1390,7 @@ ...@@ -1390,7 +1390,7 @@
</td> </td>
<td width="70">报名类型</td> <td width="70">报名类型</td>
<td> <td>
<el-select v-model='msg.GroupType' filterable :placeholder="$t('pub.pleaseSel')"> <el-select v-model='msg.GroupTypeArray' filterable multiple :placeholder="$t('pub.pleaseSel')">
<el-option label="不限" value='-1'></el-option> <el-option label="不限" value='-1'></el-option>
<el-option v-for="item in ctlxList" :label='item.Name' :value='item.Id' :key='item.Id'> <el-option v-for="item in ctlxList" :label='item.Name' :value='item.Id' :key='item.Id'>
</el-option> </el-option>
...@@ -2189,6 +2189,7 @@ ...@@ -2189,6 +2189,7 @@
ContactName: '', ContactName: '',
CustomerId: '-1', CustomerId: '-1',
GroupType: '-1', GroupType: '-1',
GroupTypeArray:[],
OrderSource: '-1', OrderSource: '-1',
CStartDate: '', CStartDate: '',
CEndDate: '', CEndDate: '',
...@@ -3927,12 +3928,10 @@ ...@@ -3927,12 +3928,10 @@
'sellorder_post_GetTravelOrderList', 'sellorder_post_GetTravelOrderList',
this.msg, this.msg,
res => { res => {
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
this.loading = false this.loading = false
this.total = res.data.data.count this.total = res.data.data.count
this.list = res.data.data.pageData; this.list = res.data.data.pageData;
console.log(this.list,'list');
} else { } else {
this.$message.error(res.data.message) this.$message.error(res.data.message)
} }
......
<style> <style>
.PassengerList2 .PT_teamTable.PT_teamTable { .PassengerList2 .PT_teamTable {
width: 500px; width: 800px;
border-collapse: collapse; border-collapse: collapse;
} }
.PT_teamTable td, .PassengerList2 .PT_teamTable td,
.PT_teamTable th { .PassengerList2 .PT_teamTable th {
border: 1px solid #dcdcdc; border: 1px solid #dcdcdc;
padding: 5px; padding: 5px;
height: 30px; height: 30px;
} }
.PT_teamTable tr th {
.PassengerList2 .PT_teamTable tr th {
background: #eee; background: #eee;
height: 30px; height: 30px;
border: 1px solid #dcdcdc; 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{
color: #E95252;
} }
.leader2Btn {
color: #fff; .PassengerList2 .PT_teamTable tr td {
padding: 0 15px; background: #fff;
}
.PassengerList2 .travelpassengerlist {
font-size: 12px;
background: #dcdcdc;
}
.PassengerList2 .travelpassengerlist tr th {
height: 30px; height: 30px;
background: #e95252; }
border: 1px solid #e95252;
cursor: pointer; .PassengerList2 .travelpassengerlist tr td {
border-radius: 15px; background: #fff;
}
.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; text-align: center;
margin: 10px; }
} /*拒签人员*/
.PassengerList2 .travelpassengerlist .redTr td {
color: #E95252;
}
</style> </style>
<template> <template>
<div class="flexOne PassengerList PassengerList2"> <div class="flexOne PassengerList2">
<div class="query-box"> <div class="query-box">
<ul> <ul>
<li> <li>
...@@ -57,38 +47,27 @@ ...@@ -57,38 +47,27 @@
<tr> <tr>
<th width="140">团号</th> <th width="140">团号</th>
<th>团名</th> <th>团名</th>
<th width="60">人数</th>
<th width="120">出发日期</th> <th width="120">出发日期</th>
</tr> </tr>
<tr v-for="item in QueryMsg.TeamInfoData"> <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.Title}}</td>
<td>{{item.Inventory}}</td>
<td>{{item.StartDate}} {{item.WeekStr}}</td> <td>{{item.StartDate}} {{item.WeekStr}}</td>
</tr> </tr>
</table> </table>
</li> </li>
<li> <li>
<input type="button" class="normalBtn" v-if="!allDIs" value="分房表确认" @click="querenHotel()">
<input type="button" class="normalBtn" value="导出报表" @click="exportExcel()"> <input type="button" class="normalBtn" value="导出报表" @click="exportExcel()">
</li> </li>
</ul> </ul>
</div> </div>
<p class="tips__" v-if="allDIs">op已确认分房,不能在进行任何操作</p> <table class="travelpassengerlist" border="0" cellspacing="1" cellpadding="0" v-loading="QueryMsg.loading">
<table
style="margin-bottom: 50px;"
class="travelpassengerlist"
border="0"
cellspacing="1"
cellpadding="0"
v-loading="QueryMsg.loading"
>
<tr> <tr>
<th width="50">房间数</th> <th width="50">房间数</th>
<th width="50">房号</th> <th width="50">房号</th>
<th width="130">酒店及房型</th> <th width="130">酒店及房型</th>
<th width="130">旅客姓名</th> <th width="130">旅客姓名</th>
<th width="120">占床</th>
<th width="110">英文姓</th> <th width="110">英文姓</th>
<th width="145">英文名</th> <th width="145">英文名</th>
<th width="45">性别</th> <th width="45">性别</th>
...@@ -108,35 +87,23 @@ ...@@ -108,35 +87,23 @@
<th width="120">签证类型</th> <th width="120">签证类型</th>
</tr> </tr>
<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> </tr>
<!-- <template v-for="(item, index) in QueryMsg.dataList"> --> <tbody v-for="(item,index) in QueryMsg.dataList" :key="index">
<tr v-for="(subItem, subIndex) in dataList" :class="{'redTr':subItem.VisaState==1}"> <tr v-for="(subItem,subIndex) in item" :class="{'redTr':subItem.VisaState==1}">
<td>{{subIndex+1}}</td> <td v-if="subIndex==0" :rowspan="subItem.RowsCount">{{index+1}}</td>
<td width="80"> <td v-if="subIndex==0" :rowspan="subItem.RowsCount"></td>
<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> <td>
<el-select v-model="subItem.HouseType" placeholder="请选择" @change="changeRmType(subItem, subIndex)"> <!--自然单间 指定单间(单房差)-->
<el-option <template v-if="subItem.SingleRoomType==subItem.HouseType">
:disabled="(subItem.HouseType == 1 && IsLeaderGuide == 1) || allDIs" {{getHouseTypeStr(subItem.HouseType)}}
v-for="(hs, hsIndex) in HouseTypeList" </template>
:key="hsIndex" <template v-else>
:label="hs.HouseName" {{getHouseTypeStr(subItem.SingleRoomType)}} <br /><span style="color:red;">(指定)</span>
:value="hs.HouseType"> </template>
</el-option> <template v-if="subItem.IsBed==0"><br /><span style="color:red;">(不占床)</span></template>
</el-select>
</td> </td>
<td>{{subItem.GuestName}}</td> <td>{{subItem.GuestName}}</td>
<td>{{subItem.IsBed == 1 ? '占床' : '不占床'}}</td>
<td>{{subItem.ESurName}}</td> <td>{{subItem.ESurName}}</td>
<td>{{subItem.EName}}</td> <td>{{subItem.EName}}</td>
<td>{{getSexStr(subItem)}}</td> <td>{{getSexStr(subItem)}}</td>
...@@ -150,22 +117,19 @@ ...@@ -150,22 +117,19 @@
<td>{{subItem.MobilePhone}}</td> <td>{{subItem.MobilePhone}}</td>
<td>{{subItem.IdCard}}</td> <td>{{subItem.IdCard}}</td>
<td>{{subItem.UnitPrice}}</td> <td>{{subItem.UnitPrice}}</td>
<td>{{subItem.CreateByStr}}</td> <td>{{subItem.CreateBy}}</td>
<td>{{subItem.GroupTypeStr}}</td> <td>{{subItem.GroupTypeStr}}</td>
<td align="center">经济舱 <td align="center">经济舱
<br>(Y) <br>(Y)
</td> </td>
<td>{{subItem.VisaTypeStr}} {{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> </tr>
</tbody>
</table> </table>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return { return {
//请求数据 //请求数据
...@@ -174,10 +138,12 @@ export default { ...@@ -174,10 +138,12 @@ export default {
PageSize: 100, PageSize: 100,
TCID: 0, TCID: 0,
OrderId: 0, OrderId: 0,
currentPage: 1 currentPage: 1,
isGetTicket: 1, //不查询机票
isGetZiYouXing: 1, //不查询自由行
}, },
IsHaveLeader:1,//1-有领队,0-无领队 IsHaveLeader: 1, //1-有领队,0-无领队
IsLeaderGuide:0,//1-领兼导,0-领队 IsLeaderGuide: 0, //1-领兼导,0-领队
TCID: 0, TCID: 0,
QueryMsg: { QueryMsg: {
loading: true, loading: true,
...@@ -187,83 +153,10 @@ export default { ...@@ -187,83 +153,10 @@ export default {
OrderId: 0, OrderId: 0,
//团期数据 //团期数据
TeamInfoData: [] TeamInfoData: []
}, }
houseList: [],
HouseTypeList: [],
numberList: [],
dataList: [],
allDIs: false,
}; };
}, },
methods: { 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) { goUrlTravelControl(name, path, id, tcmun) {
this.$router.push({ this.$router.push({
name: path, name: path,
...@@ -294,108 +187,54 @@ export default { ...@@ -294,108 +187,54 @@ export default {
str = "标准双人间"; str = "标准双人间";
} else if (HouseType == 3) { } else if (HouseType == 3) {
str = "大床房"; str = "大床房";
} } else if (HouseType == 4) {
else if (HouseType == 4) {
str = "三人间"; str = "三人间";
} } else if (HouseType == 5) {
else if (HouseType== 5) {
str = "拼凑双人间"; str = "拼凑双人间";
} } else {
else {
str = "未分配"; str = "未分配";
} }
return 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;
}
}
}
}
this.QueryMsg.dataList = Diningdest;
},
//获取数据 //获取数据
getList() { getList() {
this.QueryMsg.loading = true; this.QueryMsg.loading = true;
this.apipost( this.apipost(
"travel_get_GetTravelGuestPageList_V2", "travel_get_GetTravelGuestPageList",
this.msg, this.msg,
res => { res => {
this.QueryMsg.loading = false; this.QueryMsg.loading = false;
if (res.data.resultCode == 1) { if (res.data.resultCode == 1) {
let list = res.data.data.pageData.result; this.QueryMsg.dataList = res.data.data.pageData.result;
this.IsHaveLeader=res.data.data.pageData.IsHaveLeader; this.IsHaveLeader = res.data.data.pageData.IsHaveLeader;
this.IsLeaderGuide=res.data.data.pageData.IsLeaderGuide; 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
// this.setDataList(list)
} }
}, },
err => {} err => {}
); );
}, },
exportExcel() { exportExcel() {
this.QueryMsg.loading = true;
//导出报表 //导出报表
let msg = { let msg = {
TCID: this.msg.TCID TCID: this.msg.TCID,
isGetTicket: 1, //不查询机票
isGetZiYouXing: 1, //不查询自由行
}; };
var fileName = "旅客名单.xls"; var fileName = "旅客名单.xls";
if (this.QueryMsg.TeamInfoData != null) { if (this.QueryMsg.TeamInfoData != null) {
fileName = fileName =
"【" + this.QueryMsg.TeamInfoData[0].TCNUM + "】旅客名单.xls"; "【" + this.QueryMsg.TeamInfoData[0].TCNUM + "】旅客名单.xls";
} }
this.GetLocalFile("travel_get_GetTravelGuestExport", msg, fileName); this.GetLocalFile("travel_get_GetTravelGuestExport", msg, fileName, res => {
this.QueryMsg.loading = false;
});
}, },
//获取团期信息 //获取团期信息
getTeamInfo() { getTeamInfo() {
var qmsg = { var qmsg = {
TCID: this.TCID TCID: this.TCID,
}; };
this.apipost( this.apipost(
"travel_get_GetTravelPriceReportInfo", "travel_get_GetTravelPriceReportInfo",
...@@ -410,20 +249,12 @@ export default { ...@@ -410,20 +249,12 @@ export default {
} }
}, },
mounted() { 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.TCID = this.$route.query.id;
this.msg.TCID = this.TCID; this.msg.TCID = this.TCID;
this.msg.OrderId = this.$route.query.OrderId; this.msg.OrderId = this.$route.query.OrderId;
this.getTeamInfo(); this.getTeamInfo();
this.getList(); this.getList();
this.getHouseTypeList();
} }
}; };
</script> </script>
<style> <style>
.PT_teamTable { .PassengerList .PT_teamTable.PT_teamTable {
width: 800px; width: 850px;
border-collapse: collapse; border-collapse: collapse;
} }
.PT_teamTable td, .PassengerList .PT_teamTable td,
.PT_teamTable th { .PassengerList .PT_teamTable th {
border: 1px solid #dcdcdc; border: 1px solid #dcdcdc;
padding: 5px; padding: 5px;
height: 30px; height: 30px;
} }
.PT_teamTable tr th { .PassengerList .PT_teamTable tr th {
background: #eee; background: #eee;
height: 30px; height: 30px;
border: 1px solid #dcdcdc; border: 1px solid #dcdcdc;
} }
.PT_teamTable tr td { .PassengerList .PT_teamTable tr td {
background: #fff; background: #fff;
} }
.travelpassengerlist { .PassengerList .travelpassengerlist {
font-size: 12px; font-size: 12px;
background: #dcdcdc; background: #dcdcdc;
} }
.travelpassengerlist tr th { .PassengerList .travelpassengerlist tr th {
height: 30px; height: 30px;
} }
.travelpassengerlist tr td { .PassengerList .travelpassengerlist tr td {
background: #fff; background: #fff;
text-align: center; text-align: center;
} }
/*拒签人员*/ /*拒签人员*/
.travelpassengerlist .redTr td { .PassengerList .travelpassengerlist .redTr td {
color: #E95252; 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> </style>
<template> <template>
<div class="flexOne PassengerList"> <div class="flexOne PassengerList PassengerList">
<div class="query-box"> <div class="query-box">
<ul> <ul>
<li> <li>
...@@ -51,29 +77,31 @@ ...@@ -51,29 +77,31 @@
<tr> <tr>
<th width="140">团号</th> <th width="140">团号</th>
<th>团名</th> <th>团名</th>
<th width="60">人数</th>
<th width="120">出发日期</th> <th width="120">出发日期</th>
</tr> </tr>
<tr v-for="item in QueryMsg.TeamInfoData"> <tr v-for="item in QueryMsg.TeamInfoData">
<td><a @click="goUrlTravelControl('团控列表','TravelControlList',item.TCID,item.TCNUM)" <td><a @click="goUrlTravelControl('团控列表','TravelControlList',item.TCID,item.TCNUM)"
style="cursor:pointer;color:blue;">{{item.TCNUM}}</a></td> style="cursor:pointer;color:blue;">{{item.TCNUM}}</a></td>
<td>{{item.Title}}</td> <td>{{item.Title}}</td>
<td>{{item.Inventory}}</td>
<td>{{item.StartDate}} {{item.WeekStr}}</td> <td>{{item.StartDate}} {{item.WeekStr}}</td>
</tr> </tr>
</table> </table>
</li> </li>
<li> <li>
<input type="button" class="normalBtn" v-if="!allDIs" value="分房表确认" @click="querenHotel()">
<input type="button" class="normalBtn" value="导出报表" @click="exportExcel()"> <input type="button" class="normalBtn" value="导出报表" @click="exportExcel()">
</li> </li>
</ul> </ul>
</div> </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> <tr>
<th width="50">房间数</th> <th width="50">房间数</th>
<th width="50">房号</th> <th width="50">房号</th>
<th width="130">酒店及房型</th> <th width="130">酒店及房型</th>
<th width="130">旅客姓名</th> <th width="130">旅客姓名</th>
<th width="120">占床</th>
<th width="110">英文姓</th> <th width="110">英文姓</th>
<th width="145">英文名</th> <th width="145">英文名</th>
<th width="45">性别</th> <th width="45">性别</th>
...@@ -93,23 +121,28 @@ ...@@ -93,23 +121,28 @@
<th width="120">签证类型</th> <th width="120">签证类型</th>
</tr> </tr>
<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> </tr>
<tbody v-for="(item,index) in QueryMsg.dataList" :key="index"> <tbody>
<tr v-for="(subItem,subIndex) in item" :class="{'redTr':subItem.VisaState==1}"> <tr v-for="(subItem, subIndex) in dataList" :class="{'redTr':subItem.VisaState==1}">
<td v-if="subIndex==0" :rowspan="subItem.RowsCount">{{index+1}}</td> <td>{{subIndex+1}}</td>
<td v-if="subIndex==0" :rowspan="subItem.RowsCount"></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> <td>
<!--自然单间 指定单间(单房差)--> <el-select v-model="subItem.HouseType" placeholder="请选择" @change="changeRmType(subItem, subIndex)">
<template v-if="subItem.SingleRoomType==subItem.HouseType"> <el-option :disabled="(subItem.HouseType == 1 && IsLeaderGuide == 1) || allDIs"
{{getHouseTypeStr(subItem.HouseType)}} v-for="(hs, hsIndex) in HouseTypeList" :key="hsIndex" :label="hs.HouseName" :value="hs.HouseType">
</template> </el-option>
<template v-else> </el-select>
{{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>
<td>{{subItem.GuestName}}</td> <td>{{subItem.GuestName}}</td>
<td>{{subItem.IsBed == 1 ? '占床' : '不占床'}}</td>
<td>{{subItem.ESurName}}</td> <td>{{subItem.ESurName}}</td>
<td>{{subItem.EName}}</td> <td>{{subItem.EName}}</td>
<td>{{getSexStr(subItem)}}</td> <td>{{getSexStr(subItem)}}</td>
...@@ -123,12 +156,51 @@ ...@@ -123,12 +156,51 @@
<td>{{subItem.MobilePhone}}</td> <td>{{subItem.MobilePhone}}</td>
<td>{{subItem.IdCard}}</td> <td>{{subItem.IdCard}}</td>
<td>{{subItem.UnitPrice}}</td> <td>{{subItem.UnitPrice}}</td>
<td>{{subItem.CreateBy}}</td> <td>{{subItem.CreateByStr}}</td>
<td>{{subItem.GroupTypeStr}}</td> <td>{{subItem.GroupTypeStr}}</td>
<td align="center">经济舱 <td align="center">经济舱
<br>(Y) <br>(Y)
</td> </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> </tr>
</tbody> </tbody>
</table> </table>
...@@ -144,7 +216,9 @@ ...@@ -144,7 +216,9 @@
PageSize: 100, PageSize: 100,
TCID: 0, TCID: 0,
OrderId: 0, OrderId: 0,
currentPage: 1 currentPage: 1,
isGetTicket: 1, //查询机票
isGetZiYouXing: 1, //查询自由行
}, },
IsHaveLeader: 1, //1-有领队,0-无领队 IsHaveLeader: 1, //1-有领队,0-无领队
IsLeaderGuide: 0, //1-领兼导,0-领队 IsLeaderGuide: 0, //1-领兼导,0-领队
...@@ -157,10 +231,85 @@ ...@@ -157,10 +231,85 @@
OrderId: 0, OrderId: 0,
//团期数据 //团期数据
TeamInfoData: [] TeamInfoData: []
} },
houseList: [],
HouseTypeList: [],
numberList: [],
dataList: [],
otherList: [], //单机票和自由行列表
allDIs: false,
}; };
}, },
methods: { 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) { goUrlTravelControl(name, path, id, tcmun) {
this.$router.push({ this.$router.push({
name: path, name: path,
...@@ -200,37 +349,92 @@ ...@@ -200,37 +349,92 @@
} }
return 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;
}
}
}
}
this.QueryMsg.dataList = Diningdest;
},
//获取数据 //获取数据
getList() { getList() {
this.QueryMsg.loading = true; this.QueryMsg.loading = true;
this.apipost( this.apipost(
"travel_get_GetTravelGuestPageList", "travel_get_GetTravelGuestPageList_V2",
this.msg, this.msg,
res => { res => {
this.QueryMsg.loading = false; this.QueryMsg.loading = false;
if (res.data.resultCode == 1) { 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.IsHaveLeader = res.data.data.pageData.IsHaveLeader;
this.IsLeaderGuide = res.data.data.pageData.IsLeaderGuide; 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 => {} err => {}
); );
}, },
exportExcel() { exportExcel() {
this.QueryMsg.loading = true;
//导出报表 //导出报表
let msg = { let msg = {
TCID: this.msg.TCID TCID: this.msg.TCID,
isGetTicket: 0, //查询机票
isGetZiYouXing: 0, //查询自由行
}; };
var fileName = "旅客名单.xls"; var fileName = "旅客名单.xls";
if (this.QueryMsg.TeamInfoData != null) { if (this.QueryMsg.TeamInfoData != null) {
fileName = fileName =
"【" + this.QueryMsg.TeamInfoData[0].TCNUM + "】旅客名单.xls"; "【" + this.QueryMsg.TeamInfoData[0].TCNUM + "】旅客名单.xls";
} }
this.GetLocalFile("travel_get_GetTravelGuestExport", msg, fileName, res => { this.GetLocalFile("travel_get_GetTravelGuestExport", msg, fileName);
this.QueryMsg.loading = false;
});
}, },
//获取团期信息 //获取团期信息
...@@ -251,11 +455,20 @@ ...@@ -251,11 +455,20 @@
} }
}, },
mounted() { 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.TCID = this.$route.query.id;
this.msg.TCID = this.TCID; this.msg.TCID = this.TCID;
this.msg.OrderId = this.$route.query.OrderId; this.msg.OrderId = this.$route.query.OrderId;
this.getTeamInfo(); this.getTeamInfo();
this.getList(); this.getList();
this.getHouseTypeList();
} }
}; };
......
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
<div class="clearfix comCheckDinner"> <div class="clearfix comCheckDinner">
<div class="comCk_list" v-for="(subItem,subIndex) in item.DinnerList"> <div class="comCk_list" v-for="(subItem,subIndex) in item.DinnerList">
<input :id="'H'+index+'_'+subIndex" type="checkbox" v-model="subItem.isChecked" @click="getDinner(item.DinnerList,subIndex)"/> <input :id="'H'+index+'_'+subIndex" type="checkbox" v-model="subItem.isChecked" @click="getDinner(item.DinnerList,subIndex)"/>
<label :for="'H'+index+'_'+subIndex" style="cursor: pointer">{{subItem.Name}}</label> <label :for="'H'+index+'_'+subIndex" style="cursor: pointer">{{subItem.RealName}}</label>
</div> </div>
</div> </div>
</el-tab-pane> </el-tab-pane>
...@@ -143,6 +143,7 @@ ...@@ -143,6 +143,7 @@
ckDinnerObj.ID = this.ckedDinner.ID; ckDinnerObj.ID = this.ckedDinner.ID;
ckDinnerObj.Address = this.ckedDinner.Address; ckDinnerObj.Address = this.ckedDinner.Address;
ckDinnerObj.Name = this.ckedDinner.Name; ckDinnerObj.Name = this.ckedDinner.Name;
ckDinnerObj.RealName=this.ckedDinner.RealName;
ckDinnerObj.PayStyle = this.ckedDinner.PayStyle; ckDinnerObj.PayStyle = this.ckedDinner.PayStyle;
ckDinnerObj.Tel = this.ckedDinner.Tel; ckDinnerObj.Tel = this.ckedDinner.Tel;
ckDinnerObj.RebateRatio=this.ckedDinner.RebateRatio; ckDinnerObj.RebateRatio=this.ckedDinner.RebateRatio;
......
...@@ -1928,16 +1928,16 @@ export default { ...@@ -1928,16 +1928,16 @@ export default {
title: '领队用款' title: '领队用款'
}, },
}, { }, {
path: '/TravelPassengerList', //旅客名单 可分房 path: '/TravelPassengerList2', //旅客名单 不能分房
name: 'TravelPassengerList', name: 'TravelPassengerList2',
component: resolve => require(['@/components/TravelManager/TravelList/TravelPassengerList2'], resolve), component: resolve => require(['@/components/TravelManager/TravelList/TravelPassengerList2'], resolve),
meta: { meta: {
title: '旅客名单' title: '旅客名单'
}, },
}, },
{ {
path: '/TravelPassengerList2', //旅客名单 不能分房 path: '/TravelPassengerList', //旅客名单 可分房
name: 'TravelPassengerList2', name: 'TravelPassengerList',
component: resolve => require(['@/components/TravelManager/TravelList/TravelPassengerList'], resolve), component: resolve => require(['@/components/TravelManager/TravelList/TravelPassengerList'], resolve),
meta: { meta: {
title: '旅客名单' title: '旅客名单'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment