feat(order): store structured json address and render cleanly in admin modal
This commit is contained in:
parent
9e3ea3a1b1
commit
4be51741e0
@ -970,22 +970,41 @@ export default function Orders() {
|
||||
اطلاعات پستی و ارسال
|
||||
</h4>
|
||||
<div className="space-y-2 text-xs">
|
||||
<div>
|
||||
<span className="text-gray-500 block mb-1">آدرس کامل تحویل:</span>
|
||||
<span className="font-bold text-gray-900 leading-relaxed block">
|
||||
{selectedOrder.address?.province ? `${selectedOrder.address.province}، ` : ''}
|
||||
{selectedOrder.address?.city ? `${selectedOrder.address.city}، ` : ''}
|
||||
{selectedOrder.address?.fullAddress || selectedOrder.shippingAddress || 'ثبت نشده'}
|
||||
</span>
|
||||
</div>
|
||||
{selectedOrder.address?.postalCode && (
|
||||
<div className="flex justify-between pt-1">
|
||||
<span className="text-gray-500">کد پستی:</span>
|
||||
<span className="font-mono font-bold text-gray-900">
|
||||
{toPersianDigits(selectedOrder.address.postalCode)}
|
||||
</span>
|
||||
</div>
|
||||
)}
|
||||
{(() => {
|
||||
let addrText = selectedOrder.address?.fullAddress || selectedOrder.shippingAddress || 'ثبت نشده';
|
||||
let postCode = selectedOrder.address?.postalCode;
|
||||
let prov = selectedOrder.address?.province;
|
||||
let ct = selectedOrder.address?.city;
|
||||
|
||||
if (typeof selectedOrder.shippingAddress === 'string' && selectedOrder.shippingAddress.trim().startsWith('{')) {
|
||||
try {
|
||||
const parsed = JSON.parse(selectedOrder.shippingAddress);
|
||||
addrText = parsed.formatted || `${parsed.province || ''}، ${parsed.city || ''}، ${parsed.address || ''}`;
|
||||
if (parsed.postalCode) postCode = parsed.postalCode;
|
||||
if (parsed.province) prov = parsed.province;
|
||||
if (parsed.city) ct = parsed.city;
|
||||
} catch {}
|
||||
}
|
||||
|
||||
return (
|
||||
<>
|
||||
<div>
|
||||
<span className="text-gray-500 block mb-1">آدرس کامل تحویل:</span>
|
||||
<span className="font-bold text-gray-900 leading-relaxed block">
|
||||
{addrText}
|
||||
</span>
|
||||
</div>
|
||||
{postCode && (
|
||||
<div className="flex justify-between pt-1">
|
||||
<span className="text-gray-500">کد پستی:</span>
|
||||
<span className="font-mono font-bold text-gray-900">
|
||||
{toPersianDigits(postCode)}
|
||||
</span>
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
})()}
|
||||
{/* Postal Tracking Code Input */}
|
||||
<div className="pt-2 border-t border-gray-200">
|
||||
<label className="block text-gray-500 font-bold mb-1">کد رهگیری پستی / تیپاکس:</label>
|
||||
|
||||
@ -131,7 +131,18 @@ export default function CheckoutPage() {
|
||||
let shippingAddressStr = '';
|
||||
|
||||
if (selectedAddr) {
|
||||
shippingAddressStr = `${selectedAddr.province}، ${selectedAddr.city}، ${selectedAddr.detail}${selectedAddr.zipCode ? ` (کد پستی: ${selectedAddr.zipCode})` : ''} (گیرنده: ${selectedAddr.receptorName} - ${toPersian(selectedAddr.phone)})`;
|
||||
const cleanPhone = normalizeDigits(selectedAddr.phone);
|
||||
const cleanZip = normalizeDigits(selectedAddr.zipCode);
|
||||
const text = `${selectedAddr.province}، ${selectedAddr.city}، ${selectedAddr.detail}${cleanZip ? ` (کد پستی: ${cleanZip})` : ''} (گیرنده: ${selectedAddr.receptorName} - ${toPersian(cleanPhone)})`;
|
||||
shippingAddressStr = JSON.stringify({
|
||||
province: selectedAddr.province,
|
||||
city: selectedAddr.city,
|
||||
address: selectedAddr.detail,
|
||||
postalCode: cleanZip,
|
||||
fullName: selectedAddr.receptorName,
|
||||
phone: cleanPhone,
|
||||
formatted: text
|
||||
});
|
||||
} else {
|
||||
const addrErrors = validateAddressForm(manualAddressData);
|
||||
setManualErrors(addrErrors);
|
||||
@ -143,7 +154,16 @@ export default function CheckoutPage() {
|
||||
const cleanPhone = normalizeDigits(manualAddressData.phone);
|
||||
const cleanZip = normalizeDigits(manualAddressData.zipCode);
|
||||
|
||||
shippingAddressStr = `${manualAddressData.province}، ${manualAddressData.city}، ${manualAddressData.detail}${cleanZip ? ` (کد پستی: ${cleanZip})` : ''} (گیرنده: ${manualAddressData.receptorName} - ${toPersian(cleanPhone)})`;
|
||||
const text = `${manualAddressData.province}، ${manualAddressData.city}، ${manualAddressData.detail}${cleanZip ? ` (کد پستی: ${cleanZip})` : ''} (گیرنده: ${manualAddressData.receptorName} - ${toPersian(cleanPhone)})`;
|
||||
shippingAddressStr = JSON.stringify({
|
||||
province: manualAddressData.province,
|
||||
city: manualAddressData.city,
|
||||
address: manualAddressData.detail,
|
||||
postalCode: cleanZip,
|
||||
fullName: manualAddressData.receptorName,
|
||||
phone: cleanPhone,
|
||||
formatted: text
|
||||
});
|
||||
|
||||
// Auto-save the new manual address to user's permanent address list
|
||||
try {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user