diff --git a/furniture-3d-system/prisma/schema.prisma b/furniture-3d-system/prisma/schema.prisma index 73d8d328..2afd8194 100644 --- a/furniture-3d-system/prisma/schema.prisma +++ b/furniture-3d-system/prisma/schema.prisma @@ -939,7 +939,6 @@ model AssetFamily { deleter User? @relation("AssetFamilyDeleter", fields: [deletedById], references: [id], onDelete: SetNull) variants AssetVariant[] - skuGroups AssetSkuGroup[] compatibleSeries AssetFamilySeriesCompatibility[] createdAt DateTime @default(now()) @@ -958,26 +957,6 @@ model AssetFamily { @@index([deletedById]) } -model AssetSkuGroup { - id String @id @default(cuid()) - assetFamilyId String - assetFamily AssetFamily @relation(fields: [assetFamilyId], references: [id], onDelete: Cascade) - code String - name String - description String? @db.Text - sortOrder Int @default(0) - metadata Json? - variants AssetVariant[] - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@unique([assetFamilyId, code]) - @@index([assetFamilyId]) - @@index([code]) - @@index([sortOrder]) -} - model AssetSeries { id String @id @default(cuid()) code String @unique @@ -1025,8 +1004,6 @@ model AssetVariant { id String @id @default(cuid()) assetFamilyId String assetFamily AssetFamily @relation(fields: [assetFamilyId], references: [id], onDelete: Cascade) - skuGroupId String? - skuGroup AssetSkuGroup? @relation(fields: [skuGroupId], references: [id], onDelete: SetNull) code String @unique name String identityKey String @@ -1084,7 +1061,6 @@ model AssetVariant { @@unique([assetFamilyId, identityKey]) @@index([assetFamilyId]) - @@index([skuGroupId]) @@index([status]) @@index([barcode]) @@index([substrateId]) diff --git a/furniture-3d-system/src/app/globals.css b/furniture-3d-system/src/app/globals.css index 72bd1cef..a7eb425b 100644 --- a/furniture-3d-system/src/app/globals.css +++ b/furniture-3d-system/src/app/globals.css @@ -1450,6 +1450,15 @@ animation: slideInRight 0.35s cubic-bezier(0.32, 0.72, 0, 1); } +@keyframes nav-progress { + 0% { + transform: translateX(-120%); + } + 100% { + transform: translateX(260%); + } +} + /* 滑块 — Precision Atelier 配色 */ .apple-slider { width: 100%; diff --git a/furniture-3d-system/src/app/intake/intakeClientTypes.ts b/furniture-3d-system/src/app/intake/intakeClientTypes.ts index 5c459ae8..acc9adab 100644 --- a/furniture-3d-system/src/app/intake/intakeClientTypes.ts +++ b/furniture-3d-system/src/app/intake/intakeClientTypes.ts @@ -18,6 +18,7 @@ import type { WarehouseLocationDTO, } from "@/server/services"; import type { PlatformMetricItem } from "@/components/platform/types"; +import type { NonIntegratedProductPageInfo } from "./non-integrated/core/nonIntegratedApi"; import type { NonIntegratedProductRecord } from "./non-integrated/nonIntegratedStorage"; type IntakeClientUser = { @@ -45,6 +46,11 @@ type CommonIntakeClientProps = { materialLibraryCategories: MaterialCategoryDTO[]; materialLibraryDictionaries: SubstrateDictionaryBundleDTO; initialNonIntegratedProducts: NonIntegratedProductRecord[]; + initialNonIntegratedPageInfo?: { + product?: NonIntegratedProductPageInfo; + stock?: NonIntegratedProductPageInfo; + series?: NonIntegratedProductPageInfo; + }; initialNodePermissionOverrides?: IntakeNodePermissionOverrideMap; initialActiveSection?: IntakeSection; initialActiveRawMaterialLibrary?: RawMaterialLibraryKey; diff --git a/furniture-3d-system/src/app/intake/intakeClientViewProps.tsx b/furniture-3d-system/src/app/intake/intakeClientViewProps.tsx index 7b9df952..c1fd54f4 100644 --- a/furniture-3d-system/src/app/intake/intakeClientViewProps.tsx +++ b/furniture-3d-system/src/app/intake/intakeClientViewProps.tsx @@ -118,6 +118,7 @@ export function buildIntakePrimaryDomainProps(params: { pendingEntryTab: IntakeEntryTab; skuList: IntegratedPendingSeriesRow[]; nonIntegratedProducts: NonIntegratedProductRecord[]; + initialNonIntegratedPageInfo: IntakeClientProps["initialNonIntegratedPageInfo"]; canDeleteNonIntegratedProducts: boolean; canCreateNonIntegratedProducts: boolean; canUseDesignControlledProductData: boolean; @@ -162,6 +163,7 @@ export function buildIntakePrimaryDomainProps(params: { pendingEntryTab: params.pendingEntryTab, integratedRows: params.skuList, nonIntegratedProducts: params.nonIntegratedProducts, + initialNonIntegratedPageInfo: params.initialNonIntegratedPageInfo, canDeleteProducts: params.canDeleteNonIntegratedProducts, canCreateProducts: params.canCreateNonIntegratedProducts, canUseDesignControlledProductData: diff --git a/furniture-3d-system/src/app/intake/loading.tsx b/furniture-3d-system/src/app/intake/loading.tsx new file mode 100644 index 00000000..09e34774 --- /dev/null +++ b/furniture-3d-system/src/app/intake/loading.tsx @@ -0,0 +1,41 @@ +const ROWS = Array.from({ length: 8 }, (_, index) => index) +const COLUMNS = Array.from({ length: 8 }, (_, index) => index) + +export default function IntakeLoading() { + return ( +
| - {isProductFactoryRowComplete(row) - ? "已完成" - : "当前资料未填完"} + {row.confirmed + ? "已确认" + : isProductFactoryRowComplete(row) + ? "资料已填完" + : "当前资料未填完"} |
diff --git a/furniture-3d-system/src/app/intake/non-integrated/workspaces/product-factory/ProductFactorySkuInfoTable.tsx b/furniture-3d-system/src/app/intake/non-integrated/workspaces/product-factory/ProductFactorySkuInfoTable.tsx
index 5c3371c4..7502a136 100644
--- a/furniture-3d-system/src/app/intake/non-integrated/workspaces/product-factory/ProductFactorySkuInfoTable.tsx
+++ b/furniture-3d-system/src/app/intake/non-integrated/workspaces/product-factory/ProductFactorySkuInfoTable.tsx
@@ -8,9 +8,9 @@ export function ProductFactorySkuInfoTable({
rows: NonIntegratedFactoryRow[];
}) {
return (
-
+
|