<template>
  <div class="">
    <toolbar @on-filter="filterData" @on-reset="filterData" />

    <div class="m-10 bg-w p-20 br-10">
      <el-button type="primary" icon="el-icon-plus" @click="handleAdd"
        >新增</el-button
      >
      <base-table
        row-key="id"
        :columns="columns"
        :items="items"
        :pagination="pagination"
        :page-change="pageChange"
      />
    </div>
  </div>
</template>

<script>
import toolbar from './toolbar';
import mxFilterList from '@/mixins/filterList';
import { getPage, delItem } from '@/api/help/type';

export default {
  name: 'IssueType',

  components: { toolbar },

  mixins: [
    mxFilterList({
      fetchList: getPage // 在下方data再声明一个 fetchList: iGetList 同等效果
    })
  ],

  data() {
    return {
      columns: [
        {
          key: 'name',
          name: '分类名称',
          minWidth: this.$col.b
        },
        {
          key: 'sort',
          name: '排序',
          width: this.$col.s
        },
        {
          key: 'createAt',
          name: '创建时间',
          width: this.$col.b
        },
        {
          key: 'isShow',
          name: '状态',
          width: this.$col.s,
          type: 'tag',
          fetchTagType: val => (val ? 'success' : 'info'),
          tagName: row => (row.isShow ? '显示' : '隐藏')
        },
        {
          key: 'action',
          name: '操作',
          width: '180',
          render: (h, { row }) => {
            const action = [];
            action.push(
              h(
                'el-button',
                {
                  props: {
                    type: 'text'
                  },
                  on: {
                    click: () =>
                      this.$IssueTypeItemModal({
                        id: row.id,
                        parentId: row.parentId
                      })
                  }
                },
                '编辑'
              )
            );
            row.parentId == -1 &&
              action.push(
                h(
                  'el-button',
                  {
                    props: {
                      type: 'text'
                    },
                    on: {
                      click: () =>
                        this.$IssueTypeItemModal({
                          parentId: row.id
                        })
                    }
                  },
                  '添加下级分类'
                )
              );
            action.push(
              h(
                'BaseBtn',
                {
                  props: {
                    popip: true,
                    txt: '删除',
                    type: 'text'
                  },
                  class: 'ml-10',
                  on: {
                    ok: () => this.handleDelItem(row)
                  }
                },
                '删除'
              )
            );

            return h('div', action);
          }
        }
      ]
    };
  },

  created() {
    this.$g_on('issue_type_reload', this.reload);
  },

  beforeDestroy() {
    this.$g_off('issue_type_reload', this.reload);
  },

  methods: {
    handleAdd() {
      this.$IssueTypeItemModal();
    },
    async handleDelItem(item) {
      const { success, msg } = await delItem({
        id: item.id
      });
      if (success) {
        this.$success('删除成功！');
        this.$g_emit('issue_type_reload');
      }
    }
  }
};
</script>

<style lang="scss" scoped></style>
