Commit 7f283a70 authored by 黄奎's avatar 黄奎

新增组件

parent 0223f6f0
......@@ -105,7 +105,8 @@
<el-select class="multiple_input" v-model="postConfig.PriceTeamType">
<el-option :label="$t('pub.pleaseSel')" :value='0'></el-option>
<template v-for="item in TeamListArr">
<el-option v-if="item.Id==1||item.Id==2||item.Id==3||item.Id==4||item.Id==9" :key="item.Id" :label="item.Name" :value="item.Id">
<el-option v-if="item.Id==1||item.Id==2||item.Id==3||item.Id==4||item.Id==9" :key="item.Id"
:label="item.Name" :value="item.Id">
</el-option>
</template>
</el-select>
......@@ -128,7 +129,8 @@
<td width="80" class="txtRightCost">系列</td>
<td colspan="3">
<el-select style="width:100%;" v-model="postConfig.LineteamId" :placeholder="$t('pub.pleaseSel')" filterable>
<el-select style="width:100%;" v-model="postConfig.LineteamId" :placeholder="$t('pub.pleaseSel')"
filterable>
<el-option :label="$t('pub.unlimitedSel')" :value='0'></el-option>
<el-option v-for="item in LineTeamList" :label='item.LtName' :value='item.LtID' :key='item.LtID'>
</el-option>
......@@ -228,8 +230,8 @@
OtherPrice: {},
teamPrice: {},
CostNumberList: [],
TeamListArr:[]
},
TeamListArr: [],
orderList: [],
queryMsg: {
IsDefault: false,
......@@ -238,10 +240,9 @@
//人数
PeopleNumber: ""
},
LineTeamList: [], //系列下拉列表
companyList: [], //出团公司
teamList: [],//团队类型
teamList: [], //团队类型
payTypeList: [{
value: 1,
label: '现金'
......@@ -251,7 +252,7 @@
}, {
value: 3,
label: '外站自理'
}, ]
}]
}
},
computed: {
......@@ -485,10 +486,7 @@
},
},
mounted() {
this.getAllCurrency();
this.getCompanyList();
this.getTeamList();
this.getPriceTeamList();
this.getLineTeamList();
if (!this.OfferArray.length) {
this.createOrderList();
......@@ -509,11 +507,16 @@
this.orderList = this.OfferArray
this.changeTabs()
}
if(this.postConfig.DayNum>0){
if (this.postConfig.DayNum > 0) {
this.createDayTripPrice()
}
},
created() {},
created() {
this.getAllCurrency();
this.getCompanyList();
this.getTeamList();
this.getPriceTeamList();
},
};
</script>
<style>
.travelDinner .cm_hotelTitle {
width: 100%;
text-align: center;
margin-bottom: 20px;
border-bottom: 1px solid #d1d1d1;
padding: 0 20px 10px 20px;
}
.travelDinner .com_SaveBtn {
margin: 10px 20px 0 45%;
}
.travelDinner .ck_goUrl {
color: blue;
cursor: pointer;
margin-left: 10px;
}
.travelDinner .q-mt-lg {
margin-top: 20px
}
.travelDinner .item-poi {
position: relative;
width: 100%;
height: 0;
padding-top: 56.25%;
background-size: cover;
background-position: center;
background-color: #000;
border-radius: 12px;
overflow: hidden;
margin-bottom: 12px;
cursor: pointer;
border: 2px solid transparent;
}
.travelDinner .checkDinner {
border: 2px solid red;
}
.travelDinner .item-poi:hover {
box-shadow: 0px 0px 20px 0px rgba(76, 87, 125, 0.2) !important;
}
.travelDinner .item-poi .container {
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
padding: 8px;
background: linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.5));
}
.travelDinner .UseTypeTitle {
font-size: 10px;
padding: 0 3px;
margin-left: 3px;
}
.travelDinner .UseTypeTitle:first-child {
margin-left: 0;
}
.travelDinner .full-width {
width: 100%;
}
.travelDinner .text-white {
color: #FFF !important;
}
.travelDinner .fixed-p {
position: absolute;
bottom: 2px;
}
.travelDinner .row {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
}
.travelDinner .col {
min-width: 1px;
flex: 1;
min-height: 1px;
}
</style>
<template>
<div class="travelDinner">
<div class="cm_hotelTitle clearfix">
<el-row :gutter="12">
<el-col :span="4">
<el-select filterable v-model="searchParmeters.Province" placeholder="地区" @change="reSearch" clearable
@clear="reSearch">
<el-option v-for="item in ProvinceList" :label='item.Name' :value='item.ID' :key='item.ID'>
</el-option>
</el-select>
</el-col>
<el-col :span="4">
<el-select filterable v-model="searchParmeters.UseType" placeholder="使用类型" @change="reSearch" clearable
@clear="reSearch">
<el-option v-for="item in diningUseTypeList" :label='item.Name' :value='item.ID' :key='item.ID'>
</el-option>
</el-select>
</el-col>
<el-col :span="4">
<el-select filterable v-model="searchParmeters.DiningType" placeholder="餐类型" @change="reSearch" clearable
@clear="reSearch">
<el-option v-for="item in diningTypeList" :label='item.Name' :value='item.ID' :key='item.ID'>
</el-option>
</el-select>
</el-col>
<el-col :span="4">
<el-select filterable v-model="searchParmeters.DiningPriceType" placeholder="餐标" @change="reSearch" clearable
@clear="reSearch">
<el-option v-for="item in diningPriceTypeList" :label='item.Name' :value='item.ID' :key='item.ID'>
</el-option>
</el-select>
</el-col>
<el-col :span="4">
<el-input type="text" v-model="searchParmeters.keywords" @keyup.native.enter="reSearch" clearable
@clear="reSearch" placeholder="关键字"></el-input>
</el-col>
<el-col :span="4">
<input type="button" class="normalBtn" :value="$t('pub.searchBtn')" @click="reSearch()" />
</el-col>
</el-row>
</div>
<div v-loading="loading">
<el-row :gutter="12" class="q-mt-lg" v-if="!loading">
<el-col :span="8" v-for="(x, i) in dataList" :key="i">
<div class="item-poi" :class="x.Checked?'checkDinner':''" @click="setSelectedPoiItem(x)"
:style="{ 'background-image': `url('${x.PicPath.split('?')[0]}')` }">
<div class="container column">
<div class="row items-center">
<template v-if="x.UseTypeList&&x.UseTypeList.length>0">
<el-tag :type="index==0?'danger':index==1?'warning':index==2?'':'info'" size="mini"
class="text-bold UseTypeTitle" v-for="(item,index) in x.UseTypeList" :key="`u_`+i+index">
<template v-if="item.indexOf('团')!=-1">{{ item.replace('团', "")}}</template>
<template v-else>{{ item.replace('常用', "")}}</template>
</el-tag>
</template>
</div>
<div class="col"></div>
<el-tooltip class="item" effect="dark" placement="top">
<div slot="content">
<div class="search-card-detail">
<div class="row items-center">
<div class="sub-title1 col q-mx-md">餐详情</div>
</div>
<el-scrollbar max-height="50vh">
<div class="q-mt-md">
<p>{{ x.Name }}</p>
<div class="q-mt-md row items-center">
<div class="text-small text-info col">地址</div>
<p class="text-small">{{ x.CountryName }}·{{ x.CityName }} {{ x.Address
}}</p>
</div>
<template v-if="x.Tel && x.Tel != ''">
<div class="text-small text-info col q-mt-md">联系电话</div>
<span class="text-small q-mt-sm">{{ x.Tel }}</span>
</template>
<template v-if="x.Url && x.Url != ''">
<div class="text-small text-info col q-mt-md">网址</div>
<a :href="x.Url" target="_blank" class="text-small q-mt-sm">{{ x.Url }}</a>
</template>
<template v-if="x.UseTypeList&&x.UseTypeList.length>0">
<div class="text-small text-info col q-mt-md">适用类型</div>
<el-tag class="q-mt-sm"
:type="subindex==0?'danger':subindex==1?'warning':subindex==2?'':'info'"
:class="[!subindex?'':'q-ml-md']" size="small" v-for="(subitem,subindex) in x.UseTypeList"
:key="`de_`+subindex">
{{subitem}}</el-tag>
</template>
<template v-if="x.PriceList&&x.PriceList.length>0">
<div class="text-small text-info col q-mt-md">套餐价格</div>
<el-tag class="q-mt-sm q-mr-md" size="small" v-for="(subItem,subIndex) in x.PriceList"
:key="`d_p_`+subIndex">
{{subItem.MealName}}
<text>/ {{subItem.MealPrice}}</text>
</el-tag>
</template>
<template v-if="x.Feature && x.Feature != ''">
<div class="text-small text-info col q-mt-md">详细介绍</div>
<span class="text-small q-mt-sm">{{ x.Feature }}</span>
</template>
<template v-if="x.About && x.About != ''">
<div class="text-small text-info col q-mt-md">温馨提示</div>
<span class="text-small q-mt-sm">{{ x.About }}</span>
</template>
<template v-if="x.BookingInfo && x.BookingInfo != ''">
<div class="text-small text-info col q-mt-md">预定须知</div>
<span class="text-small q-mt-sm">{{ x.BookingInfo }}</span>
</template>
</div>
</el-scrollbar>
</div>
</div>
<p class="text-white full-width fixed-p"
style="text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.5); font-size: 12px; vertical-align: bottom;">
{{ x.Name }}
</p>
</el-tooltip>
</div>
</div>
</el-col>
</el-row>
<div class="row">
<div class="col"></div>
<el-pagination layout="prev, pager, next" class="no-bg " hide-on-single-page
:page-size="searchParmeters.pageSize" @current-change="handleSearch" :current-page="searchParmeters.pageIndex"
:total="total" small />
</div>
</div>
<input type="button" class="normalBtn com_SaveBtn" @click="sendCkedHotel()" value="确认" />
</div>
</template>
<script>
export default {
props: ["Country"],
data() {
return {
loading: false,
dataList: [],
searchParmeters: {
keywords: '',
platform: 2,
type: 2,
pageIndex: 1,
pageSize: 9,
Province: "",
DiningType: "",
DiningPriceType: "",
UseType: [],
QType: 2, //ERP查询
},
total: 0,
ckedDinner: {},
ProvinceList: [],
diningPriceTypeList: [], //餐标
diningTypeList: [], //餐类型
diningUseTypeList: [], //适用类型
};
},
methods: {
setSelectedPoiItem(item) {
if (this.dataList && this.dataList.length > 0) {
this.dataList.forEach(item => {
item.Checked = false;
})
}
item.Checked = !item.Checked;
},
//向父组件传递选中酒店
sendCkedHotel() {
var ckDinnerObj = {};
if (this.ckedDinner) {
ckDinnerObj.ID = this.ckedDinner.ID;
ckDinnerObj.Address = this.ckedDinner.Address;
ckDinnerObj.Name = this.ckedDinner.Name;
ckDinnerObj.RealName = this.ckedDinner.RealName;
ckDinnerObj.PayStyle = this.ckedDinner.PayStyle;
ckDinnerObj.Tel = this.ckedDinner.Tel;
ckDinnerObj.RebateRatio = this.ckedDinner.RebateRatio;
ckDinnerObj.RebateCount = this.ckedDinner.RebateCount;
}
this.$emit("childDinner", ckDinnerObj);
},
//获取日本下面的市->下拉框用
getProvinceList() {
let msg = {
Id: this.Country
};
this.apipost("dict_post_Destination_GetChildList", msg, res => {
if (res.data.resultCode == 1) {
this.ProvinceList = res.data.data;
} else {
this.Error(res.data.message);
}
},
err => {}
);
},
//获取使用类型
getUseType() {
this.apipost("dining_get_GetDiningUseType", "", res => {
this.diningUseTypeList = res.data.data;
})
},
//获取餐类型
getDiningType() {
this.apipost("dining_get_GetDiningType", "", res => {
this.diningTypeList = res.data.data;
})
},
//获取价格类型
getDiningPriceType() {
this.apipost("dining_get_GetDiningPriceType", "", res => {
this.diningPriceTypeList = res.data.data;
});
},
//查询餐厅信息
getDmcSourcePage() {
this.loading = true;
this.apipost("hotel_post_GetDmcSourcePage", this.searchParmeters, res => {
this.loading = false;
if (res.data.resultCode == 1) {
this.dataList = res.data.data.pageData;
this.total = res.data.data.count;
}
});
},
reSearch() {
this.searchParmeters.pageIndex = 1;
this.getDmcSourcePage();
},
handleSearch(val) {
this.searchParmeters.pageIndex = val;
this.getDmcSourcePage();
}
},
created() {
this.getProvinceList();
this.getDiningPriceType();
this.getUseType();
this.getDiningType();
this.getDiningType();
},
mounted() {
}
};
</script>
......@@ -58,13 +58,15 @@
height: auto !important;
}
.dinnerBtn .el-button{
.dinnerBtn .el-button {
width: 10px !important;
}
.dinnerBtn .el-icon-search{
}
.dinnerBtn .el-icon-search {
width: 10px !important;
margin-left:-6px;
}
margin-left: -6px;
}
</style>
<template>
<div class="Traveltrip-item-box">
......@@ -94,12 +96,14 @@
<img crossorigin="Anonymous" src="../../../assets/img/daily_lunch.png">
</td>
<td width="140" valign="middle">
<template v-if="PostConfig.LineId==14">
<el-input placeholder="请输入餐厅名称" v-model="dayObj.DinnerArray[1].DinnerName" class="input-with-select dinnerBtn">
<el-button slot="append" icon="el-icon-search" @click="getDmcSourcePage(dayObj.DinnerArray[1].DinnerName)"></el-button>
<!-- <template v-if="PostConfig.LineId==14||PostConfig.LineId==118">
<el-input placeholder="请输入餐厅名称" v-model="dayObj.DinnerArray[1].DinnerName"
class="input-with-select dinnerBtn">
<el-button slot="append" icon="el-icon-search" @click="showDiningDig(dayObj.DinnerArray[1])">
</el-button>
</el-input>
</template>
<template v-else>
<template v-else> -->
<el-select v-if="!dayObj.isRead&&IsDirect==1" class="" :placeholder="$t('pub.pleaseSel')" filterable
v-model="dayObj.DinnerArray[1].DinnerId" @visible-change="getDinnerList($event)"
@change="changeDinnerList(dayObj.DinnerArray[1])">
......@@ -109,8 +113,7 @@
<span class="TC-realSpan">{{item.RealName}}</span>
</el-option>
</el-select>
</template>
<!-- </template> -->
<el-input type="text" v-model="dayObj.DinnerArray[1].DinnerName" class=""
v-if="!dayObj.isRead&&IsDirect==0" @change="noDirectDinnerChange(1)"></el-input>
<span class="TC-hotelName" v-if="dayObj.isRead">
......@@ -148,8 +151,8 @@
<!--酒店-->
<el-select v-if="!dayObj.isRead &&IsDirect==1&&TeamType!=2" class="Ht_hotelSelect" size="mini"
v-model="HotelChooseArray" multiple :multiple-limit="(TeamType==0||TeamType==3)?3:1"
@visible-change="getHotelList($event)" @change="changeHotelList()" filterable :placeholder="$t('pub.pleaseSel')"
:disabled="IsOpenHotel==1?true:false">
@visible-change="getHotelList($event)" @change="changeHotelList()" filterable
:placeholder="$t('pub.pleaseSel')" :disabled="IsOpenHotel==1?true:false">
<el-option v-for="item in QHotelList" :label="item.Name" :value="item.ID" :key="item.ID">
<span style="float: left">{{ getHotelItemLabel(item) }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.Inventory }}</span>
......@@ -157,7 +160,7 @@
</el-select>
<span style="color:red;font-weight:bold;" v-if="IsOpenHotel==1">※ 地接已关闭酒店操作,如需修改请联系地接OP.</span>
<span v-if="dayObj.isRead&&IsDirect==1">
<span v-for="item in hotelArray">
<span v-for="(item,index) in hotelArray" :key="`h_`+index">
{{item.HotelName}}
</span>
<span v-if="hotelArray.length>0">&nbsp;/或同级</span>
......@@ -171,40 +174,16 @@
</tr>
</table>
</div>
</div>
<el-dialog custom-class='w750' :title="dialogTitle" :visible.sync="outerVisible" center >
<table class="singeRowTable" border="0" cellspacing="0" cellpadding="0">
<tr v-for="(item,index) in DinnerByKeyList">
<td>{{item.MenuName}}</td>
<td>{{item.MenuUrl}}</td>
<td>{{item.Tier | tierFormat(item.Tier)}}</td>
<td>{{item.MenuStatus==0?'开启':'关闭'}}</td>
<td>
{{item.GroupingCode}}
</td>
<td>
{{item.Sort}}
</td>
<td>
<el-row>
<el-tooltip class="item" effect="dark" :content="$t('pub.updateMsg')" placement="top-start">
<el-button @click="outerVisible = true,dialogTitle='修改权限菜单',updateData(index,item.MenuId)" type="primary"
icon="el-icon-edit" circle></el-button>
</el-tooltip>
</el-row>
</td>
</tr>
</table>
<el-pagination background @current-change="handleCurrentChange" :current-page.sync="currentPage"
layout="total,prev, pager, next, jumper" :page-size="searchParmeters.pageSize" :total='totalDinnerByKeyList'>
</el-pagination>
<el-dialog custom-class='w750' :title="dialogDiningTitle" :visible.sync="isShowDiningDig" center>
<travelDinner :Country="651"></travelDinner>
</el-dialog>
</div>
</template>
<script>
import travelDinner from '@/components/commonPage/travelDinner'
export default {
props: ["PostConfig","dayObj", "DayList", "CurrentIndex", "WarmTripDescribe", "IsDirect", "subConfig", "TeamType",
props: ["PostConfig", "dayObj", "DayList", "CurrentIndex", "WarmTripDescribe", "IsDirect", "subConfig", "TeamType",
"IsOpenHotel" //0可以添加删除酒店,1-不能修改酒店信息
],
data() {
......@@ -221,39 +200,22 @@
otherDinner: [],
hotelHotSpringDinner: [],
isFirstInitDinner: false, //初始含有酒店列表,加载完酒店数据在初始化餐厅列表
searchParmeters:{
keywords: '',
platform: 2,
type: 2,
pageIndex: 1,
pageSize: 6,
Province: 0,
DiningType: 0,
DiningPriceType: 0,
UseType: [0]
},
DinnerByKeyList:[],
DinnerByKeyList: [],
totalDinnerByKeyList: 0,
checlItem: {},
dialogDiningTitle: "选择餐厅",
isShowDiningDig: false, //是否显示餐弹窗
};
},
components: {
travelDinner: travelDinner,
},
methods: {
//查询餐厅信息
getDmcSourcePage(keywords){
if (keywords === "") {
return ;
} else {
if(str.trim() === ""){
return ;
}
}
this.apipost("hotel_post_GetDmcSourcePage", msg, res => {
if (res.data.resultCode == 1) {
this.DinnerByKeyList = res.data.data.pageData;
this.DinnerByKeyList = res.data.data;
}
});
showDiningDig(item) {
this.checlItem = item;
this.isShowDiningDig = true;
},
// 非直采酒店
noDirectHotelChange: function () {
if (this.hotelArray[0].MD5Sign === '') {
......
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