<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>