97 lines
2.8 KiB
TypeScript
97 lines
2.8 KiB
TypeScript
import type { CollectionConfig } from 'payload'
|
||
import { logAfterChange, logAfterDelete } from '../../hooks/logAction'
|
||
import { cacheAfterChange, cacheAfterDelete } from '../../hooks/cacheInvalidation'
|
||
|
||
/**
|
||
* 第二层 - 拆解区域
|
||
*
|
||
* 位于拆解页(DisassemblyPages)与拆解组件(DisassemblyComponents)之间。
|
||
* 每个区域拥有独立的装配主图(区域总览图)和所属组件列表。
|
||
*
|
||
* 完整数据层级:
|
||
* DisassemblyPages (第一层 — 拆解页)
|
||
* └─ DisassemblyAreas (第二层 — 拆解区域) ← 本集合
|
||
* └─ DisassemblyComponents (第三层 — 拆解组件)
|
||
* └─ DisassemblyLinkedProducts (第四层 — 关联商品)
|
||
*
|
||
* 区域预览:编辑页底部内嵌 DisassemblyAreaViewer(ui 字段),
|
||
* 以 DisassemblyPages.html 的工业草稿风格展示装配主图 + 组件节点。
|
||
*/
|
||
export const DisassemblyAreas: CollectionConfig = {
|
||
slug: 'disassembly-areas',
|
||
admin: {
|
||
useAsTitle: 'name',
|
||
hidden: true,
|
||
description: '拆解页的区域层(仅通过可视化编辑器管理)',
|
||
defaultColumns: ['name', 'page', 'updatedAt'],
|
||
pagination: {
|
||
defaultLimit: 50,
|
||
},
|
||
},
|
||
access: {
|
||
read: () => true,
|
||
create: ({ req: { user } }) => !!user,
|
||
update: ({ req: { user } }) => !!user,
|
||
delete: ({ req: { user } }) => !!user,
|
||
},
|
||
hooks: {
|
||
afterChange: [logAfterChange, cacheAfterChange],
|
||
afterDelete: [logAfterDelete, cacheAfterDelete],
|
||
},
|
||
fields: [
|
||
// 区域名称
|
||
{
|
||
name: 'name',
|
||
label: '区域名称',
|
||
type: 'text',
|
||
required: true,
|
||
admin: {
|
||
description: '例如:主板区域、上盖区域、按键组',
|
||
},
|
||
},
|
||
|
||
// 所属拆解页
|
||
{
|
||
name: 'page',
|
||
label: '所属拆解页',
|
||
type: 'relationship',
|
||
relationTo: 'disassembly-pages',
|
||
required: true,
|
||
admin: {
|
||
description: '该区域归属的顶层拆解页(如 GBA、GBC)',
|
||
},
|
||
},
|
||
|
||
// 装配大图(在预览中显示于中央)
|
||
{
|
||
name: 'mainImage',
|
||
label: '装配大图',
|
||
type: 'upload',
|
||
relationTo: 'media',
|
||
admin: {
|
||
description: '该区域的整体装配图,在区域预览中显示于中央(大图)',
|
||
},
|
||
},
|
||
|
||
// 缩略小图(在列表预览卡片中使用)
|
||
{
|
||
name: 'thumbnailImage',
|
||
label: '缩略小图',
|
||
type: 'upload',
|
||
relationTo: 'media',
|
||
admin: {
|
||
description: '该区域的缩略图,用于列表预览卡片(小图)',
|
||
},
|
||
},
|
||
|
||
// 拆解组件列表(第三层)
|
||
{
|
||
name: 'components',
|
||
label: '拆解组件',
|
||
type: 'relationship',
|
||
relationTo: 'disassembly-components',
|
||
hasMany: true,
|
||
},
|
||
],
|
||
}
|