diff --git a/.env.production b/.env.production index 56c9231..bf91513 100644 --- a/.env.production +++ b/.env.production @@ -1,2 +1,2 @@ -# 生产环境(前后端同域部署时可直接使用相对路径) -VITE_API_BASE_URL=http://localhost:8080/ +# 生产环境(前后端同域部署时使用相对路径) +VITE_API_BASE_URL=/ diff --git a/src/api/marketing.js b/src/api/marketing.js new file mode 100644 index 0000000..7cb97b7 --- /dev/null +++ b/src/api/marketing.js @@ -0,0 +1,69 @@ +import request from '../utils/request' + +export function getMarketingStats() { + return request({ + url: '/api/admin/marketing/stats', + method: 'get' + }) +} + +export function getMarketingCategories() { + return request({ + url: '/api/admin/marketing/categories', + method: 'get' + }) +} + +export function createMarketingCategory(data) { + return request({ + url: '/api/admin/marketing/categories', + method: 'post', + data + }) +} + +export function updateMarketingCategory(id, data) { + return request({ + url: `/api/admin/marketing/categories/${id}`, + method: 'put', + data + }) +} + +export function deleteMarketingCategory(id) { + return request({ + url: `/api/admin/marketing/categories/${id}`, + method: 'delete' + }) +} + +export function getMarketingTemplates(params) { + return request({ + url: '/api/admin/marketing/templates', + method: 'get', + params + }) +} + +export function createMarketingTemplate(data) { + return request({ + url: '/api/admin/marketing/templates', + method: 'post', + data + }) +} + +export function updateMarketingTemplate(id, data) { + return request({ + url: `/api/admin/marketing/templates/${id}`, + method: 'put', + data + }) +} + +export function deleteMarketingTemplate(id) { + return request({ + url: `/api/admin/marketing/templates/${id}`, + method: 'delete' + }) +} diff --git a/src/router/index.js b/src/router/index.js index fd53555..4b1d107 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -51,6 +51,12 @@ const routes = [ component: () => import('../views/users/detail.vue'), meta: { title: '用户详情', hidden: true } }, + { + path: 'marketing', + name: 'Marketing', + component: () => import('../views/marketing/index.vue'), + meta: { title: '营销图管理', icon: 'Picture' } + }, { path: 'memberships', name: 'Memberships', @@ -80,7 +86,7 @@ const routes = [ ] const router = createRouter({ - history: createWebHistory(), + history: createWebHistory(import.meta.env.BASE_URL), routes }) diff --git a/src/views/marketing/index.vue b/src/views/marketing/index.vue new file mode 100644 index 0000000..e1d95b7 --- /dev/null +++ b/src/views/marketing/index.vue @@ -0,0 +1,551 @@ + + + + + + + + {{ stats.categoryCount }} + 分类总数 + + + + + {{ stats.templateCount }} + 模板总数 + + + + + {{ stats.totalDownloads }} + 总下载次数 + + + + + {{ stats.todayDownloads }} + 今日下载 + + + + + + + + 分类管理 + 新增分类 + + + + + + + + + - + + + + + + + + {{ row.status === 1 ? '启用' : '禁用' }} + + + + + + 编辑 + + + 删除 + + + + + + + + + + + + 模板管理 + + + + + 新增模板 + + + + + + + + + - + + + + + + {{ row.category?.name || '-' }} + + + + + {{ row.width || 0 }} x {{ row.height || 0 }} + + + + + + + + {{ row.status === 1 ? '启用' : '禁用' }} + + + + + + 编辑 + + + 删除 + + + + + + + + + + + + + + + + + + + + + + + + + + + + 取消 + 保存 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 取消 + 保存 + + + + + + + +