This commit is contained in:
2024-01-31 14:56:48 +08:00
parent 14cbb87311
commit 494e3ee248
97 changed files with 11579 additions and 3858 deletions
@@ -23,26 +23,41 @@
/>
</template>
<template v-if="column.key === 'settleCycle'">
<span v-if="record.startDate && record.endDate">
{{ Math.floor(record.days / 30) }}月
{{ record.days - (Math.floor(record.days / 30) * 30) }}天
</span>
<a-row :gutter="16">
<a-col :span="12">
<a-input v-model:value="record.month">
<template #addonAfter>月</template>
</a-input>
</a-col>
<a-col :span="12">
<a-input v-model:value="record.day">
<template #addonAfter>日</template>
</a-input>
</a-col>
</a-row>
</template>
<template v-if="column.key === 'monthAmount'">
<a-input v-model:value="record.monthAmount" type="number" @change="changeDate($event, index)" />
</template>
<template v-if="column.key === 'dailyAmount'">
<span v-if="record.monthAmount">{{ record.dailyAmount }}</span>
<a-input v-model:value="record.dailyAmount" type="number" />
</template>
<template v-if="column.key === 'payRate'">
<a-input v-model:value="record.payRate" type="number">
<template #addonAfter>%</template>
</a-input>
</template>
<template v-if="column.key === 'amountWithTax'">
<span v-if="record.monthAmount">{{ (record.dailyAmount * record.days).toFixed(2) }}</span>
<span v-if="record.monthAmount">{{ ((record.dailyAmount * record.days + record.monthAmount * record.month) * record.payRate / 100).toFixed(2)
}}</span>
</template>
<template v-if="column.key === 'tax'">
<span v-if="record.monthAmount">{{ (record.dailyAmount * record.days * (record.taxRate / 100)).toFixed(2) }}</span>
<span v-if="record.monthAmount">{{ (((record.dailyAmount * record.days + record.monthAmount * record.month) * record.payRate / 100) * (record.taxRate / 100)).toFixed(2)
}}</span>
</template>
<template v-if="column.key === 'amountWithoutTax'">
<span
v-if="record.monthAmount">{{ ((record.dailyAmount * record.days) - (record.dailyAmount * record.days * (record.taxRate / 100))).toFixed(2)
v-if="record.monthAmount">{{ (((record.dailyAmount * record.days + record.monthAmount * record.month) * record.payRate / 100) - (record.dailyAmount * record.days * (record.taxRate / 100))).toFixed(2)
}}</span>
</template>
<template v-if="column.key === 'remark'">
@@ -55,6 +70,30 @@
</div>
</template>
</template>
<template #summary>
<a-table-summary-row>
<a-table-summary-cell>合计</a-table-summary-cell>
<a-table-summary-cell />
<a-table-summary-cell />
<a-table-summary-cell />
<a-table-summary-cell />
<a-table-summary-cell />
<a-table-summary-cell />
<a-table-summary-cell />
<a-table-summary-cell />
<a-table-summary-cell>
{{ totals.amountWithTax }}
</a-table-summary-cell>
<a-table-summary-cell>
{{ totals.tax }}
</a-table-summary-cell>
<a-table-summary-cell>
{{ totals.amountWithoutTax }}
</a-table-summary-cell>
<a-table-summary-cell />
<a-table-summary-cell />
</a-table-summary-row>
</template>
</a-table>
</template>
@@ -113,6 +152,16 @@ const columns = ref<ColumnItem[]>([
dataIndex: "settleCycle",
key: "settleCycle"
},
{
title: "实际进场日期",
dataIndex: "inDate",
key: "inDate"
},
{
title: "实际出场日期",
dataIndex: "outDate",
key: "outDate"
},
{
title: "月工资(元)",
dataIndex: "monthAmount",
@@ -123,6 +172,11 @@ const columns = ref<ColumnItem[]>([
dataIndex: "dailyAmount",
key: "dailyAmount"
},
{
title: "支付比例",
dataIndex: "payRate",
key: "payRate"
},
{
title: "含税金额(元)",
dataIndex: "amountWithTax",
@@ -154,8 +208,9 @@ const dataList = ref<SettleDetail[]>([]);
const changeDate = (data, index) => {
if (dataList.value[index].startDate && dataList.value[index].endDate) {
dataList.value[index].days = dayjs(dataList.value[index].endDate).diff(dayjs(dataList.value[index].startDate), "day");
console.log(dataList.value[index].days)
dataList.value[index].days = dayjs(dataList.value[index].endDate).diff(dayjs(dataList.value[index].startDate), "day") + 1;
dataList.value[index].month = Math.floor(dataList.value[index].days / 30);
dataList.value[index].day = dataList.value[index].days - (Math.floor(dataList.value[index].days / 30) * 30);
if (dataList.value[index].monthAmount) dataList.value[index].dailyAmount = (dataList.value[index].monthAmount / 30).toFixed(8);
}
};
@@ -164,15 +219,39 @@ const del = (index: number) => {
dataList.value.splice(index, 1);
};
const totals = ref({ amountWithTax: 0, tax: 0, amountWithoutTax: 0 });
const calTotals = () => {
let amountWithTax = 0;
let tax = 0;
let amountWithoutTax = 0;
if (dataList.value && dataList.value.length > 0 && (dataList.value[0].taxRate !== undefined)) {
const taxRate = dataList.value[0].taxRate;
dataList.value.forEach(({ month, monthAmount, day, dailyAmount, payRate }) => {
amountWithTax += (month * monthAmount + day * dailyAmount) * payRate / 100;
});
amountWithTax = Number(amountWithTax.toFixed(2));
tax = amountWithTax * (taxRate / 100);
tax = Number(tax.toFixed(2));
amountWithoutTax = amountWithTax - tax;
amountWithoutTax = Number(amountWithoutTax.toFixed(2));
}
totals.value = { amountWithTax, tax, amountWithoutTax };
};
onMounted(() => {
dataList.value = props.dataSource;
calTotals();
});
watch(
() => props.dataSource,
(dataSource) => {
dataList.value = dataSource;
calTotals();
},
{ deep: true }
);
defineExpose({ dataList })
defineExpose({ dataList });
</script>