update tender form
This commit is contained in:
@@ -182,11 +182,8 @@ function TendersContent() {
|
||||
|
||||
const errors: Record<string, string> = {}
|
||||
|
||||
if (!formData.tenderNumber?.trim()) errors.tenderNumber = t('common.required')
|
||||
if (!formData.issuingBodyName?.trim()) errors.issuingBodyName = t('common.required')
|
||||
if (!formData.title?.trim()) errors.title = t('common.required')
|
||||
if (!formData.announcementDate) errors.announcementDate = t('common.required')
|
||||
if (!formData.closingDate) errors.closingDate = t('common.required')
|
||||
|
||||
if (Number(formData.initialBondValue || 0) < 0) {
|
||||
errors.initialBondValue = t('common.required')
|
||||
@@ -231,11 +228,8 @@ function TendersContent() {
|
||||
|
||||
const errors: Record<string, string> = {}
|
||||
|
||||
if (!formData.tenderNumber?.trim()) errors.tenderNumber = t('common.required')
|
||||
if (!formData.issuingBodyName?.trim()) errors.issuingBodyName = t('common.required')
|
||||
if (!formData.title?.trim()) errors.title = t('common.required')
|
||||
if (!formData.announcementDate) errors.announcementDate = t('common.required')
|
||||
if (!formData.closingDate) errors.closingDate = t('common.required')
|
||||
|
||||
if (Number(formData.initialBondValue || 0) < 0) {
|
||||
errors.initialBondValue = t('common.required')
|
||||
@@ -289,11 +283,11 @@ function TendersContent() {
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">
|
||||
{t('tenders.tenderNumber')} *
|
||||
{t('tenders.tenderNumber')}
|
||||
</label>
|
||||
<input
|
||||
type="text"
|
||||
value={formData.tenderNumber}
|
||||
value={formData.tenderNumber ?? ''}
|
||||
onChange={(e) => setFormData({ ...formData, tenderNumber: e.target.value })}
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
/>
|
||||
@@ -354,9 +348,12 @@ function TendersContent() {
|
||||
<input
|
||||
type="number"
|
||||
min={0}
|
||||
value={formData.termsValue || ''}
|
||||
value={formData.termsValue ?? ''}
|
||||
onChange={(e) =>
|
||||
setFormData({ ...formData, termsValue: Number(e.target.value) || 0 })
|
||||
setFormData({
|
||||
...formData,
|
||||
termsValue: e.target.value === '' ? 0 : Number(e.target.value),
|
||||
})
|
||||
}
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
/>
|
||||
@@ -369,14 +366,11 @@ function TendersContent() {
|
||||
<input
|
||||
type="number"
|
||||
min={0}
|
||||
value={formData.initialBondValue || ''}
|
||||
onChange={(e) =>
|
||||
setFormData({
|
||||
...formData,
|
||||
initialBondValue: Number(e.target.value) || 0,
|
||||
bondValue: Number(e.target.value) || 0,
|
||||
})
|
||||
}
|
||||
value={formData.initialBondValue ?? ''}
|
||||
onChange={(e) => {
|
||||
const v = e.target.value === '' ? 0 : Number(e.target.value)
|
||||
setFormData({ ...formData, initialBondValue: v, bondValue: v })
|
||||
}}
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
/>
|
||||
{formErrors.initialBondValue && (
|
||||
@@ -391,9 +385,12 @@ function TendersContent() {
|
||||
<input
|
||||
type="number"
|
||||
min={0}
|
||||
value={formData.finalBondValue || ''}
|
||||
value={formData.finalBondValue ?? ''}
|
||||
onChange={(e) =>
|
||||
setFormData({ ...formData, finalBondValue: Number(e.target.value) || 0 })
|
||||
setFormData({
|
||||
...formData,
|
||||
finalBondValue: e.target.value === '' ? 0 : Number(e.target.value),
|
||||
})
|
||||
}
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
/>
|
||||
@@ -418,11 +415,11 @@ function TendersContent() {
|
||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">
|
||||
{t('tenders.announcementDate')} *
|
||||
{t('tenders.announcementDate')}
|
||||
</label>
|
||||
<input
|
||||
type="date"
|
||||
value={formData.announcementDate}
|
||||
value={formData.announcementDate ?? ''}
|
||||
onChange={(e) => setFormData({ ...formData, announcementDate: e.target.value })}
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
/>
|
||||
@@ -433,11 +430,11 @@ function TendersContent() {
|
||||
|
||||
<div>
|
||||
<label className="block text-sm font-medium text-gray-700 mb-1">
|
||||
{t('tenders.closingDate')} *
|
||||
{t('tenders.closingDate')}
|
||||
</label>
|
||||
<input
|
||||
type="date"
|
||||
value={formData.closingDate}
|
||||
value={formData.closingDate ?? ''}
|
||||
onChange={(e) => setFormData({ ...formData, closingDate: e.target.value })}
|
||||
className="w-full px-3 py-2 border rounded-lg"
|
||||
/>
|
||||
|
||||
@@ -2,7 +2,7 @@ import { api } from '../api'
|
||||
|
||||
export interface Tender {
|
||||
id: string
|
||||
tenderNumber: string
|
||||
tenderNumber?: string | null
|
||||
issueNumber?: string | null
|
||||
issuingBodyName: string
|
||||
title: string
|
||||
@@ -18,8 +18,8 @@ export interface Tender {
|
||||
siteVisitLocation?: string | null
|
||||
termsPickupProvince?: string | null
|
||||
|
||||
announcementDate: string
|
||||
closingDate: string
|
||||
announcementDate?: string | null
|
||||
closingDate?: string | null
|
||||
announcementLink?: string
|
||||
source: string
|
||||
sourceOther?: string
|
||||
@@ -57,7 +57,7 @@ export interface TenderDirective {
|
||||
}
|
||||
|
||||
export interface CreateTenderData {
|
||||
tenderNumber: string
|
||||
tenderNumber?: string | null
|
||||
issueNumber?: string
|
||||
issuingBodyName: string
|
||||
title: string
|
||||
@@ -73,8 +73,8 @@ export interface CreateTenderData {
|
||||
siteVisitLocation?: string
|
||||
termsPickupProvince?: string
|
||||
|
||||
announcementDate: string
|
||||
closingDate: string
|
||||
announcementDate?: string | null
|
||||
closingDate?: string | null
|
||||
announcementLink?: string
|
||||
source: string
|
||||
sourceOther?: string
|
||||
|
||||
Reference in New Issue
Block a user