123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198 |
- <template>
- <el-card v-loading="loading">
- <div style="height: calc(100vh - 264px); 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">( 对账时间: {{ rowData.timePeriod }} - {{ rowData.timePeriod }} )</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: 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>
- </template>
- <script setup>
- const { proxy } = getCurrentInstance();
- const props = defineProps({
- rowData: Object,
- });
- const loading = ref(false);
- const tableData = ref([]);
- onMounted(() => {
- if (props.rowData && props.rowData.id) {
- loading.value = true;
- proxy.post("/statementOfAccount/getDocumentByBom", { id: props.rowData.id }).then(
- (res) => {
- tableData.value = Object.freeze(res);
- loading.value = false;
- },
- (err) => {
- console.log(err);
- loading.value = false;
- }
- );
- }
- });
- 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 = () => {
- proxy.getFile("/statementOfAccount/exportDocumentByBom", { id: props.rowData.id }).then((res) => {
- proxy.downloadFile(res, "BOM对账单.xlsx");
- });
- };
- </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>
|