优化代码

This commit is contained in:
orangebabu
2025-06-11 15:16:44 +08:00
parent 3d08a777b5
commit 012273d1c7
4 changed files with 82 additions and 23 deletions

View File

@ -2213,9 +2213,13 @@ const distData: DistData = {
value: "companyCosts" value: "companyCosts"
}, },
{ {
label: "发工资", label: "发工资",
value: "salaryPayable" value: "salaryPayable"
}, },
{
label: "实发工资",
value: "actualSalary"
},
{ {
label: "个人所得税", label: "个人所得税",
value: "personalIncomeTax" value: "personalIncomeTax"
@ -2237,6 +2241,20 @@ const distData: DistData = {
value: "providentFundPaidByEnterprises" value: "providentFundPaidByEnterprises"
} }
], ],
"labor_fee_values": [
{
label: "劳务费总额",
value: "companyCosts"
},
{
label: "实发劳务费",
value: "actualSalary"
},
{
label: "代扣个人所得税",
value: "personalIncomeTax"
}
],
"salary_directions": [ "salary_directions": [
{ {
label: "借", label: "借",

View File

@ -8,7 +8,7 @@
<div class="queryForm"> <div class="queryForm">
<el-form :model="form" ref="formRef" :inline="true" label-width="68px"> <el-form :model="form" ref="formRef" :inline="true" label-width="68px">
<el-form-item label="凭证类型"> <el-form-item label="凭证类型">
<el-select v-model="form.voucherType" style="width: 200px"> <el-select v-model="form.voucherType" style="width: 200px" @change="handleChangeType">
<el-option v-for="item in voucherTypes" :label="item.label" :value="item.value"/> <el-option v-for="item in voucherTypes" :label="item.label" :value="item.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -47,7 +47,7 @@
:show-overflow-tooltip="true"> :show-overflow-tooltip="true">
<template #default="scope"> <template #default="scope">
<el-select v-model="scope.row.selectedValue" style="width: 100%"> <el-select v-model="scope.row.selectedValue" style="width: 100%">
<el-option v-for="item in salary_values" :label="item.label" :value="item.value"/> <el-option v-for="item in salaryValuesList" :label="item.label" :value="item.value"/>
</el-select> </el-select>
</template> </template>
</el-table-column> </el-table-column>
@ -89,10 +89,17 @@ import modal from "@/plugins/modal";
const {t} = useI18n() const {t} = useI18n()
const {proxy} = getCurrentInstance()!; const {proxy} = getCurrentInstance()!;
const {salary_values, salary_directions} const {salary_values, salary_directions, labor_fee_values}
= proxy?.useDict( "salary_values", "salary_directions"); = proxy?.useDict( "salary_values", "salary_directions", "labor_fee_values");
const emit: any = defineEmits(['dialogOfClosedMethods']) const emit: any = defineEmits(['dialogOfClosedMethods'])
const formRef = ref<InstanceType<typeof ElForm> | null>(null); const formRef = ref<InstanceType<typeof ElForm> | null>(null);
interface SalaryValueItem {
label: string
value: string | number
}
const salaryValuesList = ref<SalaryValueItem[]>([])
const props: any = defineProps({ const props: any = defineProps({
title: { title: {
type: String, type: String,
@ -185,35 +192,67 @@ function reset(): any {
form.value = { form.value = {
voucherType: 0, voucherType: 0,
wordHead: '记' wordHead: '记'
}; }
const summaryTemplate = typeTextMap[form.value.voucherType] || ""; // 先根据 voucherType 给 salaryValuesList 赋值
if (form.value.voucherType === 0 || form.value.voucherType === 1) {
salaryValuesList.value = salary_values.value
} else {
salaryValuesList.value = labor_fee_values.value
}
dataList.value = [{ // 取第一个值
const selectedValue = salaryValuesList.value.length > 0 ? salaryValuesList.value[0].value : null
// 设置 dataList
const summaryTemplate = typeTextMap[form.value.voucherType] || ""
dataList.value = [
{
id: null, id: null,
summary: summaryTemplate, summary: summaryTemplate,
direction: "1", direction: "1",
subjectCode: props.deptOptions?.[0]?.code || null, subjectCode: props.deptOptions?.[0]?.code || null,
selectedValue: salary_values.value[0].value, selectedValue: selectedValue,
}] }
]
formRef?.value?.resetFields(); formRef?.value?.resetFields()
} }
function addRecord() {
function addRecord() {
const summaryTemplate = typeTextMap[form.value.voucherType] || ""; const summaryTemplate = typeTextMap[form.value.voucherType] || "";
// 根据 voucherType 先切换数据源
if (form.value.voucherType === 0 || form.value.voucherType === 1) {
salaryValuesList.value = salary_values.value;
} else {
salaryValuesList.value = labor_fee_values.value;
}
// 如果 salaryValuesList 为空,安全处理(防止访问 undefined
const selectedValue = salaryValuesList.value.length > 0 ? salaryValuesList.value[0].value : null;
// 新增一条记录
dataList.value.push({ dataList.value.push({
id: null, id: null,
summary: summaryTemplate, summary: summaryTemplate,
direction: "1", direction: "1",
subjectCode: props.deptOptions?.[0]?.code || null, subjectCode: props.deptOptions?.[0]?.code || null,
selectedValue: salary_values.value[0].value, selectedValue: selectedValue,
}); });
} }
function handleChangeType() {
// 根据 voucherType 先切换数据源
if (form.value.voucherType === 0 || form.value.voucherType === 1) {
salaryValuesList.value = salary_values.value;
} else {
salaryValuesList.value = labor_fee_values.value;
}
}
function dialogOfClosedMethods(val: any): any { function dialogOfClosedMethods(val: any): any {
dialogStatus.value = false; dialogStatus.value = false;

View File

@ -29,7 +29,8 @@ import lombok.Getter;
@Getter @Getter
public enum SalaryVoucherTemplateEnum { public enum SalaryVoucherTemplateEnum {
COMPANY_COSTS("companyCosts", "公司成本"), COMPANY_COSTS("companyCosts", "公司成本"),
SALARY_PAYABLE("salaryPayable", "发工资"), SALARY_PAYABLE("salaryPayable", "发工资"),
ACTUAL_SALARY("actualSalary", "实发工资"),
PERSONAL_INCOME_TAX("personalIncomeTax", "个人所得税"), PERSONAL_INCOME_TAX("personalIncomeTax", "个人所得税"),
PERSONAL_WITHHOLDING_SOCIAL_SECURITY("personalWithholdingOfSocialSecurity", "个人代扣社保"), PERSONAL_WITHHOLDING_SOCIAL_SECURITY("personalWithholdingOfSocialSecurity", "个人代扣社保"),
PERSONAL_WITHHOLDING_PROVIDENT_FUND("personalWithholdingOfProvidentFund", "个人代扣公积金"), PERSONAL_WITHHOLDING_PROVIDENT_FUND("personalWithholdingOfProvidentFund", "个人代扣公积金"),

View File

@ -173,7 +173,8 @@ public class EmployeeSalarySummaryServiceImpl extends ServiceImpl<EmployeeSalary
BigDecimal amount = switch (matchedEnum) { BigDecimal amount = switch (matchedEnum) {
case COMPANY_COSTS -> summary.getBusinessExpenditureCosts(); case COMPANY_COSTS -> summary.getBusinessExpenditureCosts();
case SALARY_PAYABLE -> summary.getTotalAmount(); case SALARY_PAYABLE -> summary.getTotalAmount().add(summary.getTotalSocialInsurance()).add(summary.getProvidentFund()).add(summary.getPersonalTax());
case ACTUAL_SALARY -> summary.getTotalAmount();
case PERSONAL_INCOME_TAX -> summary.getPersonalTax(); case PERSONAL_INCOME_TAX -> summary.getPersonalTax();
case PERSONAL_WITHHOLDING_SOCIAL_SECURITY -> summary.getTotalSocialInsurance(); case PERSONAL_WITHHOLDING_SOCIAL_SECURITY -> summary.getTotalSocialInsurance();
case PERSONAL_WITHHOLDING_PROVIDENT_FUND -> summary.getProvidentFund(); case PERSONAL_WITHHOLDING_PROVIDENT_FUND -> summary.getProvidentFund();