PersonnelConfigModal.vue 3.25 KB

<template>
    <BasicModal v-bind="$attrs" @register="registerModal" :title="getTitle" @ok="handleSubmit">
      <BasicForm @register="registerForm" />
    </BasicModal>
  </template>
  <script lang="ts">
    import { defineComponent, ref, computed, unref } from 'vue';
    import { BasicModal, useModalInner } from '/@/components/Modal';
    import { BasicForm, useForm } from '/@/components/Form';
    import { formSchema } from './personnelConfig.data';
    import { addPersonnelConfig, editPersonnelConfig } from '/@/api/project/account';
    export default defineComponent({
      name: 'PersonnelConfigModal',
      components: { BasicModal, BasicForm },
      emits: ['success', 'register'],
      setup(_, { emit }) {
        const isUpdate = ref(true);
        const rowId = ref('');
        const [registerForm, { resetFields, setFieldsValue, validate }] = useForm({
          labelWidth: 100,
          baseColProps: { span: 24 },
          schemas: formSchema,
          showActionButtonGroup: false,
          actionColOptions: { span: 23 },
        });
        const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
          resetFields();
          setModalProps({ confirmLoading: false });
          isUpdate.value = !!data?.isUpdate;
          if (unref(isUpdate)) {
            rowId.value = data.record.id;
            setFieldsValue({
              year: data.record.year,
              month: data.record.month,
              calendarDays: data.record.calendarDays,
              workDays: data.record.workDays,
              salaryDays: data.record.salaryDays,
              legalHolidays: data.record.legalHolidays,
            });
          }
        });
        const getTitle = computed(() => (!unref(isUpdate) ? '新增考勤日历配置' : '编辑考勤日历配置'));
        async function handleSubmit() {
          try {
            const values = await validate();
            setModalProps({ confirmLoading: true });
            
            // 按照API要求构造数据格式
            const submitData: any = {
              settingCode: "paydayYear",
              settingName: "人事计薪日配置年份",
              settingValue: values.year,
              relationCode: "paydayMonth",
              relationName: values.month,
              relationValue: values.paydaySettingItemVO,
              paydaySettingItemVO: 
                {
                  allDay: Number(values.calendarDays),
                  weekDay: Number(values.workDays),
                  payDay: Number(values.salaryDays),
                  appointedDay: Number(values.legalHolidays)
                }
              
            };
            
            // 如果是编辑模式,添加ID
            if (unref(isUpdate)) {
              submitData.id = rowId.value;
              submitData.settingType = 60;
              await editPersonnelConfig(submitData);
            } else {
              submitData.settingType = 60;
              await addPersonnelConfig(submitData);
            }
            
            closeModal();
            emit('success');
          } finally {
            setModalProps({ confirmLoading: false });
          }
        }
        return { registerModal, registerForm, getTitle, handleSubmit };
      },
    });
  </script>