Commit a38c781b authored by 华国豪's avatar 华国豪 🙄
parents 9009d17b 63fe4161
<style>
.TravelDaysTrip .el-form-item {
display: inline-block;
}
</style>
<template>
<div>
<el-form :model="subConfig" :rules="Rules" ref="dayTripForm">
<div class="TravelDaysTrip" :class="{'foldHeight':isFold==1}">
<span class="TMTitle"><i></i>线路行程 </span>
<!-- <span class="foldList" style="margin-left:20px" @click="goUrl('TravelPreview')">预览行程</span> -->
<div class="DaysTripTop">
<span class="TDTextspan">行程天数</span>
<span class="TDInputspan">
<el-form-item prop="DayNum">
<el-input :disabled="isOpenGroup" class="w120 LowNum" v-model="subConfig.DayNum" @keyup.native="checkInteger(subConfig,'DayNum');createLineTrip()">
<template slot="append"></template>
</el-input>
</el-form-item>
</span>
<span class="TDInputspan">
<el-form-item prop="NightNum">
<el-input :disabled="isOpenGroup" class="w120 LowNum" v-model="subConfig.NightNum" @keyup.native="checkInteger(subConfig,'NightNum')">
<template slot="append"></template>
</el-input>
</el-form-item>
</span>
<span class="TDTextspan">集合出发城市</span>
<span>
<el-form-item prop="StartCityId">
<el-select :disabled="isOpenGroup" class='w200' :placeholder="$t('pub.pleaseSel')" v-model="subConfig.StartCityId"
filterable>
<el-option :label="$t('pub.unlimitedSel')" :value='SelectDefaultValue'></el-option>
<el-option v-for="item in StartCity" :label='item.startCityName' :value='item.ID' :key='item.ID'>
</el-option>
</el-select>
</el-form-item>
</span>
<span class="TDTextspan">返回抵达城市</span>
<span>
<el-form-item prop="ReturnArriveCityId">
<el-select :disabled="isOpenGroup" class='w200' :placeholder="$t('pub.pleaseSel')" v-model="subConfig.ReturnArriveCityId"
filterable>
<el-option :label="$t('pub.unlimitedSel')" :value='SelectDefaultValue'></el-option>
<el-option v-for="item in StartCity" :label='item.startCityName' :value='item.ID' :key='item.ID'>
</el-option>
</el-select>
</el-form-item>
</span>
</div>
<div class="TravelDayContent clearfix">
<div class="vertical-line"></div>
<div class="days-box" v-for="(item,index) in subConfig.DayList" :key="item.subCode">
<div class="leftDayLine">
<div class="dayCircle">D{{index+1}}</div>
</div>
<div class="rightDayContent">
<div class="TD_Operation">
<div class="TD_daysMove">
<el-tooltip class="item" effect="dark" content="上移行程" placement="top-start" v-if="index!=0">
<i class="iconfont icon-shangyi" @click="MoveDays(index,0)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="下移行程" placement="top-start" v-if="index!=subConfig.DayList.length-1">
<i class="iconfont icon-xiayi1" @click="MoveDays(index,1)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="删除" placement="top-start">
<i class="iconfont icon-xingzhuang" @click="removeDaysTrip(index)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="添加" placement="top-start">
<i class="iconfont icon-mui-icon-add" @click="addDaysTrip(index)"></i>
</el-tooltip>
</div>
</div>
<div class="dayscontent hideToggle" v-show="item.isHide">
<div class="toggle-box" @click="changeToggleBox(item)">
点击展开
</div>
<div class="daycnt">
<div class="d">第{{index+1}}天</div>
<div class="title-box">
<div class="t">
{{item.dayArray[0].childItem.Title}}
</div>
</div>
</div>
</div>
<div class="dayscontent" v-show="!item.isHide">
<div class="toggle-box" @click="changeToggleBox(item)">
点击折叠
</div>
<div class="daycnt">
<div class="d">第{{index+1}}天</div>
<div class="title-box">
<titleTrip :isOpenGroup="isOpenGroup" v-bind:subItemObj="item.dayArray[0]" >
</titleTrip>
</div>
</div>
<div v-for="(subItem,subIndex) in item.dayArray" :key="subItem.subCode">
<div v-if="subItem.Type==$tripUtils.TypeKey.traffic">
<trifficTrip v-bind:subItemObj="subItem" v-bind:subIndex="subIndex" v-bind:index="index"
v-bind:QueryData="subArray" v-bind:DayList="subConfig.DayList" v-bind:DefaultList="trafficSameList"
:isOpenGroup="isOpenGroup" v-bind:subTotalIndex="item.dayArray.length" v-bind:AllCityList="AllCityList"
v-bind:UseTypeArray="UseTypeArray" v-bind:AirPickUp="AirPickUp" v-bind:AirSend="AirSend"
v-bind:StartCity="StartCity"></trifficTrip>
</div>
<div v-if="subItem.Type==$tripUtils.TypeKey.hotel">
<span v-if="IsDirect==1">
<hotelTrip v-bind:subItemObj="subItem" v-bind:DefaultList="hotelSameList" v-bind:subIndex="subIndex"
v-bind:DinnerList="DinnerList" v-bind:index="index" :isOpenGroup="isOpenGroup"
v-bind:subTotalIndex="item.dayArray.length"></hotelTrip>
</span>
<span v-else>
</span>
</div>
<div v-if="subItem.Type==$tripUtils.TypeKey.scenic">
<span v-if="IsDirect==1">
<scienTrip v-bind:subItemObj="subItem" v-bind:DefaultList="scenicSameList" v-bind:subIndex="subIndex"
v-bind:index="index" :isOpenGroup="isOpenGroup" v-bind:subTotalIndex="item.dayArray.length"></scienTrip>
</span>
</div>
<div v-if="subItem.Type==$tripUtils.TypeKey.dinner">
<span v-if="IsDirect==1">
<dinnerTrip v-bind:subItemObj="subItem" v-bind:DefaultList="dinnerSameList" v-bind:subIndex="subIndex"
v-bind:HotelList="HotelList" v-bind:index="index" :isOpenGroup="isOpenGroup"
v-bind:subTotalIndex="item.dayArray.length"></dinnerTrip>
</span>
<span v-else>
</span>
</div>
<div v-if="subItem.Type==$tripUtils.TypeKey.freedom">
<freedomTrip v-bind:subItemObj="subItem" v-bind:DefaultList="freedomSameList" v-bind:subIndex="subIndex"
v-bind:index="index" :isOpenGroup="isOpenGroup" v-bind:subTotalIndex="item.dayArray.length"></freedomTrip>
</div>
<div v-if="subItem.Type==$tripUtils.TypeKey.warmtip">
<warmtipTrip v-bind:subItemObj="subItem" v-bind:DefaultList="warmtipSameList" v-bind:subIndex="subIndex"
:isOpenGroup="isOpenGroup" v-bind:subTotalIndex="item.dayArray.length"></warmtipTrip>
</div>
</div>
<div v-if="!isOpenGroup" class="tripListSpan">
<span class="tripList" @click="addChildItem(index,typeItem.Type)" v-for="(typeItem,typeIndex) in typeArrayListAll"
:key="typeIndex">{{typeItem.Name}}</span>
</div>
<div class="tripListSpan" v-else>
<span class="tripList" @click="addChildItem(index,typeItem.Type)" v-for="(typeItem,typeIndex) in typeArrayList"
:key="typeIndex">{{typeItem.Name}}</span>
</div>
</div>
</div>
<div class="lastHoverContent">
</div>
</div>
</div>
</div>
</el-form>
</div>
</template>
<script>
import trifficTrip from "../oldTravelGroupControl/trifficTrip";
import scienTrip from "../oldTravelGroupControl/scienTrip_Direct";
import hotelTrip from "../oldTravelGroupControl/hotelTrip_Direct";
import dinnerTrip from "../oldTravelGroupControl/dinnerTrip_Direct";
import freedomTrip from "../oldTravelGroupControl/freedomTrip";
import warmtipTrip from "../oldTravelGroupControl/warmtipTrip";
import titleTrip from "../oldTravelGroupControl/titleTrip";
import { callbackify } from "util";
export default {
/*
* subConfig.DayList:行程天数[循环生成数据使用]
* AllCityList:所有的城市列表
* StartCity:出发城市,集合城市
* UseTypeArray:用车类型
* AirPickUp:接机
* AirSend:送机
*/
props: [
"subConfig",
"isOpenGroup",
"IsDirect",
"AllCityList",
"StartCity",
"UseTypeArray",
"AirPickUp",
"AirSend",
"subArray",
"NoticeParameters",
],
data() {
var SetOutCityIdValidate = (rule, value, callback) => {
if (value === 0) {
callback(new Error("请选择集合出发城市"));
} else {
return callback();
}
};
var ReturnArriveCityIdValidate = (rule, value, callback) => {
if (value === 0) {
callback(new Error("请选择返回抵达城市"));
} else {
return callback();
}
};
return {
//类型数组
typeArrayListAll: this.$tripUtils.TypeArray,
typeArrayList:[],
//酒店默认叙述
hotelSameList: [],
//餐厅默认叙述
dinnerSameList: [],
//景点默认叙述
scenicSameList: [],
//自由活动默认叙述
freedomSameList: [],
//交通默认叙述
trafficSameList: [],
//温馨提示默认叙述
warmtipSameList: [],
//标题提示默认叙述
titleSameList: [],
//下拉框默认值
SelectDefaultValue: 0,
tempDinnerType: [],
//时间类型
TimeTypeList: [],
//折叠展开
isFold: "",
//验证
Rules: {
//集合出发城市
StartCityId: [
{
validator: SetOutCityIdValidate,
trigger: "change"
}
],
//返回抵达城市
ReturnArriveCityId: [
{
validator: ReturnArriveCityIdValidate,
trigger: "change"
}
],
//天
DayNum: [
{
required: true,
message: "请填写行程天数",
trigger: "blur"
}
],
//晚
NightNum: [
{
required: true,
message: "请填写行程晚数",
trigger: "blur"
}
]
},
HotelList: [], //所有酒店
DinnerList: [] //所有餐厅
};
},
components: {
trifficTrip: trifficTrip,
scienTrip: scienTrip,
hotelTrip: hotelTrip,
dinnerTrip: dinnerTrip,
freedomTrip: freedomTrip,
warmtipTrip: warmtipTrip,
titleTrip: titleTrip
},
methods: {
changeToggleBox(item) {
item.isHide = !item.isHide;
this.$forceUpdate();
},
goUrl(url) {
let id = this.$route.query.configId;
this.$router.push({
path: url,
query: {
id: id
}
});
},
//表单验证
validateForm() {
let flag = false;
var that = this;
that.$refs["dayTripForm"].validate(valid => {
flag = valid;
});
return flag;
},
//生成行程天数
createLineTrip() {
if (this.subConfig.DayNum > this.subConfig.DayList.length) {
for (
var i = this.subConfig.DayList.length;
i < this.subConfig.DayNum;
i++
) {
//去掉以前默认的交通
var dayItem = this.$tripUtils.daysArrayObj();
dayItem.isHide = false;
dayItem.dayNum = i + 1;
var titleItem = this.$tripUtils.titleObj();
titleItem.DayNum = i + 1;
var daysArrayItem = this.$tripUtils.daysArrayItemObj();
daysArrayItem.Type = this.$tripUtils.TypeKey.title;
daysArrayItem.childItem = titleItem;
dayItem.dayArray.push(daysArrayItem);
this.subConfig.DayList.push(dayItem);
}
} else {
//删除多余的项
for (
var i = this.subConfig.DayNum;
i < this.subConfig.DayList.length;
i++
) {
var dayObj = this.subConfig.DayList[i];
dayObj.dayArray.forEach((subItem, subIndex) => {
this.commonRemove(subItem.childItem.DayNum, subIndex);
});
}
this.subConfig.DayList.length = this.subConfig.DayNum;
}
console.log("this.sub",this.subConfig);
},
//点击往后追加
addChildItem(index, type) {
switch (type.toString()) {
//交通
case this.$tripUtils.TypeKey.traffic:
var trafficItem = this.$tripUtils.trafficObj();
trafficItem.DayNum = index + 1;
var subTrafficObj = this.$tripUtils.subTrafficObj();
//默认下一天的出发城市
var StartCityId = this.$tripUtils.GetCityId(
this.subConfig.DayList,
trafficItem.DayNum - 1,
index,
false
);
subTrafficObj.StartCityId = StartCityId;
trafficItem.SubTraffic.push(subTrafficObj);
var daysArrayItem = this.$tripUtils.daysArrayItemObj();
daysArrayItem.Type = this.$tripUtils.TypeKey.traffic;
daysArrayItem.childItem = trafficItem;
this.subConfig.DayList[index].dayArray.push(daysArrayItem);
break;
//景点
case this.$tripUtils.TypeKey.scenic:
var scenicItem = this.$tripUtils.scenicObj();
scenicItem.DayNum = index + 1;
var daysArrayItem = this.$tripUtils.daysArrayItemObj();
daysArrayItem.Type = this.$tripUtils.TypeKey.scenic;
//获取城市编号
var cityId = this.$tripUtils.GetCityId(
this.subConfig.DayList,
index,
this.subConfig.DayList[index].dayArray.length,
true
);
scenicItem.CityId = cityId;
//查询数组
var qArray = this.$tripUtils.GetCityIdArray(
this.subConfig.DayList,
index,
this.subConfig.DayList[index].dayArray.length,
true
);
scenicItem.QCity = qArray.join(",");
daysArrayItem.childItem = scenicItem;
this.subConfig.DayList[index].dayArray.push(daysArrayItem);
break;
//酒店
case this.$tripUtils.TypeKey.hotel:
var hotelItem = this.$tripUtils.hotelObj();
hotelItem.DayNum = index + 1;
var daysArrayItem = this.$tripUtils.daysArrayItemObj();
daysArrayItem.Type = this.$tripUtils.TypeKey.hotel;
//获取城市编号
var cityId = this.$tripUtils.GetCityId(
this.subConfig.DayList,
index,
this.subConfig.DayList[index].dayArray.length,
true
);
//查询数组
var qArray = this.$tripUtils.GetCityIdArray(
this.subConfig.DayList,
index,
this.subConfig.DayList[index].dayArray.length,
true
);
hotelItem.QCity = qArray.join(",");
hotelItem.CityId = cityId;
daysArrayItem.childItem = hotelItem;
this.subConfig.DayList[index].dayArray.push(daysArrayItem);
break;
//餐厅
case this.$tripUtils.TypeKey.dinner:
var dinnerItem = this.$tripUtils.dinnerObj();
dinnerItem.DayNum = index + 1;
var daysArrayItem = this.$tripUtils.daysArrayItemObj();
daysArrayItem.Type = this.$tripUtils.TypeKey.dinner;
//获取城市编号
var cityId = this.$tripUtils.GetCityId(
this.subConfig.DayList,
index,
this.subConfig.DayList[index].dayArray.length,
true
);
//查询数组
var qArray = this.$tripUtils.GetCityIdArray(
this.subConfig.DayList,
index,
this.subConfig.DayList[index].dayArray.length,
true
);
dinnerItem.QCity = qArray.join(",");
dinnerItem.CityId = cityId;
daysArrayItem.childItem = dinnerItem;
this.subConfig.DayList[index].dayArray.push(daysArrayItem);
break;
case this.$tripUtils.TypeKey.freedom:
var freedomItem = this.$tripUtils.dinnerObj();
freedomItem.DayNum = index + 1;
var daysArrayItem = this.$tripUtils.daysArrayItemObj();
daysArrayItem.Type = this.$tripUtils.TypeKey.freedom;
//获取城市编号
var cityId = this.$tripUtils.GetCityId(
this.subConfig.DayList,
index,
this.subConfig.DayList[index].dayArray.length,
true
);
freedomItem.CityId = cityId;
daysArrayItem.childItem = freedomItem;
this.subConfig.DayList[index].dayArray.push(daysArrayItem);
break;
//温馨提示
case this.$tripUtils.TypeKey.warmtip:
var warmtipItem = this.$tripUtils.warmtipObj();
warmtipItem.DayNum = index + 1;
var daysArrayItem = this.$tripUtils.daysArrayItemObj();
daysArrayItem.Type = this.$tripUtils.TypeKey.warmtip;
//获取城市编号
var cityId = this.$tripUtils.GetCityId(
this.subConfig.DayList,
index,
this.subConfig.DayList[index].dayArray.length,
true
);
warmtipItem.CityId = cityId;
daysArrayItem.childItem = warmtipItem;
this.subConfig.DayList[index].dayArray.push(daysArrayItem);
break;
//标题
case this.$tripUtils.TypeKey.title:
var titleItem = this.$tripUtils.titleObj();
titleItem.DayNum = index + 1;
var daysArrayItem = this.$tripUtils.daysArrayItemObj();
daysArrayItem.Type = this.$tripUtils.TypeKey.title;
daysArrayItem.childItem = titleItem;
this.subConfig.DayList[index].dayArray.push(daysArrayItem);
break;
}
},
//获取相似线路行程
getSameJourney() {
var msg = {
ID: this.subArray.ConfigId,
LineId: this.subArray.LineID,
LineteamId: this.subArray.LineteamId
};
this.apipost(
"travel_get_GetTopTenSameJourneyList",
msg,
res => {
if (res.data.resultCode == 1) {
this.hotelSameList = res.data.data.hotelSameList;
this.dinnerSameList = res.data.data.dinnerSameList;
this.scenicSameList = res.data.data.scenicSameList;
this.freedomSameList = res.data.data.freedomSameList;
this.trafficSameList = res.data.data.trafficSameList;
this.warmtipSameList = res.data.data.warmtipSameList;
this.titleSameList = [];
}
},
err => {}
);
},
//上移下移(IsUp:0上移,1下移)
MoveItem(dayNum, subIndex, IsUp) {
this.subConfig.DayList.forEach(dayItem => {
if (dayItem.dayNum == dayNum) {
var currentItem = dayItem.dayArray[subIndex];
//上移
if (IsUp == 0) {
if (subIndex > 0) {
var upItem = dayItem.dayArray[subIndex - 1];
this.$set(dayItem.dayArray, subIndex - 1, currentItem);
this.$set(dayItem.dayArray, subIndex, upItem);
}
} else {
//下移
if (subIndex != dayItem.dayArray.length - 1) {
var downItem = dayItem.dayArray[subIndex + 1];
this.$set(dayItem.dayArray, subIndex + 1, currentItem);
this.$set(dayItem.dayArray, subIndex, downItem);
}
}
}
});
},
//天数上移下移
MoveDays(index, IsUp) {
var currentItem = this.subConfig.DayList[index];
//上移
if (IsUp == 0) {
if (index > 0) {
var upItem = this.subConfig.DayList[index - 1];
currentItem.dayNum = currentItem.dayNum - 1;
upItem.dayNum = upItem.dayNum + 1;
if (currentItem.dayArray != null && currentItem.dayArray.length > 0) {
currentItem.dayArray.forEach(cItem => {
cItem.childItem.DayNum = currentItem.dayNum;
});
}
if (upItem.dayArray != null && upItem.dayArray.length > 0) {
upItem.dayArray.forEach(cItem => {
cItem.childItem.DayNum = upItem.dayNum;
});
}
this.$set(this.subConfig.DayList, index - 1, currentItem);
this.$set(this.subConfig.DayList, index, upItem);
}
} else {
//下移
if (index != this.subConfig.DayList.length - 1) {
var downItem = this.subConfig.DayList[index + 1];
currentItem.dayNum = currentItem.dayNum + 1;
downItem.dayNum = downItem.dayNum - 1;
if (currentItem.dayArray != null && currentItem.dayArray.length > 0) {
currentItem.dayArray.forEach(cItem => {
cItem.childItem.DayNum = currentItem.dayNum;
});
}
if (downItem.dayArray != null && downItem.dayArray.length > 0) {
downItem.dayArray.forEach(cItem => {
cItem.childItem.DayNum = downItem.dayNum;
});
}
this.$set(this.subConfig.DayList, index + 1, currentItem);
this.$set(this.subConfig.DayList, index, downItem);
}
}
},
//左右移动
ExchangeImg(dayNum, subIndex, imgIndex, IsMove) {
this.subConfig.DayList.forEach(dayItem => {
if (dayItem.dayNum == dayNum) {
dayItem.dayArray.forEach((arrItem, arrIndex) => {
if (arrIndex == subIndex) {
var imgItem = arrItem.childItem.ImaArray[imgIndex];
//左移
if (IsMove == 0) {
var upItem = arrItem.childItem.ImaArray[imgIndex - 1];
this.$set(arrItem.childItem.ImaArray, imgIndex - 1, imgItem);
this.$set(arrItem.childItem.ImaArray, imgIndex, upItem);
} else {
//右移动
var downItem = arrItem.childItem.ImaArray[imgIndex + 1];
this.$set(arrItem.childItem.ImaArray, imgIndex + 1, imgItem);
this.$set(arrItem.childItem.ImaArray, imgIndex, downItem);
}
}
});
}
});
},
//公用删除
commonRemove(dayNum, subIndex) {
let RemoveInfo = [];
this.subConfig.DayList.forEach(x => {
if (x.dayNum == dayNum) {
let info = {
Key: 0,
Value: 0
};
if (x.dayArray[subIndex].childItem.ID > 0) {
info.Key = x.dayArray[subIndex].Type;
//后台枚举类型为7前台的为9
if (info.Key == 7) {
info.Key = 9;
}
info.Value = x.dayArray[subIndex].childItem.ID;
this.subConfig.RemoveChild.push(info);
}
x.dayArray.splice(subIndex, 1);
}
});
},
//删除某天行程
removeDaysTrip(index) {
var item = this.subConfig.DayList[index];
item.dayArray.forEach((delItem, subIndex) => {
this.commonRemove(item.dayNum, subIndex);
});
this.subConfig.DayList.splice(index, 1);
this.subConfig.DayList.forEach((dayItem, dayIndex) => {
if (dayIndex >= index) {
dayItem.dayNum = dayIndex + 1;
dayItem.dayArray.forEach(subItem => {
subItem.childItem.DayNum = dayIndex + 1;
});
}
});
this.subConfig.DayNum = this.subConfig.DayList.length;
},
//在某天后添加一天行程
addDaysTrip(addIndex) {
var array = [];
this.subConfig.DayList.forEach((item, index) => {
if (index < addIndex) {
array.push(item);
} else if (addIndex == index) {
array.push(item);
//新加一天的行程
var dayItem = this.$tripUtils.daysArrayObj();
dayItem.isHide = false;
dayItem.dayNum = item.dayNum + 1;
var titleItem = this.$tripUtils.titleObj();
titleItem.DayNum = item.dayNum + 1;
var daysArrayItem = this.$tripUtils.daysArrayItemObj();
daysArrayItem.Type = this.$tripUtils.TypeKey.title;
daysArrayItem.childItem = titleItem;
dayItem.dayArray.push(daysArrayItem);
array.push(dayItem);
} else {
item.dayNum = item.dayNum + 1;
array.push(item);
}
});
this.subConfig.DayList = array;
this.subConfig.DayNum = array.length;
},
//公用删除图片
commonRemoveImg(index, subItemObj) {
subItemObj.childItem.ImaArray.splice(index, 1);
},
//点击折叠
fold() {
if (this.isFold == "") {
this.isFold = 1;
} else {
this.isFold = "";
}
},
emitData() {
var TrafficList = [];
var ScenicList = [];
var HotelList = [];
var DinnerList = [];
var FreedomList = [];
var WarmTipList = [];
var TitleList = [];
// this.subConfig.DayList.forEach((item, dayIndex) => {
// var rank = 1;
// if (item.dayArray != null && item.dayArray.length > 0) {
// item.dayArray.forEach(subItem => {
// subItem.childItem.Rank = rank;
// subItem.childItem.dayNum = item.dayNum;
// subItem.Type = subItem.Type.toString();
// switch (subItem.Type) {
// case this.$tripUtils.TypeKey.traffic:
// TrafficList.push(subItem.childItem);
// break;
// case this.$tripUtils.TypeKey.scenic:
// ScenicList.push(subItem.childItem);
// break;
// case this.$tripUtils.TypeKey.hotel:
// HotelList.push(subItem.childItem);
// break;
// case this.$tripUtils.TypeKey.dinner:
// DinnerList.push(subItem.childItem);
// break;
// case this.$tripUtils.TypeKey.freedom:
// FreedomList.push(subItem.childItem);
// break;
// case this.$tripUtils.TypeKey.warmtip:
// WarmTipList.push(subItem.childItem);
// break;
// case this.$tripUtils.TypeKey.title:
// TitleList.push(subItem.childItem);
// break;
// }
// rank++;
// });
// }
// });
this.subConfig.DayList.forEach((item,dayIndex)=>{
})
var obj = {
RemoveChild: this.subConfig.RemoveChild,
RemoveImg: this.subConfig.RemoveImg,
DayNum: this.subConfig.DayNum,
NightNum: this.subConfig.NightNum,
StartCityId: this.subConfig.StartCityId,
ReturnArriveCityId: this.subConfig.ReturnArriveCityId,
DinnerList: DinnerList,
FreedomList: FreedomList,
HotelList: HotelList,
ScenicList: ScenicList,
TrafficList: TrafficList,
WarmTipList: WarmTipList,
TitleList: TitleList
};
this.HotelList = HotelList;
this.DinnerList = DinnerList;
this.$emit("headCallBack", obj);
}
},
mounted() {
//防止首次初始化数据失败
// this.emitData();
this.typeArrayList.push(this.$tripUtils.TypeArray[this.$tripUtils.TypeArray.length-1]);
// this.getSameJourney();
console.log(this.subConfig,'subConfigOld');
},
created() {
if (this.isOpenGroup == undefined) {
this.isOpenGroup = false;
}
},
computed: {
//获取行程天数
getDayNum() {
return this.subConfig.DayNum;
},
//获取目的地
// getCountryId() {
// return this.subArray.CountryID;
// },
getDayList() {
return this.subConfig.DayList;
}
},
watch: {
//监听天数是否改变
getDayNum(newValue, oldValue) {
this.createLineTrip();
},
//监听目的地国家是否改变
// getCountryId(newValue, oldValue) {
// this.createLineTrip();
// },
// subConfig: {
// handler: function(newValue, oldValue) {
// this.emitData();
// },
// deep: true
// }
}
};
</script>
\ No newline at end of file
<style>
@import "../../../assets/css/newTravelManager.css";
@import "../../../assets/css/endTravelManager.css";
</style>
<template>
<div>
<div class="clearfix" style="margin:auto;width:1200px;">
<div class="TravelLeftMenu">
<div class="TravelTopTitle">页面导航</div>
<div class="TravelNavList" :class="{'TravelCked':ckedNav==1}" @click.prevent="custormAnchor('firstAnchor',1)">
基础设置
</div>
<div class="TravelLine"></div>
<div class="TravelNavList" :class="{'TravelCked':ckedNav==2}" @click.prevent="custormAnchor('secondAnchor',2)">
线路行程
</div>
<div class="TravelLine"></div>
<div class="TravelNavList" :class="{'TravelCked':ckedNav==3}" @click.prevent="custormAnchor('thirdAnchor',3)">
产品特色
</div>
<div class="TravelLine"></div>
<div class="TravelNavList" :class="{'TravelCked':ckedNav==4}" @click.prevent="custormAnchor('fourAnchor',4)">
补充信息
</div>
<div class="TravelLine"></div>
<div class="TravelNavList" :class="{'TravelCked':ckedNav==5}" @click.prevent="custormAnchor('fiveAnchor',5)">
团期设置
</div>
<div class="TravelLine"></div>
</div>
<div class="newTravelRight" v-loading="loading">
<TravelConfig @headCallBack="getConfig" @setTravelUploadData="setTravelUploadData" :PostConfig="PostConfig"
:TCNUM="TCNUM" id="firstAnchor" :LineList="LineList"></TravelConfig>
<TravelDaysTripDirect id="secondAnchor" @headCallBack="getDaysTrip" :NoticeParameters="NoticeParameters"
:subConfig="journeyList" :isOpenGroup="false" :IsDirect="PostConfig.IsDirect" v-bind:AllCityList="AllCityList"
v-bind:StartCity="StartCity" :UseTypeArray="UseTypeArray" :AirPickUp="AirPickUp" :AirSend="AirSend" @change="handlerChangeData" :TeamType="TeamType"></TravelDaysTripDirect>
<TravelFeature ref="TravelFeature" id="thirdAnchor" @featureCallBack="getFeature" :FeatureData="FeatureData" :TeamType="TeamType"
:isNewConfig="isNewConfig" @unlockFormCommit="unlockFormCommit"></TravelFeature>
<TravelNotice ref="TravelNotice" id="fourAnchor" @headCallBack="getNotice" :subArray="NoticeParameters"
:NoticeData="NoticeData" v-bind:PostConfig="PostConfig" v-bind:AllCityList="AllCityList" v-bind:CountryID="PostConfig.CountryID"></TravelNotice>
<TravelPrice2 ref="TravelPrice" id="fiveAnchor" @headCallBack="getPrice" :PostDaysTrip="PostDaysTrip" v-if="TeamType==1"
:priceList="PriceList" :PostConfig="PostConfig" :modifyTcid="modifyTcid" :TeamType="TeamType"></TravelPrice2>
<div class="btnFixedDiv">
<div class="toTop" @click="backTop">
<i class="iconfont icon-huidaodingbu"></i>
</div>
<div v-if="modifyType!=2" class="DTSaveBtn" :class="{'disClick':!isSubmit}" @click="submitForm(1)">保存</div>
<div v-if="modifyType!=2" class="DTSaveBtn" :class="{'disClick':!isSubmit}" @click="submitForm(2)">提交</div>
<div v-if="modifyType==2" class="DTSaveBtn" :class="{'disClick':!isSubmit}" @click="submitForm(3)" title="另存为新模板">保存
</div>
<div v-if="ConfigId>0" class="DTSaveBtn" :class="{'disClick':!isSubmit}" @click="goB2B()">预览</div>
</div>
</div>
</div>
</div>
</template>
<script>
import TravelConfig from "../TravelGroupControl/TravelConfig.vue";
import TravelDaysTripDirect from "../oldTravelGroupControl/TravelDaysTrip_Direct";
import TravelFeature from "../TravelGroupControl/TravelFeature";
import TravelNotice from "../TravelGroupControl/TravelNotice";
import TravelPrice2 from "../TravelGroupControl/TravelPrice2";
export default {
provide() {
return {
loadConfigInfo: this.firstLoadConfigInfo
}
},
data() {
return {
ConfigId: 0, //地址栏查询参数
NewConfigId: "", //configID加密后的字符串【预览使用】
TCNUM: '', //团控列表传过来的tcnum
NoticeParameters: {
ConfigId: 0, //配置编号
CountryID: "", //国家
IsDirect: 0, //是否直采
LineId: 0 //线路编号
},
NoticeData: {
FeeInclude: "",
FeeNonInclude: "",
ImportantTip: "",
WarmTip: "",
B2BRemark: "",
ShopRemark: "",
VisaRemark: ""
},
ShopList: [],
SelfpayingList: [],
AllCityList: [],
//基本配置
PostConfig: {
ID: 0,
StartCityId: 0,
LineId: 0,
LineteamId: 0,
Title: "",
//本团卖点
ProductRecommend: "",
//选择的系列的国家编号
CountryID: 0,
RemoveChild: [], //移除的子项
RemoveImg: [], //移除的图片
IsDirect: 0, //是否直采(0-否-1-是)
PriceIsDirect: 0, //是否直采报价(1-否-2-是)
PDFAlias: "", //pdf别名,
FlightList: [], //航班信息
ShopList: [], //购物店信息
SelfpayingList: [], //自费信息
Feature: "", //行程特色
fileList: [],
VideoStr: "", //视频地址
//是否更新酒店库存
IsUpdateHotel:0,
OpenTeamDescribe:"",//开团备注
},
//行程
FeatureData: {
ID: 0,
ConfigId: 0,
FeatureType: 3,
FeatureImg: "",
FeatureContent: "", //自定义内容
FeatureHtml: "", //行程特色(html)
FeatureHtmlImage: "", //行程特色(image)
FeatureHtmlJson: "", //行程特色(Json数据)
FeatureHtmlJsonDelete: "", //行程特色删除数据
fileList: [],
Title: "",
Subtitle: "",
LineName: "",
DayList: [],
TemplateId: 1,
IsSave: false //是否保存
},
//线路行程
journeyList: {
DayNum: "", //天数
NightNum: "", //晚上
StartCityId: 0,
ReturnArriveCityId: 0, //返回抵达城市
//交通
TrafficList: [],
//景点
ScenicList: [],
//住宿
HotelList: [],
//餐饮
DinnerList: [],
//自由活动
FreedomList: [],
//温馨提示
WarmTipList: [],
RemoveChild: [], //移除的子项
RemoveImg: [], //移除的图片
//线路行程天数
DayList: [],
isFileUpload: false //是否是一键上传行程
},
PostPrice: "", //报价信息
//线路
LineList: [],
PostFeature: "", //行程特色信息
PostNotice: "", //行程特色其他内容
//配置信息
PostDaysTrip: "", //每天的行程
PriceList: [],
//所有的城市数据
AllCityList: [],
StartCity: [], //出发城市集合城市
UseTypeArray: [], //用车类型
AirPickUp: 0, //接机
AirSend: 0, //送机
isgetPrice: true,
realSave: 1, //1:制作报价单,2保存草稿
outerVisible: false,
tripTitle: "",
isSubmit: true,
//选中的导航
ckedNav: 1,
modifyType: 1, //1:系列团修改,2:单团修改
modifyTcid: 0, //修改单团期id
TeamType:'',
loading: false,
isNewConfig: true,
};
},
components: {
TravelConfig: TravelConfig,
TravelDaysTripDirect: TravelDaysTripDirect,
TravelFeature: TravelFeature,
TravelNotice: TravelNotice,
TravelPrice2: TravelPrice2
},
methods: {
/*获取行程特色内容对象*/
getFeature(featureObj) {
this.PostFeature = featureObj;
},
handlerChangeData(data) {
if (
this.FeatureData.FeatureHtmlJson &&
this.FeatureData.FeatureHtmlJson.d &&
this.FeatureData.FeatureHtmlJson.d.length > 0
) {
//to do something
} else {
//this.$set(this.FeatureData, "DayList", data);
this.$refs.TravelFeature.setNewDate(data);
}
},
/*获取组件配置信息【回调方法】*/
getConfig(configObj) {
this.PostConfig = configObj;
this.NoticeParameters.ConfigId = this.PostConfig.ConfigId;
this.NoticeParameters.CountryID = this.PostConfig.CountryID;
this.NoticeParameters.IsDirect = this.PostConfig.IsDirect;
this.NoticeParameters.LineId = this.PostConfig.LineId;
if (this.ConfigId == 0) {
this.FeatureData.LineName = this.PostConfig.LineName;
this.FeatureData.Subtitle = this.PostConfig.LineTeamName;
this.FeatureData.Title = this.PostConfig.Title;
}
},
/*获取组件报价信息*/
getPrice(priceObj) {
priceObj.forEach(objItem => {
var SaleBranchId = "";
if (objItem.SaleBranchIdArray.length > 0) {
objItem.SaleBranchIdArray.forEach(subItem => {
SaleBranchId += subItem + ",";
});
}
if (SaleBranchId != "") {
var str = SaleBranchId.substr(0, SaleBranchId.length - 1);
objItem.SaleBranchId = str;
}
});
this.PostPrice = priceObj;
},
//行程回调
getDaysTrip(tripObj) {
this.PostDaysTrip = tripObj;
},
/*获取行程特色内容对象*/
getFeature(featureObj) {
this.PostFeature = featureObj;
},
/*获取行程特色其他内容*/
getNotice(noticeObj) {
this.PostNotice = noticeObj;
},
//解锁表单重复提交
unlockFormCommit(value) {
this.isSubmit = value;
},
//初始化幻灯片
initFileList() {
for (var i = 0; i < 5; i++) {
var fileObj = this.$commonUtils.FileObject();
if (this.PostConfig.fileList.length <= 5) {
this.PostConfig.fileList.push(fileObj);
}
this.FeatureData.fileList.push(fileObj);
}
},
//提交验证
submitForm(SaveType) {
// let travelConfigVal = this.$refs["TravelConfig"].validateForm();
// let travelDaysTripVal = this.$refs["TravelDaysTrip"].validateForm();
// if (!travelConfigVal) {
// this.Error("请完善配置信息");
// }
// if (!travelDaysTripVal) {
// this.Error("请完善行程信息");
// }
//if (travelConfigVal && travelDaysTripVal) {
if (this.isSubmit) {
this.isSubmit = false;
this.SaveData(SaveType);
}
},
/*保存数据*/
SaveData(SaveType) {
this.MsgBus.$emit('saveTravel', true);
this.FeatureData.IsSave = true;
this.submitText = "保存中";
//团队配置
var basicData = {};
basicData.PriceList = this.PostPrice;
//配置编号
basicData.ID = this.ConfigId;
basicData.LineId = this.PostConfig.LineId;
basicData.LineteamId = this.PostConfig.LineteamId;
basicData.Title = this.PostConfig.Title;
basicData.OpRemark = this.PostConfig.OpRemark;
basicData.ProductRecommend = this.PostConfig.ProductRecommend;
basicData.VideoStr = this.PostConfig.VideoStr;
basicData.PDFAlias = this.PostConfig.PDFAlias;
basicData.ImgCover = this.PostConfig.ImgCover;
basicData.PriceIsDirect = this.PostConfig.PriceIsDirect;
basicData.IsDirect = this.PostConfig.IsDirect;
basicData.OpenTeamDescribe=this.PostConfig.OpenTeamDescribe;
basicData.RemoveChild = this.PostConfig.RemoveChild;
basicData.TeamType = this.PostConfig.TeamType;
basicData.DayNum = (this.PostDaysTrip && this.PostDaysTrip.DayNum != "") ? this.PostDaysTrip.DayNum : 0;
basicData.NightNum = (this.PostDaysTrip && this.PostDaysTrip.NightNum != "") ? this.PostDaysTrip.NightNum : 0;
basicData.StartCityId = (this.PostDaysTrip && this.PostDaysTrip.StartCityId != "") ? this.PostDaysTrip.StartCityId :
0;
basicData.ReturnArriveCityId = (this.PostDaysTrip && this.PostDaysTrip.ReturnArriveCityId != "") ? this.PostDaysTrip
.ReturnArriveCityId : 0;
basicData.SelfpayingList = this.PostConfig.SelfpayingList;
basicData.ShopList = this.PostConfig.ShopList;
basicData.DinnerList = this.PostDaysTrip.DinnerList;
basicData.FreedomList = this.PostDaysTrip.FreedomList;
basicData.HotelList = this.PostDaysTrip.HotelList;
basicData.ScenicList = this.PostDaysTrip.ScenicList;
basicData.TrafficList = this.PostDaysTrip.TrafficList;
basicData.WarmTipList = this.PostDaysTrip.WarmTipList;
basicData.TitleList = this.PostDaysTrip.TitleList;
basicData.RemoveImg = this.PostDaysTrip.RemoveImg;
//行程特色数据
var TripFeature = {};
if (this.PostFeature == "") {
TripFeature = this.FeatureData;
} else {
TripFeature = this.PostFeature;
}
TripFeature.FeatureHtmlJson = TripFeature.FeatureHtmlJson ?
JSON.stringify(TripFeature.FeatureHtmlJson) :
"";
TripFeature.FeatureHtmlJsonDelete = TripFeature.FeatureHtmlJsonDelete ? JSON.stringify(TripFeature.FeatureHtmlJsonDelete) :
"";
TripFeature.FeeInclude = this.PostNotice.FeeInclude;
TripFeature.FeeNonInclude = this.PostNotice.FeeNonInclude;
TripFeature.ImportantTip = this.PostNotice.ImportantTip;
TripFeature.WarmTip = this.PostNotice.WarmTip;
TripFeature.B2BRemark = this.PostNotice.B2BRemark;
TripFeature.ShopRemark = this.PostNotice.ShopRemark;
TripFeature.VisaRemark = this.PostNotice.VisaRemark;
if (
basicData.TrafficList != null &&
basicData.TrafficList.length > 0 &&
basicData.TrafficList[0].SubTraffic != null &&
basicData.TrafficList[0].SubTraffic.length > 0
) {
basicData["ArriveCityId"] =
basicData.TrafficList[0].SubTraffic[0].ArrivalCityId;
}
if (basicData.OpenState == 1) {
basicData["AfterOpenModify"] = true;
}
//"另存"新增团期
if (SaveType == 3) {
basicData.TravelInfoIsCopy = true;
}
basicData.TeamType=this.TeamType;
basicData.IsUpdateHotel=this.PostConfig.IsUpdateHotel;
this.apipost(
"travel_post_SetTravelConfigInfo",
basicData,
res => {
if (res.data.resultCode == 1) {
//配置编号
TripFeature.ConfigId = res.data.data;
this.$refs.TravelFeature.getHtml(TripFeature, SaveType,this.TeamType);
this.$refs.TravelPrice.closeHotelDialog();
this.$refs.TravelPrice.initStatus();
} else if (res.data.resultCode == 10009) {
this.FeatureData.IsSave = false;
//表单重复提交
this.isSubmit = true;
} else {
this.FeatureData.IsSave = false;
this.Error(res.data.message);
this.isSubmit = true;
this.submitText = "提交";
this.$refs.TravelFeature.del_show = true;
}
},
err => {}
);
},
//初始化团的幻灯片
initFileList() {
this.PostConfig.fileList=[];
for (var i = 0; i < 5; i++) {
var fileObj = this.$commonUtils.FileObject();
this.PostConfig.fileList.push(fileObj);
}
},
//初始化行程特色幻灯片
initFeatureFile() {
for (var i = 0; i < 5; i++) {
var fileObj = this.$commonUtils.FileObject();
this.FeatureData.fileList.push(fileObj);
}
},
custormAnchor(anchorName, index) {
// 找到锚点
let anchorElement = document.getElementById(anchorName);
// 如果对应id的锚点存在,就跳转到锚点
if (anchorElement) {
anchorElement.scrollIntoView();
}
this.ckedNav = index;
}, //滚动事件
ScrollMethod() {
var that = this;
var s1, s2, s3, s4, s5;
document
.getElementsByClassName("frame-box")[0]
.addEventListener("scroll", function () {
if (document.getElementById("firstAnchor") != null) {
s1 = document.getElementById("firstAnchor").offsetTop;
}
if (document.getElementById("secondAnchor") != null) {
s2 = document.getElementById("secondAnchor").offsetTop;
}
if (document.getElementById("thirdAnchor") != null) {
s3 = document.getElementById("thirdAnchor").offsetTop;
}
if (document.getElementById("fourAnchor") != null) {
s4 = document.getElementById("fourAnchor").offsetTop;
}
if (document.getElementById("fiveAnchor") != null) {
s5 = document.getElementById("fiveAnchor").offsetTop;
}
if (s1 >= this.scrollTop - 50 && s1 <= this.scrollTop + 50) {
that.ckedNav = 1;
} else if (s2 >= this.scrollTop - 50 && s2 <= this.scrollTop + 50) {
that.ckedNav = 2;
} else if (s3 >= this.scrollTop - 50 && s3 <= this.scrollTop + 50) {
that.ckedNav = 3;
} else if (s4 >= this.scrollTop - 50 && s4 <= this.scrollTop + 50) {
that.ckedNav = 4;
} else if (s5 >= this.scrollTop - 50 && s5 <= this.scrollTop + 50) {
that.ckedNav = 5;
}
});
},
//返回顶部
backTop() {
var timer = setInterval(function () {
var scrollTop = document.getElementsByClassName("frame-box")[0]
.scrollTop;
var ispeed = Math.floor(-scrollTop / 6);
if (scrollTop == 0) {
clearInterval(timer);
}
document.getElementsByClassName("frame-box")[0].scrollTop =
scrollTop + ispeed;
}, 30);
},
/*一键上传数据组装*/
setTravelUploadData(uploadConfig) {
if (uploadConfig != undefined) {
var configData = JSON.parse(uploadConfig);
//基础数据组装
//this.PostConfig.Title = "";
this.PostConfig.IsDirect = 0;
//线路行程组装
let dayList = [];
for (var i = 0; i < configData.Days.length; i++) {
let dayObj = configData.Days[i];
var dayItem = this.$tripUtils.tripDayobj();
dayItem.DayNum = i + 1;
//行程大点
var titleItem = this.$tripUtils.titleObj();
titleItem.DayNum = i + 1;
titleItem.Title = dayObj.Title;
dayItem.TitleObj = titleItem;
//交通对象
var trafficObj = this.$tripUtils.trafficObj();
trafficObj.DayNum = i + 1;
//交通子对象
var subTrafficObj = this.$tripUtils.subTrafficObj();
trafficObj.SubTraffic.push(subTrafficObj);
dayItem.TrafficObj = trafficObj;
//温馨提示
var warmTipObj = this.$tripUtils.warmtipObj();
warmTipObj.DayNum = i + 1;
warmTipObj.Description = dayObj.Tips;
dayItem.WarmTipObj = warmTipObj;
dayItem.isHide = false;
dayItem.isRead = false;
//景点
if (dayObj.ViewSpotList.length > 0) {
dayObj.ViewSpotList.forEach((viewSpot, index) => {
if ((index + 1) <= 5) {
var scenicObj = this.$tripUtils.scenicObj();
scenicObj.DayNum = i + 1;
scenicObj.CouponsName = viewSpot.Name;
scenicObj.Description = viewSpot.Description;
if (viewSpot.Imgs != null && viewSpot.Imgs.length > 0) {
let imaArray = [];
viewSpot.Imgs.forEach(img => {
imaArray.push({
Url: img,
Name: ""
});
});
scenicObj.NewImaArray = imaArray;
scenicObj.NewScenicImg = JSON.stringify(scenicObj.NewImaArray);
} else {
scenicObj.NewImaArray = [];
scenicObj.NewScenicImg = "";
}
dayItem.ScenicArray.push(scenicObj);
}
});
}
//餐厅
dayItem.DinnerArray.push(this.dinnerUploadFactory(i + 1, 1, dayObj.Breakfast));
dayItem.DinnerArray.push(this.dinnerUploadFactory(i + 1, 2, dayObj.Lanuch));
dayItem.DinnerArray.push(this.dinnerUploadFactory(i + 1, 3, dayObj.Dinner));
//酒店
var hotelObj = this.$tripUtils.hotelObj();
hotelObj.DayNum = i + 1;
hotelObj.HotelName = dayObj.Hotel;
dayItem.HotelArray.push(hotelObj);
dayList.push(dayItem);
}
this.journeyList.isFileUpload = true;
this.journeyList.DayNum = configData.Days.length;
this.journeyList.NightNum = this.journeyList.DayNum - 1;
this.journeyList.DayList = dayList;
//产品特色
this.FeatureData.FeatureType = 3;
this.FeatureData.FeatureContent = configData.Feature;
//行程补充信息
this.NoticeData.FeeInclude = configData.PriceInCloub;
this.NoticeData.FeeNonInclude = configData.PriceNoInCloub;
this.NoticeData.ImportantTip = configData.PriceNoInCloub;
this.NoticeData.WarmTip = configData.Tips;
this.NoticeData.ShopRemark = configData.Shopping;
}
},
//餐饮对象上传创建
dinnerUploadFactory(dayNum, useDinnerType, dinnerName) {
let dinnerObj = this.$tripUtils.dinnerObj();
dinnerObj.UseDinnerType = useDinnerType;
dinnerObj.DinnerName = dinnerName;
dinnerObj.BreakfastUseType = 0;
dinnerObj.DayNum = dayNum;
return dinnerObj;
},
firstLoadConfigInfo() {
var routeName = this.$route.name;
if(routeName=='TravelManager2'){
this.TeamType=0;
}
if(routeName=='TravelManager3'){
this.TeamType=1;
}
if(routeName=='TravelManager4'){
this.TeamType=2;
}
let configId = this.$route.query.configId;
this.modifyTcid = this.$route.query.tcid;
this.TCNUM = this.$route.query.TCNUM;
if (this.modifyTcid > 0) {
this.modifyType = 2;
} else {
this.modifyType = 1;
this.modifyTcid = 0;
}
var that = this;
if (configId > 0) {
this.isNewConfig = false;
this.ConfigId = configId;
let msg = {
configId: configId,
TeamType: this.TeamType
};
this.loading = true;
this.apipost(
"travel_get_GetTravelConfigMakeInfo",
msg,
res => {
if (res.data.resultCode == 1) {
var tempData = res.data.data;
console.log("tempData",tempData);
if (tempData.Feature != null) {
this.FeatureData.ID = tempData.Feature.ID;
this.FeatureData.ConfigId = tempData.Feature.ConfigId;
this.FeatureData.FeatureType = tempData.Feature.FeatureType;
this.FeatureData.FeatureImg = tempData.Feature.FeatureImg;
this.FeatureData.TemplateId = tempData.Feature.TemplateId;
this.FeatureData.FeatureContent = tempData.Feature.FeatureContent;
//图片列表
this.FeatureData.fileList = tempData.Feature.FeatureImgList;
this.FeatureData.FeatureHtmlJson =
tempData.Feature.FeatureHtmlJson &&
tempData.Feature.FeatureHtmlJson != "" && tempData.Feature.FeatureType > 3 ?
JSON.parse(tempData.Feature.FeatureHtmlJson) :
null;
this.FeatureData.FeatureHtmlJsonDelete = tempData.Feature.FeatureHtmlJsonDelete &&
tempData.Feature.FeatureHtmlJsonDelete != "" && tempData.Feature.FeatureType > 3 ?
JSON.parse(tempData.Feature.FeatureHtmlJsonDelete) :
null;
this.NoticeData.FeeInclude = tempData.Feature.FeeInclude;
this.NoticeData.FeeNonInclude = tempData.Feature.FeeNonInclude;
this.NoticeData.ImportantTip = tempData.Feature.ImportantTip;
this.NoticeData.WarmTip = tempData.Feature.WarmTip;
this.NoticeData.B2BRemark = tempData.Feature.B2BRemark;
this.NoticeData.ShopRemark = tempData.Feature.ShopRemark;
this.NoticeData.VisaRemark = tempData.Feature.VisaRemark;
}
if (tempData.PDFAlias !== null && tempData.PDFAlias !== "") {
this.FeatureData.Title = tempData.PDFAlias;
} else {
this.FeatureData.Title = tempData.Title;
}
if (tempData.PriceList != null) {
this.PriceList = tempData.PriceList;
}
this.FeatureData.Subtitle = tempData.LtName;
this.FeatureData.LineName = tempData.LineName;
this.FeatureData.DayList = tempData.DayList;
this.ConfigId = tempData.ID;
//HK 2019-01-08添加 NewConfigId B2B预览使用
this.NewConfigId = tempData.NewConfigId;
this.PostConfig.ID = tempData.ID;
this.PostConfig.StartCityId = tempData.StartCityId;
this.PostConfig.LineId = tempData.LineId;
this.PostConfig.LineteamId = tempData.LineteamId;
this.PostConfig.CountryID = tempData.CountryID;
//视频地址
this.PostConfig.VideoStr = tempData.VideoStr;
this.PostConfig.OpenTeamDescribe=tempData.OpenTeamDescribe;
this.NoticeParameters.ConfigId = tempData.ConfigId;
this.NoticeParameters.CountryID = tempData.CountryID;
this.NoticeParameters.IsDirect = tempData.IsDirect;
this.NoticeParameters.LineId = tempData.LineId;
this.PostConfig.ImgCover = tempData.ImgCover;
this.PostConfig.LtName = tempData.LtName;
this.PostConfig.CreateBy = tempData.CreateBy;
if (tempData.ImgCover != "") {
if (tempData.ImgCoverList.length > 0) {
this.PostConfig.fileList = tempData.ImgCoverList;
}
} else {
this.initFileList();
}
this.PostConfig.Title = tempData.Title;
this.PostConfig.ProductRecommend = tempData.ProductRecommend;
this.PostConfig.IsSubstitution = tempData.IsSubstitution;
this.PostConfig.IsDirect = tempData.IsDirect;
this.PostConfig.PriceIsDirect = tempData.PriceIsDirect;
if (tempData.FlightList != null) {
this.PostConfig.FlightList = tempData.FlightList;
}
if (tempData.ShopList != null) {
this.PostConfig.ShopList = tempData.ShopList;
}
if (tempData.SelfpayingList != null) {
this.PostConfig.SelfpayingList = tempData.SelfpayingList;
}
this.journeyList.DayNum = tempData.DayNum;
this.journeyList.NightNum = tempData.NightNum;
this.journeyList.ReturnArriveCityId = tempData.ReturnArriveCityId;
this.journeyList.StartCityId = tempData.StartCityId;
this.journeyList.DayList = tempData.DayList;
this.journeyList.DayList.forEach(x => {
x["HotelChooseArray"] = [];
x["ChooseScenicArray"] = [];
x["isHide"] = false;
});
if (tempData.OfferList != null) {
this.OfferList = tempData.OfferList;
}
if (tempData.LineList != null) {
this.LineList = tempData.LineList;
}
if (tempData.AllCityList != null) {
this.AllCityList = tempData.AllCityList;
}
if (tempData.StartCity != null) {
this.StartCity = tempData.StartCity;
}
this.UseTypeArray = tempData.UseTypeArray;
this.AirPickUp = tempData.AirPickUp;
this.AirSend = tempData.AirSend;
this.PostConfig["OpenState"] = this.OpenState;
this.PostConfig.PDFAlias = tempData.PDFAlias;
} else {
this.Error(res.data.message);
}
this.loading = false;
},
err => {}
);
} else {
this.initFileList();
this.initFeatureFile();
this.loading = true;
this.apipost(
"travel_get_GetCommonTravelInfo", {
TeamType: this.TeamType
},
res => {
if (res.data.resultCode == 1) {
var tempData = res.data.data;
if (tempData.LineList != null) {
this.LineList = tempData.LineList;
}
if (tempData.AllCityList != null) {
this.AllCityList = tempData.AllCityList;
}
if (tempData.StartCity != null) {
this.StartCity = tempData.StartCity;
}
this.UseTypeArray = tempData.UseTypeArray;
this.AirPickUp = tempData.AirPickUp;
this.AirSend = tempData.AirSend;
} else {
this.Error(res.data.message);
}
this.loading = false;
},
err => {}
);
}
},
goB2B() {
let userInfo = this.getLocalStorage();
var B2BDomain = userInfo.B2BDomain;
let configId = this.NewConfigId;
window.open(
B2BDomain + "/#/detailTwo/" +
encodeURIComponent(configId) + '/' + 0 +
"/preview",
"_blank"
);
},
},
updated: function () {
this.MsgBus.$emit('FeatureDataFlag');
},
watch: {},
mounted() {
this.ScrollMethod();
},
created() {
this.firstLoadConfigInfo();
}
};
</script>
<template>
<div class="trip-item-box">
<div class="edit" v-if="isShowEdit">
<div class="TCtraffic flex">
<div class="partName">
<span class="TDTripType">餐饮</span>
</div>
<div class="delSpan">
<el-tooltip class="item" effect="dark" content="查看" placement="top-start">
<i class="iconfont icon-chakan" @click="isShowEdit=!isShowEdit"></i>
</el-tooltip>
<el-tooltip v-if="!isOpenGroup" class="item" effect="dark" content="删除" placement="top-start">
<i class="iconfont icon-xingzhuang" @click="removeDinnerTrip(subItemObj.childItem.DayNum,subIndex)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="上移" placement="top-start" v-if="subIndex!=0&&!isOpenGroup">
<i class="iconfont icon-shangyi" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,0)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="下移" placement="top-start" v-if="subIndex!=subTotalIndex-1&&!isOpenGroup">
<i class="iconfont icon-xiayi1" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,1)"></i>
</el-tooltip>
</div>
<div class="TDplanList clearfix">
<div class="TDLeftPlan">
<span style="margin-left:26px;">餐厅</span>
<span>
<el-form-item :prop="'DayList.'+index+'.dayArray.'+subIndex+'.childItem.DinnerId'" :rules="dinnerTripRules.DinnerId">
<el-select :disabled="isOpenGroup" class='w160' :placeholder="$t('pub.pleaseSel')" filterable v-model="subItemObj.childItem.DinnerId"
@visible-change="getDinnerList($event)" @change="changeDinnerList()">
<el-option :label="$t('pub.unlimitedSel')" :value='Diner.DefaultSelectValue'></el-option>
<el-option v-for="item in QDinnerList" :label='item.Name' :value='item.ID' :key='item.ID'>
</el-option>
</el-select>
</el-form-item>
</span>
<span class="comTravelLeft">套餐</span>
<span>
<el-select :disabled="isOpenGroup" class='w160' :placeholder="$t('pub.pleaseSel')" filterable v-model="subItemObj.childItem.MealId"
@visible-change="getDinnerMealList($event)" @change="changeDinnerMealList()">
<el-option :label="$t('pub.unlimitedSel')" :value='Diner.DefaultSelectValue'></el-option>
<el-option v-for="item in QDinnerMealList" :label='item.MealName' :value='item.Id' :key='item.Id'>
</el-option>
</el-select>
</span>
</div>
<div class="TDmealTime">
<label class="TDhotelDiner">用餐时段</label>
<el-checkbox-group v-model="Diner.UseDinerCked">
<el-checkbox v-for="item in Diner.UseDinnerType" :disabled="isOpenGroup||!varCanChecked(item)" :label="item.Id"
:key='item.Id'>{{item.Name}}</el-checkbox>
</el-checkbox-group>
<span class="comTravelLeft">用餐时间</span>
<el-input :disabled="isOpenGroup" type="text" class="w120" v-model="subItemObj.childItem.UseTimeHour"
@keyup.native="checkInteger(subItemObj.childItem,'UseTimeHour')"></el-input>&nbsp;&nbsp;小时
<el-input :disabled="isOpenGroup" type="text" class="w120" v-model="subItemObj.childItem.UseTimeMinutes"
@keyup.native="checkInteger(subItemObj.childItem,'UseTimeMinutes')"></el-input>&nbsp;&nbsp;分钟
</div>
</div>
</div>
<div class="TP_edit">
<my-edit v-if="isShowEdit" v-on:edit-value="subItemObj.childItem.Description = arguments[0]" v-bind:editValue="subItemObj.childItem.Description"
v-bind:toolbarShow="toolbar" v-bind:referenceList="DefaultList" v-bind:placeholder="placeholder"></my-edit>
</div>
<div class="SiencDiv clearfix">
<div class="ScLeftImg">
<div class="TFimgList" v-for="(item,index) in subItemObj.childItem.ImaArray" :key="item.subCode">
<img v-if="!item.Url" src="../../../assets/img/bg_c3@3x.png" />
<img v-else :src="item.Url" />
<div class="imgzhe" @click="getPic(subItemObj.childItem.ImaArray,index)">
<div class="clearfix" style="text-align:center;">
<div class="re-delte" @click.stop="delImg(index,subItemObj)"><i class="iconfont icon-xingzhuang"></i></div>
<div class="re-delte" @click.stop="toExchangeImg(subItemObj.childItem.DayNum,subIndex,index,0)" v-if="index!=0"><i class="iconfont icon-zuoyi"></i></div>
<div class="re-delte" @click.stop="toExchangeImg(subItemObj.childItem.DayNum,subIndex,index,1)" v-if="index!=subItemObj.childItem.ImaArray.length-1"><i class="iconfont icon-youyi"></i></div>
</div>
</div>
</div>
</div>
<div class="rightAddImg">
<el-upload :file-list="subItemObj.childItem.ImaArray" :http-request="uploadScenImg" :data="subItemObj.childItem"
:multiple="true" accept="image/jpeg,image/gif,image/png,image/bmp" :show-file-list="false" action="">
<i class="iconfont icon-img_haha"></i>
</el-upload>
</div>
</div>
</div>
<div class="read" v-if="!isShowEdit">
<div class="TCtraffic flex">
<div class="partName">
<span class="TDTripType">餐饮</span>
</div>
<div class="delSpan">
<el-tooltip class="item" effect="dark" content="编辑" placement="top-start">
<i class="iconfont icon-bianji" @click="isShowEdit=!isShowEdit"></i>
</el-tooltip>
<el-tooltip v-if="!isOpenGroup" class="item" effect="dark" content="删除" placement="top-start">
<i class="iconfont icon-xingzhuang" @click="removeDinnerTrip(subItemObj.childItem.DayNum,subIndex)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="上移" placement="top-start" v-if="subIndex!=0&&!isOpenGroup">
<i class="iconfont icon-shangyi" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,0)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="下移" placement="top-start" v-if="subIndex!=subTotalIndex-1&&!isOpenGroup">
<i class="iconfont icon-xiayi1" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,1)"></i>
</el-tooltip>
</div>
<div class="title-box">
<div class="TDLeftPlan">
<span>
{{subItemObj.childItem.DinnerName}}
</span>
<span>套餐</span>
<span>
{{subItemObj.childItem.MealName}}
</span>
<span>用餐时段</span>
<span v-if="Diner.UseDinerCked==1">早餐</span>
<span v-if="Diner.UseDinerCked==2">中餐</span>
<span v-if="Diner.UseDinerCked==3">晚餐</span>
<span>用餐时间</span>
<span>{{subItemObj.childItem.UseTimeHour}}</span>
<span>小时</span>
<span>{{subItemObj.childItem.UseTimeMinutes}}</span>
<span>分钟</span>
</div>
</div>
</div>
<div class="TP_editShow">
<my-edit v-if="isShowEdit" v-on:edit-value="subItemObj.childItem.Description = arguments[0]" v-bind:editValue="subItemObj.childItem.Description"
v-bind:toolbarShow="toolbar" v-bind:referenceList="DefaultList" v-bind:placeholder="placeholder"></my-edit>
</div>
<div class="SiencDiv clearfix">
<div class="ScLeftImg">
<div class="TFimgList" v-for="(item,index) in subItemObj.childItem.ImaArray" :key="item.subCode">
<img v-if="!item.Url" src="../../../assets/img/bg_c3@3x.png" />
<img v-else :src="item.Url" @click="getPic(subItemObj.childItem.ImaArray,index)"/>
</div>
</div>
</div>
</div>
<div v-if="dspNone" class="viewBigPicLayer myPiclayer" @click="colseLayer">
<i @click="colseLayer" class="el-icon-circle-close-outline clolseViewBigPicLayer" ></i>
<el-carousel height="600px" :initial-index='initialIndex' :interval="5000" trigger="click">
<el-carousel-item v-for="(item,index) in picObj" :key="index">
<img style="width:100%;" :src="item.Url" />
</el-carousel-item>
</el-carousel>
</div>
</div>
</template>
<script>
import MyEdit from "../../EditTemplate.vue";
export default {
props: [
"subItemObj",
"DefaultList",
"subIndex",
"HotelList",
"index",
"isOpenGroup",
"subTotalIndex"
],
data() {
var TimeTypeValidate = (rule, value, callback) => {
if (value === 0) {
callback(new Error("请选择时间类型"));
} else {
callback();
}
};
var DinnerIdValidate = (rule, value, callback) => {
if (value === 0) {
callback(new Error("请选择餐厅"));
} else {
callback();
}
};
return {
//餐厅列表
QDinnerList: [],
//餐厅套餐列表
QDinnerMealList: [],
toolbar: {
clean: true, //加粗
font: true, //字体
narrative: true //叙述,
},
//是否显示编辑框
isShowEdit: false,
dspNone: false,
initialIndex: 0,
//text框placeholder
placeholder: "请输入餐饮信息",
//用餐时段
Diner: {
DefaultSelectValue: 0,
UseDinerCked: [],
UseDinnerType: [
{
Id: "1",
Name: "早"
},
{
Id: "2",
Name: "中"
},
{
Id: "3",
Name: "晚"
}
]
},
//餐厅验证
dinnerTripRules: {
//时间类型验证
TimeType: [
{
validator: TimeTypeValidate,
trigger: "change"
}
],
DinnerId: [
{
validator: DinnerIdValidate,
trigger: "change"
}
]
},
TheDayHotelUserDinner: [] //当天酒店列表
};
},
components: {
"my-edit": MyEdit
},
methods: {
//获取餐厅列表
getDinnerList(event) {
if (event) {
this.QDinnerList = [];
var msg = {
IsGetPic: 1,
IsGetFeature: 1,
QCity: this.subItemObj.childItem.QCity
};
this.apipost(
"dining_post_GetLineDinnerList",
msg,
res => {
if (res.data.resultCode == 1) {
this.QDinnerList = res.data.data;
}
},
err => {}
);
}
},
//餐厅选择改变
changeDinnerList() {
if (this.subItemObj.childItem.DinnerId != 0) {
//获取当前选中的对象
let obj = {};
obj = this.QDinnerList.find(item => {
return item.ID === this.subItemObj.childItem.DinnerId; //筛选出匹配数据
});
if (obj != undefined) {
this.subItemObj.childItem.MealId = 0;
this.subItemObj.childItem.MealName = "";
this.QDinnerMealList = [];
this.subItemObj.childItem.DinnerName = obj.Name;
this.subItemObj.childItem.Description = obj.Feature;
this.subItemObj.childItem.ImaArray = [];
var dinnerImgList = obj.PicPath.split(",");
for (var i = 0; i < dinnerImgList.length; i++) {
var fileObj = this.$commonUtils.FileObject();
fileObj.Url = this.domainManager().ViittoFileUrl + dinnerImgList[i];
fileObj.Name = "";
this.subItemObj.childItem.ImaArray.push(fileObj);
}
}
}
},
//获取餐厅套餐列表
getDinnerMealList(event) {
if (event) {
this.QDinnerMealList = [];
this.apipost(
"meal_get_GetList",
{
DiningId: this.subItemObj.childItem.DinnerId
},
res => {
if (res.data.resultCode == 1) {
this.QDinnerMealList = res.data.data;
}
},
err => {}
);
}
},
//套餐选择改变
changeDinnerMealList() {
var that = this;
if (that.subItemObj.childItem.MealId != 0) {
//获取当前选中的对象
let obj = {};
obj = that.QDinnerMealList.find(item => {
return item.Id === that.subItemObj.childItem.MealId; //筛选出匹配数据
});
if (obj != undefined) {
that.subItemObj.childItem.MealName = obj.MealName;
}
}
},
//上传景点图片
uploadScenImg(item) {
let newArr = [];
newArr.push(item.file);
let path = "/Upload/DMC/";
this.UploadSelfFileT(path, newArr, x => {
var fileObj = this.$commonUtils.FileObject();
fileObj.Url = this.domainManager().ViittoFileUrl + x.data.FilePath,
fileObj.fileName = x.data.FileName;
item.data.ImaArray.push(fileObj);
});
},
//删除晚餐
removeDinnerTrip(dayNum, subIndex) {
this.$parent.$parent.commonRemove(dayNum, subIndex);
},
//删除图片
delImg(index, subItemObj) {
this.$parent.$parent.commonRemoveImg(index, subItemObj);
},
varCanChecked(dinnerType) {
let canChecked = true;
this.TheDayHotelUserDinner.forEach(x => {
if (x == dinnerType.Id) {
canChecked = false;
}
});
return canChecked;
},
removeDinerCked(id) {
let newUseDinerCked = [];
this.Diner.UseDinerCked.forEach(x => {
let isRemove = false;
this.TheDayHotelUserDinner.forEach(y => {
if (x === y) {
isRemove = true;
}
});
if (!isRemove) {
newUseDinerCked.push(x);
}
});
this.Diner.UseDinerCked = newUseDinerCked;
},
initTheDayHotelUserDinner() {
let dayNum = this.subItemObj.childItem.DayNum;
this.TheDayHotelUserDinner = [];
this.HotelList.forEach(x => {
if (x.DayNum == dayNum) {
if (x.UseDinnerType.length > 0) {
let tempDinnerArr = x.UseDinnerType.split(",");
let reg = /^[0-9]+.?[0-9]*/;
tempDinnerArr.forEach(y => {
if (reg.test(y)) {
this.TheDayHotelUserDinner.push(y);
}
});
}
}
});
this.TheDayHotelUserDinner = Array.from(
new Set(this.TheDayHotelUserDinner)
);
this.removeDinerCked();
},
//上移下移
MoveItem(dayNum, subIndex, IsUp) {
this.$parent.$parent.MoveItem(dayNum, subIndex, IsUp);
},
//左右移动
toExchangeImg(dayNum, subIndex, imgIndex, IsMove) {
this.$parent.$parent.ExchangeImg(dayNum, subIndex, imgIndex, IsMove);
},
colseLayer() {
this.dspNone = false;
},
getPic(obj, index) {
this.picObj = obj;
this.dspNone = true;
this.initialIndex = index;
}
},
created() {
if (this.subItemObj.childItem.ID > 0) {
if (this.subItemObj.childItem.DinnerId > 0) {
this.QDinnerList.push({
ID: parseInt(this.subItemObj.childItem.DinnerId),
Name: this.subItemObj.childItem.DinnerName
});
}
if (this.subItemObj.childItem.MealId > 0) {
this.QDinnerMealList.push({
Id: parseInt(this.subItemObj.childItem.MealId),
MealName: this.subItemObj.childItem.MealName
});
}
}
},
mounted() {
this.initTheDayHotelUserDinner();
if (this.subItemObj.childItem.UseDinnerType != "") {
var array = this.subItemObj.childItem.UseDinnerType.split(",");
if (array.length > 0) {
array.forEach(item => {
if (item != "") {
this.Diner.UseDinerCked.push(item);
}
});
}
}
},
watch: {
Diner: {
//深度监听,可监听到对象、数组的变化
handler: function(val, oldVal) {
var ckedDiner = "";
this.Diner.UseDinerCked.forEach(x => {
ckedDiner = ckedDiner + x + ",";
});
if (ckedDiner != "") {
ckedDiner = ckedDiner.substring(0, ckedDiner.lastIndexOf(","));
}
this.subItemObj.childItem.UseDinnerType = ckedDiner;
},
deep: true
},
subItemObj: {
//深度监听,可监听到对象、数组的变化
handler: function(val, oldVal) {
this.subItemObj.childItem.DinnerImg = JSON.stringify(
this.subItemObj.childItem.ImaArray
);
},
deep: true
},
HotelList: {
//深度监听,可监听到对象、数组的变化
handler: function(val, oldVal) {
this.initTheDayHotelUserDinner();
},
deep: true
},
"subItemObj.childItem.QCity": {
handler: function(val, oldVal) {
this.getDinnerList();
},
deep: true
}
}
};
</script>
<template>
<div class="trip-item-box">
<div class="edit" v-if="isShowEdit">
<div class="TCtraffic flex">
<div class="partName">
<span class="TDTripType">自由活动</span>
</div>
<span class="datePickContent" style="display:none;">
<!--:prop="'DayList.'+index+'.dayArray.'+subIndex+'.childItem.TimeType'" :rules="freedomTripRules.TimeType"-->
<el-form-item >
<el-select :disabled="isOpenGroup" class="w160" placeholder="请选择时间" v-model="subItemObj.childItem.TimeType">
<el-option v-for="item in TimeTypeList" :label='item.Name' :value='item.Id' :key='item.Id'>
</el-option>
</el-select>
</el-form-item>
</span>
<div class="delSpan">
<el-tooltip class="item" effect="dark" content="查看" placement="top-start">
<i class="iconfont icon-chakan" @click="isShowEdit=!isShowEdit"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" v-if="!isOpenGroup" content="删除" placement="top-start">
<i class="iconfont icon-xingzhuang" @click="removeFreeDomTrip(subItemObj.childItem.DayNum,subIndex)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="上移" placement="top-start" v-if="subIndex!=0&&!isOpenGroup">
<i class="iconfont icon-shangyi" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,0)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="下移" placement="top-start" v-if="subIndex!=subTotalIndex-1&&!isOpenGroup">
<i class="iconfont icon-xiayi1" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,1)"></i>
</el-tooltip>
</div>
</div>
<div class="TP_edit">
<my-edit v-if="isShowEdit" v-on:edit-value="subItemObj.childItem.Description = arguments[0]" v-bind:editValue="subItemObj.childItem.Description"
v-bind:toolbarShow="toolbar" v-bind:referenceList="DefaultList" v-bind:placeholder="placeholder"></my-edit>
</div>
<div class="SiencDiv clearfix">
<div class="ScLeftImg">
<div class="TFimgList" v-for="(item,index) in subItemObj.childItem.ImaArray" :key="item.subCode">
<img v-if="!item.Url" src="../../../assets/img/bg_c3@3x.png" />
<img v-else :src="item.Url" />
<div class="imgzhe" @click="getPic(subItemObj.childItem.ImaArray,index)">
<div class="clearfix" style="text-align:center;">
<div class="re-delte" @click.stop="delImg(index,subItemObj)"><i class="iconfont icon-xingzhuang"></i></div>
<div class="re-delte" @click.stop="toExchangeImg(subItemObj.childItem.DayNum,subIndex,index,0)" v-if="index!=0"><i class="iconfont icon-zuoyi"></i></div>
<div class="re-delte" @click.stop="toExchangeImg(subItemObj.childItem.DayNum,subIndex,index,1)" v-if="index!=subItemObj.childItem.ImaArray.length-1"><i class="iconfont icon-youyi"></i></div>
</div>
</div>
</div>
</div>
<div class="rightAddImg">
<el-upload :file-list="subItemObj.childItem.ImaArray" :http-request="uploadScenImg" :data="subItemObj.childItem"
:multiple="true" accept="image/jpeg,image/gif,image/png,image/bmp" :show-file-list="false" action="">
<i class="iconfont icon-img_haha"></i>
</el-upload>
</div>
</div>
</div>
<div class="read" v-if="!isShowEdit">
<div class="TCtraffic flex">
<div class="partName">
<span class="TDTripType">自由活动</span>
</div>
<div class="delSpan">
<el-tooltip class="item" effect="dark" content="编辑" placement="top-start">
<i class="iconfont icon-bianji" @click="isShowEdit=!isShowEdit"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" v-if="!isOpenGroup" content="删除" placement="top-start">
<i class="iconfont icon-xingzhuang" @click="removeFreeDomTrip(subItemObj.childItem.DayNum,subIndex)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="上移" placement="top-start" v-if="subIndex!=0&&!isOpenGroup">
<i class="iconfont icon-shangyi" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,0)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="下移" placement="top-start" v-if="subIndex!=subTotalIndex-1&&!isOpenGroup">
<i class="iconfont icon-xiayi1" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,1)"></i>
</el-tooltip>
</div>
</div>
<div class="TP_editShow">
<pre v-html="subItemObj.childItem.Description"></pre>
</div>
<div class="SiencDiv clearfix">
<div class="ScLeftImg">
<div class="TFimgList" v-for="(item,index) in subItemObj.childItem.ImaArray" :key="item.subCode">
<img v-if="!item.Url" src="../../../assets/img/bg_c3@3x.png" />
<img v-else :src="item.Url" @click="getPic(subItemObj.childItem.ImaArray,index)" />
</div>
</div>
</div>
</div>
<div v-if="dspNone" class="viewBigPicLayer myPiclayer" @click="colseLayer">
<i @click="colseLayer" class="el-icon-circle-close-outline clolseViewBigPicLayer" ></i>
<el-carousel height="600px" :initial-index='initialIndex' :interval="5000" trigger="click">
<el-carousel-item v-for="(item,index) in picObj" :key="index">
<img style="width:100%;" :src="item.Url" />
</el-carousel-item>
</el-carousel>
</div>
</div>
</template>
<script>
import MyEdit from "../../EditTemplate.vue";
export default {
props: ["subItemObj", "DefaultList", "subIndex", "index", "isOpenGroup","subTotalIndex","TimeTypeList"],
data() {
var TimeTypeValidate = (rule, value, callback) => {
if (value === 0) {
callback(new Error("请选择时间类型"));
} else {
callback();
}
};
return {
toolbar: {
clean: false, //清除样式
font: false, //字体
narrative: true //叙述,
},
//是否显示编辑框
isShowEdit:false,
dspNone:false,
initialIndex:0,
//text框placeholder
placeholder:'请输入活动信息',
DefaultSelectValue: 0,
//自由活动验证
freedomTripRules: {
//时间类型验证
TimeType: [{
validator: TimeTypeValidate,
trigger: "change"
}]
}
};
},
components: {
"my-edit": MyEdit
},
methods: {
//上传景点图片
uploadScenImg(item) {
let newArr = [];
newArr.push(item.file);
let path = "/Upload/DMC/";
this.UploadSelfFileT(path, newArr, x => {
var fileObj = this.$commonUtils.FileObject();
fileObj.Url = this.domainManager().ViittoFileUrl + x.data.FilePath,
fileObj.fileName = x.data.FileName;
item.data.ImaArray.push(fileObj);
});
},
//删除自由活动
removeFreeDomTrip(dayNum, subIndex) {
this.$parent.$parent.commonRemove(dayNum, subIndex);
},
//删除图片
delImg(index, subItemObj) {
this.$parent.$parent.commonRemoveImg(index, subItemObj);
},
//上移下移
MoveItem(dayNum,subIndex,IsUp)
{
this.$parent.$parent.MoveItem(dayNum, subIndex,IsUp);
},
//左右移动
toExchangeImg(dayNum, subIndex, imgIndex, IsMove) {
this.$parent.$parent.ExchangeImg(dayNum, subIndex, imgIndex,IsMove);
},
colseLayer(){
this.dspNone=false;
},
getPic(obj,index){
this.picObj=obj
this.dspNone=true;
this.initialIndex = index;
},
},
created() {
},
watch: {
subItemObj: {
//深度监听,可监听到对象、数组的变化
handler: function (val, oldVal) {
this.subItemObj.childItem.FreedomImg = JSON.stringify(
this.subItemObj.childItem.ImaArray
);
},
deep: true
}
}
};
</script>
<template>
<div class="trip-item-box">
<div class="edit" v-if="isShowEdit">
<div class="TCtraffic flex">
<div class="partName">
<span class="TDTripType">酒店</span>
</div>
<span class="datePickContent" style="display:none">
<el-form-item >
<el-select :disabled="isOpenGroup" class="w160" placeholder="请选择时间" v-model="subItemObj.childItem.TimeType">
<el-option v-for="item in TimeTypeList" :label='item.Name' :value='item.Id' :key='item.Id'>
</el-option>
</el-select>
</el-form-item>
</span>
<div class="delSpan">
<el-tooltip class="item" effect="dark" content="查看" placement="top-start" >
<i class="iconfont icon-chakan" @click="isShowEdit=!isShowEdit"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="删除" placement="top-start" v-if="!isOpenGroup">
<i class="iconfont icon-xingzhuang" @click="removeHotelTrip(subItemObj.childItem.DayNum,subIndex)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="上移" placement="top-start" v-if="subIndex!=0 && !isOpenGroup">
<i class="iconfont icon-shangyi" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,0)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="下移" placement="top-start" v-if="subIndex!=subTotalIndex-1 && !isOpenGroup">
<i class="iconfont icon-xiayi1" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,1)"></i>
</el-tooltip>
</div>
<div class="TDplanList clearfix">
<div class="TDLeftPlan">
<span>入住酒店</span>
<span>
<el-form-item :prop="'DayList.'+index+'.dayArray.'+subIndex+'.childItem.HotelId'" :rules="hotelTripRules.HotelId">
<el-select :disabled="isOpenGroup" class='w160' :placeholder="$t('pub.pleaseSel')" filterable v-model="subItemObj.childItem.HotelId"
@visible-change="getHotelList($event)" @change="changeHotelList()">
<el-option :label="$t('pub.unlimitedSel')" :value='Diner.DefaultSelectValue'></el-option>
<el-option v-for="item in QHotelList" :label='getItemLabel(item)' :value='item.ID' :key='item.ID'>
</el-option>
</el-select>
</el-form-item>
</span>
<span class="HD_hotelru">
<el-checkbox :disabled="isOpenGroup" v-model="subItemObj.childItem.IsSameLevel" :checked="subItemObj.childItem.IsSameLevel===CheckedVaule"
:true-label="CheckedVaule" :false-label="UnCheckedVaule" border size="mini">同级酒店</el-checkbox>
</span>
<span class="comTravelLeft">房型选择</span>
<span>
<el-select :disabled="isOpenGroup" class='w160' :placeholder="$t('pub.pleaseSel')" filterable v-model="subItemObj.childItem.HotelProductId"
@visible-change="getHotelProductList($event)" @change="changeHotelProductList()">
<el-option :label="$t('pub.unlimitedSel')" :value='Diner.DefaultSelectValue'></el-option>
<el-option v-for="item in QHotelProductList" :label='item.Name' :value='item.ID' :key='item.ID'>
</el-option>
</el-select>
</span>
<span v-if="subItemObj.childItem.IsUseDinner==1">
<span class="TDhotelDiner">酒店含餐</span>
<span>
<el-checkbox-group v-model="Diner.UseDinerCked">
<el-checkbox v-for="item in Diner.UseDinnerArray" :disabled="isOpenGroup||!varCanChecked(item)" :label="item.Id"
:key='item.Id'>{{item.Name}}</el-checkbox>
</el-checkbox-group>
</span>
</span>
</div>
</div>
</div>
<div class="TP_edit">
<my-edit v-if="isShowEdit" v-on:edit-value="subItemObj.childItem.Description = arguments[0]" v-bind:editValue="subItemObj.childItem.Description"
v-bind:toolbarShow="toolbar" v-bind:referenceList="DefaultList" v-bind:placeholder="placeholder"></my-edit>
</div>
<div class="SiencDiv clearfix">
<div class="ScLeftImg">
<div class="TFimgList" v-for="(item,index) in subItemObj.childItem.ImaArray" :key="item.subCode">
<img v-if="!item.Url" src="../../../assets/img/bg_c3@3x.png" />
<img v-else :src="item.Url" />
<div class="imgzhe" @click="getPic(subItemObj.childItem.ImaArray,index)">
<div class="clearfix" style="text-align:center;">
<div class="re-delte" @click.stop="delImg(index,subItemObj)"><i class="iconfont icon-xingzhuang"></i></div>
<div class="re-delte" @click.stop="toExchangeImg(subItemObj.childItem.DayNum,subIndex,index,0)" v-if="index!=0"><i class="iconfont icon-zuoyi"></i></div>
<div class="re-delte" @click.stop="toExchangeImg(subItemObj.childItem.DayNum,subIndex,index,1)" v-if="index!=subItemObj.childItem.ImaArray.length-1"><i class="iconfont icon-youyi"></i></div>
</div>
</div>
</div>
</div>
<div class="rightAddImg">
<el-upload :file-list="subItemObj.childItem.ImaArray" :http-request="uploadScenImg" :data="subItemObj.childItem"
:multiple="true" accept="image/jpeg,image/gif,image/png,image/bmp" :show-file-list="false" action="">
<i class="iconfont icon-img_haha"></i>
</el-upload>
</div>
</div>
</div>
<div class="read" v-if="!isShowEdit">
<div class="TCtraffic flex">
<div class="partName">
<span class="TDTripType">酒店</span>
</div>
<div class="delSpan">
<el-tooltip class="item" effect="dark" content="编辑" placement="top-start" >
<i class="iconfont icon-bianji" @click="isShowEdit=!isShowEdit"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="删除" placement="top-start" v-if="!isOpenGroup">
<i class="iconfont icon-xingzhuang" @click="removeHotelTrip(subItemObj.childItem.DayNum,subIndex)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="上移" placement="top-start" v-if="subIndex!=0 && !isOpenGroup">
<i class="iconfont icon-shangyi" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,0)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="下移" placement="top-start" v-if="subIndex!=subTotalIndex-1 && !isOpenGroup">
<i class="iconfont icon-xiayi1" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,1)"></i>
</el-tooltip>
</div>
<div class="title-box">
<div class="TDLeftPlan">
<span>入住酒店</span>
<span>
{{subItemObj.childItem.HotelName}}
</span>
<span v-if="subItemObj.childItem.IsSameLevel==1">或同级酒店</span>
<span>房型</span>
<span>
{{subItemObj.childItem.HotelProductName}}
</span>
<span v-if="subItemObj.childItem.IsUseDinner==1">
<span class="TDhotelDiner">酒店含餐</span>
<span v-if="Diner.UseDinerCked==1">早餐</span>
<span v-if="Diner.UseDinerCked==2">中餐</span>
<span v-if="Diner.UseDinerCked==3">晚餐</span>
</span>
</div>
</div>
</div>
<div class="TP_editShow">
<pre v-html="subItemObj.childItem.Description"></pre>
</div>
<div class="SiencDiv clearfix">
<div class="ScLeftImg">
<div class="TFimgList" v-for="(item,index) in subItemObj.childItem.ImaArray" :key="item.subCode">
<img v-if="!item.Url" src="../../../assets/img/bg_c3@3x.png" />
<img v-else :src="item.Url" @click="getPic(subItemObj.childItem.ImaArray,index)"/>
</div>
</div>
</div>
</div>
<div v-if="dspNone" class="viewBigPicLayer myPiclayer" @click="colseLayer">
<i @click="colseLayer" class="el-icon-circle-close-outline clolseViewBigPicLayer" ></i>
<el-carousel height="600px" :initial-index='initialIndex' :interval="5000" trigger="click">
<el-carousel-item v-for="(item,index) in picObj" :key="index">
<img style="width:100%;" :src="item.Url" />
</el-carousel-item>
</el-carousel>
</div>
</div>
</template>
<script>
import MyEdit from "../../EditTemplate.vue";
export default {
props: [
"subItemObj",
"DefaultList",
"DinnerList",
"index",
"subIndex",
"isOpenGroup",
"subTotalIndex",
"TimeTypeList"
],
data() {
var TimeTypeValidate = (rule, value, callback) => {
if (value === 0) {
callback(new Error("请选择时间类型"));
} else {
callback();
}
};
var HotelIdValidate = (rule, value, callback) => {
if (value === 0) {
callback(new Error("请选择酒店"));
} else {
callback();
}
};
return {
//酒店列表
QHotelList: [],
//酒店房型列表
QHotelProductList: [],
toolbar: {
clean: false, //加粗
font: false, //字体
narrative: true //叙述,
},
dspNone:false,
initialIndex:0,
//选中同级酒店
CheckedVaule: 1,
//不选中
UnCheckedVaule: 0,
//是否显示编辑框
isShowEdit: false,
//text框placeholder
placeholder: "请输入酒店信息",
//酒店含餐
Diner: {
DefaultSelectValue: 0,
UseDinerCked: [],
UseDinnerType: [
{
Id: "1",
Name: "早"
},
{
Id: "2",
Name: "中"
},
{
Id: "3",
Name: "晚"
}
],
UseDinnerArray: []
},
//酒店验证
hotelTripRules: {
//时间类型验证
TimeType: [
{
validator: TimeTypeValidate,
trigger: "change"
}
],
HotelId: [
{
validator: HotelIdValidate,
trigger: "change"
}
]
},
TheDayUserDinner: [] //当天餐厅用餐情况
};
},
components: {
"my-edit": MyEdit
},
methods: {
//获取酒店列表
getHotelList(event) {
if (event) {
var msg = {
IsGetPic: 1,
IsGetRemark: 1,
QCity: this.subItemObj.childItem.QCity
};
this.apipost(
"hotel_post_GetLineHotelList",
msg,
res => {
if (res.data.resultCode == 1) {
this.QHotelList = res.data.data;
}
},
err => {}
);
}
},
//酒店选择改变
changeHotelList() {
var that = this;
if (that.subItemObj.childItem.HotelId != 0) {
//获取当前选中的对象
let obj = {};
obj = that.QHotelList.find(item => {
return item.ID === that.subItemObj.childItem.HotelId; //筛选出匹配数据
});
if (obj != undefined) {
that.subItemObj.childItem.HotelProductId = 0;
that.subItemObj.childItem.HotelProductName = "";
that.QHotelProductList = [];
that.Diner.UseDinnerArray = [];
that.subItemObj.childItem.ImaArray = [];
that.subItemObj.childItem.Description = obj.Descriptions;
that.subItemObj.childItem.ImaArray = obj.imgList;
that.subItemObj.childItem.IsUseDinner = obj.IsUseDinner;
that.subItemObj.childItem.HotelName = obj.Name;
let useDinnerTypeStr = that.subItemObj.childItem.UseDinnerType;
if (that.subItemObj.childItem.ID > 0) {
if (obj.UseDinnerType == null || !(obj.UseDinnerType.length > 0)) {
that.Diner.UseDinerCked = [];
that.subItemObj.childItem.UseDinnerType = "";
} else {
let useDinnerTypeStr = that.subItemObj.childItem.UseDinnerType;
if (useDinnerTypeStr != null && useDinnerTypeStr.length > 0) {
let objUseDinnerTypeArr = obj.UseDinnerType.split(",");
let useDinnerTypeArr = useDinnerTypeStr.split(",");
let tmpDinnerTypeArr = [];
useDinnerTypeArr.forEach(x => {
let isRemove = true;
objUseDinnerTypeArr.forEach(y => {
if (x == y) {
isRemove = false;
}
});
if (!isRemove) {
tmpDinnerTypeArr.push(x);
}
});
that.subItemObj.childItem.UseDinnerType = tmpDinnerTypeArr.join(
","
);
that.Diner.UseDinerCked = tmpDinnerTypeArr;
}
}
} else {
if (obj.UseDinnerType != null && obj.UseDinnerType.length > 0) {
that.Diner.UseDinerCked = obj.UseDinnerType.split(",");
}
}
let useDinnerTypeArry = [];
if (obj.UseDinnerType != null && obj.UseDinnerType.length > 0) {
useDinnerTypeArry = obj.UseDinnerType.split(",");
}
useDinnerTypeArry.forEach(y => {
that.Diner.UseDinnerType.forEach(DinerTypeItem => {
if (y == DinerTypeItem.Id) {
that.Diner.UseDinnerArray.push(DinerTypeItem);
}
});
});
that.Diner.UseDinnerArray.sort(
this.$commonUtils.createComprisonFunction("Id")
);
}
}
},
//获取酒店房型列表
getHotelProductList(event) {
if (event) {
this.apipost(
"dict_post_HotelProduc_GetList",
{
Hotel_ID: this.subItemObj.childItem.HotelId
},
res => {
if (res.data.resultCode == 1) {
this.QHotelProductList = res.data.data;
}
},
err => {}
);
}
},
//产品选择改变
changeHotelProductList() {
var that = this;
if (that.subItemObj.childItem.HotelProductId != 0) {
//获取当前选中的对象
let obj = {};
obj = that.QHotelProductList.find(item => {
return item.ID === that.subItemObj.childItem.HotelProductId; //筛选出匹配数据
});
if (obj != undefined) {
this.subItemObj.childItem.HotelProductName = obj.Name;
}
}
},
//上传景点图片
uploadScenImg(item) {
let newArr = [];
newArr.push(item.file);
let path = "/Upload/DMC/";
this.UploadSelfFileT(path, newArr, x => {
var fileObj = this.$commonUtils.FileObject();
fileObj.Url = this.domainManager().ViittoFileUrl + x.data.FilePath,
fileObj.fileName = x.data.FileName;
item.data.ImaArray.push(fileObj);
});
},
//删除酒店
removeHotelTrip(dayNum, subIndex) {
this.$parent.$parent.commonRemove(dayNum, subIndex);
},
//删除图片
delImg(index, subItemObj) {
this.$parent.$parent.commonRemoveImg(index, subItemObj);
},
initTheDayUserDinner() {
let dayNum = this.subItemObj.childItem.DayNum;
this.TheDayUserDinner = [];
this.DinnerList.forEach(x => {
if (x.DayNum == dayNum) {
if (x.UseDinnerType.length > 0) {
let tempDinnerArr = x.UseDinnerType.split(",");
let reg = /^[0-9]+.?[0-9]*/;
tempDinnerArr.forEach(y => {
if (reg.test(y)) {
this.TheDayUserDinner.push(y);
}
});
}
}
});
this.TheDayUserDinner = Array.from(new Set(this.TheDayUserDinner));
},
varCanChecked(dinnerType) {
let canChecked = true;
this.TheDayUserDinner.forEach(x => {
if (x == dinnerType.Id) {
canChecked = false;
}
});
return canChecked;
},
//上移下移
MoveItem(dayNum, subIndex, IsUp) {
this.$parent.$parent.MoveItem(dayNum, subIndex, IsUp);
},
//左右移动
toExchangeImg(dayNum, subIndex, imgIndex, IsMove) {
this.$parent.$parent.ExchangeImg(dayNum, subIndex, imgIndex,IsMove);
},
colseLayer(){
this.dspNone=false;
},
getPic(obj,index){
this.picObj=obj
this.dspNone=true;
this.initialIndex = index;
},
getItemLabel(item){
let returnName = item.Name;
if(item.Inventory>=0){
returnName = returnName+ " " +item.Inventory;
}
return returnName;
}
},
mounted() {
if (this.subItemObj.childItem.ID > 0) {
if (this.subItemObj.childItem.HotelId > 0) {
this.QHotelList.push({
ID: parseInt(this.subItemObj.childItem.HotelId),
Name: this.subItemObj.childItem.HotelName
});
}
if (this.subItemObj.childItem.HotelProductId > 0) {
this.QHotelProductList.push({
ID: parseInt(this.subItemObj.childItem.HotelProductId),
Name: this.subItemObj.childItem.HotelProductName
});
}
}
},
watch: {
subItemObj: {
//深度监听,可监听到对象、数组的变化
handler: function(val, oldVal) {
this.subItemObj.childItem.HotelImg = JSON.stringify(
this.subItemObj.childItem.ImaArray
);
},
deep: true
},
"Diner.UseDinerCked": {
handler: function(val, oldVal) {
this.subItemObj.childItem.UseDinnerType = this.Diner.UseDinerCked.join(
","
);
}
},
DinnerList: {
handler: function(val, oldVal) {
this.initTheDayUserDinner();
},
deep: true
},
"subItemObj.childItem.QCity": {
handler: function(val, oldVal) {
this.getHotelList();
},
deep: true
}
}
};
</script>
<template>
<div class="trip-item-box">
<div class="edit" v-if="isShowEdit">
<div class="TCtraffic flex">
<div class="partName">
<span class="TDTripType">景点</span>
</div>
<span class="datePickContent" style="display:none;">
<el-form-item>
<el-select :disabled="isOpenGroup" class="w160" placeholder="请选择时间" v-model="subItemObj.childItem.TimeType">
<el-option v-for="item in TimeTypeList" :label='item.Name' :value='item.Id' :key='item.Id'>
</el-option>
</el-select>
</el-form-item>
</span>
<div class="delSpan">
<el-tooltip class="item" effect="dark" content="查看" placement="top-start">
<i class="iconfont icon-chakan" @click="isShowEdit=!isShowEdit"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="删除" placement="top-start" v-if="!isOpenGroup">
<i class="iconfont icon-xingzhuang" @click="removeScienTrip(subItemObj.childItem.DayNum,subIndex)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="上移" placement="top-start" v-if="subIndex!=0 && !isOpenGroup">
<i class="iconfont icon-shangyi" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,0)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="下移" placement="top-start" v-if="subIndex!=subTotalIndex-1 && !isOpenGroup">
<i class="iconfont icon-xiayi1" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,1)"></i>
</el-tooltip>
</div>
<div class="TDplanList clearfix">
<div class="TDLeftPlan">
<span>景点选择</span>
<span>
<el-form-item :prop="'DayList.'+index+'.dayArray.'+subIndex+'.childItem.CouponsId'" :rules="scienTripRules.CouponsId">
<el-select :disabled="isOpenGroup" class='w160' :placeholder="$t('pub.pleaseSel')" filterable v-model="subItemObj.childItem.CouponsId"
@visible-change="getQScenicList($event)" @change="changeQScenicList()">
<el-option :label="$t('pub.unlimitedSel')" :value='DefaultSelectValue'></el-option>
<el-option v-for="item in QScenicList" :label='getItemLabel(item)' :value='item.ID' :key='item.ID'>
</el-option>
</el-select>
</el-form-item>
</span>
<span class="comTravelLeft">门票</span>
<span>
<el-select :disabled="isOpenGroup" class='w160' filterable :placeholder="$t('pub.pleaseSel')" v-model="subItemObj.childItem.CouponsTicketId"
@visible-change="getTicketList($event)" @change="changeTicketList()">
<el-option :label="$t('pub.unlimitedSel')" :value='DefaultSelectValue'></el-option>
<el-option v-for="item in QTicketList" :label='item.TicketName' :value='item.Id' :key='item.Id'>
</el-option>
</el-select>
</span>
</div>
<div class="TDRightPlan">
<label class="comTravelLeft">游玩时间</label>
<el-input :disabled="isOpenGroup" type="text" class="w120" v-model="subItemObj.childItem.PlayTimeHour"
@keyup.native="checkInteger(subItemObj.childItem,'PlayTimeHour')" maxlength="2"></el-input>&nbsp;&nbsp;小时
<el-input :disabled="isOpenGroup" type="text" class="w120" v-model="subItemObj.childItem.PlayTimeMinutes"
@keyup.native="checkInteger(subItemObj.childItem,'PlayTimeMinutes')" maxlength="2"></el-input>&nbsp;&nbsp;分钟
</div>
</div>
</div>
<div class="TP_edit">
<my-edit v-if="isShowEdit" v-on:edit-value="subItemObj.childItem.Description = arguments[0]" v-bind:editValue="subItemObj.childItem.Description"
v-bind:toolbarShow="toolbar" v-bind:referenceList="DefaultList" v-bind:placeholder="placeholder"></my-edit>
</div>
<div class="SiencDiv clearfix">
<div class="ScLeftImg">
<div class="TFimgList" v-for="(item,index) in subItemObj.childItem.ImaArray" :key="item.subCode">
<img v-if="!item.Url" src="../../../assets/img/bg_c3@3x.png" />
<img v-else :src="item.Url" />
<div class="imgzhe" @click="getPic(subItemObj.childItem.ImaArray,index)">
<div class="clearfix" style="text-align:center;">
<div class="re-delte" @click.stop="delImg(index,subItemObj)"><i class="iconfont icon-xingzhuang"></i></div>
<div class="re-delte" @click.stop="toExchangeImg(subItemObj.childItem.DayNum,subIndex,index,0)" v-if="index!=0"><i
class="iconfont icon-zuoyi"></i></div>
<div class="re-delte" @click.stop="toExchangeImg(subItemObj.childItem.DayNum,subIndex,index,1)" v-if="index!=subItemObj.childItem.ImaArray.length-1"><i
class="iconfont icon-youyi"></i></div>
</div>
</div>
</div>
</div>
<div class="rightAddImg">
<el-upload :file-list="subItemObj.childItem.ImaArray" :http-request="uploadScenImg" :data="subItemObj.childItem"
:multiple="true" accept="image/jpeg,image/gif,image/png,image/bmp" :show-file-list="false" action="">
<i class="iconfont icon-img_haha"></i>
</el-upload>
</div>
</div>
</div>
<div class="read" v-if="!isShowEdit">
<div class="TCtraffic flex">
<div class="partName">
<span class="TDTripType">景点</span>
</div>
<div class="delSpan">
<el-tooltip class="item" effect="dark" content="编辑" placement="top-start" v-if="!isShowEdit">
<i class="iconfont icon-bianji" @click="isShowEdit=!isShowEdit"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="删除" placement="top-start" v-if="!isOpenGroup">
<i class="iconfont icon-xingzhuang" @click="removeScienTrip(subItemObj.childItem.DayNum,subIndex)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="上移" placement="top-start" v-if="subIndex!=0 && !isOpenGroup">
<i class="iconfont icon-shangyi" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,0)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="下移" placement="top-start" v-if="subIndex!=subTotalIndex-1 && !isOpenGroup">
<i class="iconfont icon-xiayi1" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,1)"></i>
</el-tooltip>
</div>
<div class="title-box">
<div class="TDLeftPlan">
<span>
{{subItemObj.childItem.CouponsName}}
</span>
<span class="comTravelLeft">门票</span>
<span>
{{subItemObj.childItem.CouponsTicketName}}
</span>
<span>游玩时间</span>
<span>{{subItemObj.childItem.PlayTimeHour}}</span>
<span>小时</span>
<span>{{subItemObj.childItem.PlayTimeMinutes}}</span>
<span>分钟</span>
</div>
</div>
</div>
<div class="TP_editShow">
<pre v-html="subItemObj.childItem.Description"></pre>
</div>
<div class="SiencDiv clearfix">
<div class="ScLeftImg">
<div class="TFimgList" v-for="(item,index) in subItemObj.childItem.ImaArray" :key="item.subCode">
<img v-if="!item.Url" src="../../../assets/img/bg_c3@3x.png" />
<img v-else :src="item.Url" @click="getPic(subItemObj.childItem.ImaArray,index)" />
</div>
</div>
</div>
</div>
<div v-if="dspNone" class="viewBigPicLayer myPiclayer" @click="colseLayer">
<i @click="colseLayer" class="el-icon-circle-close-outline clolseViewBigPicLayer"></i>
<el-carousel height="600px" :initial-index='initialIndex' :interval="5000" trigger="click">
<el-carousel-item v-for="(item,index) in picObj" :key="index">
<img style="width:100%;" :src="item.Url" />
</el-carousel-item>
</el-carousel>
</div>
</div>
</template>
<script>
import MyEdit from "../../EditTemplate.vue";
export default {
props: [
"subItemObj",
"DefaultList",
"subIndex",
"index",
"isOpenGroup",
"subTotalIndex",
"TimeTypeList"
],
data() {
var TimeTypeValidate = (rule, value, callback) => {
if (value === 0) {
callback(new Error("请选择时间类型"));
} else {
callback();
}
};
var CouponsIdValidate = (rule, value, callback) => {
if (value === 0) {
callback(new Error("请选择景点"));
} else {
callback();
}
};
return {
toolbar: {
clean: false, //加粗
font: false, //字体
narrative: true //叙述,
},
QScenicList: [],
QTicketList: [],
DefaultSelectValue: 0,
//是否显示编辑框
isShowEdit: false,
dspNone: false,
initialIndex: 0,
//text框placeholder
placeholder: "请输入景点信息",
//景点验证
scienTripRules: {
//时间类型验证
TimeType: [{
validator: TimeTypeValidate,
trigger: "change"
}],
CouponsId: [{
validator: CouponsIdValidate,
trigger: "change"
}]
}
};
},
components: {
"my-edit": MyEdit
},
methods: {
//获取景区列表
getQScenicList(event) {
if (event) {
this.QScenicList = [];
var msg = {
IsGetPic: 1,
IsGetFeature: 1,
QCity: this.subItemObj.childItem.QCity
};
this.apipost(
"ticketcoupons_post_GetLineScienList",
msg,
res => {
if (res.data.resultCode == 1) {
this.QScenicList = res.data.data;
}
},
err => {}
);
}
},
//选择改变
changeQScenicList() {
var that = this;
if (that.subItemObj.childItem.CouponsId != 0) {
//获取当前选中的对象
let obj = {};
obj = that.QScenicList.find(item => {
return item.ID === that.subItemObj.childItem.CouponsId; //筛选出匹配数据
});
if (obj != undefined) {
that.subItemObj.childItem.CouponsTicketId = 0;
that.subItemObj.childItem.CouponsTicketName = "";
that.subItemObj.childItem.ImaArray = [];
that.QTicketList = [];
that.subItemObj.childItem.CouponsName = obj.Name;
that.subItemObj.childItem.Description = obj.Feature;
if (obj.PicPath != undefined && obj.PicPath != "") {
var scenImgList = obj.PicPath.split(",");
for (var i = 0; i < scenImgList.length; i++) {
var fileObj = that.$commonUtils.FileObject();
if (scenImgList[i] != "") {
fileObj.Url = that.domainManager().ViittoFileUrl + scenImgList[i];
fileObj.Name = "";
that.subItemObj.childItem.ImaArray.push(fileObj);
}
}
}
}
}
},
//获取景区门票列表
getTicketList(event) {
if (event) {
this.QTicketList = [];
this.apipost(
"ticketcouponsticket_get_GetList", {
CouponsId: this.subItemObj.childItem.CouponsId
},
res => {
if (res.data.resultCode == 1) {
this.QTicketList = res.data.data;
}
},
err => {}
);
}
},
//门票选择
changeTicketList() {
var that = this;
if (that.subItemObj.childItem.CouponsTicketId != 0) {
//获取当前选中的对象
let obj = {};
obj = that.QTicketList.find(item => {
return item.Id == that.subItemObj.childItem.CouponsTicketId; //筛选出匹配数据
});
if (obj != undefined) {
that.subItemObj.childItem.CouponsTicketName = obj.TicketName;
}
}
},
//删除景区
removeScienTrip(dayNum, subIndex) {
this.$parent.$parent.commonRemove(dayNum, subIndex);
},
//删除图片
delImg(index, subItemObj) {
this.$parent.$parent.commonRemoveImg(index, subItemObj);
},
//上传景点图片
uploadScenImg(item) {
let newArr = [];
newArr.push(item.file);
let path = "/Upload/DMC/";
this.UploadSelfFileT(path, newArr, x => {
var fileObj = this.$commonUtils.FileObject();
fileObj.Url = this.domainManager().ViittoFileUrl + x.data.FilePath,
fileObj.fileName = x.data.FileName;
item.data.ImaArray.push(fileObj);
});
},
//上移下移
MoveItem(dayNum, subIndex, IsUp) {
this.$parent.$parent.MoveItem(dayNum, subIndex, IsUp);
},
//左右移动
toExchangeImg(dayNum, subIndex, imgIndex, IsMove) {
this.$parent.$parent.ExchangeImg(dayNum, subIndex, imgIndex, IsMove);
},
colseLayer() {
this.dspNone = false;
},
getPic(obj, index) {
this.picObj = obj
this.dspNone = true;
this.initialIndex = index;
},
getItemLabel(item){
let returnName = item.Name;
if(item.Inventory>=0){
returnName = returnName+ " " +item.Inventory;
}
return returnName;
}
},
created() {
if (this.subItemObj.childItem.ID > 0) {
if (this.subItemObj.childItem.CouponsId > 0) {
this.QScenicList.push({
ID: parseInt(this.subItemObj.childItem.CouponsId),
Name: this.subItemObj.childItem.CouponsName
});
}
if (this.subItemObj.childItem.CouponsTicketId > 0) {
this.QTicketList.push({
Id: parseInt(this.subItemObj.childItem.CouponsTicketId),
TicketName: this.subItemObj.childItem.CouponsTicketName
});
}
}
},
mounted() {},
watch: {
subItemObj: {
//深度监听,可监听到对象、数组的变化
handler: function (val, oldVal) {
this.subItemObj.childItem.ScenicImg = JSON.stringify(
this.subItemObj.childItem.ImaArray
);
},
deep: true
},
"subItemObj.childItem.QCity": {
handler: function (val, oldVal) {
this.getQScenicList();
},
deep: true
}
}
};
</script>
<template>
<div>
<div class="TCtraffic clearfix">
<div>
<span class="datePickContent" style="background-color:transparent">
<el-form-item>
<el-input v-model="subItemObj.childItem.Title" class="" placeholder="行程大点"></el-input>
</el-form-item>
</span>
</div>
</div>
</div>
</template>
<script>
import MyEdit from "../../EditTemplate.vue";
export default {
props: ["subItemObj","isOpenGroup"],
data() {
return {
toolbar: {
clean: true, //加粗
font: true, //字体
narrative: true //叙述,
},
//是否显示编辑框
isShowEdit:false,
//text框placeholder
placeholder:'请输入行程大点信息'
};
},
methods: {
},
components: {
"my-edit": MyEdit
}
};
</script>
<template>
<div class="trip-item-box">
<div class="edit" v-if="isShowEdit">
<div class="TCtraffic flex">
<div class="partName">
<span class="TDTripType">交通</span>
</div>
<div v-if="!isOpenGroup" class="delSpan">
<el-tooltip class="item" effect="dark" content="查看" placement="top-start">
<i class="iconfont icon-chakan" @click="isShowEdit=!isShowEdit"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="上移" placement="top-start" v-if="subIndex!=0">
<i class="iconfont icon-shangyi" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,0)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="删除" placement="top-start">
<i class="iconfont icon-xingzhuang" @click="removeTrifficTrip(subItemObj.childItem.DayNum,subIndex)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="下移" placement="top-start" v-if="subIndex!=subTotalIndex-1">
<i class="iconfont icon-xiayi1" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,1)"></i>
</el-tooltip>
</div>
<div class="TDplanList clearfix">
<div class="TDLeftPlan">
<span v-for="(subTraffic,subTrafficIndex) in subItemObj.childItem.SubTraffic">
<span v-if="subTrafficIndex==0">
<el-form-item :prop="'DayList.'+index+'.dayArray.'+subIndex+'.childItem.SubTraffic.'+subTrafficIndex+'.StartCityId'"
:rules="trifficTripRules.StartCityId">
<el-select :disabled="isOpenGroup" class='w120' :placeholder="$t('pub.pleaseSel')" filterable v-model="subTraffic.StartCityId"
@visible-change="GetDepartList1($event)" @change="changeGetDepartList(subTraffic.StartCityId)">
<el-option :label="$t('pub.unlimitedSel')" :value='DefaultSelectValue'></el-option>
<el-option v-for="item in DepartList1" :label='item.Name' :value='item.ID' :key='item.ID'>
</el-option>
</el-select>
</el-form-item>
</span>
<!--显示交通类型-->
<span class="TDArrivalType">
<el-form-item :prop="'DayList.'+index+'.dayArray.'+subIndex+'.childItem.SubTraffic.'+subTrafficIndex+'.ArrivalType'"
:rules="trifficTripRules.ArrivalType">
<el-select :disabled="isOpenGroup" :placeholder="$t('pub.pleaseSel')" v-model="subTraffic.ArrivalType">
<el-option v-for="item in ArrivalTypeArray" :value='item.ID' :key='item.ID'>
<i :class="item.ClassStr"></i>
</el-option>
</el-select>
</el-form-item>
<i v-if="subTraffic.ArrivalType==1" class="iconfont icon-feiji feiji"></i>
<i v-if="subTraffic.ArrivalType==2" class="iconfont icon-dabaxiaoba daba"></i>
<i v-if="subTraffic.ArrivalType==3" class="iconfont icon--lunchuan lunchuan"></i>
<i v-if="subTraffic.ArrivalType==4" class="iconfont icon-huoche huoche"></i>
</span>
<span>
<el-form-item :prop="'DayList.'+index+'.dayArray.'+subIndex+'.childItem.SubTraffic.'+subTrafficIndex+'.ArrivalCityId'"
:rules="trifficTripRules.ArrivalCityId">
<el-select :disabled="isOpenGroup" class='w120' :placeholder="$t('pub.pleaseSel')" filterable v-model="subTraffic.ArrivalCityId"
@visible-change="GetArrivalList1($event)" @change="changeArrivalCity(subTraffic.ArrivalCityId)">
<el-option :label="$t('pub.unlimitedSel')" :value='DefaultSelectValue'></el-option>
<el-option v-for="item in ArriveList1" :label='item.Name' :value='item.ID' :key='item.ID'>
</el-option>
</el-select>
</el-form-item>
</span>
</span>
<!--增加交通计划-->
<span v-if="!isOpenGroup" class="addTrafficPlan" @click="addTrafficPlan(subItemObj)">+</span>
<!--减少交通计划-->
<span v-if="subItemObj.childItem.SubTraffic.length>1&&!isOpenGroup" class="addTrafficPlan" @click="minusTrafficPlan(subItemObj)">-</span>
</div>
</div>
<div class="useCar">
<el-checkbox v-model="subItemObj.childItem.IsUseBus" :checked="subItemObj.childItem.IsUseBus===CheckedVaule"
:true-label="CheckedVaule" :false-label="UnCheckedVaule" border size="mini">用车</el-checkbox>
</div>
</div>
<div class="TDplanList TDRightPlan" v-if='subItemObj.childItem.IsUseBus===CheckedVaule'>
<div class="useCarPlan"><label>用车计划</label>
<span v-if="index==0" :class="{'ListCked':subItemObj.childItem.AirportPickUp==1}" @click="changeAirportType(1)">{{AirPickUp}}</span>
<span v-if="index==DayList.length-1" :class="{'ListCked':subItemObj.childItem.AirportPickUp==2}" @click="changeAirportType(2)">{{AirSend}}</span>
</div>
<div class="clearfix">
<div v-if="!isOpenGroup" class="useTypeDiv" v-for="useTypeItem in UseTypeArray" :key="useTypeItem.subCode">
<span :class="{'ListCked':subItemObj.childItem.UseType==useTypeItem.Id}" @click="UseTypeClick( subItemObj.childItem,useTypeItem.Id)">{{useTypeItem.Name}}</span>
</div>
<div v-if="isOpenGroup" class="useTypeDiv" v-for="useTypeItem in UseTypeArray" :key="useTypeItem.subCode">
<span :class="{'ListCked':subItemObj.childItem.UseType==useTypeItem.Id}">{{useTypeItem.Name}}</span>
</div>
<div>
<el-input :disabled="isOpenGroup" class="w135" v-model="subItemObj.childItem.UseTime" @keyup.native="checkInteger(subItemObj.childItem,'UseTime')"
placeholder="请输入用车小时"></el-input>
</div>
</div>
</div>
<div class="TP_edit">
<my-edit v-on:edit-value="subItemObj.childItem.Description = arguments[0]" v-bind:editValue="subItemObj.childItem.Description"
v-bind:toolbarShow="toolbar" v-bind:referenceList="DefaultList"></my-edit>
</div>
</div>
<div class="read" v-if="!isShowEdit">
<div class="TCtraffic flex">
<div class="partName">
<span class="TDTripType">交通</span>
<div v-if="!isOpenGroup" class="delSpan">
<el-tooltip class="item" effect="dark" content="编辑" placement="top-start" v-if="!isShowEdit">
<i class="iconfont icon-bianji" @click="isShowEdit=!isShowEdit"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="上移" placement="top-start" v-if="subIndex!=1">
<i class="iconfont icon-shangyi" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,0)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="删除" placement="top-start">
<i class="iconfont icon-xingzhuang" @click="removeTrifficTrip(subItemObj.childItem.DayNum,subIndex)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="下移" placement="top-start" v-if="subIndex!=subTotalIndex-1">
<i class="iconfont icon-xiayi1" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,1)"></i>
</el-tooltip>
</div>
</div>
<div class="title-box">
<span v-for="(subTraffic,subTrafficIndex) in subItemObj.childItem.SubTraffic" :key="subTrafficIndex">
<span v-if="subTrafficIndex==0">
{{subTraffic.StartCityName}}
</span>
<!--显示交通类型-->
<span>
<i v-if="subTraffic.ArrivalType==1" class="iconfont icon-feiji feiji"></i>
<i v-if="subTraffic.ArrivalType==2" class="iconfont icon-dabaxiaoba daba"></i>
<i v-if="subTraffic.ArrivalType==3" class="iconfont icon--lunchuan lunchuan"></i>
<i v-if="subTraffic.ArrivalType==4" class="iconfont icon-huoche huoche"></i>
</span>
<!--最后一天的交通城市-->
<span v-if="index==DayList.length-1 && subTrafficIndex==subItemObj.childItem.SubTraffic.length-1 ">
{{subTraffic.ArrivalCityName}}
</span>
<!--中转城市-->
<span v-else-if="subTrafficIndex!=subItemObj.childItem.SubTraffic.length-1">
{{subTraffic.ArrivalCityName}}
</span>
<span v-else>
{{subTraffic.ArrivalCityName}}
</span>
</span>
</div>
<div class="use">
<span class="none" v-if='subItemObj.childItem.IsUseBus===CheckedVaule'>
用车计划
<span v-if="subItemObj.childItem.AirportPickUp==1">接机</span>
<span v-if="subItemObj.childItem.AirportPickUp==2">送机</span>
<span v-if="subItemObj.childItem.UseType==1">全天</span>
<span v-if="subItemObj.childItem.UseType==2">半天</span>
<span>{{subItemObj.childItem.UseTime}}</span>
<span>小时</span>
</span>
<span class="none" v-else>不用车</span>
</div>
</div>
<div class="TP_editShow">
<pre v-html="subItemObj.childItem.Description"></pre>
</div>
</div>
</div>
</template>
<script>
import MyEdit from "../../EditTemplate.vue";
export default {
props: [
"subItemObj",
"index",
"DayList",
"DefaultList",
"subIndex",
"QueryData",
"isOpenGroup",
"subTotalIndex",
"AllCityList", //所有的城市数据
"TimeTypeList",
"UseTypeArray",
"AirPickUp",
"AirSend"
],
data() {
var StartCityIdValidate = (rule, value, callback) => {
if (value === 0) {
callback(new Error("请选择出发城市"));
} else {
callback();
}
};
var ArrivalTypeValidate = (rule, value, callback) => {
if (value === 0) {
callback(new Error("请选择交通类型"));
} else {
callback();
}
};
var ArrivalCityIdValidate = (rule, value, callback) => {
if (value === 0) {
callback(new Error("请选择到达城市"));
} else {
callback();
}
};
return {
//下拉框默认值
DefaultSelectValue: 0,
//编辑器选项
toolbar: {
clean: false, //加粗
font: false, //字体
narrative: true //叙述,
},
//交通类型数组
ArrivalTypeArray: [
{
ID: 1,
ClassStr: "iconfont icon-feiji"
}, //飞机
{
ID: 2,
ClassStr: "iconfont icon-dabaxiaoba"
}, //汽车
{
ID: 3,
ClassStr: "iconfont icon-lunchuan"
}, //轮船
{
ID: 4,
ClassStr: "iconfont icon-huoche"
} //火车
],
//选中用车
CheckedVaule: 1,
//不用车
UnCheckedVaule: 0,
//是否显示编辑框
isShowEdit: false,
//text框placeholder
placeholder: "请输入交通信息",
//交通验证
trifficTripRules: {
StartCityId: [
{
validator: StartCityIdValidate,
trigger: "change"
}
],
ArrivalType: [
{
validator: ArrivalTypeValidate,
trigger: "change"
}
],
ArrivalCityId: [
{
validator: ArrivalCityIdValidate,
trigger: "change"
}
]
},
//出发城市列表1
DepartList1: [],
//到达城市列表1
ArriveList1: []
};
},
components: {
"my-edit": MyEdit
},
methods: {
//出发城市1
GetDepartList1(event) {
if (event) {
this.DepartList1 = this.AllCityList;
}
},
//到达城市
GetArrivalList1(event) {
if (event) {
this.ArriveList1 = this.AllCityList;
}
},
//到达城市改变
changeArrivalCity(val) {
this.DayList.forEach((item, qIndex) => {
if (this.index == qIndex) {
//删除多余的项
item.dayArray.forEach((subItem, childIndex) => {
if (childIndex > this.subIndex) {
//查询数组
var qArray = this.$tripUtils.GetCityIdArray(
this.DayList,
qIndex,
this.DayList[this.index].dayArray.length,
true
);
subItem.childItem.QCity = qArray.join(",");
}
});
}
});
var that = this;
if (val != 0) {
//获取当前选中的对象
let obj = {};
obj = that.AllCityList.find(item => {
return item.ID === val; //筛选出匹配数据
});
if (obj != undefined) {
that.subItemObj.childItem.SubTraffic.forEach((x, index) => {
if (x.ArrivalCityId == val) {
x.ArrivalCityName = obj.Name;
}
if (index != 0) {
that.subItemObj.childItem.SubTraffic[index].StartCityName =
that.subItemObj.childItem.SubTraffic[index - 1].ArrivalCityName;
that.subItemObj.childItem.SubTraffic[index].StartCityId =
that.subItemObj.childItem.SubTraffic[index - 1].ArrivalCityId;
}
});
}
}
},
//出发城市改变
changeGetDepartList(val) {
var that = this;
if (val != 0) {
//获取当前选中的对象
let obj = {};
obj = that.AllCityList.find(item => {
return item.ID === val; //筛选出匹配数据
});
if (obj != undefined) {
that.subItemObj.childItem.SubTraffic.forEach(x => {
if (x.StartCityId == val) {
x.StartCityName = obj.Name;
}
});
}
}
},
getCityNameById(id) {
let name = "";
this.AllCityList.forEach(x => {
if (x.ID == id) {
name = x.Name;
return false;
}
});
return name;
},
changeAirportType(t) {
if (t == this.subItemObj.childItem.AirportPickUp) {
this.subItemObj.childItem.AirportPickUp = 0;
} else {
this.subItemObj.childItem.AirportPickUp = t;
}
},
//用车类型点击事件
UseTypeClick(item, value) {
item.UseType = value;
},
//点击添加交通计划
addTrafficPlan(item) {
item.childItem.SubTraffic.push(this.$tripUtils.subTrafficObj());
},
//减去交通计划
minusTrafficPlan(item) {
if (item.childItem.SubTraffic.length > 1) {
item.childItem.SubTraffic.splice(
item.childItem.SubTraffic.length - 1,
1
);
}
},
//删除交通
removeTrifficTrip(dayNum, subIndex) {
this.$parent.$parent.commonRemove(dayNum, subIndex);
},
//上移下移
MoveItem(dayNum, subIndex, IsUp) {
this.$parent.$parent.MoveItem(dayNum, subIndex, IsUp);
},
//初始化数据
initData() {
if (this.subItemObj.childItem.ID > 0) {
if (
this.subItemObj.childItem.SubTraffic != null &&
this.subItemObj.childItem.SubTraffic.length > 0
) {
this.subItemObj.childItem.SubTraffic.forEach(item => {
this.DepartList1.push({
ID: item.StartCityId,
Name: item.StartCityName
});
this.ArriveList1.push({
ID: item.ArrivalCityId,
Name: item.ArrivalCityName
});
});
}
} else {
this.subItemObj.childItem.SubTraffic.forEach(item => {
this.DepartList1.push({
ID: item.StartCityId,
Name: this.getCityNameById(item.StartCityId)
});
});
}
}
},
mounted() {
this.initData();
},
created() {},
watch: {
//监听参数
subItemObj: {
handler: function(val, oldVal) {
//获取当前到达城市
var subArray = this.subItemObj.childItem.SubTraffic;
if (subArray.length > 0) {
var tempCityId = 0;
if (subArray.length > 1) {
for (var i = 0; i < subArray.length; i++) {
if (subArray[i].ArrivalCityId != undefined) {
tempCityId = subArray[i].ArrivalCityId;
if (i > 0) {
subArray[i].StartCityId = subArray[i - 1].ArrivalCityId;
}
}
}
} else {
if (subArray[0].ArrivalCityId != undefined) {
tempCityId = subArray[0].ArrivalCityId;
}
}
this.subItemObj.childItem.CityId = tempCityId;
}
},
deep: true
}
}
};
</script>
<template>
<div class="trip-item-box">
<div class="TCtraffic flex">
<div class="partName">
<span class="TDTripType">温馨提示</span>
</div>
<span class="datePickContent" style="display:none;">
</span>
<div class="delSpan">
<el-tooltip class="item" effect="dark" content="编辑" placement="top-start" v-if="!isShowEdit">
<i class="iconfont icon-bianji" @click="isShowEdit=!isShowEdit"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="查看" placement="top-start" v-else>
<i class="iconfont icon-chakan" @click="isShowEdit=!isShowEdit"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="删除" placement="top-start" v-if="!isOpenGroup">
<i class="iconfont icon-xingzhuang" @click="removeWarmTrip(subItemObj.childItem.DayNum,subIndex)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="上移" placement="top-start" v-if="subIndex!=0 && !isOpenGroup">
<i class="iconfont icon-shangyi" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,0)"></i>
</el-tooltip>
<el-tooltip class="item" effect="dark" content="下移" placement="top-start" v-if="subIndex!=subTotalIndex-1 && !isOpenGroup">
<i class="iconfont icon-xiayi1" @click="MoveItem(subItemObj.childItem.DayNum,subIndex,1)"></i>
</el-tooltip>
</div>
</div>
<div class="TP_edit">
<my-edit v-if="isShowEdit" v-on:edit-value="subItemObj.childItem.Description = arguments[0]" v-bind:editValue="subItemObj.childItem.Description"
v-bind:toolbarShow="toolbar" v-bind:referenceList="DefaultList" v-bind:placeholder="placeholder"></my-edit>
</div>
<div class="TP_editShow" v-if="!isShowEdit">
<pre v-html="subItemObj.childItem.Description"></pre>
</div>
</div>
</template>
<script>
import MyEdit from "../../EditTemplate.vue";
export default {
props: ["subItemObj", "DefaultList", "subIndex", "isOpenGroup","subTotalIndex"],
data() {
return {
toolbar: {
clean: false, //清除样式
font: false, //字体
narrative: true //叙述,
},
//是否显示编辑框
isShowEdit:false,
//text框placeholder
placeholder:'请输入提示信息',
};
},
methods: {
//删除温馨提示
removeWarmTrip(dayNum, subIndex) {
this.$parent.$parent.commonRemove(dayNum, subIndex);
},
//上移下移
MoveItem(dayNum, subIndex, IsUp) {
this.$parent.$parent.MoveItem(dayNum, subIndex, IsUp);
}
},
components: {
"my-edit": MyEdit
}
};
</script>
......@@ -1526,6 +1526,14 @@ export default {
title: '自主开团'
},
},
{
path: '/TravelManager5',
name: 'TravelManager5',
component: resolve => require(['@/components/newTravelManager/oldTravelGroupControl/TravelManager5'], resolve),
meta: {
title: '自主开团'
},
},
{
path: '/BasicOpenGroup', //基础班团控配置
name: 'BasicOpenGroup',
......
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