<!--
  @description: 物料分类列表
  @author:张远远
  @routerPath:/procurement/material/materialType/materialType
  @date: 2021年4月2日14:27:12
-->
<template>
  <div>
    <table-crud
      ref="tableCrud"
      :search-form="searchForm"
      :menu="true"
      search-label-width="80px"
      :page-flag="false"
      @on-load="getMaterialTypeList"
    >
      <template v-slot:header>
        产品技术参数分类
      </template>
      <template v-slot:search="search">
        <el-form-item label="分类名称">
          <el-input
            v-model.trim="searchForm.categoryName"
            style="width:220px"
            placeholder="请输入分类名称"
            @keyup.enter.native="search.onSearch"
          />
        </el-form-item>
        <el-form-item label="分类编码">
          <el-input
            v-model.trim="searchForm.map.categoryCode"
            style="width:220px"
            placeholder="请输入分类编码"
            @keyup.enter.native="search.onSearch"
          />
        </el-form-item>
        <el-form-item
          label="创建日期"
        >
          <el-date-picker
            v-model="searchForm.map.createTimeBegin"
            :format="elValueFormatDate"
            :value-format="elValueSaveFormat"
            type="date"
            placeholder="开始日期"
          />
          至
          <el-date-picker
            v-model="searchForm.map.createTimeEnd"
            :format="elValueFormatDate"
            :value-format="elValueSaveFormat"
            type="date"
            placeholder="结束日期"
          />
        </el-form-item>
      </template>
      <template v-slot:menuLeft>
        <el-button type="primary" @click="editMaterialType('','add')">
          添加分类
        </el-button>
      </template>
      <template v-slot:GXTable>
        <el-table
          ref="smallTable"
          v-loading="loading"
          :data="tableData"
          row-key="id"
          :tree-props="{children: 'children', hasChildren: 'hasChildren'}"
          size="small"
        >
          <!-- 名称 -->
          <el-table-column header-align="left" label="分类名称" min-width="230">
            <template slot-scope="scope">
              <span>{{ scope.row.categoryName }}</span>
            </template>
          </el-table-column>
          <!-- 编码 -->
          <el-table-column header-align="center" align="center" label="分类编码" min-width="110">
            <template slot-scope="scope">
              <span>{{ scope.row.id }}</span>
            </template>
          </el-table-column>
          <!-- 创建人 -->
          <el-table-column header-align="center" align="center" label="创建人" min-width="100">
            <template slot-scope="scope">
              <span>{{ scope.row.createUserName }}</span>
            </template>
          </el-table-column>
          <!-- 创建日期 -->
          <el-table-column header-align="center" align="cnter" prop="createTime" label="创建时间" />
          <!-- 操作 -->
          <el-table-column
            label="操作"
            min-width="130"
            align="center"
          >
            <template slot-scope="scope">
              <el-link
                v-if="scope.row.disLevel<3"
                type="primary"
                @click.stop="editMaterialType(scope.row,'rowAdd')"
              >
                [新增子级]
              </el-link>
              <el-link
                type="primary"
                @click.stop="editMaterialType(scope.row,'edit')"
              >
                [编辑]
              </el-link>
              <el-link
                v-if="scope.row.categoryIsLeaf == 1"
                type="primary"
                @click.stop="deleteMaterialType(scope.row,scope.$index)"
              >
                [删除]
              </el-link>
            </template>
          </el-table-column>
        </el-table>
      </template>
    </table-crud>
    <!--新增/编辑物料分类弹框-->
    <add-material-type ref="addMaterialType" :type-list="tableData" @addSuccessful="addSuccessful" />
  </div>
</template>
<script>
/* 接口 */
import { deletePurcatalogCategory } from '@/api/procurement/purchasplan' // 删除物料分类
import { getPurcatalogCategoryTreeBySearch } from '@/api/common/tools'// 查询分类
/* 组件 */
import addMaterialTypeDialog from './materialTypeAdd-dialog' // 新增/编辑物料分类弹框
export default {
  name: 'MaterialType',
  components: {
    'add-material-type': addMaterialTypeDialog // 新增/编辑物料分类弹框
  },
  data() {
    return {
      loading: false,
      tableData: [], // 物料分类数据
      /* 搜索参数 */
      searchForm: {
        categoryName: '', // 物料分类名称
        map: {
          iseq: '01', // 00 模糊查询，01精确查询
          categoryCode: '', // 物料分类编码
          createTimeBegin: '', // 创建开始时间
          createTimeEnd: '' // 创建结束时间
        }
      }
    }
  },
  methods: {
    // 添加编辑完成的自定义事件
    addSuccessful() {
      this.$refs.tableCrud.onSearchChange() // 查询物料分类数据
    },
    /*
    * 获取物料分类数据
    * params name:物料分类名称,code:物料分类编码,createDateStart:创建开始时间,createDateEnd: 创建结束时间
    * */
    getMaterialTypeList(params) {
      this.loading = true
      getPurcatalogCategoryTreeBySearch(params).then(response => {
        this.loading = false
        this.tableData = response.data // 获取物料分类数据
        this.forArr(this.tableData, false)
      }).catch(() => {
        this.loading = false
      })
    },
    /*
    * 打开新增物料分类/编辑物料分类弹框
    * @params row: 物料分类行信息  type: add ||rowAdd ||edit 新增 新增子集 编辑
    */
    editMaterialType(row, type) {
      this.$refs.addMaterialType.open({
        type: type,
        row: row
      })
    },
    /*
    * 删除事件
    * @params row: 行信息
    */
    deleteMaterialType(row, index) {
      this.$confirm('确认删除本条物料分类吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        confirmButtonClass: 'confirmBtn',
        cancelButtonClass: 'cancelBtn',
        type: 'warning'
      }).then(() => {
        // 删除方法
        const data = {
          id: row.id
        }
        deletePurcatalogCategory(data).then(() => {
          this.$message.success({ message: '删除成功' })
          this.$refs.tableCrud.onSearchChange() // 查询物料分类数据
        })
      })
    }
  }
}
</script>
<style>

</style>
