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
@@ -10,6 +10,22 @@
</a-select-option>
</a-select>
</template>
<template v-if="column.key === 'inDate'">
<a-date-picker
class="ele-fluid"
placeholder="请选择实际进场日期"
v-model:value="record.inDate"
valueFormat="YYYY-MM-DD"
/>
</template>
<template v-if="column.key === 'outDate'">
<a-date-picker
class="ele-fluid"
placeholder="请选择实际出场日期"
v-model:value="record.outDate"
valueFormat="YYYY-MM-DD"
/>
</template>
<template v-if="column.key === 'singleAmount'">
<a-input v-model:value="record.singleAmount" type="number" />
</template>
@@ -19,22 +35,24 @@
<template v-if="column.key === 'unit'">
<a-input v-model:value="record.unit" />
</template>
<template v-if="column.key === 'sumAmount'">
<span v-if="record.singleAmount && record.num">
{{ (record.singleAmount * record.num).toFixed(2) }}
</span>
<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.singleAmount && record.num">{{ (record.singleAmount * record.num).toFixed(2) }}</span>
<span
v-if="record.singleAmount && record.num">{{ ((record.singleAmount * record.num) * record.payRate / 100).toFixed(2)
}}</span>
</template>
<template v-if="column.key === 'tax'">
<span
v-if="record.singleAmount && record.num">{{ (record.singleAmount * record.num * (record.taxRate / 100)).toFixed(2)
v-if="record.singleAmount && record.num">{{ ((record.singleAmount * record.num) * record.payRate / 100 * (record.taxRate / 100)).toFixed(2)
}}</span>
</template>
<template v-if="column.key === 'amountWithoutTax'">
<span
v-if="record.singleAmount && record.num">{{ ((record.singleAmount * record.num) - (record.singleAmount * record.num * (record.taxRate / 100))).toFixed(2)
v-if="record.singleAmount && record.num">{{ (((record.singleAmount * record.num) * record.payRate / 100) - (record.singleAmount * record.num * (record.taxRate / 100))).toFixed(2)
}}</span>
</template>
<template v-if="column.key === 'remark'">
@@ -47,6 +65,29 @@
</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>
{{ 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>
@@ -59,7 +100,7 @@ import {
CloseCircleOutlined
} from "@ant-design/icons-vue";
import dayjs from "dayjs";
import { DictDataParam } from "@/api/system/dict-data/model";
import { DictData, DictDataParam } from "@/api/system/dict-data/model";
import { listDictData } from "@/api/system/dict-data";
const props = defineProps<{
@@ -67,7 +108,7 @@ const props = defineProps<{
}>();
const tableRef0 = ref<InstanceType<typeof EleProTable> | null>(null);
const dictList = ref<DictDataParam[]>([]);
const dictList = ref<DictData[]>([]);
const getDictList = async () => {
dictList.value = await listDictData({ dictId: 146 });
};
@@ -97,6 +138,16 @@ const columns = ref<ColumnItem[]>([
dataIndex: "factoryNo",
key: "factoryNo"
},
{
title: "实际进场日期",
dataIndex: "inDate",
key: "inDate"
},
{
title: "实际出场日期",
dataIndex: "outDate",
key: "outDate"
},
{
title: "费用类型",
dataIndex: "settleCostType",
@@ -117,6 +168,11 @@ const columns = ref<ColumnItem[]>([
dataIndex: "unit",
key: "unit"
},
{
title: "支付比例",
dataIndex: "payRate",
key: "payRate"
},
{
title: "含税金额(元)",
dataIndex: "amountWithTax",
@@ -148,21 +204,42 @@ const dataList = ref<SettleDetail[]>([]);
const del = (index: number) => {
dataList.value.splice(index, 1);
calTotals();
};
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(({ singleAmount, num, payRate }) => {
amountWithTax += singleAmount * num * 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 };
};
watch(
() => props.dataSource,
(dataSource) => {
dataList.value = dataSource;
console.log(dataList.value);
calTotals();
},
{ deep: true }
);
onMounted(() => {
getDictList();
dataList.value = props.dataSource;
});
defineExpose({ dataList })
defineExpose({ dataList });
</script>