<template>
  <div class="tabForm">
    <div class="tabForm_header">
      <div class="table_headerBtun" v-if="queryData.buttonList">
        <el-button type="primary" size="small" plain @click="handleQuery(item)" v-for="(item,index) in queryData.buttonList.split('')" :key="index">{{item | btnConversion}}</el-button>
        <el-button type="primary" size="small" plain @click="handleQuery('sx')">刷新</el-button>
        <el-button type="primary" size="small" plain @click="handleQuery('fh')">返回</el-button>
      </div>
    </div>
    <!-- 内容 -->
    <div class="table_nav">
      <el-collapse v-model="activeNames">
        <el-collapse-item :title="item.columnComment" :name="index" v-for="(item,index) in queryData.showData" :key="index" class="eitde">
          <el-form :model="queryParams" ref="queryForm" :inline="true" label-width="120px">
            <el-row :gutter="0">
              <el-col :span="24"  :key="index">
                  <dynamic-forms :ref="items.columnName" :config="queryParams" @inputs = "changeFn" :formConfig="items" v-for="(items,indexs) in item.hrChildren" :key='indexs' />
              </el-col>
            </el-row>
          </el-form>
        </el-collapse-item>
        <!-- 列表 -->
        <el-collapse-item :title="title" name="index"  class="eitde" v-if="tabShoes">
          <div class="ppl">
            <p v-for="(item,index) in tabldie" :key="index" @click="enditTab(index)">
              <img src="../../../assets/images/icon_tbtab_normal.png" alt="" class="index_headerImg" v-if="numtab !== index">
              <img src="../../../assets/images/icon_tbtab_selected.png" alt="" class="index_headerImg" v-if="numtab == index">
              <span :class="[index == numtab ? 'span' : '']">{{item.tableComment}}</span>
            </p>
          </div>
          <el-divider></el-divider>
          <el-table stripe v-loading="loading" :data="postList.rows" @selection-change="handleSelectionChange">
            <el-table-column :label="item.columnComment" align="center" :prop="item.columnName" v-for="(item,index) in postList.tableHeadList" :key="index" />
          </el-table>
          <div class="index_haderPagin">
            <pagination
              v-show="total>0"
              :total="total"
              :page.sync="queryParamslist.pageNo"
              :limit.sync="queryParamslist.pageSize"
              @pagination="foremliseju"
            />
           <!-- <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page.sync="currentPage3"
              :page-size="queryParamslist.pageSize" layout="prev, pager, next, jumper" v-show="total>0"
      :total="total" @pagination="foremliseju">
            </el-pagination> -->
          </div>
        </el-collapse-item>

      </el-collapse>
    </div>
  </div>
</template>

<script>
  import {
    getTableQuery,
    getObject,
    geteditindeTab,
    listIndex,
    delMenutabform,
    tableSubimt, tableSubimtanit, addbjectSave
  } from '@/api/system/form.js'

  export default {
    name: "index",
    data() {
      return {
        num: 0,
       // 总条数
        total: 0,
        loading:true,
        tabList: {},
        currentPage3: 0,
        activeNames: [1],
        title: '列表',
        objParams: {
          table: 'obj_test',
          fixedData: {
            id: -1
          },
          isUi:true
        },
        queryData: {},
        // 查询参数
        queryParams: {
          dictName: undefined,
          dictType: undefined,
          status: undefined
        },
        queryParamslist: {
          pageNo: 1,
          pageSize: 10,
          orderBy:'create_time desc',
          table: '',
        },
        labletit: '查询参数1233',
        surlable: '实际数据库表',
        postList: {},
        numtab: 0,
        tabldie:[],
        xidugje: '',
        tabShoes:false,//tab 显示隐藏
        tableZbietabg:{
          table:'sys_user'
        },
        forme:{
          table:'',
          fixedData:{}
        },
        formeanti:{
          table:'',
          commitData:[],
        },
        formy:{
          id:0,
          status:1
        },
        // 删除参数
        deledlid:{
          table:'',
          idList:[]
        }
      };
    },
    filters:{
      btnConversion(val) {
        switch(val){
          case 'A':
          return '新增';
          case 'M':
          return '修改';
          case 'D':
          return '删除';
          case 'Q':
          return '查询';
          case 'S':
          return '提交';
          case 'U':
          return '反提交';
          case 'I':
          return '导入';
          case 'E':
          return '导出';
        }
      }
    },
    mounted() {
      this.formeanti.table = this.$route.query.tables
      this.forme.table = this.$route.query.tables
      this.forme.objId = this.$route.query.id
      this.formy.id = this.$route.query.id
      this.tableZbietabg.table = this.$route.query.tables
      this.objParams.table = this.$route.query.tables
      this.objParams.fixedData.id = this.$route.query.id
      this.deledlid.table = this.$route.query.tables
      this.deledlid.idList.push(this.$route.query.id)
      this.queryParamslist.table = this.$route.query.tables
      this.init()
      this.edingelsietab()
    },
    methods: {
      handleCurrentChange() {

      },
      handleSizeChange() {

      },
      handleSelectionChange() {

      },
      headerBtn(item) {
        switch(item) {
          case 'A': {
            return
          }
          case 'M': {
            return
          }
          case 'D': {
            return
          }
          case 'Q': {
            return
          }
          case 'S': {
            return
          }
          case 'U': {
            return
          }
          case 'E': {
            return
          }
        }
      },
      init() {
        getObject(this.objParams).then(res => {
          console.log(res)
          let data = res.data
          this.queryData = data
          if(this.xidugje == 'sx'){
            if(res.code == 200){
              this.msgSuccess("操作成功");
            }
          }
        })
      },
      // tab数据
      edingelsietab(){
        geteditindeTab(this.tableZbietabg).then(response => {
          if(response.data.ref.length !==0){
            this.tabldie = response.data.ref
            this.tabShoes = true
            this.foremliseju()
          }else{
            this.tabShoes = false
          }
          // this.msgSuccess("反提交成功");
          // this.open = false;
          // this.getList();
        });
      },
      // 列表数据
      foremliseju(){
       listIndex(this.queryParamslist).then(res => {
         console.log(res)
         let data = res.data
         this.postList = data
         this.loading = false
         this.total = res.data.total - 0
         console.log(this.total)
         console.log(this.postList,567)
       })
      },
      // tab点击
      tabSbu(index) {
        this.num = index
      },
      enditTab(index) {
        this.numtab = index
        this.queryParamslist.table = this.tabldie[index].tableName
        this.foremliseju()
      },
      changeFn(obj) {
        for(let key in obj){
          this.queryParams[key] = obj[key]
        }
      },
      resetQuery() {

      },
      /** 搜索按钮操作 */
      handleQuery(index) {
        if(index == 'fs'){
          this.$router.go(-1)
          return
        }else if(index == 'sx'){
          this.xidugje = 'sx'
          this.init()
          return
        }
         for(let item of this.queryData.showData){
           for(var i = 0 ; i < item.hrChildren.length ; i++){
             if(item.hrChildren[i].htmlType == 'checkbox' || item.hrChildren[i].htmlType == 'imageUpload' || item.hrChildren[i].htmlType == 'fileUpload'){
               this.queryParams[item.hrChildren[i].columnName] = this.$refs[item.hrChildren[i].columnName][0].config
             } else{
               this.queryParams[item.hrChildren[i].columnName] = this.$refs[item.hrChildren[i].columnName][0].config[item.hrChildren[i].columnName]
             }
           }
         }
         this.queryParams.image = JSON.stringify(this.queryParams.image)
         this.queryParams.file = JSON.stringify(this.queryParams.file)
         console.log(this.queryParams)
         if(index == 'D'){
           //删除
           this.handleDelete(this.deledlid)
         }else if(index == 'S'){
           //提交  保存
            // this.formeanti.table = 'obj_test'
            this.formeanti.commitData = []
            this.formy.status = 1
            // this.formy.id = 0
            this.formeanti.commitData.push(this.formy)
            console.log(this.formeanti)
           this.antiSubmission()
         }else if(index == 'U'){
           //反提交  保存
            // this.formeanti.table = 'obj_test'
            this.formeanti.commitData = []
            this.formy.status = 2
            // this.formy.id = 0
            this.formeanti.commitData.push(this.formy)
            console.log(this.formeanti)
           this.antiSubmission()
         }else if(index == 'M'){
           // 修改
           // this.forme.table = 'obj_test'
           // this.forme.objId = 1
           this.forme.fixedData = this.queryParams
           this.submitForm()
         }else if(index == 'A'){
           //新增
           // this.forme.table = 'obj_test'
           // this.forme.objId = -1
           
           this.forme.fixedData = this.queryParams
           this.submitForm()
         }

        console.log(this.forme)
        // this.getList();
      },
     /** 新增 修改提交按钮 */
     submitForm: function() {
             addbjectSave(this.forme).then(response => {
               this.msgSuccess("保存成功");
               this.open = false;
               this.$router.go(-1)
               // this.getList();
             });
     },
     // 提交反提交
     antiSubmission(){
       if (this.formy.status == 1) {
         // 提交
         tableSubimt(this.formeanti).then(response => {
           this.msgSuccess("提交成功");
           this.$router.go(-1)
           // this.open = false;
           // this.getList();
         });
       } else if(this.formy.status == 2){
         // 反提交
         tableSubimtanit(this.formeanti).then(response => {
           this.msgSuccess("反提交成功");
           this.$router.go(-1)
           // this.open = false;
           // this.getList();
         });
       }
     },
     //删除
     handleDelete(index) {
       this.$confirm('是否确认删除', "警告", {
           confirmButtonText: "确定",
           cancelButtonText: "取消",
           type: "warning"
         }).then(function() {
           return delMenutabform(index);
         }).then(() => {
           // this.getList();
           this.msgSuccess("删除成功");
           this.$router.go(-1)
         })
     }

    },
  };
</script>

<style lang="scss">
  .tabForm {
    .el-collapse-item__content {
      padding: 0;
    }

    .table_nav {
      .el-collapse-item__wrap {
        border-bottom: 0;
      }

      .el-collapse-item__header {
        border-bottom: 0;
        font-size: 15px;
        font-family: PingFang SC;
        font-weight: bold;
        color: #3C8DBC;
        line-height: 36px;
      }

      // .el-form-item__content {
      //   width: 55%;
      // }

      .el-collapse {
        border-top: 0;
      }

      .el-divider--horizontal {
        margin-top: 0;
      }

      .eitde {
        background-color: #fff;
        border-radius: 6px;
        padding: 23px;
        margin-bottom: 20px;
      }
    }
  }
</style>

<style scoped lang="scss">
  .tabForm {
    background-color: #eef0ff;
    height: 100%;
    padding: 20px;

    p {
      margin: 0;
    }

    // 头部
    .tabForm_header {
      background-color: #fff;
      border-radius: 6px;
      padding: 23px;
      margin-bottom: 20px;

    }

    // 内容
    .table_nav {

      // background-color: #fff;
      // border-radius: 6px;
      // padding: 23px;
      .ppl {
        display: flex;
        height: 38px;

        p {
          position: relative;
          width: 113px;
          height: 38px;

          img {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            // z-index: -1;
          }

          span {
            width: 100%;
            position: absolute;
            top: 0;
            left: 0;
            // transform: translate(-50%);
            text-align: center;
            line-height: 38px;
            font-size: 15px;
            font-family: PingFang SC;
            font-weight: bold;
            color: #aaa;
          }

          .span {
            color: #3C8DBC;
          }
        }
      }
    }
  }

  // tab
  .index_headetab {
    display: flex;
    border-bottom: 1px solid #E5E5E5;
    height: 53px;
    // padding-top: 20px;
    padding-bottom: 10px;
    margin-bottom: 20px !important;

    span {
      width: 70px;
      text-align: center;
      line-height: 53px;
      height: 53px;
      font-size: 15px;
      font-family: PingFang SC;
      font-weight: bold;
      color: #666;
      position: relative;
      // flex: 1;
      // border-bottom: ;
    }

    .span {
      content: '';
      display: block;
      width: 18px;
      height: 8px;
      border-radius: 3px;
      background-color: #3C8DBC;
      color: #3C8DBC !important;
      // position: absolute;
      // border-bottom: ;
    }

    .spanto {
      color: #3C8DBC;
      border-bottom: 3px solid #3C8DBC;
    }
  }
</style>
