real boxing create and edit components

This commit is contained in:
Samandar Turg'unboev
2025-05-24 09:29:47 +05:00
parent e7c4cda9a2
commit eee4e05e27
6 changed files with 262 additions and 291 deletions

View File

@@ -0,0 +1,74 @@
export type BoxStatus = 'READY_TO_INVOICE' | 'READY';
export const BoxStatusList: BoxStatus[] = ['READY_TO_INVOICE', 'READY'];
export interface IBox {
packetNetWeight: string;
totalNetWeight: string;
cargoId: string;
passportName: string;
id: number;
partyName: string;
boxType: string;
name: string;
volume: string;
boxWeight: number;
brutto: number;
hasInvoice: boolean;
totalItems: number;
status: BoxStatus;
totalBrutto: number;
}
export interface IBoxDetail {
packet: {
id: number;
cargoId: string;
packetNetWeight: number;
passportName: string;
totalItems: number;
totalNetWeight: number;
partyName: string;
partyId: string;
boxType: string;
name: string;
volume: string;
boxWeight: number;
brutto: number;
hasInvoice: boolean;
status: BoxStatus;
};
client: {
passportId: number;
passportName: string;
};
items: [
{
id: number;
partyName: string;
boxName: string;
cargoId: string;
trekId: string;
name: string;
nameRu: string;
amount: number;
weight: number;
price: number;
totalPrice: number;
hasImage: boolean;
imageUrl: string | null;
packetName: string;
status: BoxStatus;
},
];
}
export type RealCreateBoxBodyType = {
partyName: string,
packetDtos: number[]
};
export type UpdateRealBoxBodyType = {
boxId: string,
partyName: string,
packetDtos: number[]
};

View File

@@ -0,0 +1,63 @@
import { IBox, UpdateBoxBodyType, IBoxDetail, BoxStatus } from '@/data/box/box.model';
import { CommonResponseType, PageAble } from '@/helpers/types';
import { request } from '@/services/request';
import axios from 'axios';
import { RealCreateBoxBodyType, UpdateRealBoxBodyType } from './real-box.model';
export const real_box_requests = {
async getAll(params?: {
page?: number;
sort?: string;
direction?: string;
cargoId?: string;
partyId?: string | number;
status?: BoxStatus;
}) {
return request.get<CommonResponseType<PageAble<IBox>>>('/boxes/list', { params });
},
async create({ ...body }: RealCreateBoxBodyType) {
return request.post<CommonResponseType>('/boxes/create', body);
},
async update({ boxId, ...body }: UpdateRealBoxBodyType) {
return request.put<CommonResponseType>('/packets/update', body, {
params: { boxId },
});
},
async find(params: { packetId?: number | string }) {
return request.get<CommonResponseType<IBoxDetail>>('/packets/find', { params });
},
async delete(params: { packetId: number | string }) {
return request.delete<CommonResponseType>('/packets/delete', { params });
},
async downloadExcel(params: { packetId: number | string }) {
return request.get<Blob>('/packets/download', { params, responseType: 'blob' });
},
async translateWithGoogleApi(params: { text: string }): Promise<string> {
const response = await axios.post('https://translation.googleapis.com/language/translate/v2', undefined, {
params: {
q: params.text,
target: 'ru',
source: 'zh',
key: 'AIzaSyA5uAPZyjF_yo1hYOWWJ2uP7XgcmohZc8o',
},
});
return response.data.data.translations?.[0]?.translatedText ?? '';
},
async translateWithMemoryApi(params: { text: string }): Promise<string> {
const response = await axios.get<{
responseData: {
translatedText: string;
match: number;
};
}>('https://api.mymemory.translated.net/get', {
params: {
q: params.text,
langpair: 'zh|ru',
// key: '7a4ac2e07cde1ff1e9de',
},
});
return response.data.responseData.translatedText;
},
};