<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> 小时 <el-input :disabled="isOpenGroup" type="text" class="w120" v-model="subItemObj.childItem.UseTimeMinutes" @keyup.native="checkInteger(subItemObj.childItem,'UseTimeMinutes')"></el-input> 分钟 </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>