<template>
  <el-card v-loading="loading">
    <div style="height: calc(100vh - 235px); overflow-y: auto; overflow-x: hidden">
      <el-table :data="tableData" border :row-style="{ height: '35px' }" header-row-class-name="tableHeader" show-summary :summary-method="getSummaries">
        <el-table-column align="center">
          <template #header>
            <div style="text-align: center; font-size: 30px; padding: 8px">{{ props.rowData.departmentName }}-胜德体育对账单</div>
            <div style="text-align: center; font-size: 18px; padding-bottom: 8px">( 对账时间: {{ props.rowData.dimensionality }} )</div>
          </template>
          <el-table-column label="E10品号" prop="bomSpecCode" width="140" />
          <el-table-column label="SKU品名" prop="bomSpecName" min-width="220" />
          <el-table-column label="数量（PCS）" align="center" prop="quantity" width="130" />
          <el-table-column label="BOM单价" align="center" prop="unitPrice" width="110" />
          <el-table-column label="激光LOGO汇总" align="center" prop="laserLogoSummary" width="130" />
          <el-table-column label="激光体位线汇总" align="center" prop="laserMitochondrialSummary" width="130" />
          <el-table-column label="代发费汇总" align="center" prop="lssueFeeSummary" width="110" />
          <el-table-column label="快递包材费汇总" align="center" prop="deliveryMaterialsFeeSummary" width="130" />
          <el-table-column label="包装人工费汇总" align="center" prop="packingLaborSummary" width="130" />
          <el-table-column label="管理费汇总" align="center" prop="managementFeeSummary" width="130" />
          <el-table-column label="小计" align="center" width="120">
            <template #default="{ row }">
              {{ moneyFormat(row.subtotal) }}
            </template>
          </el-table-column>
          <el-table-column label="合计" align="center" width="120">
            <template #default="{ row }">
              {{ moneyFormat(row.total) }}
            </template>
          </el-table-column>
        </el-table-column>
      </el-table>
    </div>
    <div style="padding: 4px; text-align: center">
      <el-button @click="clickCancel">关 闭</el-button>
      <el-button type="primary" @click="deriveExcel()" v-preReClick>导 出</el-button>
    </div>
  </el-card>
</template>

<script setup>
import { ElMessage } from "element-plus";

const { proxy } = getCurrentInstance();
const props = defineProps({
  rowData: Object,
  activeName: String,
  tabsCard: Number,
});
const loading = ref(false);
const tableData = ref([]);
watch(
  () => props.activeName,
  (val) => {
    if (val === "bom" && !(tableData.value && tableData.value.length > 0)) {
      if (props.rowData && props.rowData.idGroupConcat) {
        loading.value = true;
        proxy.post("/statementOfAccountMerge/getDocumentByBom", { idGroupConcat: props.rowData.idGroupConcat }).then(
          (res) => {
            tableData.value = Object.freeze(res);
            loading.value = false;
          },
          (err) => {
            console.log(err);
            loading.value = false;
          }
        );
      }
    }
  },
  {
    deep: true,
    immediate: true,
  }
);
const labelList = ref({
  2: "quantity",
  4: "laserLogoSummary",
  5: "laserMitochondrialSummary",
  6: "lssueFeeSummary",
  7: "deliveryMaterialsFeeSummary",
  8: "packingLaborSummary",
  9: "managementFeeSummary",
  10: "subtotal",
  11: "total",
});
const textList = ref({
  1: "胜德体育总经理:",
  2: "申请日期:",
});
const getSummaries = ({ columns, data }) => {
  const sums = [];
  columns.forEach((column, index) => {
    if (index === 0) {
      sums[index] = h("div", { class: "" }, [
        h("div", {
          style: { "text-align": "center", "border-style": "solid", "border-width": "0 1px 1px 0", "border-color": "#ebeef5", padding: "0 12px" },
          innerHTML: "总计:",
        }),
        h("div", {
          style: { "text-align": "center", "border-style": "solid", "border-width": "0 1px 1px 0", "border-color": "#ebeef5", padding: "0 12px" },
          innerHTML: "备注:",
        }),
        h("div", {
          style: { "text-align": "center", "border-style": "solid", "border-width": "0 1px 1px 0", "border-color": "#ebeef5", padding: "0 12px" },
          innerHTML: "交货地点:",
        }),
        h("div", { style: { "font-size": "16px", "font-weight": 700, padding: "0 12px" }, innerHTML: "申请人:" }),
      ]);
      return;
    } else {
      sums[index] = h("div", { class: "" }, [
        [1, 3].includes(index)
          ? h("div", {
              style: {
                "text-align": "center",
                "border-style": "solid",
                "border-width": "0 1px 1px 0",
                "border-color": "#ebeef5",
                color: "#ebeef5",
                padding: "0 12px",
                height: "35px",
              },
              innerHTML: ".",
            })
          : h("div", {
              style: {
                "text-align": "center",
                "border-style": "solid",
                "border-width": "0 1px 1px 0",
                "border-color": "#ebeef5",
                padding: "0 12px",
                height: "35px",
              },
              innerHTML: getTotal(labelList.value[index]),
            }),
        h("div", {
          style: {
            "text-align": "center",
            "border-style": "solid",
            "border-width": "0 0 1px 0",
            "border-color": "#ebeef5",
            color: "#ebeef5",
            padding: "0 12px",
            height: "35px",
          },
          innerHTML: ".",
        }),
        h("div", {
          style: {
            "text-align": "center",
            "border-style": "solid",
            "border-width": "0 0 1px 0",
            "border-color": "#ebeef5",
            color: "#ebeef5",
            padding: "0 12px",
            height: "35px",
          },
          innerHTML: ".",
        }),
        [1, 2].includes(index)
          ? h("div", { style: { "font-size": "16px", "font-weight": 700, padding: "0 12px", "text-align": "left" }, innerHTML: textList.value[index] })
          : h("div", {
              style: {
                "text-align": "center",
                "border-style": "solid",
                "border-width": "0 0 1px 0",
                "border-color": "#ebeef5",
                color: "#ebeef5",
                padding: "0 12px",
                height: "35px",
              },
              innerHTML: ".",
            }),
      ]);
      return;
    }
  });
  return sums;
};
const getTotal = (label) => {
  let list = tableData.value.map((item) => item[label]);
  return Number(Math.round(list.reduce((acc, curr) => acc + curr, 0) * 100) / 100);
};
const emit = defineEmits(["clickCancel"]);
const clickCancel = () => {
  emit("clickCancel", "");
};
const deriveExcel = () => {
  ElMessage("导出文件中,请稍后");
  loading.value = true;
  proxy
    .getFile("/statementOfAccountMerge/exportDocumentByBom", {
      idGroupConcat: props.rowData.idGroupConcat,
      departmentName: props.rowData.departmentName,
      beginDate: props.rowData.dimensionality,
    })
    .then(
      (res) => {
        proxy.downloadFile(res, "BOM对账单.xlsx");
        loading.value = false;
      },
      (err) => {
        console.log(err);
        loading.value = false;
      }
    );
};
</script>

<style lang="scss" scoped>
::v-deep(.el-table thead.is-group th.el-table__cell) {
  background-color: white !important;
}
::v-deep(.el-table__footer-wrapper tbody td.el-table__cell) {
  background-color: white !important;
}
::v-deep(.el-table .el-table__cell) {
  padding: 0;
}
::v-deep(.el-table__footer .cell) {
  padding: 0;
}
::v-deep(.el-table__footer .el-table__cell) {
  border-right: 0px;
}
::v-deep(.el-card__body) {
  padding: 10px !important;
}
</style>
