diff --git a/Build_God_Admin_Frontend/Frontend/src/api/scrap.ts b/Build_God_Admin_Frontend/Frontend/src/api/scrap.ts index 7d519e4..044603e 100644 --- a/Build_God_Admin_Frontend/Frontend/src/api/scrap.ts +++ b/Build_God_Admin_Frontend/Frontend/src/api/scrap.ts @@ -13,6 +13,7 @@ export interface Scrap { hpBonus: number; magicBonus: number; isActive: boolean; + icon?: string | null; } export interface ScrapLevel { diff --git a/Build_God_Admin_Frontend/Frontend/src/views/admin/ScrapView.vue b/Build_God_Admin_Frontend/Frontend/src/views/admin/ScrapView.vue index 6cb1146..035bc52 100644 --- a/Build_God_Admin_Frontend/Frontend/src/views/admin/ScrapView.vue +++ b/Build_God_Admin_Frontend/Frontend/src/views/admin/ScrapView.vue @@ -35,7 +35,8 @@ const formData = ref>({ defenseBonus: 0, hpBonus: 0, magicBonus: 0, - isActive: true + isActive: true, + icon: null }) const filteredScraps = computed(() => { @@ -78,7 +79,8 @@ const openDialog = (scrap?: Scrap) => { defenseBonus: 0, hpBonus: 0, magicBonus: 0, - isActive: true + isActive: true, + icon: null } } showDialog.value = true @@ -116,7 +118,8 @@ const saveScrap = async () => { defenseBonus: formData.value.defenseBonus || 0, hpBonus: formData.value.hpBonus || 0, magicBonus: formData.value.magicBonus || 0, - isActive: formData.value.isActive ?? true + isActive: formData.value.isActive ?? true, + icon: formData.value.icon || null } const result = await AddScrap(newScrap) @@ -253,6 +256,10 @@ const refreshScraps = async () => { + + + + -
+
背包空空如也,快去获取一些物品吧!
-
- -
- -
- {{ item.itemType === 1 ? '⚔️' : '💊' }} -
- {{ item.itemName }} - {{ item.quantity }} +
+ +
+
+ 装备 + ({{ bagStore.paginatedEquipment.length }} / {{ bagStore.equipmentItems.length }})
- -
+
+ +
+ +
⚔️
+ {{ item.itemName }} + {{ item.quantity }} +
+
+
+ +
+ + +
+
+ 丹药 + ({{ bagStore.paginatedPills.length }} / {{ bagStore.pillItems.length }}) +
+
+ +
+ +
💊
+ {{ item.itemName }} + {{ item.quantity }} +
+
+
+ +
-
@@ -209,11 +325,44 @@ onMounted(() => { color: #ff4444; } +.bag-sections { + display: flex; + flex-direction: column; + gap: 24px; +} + +.section { + background: rgba(255, 255, 255, 0.02); + border: 1px solid rgba(255, 255, 255, 0.06); + border-radius: 16px; + padding: 16px; +} + +.section-header { + display: flex; + align-items: center; + gap: 8px; + margin-bottom: 16px; + padding-bottom: 12px; + border-bottom: 1px solid rgba(255, 255, 255, 0.06); +} + +.section-title { + color: #ffffff; + font-size: 1rem; + font-weight: 500; +} + +.section-count { + color: #666666; + font-size: 0.8rem; +} + .items-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; - margin-bottom: 24px; + margin-bottom: 16px; } .item-cell { @@ -235,6 +384,10 @@ onMounted(() => { border-color: rgba(255, 255, 255, 0.15); } +.scrap-cell { + border: 1px solid rgba(255, 255, 255, 0.1); +} + .item-icon { font-size: 2rem; margin-bottom: 8px; @@ -245,6 +398,8 @@ onMounted(() => { height: 2.5rem; object-fit: contain; margin-bottom: 8px; + border-radius: 4px; + border: 2px solid transparent; } .item-name { @@ -283,13 +438,14 @@ onMounted(() => { } .page-btn { - padding: 10px 20px; + padding: 8px 16px; background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 8px; color: #cccccc; cursor: pointer; transition: all 0.2s ease; + font-size: 0.85rem; } .page-btn:hover:not(:disabled) { @@ -303,6 +459,6 @@ onMounted(() => { .page-info { color: #888888; - font-size: 0.9rem; + font-size: 0.85rem; } \ No newline at end of file