diff --git a/src/api/arcb/salary/expenseconf/index.ts b/src/api/arcb/salary/expenseconf/index.ts
new file mode 100644
index 000000000..1b1f6d78e
--- /dev/null
+++ b/src/api/arcb/salary/expenseconf/index.ts
@@ -0,0 +1,42 @@
+import request from '@/config/axios'
+
+// 缴存比例配置 VO
+export interface ExpenseConfVO {
+ id: number // 序号
+ expenseType: string // 缴存费用类型
+ expenseName: string // 缴存名称
+ expenseProportion: number // 缴存比例
+}
+
+// 缴存比例配置 API
+export const ExpenseConfApi = {
+ // 查询缴存比例配置分页
+ getExpenseConfPage: async (params: any) => {
+ return await request.get({ url: `/salary/expense-conf/page`, params })
+ },
+
+ // 查询缴存比例配置详情
+ getExpenseConf: async (id: number) => {
+ return await request.get({ url: `/salary/expense-conf/get?id=` + id })
+ },
+
+ // 新增缴存比例配置
+ createExpenseConf: async (data: ExpenseConfVO) => {
+ return await request.post({ url: `/salary/expense-conf/create`, data })
+ },
+
+ // 修改缴存比例配置
+ updateExpenseConf: async (data: ExpenseConfVO) => {
+ return await request.put({ url: `/salary/expense-conf/update`, data })
+ },
+
+ // 删除缴存比例配置
+ deleteExpenseConf: async (id: number) => {
+ return await request.delete({ url: `/salary/expense-conf/delete?id=` + id })
+ },
+
+ // 导出缴存比例配置 Excel
+ exportExpenseConf: async (params) => {
+ return await request.download({ url: `/salary/expense-conf/export-excel`, params })
+ },
+}
diff --git a/src/api/arcb/salary/salaryconfig/index.ts b/src/api/arcb/salary/salaryconfig/index.ts
new file mode 100644
index 000000000..3cbeb1a56
--- /dev/null
+++ b/src/api/arcb/salary/salaryconfig/index.ts
@@ -0,0 +1,48 @@
+import request from '@/config/axios'
+
+// 员工薪资项目配置 VO
+export interface SalaryConfVO {
+ id: number // 唯一标识符
+ idNo: string // 身份证号
+ levelGear: string // 职级档位
+ stationSalary: number // 岗位工资
+ hardshipAllowance: number // 艰苦补贴
+ annuityBase: number // 企业年金缴纳基数
+ socialSecurityBase: number // 社保缴纳基数
+ pensionBase: number // 养老金缴纳基数
+ housingFundBase: number // 住房公积金缴纳基数
+ month: string // 年月
+}
+
+// 员工薪资项目配置 API
+export const SalaryConfApi = {
+ // 查询员工薪资项目配置分页
+ getSalaryConfPage: async (params: any) => {
+ return await request.get({ url: `/salary/salary-conf/page`, params })
+ },
+
+ // 查询员工薪资项目配置详情
+ getSalaryConf: async (id: number) => {
+ return await request.get({ url: `/salary/salary-conf/get?id=` + id })
+ },
+
+ // 新增员工薪资项目配置
+ createSalaryConf: async (data: SalaryConfVO) => {
+ return await request.post({ url: `/salary/salary-conf/create`, data })
+ },
+
+ // 修改员工薪资项目配置
+ updateSalaryConf: async (data: SalaryConfVO) => {
+ return await request.put({ url: `/salary/salary-conf/update`, data })
+ },
+
+ // 删除员工薪资项目配置
+ deleteSalaryConf: async (id: number) => {
+ return await request.delete({ url: `/salary/salary-conf/delete?id=` + id })
+ },
+
+ // 导出员工薪资项目配置 Excel
+ exportSalaryConf: async (params) => {
+ return await request.download({ url: `/salary/salary-conf/export-excel`, params })
+ },
+}
diff --git a/src/utils/dict.ts b/src/utils/dict.ts
index 83fdd8212..b125408d3 100644
--- a/src/utils/dict.ts
+++ b/src/utils/dict.ts
@@ -246,6 +246,7 @@ export enum DICT_TYPE {
ARCB_POSITION_CATEGORY = 'arcb_position_category', //岗位序列
ARCB_SPECIAL_COST_NAME = 'arcb_special_cost_name', //特殊费用名称
ARCB_SPECIAL_COST_TYPE = 'arcb_special_cost_type', //特殊费用类型
+ ARCB_EXPENSE_TYPE = 'arcb_expense_type', //缴存费用类型
ARCB_SALARY_SPECIAL_ATTENDANCE = 'arcb_salary_special_attendance' //特殊考勤-考勤状态
diff --git a/src/views/arcb/salary/expenseconf/ExpenseConfForm.vue b/src/views/arcb/salary/expenseconf/ExpenseConfForm.vue
new file mode 100644
index 000000000..5439fe155
--- /dev/null
+++ b/src/views/arcb/salary/expenseconf/ExpenseConfForm.vue
@@ -0,0 +1,112 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/views/arcb/salary/expenseconf/index.vue b/src/views/arcb/salary/expenseconf/index.vue
new file mode 100644
index 000000000..909bf6934
--- /dev/null
+++ b/src/views/arcb/salary/expenseconf/index.vue
@@ -0,0 +1,232 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+
+
+
+ 重置
+
+
+
+ 新增
+
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/arcb/salary/salaryconfig/SalaryConfForm.vue b/src/views/arcb/salary/salaryconfig/SalaryConfForm.vue
new file mode 100644
index 000000000..254560225
--- /dev/null
+++ b/src/views/arcb/salary/salaryconfig/SalaryConfForm.vue
@@ -0,0 +1,161 @@
+
+
+
+
\ No newline at end of file
diff --git a/src/views/arcb/salary/salaryconfig/index.vue b/src/views/arcb/salary/salaryconfig/index.vue
new file mode 100644
index 000000000..7397b14fd
--- /dev/null
+++ b/src/views/arcb/salary/salaryconfig/index.vue
@@ -0,0 +1,224 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+
+
+
+ 重置
+
+
+
+ 新增
+
+
+
+ 导出
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/arcb/salary/specialfee/SpecialFeeForm.vue b/src/views/arcb/salary/specialfee/SpecialFeeForm.vue
index 7f0c250cd..28e1be532 100644
--- a/src/views/arcb/salary/specialfee/SpecialFeeForm.vue
+++ b/src/views/arcb/salary/specialfee/SpecialFeeForm.vue
@@ -76,7 +76,11 @@ const formRules = reactive({
validator: (rule, value, callback) => {
const regex = /^\d{6}$/; // 匹配6位数字,如202412
if (!regex.test(value)) {
- callback(new Error('请输入正确的年月格式,如202412'));
+ const currentYear = new Date().getFullYear();
+ const currentMonth = String(new Date().getMonth() + 1).padStart(2, '0'); // 月份从0开始,需要加1,并确保是两位数
+ const currentYearMonth = `${currentYear}${currentMonth}`;
+
+ callback(new Error(`请输入正确的年月格式,如${currentYearMonth}`));
} else {
callback();
}
diff --git a/src/views/arcb/salary/specialfee/index.vue b/src/views/arcb/salary/specialfee/index.vue
index 374e767b0..8cc26e9c7 100644
--- a/src/views/arcb/salary/specialfee/index.vue
+++ b/src/views/arcb/salary/specialfee/index.vue
@@ -197,6 +197,7 @@ import {dateFormatter} from '@/utils/formatTime'
import download from '@/utils/download'
import {SpecialFeeApi, SpecialFeeVO} from '@/api/arcb/salary/specialfee'
import SpecialFeeForm from './SpecialFeeForm.vue'
+import SpecialFeeImportForm from './SpecialFeeImportForm.vue'
/** 特殊费用项目 列表 */
defineOptions({name: 'SpecialFee'})