<style>
  .WebSiteEdit {
    width: 100%;
    height: calc(100% - 54px);
    min-width: 0;
    background-color: #f3f3f3;
  }

  .WebSiteContent {
    height: 100%;
    display: flex;
    width: 100%;
  }

  .WebSite_Left {
    background-color: #dadadacc;
    padding: 20px;
    overflow-y: auto;
    width: 250px;
    height: calc(100% + 54px);
    margin-top: -54px;
    top: 0;
  }

  .WebSite_right {
    margin-right: 20px;
    flex: 1;
    position: relative;
    overflow-y: auto;
    border: 1px solid #d1d1d1;
    border-top: none;
    padding-top: 15px;
  }

  [flex] {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex
  }

  [flex~="box:first"]>:first-child,
  [flex~="box:last"]>:last-child,
  [flex~="box:justify"]>:first-child,
  [flex~="box:justify"]>:last-child {
    width: auto;
    -webkit-box-flex: 0;
    -webkit-flex-grow: 0;
    -ms-flex-positive: 0;
    flex-grow: 0;
    -webkit-flex-shrink: 0;
    -ms-flex-negative: 0;
    flex-shrink: 0
  }

  .WebSite_right_preview {
    width: 100%;
    /* overflow-y: auto;
    min-height: 725px;
    height: 725px; */
    /* margin: 0 20px; */
    height: 100%;
    background-color: #ddd;
  }

  .WebSiteEdit .temp-list-wrap {
    margin-top: 20px;
  }

  .WebSiteEdit .temp-list-wrap img {
    display: block;
    width: 210px;
  }

  .WebSiteEdit .temp-list-wrap div {
    margin-bottom: 20px;
    cursor: move;
  }

  .WebSiteEdit .temp-list-item {
    position: relative;
  }

  .WebSiteEdit .temp-font {
    position: absolute;
    width: 210px;
    height: 100%;
    background: rgba(0, 0, 0, 0.3);
    color: #fff;
    font-size: 20px;
    top: 0;
    display: flex;
    align-items: center;
    justify-content: center;
  }

  .WebSite_item {
    display: flex;
    border-bottom: 1px solid #f6f6f6;
    background-color: #fff;
    padding-bottom: 5px;
  }

  .diy-component-preview .WebSite_item .temp-img {
    flex-basis: calc(60% - 60px);
    cursor: move;
  }

  .temp-img img {
    display: block;
    width: 100%;
    user-select: none;
    pointer-events: none;
  }

  .WebSite_item .temp-info {
    padding: 15px 20px 0;
    flex-basis: 40%;
    background-color: #fff;
  }

  .WebSite_item .temp-title {
    margin: 0;
    font-size: 18px;
    font-weight: 500;
  }

  .temp-subtitle {
    margin: 0;
    width: 280px;
    padding-top: 2px;
    font-size: 15px;
    font-weight: 700;
    color: #999;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .diy-component-edit {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 465px;
    right: 0;
    background: #fff;
    padding: 20px;
    overflow: auto;
    min-width: 650px;
    padding-right: 20%;
  }

  .group-tool {
    margin-top: 20px;
  }

  .Movie_sj {
    color: #333;
    font-size: 14px;
    margin-left: 20px;
  }

  .ui-sortable-handle {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    flex-basis: 40px;
    background-color: #eee;
    cursor: move;
  }

  .ui-sortable-handle i {
    font-size: 25px;
  }

</style>
<template>
  <div class="WebSiteEdit">
    <div class="WebSiteContent">
      <div class="WebSite_right" draggable="true" @drop="drop($event,0)">
        <div class="WebSite_right_preview" @drop="drop($event,0)">
          <div v-for="(item,index) in dataList" draggable="true" @drop="drop($event,index)"
            @dragstart="handleDragStart($event, item)" @dragover.prevent="handleDragOver($event, item)"
            @dragenter="handleDragEnter($event, item)" @dragend="handleDragEnd($event, item)" :key="index">
            <div class="diy-component-preview">
              <div class="WebSite_item">
                <div class="ui-sortable-handle">
                  <i class="iconfont icon-Arrowsdowntopmove"></i>
                </div>
                <div class="temp-img">
                  <img v-if="item.plugData&&item.plugData.CoverImg" :src="item.plugData.CoverImg" alt="" />
                </div>
                <div class="temp-info">
                  <h2 class="temp-title">{{item.plugData.Title}}</h2>
                  <h3 class="temp-subtitle">
                    <template v-if="item.Id=='white_label_video'">
                      {{item.plugData.Describe}}
                    </template>
                  </h3>
                  <div class="group-tool">
                    <template v-if="item.Id=='white_label_other'&&item.plugData.Type==6">
                    </template>
                    <template v-else>
                      <el-button type="primary" size="small" @click="showDialog(item)">{{$t('pub.edit')}}</el-button>
                    </template>
                    <el-button type="danger" size="small" @click="deletePlug(index)">{{$t('objFill.v101.shanchu')}}</el-button>
                    <span class="Movie_sj">{{$t('Operation.Op_shangjia')}}</span>
                    <el-switch v-model="item.isShelves" @change="getSearchCount(item)" :active-value="1" :inactive-value="0" active-color="#13ce66"
                      inactive-color="#dcdfe6"></el-switch>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <div class="WebSite_Left">
        <el-select v-model="templateId" @change="getTemplateDetails()">
          <el-option :label="$t('pub.pleaseSel')" :value="0" :key="0">
          </el-option>
          <el-option v-for="item in templateList" :label="item.TemplateName" :value="item.Id" :key="item.Id">
          </el-option>
        </el-select>
        <div class="temp-list-wrap">
          <div v-for="(subItem,subIndex) in detailsList" class="temp-list-item" :key="subIndex" draggable="true"
            @dragstart="dragLeftStart($event,subItem)" @dragend="dragendLeft($event,subItem)">
            <img v-if="subItem.TemplateData&&subItem.TemplateData.CoverImg" :src="subItem.TemplateData.CoverImg"
              :alt="subItem.SubTemplateName" />
            <div class="temp-font">{{subItem.SubTemplateName}}</div>
          </div>
        </div>
      </div>
    </div>
    <el-dialog :title="commonTitle" :visible.sync="isShowDialog" width="1000px">
      <!--视频-->
      <plugvideodialog v-if="currentEditItem.Id=='white_label_video'" :plugData="currentEditItemData"></plugvideodialog>
      <!--轮播图-->
      <sliderdialog v-if="currentEditItem.Id=='white_label_slider'" :plugData="currentEditItemData"></sliderdialog>
      <!-- 图片 -->
      <picturedialog v-if="currentEditItem.Id=='white_label_picture'" :plugData="currentEditItemData"></picturedialog>
      <!-- 二维码 -->
      <qrcodedialog v-if="currentEditItem.Id=='white_label_qrcode'" :plugData="currentEditItemData"></qrcodedialog>
      <!-- 背景图 -->
      <backgrounddialog v-if="currentEditItem.Id=='white_label_background_article'" :plugData="currentEditItemData">
      </backgrounddialog>
      <!-- 出团表 -->
      <groupdialog v-if="currentEditItem.Id=='group'" :plugData="currentEditItemData"></groupdialog>

      <!-- 段落标题   -->
      <sectiondialog v-if="currentEditItem.Id=='white_label_paragraph_title'" :plugData="currentEditItemData">
      </sectiondialog>
      <!-- 段落链接 -->
      <paragraphLinkdialog v-if="currentEditItem.Id=='white_label_link_paragraph'" :plugData="currentEditItemData">
      </paragraphLinkdialog>
      <!-- 图片链接 -->
      <imglinkdialog v-if="currentEditItem.Id=='white_label_link_picture'" :plugData="currentEditItemData">
      </imglinkdialog>
      <!-- 挑选自有行程 图片 -->
      <b2bdialog v-if="currentEditItem.Id=='b2b'" :plugData="currentEditItemData"></b2bdialog>
      <!-- 挑选自有行程 段落链接 -->
      <b2blinkdialog v-if="currentEditItem.Id=='b2b_LinkP'" :plugData="currentEditItemData"></b2blinkdialog>
      <!-- 挑选自有行程 图片链接 -->
      <linkpicturedialog v-if="currentEditItem.Id=='b2b_LinkPicture'" :plugData="currentEditItemData">
      </linkpicturedialog>
      <!-- 搜寻区块 banner -->
      <bannerdialog v-if="currentEditItem.Id=='search_b'" :plugData="currentEditItemData"></bannerdialog>
      <!-- 搜寻区块 轮播淡出 -->
      <searchfdialog v-if="currentEditItem.Id=='search_sf'" :plugData="currentEditItemData"></searchfdialog>
      <!-- 搜寻区块 轮播横 -->
      <searchsdialog v-if="currentEditItem.Id=='search_s'" :plugData="currentEditItemData"></searchsdialog>
      <!-- 搜寻区块 其他 -->
      <searcheldialog v-if="currentEditItem.Id=='search_el'" :plugData="currentEditItemData"></searcheldialog>
      <!-- 自定版型 其他 -->
      <otherdialog v-if="currentEditItem.Id=='white_label_other'" :plugData="currentEditItemData"></otherdialog>
      <!-- 首页组件1 -->
      <indexNav v-if="currentEditItem.Id=='index_nav'" :plugData="currentEditItemData"> </indexNav>
      <!-- 首页组件2 -->
      <indexSlider1 v-if="currentEditItem.Id=='index_slider1'" :plugData="currentEditItemData"> </indexSlider1>
      <!-- 首页组件3 -->
      <indexRoll1 v-if="currentEditItem.Id=='index_roll1'" :plugData="currentEditItemData"> </indexRoll1>
      <!-- 首页组件4 -->
      <indexRoll2 v-if="currentEditItem.Id=='index_roll2'" :plugData="currentEditItemData"> </indexRoll2>
      <span slot="footer" class="dialog-footer">
        <el-button @click="isShowDialog = false" size="small">{{$t('pub.cancelBtn')}}</el-button>
        <el-button type="danger" size="small" @click="setSubPlugData()">{{$t('pub.sureBtn')}}</el-button>
      </span>
    </el-dialog>
  </div>
</template>
<script>
  import plugvideodialog from "../WebSet/plug-in/video_dialog.vue"
  import sliderdialog from "../WebSet/plug-in/slider_dialog.vue"
  import picturedialog from "../WebSet/plug-in/picture_dialog.vue"
  import qrcodedialog from "../WebSet/plug-in/qrcode_dialog.vue"
  import backgrounddialog from "../WebSet/plug-in/background_dialog.vue"
  import sectiondialog from "../WebSet/plug-in/sectionTitle_dialog.vue"
  import paragraphLinkdialog from "../WebSet/plug-in/paragraphLink_dialog.vue"
  import imglinkdialog from "../WebSet/plug-in/imglink_dialog.vue"
  import b2bdialog from "../WebSet/plug-in/b2b_dialog.vue"
  import b2blinkdialog from "../WebSet/plug-in/b2blink_dialog.vue"
  import linkpicturedialog from "../WebSet/plug-in/linkpicture_dialog.vue"
  import groupdialog from "../WebSet/plug-in/group_dialog.vue"
  import bannerdialog from "../WebSet/plug-in/banner_dialog.vue"
  import searchfdialog from "../WebSet/plug-in/searchf_dialog.vue"
  import searchsdialog from "../WebSet/plug-in/searchs_dialog.vue"
  import searcheldialog from "../WebSet/plug-in/searchel_dialog"
  import otherdialog from "../WebSet/plug-in/other_dialog"
  import indexNav from "../WebSet/home/indexNav"
  import indexSlider1 from "../WebSet/home/indexSlider1"
  import indexRoll1 from "../WebSet/home/indexRoll1"
  import indexRoll2 from "../WebSet/home/indexRoll2"
  export default {
    props: ["templateData"],
    data() {
      return {
        //模板列表
        templateList: [],
        //模板编号
        templateId: 0,
        //数据列表
        dataList: [],
        //模板详情列表
        detailsList: [],
        isShowDialog: false,
        //当前编辑项插件数据
        currentEditItemData: {},
        //当前编号的插件
        currentEditItem: {},
        dragging: null,
        commonTitle: '',
        dragObj: {},
        tempCountry:[
          {
            name:this.$t('objFill.v101.FinancialModule.riben'),
            val:1
          },
          {
            name:this.$t('objFill.v101.hanguo'),
            val:2
          },
          {
            name:this.$t('objFill.v101.aozhou'),
            val:3
          },
          {
            name:this.$t('objFill.v101.dongnanya'),
            val:4
          },
          {
            name:this.$t('objFill.v101.ouzhou'),
            val:5
          },
          {
            name:this.$t('objFill.v101.zhongguodlu'),
            val:6
          },
          {
            name:this.$t('objFill.v101.FinancialModule.taiwan'),
            val:7
          },
          {
            name:this.$t('objFill.v101.beimei'),
            val:8
          },
          {
            name:this.$t('objFill.v101.zhongdongyafei'),
            val:9
          }
        ],
        countryId:1,
        isDraggable: true,
        realTemplateList:[]
      };
    },
    created() {},
    components: {
      plugvideodialog,
      sliderdialog,
      picturedialog,
      qrcodedialog,
      backgrounddialog,
      groupdialog,
      sectiondialog,
      paragraphLinkdialog,
      imglinkdialog,
      b2bdialog,
      b2blinkdialog,
      linkpicturedialog,
      bannerdialog,
      searchfdialog,
      searchsdialog,
      searcheldialog,
      otherdialog,
      indexNav,
      indexSlider1,
      indexRoll1,
      indexRoll2,
    },
    methods: {
      changeCountry(){
        if(this.countryId=="1"){
          this.templateList=this.realTemplateList
        }else{
          this.templateList=[]
          this.Error(this.$t('objFill.v101.gaimobzzwhu'))
        }
        this.templateId=0
        this.detailsList=[]
      },
      dragendLeft(e, item) {
        var obj = {
          Id: item.TemplateKey,
          plugData: item.TemplateData,
          isShelves: 0
        };
        this.dragObj=obj;
        this.drop(e,this.dataList.length);
      },
      //右边上下拖动开始
      handleDragStart(e, item) {
        if (this.isDraggable) {
          this.dragging = item;
        }
      },
      handleDragEnd(e, item) {
        if (this.isDraggable) {
          this.dragging = null
        }
      },
      //首先把div变成可以放置的元素,即重写dragenter/dragover
      handleDragOver(e) {
        if (this.isDraggable) {
          e.dataTransfer.dropEffect = 'move' // e.dataTransfer.dropEffect="move";//在dragenter中针对放置目标来设置!
        }
      },
      handleDragEnter(e, item) {
        if (this.isDraggable) {
          e.dataTransfer.effectAllowed = "move" //为需要移动的元素设置dragstart事件
          if (item === this.dragging) {
            return
          }
          const newItems = [...this.dataList]
          const src = newItems.indexOf(this.dragging)
          const dst = newItems.indexOf(item)
          newItems.splice(dst, 0, ...newItems.splice(src, 1))
          this.dataList = newItems
        }
      },
      //右边上下拖动结束
      //显示弹窗
      showDialog(item) {
        this.isShowDialog = true;
        this.currentEditItem = item;
        this.commonTitle = item.plugData.Title;
        this.currentEditItemData = JSON.parse(JSON.stringify(item.plugData));
        if(!this.currentEditItemData.BottomList) this.$set(this.currentEditItemData,'BottomList',[])
        if(!this.currentEditItemData.MBgColor) this.$set(this.currentEditItemData,'MBgColor','')
        if(!this.currentEditItemData.MLogo) this.$set(this.currentEditItemData,'MLogo','')
      },
      //获取数据
      setSubPlugData() {
        this.isShowDialog = false;
        this.currentEditItem.plugData = JSON.parse(JSON.stringify(this.currentEditItemData));
      },
      //删除插件
      deletePlug(index) {
        var that = this;
        this.Confirm(that.$t('objFill.v101.hote.shifysccsj'), function () {
          that.dataList.splice(index, 1);
        })
      },
      //从左拖动到右边开始
      dragLeftStart(ev, item) {
        this.isDraggable = false;
        var obj = {
          Id: item.TemplateKey,
          plugData: item.TemplateData,
          isShelves: 0
        };
        this.dragObj = obj;
        if (this.dataList.length == 0) {
          if (!this.isDraggable) {
            this.dataList.push(this.dragObj);
            this.isDraggable = true;
          }
        }
      },
      //从左拖动到右边结束
      drop(ev, index) {
        if (!this.isDraggable) {
          this.dataList.splice(index, 0, JSON.parse(JSON.stringify(this.dragObj)));
        }
        this.dragObj = {};
        this.isDraggable = true;
      },
      //获取下拉框
      getTemplate() {
        this.apipost(
          "ws_get_GetTemplateList", {},
          res => {
            if (res.data.resultCode == 1) {
              this.realTemplateList = res.data.data;
              this.templateList=this.realTemplateList
            } else {
              this.Error(res.data.message);
            }
          },
          err => {}
        );
      },
      //获取模板详情
      getTemplateDetails() {
        this.apipost(
          "ws_get_GetTemplateDetailsList", {
            TemplateId: this.templateId
          },
          res => {
            if (res.data.resultCode == 1) {
              this.detailsList = res.data.data;
            } else {
              this.Error(res.data.message);
            }
          },
          err => {}
        );
      },
      //数据改变
      initData(tempData) {
        this.dataList = tempData;
      },
      //遍历搜寻框只能上架一个
      getSearchCount(item){
        var isCount=0;
        this.dataList.forEach(x=>{
          if((x.Id=='search_s'|| x.Id=='search_sf' )&&x.isShelves==1){
            isCount++;
          }
        })
        if(isCount>1){
          this.Error(this.$t('objFill.v101.souxlubbhycz'));
          item.isShelves=0
        }
        this.$forceUpdate();
      }
    },
    mounted() {
      this.getTemplate();
    },
    watch: {
      dataList: {
        handler: function (val, oldVal) {
          this.$emit("getNewTemplateData", JSON.parse(JSON.stringify(this.dataList)));
        },
        deep: true
      },
    }
  };

</script>