<template>
  <div>
    <basic-container v-if="isShow">
      <avue-crud :option="option" :table-loading="loading" :data="data" :page.sync="page" :search.sync="query"
        id="out-table" :header-cell-class-name="headerClassName" ref="crud" @row-del="rowDel"
        @search-change="searchChange" @search-reset="searchReset" @selection-change="selectionChange"
        @current-change="currentChange" @size-change="sizeChange" @refresh-change="refreshChange"
        @resetColumn="resetColumn('crud', 'option', 'optionBack', 68)"
        @saveColumn="saveColumn('crud', 'option', 'optionBack', 68)" @on-load="onLoad">
        <template slot="menu" slot-scope="{ row, index }">
          <el-button size="small" icon="el-icon-edit" type="text" @click="rowEdit(row)">编辑</el-button>
        </template>
        <template slot="cname" slot-scope="{ row }">
          <span style="color: #1e9fff;cursor: pointer;" @click="rowEdit(row)">{{ row.cname }}</span>
        </template>
      </avue-crud>
    </basic-container>
    <detailsPage v-if="!isShow" :detailData="detailData" @goBack="goBack"></detailsPage>
  </div>
</template>

<script>
import { customerList } from "@/api/basicData/customerInformation";
import detailsPage from "./detailsPage";
export default {
  data() {
    return {
      detailData: {},
      isShow: true,
      query: {},
      loading: false,
      page: {
        pageSize: 10,
        currentPage: 1,
        total: 0
      },
      option: {},
      optionBack: {
        height: 'auto',
        calcHeight: 30,
        menuWidth: 140,
        tip: false,
        searchShow: true,
        searchMenuSpan: 12,
        border: true,
        index: true,
        addBtn: false,
        viewBtn: false,
        editBtn: false,
        delBtn: false,
        searchIcon: true,
        align: 'center',
        searchIndex: 3,
        column: [
          {
            label: "编码",
            prop: "code",
            search: true,
            searchOrder: 1,
            overHidden: true,
          },
          {
            label: "客户",
            prop: "cname",
            search: true,
            searchOrder: 2,
            overHidden: true,
          },
          {
            label: "总返利",
            prop: "profitReturn",
            overHidden: true,
          },
          {
            label: "已用返利",
            prop: "usedProfit",
            overHidden: true,
          },
          {
            label: "可用返利",
            prop: "surplusProfit",
            overHidden: true,
          },
          {
            label: "本月待到账",
            prop: "monthProfit",
            overHidden: true,
          },
          {
            label: "创建人",
            prop: "createName",
            overHidden: true,
          },
          {
            label: "创建时间",
            prop: "createTime",
            overHidden: true,
          }
        ]
      },
      data: [],
    };
  },
  components: {
    detailsPage
  },
  async created() {
    this.option = await this.getColumnData(this.getColumnName(68), this.optionBack);
  },
  methods: {
    rowEdit(row) {
      this.detailData = {
        id: row.id
      };
      this.isShow = false
    },
    searchReset() {
      this.query = this.$options.data().query;
      this.onLoad(this.page);
    },
    // 搜索按钮点击
    searchChange(params, done) {
      this.page.currentPage = 1;
      this.onLoad(this.page, this.query);
      done();
    },
    currentChange(currentPage) {
      this.page.currentPage = currentPage;
    },
    sizeChange(pageSize) {
      this.page.pageSize = pageSize;
    },
    refreshChange() {
      this.onLoad(this.page, this.query);
    },
    onLoad(page, params = {}) {
      let obj = {}
      obj = {
        size:this.page.pageSize,
        current:this.page.currentPage,
        ...Object.assign(params, this.query),
      }
      this.loading = true;
      customerList(obj).then(res => {
        this.data = res.data.data.records;
        this.page.total = res.data.data.total;
        this.$nextTick(() => {
          this.$refs.crud.doLayout();
          this.$refs.crud.dicInit();
        });
      }).finally(() => {
        this.loading = false;
      })
    },
    // 详情的返回列表
    goBack() {
      this.detailData = {}
      this.isShow = true;
      this.onLoad(this.page, this.query);
    },
    //自定义列保存
    async saveColumn(ref, option, optionBack, code) {
      /**
       * 已定义全局方法，直接使用，saveColumnData保存列数据方法,参数传值(表格名称，当前表格的option数据)
       * 已定义全局方法，直接使用，getColumnName方法用来获取枚举值，参数根据自己定义的code值获取中文名
       * 一定要执行异步操作，要等接口成功返回，才能执行下一行代码
       */
      const inSave = await this.saveColumnData(this.getColumnName(code), this[option]);
      if (inSave) {
        this.$message.success("保存成功");
        //关闭窗口
        this.$refs[ref].$refs.dialogColumn.columnBox = false;
        this.searchReset()
      }
    },
    //自定义列重置
    async resetColumn(ref, option, optionBack, code) {
      this[option] = this[optionBack];
      const inSave = await this.delColumnData(this.getColumnName(code), this[optionBack]);
      if (inSave) {
        this.$message.success("重置成功");
        this.$refs[ref].$refs.dialogColumn.columnBox = false;
        this.searchReset()
      }
    },
    // 更改表格颜色
    headerClassName(tab) {
      //颜色间隔
      let back = ""
      if (tab.columnIndex >= 0 && tab.column.level === 1) {
        if (tab.columnIndex % 2 === 0) {
          back = "back-one"
        } else if (tab.columnIndex % 2 === 1) {
          back = "back-two"
        }
      }
      return back;
    },

  }
}

</script>

<style scoped>
::v-deep#out-table .back-one {
  background: #ecf5ff !important;
  text-align: center;
}

::v-deep#out-table .back-two {
  background: #ecf5ff !important;
  text-align: center;
}

.pointerClick {
  cursor: pointer;
  color: #1e9fff;
}

::v-deep .el-col-md-8 {
  width: 24.33333%;
}
</style>