<template>
  <div class="ele-body">
    <el-card shadow="never">
      <search ref="search" @search="search"></search>
      <ele-pro-table ref="table" :columns="columns" :datasource="datasource">
        <!-- 表头工具栏 -->
        <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:files="scope">
          <el-link
            v-for="link in scope.row.files"
            :key="link.id"
            type="primary"
            :underline="false"
            @click="downloadFile(link)"
          >
            {{ link.name }}
      

          </el-link>
        </template>

        <template v-slot:qualityType="{ row }">
          {{ getDictValue('质检计划类型', row.qualityType) }}
        </template>
        <template v-slot:qualityMode="{ row }">
          {{ getDictValue('质检方式', row.qualityMode) }}
        </template>
        <template v-slot:accessory="scope">
          <el-link
            v-for="link in scope.row.accessory"
            :key="link.id"
            type="primary"
            :underline="false"
            @click="downloadFile(link)"
          >
            {{ link.name }}
          </el-link>
        </template>
        <!-- 操作列 -->
        <template v-slot:action="{ row }">
          <el-link
            type="primary"
            :underline="false"
            icon="el-icon-edit"
            @click="openEdit('detail', row)"
          >
            详情
          </el-link>
          <el-link
              type="primary"
              :underline="false"
              icon="el-icon-edit"
              v-if="row.status==0"
              @click="openEdit('edit', row)"
            >
              报工
            </el-link>
          <el-popconfirm
            class="ele-action"
            title="确定要删除吗？"
            @confirm="remove(row)"
            v-if="row.status==0"

          >
            <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"></edit>
  </div>
</template>
  <script>
import search from './components/search.vue';
import edit from './components/edit.vue';

import { getList, removeItem } from '@/api/inspectionWork';
import dictMixins from '@/mixins/dictMixins';
  import {getFile} from "@/api/system/file";

export default {
  mixins: [dictMixins],
  components: {
    search,
    edit
  },
  data() {
    return {
      columns: [
        {
          width: 50,
          type: 'index',
          columnKey: 'index',
          align: 'center',
          label: '序号',

        },

        {
          prop: 'code',
          label: '编码',
          align: 'center'
        },
        {
          label: '工单号',
          prop: 'workOrderCode',
          align: 'center'
        },
        {
          prop: 'batchNo',
          label: '批次号',
          align: 'center'
        },
        {
          prop: 'productName',
          label: '产品名称',
          align: 'center'
        },
        {
          prop: 'productCode',
          label: '产品编码',
          align: 'center'
        },
        {
          prop: 'specification',
          label: '规格',
          align: 'center'
        },
        {
          prop: 'brandNo',
          label: '牌号',
          align: 'center'
        },
        {
          label: '类型',
          prop: 'qualityType',
          slot: 'qualityType',
          width: 120

        },
        {
          label: '质检方式',
          prop: 'qualityMode',
          slot: 'qualityMode',
          width: 120

        },
        {
          prop: 'produceTaskName',
          label: '工序',
          align: 'center'
        },
        {
          prop: 'total',
          label: '总数量',
          align: 'center',
          width:80

        },
        {
          prop: 'qualifiedNumber',
          label: '合格数',
          align: 'center',
          width:80
        },
        {
          prop: 'qualificationRate',
          label: '合格率',
          align: 'center',
          width:80

        },
        {
          prop: 'noQualifiedNumber',
          label: '不合格数',
          align: 'center',
          width:80

        },
        {
          prop: 'noQualificationRate',
          label: '不合格率',
          align: 'center',
          width:80

        },
        {
          prop: 'hours',
          label: '工时',
          align: 'center',
          width:60

        },
        {
          prop: 'qualityTime',
          label: '质检时间',
          align: 'center',
          width:120

        },
        {
          prop: 'qualityName',
          label: '质检人',
          align: 'center',
          width:80

        },
        {
          label: '附件',
          prop: 'accessory',
          slot: 'accessory'
        },
        {
          prop: 'status',
          label: '状态',
          align: 'center',
          width:80,
          formatter: (row, column, cellValue) => {
            return cellValue==0?'未报工':cellValue==1?'已报工':''
          }

        },
        {
          columnKey: 'action',
          label: '操作',
          width: 220,
          align: 'center',
          resizable: false,
          slot: 'action',
          showOverflowTooltip: true
        }
      ]
    };
  },
  created() {
    this.requestDict('质检计划类型');
    this.requestDict('不良品处理类型');
    this.requestDict('质检方式');

    
  },
  methods: {
    datasource({ page, where, limit }) {
      return getList({
        ...where,
        pageNum: page,
        size: limit
      });
    },
    search(where) {
      this.$refs.table.reload({
        where: where,
        page: 1
      });
    },
    openEdit(type, row) {
      this.$refs.edit.open(type, row);

    },
      downloadFile(file) {
        getFile({objectName: file.storePath}, file.name);
      },
    remove(row) {
      removeItem([row.id])
        .then((message) => {
          this.$message.success(message);
          this.done();
        })
        .catch((e) => {});
    },
    done() {
      this.$refs.search.search();
    }
  }
};
</script>
    