From cd1ce5b290955e1838cfa5fcfbeb090f799df249 Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Wed, 10 Sep 2025 18:00:08 +0800 Subject: [PATCH] =?UTF-8?q?=E7=99=BD=E5=90=8D=E5=8D=95=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/system/white.js | 4 +- src/utils/validate.js | 42 +++++ src/views/system/white/config.js | 6 +- src/views/system/white/index.vue | 4 +- src/views/system/white/prop/whiteForm.vue | 202 ++++++++++++++++++---- 5 files changed, 217 insertions(+), 41 deletions(-) diff --git a/src/api/system/white.js b/src/api/system/white.js index 332dae8..694b2d1 100644 --- a/src/api/system/white.js +++ b/src/api/system/white.js @@ -21,9 +21,9 @@ export function updateWhiteAPI(data) { // 删除白名单 export function deleteWhiteAPI(data) { return request({ - url: '/smartArchives/whitelist/data', + url: '/smartArchives/whitelist/del', method: 'POST', - // data: data, + data: data, }) } diff --git a/src/utils/validate.js b/src/utils/validate.js index 6a4c0c5..2c442f1 100644 --- a/src/utils/validate.js +++ b/src/utils/validate.js @@ -112,3 +112,45 @@ export function isArray(arg) { } return Array.isArray(arg) } + +/** + * 判断是否为合法的 IPv4 地址 + * @param {string} ip + * @returns {Boolean} + */ +export function isIPv4(ip) { + if (typeof ip !== 'string') return false + // 基础格式校验:四段数字 + const parts = ip.split('.') + if (parts.length !== 4) return false + for (let i = 0; i < parts.length; i++) { + const seg = parts[i] + // 不能为空,必须为数字,不能有前导零(允许单个0) + if (seg === '' || /\D/.test(seg)) return false + if (seg.length > 1 && seg[0] === '0') return false + const n = Number(seg) + if (n < 0 || n > 255) return false + } + return true +} + +/** + * 将 IPv4 地址转换为 32 位整数(仅内部使用,入参须先通过 isIPv4) + * @param {string} ip + * @returns {number} + */ +function ipv4ToInt(ip) { + const [a, b, c, d] = ip.split('.').map(Number) + return ((a << 24) >>> 0) + (b << 16) + (c << 8) + d +} + +/** + * 判断起始 IP 是否小于等于结束 IP(均为 IPv4) + * @param {string} start + * @param {string} end + * @returns {Boolean} + */ +export function isIPv4RangeOrder(start, end) { + if (!isIPv4(start) || !isIPv4(end)) return false + return ipv4ToInt(start) <= ipv4ToInt(end) +} \ No newline at end of file diff --git a/src/views/system/white/config.js b/src/views/system/white/config.js index 6facf53..0a35749 100644 --- a/src/views/system/white/config.js +++ b/src/views/system/white/config.js @@ -9,9 +9,9 @@ export const formLabel = [ ] export const columnsList = [ - { t_props: 'ipAddress', t_label: '单个IP地址' }, - { t_props: 'ipRangeStart', t_label: 'IP网段起始地址' }, - { t_props: 'ipRangeEnd', t_label: 'IP网段结束地址' }, + { t_props: 'ipAddressDes', t_label: '单个IP地址' }, + { t_props: 'ipRangeStartDes', t_label: 'IP网段起始地址' }, + { t_props: 'ipRangeEndDes', t_label: 'IP网段结束地址' }, { t_props: 'accessStartTime', t_label: '允许访问的开始时间' }, { t_props: 'accessEndTime', t_label: '允许访问的结束时间' }, { t_props: 'updatedAt', t_label: '更新时间' } diff --git a/src/views/system/white/index.vue b/src/views/system/white/index.vue index 10ad688..457fb42 100644 --- a/src/views/system/white/index.vue +++ b/src/views/system/white/index.vue @@ -86,10 +86,10 @@ export default { }, /** 删除操作 */ handleDelete(row) { - this.$modal.confirm(`是否确认删除数据类型名称为"${row.dataTypeName}"的数据项?`).then(() => { + this.$modal.confirm(`是否确认删除数据?`).then(() => { // 显示加载遮罩 this.$modal.loading("正在删除,请稍候..."); - deleteWhiteAPI([row.id]).then(res => { + deleteWhiteAPI({id: row.id}).then(res => { this.$modal.closeLoading(); if (res.code === 200) { this.$modal.msgSuccess("删除成功"); diff --git a/src/views/system/white/prop/whiteForm.vue b/src/views/system/white/prop/whiteForm.vue index af2e29b..b778d0c 100644 --- a/src/views/system/white/prop/whiteForm.vue +++ b/src/views/system/white/prop/whiteForm.vue @@ -3,22 +3,38 @@
- - - + + + {{ item.label }} - - - - + + - - + + + + + + + + + + + + +
@@ -30,34 +46,34 @@