refactor(admin): unify sortable/draggable/repeater list UI

- Add shared sortable-list.css, SORTABLE_LIST_ATTRS and AksSortHandle
- Migrate schema sortable, selected order, inline/modal repeater, sorter,
  floating buttons, footer tabbar and ticket prereply lists to the shared design
- Split AksField.vue (1885 -> 969 lines) into focused components/helpers
- Remove dead AksArrayTable/AksRepeaterField and move-up/down helpers
- Replace hardcoded colors and --n-* vars with --aksrt-color-* tokens

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
kate522andClaude Fable 5 committed 2026-10-28 13:41:26 +08:00
1 parent 135fb4eaa4
commit 8843ae4261
20 files changed
+1442 -1796

No files matched your search

@@ -51,11 +51,9 @@
<div class="float-settings__desc">设置并排序需要显示的按钮</div>
<draggable
v-model="form.items"
v-bind="SORTABLE_LIST_ATTRS"
item-key="type"
handle=".float-btn-panel__handle"
ghost-class="float-settings__ghost"
animation="180"
class="float-settings__list"
class="aksrt-sortable"
>
<template #item="{ element, index }">
<FloatBtnItemPanel :model-value="element" @update:model-value="updateItem(index, $event)" />
@@ -76,6 +74,7 @@ import draggable from 'vuedraggable'
import api from '@/api'
import PageHeader from '@/components/PageHeader.vue'
import AksSaveBar from '@/components/form/AksSaveBar.vue'
import { SORTABLE_LIST_ATTRS } from '@/components/form/sortable-options.js'
import FloatBtnItemPanel from '@/components/floating/FloatBtnItemPanel.vue'
import { defaultSettings, normalizeItems } from '@/components/floating/floating-defaults.js'
@@ -163,13 +162,13 @@ onMounted(loadSettings)
.float-settings__desc {
font-size: 12px;
color: var(--n-text-color-3, #999);
color: var(--aksrt-color-muted, #6F7A72);
}
.float-settings__label {
margin-left: 12px;
font-size: 13px;
color: var(--n-text-color-3, #999);
color: var(--aksrt-color-muted, #6F7A72);
}
.float-settings__section {
@@ -183,14 +182,4 @@ onMounted(loadSettings)
font-weight: 600;
font-size: 14px;
}
.float-settings__list {
display: flex;
flex-direction: column;
gap: 8px;
}
.float-settings__ghost {
opacity: 0.45;
}
</style>