<template>
  <div>
    <el-card style="height: calc(100vh - 168px); overflow-y: auto; overflow-x: hidden" v-loading="loading">
      <div id="tableId">
        <el-table :data="tableData" border :row-style="{ height: '35px' }" header-row-class-name="tableHeader" show-summary :summary-method="getSummaries">
          <el-table-column label="维度" prop="dimensionality" width="140" />
          <el-table-column label="客户" prop="departmentName" width="180" />
          <el-table-column label="SKU品号" prop="skuSpecCode" width="180" />
          <el-table-column label="SKU品名" prop="skuSpecName" min-width="220" />
          <el-table-column label="数量（PCS）" align="center" prop="quantity" width="160" />
          <el-table-column label="SKU单价" align="center" prop="unitPrice" width="160" />
          <el-table-column label="小计" align="center" width="180">
            <template #default="{ row }">
              {{ moneyFormat(row.subtotal) }}
            </template>
          </el-table-column>
          <el-table-column label="合计" align="center" width="180">
            <template #default="{ row }">
              {{ moneyFormat(row.total) }}
            </template>
          </el-table-column>
        </el-table>
      </div>
      <div style="padding: 8px; text-align: center">
        <el-button @click="clickCancel" size="large">关 闭</el-button>
        <el-button type="primary" @click="deriveExcel()" size="large" v-preReClick>导 出</el-button>
      </div>
    </el-card>
  </div>
</template>

<script setup>
const { proxy } = getCurrentInstance();
const props = defineProps({
  idGroupConcat: String,
});
const loading = ref(false);
const tableData = ref([]);
onMounted(() => {
  if (props.idGroupConcat) {
    loading.value = true;
    proxy.post("/statementOfAccountMerge/getDocumentBySku", { idGroupConcat: props.idGroupConcat }).then(
      (res) => {
        tableData.value = Object.freeze(res);
        loading.value = false;
      },
      (err) => {
        console.log(err);
        loading.value = false;
      }
    );
  }
});
const labelList = ref({
  4: "quantity",
  7: "total",
});
const textList = ref({
  3: "胜德体育总经理:",
  4: "申请日期:",
});
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, 2, 3, 5, 6].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, 5, 6, 7].includes(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: { "font-size": "16px", "font-weight": 700, padding: "0 12px", "text-align": "left" }, innerHTML: textList.value[index] }),
      ]);
      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 = () => {
  proxy.getFile("/statementOfAccountMerge/exportDocumentBySku", { idGroupConcat: props.idGroupConcat }).then((res) => {
    proxy.downloadFile(res, "SKU对账单.xlsx");
  });
  // $("#tableId").table2excel({
  //   exclude: ".noExl",
  //   sheetName: "SKU对账单",
  //   filename: "SKU对账单",
  //   exclude_img: false,
  //   exclude_links: false,
  //   exclude_inputs: true,
  // });
};
</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;
}
</style>
