From 8186e36d3d753ba79687ae7604deea7f7a3611ce Mon Sep 17 00:00:00 2001 From: nepiedg Date: Sat, 4 Apr 2026 14:55:57 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=88=90=E5=B0=B1=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E4=B8=8E=E6=A2=A6=E6=83=B3=E5=9B=BE=E6=A0=87=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 成就主题/等级管理 - 梦想目标图标管理(dream-presets)与路由「梦想图标」 Made-with: Cursor --- src/api/achievement.js | 37 ++++ src/api/dreamPreset.js | 17 ++ src/router/index.js | 12 ++ src/views/achievement/index.vue | 276 ++++++++++++++++++++++++++++++ src/views/dream-presets/index.vue | 258 ++++++++++++++++++++++++++++ 5 files changed, 600 insertions(+) create mode 100644 src/api/achievement.js create mode 100644 src/api/dreamPreset.js create mode 100644 src/views/achievement/index.vue create mode 100644 src/views/dream-presets/index.vue diff --git a/src/api/achievement.js b/src/api/achievement.js new file mode 100644 index 0000000..8676ec0 --- /dev/null +++ b/src/api/achievement.js @@ -0,0 +1,37 @@ +import request from '../utils/request' + +export function listThemes() { + return request({ url: '/api/admin/achievement/themes', method: 'get' }) +} + +export function getTheme(id) { + return request({ url: `/api/admin/achievement/themes/${id}`, method: 'get' }) +} + +export function createTheme(data) { + return request({ url: '/api/admin/achievement/themes', method: 'post', data }) +} + +export function updateTheme(id, data) { + return request({ url: `/api/admin/achievement/themes/${id}`, method: 'put', data }) +} + +export function deleteTheme(id) { + return request({ url: `/api/admin/achievement/themes/${id}`, method: 'delete' }) +} + +export function listLevels(themeId) { + return request({ url: `/api/admin/achievement/themes/${themeId}/levels`, method: 'get' }) +} + +export function createLevel(data) { + return request({ url: '/api/admin/achievement/levels', method: 'post', data }) +} + +export function updateLevel(id, data) { + return request({ url: `/api/admin/achievement/levels/${id}`, method: 'put', data }) +} + +export function deleteLevel(id) { + return request({ url: `/api/admin/achievement/levels/${id}`, method: 'delete' }) +} diff --git a/src/api/dreamPreset.js b/src/api/dreamPreset.js new file mode 100644 index 0000000..1d757fd --- /dev/null +++ b/src/api/dreamPreset.js @@ -0,0 +1,17 @@ +import request from '../utils/request' + +export function listDreamPresets() { + return request({ url: '/api/admin/dream-presets', method: 'get' }) +} + +export function createDreamPreset(data) { + return request({ url: '/api/admin/dream-presets', method: 'post', data }) +} + +export function updateDreamPreset(id, data) { + return request({ url: `/api/admin/dream-presets/${id}`, method: 'put', data }) +} + +export function deleteDreamPreset(id) { + return request({ url: `/api/admin/dream-presets/${id}`, method: 'delete' }) +} diff --git a/src/router/index.js b/src/router/index.js index 22adb68..eb83d4a 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -102,6 +102,18 @@ const routes = [ component: () => import('../views/smoke/index.vue'), meta: { title: '戒烟小程序', icon: 'Opportunity' } }, + { + path: 'achievement', + name: 'Achievement', + component: () => import('../views/achievement/index.vue'), + meta: { title: '成就管理', icon: 'Trophy' } + }, + { + path: 'dream-presets', + name: 'DreamPresets', + component: () => import('../views/dream-presets/index.vue'), + meta: { title: '梦想图标', icon: 'Flag' } + }, { path: 'settings', name: 'Settings', diff --git a/src/views/achievement/index.vue b/src/views/achievement/index.vue new file mode 100644 index 0000000..ed69328 --- /dev/null +++ b/src/views/achievement/index.vue @@ -0,0 +1,276 @@ + + + + + diff --git a/src/views/dream-presets/index.vue b/src/views/dream-presets/index.vue new file mode 100644 index 0000000..0941118 --- /dev/null +++ b/src/views/dream-presets/index.vue @@ -0,0 +1,258 @@ + + + + +