整合前端
This commit is contained in:
26
ruoyi-ui/src/mixins/employeeSelectMixin.js
Normal file
26
ruoyi-ui/src/mixins/employeeSelectMixin.js
Normal file
@@ -0,0 +1,26 @@
|
||||
import { listEmployee } from '@/api/oa/employee';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
employeeOptions: []
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
/** 获取员工下拉选项 */
|
||||
getEmployeeOptions() {
|
||||
listEmployee({ pageNum: 1, pageSize: 1000 }).then(res => {
|
||||
this.employeeOptions = (res.rows || []).map(item => ({
|
||||
label: item.employeeName,
|
||||
value: item.employeeId
|
||||
}));
|
||||
});
|
||||
},
|
||||
/** 根据员工ID获取员工姓名 */
|
||||
getEmployeeName(employeeId) {
|
||||
if (!employeeId) return '-';
|
||||
const employee = this.employeeOptions.find(item => item.value === employeeId);
|
||||
return employee ? employee.label : employeeId;
|
||||
}
|
||||
}
|
||||
};
|
||||
163
ruoyi-ui/src/mixins/insuranceSalaryTemplateMixin.js
Normal file
163
ruoyi-ui/src/mixins/insuranceSalaryTemplateMixin.js
Normal file
@@ -0,0 +1,163 @@
|
||||
// 保险模板下拉mixin
|
||||
import { listInsuranceTemplate } from '@/api/oa/finance/insuranceTemplate';
|
||||
import { listInsuranceTemplateDetail } from '@/api/oa/finance/insuranceTemplateDetail';
|
||||
|
||||
export const insuranceTemplateMixin = {
|
||||
data() {
|
||||
return {
|
||||
insuranceTemplateOptions: [],
|
||||
personalInsuranceTemplateOptions: [], // 个人缴纳保险模板选项
|
||||
companyInsuranceTemplateOptions: [], // 企业缴纳保险模板选项
|
||||
insuranceTemplateDetails: {} // 缓存模板明细数据
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
/** 获取保险模板下拉选项 */
|
||||
getInsuranceTemplateOptions() {
|
||||
listInsuranceTemplate({ pageNum: 1, pageSize: 1000 }).then(res => {
|
||||
const allTemplates = res.rows || [];
|
||||
|
||||
// 所有保险模板选项
|
||||
this.insuranceTemplateOptions = allTemplates.map(item => ({
|
||||
label: `${item.templateName} (${item.type === '0' ? '个人缴纳' : '企业缴纳'})`,
|
||||
value: item.insuranceTemplateId,
|
||||
type: item.type
|
||||
}));
|
||||
|
||||
// 个人缴纳保险模板选项 (type = '0')
|
||||
this.personalInsuranceTemplateOptions = allTemplates
|
||||
.filter(item => item.type == '0')
|
||||
.map(item => ({
|
||||
label: item.templateName,
|
||||
value: item.insuranceTemplateId,
|
||||
type: item.type
|
||||
}));
|
||||
|
||||
// 企业缴纳保险模板选项 (type = '1')
|
||||
this.companyInsuranceTemplateOptions = allTemplates
|
||||
.filter(item => item.type == '1')
|
||||
.map(item => ({
|
||||
label: item.templateName,
|
||||
value: item.insuranceTemplateId,
|
||||
type: item.type
|
||||
}));
|
||||
|
||||
console.log(this.companyInsuranceTemplateOptions, this.personalInsuranceTemplateOptions)
|
||||
});
|
||||
},
|
||||
/** 根据保险模板ID获取模板名称 */
|
||||
getInsuranceTemplateName(insuranceTemplateId) {
|
||||
if (!insuranceTemplateId) return '-';
|
||||
const template = this.insuranceTemplateOptions.find(item => item.value === insuranceTemplateId);
|
||||
return template ? template.label : insuranceTemplateId;
|
||||
},
|
||||
/** 根据保险模板ID获取模板类型 */
|
||||
getInsuranceTemplateType(insuranceTemplateId) {
|
||||
if (!insuranceTemplateId) return null;
|
||||
const template = this.insuranceTemplateOptions.find(item => item.value === insuranceTemplateId);
|
||||
return template ? template.type : null;
|
||||
},
|
||||
/** 获取保险模板明细列表 */
|
||||
getInsuranceTemplateDetails(insuranceTemplateId) {
|
||||
if (!insuranceTemplateId) return Promise.resolve([]);
|
||||
|
||||
// 如果已经缓存过,直接返回
|
||||
if (this.insuranceTemplateDetails[insuranceTemplateId]) {
|
||||
return Promise.resolve(this.insuranceTemplateDetails[insuranceTemplateId]);
|
||||
}
|
||||
|
||||
return listInsuranceTemplateDetail({
|
||||
insuranceTemplateId: insuranceTemplateId,
|
||||
pageNum: 1,
|
||||
pageSize: 1000
|
||||
}).then(res => {
|
||||
const details = res.rows || [];
|
||||
// 缓存数据
|
||||
this.insuranceTemplateDetails[insuranceTemplateId] = details;
|
||||
return details;
|
||||
});
|
||||
},
|
||||
/** 根据itemDetailId获取保险项目信息 */
|
||||
getInsuranceItemInfo(itemDetailId) {
|
||||
// 遍历所有缓存的模板明细,查找对应的项目
|
||||
for (const templateId in this.insuranceTemplateDetails) {
|
||||
const details = this.insuranceTemplateDetails[templateId];
|
||||
const item = details.find(detail => detail.insuranceDetailId === itemDetailId);
|
||||
if (item) {
|
||||
return {
|
||||
itemName: item.insuranceType,
|
||||
shouldAmount: item.amount,
|
||||
templateId: templateId
|
||||
};
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// 薪资模板下拉mixin
|
||||
import { listSalaryTemplate } from '@/api/oa/finance/salaryTemplate';
|
||||
import { listSalaryTemplateDetail } from '@/api/oa/finance/salaryTemplateDetail';
|
||||
|
||||
export const salaryTemplateMixin = {
|
||||
data() {
|
||||
return {
|
||||
salaryTemplateOptions: [],
|
||||
salaryTemplateDetails: {} // 缓存模板明细数据
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
/** 获取薪资模板下拉选项 */
|
||||
getSalaryTemplateOptions() {
|
||||
listSalaryTemplate({ pageNum: 1, pageSize: 1000 }).then(res => {
|
||||
this.salaryTemplateOptions = (res.rows || []).map(item => ({
|
||||
label: item.templateName,
|
||||
value: item.salaryTemplateId
|
||||
}));
|
||||
});
|
||||
},
|
||||
/** 根据薪资模板ID获取模板名称 */
|
||||
getSalaryTemplateName(salaryTemplateId) {
|
||||
if (!salaryTemplateId) return '-';
|
||||
const template = this.salaryTemplateOptions.find(item => item.value === salaryTemplateId);
|
||||
return template ? template.label : salaryTemplateId;
|
||||
},
|
||||
/** 获取薪资模板明细列表 */
|
||||
getSalaryTemplateDetails(salaryTemplateId) {
|
||||
if (!salaryTemplateId) return Promise.resolve([]);
|
||||
|
||||
// 如果已经缓存过,直接返回
|
||||
if (this.salaryTemplateDetails[salaryTemplateId]) {
|
||||
return Promise.resolve(this.salaryTemplateDetails[salaryTemplateId]);
|
||||
}
|
||||
|
||||
return listSalaryTemplateDetail({
|
||||
salaryTemplateId: salaryTemplateId,
|
||||
pageNum: 1,
|
||||
pageSize: 1000
|
||||
}).then(res => {
|
||||
const details = res.rows || [];
|
||||
// 缓存数据
|
||||
this.salaryTemplateDetails[salaryTemplateId] = details;
|
||||
return details;
|
||||
});
|
||||
},
|
||||
/** 根据itemDetailId获取薪资项目信息 */
|
||||
getSalaryItemInfo(itemDetailId) {
|
||||
// 遍历所有缓存的模板明细,查找对应的项目
|
||||
for (const templateId in this.salaryTemplateDetails) {
|
||||
const details = this.salaryTemplateDetails[templateId];
|
||||
const item = details.find(detail => detail.salaryDetailId === itemDetailId);
|
||||
if (item) {
|
||||
return {
|
||||
itemName: item.salaryItem,
|
||||
shouldAmount: item.amount,
|
||||
templateId: templateId
|
||||
};
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user