From 38c63cc45180029ef652060a8f1c99d1a2486713 Mon Sep 17 00:00:00 2001 From: shiran Date: Wed, 17 Jun 2026 15:18:29 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=E9=82=AE=E7=AE=B1=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E7=AE=A1=E7=90=86=E4=B8=8E=E5=95=86=E5=93=81=E8=B4=AD?= =?UTF-8?q?=E4=B9=B0=E9=99=90=E5=88=B6=20-=20=E6=96=B0=E5=A2=9E=E9=82=AE?= =?UTF-8?q?=E7=AE=B1=E5=B9=B3=E5=8F=B0=E4=B8=BB=E6=8E=A7=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E7=AE=A1=E7=90=86(=E9=A1=B5=E9=9D=A2/API/=E8=B7=AF=E7=94=B1/?= =?UTF-8?q?=E8=8F=9C=E5=8D=95)=20-=20=E5=95=86=E5=93=81=E4=B8=8E=E5=A5=97?= =?UTF-8?q?=E9=A4=90=E8=A1=A8=E5=8D=95=E6=96=B0=E5=A2=9Emax=5Fper=5Fuser?= =?UTF-8?q?=E5=8D=95=E7=94=A8=E6=88=B7=E8=B4=AD=E4=B9=B0=E9=99=90=E5=88=B6?= =?UTF-8?q?=20-=20=E9=82=AE=E4=BB=B6=E4=B8=BB=E6=8E=A7=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E5=8F=B0=E8=B7=B3=E8=BD=AC=E6=94=B9=E4=B8=BA/ui/index.html=3Ft?= =?UTF-8?q?oken=3D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Cursor --- src/api/admin/mailService.js | 43 ++ src/config/menus.js | 11 + src/router/index.js | 18 + src/views/mail/MailService.vue | 420 ++++++++++++++++++ src/views/product/ProductList.vue | 54 ++- .../product/components/ProductPlanManager.vue | 18 +- 6 files changed, 549 insertions(+), 15 deletions(-) create mode 100644 src/api/admin/mailService.js create mode 100644 src/views/mail/MailService.vue diff --git a/src/api/admin/mailService.js b/src/api/admin/mailService.js new file mode 100644 index 0000000..12ac135 --- /dev/null +++ b/src/api/admin/mailService.js @@ -0,0 +1,43 @@ +import { http2 } from '@/utils/request.js' + +const formHeaders = { headers: { 'Content-Type': 'application/x-www-form-urlencoded' } } + +// ========== 邮件主控服务 ========== + +export const getMailServiceList = (params) => { + return http2.get('/api/v1/admin/server/mail_service/list', { params }) +} + +export const getMailServiceDetail = (params) => { + return http2.get('/api/v1/admin/server/mail_service/detail', { params }) +} + +export const createMailService = (data) => { + return http2.post('/api/v1/admin/server/mail_service/create', data, formHeaders) +} + +export const updateMailService = (data) => { + return http2.post('/api/v1/admin/server/mail_service/update', data, formHeaders) +} + +export const deleteMailService = (data) => { + return http2.delete('/api/v1/admin/server/mail_service/delete', { data, ...formHeaders }) +} + +// ========== 邮件额度商品 ========== + +export const getMailGoodsList = (params) => { + return http2.get('/api/v1/admin/server/mail_service/goods/list', { params }) +} + +export const createMailGoods = (data) => { + return http2.post('/api/v1/admin/server/mail_service/goods/create', data, formHeaders) +} + +export const updateMailGoods = (data) => { + return http2.post('/api/v1/admin/server/mail_service/goods/update', data, formHeaders) +} + +export const deleteMailGoods = (data) => { + return http2.delete('/api/v1/admin/server/mail_service/goods/delete', { data, ...formHeaders }) +} diff --git a/src/config/menus.js b/src/config/menus.js index 76ce3db..a404860 100644 --- a/src/config/menus.js +++ b/src/config/menus.js @@ -172,6 +172,17 @@ export const menus = [ } ] }, + { + path: '/mail', + title: '邮箱平台管理', + icon: 'Message', + children: [ + { + path: '/mail/service', + title: '主控服务管理' + } + ] + }, { title: '虚拟化平台管理', icon: 'Platform', diff --git a/src/router/index.js b/src/router/index.js index 3f85106..8271982 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -645,6 +645,24 @@ const routes = [ } ] }, + // 邮箱平台管理路由 + { + path: 'mail', + name: 'Mail', + meta: { + title: '邮箱平台管理', + icon: 'Message' + }, + redirect: '/mail/service', + children: [ + { + path: 'service', + name: 'MailService', + component: () => import('../views/mail/MailService.vue'), + meta: { title: '主控服务管理' } + } + ] + }, // 站点审计路由 { path: 'audit', diff --git a/src/views/mail/MailService.vue b/src/views/mail/MailService.vue new file mode 100644 index 0000000..c330a0b --- /dev/null +++ b/src/views/mail/MailService.vue @@ -0,0 +1,420 @@ + + + + + diff --git a/src/views/product/ProductList.vue b/src/views/product/ProductList.vue index b9f4e00..5303c44 100644 --- a/src/views/product/ProductList.vue +++ b/src/views/product/ProductList.vue @@ -113,6 +113,14 @@ + + + + + +