From fd49c64c761b139b2b157e2deee9b531b2e299a1 Mon Sep 17 00:00:00 2001 From: zhongzm Date: Tue, 7 Jan 2025 17:39:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E8=AE=A1=E8=B4=B9=E8=A7=84=E5=88=99?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E6=8E=A5=E9=80=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/service/api/auth.ts | 34 ++++ src/typings/api.d.ts | 80 +++++++++- src/views/billing/rule/index.vue | 256 +++++++++++++++++++++++++++++++ 3 files changed, 368 insertions(+), 2 deletions(-) create mode 100644 src/views/billing/rule/index.vue diff --git a/src/service/api/auth.ts b/src/service/api/auth.ts index 66a7639..e635922 100644 --- a/src/service/api/auth.ts +++ b/src/service/api/auth.ts @@ -163,4 +163,38 @@ export function fetchBillList(params: Api.Auth.BillParams) { params }); } +/** 获取AP设备列表 */ +export function fetchApDeviceList(params: Api.Device.ApDeviceParams) { + return request({ + url: '/system/device/list', + method: 'get', + params + }); +} +/** 获取终端设备列表 */ +export function fetchTerminalList(params: Api.Device.TerminalDeviceParams) { + return request({ + url: '/system/client/list', + method: 'get', + params + }); +} +/** 获取计费规则列表 */ +export function fetchBillRuleList() { + return request({ + url: '/system/billRule/list', + method: 'get' + }); +} + +/** 更新计费规则 */ +export function updateBillRule(data: Api.Billing.BillRuleUpdate) { + return request({ + url: '/system/billRule', + method: 'put', + data + }); +} + + diff --git a/src/typings/api.d.ts b/src/typings/api.d.ts index 3b98b10..7e47972 100644 --- a/src/typings/api.d.ts +++ b/src/typings/api.d.ts @@ -182,7 +182,7 @@ declare namespace Api { packageName: string; periodNum: number; periodType: number; - price: number; + price: string; trafficEnable: boolean; traffic: number; rateLimitEnable: boolean; @@ -202,7 +202,7 @@ declare namespace Api { packageName: string; periodNum: number; periodType: number; - price: number; + price: string; trafficEnable: boolean; traffic: number; rateLimitEnable: boolean; @@ -535,6 +535,82 @@ declare namespace Api { type DictSearchParams = Partial & CommonSearchParams>; type DictList = Common.PaginatingQueryRecord; + } + namespace Device { + interface ApDevice { + id: number; + deviceName: string; + deviceIp: string; + deviceMac: string; + deviceModel: string; + delFlag: boolean; + createBy: string | null; + createTime: string; + updateBy: string | null; + updateTime: string | null; + userId: number | null; + } + + interface ApDeviceResponse { + code: number; + msg: string; + data: { + rows: ApDevice[]; + total: number; + }; + } + + interface ApDeviceParams { + pageNum: number; + pageSize: number; + deviceName?: string; + deviceIp?: string; + deviceMac?: string; + } + + interface TerminalDevice { + id: number; + clientName: string; + clientDeviceType: string; + clientMac: string; + createBy: string | null; + createTime: string; + updateBy: string | null; + updateTime: string | null; + } + + type TerminalDeviceResponse = App.Service.Response; + + interface TerminalDeviceParams { + pageNum: number; + pageSize: number; + clientName?: string; + clientDeviceType?: string; + clientMac?: string; + } + } + + namespace Billing { + interface BillRule { + id: number; + traffic: number; + price: number; + unit: number; + enable: boolean; + createBy: string | null; + createTime: string; + updateBy: string | null; + updateTime: string | null; + } + + type BillRuleResponse = App.Service.Response; + + interface BillRuleUpdate { + traffic: number; + price: number; + unit: number; + enable: boolean; + } } } diff --git a/src/views/billing/rule/index.vue b/src/views/billing/rule/index.vue new file mode 100644 index 0000000..47a9cc8 --- /dev/null +++ b/src/views/billing/rule/index.vue @@ -0,0 +1,256 @@ + + + + +