diff --git a/assets/admin/src/pages/users/partials/ticket/TicketStatusPanel.vue b/assets/admin/src/pages/users/partials/ticket/TicketStatusPanel.vue index a1c54ebc..162c49e5 100644 --- a/assets/admin/src/pages/users/partials/ticket/TicketStatusPanel.vue +++ b/assets/admin/src/pages/users/partials/ticket/TicketStatusPanel.vue @@ -32,8 +32,13 @@ - - + + {{ form.name || '预览' }} @@ -116,9 +121,19 @@ const columns = computed(() => [ title: '状态', key: 'name', minWidth: 160, - render: (row) => h('span', { class: 'aksrt-ticket-badge', style: { '--aksrt-ticket-color': row.color } }, () => row.name), + // 注意:原生元素用 h('span', ...) 时,文本必须作为 children 直接传入; + // 写成 () => row.name 的插槽函数对原生元素不生效,单元格会是空的。 + render: (row) => h('span', { class: 'aksrt-ticket-badge', style: { '--aksrt-ticket-color': row.color } }, row.name), + }, + { + title: '颜色', + key: 'color', + width: 140, + render: (row) => h('span', { class: 'aksrt-ticket-color-cell' }, [ + h('i', { class: 'aksrt-ticket-color-dot', style: { background: row.color } }), + h('span', { class: 'aksrt-ticket-color-value' }, row.color), + ]), }, - { title: '颜色值', key: 'color', width: 120 }, { title: '完结', key: 'is_closed', @@ -135,7 +150,7 @@ const columns = computed(() => [ title: '标识', key: 'status_key', minWidth: 140, - render: (row) => h('code', null, () => row.status_key), + render: (row) => h('span', { class: 'aksrt-ticket-key' }, row.status_key), }, { title: '操作', @@ -247,6 +262,33 @@ defineExpose({ reload: load }) font-size: 12px; } +/* 颜色列:色块 + 十六进制值,色块边界在浅色主题下也能看清。 */ +.aksrt-ticket-color-cell { + display: inline-flex; + align-items: center; + gap: 6px; +} + +.aksrt-ticket-color-dot { + width: 14px; + height: 14px; + border-radius: 4px; + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.12); + flex: 0 0 auto; +} + +.aksrt-ticket-color-value { + font-family: var(--n-font-family-mono, monospace); + font-size: 12px; + color: var(--aksrt-color-muted); +} + +.aksrt-ticket-key { + font-family: var(--n-font-family-mono, monospace); + font-size: 12px; + color: var(--aksrt-color-muted); +} + /* 徽章与前台 assets/css/routes/tickets.css 的 .aksrt-ticket-badge 同构。 */ .aksrt-ticket-badge { display: inline-block; diff --git a/tools/admin-contract-report.json b/tools/admin-contract-report.json index baa2e87a..3f33eaa8 100644 --- a/tools/admin-contract-report.json +++ b/tools/admin-contract-report.json @@ -1,5 +1,5 @@ { - "generated_at": "2026-10-26T11:36:52+00:00", + "generated_at": "2026-10-26T12:40:28+00:00", "errors": [], "warnings": [ "customPage tools-update section 'tools/update' not in PHP schema (ok if pure operational page)", @@ -287,7 +287,7 @@ "UsersLevel.BnvrTSj0.js", "UsersBadge.CZSYaoC4.js", "UsersWechatTemplate.BGKwGvbY.js", - "UsersTicket.DmhmPeKC.js", + "UsersTicket.CoFrcj_8.js", "ToolsImportExport.CuVI1mrN.js", "ToolsHealth.BT7gJFVm.js", "ToolsUpdate.59iH8s4m.js"