feat(professors): add nationalId required field to professor form and table
This commit is contained in:
@@ -20,9 +20,14 @@
|
|||||||
<InputText v-model.trim="form.surname" class="w-full text-sm" />
|
<InputText v-model.trim="form.surname" class="w-full text-sm" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="col-12 md:col-6 flex flex-column gap-2">
|
||||||
|
<label class="font-semibold text-sm">{{ $t('users.nationalId') }} *</label>
|
||||||
|
<InputText v-model.trim="form.nationalIdCode" class="w-full text-sm" dir="ltr" />
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="col-12 md:col-6 flex flex-column gap-2">
|
<div class="col-12 md:col-6 flex flex-column gap-2">
|
||||||
<label class="font-semibold text-sm">{{ $t('users.phone') }} *</label>
|
<label class="font-semibold text-sm">{{ $t('users.phone') }} *</label>
|
||||||
<InputText v-model.trim="form.phone" class="w-full text-sm" dir="ltr" />
|
<InputText v-model.trim="form.phoneNumber" class="w-full text-sm" dir="ltr" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-12 md:col-6 flex flex-column gap-2">
|
<div class="col-12 md:col-6 flex flex-column gap-2">
|
||||||
@@ -65,7 +70,8 @@ const isSubmitting = ref(false);
|
|||||||
const form = reactive({
|
const form = reactive({
|
||||||
name: '',
|
name: '',
|
||||||
surname: '',
|
surname: '',
|
||||||
phone: '',
|
nationalIdCode: '',
|
||||||
|
phoneNumber: '',
|
||||||
email: '',
|
email: '',
|
||||||
bio: ''
|
bio: ''
|
||||||
});
|
});
|
||||||
@@ -78,7 +84,8 @@ const fetchProfessor = async () => {
|
|||||||
Object.assign(form, {
|
Object.assign(form, {
|
||||||
name: data.name || '',
|
name: data.name || '',
|
||||||
surname: data.surname || '',
|
surname: data.surname || '',
|
||||||
phone: data.phone || '',
|
nationalIdCode: data.nationalIdCode || data.nationalId || '',
|
||||||
|
phoneNumber: data.phoneNumber || data.phone || '',
|
||||||
email: data.email || '',
|
email: data.email || '',
|
||||||
bio: data.bio || ''
|
bio: data.bio || ''
|
||||||
});
|
});
|
||||||
@@ -88,14 +95,33 @@ const fetchProfessor = async () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const handleSubmit = async () => {
|
const handleSubmit = async () => {
|
||||||
if (!form.name || !form.surname) { showError('نام و نام خانوادگی الزامی است'); return; }
|
if (!form.name || !form.surname) {
|
||||||
|
showError('نام و نام خانوادگی الزامی است');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!form.nationalIdCode) {
|
||||||
|
showError('کد ملی الزامی است');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!form.phoneNumber) {
|
||||||
|
showError('شماره همراه الزامی است');
|
||||||
|
return;
|
||||||
|
}
|
||||||
isSubmitting.value = true;
|
isSubmitting.value = true;
|
||||||
try {
|
try {
|
||||||
|
const payload = {
|
||||||
|
name: form.name,
|
||||||
|
surname: form.surname,
|
||||||
|
nationalIdCode: form.nationalIdCode,
|
||||||
|
phoneNumber: form.phoneNumber,
|
||||||
|
email: form.email || undefined,
|
||||||
|
bio: form.bio || undefined
|
||||||
|
};
|
||||||
if (isEditMode.value) {
|
if (isEditMode.value) {
|
||||||
await professorApi.update(professorId, form);
|
await professorApi.update(professorId, payload);
|
||||||
showSuccess('اطلاعات استاد با موفقیت ویرایش شد');
|
showSuccess('اطلاعات استاد با موفقیت ویرایش شد');
|
||||||
} else {
|
} else {
|
||||||
await professorApi.create(form);
|
await professorApi.create(payload);
|
||||||
showSuccess('استاد جدید با موفقیت ایجاد شد');
|
showSuccess('استاد جدید با موفقیت ایجاد شد');
|
||||||
}
|
}
|
||||||
router.push('/professors');
|
router.push('/professors');
|
||||||
|
|||||||
@@ -25,6 +25,12 @@
|
|||||||
</template>
|
</template>
|
||||||
</Column>
|
</Column>
|
||||||
|
|
||||||
|
<Column field="nationalIdCode" header="کد ملی">
|
||||||
|
<template #body="{ data }">
|
||||||
|
{{ toPersianDigits(data.nationalIdCode || data.nationalId) || '-' }}
|
||||||
|
</template>
|
||||||
|
</Column>
|
||||||
|
|
||||||
<Column field="specialization" header="تخصص">
|
<Column field="specialization" header="تخصص">
|
||||||
<template #body="{ data }">
|
<template #body="{ data }">
|
||||||
<Tag :value="data.specialization || 'عمومی'" severity="secondary" />
|
<Tag :value="data.specialization || 'عمومی'" severity="secondary" />
|
||||||
|
|||||||
Reference in New Issue
Block a user