real-boxing
This commit is contained in:
@@ -15,7 +15,6 @@
|
|||||||
"safe_warehouse": "安全仓库",
|
"safe_warehouse": "安全仓库",
|
||||||
"we_proud_to_serve_global": "我们以为全球提供最佳的货运和运输解决方案感到自豪。",
|
"we_proud_to_serve_global": "我们以为全球提供最佳的货运和运输解决方案感到自豪。",
|
||||||
"our_services": "我们的服务",
|
"our_services": "我们的服务",
|
||||||
|
|
||||||
"air_transport": "空运",
|
"air_transport": "空运",
|
||||||
"air_transport__subtitle": "CPost提供各类大型和重型货物的空运服务。",
|
"air_transport__subtitle": "CPost提供各类大型和重型货物的空运服务。",
|
||||||
"car_transport": "汽车运输",
|
"car_transport": "汽车运输",
|
||||||
@@ -28,13 +27,11 @@
|
|||||||
"warehouse_yivu_and_guanchjou__subtitle": "CPost在中国提供仓储物流服务,与从中国运输的车辆同时进行。",
|
"warehouse_yivu_and_guanchjou__subtitle": "CPost在中国提供仓储物流服务,与从中国运输的车辆同时进行。",
|
||||||
"customs_office_service": "海关清关服务",
|
"customs_office_service": "海关清关服务",
|
||||||
"customs_office_service__subtitle": "CPost重视客户的时间,并提供货物的海关申报服务。按照HS和TN编码对货物进行分类。",
|
"customs_office_service__subtitle": "CPost重视客户的时间,并提供货物的海关申报服务。按照HS和TN编码对货物进行分类。",
|
||||||
|
|
||||||
"pricing": {
|
"pricing": {
|
||||||
"title": "价格",
|
"title": "价格",
|
||||||
"limit": "交货时间:",
|
"limit": "交货时间:",
|
||||||
"min_weight": "最小重量",
|
"min_weight": "最小重量",
|
||||||
"more": "更多详情",
|
"more": "更多详情",
|
||||||
|
|
||||||
"pricing1": {
|
"pricing1": {
|
||||||
"title": "空运",
|
"title": "空运",
|
||||||
"price": "每千克从$10起",
|
"price": "每千克从$10起",
|
||||||
@@ -60,7 +57,6 @@
|
|||||||
"min_weight": "1立方米"
|
"min_weight": "1立方米"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"our_partners": "我们的合作伙伴",
|
"our_partners": "我们的合作伙伴",
|
||||||
"news_subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
|
"news_subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
|
||||||
"contacts_subtitle": "Creative mouse is here for you to make sure you can build a more resilient portfolio. We curate bespoke offerings across alternative.",
|
"contacts_subtitle": "Creative mouse is here for you to make sure you can build a more resilient portfolio. We curate bespoke offerings across alternative.",
|
||||||
@@ -70,7 +66,6 @@
|
|||||||
"telegram": "Telegram",
|
"telegram": "Telegram",
|
||||||
"instagram": "Instagram",
|
"instagram": "Instagram",
|
||||||
"real_address": "塔什干市,奥尔马佐尔区,_______街",
|
"real_address": "塔什干市,奥尔马佐尔区,_______街",
|
||||||
|
|
||||||
"faq": {
|
"faq": {
|
||||||
"title": "常见问题",
|
"title": "常见问题",
|
||||||
"subtitle": "Creative mouse is here for you to make sure you can build a more resilient portfolio. We curate bespoke offerings across alternative.",
|
"subtitle": "Creative mouse is here for you to make sure you can build a more resilient portfolio. We curate bespoke offerings across alternative.",
|
||||||
@@ -79,7 +74,6 @@
|
|||||||
"answer": "大多数物流公司通过其网站或移动应用提供在线追踪服务。您可以输入跟踪号以获取货物的实时位置和状态更新。"
|
"answer": "大多数物流公司通过其网站或移动应用提供在线追踪服务。您可以输入跟踪号以获取货物的实时位置和状态更新。"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"footer_site_info_text": "可靠且快速的物流服务提供商",
|
"footer_site_info_text": "可靠且快速的物流服务提供商",
|
||||||
"privacy_policy": "隐私政策",
|
"privacy_policy": "隐私政策",
|
||||||
"terms_of_use": "使用条款",
|
"terms_of_use": "使用条款",
|
||||||
@@ -89,7 +83,6 @@
|
|||||||
"info": "信息",
|
"info": "信息",
|
||||||
"join_tg": "加入我们的Telegram",
|
"join_tg": "加入我们的Telegram",
|
||||||
"all_rights_reserved": "版权所有",
|
"all_rights_reserved": "版权所有",
|
||||||
|
|
||||||
"calc_obj": {
|
"calc_obj": {
|
||||||
"title": "计算器",
|
"title": "计算器",
|
||||||
"subtitle": "选择您的订单的运输类型和重量,以了解运费。",
|
"subtitle": "选择您的订单的运输类型和重量,以了解运费。",
|
||||||
@@ -107,7 +100,6 @@
|
|||||||
"delivery_type_car": "汽车"
|
"delivery_type_car": "汽车"
|
||||||
},
|
},
|
||||||
"price": "价格",
|
"price": "价格",
|
||||||
|
|
||||||
"__dash": "------------------------------------DASHBOARD------------------------------------------------------",
|
"__dash": "------------------------------------DASHBOARD------------------------------------------------------",
|
||||||
"dashboard": "仪表板",
|
"dashboard": "仪表板",
|
||||||
"parties": "派对",
|
"parties": "派对",
|
||||||
@@ -179,13 +171,10 @@
|
|||||||
"count_of_boxes": "箱子数量",
|
"count_of_boxes": "箱子数量",
|
||||||
"count_of_items": "物品数量",
|
"count_of_items": "物品数量",
|
||||||
"download_excel": "下载Excel",
|
"download_excel": "下载Excel",
|
||||||
|
|
||||||
"enter_party_name_to_find": "输入要查找的派对名称...",
|
"enter_party_name_to_find": "输入要查找的派对名称...",
|
||||||
"enter_box_name_to_find": "输入要查找的箱子名称...",
|
"enter_box_name_to_find": "输入要查找的箱子名称...",
|
||||||
"enter_client_name_to_find": "输入要查找的客户名称...",
|
"enter_client_name_to_find": "输入要查找的客户名称...",
|
||||||
|
|
||||||
"filter_packet_name": "封包名稱過濾器",
|
"filter_packet_name": "封包名稱過濾器",
|
||||||
|
|
||||||
"filter_party_name": "派对名称过滤器",
|
"filter_party_name": "派对名称过滤器",
|
||||||
"filter_box_name": "箱子名称过滤器",
|
"filter_box_name": "箱子名称过滤器",
|
||||||
"filter_track_id": "跟踪ID过滤器",
|
"filter_track_id": "跟踪ID过滤器",
|
||||||
@@ -193,7 +182,6 @@
|
|||||||
"filter_item_name": "产品名称过滤器",
|
"filter_item_name": "产品名称过滤器",
|
||||||
"filter_by_box_status": "箱子状态过滤器",
|
"filter_by_box_status": "箱子状态过滤器",
|
||||||
"filter_by_party_status": "派对状态过滤器",
|
"filter_by_party_status": "派对状态过滤器",
|
||||||
|
|
||||||
"COLLECTING": "收集中",
|
"COLLECTING": "收集中",
|
||||||
"ON_THE_WAY": "在路上",
|
"ON_THE_WAY": "在路上",
|
||||||
"ARRIVED": "已到达",
|
"ARRIVED": "已到达",
|
||||||
@@ -202,7 +190,6 @@
|
|||||||
"IN_CUSTOMS": "在海關",
|
"IN_CUSTOMS": "在海關",
|
||||||
"IN_WAREHOUSE": "接觸客戶",
|
"IN_WAREHOUSE": "接觸客戶",
|
||||||
"DELIVERED": "發表",
|
"DELIVERED": "發表",
|
||||||
|
|
||||||
"add_photo_to_item": "將照片加入項目",
|
"add_photo_to_item": "將照片加入項目",
|
||||||
"photo": "照片",
|
"photo": "照片",
|
||||||
"summa": "總結",
|
"summa": "總結",
|
||||||
@@ -221,5 +208,7 @@
|
|||||||
"passport": "護照",
|
"passport": "護照",
|
||||||
"weight_of_items": "產品重量",
|
"weight_of_items": "產品重量",
|
||||||
"update_packet": "編輯套件",
|
"update_packet": "編輯套件",
|
||||||
"party_weight": "大量重量"
|
"party_weight": "大量重量",
|
||||||
}
|
"qr_code": "二维码",
|
||||||
|
"created_at": "添加日期"
|
||||||
|
}
|
||||||
@@ -15,7 +15,6 @@
|
|||||||
"safe_warehouse": "Secure Warehouse",
|
"safe_warehouse": "Secure Warehouse",
|
||||||
"we_proud_to_serve_global": "We take pride in providing the best freight and transportation solutions worldwide.",
|
"we_proud_to_serve_global": "We take pride in providing the best freight and transportation solutions worldwide.",
|
||||||
"our_services": "Our Services",
|
"our_services": "Our Services",
|
||||||
|
|
||||||
"air_transport": "Air Transport",
|
"air_transport": "Air Transport",
|
||||||
"air_transport__subtitle": "CPost offers air transportation for a wide range of large-sized and heavy goods.",
|
"air_transport__subtitle": "CPost offers air transportation for a wide range of large-sized and heavy goods.",
|
||||||
"car_transport": "Car Transport",
|
"car_transport": "Car Transport",
|
||||||
@@ -28,13 +27,11 @@
|
|||||||
"warehouse_yivu_and_guanchjou__subtitle": "CPost offers the use of warehouse logistics services in China simultaneously with transporting vehicles from China.",
|
"warehouse_yivu_and_guanchjou__subtitle": "CPost offers the use of warehouse logistics services in China simultaneously with transporting vehicles from China.",
|
||||||
"customs_office_service": "Customs Clearance Services",
|
"customs_office_service": "Customs Clearance Services",
|
||||||
"customs_office_service__subtitle": "CPost values its customers' time and offers customs declaration services for goods. Classification of goods by HS and TN codes.",
|
"customs_office_service__subtitle": "CPost values its customers' time and offers customs declaration services for goods. Classification of goods by HS and TN codes.",
|
||||||
|
|
||||||
"pricing": {
|
"pricing": {
|
||||||
"title": "Pricing",
|
"title": "Pricing",
|
||||||
"limit": "Delivery time:",
|
"limit": "Delivery time:",
|
||||||
"min_weight": "Minimum Weight",
|
"min_weight": "Minimum Weight",
|
||||||
"more": "More Details",
|
"more": "More Details",
|
||||||
|
|
||||||
"pricing1": {
|
"pricing1": {
|
||||||
"title": "Air Transport",
|
"title": "Air Transport",
|
||||||
"price": "From $10/KG",
|
"price": "From $10/KG",
|
||||||
@@ -60,7 +57,6 @@
|
|||||||
"min_weight": "1m3"
|
"min_weight": "1m3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"our_partners": "Our Partners",
|
"our_partners": "Our Partners",
|
||||||
"news_subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
|
"news_subtitle": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
|
||||||
"contacts_subtitle": "Creative mouse is here for you to make sure you can build a more resilient portfolio. We curate bespoke offerings across alternative.",
|
"contacts_subtitle": "Creative mouse is here for you to make sure you can build a more resilient portfolio. We curate bespoke offerings across alternative.",
|
||||||
@@ -70,7 +66,6 @@
|
|||||||
"telegram": "Telegram",
|
"telegram": "Telegram",
|
||||||
"instagram": "Instagram",
|
"instagram": "Instagram",
|
||||||
"real_address": "Tashkent city, Olmazor district, _______ street",
|
"real_address": "Tashkent city, Olmazor district, _______ street",
|
||||||
|
|
||||||
"faq": {
|
"faq": {
|
||||||
"title": "Frequently Asked Questions",
|
"title": "Frequently Asked Questions",
|
||||||
"subtitle": "Creative mouse is here for you to make sure you can build a more resilient portfolio. We curate bespoke offerings across alternative.",
|
"subtitle": "Creative mouse is here for you to make sure you can build a more resilient portfolio. We curate bespoke offerings across alternative.",
|
||||||
@@ -79,7 +74,6 @@
|
|||||||
"answer": "Most logistics companies provide online tracking services through their websites or mobile apps. You can enter your tracking number to get real-time updates on the delivery location and status."
|
"answer": "Most logistics companies provide online tracking services through their websites or mobile apps. You can enter your tracking number to get real-time updates on the delivery location and status."
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"footer_site_info_text": "Reliable and Fast Logistics Service Provider",
|
"footer_site_info_text": "Reliable and Fast Logistics Service Provider",
|
||||||
"privacy_policy": "Privacy Policy",
|
"privacy_policy": "Privacy Policy",
|
||||||
"terms_of_use": "Terms of Use",
|
"terms_of_use": "Terms of Use",
|
||||||
@@ -89,7 +83,6 @@
|
|||||||
"info": "Information",
|
"info": "Information",
|
||||||
"join_tg": "Join our telegram",
|
"join_tg": "Join our telegram",
|
||||||
"all_rights_reserved": "All Rights Reserved",
|
"all_rights_reserved": "All Rights Reserved",
|
||||||
|
|
||||||
"calc_obj": {
|
"calc_obj": {
|
||||||
"title": "Calculator",
|
"title": "Calculator",
|
||||||
"subtitle": "Select the delivery type and weight of your order to find out the delivery cost",
|
"subtitle": "Select the delivery type and weight of your order to find out the delivery cost",
|
||||||
@@ -107,7 +100,6 @@
|
|||||||
"delivery_type_car": "Auto"
|
"delivery_type_car": "Auto"
|
||||||
},
|
},
|
||||||
"price": "Price",
|
"price": "Price",
|
||||||
|
|
||||||
"__dash": "------------------------------------DASHBOARD------------------------------------------------------",
|
"__dash": "------------------------------------DASHBOARD------------------------------------------------------",
|
||||||
"dashboard": "Dashboard",
|
"dashboard": "Dashboard",
|
||||||
"parties": "Parties",
|
"parties": "Parties",
|
||||||
@@ -179,12 +171,10 @@
|
|||||||
"count_of_boxes": "Count of boxes",
|
"count_of_boxes": "Count of boxes",
|
||||||
"count_of_items": "Count of items",
|
"count_of_items": "Count of items",
|
||||||
"download_excel": "Download excel",
|
"download_excel": "Download excel",
|
||||||
|
|
||||||
"enter_party_name_to_find": "Enter party name to find...",
|
"enter_party_name_to_find": "Enter party name to find...",
|
||||||
"enter_box_name_to_find": "Enter box name to find...",
|
"enter_box_name_to_find": "Enter box name to find...",
|
||||||
"enter_client_name_to_find": "Enter client name to find...",
|
"enter_client_name_to_find": "Enter client name to find...",
|
||||||
"filter_packet_name": "Packet name filter",
|
"filter_packet_name": "Packet name filter",
|
||||||
|
|
||||||
"filter_party_name": "Party name filter",
|
"filter_party_name": "Party name filter",
|
||||||
"filter_box_name": "Box name filter",
|
"filter_box_name": "Box name filter",
|
||||||
"filter_track_id": "Track id filter",
|
"filter_track_id": "Track id filter",
|
||||||
@@ -192,7 +182,6 @@
|
|||||||
"filter_item_name": "Product name filter",
|
"filter_item_name": "Product name filter",
|
||||||
"filter_by_box_status": "Box Status filter",
|
"filter_by_box_status": "Box Status filter",
|
||||||
"filter_by_party_status": "Party Status filter",
|
"filter_by_party_status": "Party Status filter",
|
||||||
|
|
||||||
"COLLECTING": "Collecting",
|
"COLLECTING": "Collecting",
|
||||||
"ON_THE_WAY": "On the way",
|
"ON_THE_WAY": "On the way",
|
||||||
"ARRIVED": "Arrived",
|
"ARRIVED": "Arrived",
|
||||||
@@ -201,7 +190,6 @@
|
|||||||
"IN_CUSTOMS": "At customs",
|
"IN_CUSTOMS": "At customs",
|
||||||
"IN_WAREHOUSE": "Reaching out to customers",
|
"IN_WAREHOUSE": "Reaching out to customers",
|
||||||
"DELIVERED": "Delivered",
|
"DELIVERED": "Delivered",
|
||||||
|
|
||||||
"add_photo_to_item": "Add photo to item",
|
"add_photo_to_item": "Add photo to item",
|
||||||
"photo": "photo",
|
"photo": "photo",
|
||||||
"summa": "summa",
|
"summa": "summa",
|
||||||
@@ -220,5 +208,8 @@
|
|||||||
"passport": "Passport",
|
"passport": "Passport",
|
||||||
"weight_of_items": "Products weight",
|
"weight_of_items": "Products weight",
|
||||||
"update_packet": "Edit Paket",
|
"update_packet": "Edit Paket",
|
||||||
"party_weight": "Batch weight"
|
"party_weight": "Batch weight",
|
||||||
}
|
|
||||||
|
"qr_code": "QR Code",
|
||||||
|
"created_at": "Date of joining"
|
||||||
|
}
|
||||||
@@ -221,5 +221,8 @@
|
|||||||
"passport": "Паспорт",
|
"passport": "Паспорт",
|
||||||
"weight_of_items": "Вес продукта",
|
"weight_of_items": "Вес продукта",
|
||||||
"update_packet": "Редактировать пакет",
|
"update_packet": "Редактировать пакет",
|
||||||
"party_weight": "Вес партии"
|
"party_weight": "Вес партии",
|
||||||
|
|
||||||
|
"qr_code": "QR код",
|
||||||
|
"created_at": "Дата добавления"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -113,7 +113,7 @@
|
|||||||
"parties": "Partiyalar",
|
"parties": "Partiyalar",
|
||||||
"create_party": "Partiya yaratish",
|
"create_party": "Partiya yaratish",
|
||||||
"update_party": "Partiyani yangilash",
|
"update_party": "Partiyani yangilash",
|
||||||
"create_box": "Qutni yaratish",
|
"create_box": "Qutini yaratish",
|
||||||
"create_packet": "Paket yaratish",
|
"create_packet": "Paket yaratish",
|
||||||
"update_box": "Qutni yangilash",
|
"update_box": "Qutni yangilash",
|
||||||
"update_package": "Paketni yangilash",
|
"update_package": "Paketni yangilash",
|
||||||
@@ -220,5 +220,8 @@
|
|||||||
"are_you_sure_delete_party": "{name} yuk partiyasini o'chirishga ishonchingiz komilmi?",
|
"are_you_sure_delete_party": "{name} yuk partiyasini o'chirishga ishonchingiz komilmi?",
|
||||||
"passport": "Pasport",
|
"passport": "Pasport",
|
||||||
"update_packet": "Paketni Tahrirlash",
|
"update_packet": "Paketni Tahrirlash",
|
||||||
"party_weight": "Partiya og'irligi"
|
"party_weight": "Partiya og'irligi",
|
||||||
|
|
||||||
|
"qr_code": "QR kod",
|
||||||
|
"created_at": "Qo‘shilgan sana"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import { party_requests } from '@/data/party/party.requests';
|
|||||||
import { pageLinks } from '@/helpers/constants';
|
import { pageLinks } from '@/helpers/constants';
|
||||||
import { notifyError, notifyUnknownError } from '@/services/notification';
|
import { notifyError, notifyUnknownError } from '@/services/notification';
|
||||||
import { Box, Divider, FormHelperText, Grid, Stack, Typography, styled } from '@mui/material';
|
import { Box, Divider, FormHelperText, Grid, Stack, Typography, styled } from '@mui/material';
|
||||||
import { useParams, useRouter, useSearchParams } from 'next/navigation';
|
import { useParams, useSearchParams, useRouter } from 'next/navigation';
|
||||||
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
import React, { useEffect, useMemo, useRef, useState } from 'react';
|
||||||
import { useLocale } from 'use-intl';
|
import { useLocale } from 'use-intl';
|
||||||
import { Controller, useFieldArray, useForm } from 'react-hook-form';
|
import { Controller, useFieldArray, useForm } from 'react-hook-form';
|
||||||
@@ -21,7 +21,6 @@ import { customer_requests } from '@/data/customers/customer.requests';
|
|||||||
import { useAuthContext } from '@/context/auth-context';
|
import { useAuthContext } from '@/context/auth-context';
|
||||||
import { useMyNavigation } from '@/hooks/useMyNavigation';
|
import { useMyNavigation } from '@/hooks/useMyNavigation';
|
||||||
import AsyncSelect from 'react-select/async';
|
import AsyncSelect from 'react-select/async';
|
||||||
import { Party } from '@/data/party/party.model';
|
|
||||||
import cloneDeep from 'lodash.clonedeep';
|
import cloneDeep from 'lodash.clonedeep';
|
||||||
import { item_requests } from '@/data/item/item.requests';
|
import { item_requests } from '@/data/item/item.requests';
|
||||||
import get from 'lodash.get';
|
import get from 'lodash.get';
|
||||||
@@ -57,20 +56,16 @@ type Props = {
|
|||||||
box_size: string;
|
box_size: string;
|
||||||
status: BoxStatus;
|
status: BoxStatus;
|
||||||
packetId: string;
|
packetId: string;
|
||||||
|
|
||||||
passportName: string;
|
passportName: string;
|
||||||
passportId: number;
|
passportId: number;
|
||||||
partyId: number;
|
partyId: number;
|
||||||
partyName: string;
|
partyName: string;
|
||||||
|
|
||||||
clientId: number;
|
clientId: number;
|
||||||
client_id: string;
|
client_id: string;
|
||||||
clientName: string;
|
clientName: string;
|
||||||
|
|
||||||
products_list: {
|
products_list: {
|
||||||
id: number;
|
id: number;
|
||||||
price: number | string;
|
price: number | string;
|
||||||
|
|
||||||
cargoId: string;
|
cargoId: string;
|
||||||
trekId: string;
|
trekId: string;
|
||||||
name: string;
|
name: string;
|
||||||
@@ -93,16 +88,14 @@ const DashboardCreateRealBoxPage = ({ initialValues, partiesData }: Props) => {
|
|||||||
finished: boolean;
|
finished: boolean;
|
||||||
partyFinished: boolean;
|
partyFinished: boolean;
|
||||||
clientFinished: boolean;
|
clientFinished: boolean;
|
||||||
settedDefaultParty: Party | null;
|
settedDefaultParty: any;
|
||||||
settedDefaultClient: Customer | null;
|
settedDefaultClient: Customer | null;
|
||||||
// settedDefaultPartyValue: { value: number; label: string }[] | null;
|
|
||||||
}>({
|
}>({
|
||||||
settedDefaultParty: null,
|
settedDefaultParty: null,
|
||||||
settedDefaultClient: null,
|
settedDefaultClient: null,
|
||||||
partyFinished: false,
|
partyFinished: false,
|
||||||
clientFinished: false,
|
clientFinished: false,
|
||||||
finished: false,
|
finished: false,
|
||||||
// settedDefaultPartyValue: partiesData?.[0] || null,
|
|
||||||
});
|
});
|
||||||
const {
|
const {
|
||||||
register,
|
register,
|
||||||
@@ -114,28 +107,30 @@ const DashboardCreateRealBoxPage = ({ initialValues, partiesData }: Props) => {
|
|||||||
} = useForm<any>({
|
} = useForm<any>({
|
||||||
defaultValues: {
|
defaultValues: {
|
||||||
partyId: params.get('party_id') ? +params.get('party_id')! : '',
|
partyId: params.get('party_id') ? +params.get('party_id')! : '',
|
||||||
|
paketIds: editMode
|
||||||
|
? [{ id: initialValues?.partyId }]
|
||||||
|
: params.get('party_id')
|
||||||
|
? [{ id: +params.get('party_id')! }]
|
||||||
|
: [{ id: '' }],
|
||||||
box_weight: 0.9,
|
box_weight: 0.9,
|
||||||
box_type: 'KG',
|
box_type: 'KG',
|
||||||
box_size: '50x40x40',
|
box_size: '50x40x40',
|
||||||
status: 'READY_TO_INVOICE',
|
status: 'READY_TO_INVOICE',
|
||||||
cargoId: initialValues?.client_id,
|
cargoId: initialValues?.client_id,
|
||||||
// passportId: {value: initialValues?.passportId},
|
products_list: editMode
|
||||||
...(editMode
|
? initialValues?.products_list
|
||||||
? {}
|
: [
|
||||||
: {
|
{
|
||||||
products_list: [
|
id: '',
|
||||||
{
|
cargoId: '',
|
||||||
id: '',
|
trekId: '',
|
||||||
cargoId: '',
|
name: '',
|
||||||
trekId: '',
|
nameRu: '',
|
||||||
name: '',
|
amount: '',
|
||||||
nameRu: '',
|
weight: '',
|
||||||
amount: '',
|
price: '',
|
||||||
weight: '',
|
},
|
||||||
price: '',
|
],
|
||||||
},
|
|
||||||
],
|
|
||||||
}),
|
|
||||||
...initialValues,
|
...initialValues,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -146,12 +141,17 @@ const DashboardCreateRealBoxPage = ({ initialValues, partiesData }: Props) => {
|
|||||||
name: 'products_list',
|
name: 'products_list',
|
||||||
keyName: 'key',
|
keyName: 'key',
|
||||||
});
|
});
|
||||||
|
const pakets = useFieldArray({
|
||||||
|
control,
|
||||||
|
name: 'paketIds',
|
||||||
|
keyName: 'key',
|
||||||
|
});
|
||||||
const controlledProductFields = watch('products_list');
|
const controlledProductFields = watch('products_list');
|
||||||
const partyIdValue = watch('partyId');
|
const partyIdValue = watch('partyId');
|
||||||
const clientIdValue = watch('client_id');
|
const clientIdValue = watch('client_id');
|
||||||
const cargoId = watch('cargoId');
|
const cargoId = watch('cargoId');
|
||||||
const requiredText = t('required');
|
const requiredText = t('required');
|
||||||
const [selectedPassport, setSelectedPassport] = useState<Passport | null>(null); // Tanlangan passportni saqlash uchun state (tipi Passport yoki null)
|
const [selectedPassport, setSelectedPassport] = useState<Passport | null>(null);
|
||||||
|
|
||||||
const passportOptionsInitial = initialValues?.passportId &&
|
const passportOptionsInitial = initialValues?.passportId &&
|
||||||
initialValues?.passportName && [
|
initialValues?.passportName && [
|
||||||
@@ -160,20 +160,16 @@ const DashboardCreateRealBoxPage = ({ initialValues, partiesData }: Props) => {
|
|||||||
label: initialValues?.passportName,
|
label: initialValues?.passportName,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
const n = "123ds"
|
|
||||||
n.toUpperCase()
|
|
||||||
const { data: passportOptions } = useRequest(() => passport_requests.getAll({ cargoId: cargoId?.toUpperCase() }), {
|
const { data: passportOptions } = useRequest(() => passport_requests.getAll({ cargoId: cargoId?.toUpperCase() }), {
|
||||||
enabled: !!cargoId,
|
enabled: !!cargoId,
|
||||||
selectData: data => {
|
selectData: data => {
|
||||||
// Ma'lumotlarni BaseReactSelect uchun mos formatga o'tkazish
|
|
||||||
const passportOptions = data.data.data.map((passport: Passport) => ({
|
const passportOptions = data.data.data.map((passport: Passport) => ({
|
||||||
// data.data endi Passport[]
|
value: passport.id,
|
||||||
value: passport.id, // passport id sini value sifatida
|
label: passport.fullName,
|
||||||
label: passport.fullName, // fullName ni label sifatida
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const passportId = watch('passportId');
|
const passportId = watch('passportId');
|
||||||
|
|
||||||
if (!passportId && initialValues?.passportId && cargoId === initialValues?.client_id) {
|
if (!passportId && initialValues?.passportId && cargoId === initialValues?.client_id) {
|
||||||
const currentOption = passportOptions?.find((item: { value: number }) => item.value === initialValues?.passportId);
|
const currentOption = passportOptions?.find((item: { value: number }) => item.value === initialValues?.passportId);
|
||||||
setValue('passportId', currentOption);
|
setValue('passportId', currentOption);
|
||||||
@@ -182,14 +178,7 @@ const DashboardCreateRealBoxPage = ({ initialValues, partiesData }: Props) => {
|
|||||||
return passportOptions;
|
return passportOptions;
|
||||||
},
|
},
|
||||||
dependencies: [cargoId],
|
dependencies: [cargoId],
|
||||||
placeholderData: [], // Kerak emas, chunki server PageAble qaytarmayapti
|
placeholderData: [],
|
||||||
onSuccess(data) {
|
|
||||||
// if (data?.data.data?.[0]?.id) {
|
|
||||||
// setValue("passportId", initialValues?.passportId)
|
|
||||||
// setValue('passport_id', data.data.data[0].id);
|
|
||||||
// setSelectedPassport(data.data.data[0]); // Birinchi elementni tanlash
|
|
||||||
// }
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -205,6 +194,7 @@ const DashboardCreateRealBoxPage = ({ initialValues, partiesData }: Props) => {
|
|||||||
if (!editMode && data?.data?.data?.data?.[0]) {
|
if (!editMode && data?.data?.data?.data?.[0]) {
|
||||||
helperRef.current.settedDefaultParty = data.data.data.data[0];
|
helperRef.current.settedDefaultParty = data.data.data.data[0];
|
||||||
setValue('partyId', data.data.data.data[0].id);
|
setValue('partyId', data.data.data.data[0].id);
|
||||||
|
setValue('paketIds[0].id', data.data.data.data[0].id);
|
||||||
}
|
}
|
||||||
helperRef.current.partyFinished = true;
|
helperRef.current.partyFinished = true;
|
||||||
if (helperRef.current.clientFinished) {
|
if (helperRef.current.clientFinished) {
|
||||||
@@ -223,7 +213,6 @@ const DashboardCreateRealBoxPage = ({ initialValues, partiesData }: Props) => {
|
|||||||
enabled: !!partyIdValue,
|
enabled: !!partyIdValue,
|
||||||
selectData(data) {
|
selectData(data) {
|
||||||
return data.data.data.data.map(p => ({ value: p.aviaCargoId, label: p.fullName }));
|
return data.data.data.data.map(p => ({ value: p.aviaCargoId, label: p.fullName }));
|
||||||
// return data.data.data.map(p => ({ value: p.id, label: p.fullName }));
|
|
||||||
},
|
},
|
||||||
dependencies: [partyIdValue],
|
dependencies: [partyIdValue],
|
||||||
onSuccess(data) {
|
onSuccess(data) {
|
||||||
@@ -241,7 +230,6 @@ const DashboardCreateRealBoxPage = ({ initialValues, partiesData }: Props) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const onPassportChange = (newValue: Passport | null) => {
|
const onPassportChange = (newValue: Passport | null) => {
|
||||||
// Tipi Passport | null
|
|
||||||
setSelectedPassport(newValue);
|
setSelectedPassport(newValue);
|
||||||
if (newValue) {
|
if (newValue) {
|
||||||
setValue('passport_id', newValue.id || null);
|
setValue('passport_id', newValue.id || null);
|
||||||
@@ -251,17 +239,15 @@ const DashboardCreateRealBoxPage = ({ initialValues, partiesData }: Props) => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const onSubmit = handleSubmit(async values => {
|
const onSubmit = handleSubmit(async values => {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
|
|
||||||
if (editMode) {
|
if (editMode) {
|
||||||
const updateBody: UpdateBoxBodyType = {
|
const updateBody: UpdateBoxBodyType = {
|
||||||
cargoId: values.client_id,
|
cargoId: values.client_id,
|
||||||
passportId: values.passportId.value,
|
passportId: values.passportId?.value,
|
||||||
status: values.status,
|
status: values.status,
|
||||||
packetId: initialValues?.packetId,
|
packetId: values.paketIds.map((p: any) => p.id), // Bir nechta paketId
|
||||||
|
|
||||||
items: values.products_list.map((item: any) => {
|
items: values.products_list.map((item: any) => {
|
||||||
const _price = +item.price ? +item.price : 0;
|
const _price = +item.price ? +item.price : 0;
|
||||||
const _amount = +item.amount ? +item.amount : 0;
|
const _amount = +item.amount ? +item.amount : 0;
|
||||||
@@ -269,9 +255,7 @@ const DashboardCreateRealBoxPage = ({ initialValues, partiesData }: Props) => {
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
id: item.id,
|
id: item.id,
|
||||||
// cargoId: item.cargoId,
|
|
||||||
trekId: item.trekId,
|
trekId: item.trekId,
|
||||||
// name: item.name + (item.nameRu ? ` / ${item.nameRu}` : ''),
|
|
||||||
name: item.name,
|
name: item.name,
|
||||||
nameRu: item?.nameRu,
|
nameRu: item?.nameRu,
|
||||||
weight: +item.weight,
|
weight: +item.weight,
|
||||||
@@ -300,7 +284,7 @@ const DashboardCreateRealBoxPage = ({ initialValues, partiesData }: Props) => {
|
|||||||
const createBody: CreateBoxBodyType = {
|
const createBody: CreateBoxBodyType = {
|
||||||
status: values.status,
|
status: values.status,
|
||||||
cargoId: values.cargoId,
|
cargoId: values.cargoId,
|
||||||
passportId: values.passportId.value,
|
passportId: values.passportId?.value,
|
||||||
partyId: values.partyId,
|
partyId: values.partyId,
|
||||||
items: values.products_list.map((item: any) => {
|
items: values.products_list.map((item: any) => {
|
||||||
return {
|
return {
|
||||||
@@ -328,11 +312,13 @@ const DashboardCreateRealBoxPage = ({ initialValues, partiesData }: Props) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
// const clientOptions = (inputValue: string) => {
|
const appendPaket = () => {
|
||||||
// return customer_requests.getAll({ clientName: inputValue, page: 1 }).then(res => {
|
pakets.append({ id: '' });
|
||||||
// return res.data.data.data.map(p => ({ label: p.fullName, value: p.id }));
|
};
|
||||||
// });
|
|
||||||
// };
|
const removePaket = (index: number) => {
|
||||||
|
pakets.remove(index);
|
||||||
|
};
|
||||||
|
|
||||||
const appendProduct = () => {
|
const appendProduct = () => {
|
||||||
products.append({
|
products.append({
|
||||||
@@ -355,7 +341,6 @@ const DashboardCreateRealBoxPage = ({ initialValues, partiesData }: Props) => {
|
|||||||
if (!text) return;
|
if (!text) return;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// const responseText = await box_requests.translateWithGoogleApi({ text });
|
|
||||||
const responseText = await box_requests.translateWithMemoryApi({ text });
|
const responseText = await box_requests.translateWithMemoryApi({ text });
|
||||||
setValue(`products_list.${index}.nameRu`, responseText || '');
|
setValue(`products_list.${index}.nameRu`, responseText || '');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -380,11 +365,11 @@ const DashboardCreateRealBoxPage = ({ initialValues, partiesData }: Props) => {
|
|||||||
label: string;
|
label: string;
|
||||||
value: BoxStatus;
|
value: BoxStatus;
|
||||||
}[] = [
|
}[] = [
|
||||||
{
|
{
|
||||||
label: t('READY_TO_INVOICE'),
|
label: t('READY_TO_INVOICE'),
|
||||||
value: 'READY_TO_INVOICE',
|
value: 'READY_TO_INVOICE',
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
if (isAdmin) {
|
if (isAdmin) {
|
||||||
p.push({
|
p.push({
|
||||||
@@ -408,11 +393,11 @@ const DashboardCreateRealBoxPage = ({ initialValues, partiesData }: Props) => {
|
|||||||
>
|
>
|
||||||
<Box component={'form'} onSubmit={onSubmit}>
|
<Box component={'form'} onSubmit={onSubmit}>
|
||||||
<Typography variant='h5' mb={3.5}>
|
<Typography variant='h5' mb={3.5}>
|
||||||
{editMode ? t('update_packet') : t('create_packet')}
|
{editMode ? t('update_box') : t('create_box')}
|
||||||
</Typography>
|
</Typography>
|
||||||
|
|
||||||
<Grid container columnSpacing={2.5} rowSpacing={3} mb={3.5}>
|
<Grid container columnSpacing={2.5} rowSpacing={3} mb={3.5}>
|
||||||
<Grid item xs={5}>
|
<Grid item xs={12}>
|
||||||
<Typography fontSize={'18px'} fontWeight={500} color='#5D5850' mb={2}>
|
<Typography fontSize={'18px'} fontWeight={500} color='#5D5850' mb={2}>
|
||||||
{t('party_name')}
|
{t('party_name')}
|
||||||
</Typography>
|
</Typography>
|
||||||
@@ -429,15 +414,15 @@ const DashboardCreateRealBoxPage = ({ initialValues, partiesData }: Props) => {
|
|||||||
defaultValue={
|
defaultValue={
|
||||||
editMode
|
editMode
|
||||||
? {
|
? {
|
||||||
value: initialValues.partyId,
|
value: initialValues.partyId,
|
||||||
label: initialValues.partyName,
|
label: initialValues.partyName,
|
||||||
}
|
}
|
||||||
: partiesData?.length
|
: partiesData?.length
|
||||||
? {
|
? {
|
||||||
value: partiesData[0].value,
|
value: partiesData[0].value,
|
||||||
label: partiesData[0].label,
|
label: partiesData[0].label,
|
||||||
}
|
}
|
||||||
: null
|
: null
|
||||||
}
|
}
|
||||||
styles={selectDefaultStyles}
|
styles={selectDefaultStyles}
|
||||||
noOptionsMessage={() => t('not_found')}
|
noOptionsMessage={() => t('not_found')}
|
||||||
@@ -451,88 +436,9 @@ const DashboardCreateRealBoxPage = ({ initialValues, partiesData }: Props) => {
|
|||||||
);
|
);
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
{/* @ts-expect-error */}
|
{/* {!!errors.partyId?.message && (
|
||||||
{!!errors.partyId?.message && <FormHelperText sx={{ color: 'red' }}>{errors.partyId?.message}</FormHelperText>}
|
<FormHelperText sx={{ color: 'red' }}>{errors.partyId?.message}</FormHelperText>
|
||||||
</Grid>
|
)} */}
|
||||||
|
|
||||||
<Grid item xs={5}>
|
|
||||||
<Typography fontSize={'18px'} fontWeight={500} color='#5D5850' mb={2}>
|
|
||||||
{t('status')}
|
|
||||||
</Typography>
|
|
||||||
<Controller
|
|
||||||
name='status'
|
|
||||||
control={control}
|
|
||||||
rules={{ required: requiredText }}
|
|
||||||
render={({ field, fieldState, formState }) => {
|
|
||||||
return (
|
|
||||||
<BaseReactSelect
|
|
||||||
value={boxStatuses?.find(p => p.value === field.value)}
|
|
||||||
onChange={(newValue: any) => {
|
|
||||||
field.onChange(newValue.value);
|
|
||||||
}}
|
|
||||||
onBlur={field.onBlur}
|
|
||||||
name={field.name}
|
|
||||||
options={boxStatuses}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
{/* @ts-expect-error */}
|
|
||||||
{!!errors.box_type?.message && <FormHelperText sx={{ color: 'red' }}>{errors.box_type?.message}</FormHelperText>}
|
|
||||||
</Grid>
|
|
||||||
|
|
||||||
<Grid item xs={5}>
|
|
||||||
<Typography fontSize={'18px'} fontWeight={500} color='#5D5850' mb={2}>
|
|
||||||
{t('cargo_id')}
|
|
||||||
</Typography>
|
|
||||||
<BaseInput
|
|
||||||
disabled={!!initialValues}
|
|
||||||
type='text'
|
|
||||||
fullWidth
|
|
||||||
inputProps={{
|
|
||||||
step: 0.1,
|
|
||||||
}}
|
|
||||||
mainBorderColor='#D8D8D8'
|
|
||||||
placeholder={t('cargo_id')}
|
|
||||||
{...register('cargoId')}
|
|
||||||
/>
|
|
||||||
{!!errors.net_weight?.message && (
|
|
||||||
// @ts-expect-error
|
|
||||||
<FormHelperText sx={{ color: 'red' }}>{errors.net_weight?.message}</FormHelperText>
|
|
||||||
)}
|
|
||||||
</Grid>
|
|
||||||
<Grid item xs={5}>
|
|
||||||
<Typography fontSize={'18px'} fontWeight={500} color='#5D5850' mb={2}>
|
|
||||||
{t('passport')}
|
|
||||||
</Typography>
|
|
||||||
|
|
||||||
<Controller
|
|
||||||
name='passportId'
|
|
||||||
control={control}
|
|
||||||
rules={{ required: requiredText }}
|
|
||||||
render={({ field, fieldState, formState }) => {
|
|
||||||
return (
|
|
||||||
<BaseReactSelect
|
|
||||||
// value={selectedPassport}
|
|
||||||
// onChange={onPassportChange}
|
|
||||||
|
|
||||||
// value={field.value}
|
|
||||||
{...field}
|
|
||||||
onChange={(newValue: any) => {
|
|
||||||
onPassportChange(newValue);
|
|
||||||
field.onChange(newValue);
|
|
||||||
}}
|
|
||||||
// options={passportOptions || passportOptionsInitial || []}
|
|
||||||
options={passportOptions || passportOptionsInitial || []}
|
|
||||||
// isLoading={passportLoading}
|
|
||||||
placeholder={t('passport')}
|
|
||||||
isDisabled={!clientIdValue || !!initialValues}
|
|
||||||
noOptionsMessage={() => t('not_found')}
|
|
||||||
loadingMessage={() => t('loading')}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
||||||
<Grid item xs={12}>
|
<Grid item xs={12}>
|
||||||
@@ -544,196 +450,69 @@ const DashboardCreateRealBoxPage = ({ initialValues, partiesData }: Props) => {
|
|||||||
padding: '24px',
|
padding: '24px',
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{controlledProductFields.map((product: any, index: number) => {
|
<Typography fontSize={'18px'} fontWeight={500} color='#5D5850' mb={2}>
|
||||||
//
|
{t('packet')}
|
||||||
|
</Typography>
|
||||||
//
|
{pakets.fields.map((field, index) => (
|
||||||
let totalPrice = 0;
|
<Box key={field.key} className="item-row" mb={2}>
|
||||||
|
<Box className="item-row-field" flex={1}>
|
||||||
try {
|
<Controller
|
||||||
const p = +product.price * +product.amount;
|
name={`paketIds.${index}.id`}
|
||||||
if (!Number.isNaN(p)) {
|
control={control}
|
||||||
totalPrice = p;
|
rules={{ required: requiredText }}
|
||||||
}
|
render={({ field: paketField, fieldState }) => (
|
||||||
} catch (error) {}
|
<AsyncSelect
|
||||||
|
onChange={(newValue: any) => {
|
||||||
return (
|
paketField.onChange(newValue?.value);
|
||||||
<Box key={product.key} mb={1.5}>
|
|
||||||
<Box className='item-row' mb={1.5}>
|
|
||||||
<Box className='item-row-field'>
|
|
||||||
<Typography fontSize={'18px'} fontWeight={500} color='#5D5850' mb={2}>
|
|
||||||
{t('track_id')}
|
|
||||||
</Typography>
|
|
||||||
<BaseInput
|
|
||||||
InputProps={{
|
|
||||||
startAdornment: (
|
|
||||||
<Box
|
|
||||||
sx={{
|
|
||||||
backgroundColor: '#EBEFF5',
|
|
||||||
color: '#929191',
|
|
||||||
alignSelf: 'stretch',
|
|
||||||
height: 'auto',
|
|
||||||
display: 'flex',
|
|
||||||
alignItems: 'center',
|
|
||||||
pl: '10px',
|
|
||||||
pr: '10px',
|
|
||||||
borderRadius: '8px 0 0 8px',
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<span>ID</span>
|
|
||||||
</Box>
|
|
||||||
),
|
|
||||||
}}
|
}}
|
||||||
fullWidth
|
defaultValue={
|
||||||
placeholder={t('id')}
|
editMode && index === 0
|
||||||
sx={{
|
? {
|
||||||
'.MuiInputBase-root': {
|
value: initialValues.partyId,
|
||||||
paddingLeft: 0,
|
label: initialValues.partyName,
|
||||||
},
|
}
|
||||||
}}
|
: partiesData?.length && index === 0
|
||||||
{...register(`products_list.${index}.trekId`, { required: requiredText })}
|
? {
|
||||||
|
value: partiesData[0].value,
|
||||||
|
label: partiesData[0].label,
|
||||||
|
}
|
||||||
|
: null
|
||||||
|
}
|
||||||
|
styles={selectDefaultStyles}
|
||||||
|
noOptionsMessage={() => t('not_found')}
|
||||||
|
loadingMessage={() => t('loading')}
|
||||||
|
onBlur={paketField.onBlur}
|
||||||
|
name={paketField.name}
|
||||||
|
defaultOptions={defaultParties!}
|
||||||
|
loadOptions={partyOptions}
|
||||||
|
placeholder={t('enter_party_name_to_find')}
|
||||||
/>
|
/>
|
||||||
{!!get(errors, `products_list.${index}.trekId`) && (
|
|
||||||
<FormHelperText sx={{ color: 'red' }}>{requiredText}</FormHelperText>
|
|
||||||
)}
|
|
||||||
</Box>
|
|
||||||
<Box className='item-row-field'>
|
|
||||||
<Typography fontSize={'18px'} fontWeight={500} color='#5D5850' mb={2}>
|
|
||||||
{t('name')}
|
|
||||||
</Typography>
|
|
||||||
<BaseInput
|
|
||||||
fullWidth
|
|
||||||
mainBorderColor='#D8D8D8'
|
|
||||||
placeholder={t('name')}
|
|
||||||
{...register(`products_list.${index}.name`, { required: requiredText })}
|
|
||||||
onBlur={event => {
|
|
||||||
translateAndUpdateRussianName(event.target.value, index);
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
{!!get(errors, `products_list.${index}.name`) && (
|
|
||||||
<FormHelperText sx={{ color: 'red' }}>{requiredText}</FormHelperText>
|
|
||||||
)}
|
|
||||||
</Box>
|
|
||||||
<Box className='item-row-field'>
|
|
||||||
<Typography fontSize={'18px'} fontWeight={500} color='#5D5850' mb={2}>
|
|
||||||
{'NAME_RU'}
|
|
||||||
</Typography>
|
|
||||||
<BaseInput
|
|
||||||
// disabled
|
|
||||||
fullWidth
|
|
||||||
mainBorderColor='#D8D8D8'
|
|
||||||
placeholder={t('name')}
|
|
||||||
{...register(`products_list.${index}.nameRu`)}
|
|
||||||
/>
|
|
||||||
{!!get(errors, `products_list.${index}.name`) && (
|
|
||||||
<FormHelperText sx={{ color: 'red' }}>{requiredText}</FormHelperText>
|
|
||||||
)}
|
|
||||||
</Box>
|
|
||||||
<Box className='item-row-field'>
|
|
||||||
<Typography fontSize={'18px'} fontWeight={500} color='#5D5850' mb={2}>
|
|
||||||
{t('quantity')}
|
|
||||||
</Typography>
|
|
||||||
<BaseInput
|
|
||||||
fullWidth
|
|
||||||
type='number'
|
|
||||||
mainBorderColor='#D8D8D8'
|
|
||||||
placeholder={t('quantity')}
|
|
||||||
{...register(`products_list.${index}.amount`, { required: requiredText })}
|
|
||||||
/>
|
|
||||||
{!!get(errors, `products_list.${index}.amount`) && (
|
|
||||||
<FormHelperText sx={{ color: 'red' }}>{requiredText}</FormHelperText>
|
|
||||||
)}
|
|
||||||
</Box>
|
|
||||||
<Box className='item-row-field'>
|
|
||||||
<Typography fontSize={'18px'} fontWeight={500} color='#5D5850' mb={2}>
|
|
||||||
{t('weight')}
|
|
||||||
</Typography>
|
|
||||||
<BaseInput
|
|
||||||
fullWidth
|
|
||||||
type='number'
|
|
||||||
inputProps={{ step: 'any', min: 0, type: 'number' }}
|
|
||||||
mainBorderColor='#D8D8D8'
|
|
||||||
placeholder={t('weight')}
|
|
||||||
{...register(`products_list.${index}.weight`, { required: requiredText })}
|
|
||||||
/>
|
|
||||||
{!!get(errors, `products_list.${index}.amount`) && (
|
|
||||||
<FormHelperText sx={{ color: 'red' }}>{requiredText}</FormHelperText>
|
|
||||||
)}
|
|
||||||
</Box>
|
|
||||||
{isAdmin && (
|
|
||||||
<React.Fragment>
|
|
||||||
<Box className='item-row-field'>
|
|
||||||
<Typography fontSize={'18px'} fontWeight={500} color='#5D5850' mb={2}>
|
|
||||||
{t('weight')}
|
|
||||||
</Typography>
|
|
||||||
<Stack direction={'row'} alignItems={'center'} spacing={2.5}>
|
|
||||||
<BaseInput
|
|
||||||
fullWidth
|
|
||||||
type='text'
|
|
||||||
inputProps={{
|
|
||||||
step: 0.1,
|
|
||||||
}}
|
|
||||||
mainBorderColor='#D8D8D8'
|
|
||||||
placeholder={t('weight')}
|
|
||||||
{...register(`products_list.${index}.weight`)}
|
|
||||||
/>
|
|
||||||
</Stack>
|
|
||||||
</Box>
|
|
||||||
<Box className='item-row-field'>
|
|
||||||
<Typography fontSize={'18px'} fontWeight={500} color='#5D5850' mb={2}>
|
|
||||||
{t('price')}
|
|
||||||
</Typography>
|
|
||||||
<BaseInput
|
|
||||||
fullWidth
|
|
||||||
type='text'
|
|
||||||
inputProps={{
|
|
||||||
step: 0.1,
|
|
||||||
}}
|
|
||||||
mainBorderColor='#D8D8D8'
|
|
||||||
placeholder={t('price')}
|
|
||||||
{...register(`products_list.${index}.price`, { required: requiredText })}
|
|
||||||
/>
|
|
||||||
{!!get(errors, `products_list.${index}.price`) && (
|
|
||||||
<FormHelperText sx={{ color: 'red' }}>{requiredText}</FormHelperText>
|
|
||||||
)}
|
|
||||||
</Box>
|
|
||||||
<Box className='item-row-field'>
|
|
||||||
<Typography fontSize={'18px'} fontWeight={500} color='#5D5850' mb={2}>
|
|
||||||
{t('total_price')}
|
|
||||||
</Typography>
|
|
||||||
<BaseInput
|
|
||||||
fullWidth
|
|
||||||
type='number'
|
|
||||||
inputProps={{
|
|
||||||
step: 0.001,
|
|
||||||
}}
|
|
||||||
value={totalPrice}
|
|
||||||
mainBorderColor='#D8D8D8'
|
|
||||||
placeholder={t('total_price')}
|
|
||||||
// {...register(`products_list.${index}.totalPrice`, { required: requiredText })}
|
|
||||||
/>
|
|
||||||
</Box>
|
|
||||||
</React.Fragment>
|
|
||||||
)}
|
)}
|
||||||
|
/>
|
||||||
<Box className='item-row-field'>
|
{!!get(errors, `paketIds.${index}.id`) && (
|
||||||
<BaseIconButton
|
<FormHelperText sx={{ color: 'red' }}>{requiredText}</FormHelperText>
|
||||||
size='small'
|
)}
|
||||||
colorVariant='icon-error'
|
|
||||||
sx={{ flexShrink: 0, height: 'auto', marginTop: 4.5 }}
|
|
||||||
onClick={() => removeProduct(index)}
|
|
||||||
>
|
|
||||||
<Close />
|
|
||||||
</BaseIconButton>
|
|
||||||
</Box>
|
|
||||||
</Box>
|
|
||||||
<Divider color='#EBEFF6' />
|
|
||||||
</Box>
|
</Box>
|
||||||
);
|
{pakets.fields.length > 1 && (
|
||||||
})}
|
<Box className="item-row-field">
|
||||||
|
<BaseIconButton
|
||||||
<Stack alignItems={'center'}>
|
size="small"
|
||||||
<BaseButton sx={{ backgroundColor: '#239D5F' }} startIcon={<AddCircleRounded />} onClick={appendProduct}>
|
colorVariant="icon-error"
|
||||||
|
sx={{ flexShrink: 0, height: 'auto', marginTop: 1 }}
|
||||||
|
onClick={() => removePaket(index)}
|
||||||
|
>
|
||||||
|
<Close />
|
||||||
|
</BaseIconButton>
|
||||||
|
</Box>
|
||||||
|
)}
|
||||||
|
</Box>
|
||||||
|
))}
|
||||||
|
<Stack alignItems={'center'} mt={2}>
|
||||||
|
<BaseButton
|
||||||
|
sx={{ backgroundColor: '#239D5F' }}
|
||||||
|
startIcon={<AddCircleRounded />}
|
||||||
|
onClick={appendPaket}
|
||||||
|
>
|
||||||
{t('add_more')}
|
{t('add_more')}
|
||||||
</BaseButton>
|
</BaseButton>
|
||||||
</Stack>
|
</Stack>
|
||||||
@@ -749,4 +528,4 @@ const DashboardCreateRealBoxPage = ({ initialValues, partiesData }: Props) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default DashboardCreateRealBoxPage;
|
export default DashboardCreateRealBoxPage;
|
||||||
@@ -6,6 +6,7 @@ import useRequest from '@/hooks/useRequest';
|
|||||||
import DashboardCreateBoxPage from '@/routes/private/boxes-create/DashboardCreateBox';
|
import DashboardCreateBoxPage from '@/routes/private/boxes-create/DashboardCreateBox';
|
||||||
import { useParams } from 'next/navigation';
|
import { useParams } from 'next/navigation';
|
||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
import DashboardCreateRealBoxPage from './DashboardCreateRealBox';
|
||||||
|
|
||||||
type Props = {};
|
type Props = {};
|
||||||
|
|
||||||
@@ -78,7 +79,7 @@ const DashboardEditRealBoxPage = (props: Props) => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<DashboardCreateBoxPage initialValues={getOneBox.data} />
|
<DashboardCreateRealBoxPage initialValues={getOneBox.data} />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ import useRequest from '@/hooks/useRequest';
|
|||||||
import { file_service } from '@/services/file-service';
|
import { file_service } from '@/services/file-service';
|
||||||
import { notifyUnknownError } from '@/services/notification';
|
import { notifyUnknownError } from '@/services/notification';
|
||||||
import { getBoxStatusStyles, getStatusColor } from '@/theme/getStatusBoxStyles';
|
import { getBoxStatusStyles, getStatusColor } from '@/theme/getStatusBoxStyles';
|
||||||
import { Add, AddCircleOutline, Circle, Delete, Download, Edit, FilterList, FilterListOff, Search, PlusOne } from '@mui/icons-material';
|
import { Add, QrCode, AddCircleOutline, Circle, Delete, Download, Edit, FilterList, FilterListOff, Search, PlusOne } from '@mui/icons-material';
|
||||||
import { Box, Button, Stack, Tooltip, Typography } from '@mui/material';
|
import { Box, Button, Stack, Tooltip, Typography } from '@mui/material';
|
||||||
import { useRouter } from 'next/navigation';
|
import { useRouter } from 'next/navigation';
|
||||||
import React, { useEffect, useMemo, useState } from 'react';
|
import React, { useEffect, useMemo, useState } from 'react';
|
||||||
@@ -84,7 +84,6 @@ const DashboardRealBoxesPage = (props: Props) => {
|
|||||||
}
|
}
|
||||||
}, [getBoxesQuery]);
|
}, [getBoxesQuery]);
|
||||||
const loading = getBoxesQuery.loading;
|
const loading = getBoxesQuery.loading;
|
||||||
|
|
||||||
const handleChange = (newPage: number) => {
|
const handleChange = (newPage: number) => {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
setPage(newPage);
|
setPage(newPage);
|
||||||
@@ -158,39 +157,23 @@ const DashboardRealBoxesPage = (props: Props) => {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
dataKey: 'id',
|
label: t("qr_code"),
|
||||||
label: "Qo'shish",
|
|
||||||
width: 120,
|
width: 120,
|
||||||
renderCell: data => {
|
renderCell: data => {
|
||||||
return <Button onClick={() => navigation.push(pageLinks.dashboard.boxes.edit(data.id))}>
|
return <Button>
|
||||||
<Add />
|
<QrCode />
|
||||||
</Button>;
|
</Button>;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
dataKey: 'partyName',
|
dataKey: 'id',
|
||||||
label: t('party_name'),
|
label: t("add_more"),
|
||||||
width: 120,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
dataKey: 'name',
|
|
||||||
label: t('name'),
|
|
||||||
width: 120,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
dataKey: 'packetNetWeight',
|
|
||||||
label: t("weight"),
|
|
||||||
width: 120,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
dataKey: 'totalItems',
|
|
||||||
label: t('count_of_items'),
|
|
||||||
width: 120,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
dataKey: 'totalNetWeight',
|
|
||||||
label: t("party_weight"),
|
|
||||||
width: 120,
|
width: 120,
|
||||||
|
renderCell: data => {
|
||||||
|
return <Button onClick={() => navigation.push(pageLinks.dashboard.real_boxes.edit(data.id))}>
|
||||||
|
<Add />
|
||||||
|
</Button>;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
dataKey: 'cargoId',
|
dataKey: 'cargoId',
|
||||||
@@ -198,73 +181,98 @@ const DashboardRealBoxesPage = (props: Props) => {
|
|||||||
width: 120,
|
width: 120,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
dataKey: 'passportName',
|
dataKey: 'partyName',
|
||||||
label: t('client'),
|
label: t('party_name'),
|
||||||
width: 120,
|
width: 120,
|
||||||
},
|
},
|
||||||
|
// {
|
||||||
|
// dataKey: 'name',
|
||||||
|
// label: t('name'),
|
||||||
|
// width: 120,
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// dataKey: 'packetNetWeight',
|
||||||
|
// label: t("weight"),
|
||||||
|
// width: 120,
|
||||||
|
// },
|
||||||
{
|
{
|
||||||
dataKey: 'status',
|
dataKey: 'totalItems',
|
||||||
label: t('status'),
|
label: t('count_of_items'),
|
||||||
width: 240,
|
width: 120,
|
||||||
renderHeaderCell(rowIndex) {
|
|
||||||
return (
|
|
||||||
<Stack direction={'row'} alignItems={'center'}>
|
|
||||||
<span>{t('box_status')}</span>
|
|
||||||
<ActionPopMenu
|
|
||||||
buttons={BoxStatusList.map(stat => {
|
|
||||||
return {
|
|
||||||
icon: <Circle sx={{ path: { color: getStatusColor(stat) } }} />,
|
|
||||||
label: t(stat),
|
|
||||||
onClick() {
|
|
||||||
setBoxStatusFilter(stat);
|
|
||||||
setPage(1);
|
|
||||||
},
|
|
||||||
};
|
|
||||||
})}
|
|
||||||
mainIcon={<FilterList />}
|
|
||||||
placement={{
|
|
||||||
anchorOrigin: {
|
|
||||||
vertical: 'bottom',
|
|
||||||
horizontal: 'center',
|
|
||||||
},
|
|
||||||
transformOrigin: {
|
|
||||||
horizontal: 'center',
|
|
||||||
vertical: 'top',
|
|
||||||
},
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</Stack>
|
|
||||||
);
|
|
||||||
},
|
|
||||||
renderCell(data) {
|
|
||||||
return (
|
|
||||||
<StatusChangePopup
|
|
||||||
anchor={{
|
|
||||||
status: data.status,
|
|
||||||
text: t(data.status),
|
|
||||||
}}
|
|
||||||
loading={changeStatusIds.includes(data.id)}
|
|
||||||
buttons={boxStatusOptions.map(stat => {
|
|
||||||
return {
|
|
||||||
icon: (
|
|
||||||
<Circle
|
|
||||||
sx={{
|
|
||||||
path: {
|
|
||||||
color: getStatusColor(stat),
|
|
||||||
},
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
),
|
|
||||||
label: t(stat),
|
|
||||||
onClick: () => {
|
|
||||||
onChangeStatus(data.id, stat);
|
|
||||||
},
|
|
||||||
};
|
|
||||||
})}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
// {
|
||||||
|
// dataKey: 'totalNetWeight',
|
||||||
|
// label: t("party_weight"),
|
||||||
|
// width: 120,
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// dataKey: 'passportName',
|
||||||
|
// label: t('client'),
|
||||||
|
// width: 120,
|
||||||
|
// },
|
||||||
|
// {
|
||||||
|
// dataKey: 'status',
|
||||||
|
// label: t('status'),
|
||||||
|
// width: 240,
|
||||||
|
// renderHeaderCell(rowIndex) {
|
||||||
|
// return (
|
||||||
|
// <Stack direction={'row'} alignItems={'center'}>
|
||||||
|
// <span>{t('box_status')}</span>
|
||||||
|
// <ActionPopMenu
|
||||||
|
// buttons={BoxStatusList.map(stat => {
|
||||||
|
// return {
|
||||||
|
// icon: <Circle sx={{ path: { color: getStatusColor(stat) } }} />,
|
||||||
|
// label: t(stat),
|
||||||
|
// onClick() {
|
||||||
|
// setBoxStatusFilter(stat);
|
||||||
|
// setPage(1);
|
||||||
|
// },
|
||||||
|
// };
|
||||||
|
// })}
|
||||||
|
// mainIcon={<FilterList />}
|
||||||
|
// placement={{
|
||||||
|
// anchorOrigin: {
|
||||||
|
// vertical: 'bottom',
|
||||||
|
// horizontal: 'center',
|
||||||
|
// },
|
||||||
|
// transformOrigin: {
|
||||||
|
// horizontal: 'center',
|
||||||
|
// vertical: 'top',
|
||||||
|
// },
|
||||||
|
// }}
|
||||||
|
// />
|
||||||
|
// </Stack>
|
||||||
|
// );
|
||||||
|
// },
|
||||||
|
// renderCell(data) {
|
||||||
|
// return (
|
||||||
|
// <StatusChangePopup
|
||||||
|
// anchor={{
|
||||||
|
// status: data.status,
|
||||||
|
// text: t(data.status),
|
||||||
|
// }}
|
||||||
|
// loading={changeStatusIds.includes(data.id)}
|
||||||
|
// buttons={boxStatusOptions.map(stat => {
|
||||||
|
// return {
|
||||||
|
// icon: (
|
||||||
|
// <Circle
|
||||||
|
// sx={{
|
||||||
|
// path: {
|
||||||
|
// color: getStatusColor(stat),
|
||||||
|
// },
|
||||||
|
// }}
|
||||||
|
// />
|
||||||
|
// ),
|
||||||
|
// label: t(stat),
|
||||||
|
// onClick: () => {
|
||||||
|
// onChangeStatus(data.id, stat);
|
||||||
|
// },
|
||||||
|
// };
|
||||||
|
// })}
|
||||||
|
// />
|
||||||
|
// );
|
||||||
|
// },
|
||||||
|
// },
|
||||||
{
|
{
|
||||||
label: '',
|
label: '',
|
||||||
width: 100,
|
width: 100,
|
||||||
@@ -277,7 +285,7 @@ const DashboardRealBoxesPage = (props: Props) => {
|
|||||||
icon: <Edit sx={{ path: { color: '#3489E4' } }} />,
|
icon: <Edit sx={{ path: { color: '#3489E4' } }} />,
|
||||||
label: t('edit'),
|
label: t('edit'),
|
||||||
onClick: () => {
|
onClick: () => {
|
||||||
navigation.push(pageLinks.dashboard.boxes.edit(data.id));
|
navigation.push(pageLinks.dashboard.real_boxes.edit(data.id));
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -289,19 +297,15 @@ const DashboardRealBoxesPage = (props: Props) => {
|
|||||||
dontCloseOnClick: true,
|
dontCloseOnClick: true,
|
||||||
loading: deleteIds.includes(data.id),
|
loading: deleteIds.includes(data.id),
|
||||||
},
|
},
|
||||||
...(data.status === 'READY'
|
{
|
||||||
? [
|
icon: <Download sx={{ path: { color: '#3489E4' } }} />,
|
||||||
{
|
label: t('download_excel'),
|
||||||
icon: <Download sx={{ path: { color: '#3489E4' } }} />,
|
onClick: () => {
|
||||||
label: t('download_excel'),
|
onDownloadExcel(data.id);
|
||||||
onClick: () => {
|
},
|
||||||
onDownloadExcel(data.id);
|
loading: downloadIds.includes(data.id),
|
||||||
},
|
dontCloseOnClick: true,
|
||||||
loading: downloadIds.includes(data.id),
|
},
|
||||||
dontCloseOnClick: true,
|
|
||||||
},
|
|
||||||
]
|
|
||||||
: []),
|
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
@@ -312,8 +316,8 @@ const DashboardRealBoxesPage = (props: Props) => {
|
|||||||
return (
|
return (
|
||||||
<Box>
|
<Box>
|
||||||
<Stack direction={'row'} mb={3} spacing={3}>
|
<Stack direction={'row'} mb={3} spacing={3}>
|
||||||
<BaseButton colorVariant='blue' startIcon={<Add />} href={pageLinks.dashboard.boxes.create}>
|
<BaseButton colorVariant='blue' startIcon={<Add />} href={pageLinks.dashboard.real_boxes.create}>
|
||||||
{t('create_packet')}
|
{t('create_box')}
|
||||||
</BaseButton>
|
</BaseButton>
|
||||||
</Stack>
|
</Stack>
|
||||||
<Box
|
<Box
|
||||||
@@ -335,7 +339,7 @@ const DashboardRealBoxesPage = (props: Props) => {
|
|||||||
color: '#000',
|
color: '#000',
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
{t('packet')}
|
{t('boxes')}
|
||||||
</Typography>
|
</Typography>
|
||||||
<Stack direction={'row'} alignItems={'center'} spacing={2}>
|
<Stack direction={'row'} alignItems={'center'} spacing={2}>
|
||||||
<BaseInput
|
<BaseInput
|
||||||
|
|||||||
23
yarn.lock
23
yarn.lock
@@ -330,10 +330,10 @@
|
|||||||
resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz"
|
resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz"
|
||||||
integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==
|
integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==
|
||||||
|
|
||||||
"@esbuild/darwin-x64@0.21.5":
|
"@esbuild/win32-x64@0.21.5":
|
||||||
version "0.21.5"
|
version "0.21.5"
|
||||||
resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz"
|
resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz"
|
||||||
integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==
|
integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==
|
||||||
|
|
||||||
"@eslint-community/eslint-utils@^4.2.0":
|
"@eslint-community/eslint-utils@^4.2.0":
|
||||||
version "4.4.0"
|
version "4.4.0"
|
||||||
@@ -592,10 +592,10 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
glob "7.1.7"
|
glob "7.1.7"
|
||||||
|
|
||||||
"@next/swc-darwin-x64@14.0.4":
|
"@next/swc-win32-x64-msvc@14.0.4":
|
||||||
version "14.0.4"
|
version "14.0.4"
|
||||||
resolved "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.0.4.tgz"
|
resolved "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.4.tgz"
|
||||||
integrity sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==
|
integrity sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==
|
||||||
|
|
||||||
"@nodelib/fs.scandir@2.1.5":
|
"@nodelib/fs.scandir@2.1.5":
|
||||||
version "2.1.5"
|
version "2.1.5"
|
||||||
@@ -623,10 +623,10 @@
|
|||||||
resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz"
|
resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz"
|
||||||
integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
|
integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==
|
||||||
|
|
||||||
"@rollup/rollup-darwin-x64@4.34.8":
|
"@rollup/rollup-win32-x64-msvc@4.34.8":
|
||||||
version "4.34.8"
|
version "4.34.8"
|
||||||
resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz"
|
resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz"
|
||||||
integrity sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==
|
integrity sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==
|
||||||
|
|
||||||
"@rushstack/eslint-patch@^1.3.3":
|
"@rushstack/eslint-patch@^1.3.3":
|
||||||
version "1.6.1"
|
version "1.6.1"
|
||||||
@@ -2085,11 +2085,6 @@ fs.realpath@^1.0.0:
|
|||||||
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
|
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
|
||||||
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
|
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
|
||||||
|
|
||||||
fsevents@~2.3.2, fsevents@~2.3.3:
|
|
||||||
version "2.3.3"
|
|
||||||
resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz"
|
|
||||||
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
|
|
||||||
|
|
||||||
function-bind@^1.1.1, function-bind@^1.1.2:
|
function-bind@^1.1.1, function-bind@^1.1.2:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
|
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
|
||||||
|
|||||||
Reference in New Issue
Block a user