From 1a88be5bb9fca928f5450155c49085d4643df895 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 9 Mar 2026 21:38:03 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=AE=8C=E6=88=90=E4=BC=9A=E5=91=98/?= =?UTF-8?q?=E4=BF=9D=E8=B4=A8=E6=9C=9F/=E7=B3=BB=E7=BB=9F=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE/=E5=8E=BB=E6=B0=B4=E5=8D=B0=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 18 +- src/api/expiry.js | 47 ++++ src/api/membership.js | 32 +++ src/api/settings.js | 39 +++ src/api/watermark.js | 30 ++ src/views/expiry/index.vue | 480 +++++++++++++++++++++++++++++++- src/views/memberships/index.vue | 389 +++++++++++++++++++++++++- src/views/settings/index.vue | 231 ++++++++++++++- src/views/watermark/index.vue | 330 +++++++++++++++++++++- 9 files changed, 1570 insertions(+), 26 deletions(-) create mode 100644 src/api/expiry.js create mode 100644 src/api/membership.js create mode 100644 src/api/settings.js create mode 100644 src/api/watermark.js diff --git a/README.md b/README.md index e4373b8..46444d1 100644 --- a/README.md +++ b/README.md @@ -17,14 +17,18 @@ npm run build ## 当前已完成 -- 管理员登录(`/api/admin/login`) -- 管理员信息(`/api/admin/profile`) -- 数据看板(总览、小程序统计、用户增长) +- 管理员登录与认证(`/api/admin/login`、`/api/admin/profile`) +- 后台基础布局(顶部导航、侧边栏、移动端适配) +- 数据看板(总览、小程序统计、用户增长图表) - 小程序管理(列表、新增、编辑、删除) +- 用户管理(列表、筛选、详情) +- 会员管理页面骨架与兑换码管理交互 +- 保质期管理页面(总览、列表、增删改、状态流转) +- 去水印管理页面(任务总览与列表) +- 系统设置页面(资料/密码/系统参数) ## 待开发 -- 用户管理 -- 会员管理 -- 保质期管理 -- 系统设置 +- 会员、保质期、去水印、系统设置接口联调 +- 会员管理的记录详情与批量操作 +- 系统设置中的操作日志查询 diff --git a/src/api/expiry.js b/src/api/expiry.js new file mode 100644 index 0000000..0efd459 --- /dev/null +++ b/src/api/expiry.js @@ -0,0 +1,47 @@ +import request from '../utils/request' + +export function getExpirySummary() { + return request({ + url: '/api/admin/expiry/summary', + method: 'get' + }) +} + +export function getExpiryItems(params) { + return request({ + url: '/api/admin/expiry/items', + method: 'get', + params + }) +} + +export function createExpiryItem(data) { + return request({ + url: '/api/admin/expiry/items', + method: 'post', + data + }) +} + +export function updateExpiryItem(id, data) { + return request({ + url: `/api/admin/expiry/items/${id}`, + method: 'put', + data + }) +} + +export function deleteExpiryItem(id) { + return request({ + url: `/api/admin/expiry/items/${id}`, + method: 'delete' + }) +} + +export function updateExpiryItemStatus(id, status) { + return request({ + url: `/api/admin/expiry/items/${id}/status`, + method: 'post', + data: { status } + }) +} diff --git a/src/api/membership.js b/src/api/membership.js new file mode 100644 index 0000000..d417393 --- /dev/null +++ b/src/api/membership.js @@ -0,0 +1,32 @@ +import request from '../utils/request' + +export function getMembershipOverview() { + return request({ + url: '/api/admin/memberships/overview', + method: 'get' + }) +} + +export function getMembershipRedeemCodes(params) { + return request({ + url: '/api/admin/memberships/redeem-codes', + method: 'get', + params + }) +} + +export function createMembershipRedeemCodes(data) { + return request({ + url: '/api/admin/memberships/redeem-codes', + method: 'post', + data + }) +} + +export function updateMembershipRedeemCodeStatus(id, data) { + return request({ + url: `/api/admin/memberships/redeem-codes/${id}/status`, + method: 'post', + data + }) +} diff --git a/src/api/settings.js b/src/api/settings.js new file mode 100644 index 0000000..1e9f879 --- /dev/null +++ b/src/api/settings.js @@ -0,0 +1,39 @@ +import request from '../utils/request' + +export function getAdminSettings() { + return request({ + url: '/api/admin/settings', + method: 'get' + }) +} + +export function updateAdminProfile(data) { + return request({ + url: '/api/admin/settings/profile', + method: 'put', + data + }) +} + +export function updateAdminPassword(data) { + return request({ + url: '/api/admin/settings/password', + method: 'put', + data + }) +} + +export function getSystemConfig() { + return request({ + url: '/api/admin/settings/system', + method: 'get' + }) +} + +export function updateSystemConfig(data) { + return request({ + url: '/api/admin/settings/system', + method: 'put', + data + }) +} diff --git a/src/api/watermark.js b/src/api/watermark.js new file mode 100644 index 0000000..3a64ee3 --- /dev/null +++ b/src/api/watermark.js @@ -0,0 +1,30 @@ +import request from '../utils/request' + +export function getWatermarkOverview() { + return request({ + url: '/api/admin/watermark/overview', + method: 'get' + }) +} + +export function getWatermarkTasks(params) { + return request({ + url: '/api/admin/watermark/tasks', + method: 'get', + params + }) +} + +export function retryWatermarkTask(id) { + return request({ + url: `/api/admin/watermark/tasks/${id}/retry`, + method: 'post' + }) +} + +export function deleteWatermarkTask(id) { + return request({ + url: `/api/admin/watermark/tasks/${id}`, + method: 'delete' + }) +} diff --git a/src/views/expiry/index.vue b/src/views/expiry/index.vue index 74dc87d..a715c72 100644 --- a/src/views/expiry/index.vue +++ b/src/views/expiry/index.vue @@ -1,8 +1,476 @@ + + + + diff --git a/src/views/memberships/index.vue b/src/views/memberships/index.vue index 93ba79d..b5f6fae 100644 --- a/src/views/memberships/index.vue +++ b/src/views/memberships/index.vue @@ -1,8 +1,385 @@ + + + + diff --git a/src/views/settings/index.vue b/src/views/settings/index.vue index b5d4c17..a9dbd44 100644 --- a/src/views/settings/index.vue +++ b/src/views/settings/index.vue @@ -3,6 +3,235 @@ - + + + + + + + + + + + + + + + + + + + + + + + + 保存资料 + + + + + + + + + + + + + + + + + + 更新密码 + + + + + + + + + + + + + + + + + + + + + + + + 保存参数 + + + + + + diff --git a/src/views/watermark/index.vue b/src/views/watermark/index.vue index 9d44cef..db092ca 100644 --- a/src/views/watermark/index.vue +++ b/src/views/watermark/index.vue @@ -1,8 +1,326 @@ + + + +