| | |
| | | <script lang="ts" setup> |
| | | import type { FormType } from '../data'; |
| | | import type { HrmLeaveTypeConfigApi } from '#/api/hrm/leave-type-config'; |
| | | |
| | | import { ref } from 'vue'; |
| | | import { computed, ref } from 'vue'; |
| | | |
| | | import { useVbenModal } from '#/packages/effects/common-ui/src'; |
| | | |
| | | import { message } from 'ant-design-vue'; |
| | | |
| | | import { useVbenForm } from '#/adapter/form'; |
| | | import { updateLeaveTypeConfig } from '#/api/hrm/leave-type-config'; |
| | | import { |
| | | createLeaveTypeConfig, |
| | | updateLeaveTypeConfig, |
| | | } from '#/api/hrm/leave-type-config'; |
| | | import { $t } from '#/locales'; |
| | | |
| | | import { useFormSchema } from '../data'; |
| | | |
| | | const emit = defineEmits(['success']); |
| | | const formType = ref<FormType>('create'); |
| | | |
| | | const getTitle = computed(() => |
| | | formType.value === 'update' ? '编辑扣款比例' : '新增请假扣款配置', |
| | | ); |
| | | |
| | | const [Form, formApi] = useVbenForm({ |
| | | commonConfig: { |
| | |
| | | return; |
| | | } |
| | | modalApi.lock(); |
| | | const data = await formApi.getValues(); |
| | | const data = (await formApi.getValues()) as HrmLeaveTypeConfigApi.LeaveTypeConfig; |
| | | // 转换比例为小数 |
| | | data.deductionRatio = data.deductionRatio / 100; |
| | | const deductionRatio = data.deductionRatio! / 100; |
| | | try { |
| | | await updateLeaveTypeConfig(data); |
| | | if (formType.value === 'update') { |
| | | await updateLeaveTypeConfig({ |
| | | id: data.id, |
| | | deductionRatio, |
| | | remark: data.remark, |
| | | status: data.status, |
| | | }); |
| | | } else { |
| | | // 请假类型名称由所选类型自动带出,无需手动填写 |
| | | const NAME_MAP: Record<number, string> = { |
| | | 1: '事假', |
| | | 2: '病假', |
| | | 3: '年假', |
| | | 4: '婚假', |
| | | 5: '产假', |
| | | 6: '丧假', |
| | | }; |
| | | await createLeaveTypeConfig({ |
| | | leaveType: data.leaveType, |
| | | name: NAME_MAP[data.leaveType!] ?? '', |
| | | deductionRatio, |
| | | remark: data.remark, |
| | | status: data.status, |
| | | }); |
| | | } |
| | | await modalApi.close(); |
| | | emit('success'); |
| | | message.success($t('ui.actionMessage.operationSuccess')); |
| | |
| | | if (!isOpen) { |
| | | return; |
| | | } |
| | | const data = modalApi.getData<{ id: number; row: HrmLeaveTypeConfigApi.LeaveTypeConfig }>(); |
| | | const data = modalApi.getData<{ formType: FormType; row: HrmLeaveTypeConfigApi.LeaveTypeConfig }>(); |
| | | formType.value = data.formType; |
| | | if (data.formType === 'create' || !data.row) { |
| | | await formApi.resetForm(); |
| | | return; |
| | | } |
| | | // 转换比例为百分比显示 |
| | | const row = { ...data.row, deductionRatio: (data.row.deductionRatio || 0) * 100 }; |
| | | const row = { |
| | | ...data.row, |
| | | deductionRatio: (data.row.deductionRatio || 0) * 100, |
| | | }; |
| | | await formApi.setValues(row); |
| | | }, |
| | | }); |
| | | </script> |
| | | |
| | | <template> |
| | | <Modal title="编辑扣款比例" class="w-[600px]"> |
| | | <Modal :title="getTitle" class="w-[600px]"> |
| | | <Form class="mx-4" /> |
| | | </Modal> |
| | | </template> |
| | | </template> |