liu
昨天 602d3975198790f467d7c77d103902c7d3a218b7
src/views/hrm/salary/leave-type-config/modules/form.vue
@@ -1,19 +1,28 @@
<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: {
@@ -36,11 +45,35 @@
      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'));
@@ -52,16 +85,24 @@
    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>