From 53963549627b5e6d02d8771463f26b58e5d25487 Mon Sep 17 00:00:00 2001 From: Ruslan Bakiev Date: Mon, 6 Apr 2026 12:22:33 +0700 Subject: [PATCH] Simplify manager order editing UI --- app/components/orders/OrderItemsTable.vue | 2 +- app/composables/graphql/generated.ts | 230 ++++-------------- app/pages/client-orders/[id].vue | 216 ++++++---------- .../operations/manager/block-order.graphql | 7 - .../operations/manager/complete-order.graphql | 6 - .../manager/manager-finalize-order.graphql | 7 - .../manager/manager-set-order-status.graphql | 6 + .../manager/start-order-work.graphql | 6 - graphql/schema.graphql | 14 +- 9 files changed, 126 insertions(+), 368 deletions(-) delete mode 100644 graphql/operations/manager/block-order.graphql delete mode 100644 graphql/operations/manager/complete-order.graphql delete mode 100644 graphql/operations/manager/manager-finalize-order.graphql create mode 100644 graphql/operations/manager/manager-set-order-status.graphql delete mode 100644 graphql/operations/manager/start-order-work.graphql diff --git a/app/components/orders/OrderItemsTable.vue b/app/components/orders/OrderItemsTable.vue index 5243b8b..9bd4c08 100644 --- a/app/components/orders/OrderItemsTable.vue +++ b/app/components/orders/OrderItemsTable.vue @@ -71,7 +71,7 @@ function currentUnitPrice(item: OrderItemView) { return item.unitPrice ?? null; } - return parseMoneyDraft(props.unitPriceDrafts?.[item.id], item.unitPrice); + return parseMoneyDraft(props.unitPriceDrafts?.[item.id]); } function currentLineTotal(item: OrderItemView) { diff --git a/app/composables/graphql/generated.ts b/app/composables/graphql/generated.ts index d7fe0ee..c625830 100644 --- a/app/composables/graphql/generated.ts +++ b/app/composables/graphql/generated.ts @@ -47,11 +47,6 @@ export type AuthSession = { user: User; }; -export type BlockOrderInput = { - orderId: Scalars['ID']['input']; - reason: Scalars['String']['input']; -}; - export type BonusTransaction = { __typename?: 'BonusTransaction'; amount: Scalars['Float']['output']; @@ -279,18 +274,16 @@ export type Mutation = { acceptInvitation: User; addBonusTransaction: BonusTransaction; addProductToCart: Cart; - blockOrder: Order; clearCart: Cart; clientReviewOrder: Order; - completeOrder: Order; connectMessenger: MessengerConnection; consumeLoginToken: AuthSession; createInvitation: Invitation; createMyDeliveryAddress: DeliveryAddress; createReferral: ReferralLink; deleteMyDeliveryAddress: Scalars['Boolean']['output']; - managerFinalizeOrder: Order; managerSetOrderOffer: Order; + managerSetOrderStatus: Order; registerSelf: RegistrationRequest; removeCartItem: Cart; requestLoginCode: AuthCodeRequestResult; @@ -300,7 +293,6 @@ export type Mutation = { sendTestMessengerMessage: MessengerDispatchResult; setCartDeliveryAddress: Cart; setMyDefaultDeliveryAddress: DeliveryAddress; - startOrderWork: Order; submitCalculationOrder: Order; submitReadyOrder: Order; updateCartItemQuantity: Cart; @@ -324,22 +316,12 @@ export type MutationAddProductToCartArgs = { }; -export type MutationBlockOrderArgs = { - input: BlockOrderInput; -}; - - export type MutationClientReviewOrderArgs = { decision: Decision; orderId: Scalars['ID']['input']; }; -export type MutationCompleteOrderArgs = { - orderId: Scalars['ID']['input']; -}; - - export type MutationConnectMessengerArgs = { input: ConnectMessengerInput; }; @@ -370,14 +352,14 @@ export type MutationDeleteMyDeliveryAddressArgs = { }; -export type MutationManagerFinalizeOrderArgs = { - decision: Decision; - orderId: Scalars['ID']['input']; +export type MutationManagerSetOrderOfferArgs = { + input: SetOrderOfferInput; }; -export type MutationManagerSetOrderOfferArgs = { - input: SetOrderOfferInput; +export type MutationManagerSetOrderStatusArgs = { + orderId: Scalars['ID']['input']; + status: OrderStatus; }; @@ -428,11 +410,6 @@ export type MutationSetMyDefaultDeliveryAddressArgs = { }; -export type MutationStartOrderWorkArgs = { - orderId: Scalars['ID']['input']; -}; - - export type MutationSubmitCalculationOrderArgs = { input: SubmitCalculationOrderInput; }; @@ -501,7 +478,7 @@ export type OrderItem = { export type OrderItemPriceInput = { itemId: Scalars['ID']['input']; - unitPrice: Scalars['Float']['input']; + unitPrice?: InputMaybe; }; export enum OrderKind { @@ -701,7 +678,7 @@ export type RewardWithdrawalRequest = { }; export type SetOrderOfferInput = { - deliveryFee: Scalars['Float']['input']; + deliveryFee?: InputMaybe; deliveryTerms: Scalars['String']['input']; itemPrices: Array; orderId: Scalars['ID']['input']; @@ -856,20 +833,6 @@ export type AddBonusTransactionMutationVariables = Exact<{ export type AddBonusTransactionMutation = { __typename?: 'Mutation', addBonusTransaction: { __typename?: 'BonusTransaction', id: string, userId: string, amount: number, reason: string, createdAt: any } }; -export type BlockOrderMutationVariables = Exact<{ - input: BlockOrderInput; -}>; - - -export type BlockOrderMutation = { __typename?: 'Mutation', blockOrder: { __typename?: 'Order', id: string, status: OrderStatus, blockReason?: string | null } }; - -export type CompleteOrderMutationVariables = Exact<{ - orderId: Scalars['ID']['input']; -}>; - - -export type CompleteOrderMutation = { __typename?: 'Mutation', completeOrder: { __typename?: 'Order', id: string, status: OrderStatus } }; - export type CreateInvitationMutationVariables = Exact<{ input: CreateInvitationInput; }>; @@ -896,14 +859,6 @@ export type ManagerBonusBalancesQueryVariables = Exact<{ [key: string]: never; } export type ManagerBonusBalancesQuery = { __typename?: 'Query', managerBonusBalances: Array<{ __typename?: 'ManagerBonusBalance', userId: string, email: string, fullName: string, companyName?: string | null, balance: number, pendingWithdrawalAmount: number, transactionsCount: number }> }; -export type ManagerFinalizeOrderMutationVariables = Exact<{ - orderId: Scalars['ID']['input']; - decision: Decision; -}>; - - -export type ManagerFinalizeOrderMutation = { __typename?: 'Mutation', managerFinalizeOrder: { __typename?: 'Order', id: string, status: OrderStatus, managerApproved?: boolean | null } }; - export type ManagerOrdersQueryVariables = Exact<{ status?: InputMaybe; customerId?: InputMaybe; @@ -917,6 +872,14 @@ export type ManagerReferralLinksQueryVariables = Exact<{ [key: string]: never; } export type ManagerReferralLinksQuery = { __typename?: 'Query', managerReferralLinks: Array<{ __typename?: 'ManagerReferralLink', id: string, referrerId: string, referrerName: string, referrerEmail: string, referrerCompanyName?: string | null, refereeId: string, refereeName: string, refereeEmail: string, refereeCompanyName?: string | null, createdById: string, bonusPercent: number, createdAt: any }> }; +export type ManagerSetOrderStatusMutationVariables = Exact<{ + orderId: Scalars['ID']['input']; + status: OrderStatus; +}>; + + +export type ManagerSetOrderStatusMutation = { __typename?: 'Mutation', managerSetOrderStatus: { __typename?: 'Order', id: string, status: OrderStatus } }; + export type ManagerUsersDetailQueryVariables = Exact<{ [key: string]: never; }>; @@ -967,13 +930,6 @@ export type ManagerSetOrderOfferMutationVariables = Exact<{ export type ManagerSetOrderOfferMutation = { __typename?: 'Mutation', managerSetOrderOffer: { __typename?: 'Order', id: string, code: string, status: OrderStatus, deliveryTerms?: string | null, deliveryFee?: number | null, totalPrice?: number | null, items: Array<{ __typename?: 'OrderItem', id: string, unitPrice?: number | null, lineTotal?: number | null }> } }; -export type StartOrderWorkMutationVariables = Exact<{ - orderId: Scalars['ID']['input']; -}>; - - -export type StartOrderWorkMutation = { __typename?: 'Mutation', startOrderWork: { __typename?: 'Order', id: string, status: OrderStatus } }; - export type ManagerNotificationHistoryQueryVariables = Exact<{ userId: Scalars['ID']['input']; channel: MessengerType; @@ -1580,67 +1536,6 @@ export function useAddBonusTransactionMutation(options: VueApolloComposable.UseM return VueApolloComposable.useMutation(AddBonusTransactionDocument, options); } export type AddBonusTransactionMutationCompositionFunctionResult = VueApolloComposable.UseMutationReturn; -export const BlockOrderDocument = gql` - mutation BlockOrder($input: BlockOrderInput!) { - blockOrder(input: $input) { - id - status - blockReason - } -} - `; - -/** - * __useBlockOrderMutation__ - * - * To run a mutation, you first call `useBlockOrderMutation` within a Vue component and pass it any options that fit your needs. - * When your component renders, `useBlockOrderMutation` returns an object that includes: - * - A mutate function that you can call at any time to execute the mutation - * - Several other properties: https://v4.apollo.vuejs.org/api/use-mutation.html#return - * - * @param options that will be passed into the mutation, supported options are listed on: https://v4.apollo.vuejs.org/guide-composable/mutation.html#options; - * - * @example - * const { mutate, loading, error, onDone } = useBlockOrderMutation({ - * variables: { - * input: // value for 'input' - * }, - * }); - */ -export function useBlockOrderMutation(options: VueApolloComposable.UseMutationOptions | ReactiveFunction> = {}) { - return VueApolloComposable.useMutation(BlockOrderDocument, options); -} -export type BlockOrderMutationCompositionFunctionResult = VueApolloComposable.UseMutationReturn; -export const CompleteOrderDocument = gql` - mutation CompleteOrder($orderId: ID!) { - completeOrder(orderId: $orderId) { - id - status - } -} - `; - -/** - * __useCompleteOrderMutation__ - * - * To run a mutation, you first call `useCompleteOrderMutation` within a Vue component and pass it any options that fit your needs. - * When your component renders, `useCompleteOrderMutation` returns an object that includes: - * - A mutate function that you can call at any time to execute the mutation - * - Several other properties: https://v4.apollo.vuejs.org/api/use-mutation.html#return - * - * @param options that will be passed into the mutation, supported options are listed on: https://v4.apollo.vuejs.org/guide-composable/mutation.html#options; - * - * @example - * const { mutate, loading, error, onDone } = useCompleteOrderMutation({ - * variables: { - * orderId: // value for 'orderId' - * }, - * }); - */ -export function useCompleteOrderMutation(options: VueApolloComposable.UseMutationOptions | ReactiveFunction> = {}) { - return VueApolloComposable.useMutation(CompleteOrderDocument, options); -} -export type CompleteOrderMutationCompositionFunctionResult = VueApolloComposable.UseMutationReturn; export const CreateInvitationDocument = gql` mutation CreateInvitation($input: CreateInvitationInput!) { createInvitation(input: $input) { @@ -1810,38 +1705,6 @@ export function useManagerBonusBalancesLazyQuery(options: VueApolloComposable.Us return VueApolloComposable.useLazyQuery(ManagerBonusBalancesDocument, {}, options); } export type ManagerBonusBalancesQueryCompositionFunctionResult = VueApolloComposable.UseQueryReturn; -export const ManagerFinalizeOrderDocument = gql` - mutation ManagerFinalizeOrder($orderId: ID!, $decision: Decision!) { - managerFinalizeOrder(orderId: $orderId, decision: $decision) { - id - status - managerApproved - } -} - `; - -/** - * __useManagerFinalizeOrderMutation__ - * - * To run a mutation, you first call `useManagerFinalizeOrderMutation` within a Vue component and pass it any options that fit your needs. - * When your component renders, `useManagerFinalizeOrderMutation` returns an object that includes: - * - A mutate function that you can call at any time to execute the mutation - * - Several other properties: https://v4.apollo.vuejs.org/api/use-mutation.html#return - * - * @param options that will be passed into the mutation, supported options are listed on: https://v4.apollo.vuejs.org/guide-composable/mutation.html#options; - * - * @example - * const { mutate, loading, error, onDone } = useManagerFinalizeOrderMutation({ - * variables: { - * orderId: // value for 'orderId' - * decision: // value for 'decision' - * }, - * }); - */ -export function useManagerFinalizeOrderMutation(options: VueApolloComposable.UseMutationOptions | ReactiveFunction> = {}) { - return VueApolloComposable.useMutation(ManagerFinalizeOrderDocument, options); -} -export type ManagerFinalizeOrderMutationCompositionFunctionResult = VueApolloComposable.UseMutationReturn; export const ManagerOrdersDocument = gql` query ManagerOrders($status: OrderStatus, $customerId: ID) { managerOrders(status: $status, customerId: $customerId) { @@ -1927,6 +1790,37 @@ export function useManagerReferralLinksLazyQuery(options: VueApolloComposable.Us return VueApolloComposable.useLazyQuery(ManagerReferralLinksDocument, {}, options); } export type ManagerReferralLinksQueryCompositionFunctionResult = VueApolloComposable.UseQueryReturn; +export const ManagerSetOrderStatusDocument = gql` + mutation ManagerSetOrderStatus($orderId: ID!, $status: OrderStatus!) { + managerSetOrderStatus(orderId: $orderId, status: $status) { + id + status + } +} + `; + +/** + * __useManagerSetOrderStatusMutation__ + * + * To run a mutation, you first call `useManagerSetOrderStatusMutation` within a Vue component and pass it any options that fit your needs. + * When your component renders, `useManagerSetOrderStatusMutation` returns an object that includes: + * - A mutate function that you can call at any time to execute the mutation + * - Several other properties: https://v4.apollo.vuejs.org/api/use-mutation.html#return + * + * @param options that will be passed into the mutation, supported options are listed on: https://v4.apollo.vuejs.org/guide-composable/mutation.html#options; + * + * @example + * const { mutate, loading, error, onDone } = useManagerSetOrderStatusMutation({ + * variables: { + * orderId: // value for 'orderId' + * status: // value for 'status' + * }, + * }); + */ +export function useManagerSetOrderStatusMutation(options: VueApolloComposable.UseMutationOptions | ReactiveFunction> = {}) { + return VueApolloComposable.useMutation(ManagerSetOrderStatusDocument, options); +} +export type ManagerSetOrderStatusMutationCompositionFunctionResult = VueApolloComposable.UseMutationReturn; export const ManagerUsersDetailDocument = gql` query ManagerUsersDetail { managerUsers { @@ -2232,36 +2126,6 @@ export function useManagerSetOrderOfferMutation(options: VueApolloComposable.Use return VueApolloComposable.useMutation(ManagerSetOrderOfferDocument, options); } export type ManagerSetOrderOfferMutationCompositionFunctionResult = VueApolloComposable.UseMutationReturn; -export const StartOrderWorkDocument = gql` - mutation StartOrderWork($orderId: ID!) { - startOrderWork(orderId: $orderId) { - id - status - } -} - `; - -/** - * __useStartOrderWorkMutation__ - * - * To run a mutation, you first call `useStartOrderWorkMutation` within a Vue component and pass it any options that fit your needs. - * When your component renders, `useStartOrderWorkMutation` returns an object that includes: - * - A mutate function that you can call at any time to execute the mutation - * - Several other properties: https://v4.apollo.vuejs.org/api/use-mutation.html#return - * - * @param options that will be passed into the mutation, supported options are listed on: https://v4.apollo.vuejs.org/guide-composable/mutation.html#options; - * - * @example - * const { mutate, loading, error, onDone } = useStartOrderWorkMutation({ - * variables: { - * orderId: // value for 'orderId' - * }, - * }); - */ -export function useStartOrderWorkMutation(options: VueApolloComposable.UseMutationOptions | ReactiveFunction> = {}) { - return VueApolloComposable.useMutation(StartOrderWorkDocument, options); -} -export type StartOrderWorkMutationCompositionFunctionResult = VueApolloComposable.UseMutationReturn; export const ManagerNotificationHistoryDocument = gql` query ManagerNotificationHistory($userId: ID!, $channel: MessengerType!, $limit: Int) { managerNotificationHistory(userId: $userId, channel: $channel, limit: $limit) { diff --git a/app/pages/client-orders/[id].vue b/app/pages/client-orders/[id].vue index a39e78a..0bc10a2 100644 --- a/app/pages/client-orders/[id].vue +++ b/app/pages/client-orders/[id].vue @@ -1,12 +1,10 @@