Commit 4c07b59a authored by 黄媛媛's avatar 黄媛媛
parents 150e1ce3 7ae16c1d
......@@ -173,7 +173,7 @@ export default {
}
</script>
<style>
@import "//at.alicdn.com/t/font_635492_4ra0qfyvnej.css";
@import "//at.alicdn.com/t/font_635492_qywlhd3a0cr.css";
@import "./assets/css/Semibold.css";
@import "./assets/css/global/config.css";
@import "./assets/css/fileIcon.css";
......
......@@ -118,15 +118,15 @@
<span style="color:#FFFFFF; background-color:#000; padding: 2px 4px; border-radius: 5px;">无库存</span>
</div>
<template v-if="isShow">
<el-table :data="dataList" style="width:100%" border v-loading='loading' height="700">
<el-table-column fixed label="酒店名称" min-width="180" style="background:#EAEAEA">
<el-table :data="dataList" style="width:100%" border v-loading='loading' :height="tableHeight">
<el-table-column fixed label="酒店名称" min-width="220" style="background:#EAEAEA">
<template slot-scope="scope">
<div style="text-decoration: underline;cursor:pointer" @click="GotoHotel(scope.row.Hotel)">
{{scope.row.HotelName}}
</div>
</template>
</el-table-column>
<el-table-column v-for='(item,index) in dataList[0].DayList' :label="item.DateStr" :key='index' min-width="150">
<el-table-column v-for='(item,index) in dataList[0].DayList' :label="item.DateStr" :key='index' min-width="210">
<template slot-scope="scope">
<template v-if="scope.row.DayList[index].IsHaveStock==0">
<div style="background-color:#000!important;width:50px;height:100%;margin:0,padding:0;color:#FFFFFF">无库存
......@@ -137,10 +137,12 @@
v-if="scope.row.DayList[index].HotelJourneyOrderList&&scope.row.DayList[index].HotelJourneyOrderList.length>0">
<template v-for="(childItem,childIndex) in scope.row.DayList[index].HotelJourneyOrderList">
<div :title="childItem.TCID+'【OK】'" v-if="childItem.DMCState==1||childItem.OPState==1"
slot="reference" class="w80"
style="white-space:nowrap;color:green;cursor:pointer;text-decoration:underline;"
slot="reference"
style="white-space:nowrap;color:green;cursor:pointer;text-decoration:underline;display:inline-block"
@click="outerVisible=true,GetClickItem(item.DateAllStr,scope.row.Hotel,childItem.TCID)">
{{childItem.BookGroup}} </div>
{{childItem.BookGroup}}
</div>
<a style="display:inline-block;text-decoration:underline;color:red;cursor:pointer" @click="DeleteHotel(item.DateAllStr,scope.row.Hotel,childItem.TCID)">删除</a>
</template>
</template>
<template v-else>
......@@ -242,7 +244,7 @@
</div>
</template>
<script>
import commonHotelWork from "../commonPage/commonHotelWork.vue";
export default {
data() {
return {
......@@ -285,11 +287,11 @@
companyList: [],
//酒店列表
HotelList: [],
//默认高度
tableHeight:0
};
},
components: {
commonHotelWork
},
methods: {
GotoHotel(HotelId) {
this.$router.push({
......@@ -487,16 +489,50 @@
this.loading = false;
});
},
com_onresize() {
//clientHeight的值由DIV内容的实际高度和CSS中的padding值决定,
var contentsHeight = document.body.clientHeight;
var h = contentsHeight - 50 - 180 - 40;
if (h < 110) {
return;
}
//设置table的行高
this.tableHeight = h;
},
DeleteHotel(DateAllStr,Hotel,TCID)
{
var that = this;
var nMsg={
TCID:TCID,
Hotel:Hotel,
UseTime:DateAllStr
};
that.Confirm("是否要删除该酒店?", function () {
that.apipost("journeyorder_post_DeleteWorkHotelOrderService", nMsg,
res => {
if (res.data.resultCode == 1) {
that.Success(res.data.message);
that.getList();
} else {
that.Error(res.data.message);
}
},
err => {}
);
});
}
},
mounted() {
this.GetHotelList();
this.msg.YearMonthStr = new Date().Format("yyyy-MM");
// this.msg.YearMonthStr="2019-10";
// this.msg.HotelChooseArray=[1489];
this.getProvinceList(651, 1);
//this.getBranchList();
this.initSupplier();
this.getList();
//自适应高度调节
this.com_onresize();
window.onresize = () => {
this.com_onresize();
}
},
};
......
......@@ -4,8 +4,8 @@
<ul>
<li>
<template v-if="IsOperation != 1">
<input type="button" class="fr normalBtn mb30" value="保存" @click="saveList(1)" :disabled="IsDisabled" />
<input type="button" class="fr normalBtn mb30" value="保存草稿" @click="saveList(0)" :disabled="IsDisabled" />
<input v-if="IsEditDinner==1" type="button" class="fr normalBtn mb30" value="保存" @click="saveList(1)" :disabled="IsDisabled" />
<input v-if="IsEditDinner==0" type="button" class="fr normalBtn mb30" value="保存草稿" @click="saveList(0)" :disabled="IsDisabled" />
</template>
<template v-else>
<span style="color:red;font-size:14px;">已制单,不能在修改!</span>
......@@ -229,6 +229,7 @@
export default {
data() {
return {
IsEditDinner: 0, //1有权限操作餐配
defaultSelectValue: 0,
list: [],
roomList: [],
......@@ -460,8 +461,19 @@
}
})
},
GetAuth() {
this.apipost('dmcstatistics_get_GetGetDmcTotalTablePageAuth', {}, res => {
if (res.data.resultCode == 1) {
//this.IsDMCIsOpenHotel = res.data.data.IsDMCIsOpenHotel;
this.IsEditDinner = res.data.data.IsEditDinner;
} else {
this.$message.error(res.data.message);
}
}, err => {})
}
},
mounted() {
this.GetAuth();
let userInfo = this.getLocalStorage();
this.CurrentUserInfo = userInfo;
this.TCNUM = this.$route.query.TCNUM;
......
......@@ -526,6 +526,10 @@
</div>
</div>
<div class="TC_remarkContent">
<div class="clearfix TCL-redType">
<div class="TCL_remarkTitle">地接备注团号:</div>
<div class="TCL_Content"> {{item.CombinationNum}}</div>
</div>
<div class="clearfix TCL-redType">
<div class="TCL_remarkTitle">OP对外备注:</div>
<div class="TCL_Content">{{item.OPRemark}}</div>
......
......@@ -448,6 +448,8 @@
"-" +
myDate.getDate();
this.msg.StartDate = nowDate;
// this.msg.StartDate='';
// this.msg.TCNUM='NRTCA08190613A';
this.getLineList();
this.getList();
},
......
......@@ -371,8 +371,8 @@
parseInt(myDate.getMonth() + 1) +
"-" +
myDate.getDate();
//this.msg.StartDate = nowDate;
this.msg.TCNUM="NRTMU07190702A";
this.msg.StartDate = nowDate;
//this.msg.TCNUM="NRTMU07190702A";
this.getLineList();
this.getList();
},
......
......@@ -621,9 +621,13 @@
</tr>
<tr>
<td>签约日期:</td>
<td>{{getDate(dataList.payDate)}}</td>
<td>
<span v-if="dataList.payDate">{{getDate(dataList.payDate)}}</span>
</td>
<td>签约日期:</td>
<td>{{getDate(dataList.payDate)}}</td>
<td>
<span v-if="dataList.payDate">{{getDate(dataList.payDate)}}</span>
</td>
</tr>
<tr>
<td>签约地点:</td>
......
......@@ -157,7 +157,7 @@ export default {
//跳转至详情
goToDetail(item){
this.$router.push({
name: 'ElectronicContract',
name: 'TravelContractDetail',
query: {
TCID: item.tcid,
orderID: item.orderId,
......
<template>
<div class="commonPriceHotelInfo">
<table v-loading="changeLoading">
<tr>
<th width="60" style="text-align:center;">
选择
</th>
<th width="145" style="text-align:center;">
团号
</th>
<th width="140" style="text-align:center;">
地接团号
</th>
<th width="120" style="text-align:center;">
酒店
</th>
<th width="120" style="text-align:center;">
更换酒店
</th>
<th width="100" style="text-align:center;">
OP状态
</th>
<th width="100" style="text-align:center;">
地接状态
</th>
</tr>
<tr v-for="(hItem,hIndex) in MyDataList">
<td style="text-align:center;">
<el-checkbox :checked="hItem.IsChecked" @change="ChangeStatus(hItem)"></el-checkbox>
</td>
<td style="text-align:center;">
{{hItem.TCNUM}}<br />({{hItem.TCID}})
</td>
<td style="text-align:center;">
{{hItem.DMCNum}}
</td>
<td style="text-align:left;">
{{hItem.OldHotelName}}
</td>
<td style="text-align:left;">
{{hItem.NewHotelName}}
</td>
<td style="text-align:center;">
<template v-if="hItem.OPState==1">
<a style="color:green">OP-指定</a>
</template>
<template v-else-if="hItem.OPState==2">
<a style="color:red">OP-暂定</a>
</template>
</td>
<td style="text-align:center;">
<template v-if="hItem.DMCState==1">
<a style="color:green">地接-OK</a>
</template>
<template v-else-if="hItem.DMCState==2">
<a style="color:red">地接-暂定</a>
</template>
<template v-else-if="hItem.DMCState==0">
<a style="color:red">地接-未操作</a>
</template>
</td>
</tr>
<tfoot>
<tr>
<td colspan="6" style="text-align:center;">
<input type="button" class="normalBtn" value="保存" @click="SaveHotelOrder()" />
</td>
</tr>
</tfoot>
</table>
</div>
</template>
<script>
export default {
props: ["TCID", "HotelId", "DateStr"],
data() {
return {
changeLoading: false,
MyDataList: [],
};
},
methods: {
ChangeStatus(item) {
item.IsChecked = !item.IsChecked;
},
//获取可以改变的酒店列表
GetChangeHotelList() {
this.changeLoading = true;
this.MyDataList = [];
var that = this;
this.apipost("journeyorder_post_GetCanChangeHotelListService", {
UseTime: this.DateStr
},
res => {
that.changeLoading = false;
if (res.data.resultCode == 1) {
that.MyDataList = res.data.data;
} else {
that.Error(res.data.message);
}
},
err => {}
);
},
//保存酒店订单
SaveHotelOrder() {
var that = this;
this.Confirm("是否要替换选中的酒店?", function () {
var newList = [];
if (that.ChangeHotelList && that.ChangeHotelList.length > 0) {
that.ChangeHotelList.forEach(item => {
if (item.IsChecked) {
var Nitem = JSON.parse(JSON.stringify(item));
Nitem.NewHotelID = this.HotelId;
newList.push(Nitem);
}
});
}
if (newList && newList.length > 0) {
that.apipost("journeyorder_post_SaveWorkHotelOrderService", newList,
res => {
if (res.data.resultCode == 1) {
that.Success(res.data.message);
//that.getList();
} else {
that.Error(res.data.message);
}
},
err => {}
);
} else {
that.Info("请选择团期!");
}
});
}
},
mounted() {
},
created() {
}
};
</script>
<style>
.commonPriceHotelWork .comCheckHotel {
width: 100%;
height: 150px;
overflow: auto
}
.commonPriceHotelWork .comCk_list {
padding: 0 20px;
margin: 0 15px 5px 0;
}
.commonPriceHotelWork .cm_Inventory {
margin-left: 20px;
color: red;
display: inline-block;
}
.commonPriceHotelWork .cm_hotelTitle {
width: 100%;
text-align: center;
margin-bottom: 20px;
border-bottom: 1px solid #d1d1d1;
padding: 0 20px 10px 20px;
}
.commonPriceHotelWork .com_SaveBtn {
margin: 10px 20px 0 45%;
}
.commonPriceHotelWork .ckedList {
background-color: #E95252;
color: #fff;
}
.commonPriceHotelWork .Ck_hotelInfo{
width:100%;
height:40px;
background-color: #F6F8FB;
text-align: center;
line-height: 40px;
margin-bottom:10px;
}
</style>
<template>
<div class="commonPriceHotelWork">
<div class="Ck_hotelInfo">
<span style="color:red">{{TCNUM}}{{DateStr}}</span> 酒店库存信息
</div>
<div class="cm_hotelTitle clearfix">
<div style="float:left;">
地区:
<el-select filterable v-model="qMsg.ProvinceId" class="w120" :placeholder="$t('pub.pleaseSel')">
<el-option label="不限" :value='0'></el-option>
<el-option v-for="item in ProvinceList" :label='item.Name' :value='item.ID' :key='item.ID'>
</el-option>
</el-select>
</div>
<div style="float:left;margin-left:10px;">
酒店名称/电话:
<el-input type="text" v-model="qMsg.Name" class="w120" @keyup.native.enter="getCheckHotel()" placeholder="酒店名称或电话"></el-input>
<input type="button" class="normalBtn" value="查询" @click="getCheckHotel()" />
</div>
</div>
<div>
<el-tabs type="border-card" v-loading="loading" v-if="IsShow" >
<el-tab-pane :label="item.ProvinceName" v-for="(item,index) in dataList" :key="item.subCode">
<div class="clearfix comCheckHotel">
<div class="comCk_list" v-for="(subItem,subIndex) in item.HotelList">
<input :id="'H'+index+'_'+subIndex" type="checkbox" v-model="subItem.isChecked" @click="getCheck(item.HotelList,subIndex)"/>
<label :for="'H'+index+'_'+subIndex" style="cursor: pointer">{{subItem.Name}}</label>
<span class="cm_Inventory">{{subItem.Inventory}}</span>
<span class="cm_Inventory">剩余:{{subItem.RemainingInventory}}</span>
<span class="cm_Inventory">价格:{{subItem.CostPrice}}</span>
</div>
</div>
</el-tab-pane>
</el-tabs>
</div>
<input type="button" class="normalBtn com_SaveBtn" @click="sendCkedHotel()" value="保存" />
</div>
</template>
<script>
export default {
props: ["TCID", "DateStr","DayNum","TCNUM"],
data() {
return {
loading:false,
dataList: [],
ProvinceList: [],
qMsg:{
ProvinceId: 0, //选择个省份编号
Name:"",//酒店名称
},
IsShow:false,
ckedHotel:{}
};
},
methods: {
getPriceHotelCheck() {
this.loading=true;
this.IsShow=false;
this.dataList = [];
this.HotelList = [];
this.apipost('hotel_post_GetHasStockHotelList_V2', {
//1-只查询有库存的酒店
IsMoreThanZero: 1,
Country: "651",
IsAllHotel: 1,
Province: this.qMsg.ProvinceId,
Name:this.qMsg.Name,
sDate: this.DateStr
}, res => {
this.loading=false;
this.IsShow=true;
if (res.data.resultCode == 1) {
this.dataList = res.data.data;
this.dataList.forEach(x => {
x.HotelList.forEach(y => {
y.isChecked = false;
})
})
} else {
this.Error(res.data.message)
}
}, err => {})
},
getCheck(hotelList, index) {
hotelList.forEach((x, subIndex) => {
if (index == subIndex) {
x.isChecked = !x.isChecked;
this.ckedHotel = x;
} else {
x.isChecked = false;
}
})
this.$forceUpdate();
},
//向父组件传递选中酒店
sendCkedHotel() {
var ckHotelObj = {};
if(this.ckedHotel){
ckHotelObj.ID = this.ckedHotel.ID;
ckHotelObj.Address = this.ckedHotel.Address;
ckHotelObj.Inventory = this.ckedHotel.Inventory;
ckHotelObj.Name = this.ckedHotel.Name;
ckHotelObj.PayStyle = this.ckedHotel.PayStyle;
ckHotelObj.Tel = this.ckedHotel.Tel;
ckHotelObj.RebateRatio=this.ckedHotel.RebateRatio;
ckHotelObj.RebateCount=this.ckedHotel.RebateCount;
ckHotelObj.CostPrice=this.ckedHotel.CostPrice;
ckHotelObj.TCID=this.TCID;
ckHotelObj.DateStr=this.DateStr;
ckHotelObj.DayNum=this.DayNum;
}
this.$emit("childPriceHotel", ckHotelObj);
},
//获取日本下面的市->下拉框用
getProvinceList() {
let msg = {
Id: 651
};
this.apipost("dict_post_Destination_GetChildList", msg, res => {
if (res.data.resultCode == 1) {
this.ProvinceList = res.data.data;
} else {
this.Error(res.data.message);
}
},
err => {}
);
}
},
mounted() {
this.getProvinceList();
}
};
</script>
\ No newline at end of file
......@@ -162,10 +162,10 @@
<th width="75">出发地</th>
<th width="80">航班时间</th>
<th width="140">公司团号</th>
<th width="90">同业<br/>会员价</th>
<th width="90">同业<br />会员价</th>
<th width="75">线路<br />负责人</th>
<th width="75">进出点</th>
<th width="50">订单<br/>人数</th>
<th width="50">订单<br />人数</th>
<th width="100">机位总数<br />(Y/E/F/单地接)</th>
<th width="60">领队</th>
<th width="60">导游</th>
......@@ -238,11 +238,11 @@
</td>
<td>
<div class="link">
<p @click="goUrlT('productQuery',item.TCNUMS,'产品查询')">{{item.TCNUMS}}<br/>({{item.TCID}})</p>
<p @click="goUrlT('productQuery',item.TCNUMS,'产品查询')">{{item.TCNUMS}}<br />({{item.TCID}})</p>
</div>
</td>
<td style="color: #47BF8C;white-space: nowrap;">
{{item.B2BMemberPrice}}
{{item.B2BMemberPrice}}
</td>
<td>
{{item.CreateByName}}
......@@ -289,9 +289,9 @@
<td>
<a style="text-decoration:underline;cursor:pointer;" title="点击下载旅客名单"
@click="DownLoadGuestList(item,outItem,index)">出境名单</a>
<a style="text-decoration:underline;cursor:pointer;margin-top:5px;display:inline-block;" title="点击下载电话名单"
@click="DownLoadGuestTelList(item,outItem,index)">电话名单</a>
<a style="text-decoration:underline;cursor:pointer;margin-top:5px;display:inline-block;"
title="点击下载电话名单" @click="DownLoadGuestTelList(item,outItem,index)">电话名单</a>
</td>
<td>
<div class="fz16 fbold linkspan">
......@@ -338,7 +338,7 @@
</div>
</td>
<td>
<div class="fz16 fbold linkspan" @click="goUrl('bookDinnerStatisticsDetails',item,outItem,'餐厅详情')">
<div class="fz16 fbold linkspan" @click="goDinnerUrl(item,outItem)">
<span style="color: #4BCA81;" v-if="item.FoodsResult==1"></span>
<span class="colorE95252" v-else>{{item.FoodsResult=='-1'?"x":"O"}}</span>
</div>
......@@ -454,7 +454,8 @@
<el-button @click='openChart(item)' icon="iconfont icon-wechat" type="primary"
style="background:#6DD875; border-color:#6DD875"></el-button>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="酒店操作" placement="top-start" v-if="item.LineId==14">
<el-tooltip class="item" effect="dark" content="酒店操作" placement="top-start"
v-if="item.LineId==14 && IsDMCIsOpenHotel==1">
<el-popover placement="bottom" width="300" trigger="click" v-model="item.isShowPop">
<table class="dmcSetTable">
<tr>
......@@ -491,39 +492,6 @@
style="background:green; border-color:green"></el-button>
</el-popover>
</el-tooltip>
<el-tooltip class="item" effect="dark" content=" 领队/导游配置" placement="top-start"
v-if="item.LineId==14&&outItem.PriceCommonList.length>1" style="display:none;">
<el-popover placement="bottom" width="800" trigger="click">
<table class="dmcSetTable">
<template v-if="TeamHotelList&&TeamHotelList.length>0">
<tr>
<th>团号/时间</th>
<template v-for="(hItem,hIndex) in TeamHotelList">
<th>
{{hItem.TCNUM}}<br />({{hItem.TCID}})
</th>
</template>
</tr>
</template>
<template v-for="(hItem,hIndex) in TeamHotelList">
<template v-for="(hSubItem,hSubIndex) in hItem.dayList">
<tr>
<td>{{hSubItem.UseTime}}</td>
<td>
<template v-if="hSubItem.subList&&hSubItem.subList.length>0">
{{hSubItem.subList[0].NewHotelName}}
</template>
</td>
</tr>
</template>
</template>
</table>
<el-button @click="GetTeamHotelList(outItem.TCIDS)" slot="reference"
icon="iconfont icon-guanli2" type="primary" style="background:green; border-color:green">
</el-button>
</el-popover>
</el-tooltip>
</el-button-group>
</div>
</td>
......@@ -579,6 +547,8 @@
export default {
data() {
return {
IsDMCIsOpenHotel: 0, //1-有权限开启或关闭酒店操作
IsEditDinner: 0, //1有权限操作餐配
loading: false,
currentPage: 1,
total: 0,
......@@ -699,6 +669,28 @@
commonTeamInfo
},
methods: {
goDinnerUrl(obj, outItem) {
// if (this.IsEditDinner == 1) {
this.$router.push({
name: 'bookDinnerStatisticsDetails',
query: {
"id": obj.TCIDS,
'TCNUM': obj.TCNUMS,
'flightTotal': obj.TotalSeat,
'GuestNum': obj.OrderGuestNum,
'NewCombinationNum': outItem.NewCombinationNum,
'LeaderName': obj.LeaderName,
'GuideName': obj.GuideName,
'IsCombine': outItem.PriceCommonList.length > 1,
'NewTCIDs': outItem.TCIDS,
blank: 'y',
tab: "餐厅详情"
}
})
// } else {
// this.Error("请联系地接部操作!");
// }
},
getLeaderTypeStr: function (clas) {
if (clas == 1) {
return "(同行领队)"
......@@ -1125,12 +1117,22 @@
this.loading = false;
});
},
goRoomTip()
{
goRoomTip() {
this.Error("请联系组团OP提供分房表文件!");
},
GetAuth() {
this.apipost('dmcstatistics_get_GetGetDmcTotalTablePageAuth', {}, res => {
if (res.data.resultCode == 1) {
this.IsDMCIsOpenHotel = res.data.data.IsDMCIsOpenHotel;
this.IsEditDinner = res.data.data.IsEditDinner;
} else {
this.$message.error(res.data.message);
}
}, err => {})
}
},
mounted() {
this.GetAuth();
let myDate = new Date();
let nowDate =
myDate.getFullYear() +
......
......@@ -406,7 +406,7 @@
{{subItem.ScenicName}}
</td>
<td>
{{peopleStrToWord(childItem.PeopleType)}}:{{childItem.PeopleNum}}
{{peopleStrToWord(childItem.PeopleType)}}:{{childItem.UsePeopleNum}}
</td>
<td>
<p>
......
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