<template>
  <div class="ele-body">
    <el-card shadow="never" v-loading="loading">
      <div class="ele-border-lighter form-content" v-loading="loading">
        <search-quotation @search="reload"></search-quotation>
        <div style="margin-bottom: 10px">
          <el-button
            size="small"
            type="primary"
            icon="el-icon-plus"
            class="ele-btn-icon"
            @click="openEdit('add', {})"
          >
            新建
          </el-button>
        </div>
        <el-table
          :data="tableList"
          style="width: 100%;margin-bottom: 20px;"
          height="calc(100vh - 375px)"
          row-key="id"
          border
          default-expand-all
          :tree-props="{children: 'sonPurchasePlanList', hasChildren: 'hasChildren'}">
          <el-table-column
            prop=""
            type="index"
            label="序号"
            :width="60"
            :showOverflowTooltip="true"
            align="center">
          </el-table-column>
          <el-table-column
            prop="planCode"
            label="采购计划单编码"
            :minWidth="200"
            :showOverflowTooltip="true"
            align="center">
            <template slot-scope="{ row }">
              <el-link type="primary" :underline="false" @click="openDetail(row)">
                {{ row.planCode }}
              </el-link>
            </template>
          </el-table-column>
          <el-table-column
            prop="planName"
            label="采购计划单名称"
            :minWidth="150"
            :showOverflowTooltip="true"
            align="center">
          </el-table-column>
          <el-table-column
            prop="requirementName"
            label="采购需求单名称"
            :minWidth="150"
            :showOverflowTooltip="true"
            align="center">
            <template slot-scope="{ row }">
              <el-link
                type="primary"
                :underline="false"
                @click="openNeedDetail(row)"
              >
                {{ row.requirementName }}
              </el-link
              >
            </template>
          </el-table-column>
          <el-table-column
            prop="productNames"
            label="产品名称"
            :minWidth="120"
            :showOverflowTooltip="true"
            align="center">
          </el-table-column>
          <el-table-column
            prop="sourceTypeName"
            label="需求类型"
            :minWidth="120"
            :showOverflowTooltip="true"
            align="center">
          </el-table-column>
          <el-table-column
            prop="requireDeptName"
            label="需求部门"
            :minWidth="120"
            :showOverflowTooltip="true"
            align="center">
          </el-table-column>
          <el-table-column
            prop="requireUserName"
            label="需求人"
            :minWidth="80"
            :showOverflowTooltip="true"
            align="center">
          </el-table-column>
          <el-table-column
            prop="responsibleName"
            label="负责人"
            :minWidth="80"
            :showOverflowTooltip="true"
            align="center">
          </el-table-column>
          <el-table-column
            prop="detailCount"
            label="明细条数"
            :minWidth="80"
            :showOverflowTooltip="true"
            align="center">
          </el-table-column>
          <el-table-column
            prop="createTime"
            label="创建时间"
            :minWidth="160"
            :showOverflowTooltip="true"
            align="center">
          </el-table-column>
          <el-table-column
            prop="status"
            label="状态"
            :minWidth="80"
            :showOverflowTooltip="true"
            align="center">
            <template slot-scope="{ row }">
              {{ getStatus(row.status) }}
            </template>
          </el-table-column>
          <el-table-column
            prop=""
            label="操作"
            :minWidth="200"
            :resizable="false"

            align="center">
            <template slot-scope="{ row }">
              <el-link
                type="primary"
                :underline="false"
                icon="el-icon-edit"
                v-if="[0, 3].includes(row.status)&&!row.isCut"
                @click="openEdit('edit', row)"
              >
                修改
              </el-link>
              <el-link
                type="primary"
                :underline="false"
                icon="el-icon-edit"
                v-if="[2].includes(row.status)&&!row.isCut&&!row.inquiryCount"
                @click="handleSplit(row)"
              >
                拆分
              </el-link>
              <el-link
                type="primary"
                :underline="false"
                v-if="[2].includes(row.status)&&(!row.isCut||(row.parentId&&row.parentId!=0))"
                icon="el-icon-plus"
                @click="addInquiry('add', row)"
              >
                生成核价单
              </el-link>
              <el-popconfirm
                class="ele-action"
                title="确定要删除此信息吗？"
                v-if="[0, 3].includes(row.status)&&!row.isCut"
                @confirm="remove([row.id])"
              >
                <template v-slot:reference>
                  <el-link type="danger" :underline="false" icon="el-icon-delete">
                    删除
                  </el-link>
                </template>
              </el-popconfirm>
            </template>
          </el-table-column>


        </el-table>
        <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="pageNum"
          :page-sizes="[10, 20, 30, 40,50,100]"
          :page-size="pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          :total="total">
        </el-pagination>
        <!-- 数据表格 -->
        <!--        <ele-pro-table-->
        <!--          ref="table"-->
        <!--          :columns="columns"-->
        <!--          :datasource="datasource"-->
        <!--          height="calc(100vh - 375px)"-->
        <!--          full-height="calc(100vh - 116px)"-->
        <!--          tool-class="ele-toolbar-form"-->
        <!--          :selection.sync="selection"-->
        <!--          cache-key="eomContactPageTable"-->
        <!--        >-->
        <!--          &lt;!&ndash; 表头工具栏 &ndash;&gt;-->
        <!--          <template v-slot:toolbar>-->
        <!--            <el-button-->
        <!--              size="small"-->
        <!--              type="primary"-->
        <!--              icon="el-icon-plus"-->
        <!--              class="ele-btn-icon"-->
        <!--              @click="openEdit('add', {})"-->
        <!--            >-->
        <!--              新建-->
        <!--            </el-button>-->

        <!--            <el-button-->
        <!--              size="small"-->
        <!--              type="danger"-->
        <!--              el-icon-delete-->
        <!--              class="ele-btn-icon"-->
        <!--              @click="allDelBtn"-->
        <!--              :disabled="selection?.length === 0"-->
        <!--            >-->
        <!--              批量删除-->
        <!--            </el-button>-->
        <!--          </template>-->

        <!--          &lt;!&ndash; 查看详情列 &ndash;&gt;-->
        <!--          <template v-slot:planCode="{ row }">-->
        <!--            <el-link type="primary" :underline="false" @click="openDetail(row)">-->
        <!--              {{ row.planCode }}-->
        <!--            </el-link-->
        <!--            >-->
        <!--          </template>-->
        <!--          &lt;!&ndash; 查看详情列 &ndash;&gt;-->
        <!--          <template v-slot:requirementName="{ row }">-->
        <!--            <el-link-->
        <!--              type="primary"-->
        <!--              :underline="false"-->
        <!--              @click="openNeedDetail(row)"-->
        <!--            >-->
        <!--              {{ row.requirementName }}-->
        <!--            </el-link-->
        <!--            >-->
        <!--          </template>-->
        <!--          &lt;!&ndash; 状态 &ndash;&gt;-->
        <!--          <template v-slot:status="{ row }">-->
        <!--            {{ getStatus(row.status) }}-->
        <!--          </template>-->

        <!--          &lt;!&ndash; 操作列 &ndash;&gt;-->
        <!--          <template v-slot:action="{ row }">-->
        <!--            <el-link-->
        <!--              type="primary"-->
        <!--              :underline="false"-->
        <!--              icon="el-icon-edit"-->
        <!--              v-if="[0, 3].includes(row.status)"-->
        <!--              @click="openEdit('edit', row)"-->
        <!--            >-->
        <!--              修改-->
        <!--            </el-link>-->
        <!--            <el-link-->
        <!--              type="primary"-->
        <!--              :underline="false"-->
        <!--              icon="el-icon-edit"-->
        <!--              v-if="[2].includes(row.status)"-->
        <!--              @click="handleSplit(row)"-->
        <!--            >-->
        <!--              拆分-->
        <!--            </el-link>-->
        <!--            <el-link-->
        <!--              type="primary"-->
        <!--              :underline="false"-->
        <!--              v-if="[2].includes(row.status)"-->
        <!--              icon="el-icon-plus"-->
        <!--              @click="addInquiry('add', row)"-->
        <!--            >-->
        <!--              生成核价单-->
        <!--            </el-link>-->
        <!--            <el-popconfirm-->
        <!--              class="ele-action"-->
        <!--              title="确定要删除此信息吗？"-->
        <!--              v-if="[0, 3].includes(row.status)"-->
        <!--              @confirm="remove([row.id])"-->
        <!--            >-->
        <!--              <template v-slot:reference>-->
        <!--                <el-link type="danger" :underline="false" icon="el-icon-delete">-->
        <!--                  删除-->
        <!--                </el-link>-->
        <!--              </template>-->
        <!--            </el-popconfirm>-->
        <!--          </template>-->
        <!--        </ele-pro-table>-->
      </div>
    </el-card>

    <add-dialog ref="addDialogRef" @done="reload"></add-dialog>
    <detail-dialog ref="contactDetailDialogRef"></detail-dialog>
    <!-- 多选删除弹窗 -->
    <pop-modal
      :visible.sync="delVisible"
      content="是否确定删除？"
      @done="commitBtn"
    />
    <detailNeedDialog ref="DetailNeedDialogRef"></detailNeedDialog>
    <addInquiryDialog ref="addInquiryDialogRef"></addInquiryDialog>
    <split-dialog ref="splitDialogRef" v-if="splitDialogFlag" :splitDialogFlag.sync="splitDialogFlag"></split-dialog>
  </div>
</template>

<script>
import searchQuotation from './components/searchQuotation.vue';
import addDialog from './components/addDialog.vue';
import addInquiryDialog from '../../purchasingManage/inquiryManage/components/addDialog.vue';
import detailNeedDialog from '../../purchasingManage/purchaseNeedManage/components/detailDialog.vue';
import detailDialog from './components/detailDialog.vue';
import popModal from '@/components/pop-modal';
import dictMixins from '@/mixins/dictMixins';
import {
  getTableList,
  deleteInformation, isHasGeneratedInquiryAPI
} from '@/api/purchasingManage/purchasePlanManage';
import {isHasGeneratedQuoteAPI} from "@/api/saleManage/businessOpportunity";
import splitDialog from './components/splitDialog.vue'

export default {
  mixins: [dictMixins],
  components: {
    searchQuotation,
    popModal,
    addDialog,
    detailDialog,
    detailNeedDialog,
    addInquiryDialog,
    splitDialog
  },
  data() {
    return {
      pageSize: 10,
      pageNum: 1,
      where: {},
      total: 0,
      selection: [], //单选中集合
      tableList: [], //单选中集合
      delVisible: false, //批量删除弹框状态
      loading: false, // 加载状态
      splitDialogFlag: false, // 加载状态

    };
  },
  computed: {
    columns() {
      return [
        {
          width: 45,
          type: 'selection',
          columnKey: 'selection',
          align: 'center'
        },
        {
          columnKey: 'index',
          label: '序号',
          type: 'index',
          width: 55,
          align: 'center',
          showOverflowTooltip: true,
          fixed: 'left'
        },
        {
          prop: 'planCode',
          slot: 'planCode',
          label: '采购计划单编码',
          align: 'center',
          // showOverflowTooltip: true,
          minWidth: 210
        },
        {
          prop: 'planName',
          label: '采购计划单名称',
          align: 'center',
          showOverflowTooltip: true,
          minWidth: 200
        },
        {
          prop: 'requirementName',
          slot: 'requirementName',
          label: '采购需求单名称',
          align: 'center',
          showOverflowTooltip: true,
          minWidth: 200
        },
        {
          prop: 'productNames',
          label: '产品名称',
          align: 'center',
          showOverflowTooltip: true,
          minWidth: 140
        },
        {
          prop: 'sourceTypeName',
          label: '需求类型',
          align: 'center',
          showOverflowTooltip: true,
          minWidth: 140
        },
        {
          prop: 'requireDeptName',
          label: '需求部门',
          align: 'center',
          slot: 'requireDeptName',
          showOverflowTooltip: true,
          minWidth: 200
        },
        {
          prop: 'requireUserName',
          label: '需求人',
          align: 'center',
          showOverflowTooltip: true,
          minWidth: 140
        },
        {
          prop: 'responsibleName',
          label: '负责人',
          align: 'center',
          showOverflowTooltip: true,
          minWidth: 120
        },
        {
          prop: 'detailCount',
          label: '明细条数',
          align: 'center',
          showOverflowTooltip: true,
          minWidth: 140
        },

        // {
        //   prop: 'finishDate',
        //   label: '完成日期',
        //   align: 'center',
        //   showOverflowTooltip: true,
        //   minWidth: 140
        // },
        {
          prop: 'createTime',
          label: '创建时间',
          align: 'center',
          showOverflowTooltip: true,
          minWidth: 180
        },
        {
          prop: 'status',
          label: '状态',
          align: 'center',
          slot: 'status',
          showOverflowTooltip: true,
          minWidth: 120
        },
        // {
        //   prop: 'remark',
        //   label: '备注',
        //   align: 'center',
        //   showOverflowTooltip: true,
        //   minWidth: 170
        // },
        {
          columnKey: 'action',
          label: '操作',
          width: 230,
          align: 'center',
          resizable: false,
          slot: 'action',
          showOverflowTooltip: true,
          fixed: 'right'
        }
      ]
    },
  },
  created() {
    this.requestDict('客户状态');
    this.datasource();
  },
  methods: {
    /* 表格数据源 */
    async datasource(pageNum = this.pageNum, pageSize = this.pageSize, where=this.where) {
      const row = await getTableList({
        pageNum: pageNum,
        size: pageSize,
        ...where
      });
      this.tableList = row.list
      this.total = row.count
    },
    handleSizeChange(val) {
      this.pageSize = val
      this.datasource()
    },
    handleCurrentChange(val) {
      this.pageNum = val
      this.datasource()
    },
    // /* 表格数据源 */
    // datasource({page, limit, where}) {
    //   return getTableList({
    //     pageNum: page,
    //     size: limit,
    //     ...where
    //   });
    // },

    /* 刷新表格 */
    reload(where) {
      this.where = where
      this.pageNum = 1
      this.datasource(this.pageNum, this.pageSize, this.where)

    },

    //新增编辑
    openEdit(type, row) {
      this.$refs.addDialogRef.open(type, row, row.id);
      this.$refs.addDialogRef.$refs.form &&
      this.$refs.addDialogRef.$refs.form.clearValidate();
    },
    handleSplit(row) {
      this.splitDialogFlag = true
      this.$nextTick(() => {
        this.$refs.splitDialogRef.init(row)
      })
    },
    //新增核价
    async addInquiry(type, row) {
      this.$refs.addInquiryDialogRef.open(type, row);
      this.$refs.addInquiryDialogRef.$refs.form &&
      this.$refs.addInquiryDialogRef.$refs.form.clearValidate();
    },

    //批量删除
    allDelBtn() {
      if (this.selection.length === 0) return;
      let flag = this.selection.some(item => [1, 2].includes(item.status))
      if (flag) return this.$message.warning('抱歉已审核、审核中的数据不能删除,请检查')
      this.delVisible = true;
    },

    //删除接口
    remove(delData) {
      deleteInformation(delData).then((res) => {
        this.$message.success('删除成功！');
        this.reload();
      });
    },

    //删除弹框确定
    commitBtn() {
      const dataId = this.selection.map((v) => v.id);
      this.remove(dataId);
    },

    //查看详情
    openDetail(row) {
      this.$refs.contactDetailDialogRef.open(row);
    },
    //查看详情
    openNeedDetail(row) {
      this.$refs.DetailNeedDialogRef.open(row);
    },

    //获取状态
    getStatus(status) {
      return status == 0
        ? '未提交'
        : status == 1
          ? '审核中'
          : status == 2
            ? '审核通过'
            : status == 3
              ? '审核不通过'
              : '';
    }
  }
};
</script>

<style lang="scss" scoped>
:deep(.el-link--inner) {
  margin-left: 0px !important;
}

.sys-organization-list {
  height: calc(100vh - 264px);
  box-sizing: border-box;
  border-width: 1px;
  border-style: solid;
  overflow: auto;
}

.sys-organization-list :deep(.el-tree-node__content) {
  height: 40px;

  & > .el-tree-node__expand-icon {
    margin-left: 10px;
  }
}

::v-deep .el-pager li.active {
  color: #ffffff;
  background: #1890ff;
  border-radius: 50%;
  cursor: default;
}

::v-deep .el-pager li {
  padding: 0 4px;
  background: var(--color-white);
  vertical-align: top;
  display: inline-block;
  font-size: 13px;
  min-width: 28px;
  height: 28px;
  line-height: 28px;
  cursor: pointer;
  box-sizing: border-box;
  text-align: center;
  margin: 0;
}

::v-deep .el-table__row--level-1 {
  background: #e2f1ff61;
}

::v-deep .el-table__row--level-0 {
  background: rgb(156 249 177);
}
</style>
