fix(ticket): repair the ticket status panel color and table cells
工单状态 Tab 三处渲染问题: - 状态名称与标识两列空白:h() 的第三个参数对原生元素必须是文本本身, 写成 () => row.name 的插槽函数只对组件生效,单元格因此为空 - 编辑弹窗「状态颜色」区域失灵:取色器未限定 modes,默认 ['rgb','hex','hsl'],拖动色板回传 rgb(...),被 setColor 的十六进制 守卫丢弃,色块与输入框都不跟随。改为 :modes="['hex']",与 AksField 的 color 字段一致 - 颜色列原本只是纯文本,按需求补上色块预览;标识改用等宽 span 渲染 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
e7ca0ee5df
commit
44fa34fdff
2 files changed
+49
-7
No files matched your search
@@ -32,8 +32,13 @@
|
|||||||
<n-input v-model:value="form.name" placeholder="如:处理中" maxlength="60" />
|
<n-input v-model:value="form.name" placeholder="如:处理中" maxlength="60" />
|
||||||
</n-form-item>
|
</n-form-item>
|
||||||
<n-form-item label="状态颜色" path="color">
|
<n-form-item label="状态颜色" path="color">
|
||||||
<n-space align="center">
|
<n-space align="center" :wrap="true">
|
||||||
<n-color-picker :value="previewColor" :swatches="SWATCHES" @update:value="setColor" />
|
<n-color-picker
|
||||||
|
:value="previewColor"
|
||||||
|
:modes="['hex']"
|
||||||
|
:swatches="SWATCHES"
|
||||||
|
@update:value="setColor"
|
||||||
|
/>
|
||||||
<n-input v-model:value="form.color" style="width: 120px;" placeholder="#6b7280" />
|
<n-input v-model:value="form.color" style="width: 120px;" placeholder="#6b7280" />
|
||||||
<span class="aksrt-ticket-badge" :style="{ '--aksrt-ticket-color': previewColor }">
|
<span class="aksrt-ticket-badge" :style="{ '--aksrt-ticket-color': previewColor }">
|
||||||
{{ form.name || '预览' }}
|
{{ form.name || '预览' }}
|
||||||
@@ -116,9 +121,19 @@ const columns = computed(() => [
|
|||||||
title: '状态',
|
title: '状态',
|
||||||
key: 'name',
|
key: 'name',
|
||||||
minWidth: 160,
|
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: '完结',
|
title: '完结',
|
||||||
key: 'is_closed',
|
key: 'is_closed',
|
||||||
@@ -135,7 +150,7 @@ const columns = computed(() => [
|
|||||||
title: '标识',
|
title: '标识',
|
||||||
key: 'status_key',
|
key: 'status_key',
|
||||||
minWidth: 140,
|
minWidth: 140,
|
||||||
render: (row) => h('code', null, () => row.status_key),
|
render: (row) => h('span', { class: 'aksrt-ticket-key' }, row.status_key),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
@@ -247,6 +262,33 @@ defineExpose({ reload: load })
|
|||||||
font-size: 12px;
|
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 同构。 */
|
/* 徽章与前台 assets/css/routes/tickets.css 的 .aksrt-ticket-badge 同构。 */
|
||||||
.aksrt-ticket-badge {
|
.aksrt-ticket-badge {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"generated_at": "2026-10-26T11:36:52+00:00",
|
"generated_at": "2026-10-26T12:40:28+00:00",
|
||||||
"errors": [],
|
"errors": [],
|
||||||
"warnings": [
|
"warnings": [
|
||||||
"customPage tools-update section 'tools/update' not in PHP schema (ok if pure operational page)",
|
"customPage tools-update section 'tools/update' not in PHP schema (ok if pure operational page)",
|
||||||
@@ -287,7 +287,7 @@
|
|||||||
"UsersLevel.BnvrTSj0.js",
|
"UsersLevel.BnvrTSj0.js",
|
||||||
"UsersBadge.CZSYaoC4.js",
|
"UsersBadge.CZSYaoC4.js",
|
||||||
"UsersWechatTemplate.BGKwGvbY.js",
|
"UsersWechatTemplate.BGKwGvbY.js",
|
||||||
"UsersTicket.DmhmPeKC.js",
|
"UsersTicket.CoFrcj_8.js",
|
||||||
"ToolsImportExport.CuVI1mrN.js",
|
"ToolsImportExport.CuVI1mrN.js",
|
||||||
"ToolsHealth.BT7gJFVm.js",
|
"ToolsHealth.BT7gJFVm.js",
|
||||||
"ToolsUpdate.59iH8s4m.js"
|
"ToolsUpdate.59iH8s4m.js"
|
||||||
|
|||||||
Reference in new issue
Block a user