up
deploy to danak / build_and_deploy (push) Has been cancelled

This commit is contained in:
2026-06-26 16:25:30 +03:30
parent 9ce07ed3c2
commit c06415536a
5 changed files with 9 additions and 81 deletions
+1 -1
View File
@@ -58,7 +58,7 @@ const MyRequests: FC = () => {
<div className="space-y-1">
{item.items.map((requestItem) => (
<div key={requestItem.id}>
{requestItem.product.title} {requestItem.quantity} عدد
{requestItem.product.title}
</div>
))}
</div>
-4
View File
@@ -49,10 +49,6 @@ const RequestDetail: FC = () => {
<div className="text-xs text-desc">عنوان:</div>
<div className="text-sm font-medium text-black">{item.product.title}</div>
</div>
<div className='flex items-center gap-2'>
<div className="text-xs text-desc">تعداد:</div>
<div className="text-sm font-medium text-black">{item.quantity}</div>
</div>
</div>
</div>
+3 -65
View File
@@ -1,7 +1,5 @@
import { useEffect, useMemo, useState, type ChangeEvent, type FC } from 'react'
import Button from '@/components/Button'
import Input from '@/components/Input'
import Select from '@/components/Select'
import UploadBox from '@/components/UploadBox'
import VoiceRecorder from '@/components/VoiceRecorder'
import { COLORS } from '@/constants/colors'
@@ -19,7 +17,6 @@ import { clx } from '@/helpers/utils'
const emptyValues: RequestType = {
productId: undefined,
attachments: [],
quantity: undefined,
description: '',
attributes: [],
}
@@ -37,7 +34,6 @@ const Request: FC<Props> = ({ editIndex, initialItem, onSaved, onCancelEdit }) =
const { data } = useGetProducts()
const { setItems, items } = useRequestStore()
const [productSelected, setProductSelected] = useState<ProductType>()
const [quantitySelect, setQuantitySelect] = useState<string>('')
const [voiceFile, setVoiceFile] = useState<File>()
const [files, setFiles] = useState<File[]>([])
const singleUpload = useSingleUpload()
@@ -48,7 +44,6 @@ const Request: FC<Props> = ({ editIndex, initialItem, onSaved, onCancelEdit }) =
enableReinitialize: true,
validationSchema: Yup.object({
productId: Yup.string().required('این فیلد اجباری می باشد'),
quantity: Yup.number().required('این فیلد اجباری می باشد'),
}),
onSubmit: async (values) => {
const attachments: AttachmentsType[] = [...(values.attachments ?? [])]
@@ -97,11 +92,7 @@ const Request: FC<Props> = ({ editIndex, initialItem, onSaved, onCancelEdit }) =
const resolvedProduct = useMemo(() => {
if (productSelected) return productSelected
if (!activeProductId || !data?.data) return undefined
const product = data.data.find((p) => p.id === activeProductId)
if (!product) return undefined
const quantities = [...product.quantities]
if (quantities[0] !== 0) quantities.unshift(0)
return { ...product, quantities }
return data.data.find((p) => p.id === activeProductId)
}, [productSelected, activeProductId, data])
const { data: attributes } = useGetAttributes(resolvedProduct?.id)
@@ -112,17 +103,7 @@ const Request: FC<Props> = ({ editIndex, initialItem, onSaved, onCancelEdit }) =
const product = data.data.find((p) => p.id === initialItem.productId)
if (!product) return
const quantities = [...product.quantities]
if (quantities[0] !== 0) quantities.unshift(0)
setProductSelected({ ...product, quantities })
const qty = initialItem.quantity
if (qty !== undefined && quantities.includes(qty)) {
setQuantitySelect(String(qty))
} else {
setQuantitySelect('0')
}
setProductSelected(product)
}, [initialItem, data])
const handleProductChange = (e: ChangeEvent<HTMLSelectElement>) => {
@@ -130,12 +111,9 @@ const Request: FC<Props> = ({ editIndex, initialItem, onSaved, onCancelEdit }) =
const product = data?.data?.find((o) => o.id === productId)
if (product) {
const quantities = [...product.quantities]
if (quantities[0] !== 0) quantities.unshift(0)
setProductSelected({ ...product, quantities })
setProductSelected(product)
formik.setFieldValue('productId', productId)
formik.setFieldValue('attributes', [])
setQuantitySelect('')
}
}
@@ -179,46 +157,6 @@ const Request: FC<Props> = ({ editIndex, initialItem, onSaved, onCancelEdit }) =
/>
</div>
<div className='mt-6 rowTwoInput'>
<Select
items={
resolvedProduct?.quantities?.map((item) => ({
label: item === 0 ? 'انتخاب دلخواه' : String(item),
value: String(item),
})) ?? []
}
label='تعداد'
placeholder='انتخاب'
value={quantitySelect}
onChange={(e) => {
const value = e.target.value
setQuantitySelect(value)
if (value !== '0') {
formik.setFieldValue('quantity', Number(value))
}
}}
onBlur={formik.handleBlur}
name='quantity'
error_text={
formik.touched.quantity && formik.errors.quantity
? formik.errors.quantity
: ''
}
/>
<Input
label='تعداد دلخواه'
readOnly={quantitySelect !== '0'}
{...formik.getFieldProps('quantity')}
type='number'
error_text={
formik.touched.quantity && formik.errors.quantity
? formik.errors.quantity
: ''
}
/>
</div>
<div className='mt-6'>
<VoiceRecorder
value={formik.values.description ?? ''}
@@ -58,14 +58,11 @@ const RequestItemsList: FC<Props> = ({
<div className='text-sm font-medium truncate'>
{getProductTitle(item.productId)}
</div>
<div className='text-description text-xs mt-1'>
تعداد: {item.quantity}
{item.attachments.length > 0 && (
<span className='mr-2'>
· {item.attachments.length} پیوست
</span>
)}
<div className='text-description text-xs mt-1'>
{item.attachments.length} پیوست
</div>
)}
<div className='flex gap-2 mt-3'>
<button
type='button'
-3
View File
@@ -19,7 +19,6 @@ export type AttachmentsType = {
export type RequestType = {
productId?: string;
quantity?: number;
attributes: {
fieldId: string;
value: string | number;
@@ -89,7 +88,6 @@ export interface MyRequestType extends RowDataType {
}[];
description: string;
product: ProductType;
quantity: number;
subTotal: number;
total: number;
unitPrice: number;
@@ -161,7 +159,6 @@ export type RequestDetailItemType = {
product: RequestDetailProductType;
attributes: RequestDetailItemAttributeType[];
request: string;
quantity: number;
description: string;
attachments: AttachmentsType[];
};