<template>
  <div class="ele-body">
    <el-card shadow="never">
      <search ref="search" @search="search" :options_groupId="dict.groupId" :options_factory="dict.factory"></search>
      <ele-pro-table ref="table" :columns="columns" :datasource="datasource" cache-key="systemRoleTable">
        <!-- 表头工具栏 -->
        <template v-slot:toolbar>
          <el-button size="small" type="primary" icon="el-icon-plus" class="ele-btn-icon" @click="openEdit('add')">
            添加
          </el-button>
        </template>
        <template v-slot:workshop="{ row }">
          {{ showWorkshop(row) }}
        </template>


        <template v-slot:parent="{ row }">
          {{ showgfactory(row, 2) }}
        </template>

        <template v-slot:factory="{ row }">
          {{ showgfactory(row, 1) }}
        </template>


        <template v-slot:enabled="{ row }">
          {{ dict.enabled[row.enabled] }}
        </template>
        <!-- 操作列 -->
        <template v-slot:action="{ row }">
          <el-link type="primary" :underline="false" icon="el-icon-edit" @click="openEdit('edit', row)">
            修改
          </el-link>
          <el-popconfirm class="ele-action" title="确定要删除此角色吗？" @confirm="remove(row)">
            <template v-slot:reference>
              <el-link type="danger" :underline="false" icon="el-icon-delete">
                删除
              </el-link>
            </template>
          </el-popconfirm>
        </template>
      </ele-pro-table>
    </el-card>
    <edit ref="edit" @done="done" :options_groupId="dict.groupId" :options_factory="dict.factory"></edit>
  </div>
</template>
<script>
import search from './components/search.vue';
import edit from './components/edit.vue';
import { getFactoryarea, deletefactoryarea } from '@/api/factoryModel';
import { listOrganizations } from '@/api/system/organization';
export default {
  components: {
    search,
    edit
  },
  data() {
    return {
      columns: [
        {
          width: 45,
          type: 'index',
          columnKey: 'index',
          align: 'center'
        },
        {
          prop: 'code',
          label: '产线编码'
        },
        {
          label: '产线名称',
          prop: 'name'
        },

        {
          label: '工厂编码',
          prop: 'parentCode',
          slot: 'parent'
        },
        {
          label: '所属工厂',
          prop: 'extInfo.factoryId',
          slot: 'factory'
        },

        {
          label: '所属车间',
          prop: 'parentId',
          slot: 'workshop'
        },
        {
          label: '省/市/区',
          prop: 'extInfo.location'
        },
        {
          label: '详细地址',
          prop: 'extInfo.locationDetail'
        },
        {
          label: '状态',
          prop: 'enabled',
          slot: 'enabled'
        },
        {
          columnKey: 'action',
          label: '操作',
          width: 220,
          align: 'center',
          resizable: false,
          slot: 'action',
          showOverflowTooltip: true
        }
      ],
      dict: {
        groupId: [],
        factory: [],
        enabled: {
          1: '生效',
          0: '未生效'
        }
      }
    };
  },
  created() {
    this.getGs();
    this.getFactoryarea();
  },
  methods: {
    datasource({ page, where, limit }) {
      return getFactoryarea({
        ...where,
        pageNum: page,
        size: limit,
        type: 4
      });
    },
    search(where) {
      this.$refs.table.reload({
        where: where,
        page: 1
      });
    },
    openEdit(type, row) {
      if (row) {
        if (typeof row.mainFactoryCapacityList == 'string') {
          this.$set(row, 'mainFactoryCapacityList', [])
        }
      }
      this.$refs.edit.open(type, row);
    },
    // 获取公司数据
    getGs() {
      listOrganizations().then((list) => {
        console.log(list);
        this.dict.groupId = list;
      });
    },
    // 回显工厂名称
    showgfactory(row, type) {
      let result = row.parent.find((n) => n.id == row.extInfo.factoryId);
      if (result && type == 1) {
        return result.name;
      } else if (result && type == 2) {
        return result.code;
      }
      else {
        return '';
      }
    },
    // 回显车间
    showWorkshop(row) {
      let result = row.parent.find((n) => n.id == row.parentId);
      if (result) {
        return result.name;
      } else {
        return '';
      }
    },
    // 获取工厂数据
    getFactoryarea() {
      let par = {
        type: 2,
        size: 9999
      };
      getFactoryarea(par).then((res) => {
        this.dict.factory = res.list;
      });
    },
    remove(row) {
      deletefactoryarea(row.id)
        .then((message) => {
          this.$message.success(message);
          this.done();
        })
        .catch((e) => {
          this.$message.error(e.message);
        });
    },
    done() {
      this.$refs.search.search();
    }
  }
};
</script>
