gbmake-payload/src/collections/disassembly/DisassemblyAreas.ts

97 lines
2.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import type { CollectionConfig } from 'payload'
import { logAfterChange, logAfterDelete } from '../../hooks/logAction'
import { cacheAfterChange, cacheAfterDelete } from '../../hooks/cacheInvalidation'
/**
* 第二层 - 拆解区域
*
* 位于拆解页DisassemblyPages与拆解组件DisassemblyComponents之间。
* 每个区域拥有独立的装配主图(区域总览图)和所属组件列表。
*
* 完整数据层级:
* DisassemblyPages (第一层 — 拆解页)
* └─ DisassemblyAreas (第二层 — 拆解区域) ← 本集合
* └─ DisassemblyComponents (第三层 — 拆解组件)
* └─ DisassemblyLinkedProducts (第四层 — 关联商品)
*
* 区域预览:编辑页底部内嵌 DisassemblyAreaViewerui 字段),
* 以 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,
},
],
}