From c1e95fd1e950d10edfcc9ba5489f7ea77da25aeb Mon Sep 17 00:00:00 2001 From: lai <371757574@qq.com> Date: Thu, 30 May 2024 14:49:45 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E4=BB=AA=E8=A1=A8=E7=9B=98=E5=8E=BB?= =?UTF-8?q?=E9=99=A4=E4=BA=8B=E4=BB=B6=E5=91=8A=E8=AD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/faultManage/actAlarm.ts | 4 ++-- .../overview/components/AlarnTypeBar/index.vue | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/api/faultManage/actAlarm.ts b/src/api/faultManage/actAlarm.ts index 7d96ac81..d668a4b5 100644 --- a/src/api/faultManage/actAlarm.ts +++ b/src/api/faultManage/actAlarm.ts @@ -294,7 +294,7 @@ export async function exportAll(query: Record) { * @returns bolb */ export async function origGet() { - let totalSQL = `select count(*) as value,orig_severity as name from alarm WHERE alarm_status='1' group by orig_severity`; + let totalSQL = `select count(*) as value,orig_severity as name from alarm WHERE alarm_status='1' and orig_severity!='Event' group by orig_severity`; // 发起请求 const result = await request({ @@ -332,7 +332,7 @@ export async function top3Sel(filterFlag?: string) { let filter = ` WHERE alarm_status='1'and orig_severity='${filterFlag}'`; if (!filterFlag) filter = "WHERE alarm_status='1'"; - let top3SQL = `select count(*) as value,ne_type as name from alarm ${filter} group by ne_type ORDER BY value desc limit 0,3 `; + let top3SQL = `select count(*) as value,ne_type as name from alarm ${filter} and orig_severity!='Event' group by ne_type ORDER BY value desc limit 0,3 `; // 发起请求 const result = await request({ diff --git a/src/views/dashboard/overview/components/AlarnTypeBar/index.vue b/src/views/dashboard/overview/components/AlarnTypeBar/index.vue index 9a5f5a1e..583bfd03 100644 --- a/src/views/dashboard/overview/components/AlarnTypeBar/index.vue +++ b/src/views/dashboard/overview/components/AlarnTypeBar/index.vue @@ -70,10 +70,10 @@ const alarmTypeType = ref([ value: 0, name: t('views.index.Warning'), }, - { - value: 0, - name: t('views.index.Event'), - }, + // { + // value: 0, + // name: t('views.index.Event'), + // }, ]); /**告警类型Top数据 */ @@ -105,9 +105,9 @@ function initPicture() { case 'Warning': index = 3; break; - case 'Event': - index = 4; - break; + // case 'Event': + // index = 4; + // break; } alarmTypeType.value[index].value = Number(item.value); } @@ -149,7 +149,7 @@ function initPicture() { legend: { orient: 'vertical', right: '2%', - top: '10%', + top: '12%', data: alarmTypeType.value.map((item: any) => item.name), //label数组 textStyle: { color: '#A7D6F4', // 设置图例文字颜色 From 09e0353053133c951cec01e59bc57e8f253cd4da Mon Sep 17 00:00:00 2001 From: lai <371757574@qq.com> Date: Thu, 30 May 2024 15:25:08 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BA=8B=E4=BB=B6?= =?UTF-8?q?=E5=91=8A=E8=AD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/faultManage/eventAlarm.ts | 139 +++++ src/i18n/locales/en-US.ts | 4 + src/i18n/locales/zh-CN.ts | 4 + src/views/faultManage/event/index.vue | 858 ++++++++++++++++++++++++++ 4 files changed, 1005 insertions(+) create mode 100644 src/api/faultManage/eventAlarm.ts create mode 100644 src/views/faultManage/event/index.vue diff --git a/src/api/faultManage/eventAlarm.ts b/src/api/faultManage/eventAlarm.ts new file mode 100644 index 00000000..20cf5cd0 --- /dev/null +++ b/src/api/faultManage/eventAlarm.ts @@ -0,0 +1,139 @@ +import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; +import { request } from '@/plugins/http-fetch'; +import { parseObjLineToHump } from '@/utils/parse-utils'; +import { parseDateToStr } from '@/utils/date-utils'; +import useUserStore from '@/store/modules/user'; + + + +/** + * 查询列表 + * @param query 查询参数 + * @returns object + */ +export async function listAct(query: Record) { + let totalSQL = `select count(*) as total from alarm_event where 1=1 `; + let rowsSQL = `select * from alarm_event where 1=1 `; + // 查询 + let querySQL = ''; + if (query.alarmCode) { + querySQL += ` and alarm_code = '${query.alarmCode}' `; + } + + if (query.alarmType) { + querySQL += ` and alarm_type = '${query.alarmType}' `; + } + + if (query.pvFlag) { + querySQL += ` and pv_flag = '${query.pvFlag}' `; + } + + + + if (query.neId) { + querySQL += ` and ne_id like '%${query.neId}%' `; + } + + if (query.neName) { + querySQL += ` and ne_name like '%${query.neName}%' `; + } + + if (query.neType) { + querySQL += ` and ne_type like '%${query.neType}%' `; + } + + if (query.beginTime && query.endTime) { + querySQL += ` and event_time BETWEEN '${query.beginTime}' and ' ${query.endTime}'`; + } + + // 分页 + const pageNum = (query.pageNum - 1) * query.pageSize; + const limtSql = ` order by event_time desc limit ${pageNum},${query.pageSize} `; + + // 发起请求 + const result = await request({ + url: `/api/rest/databaseManagement/v1/select/omc_db/alarm_event`, + method: 'get', + params: { + SQL: totalSQL + querySQL, + rowsSQL: rowsSQL + querySQL + limtSql, + }, + }); + + // 解析数据 + if (result.code === RESULT_CODE_SUCCESS) { + const data: DataList = { + total: 0, + rows: [], + code: result.code, + msg: result.msg, + }; + result.data.data.forEach((item: any) => { + console.log(item) + const itemData = item['alarm_event']; + if (Array.isArray(itemData)) { + if (itemData.length === 1 && itemData[0]['total'] >= 0) { + data.total = itemData[0]['total']; + } else { + data.rows = itemData.map(v => parseObjLineToHump(v)); + } + } + }); + return data; + } + return result; +} + + + + + + + +/** + * 事件告警导出 + * @param query 查询参数 + * @returns bolb + */ +export async function exportAll(query: Record) { + let rowsSQL = `select * from alarm_event where 1=1`; + // 查询 + let querySQL = ''; + querySQL += query.alarm_code + ? ` and alarm_code = '${query.alarm_code}' ` + : ''; + querySQL += query.alarm_type + ? ` and alarm_type = '${query.alarm_type}' ` + : ''; + querySQL += query.pv_flag ? ` and pv_flag = '${query.pv_flag}' ` : ''; + querySQL += query.orig_severity + ? ` and orig_severity in('${query.orig_severity}' )` + : ''; + querySQL += query.ne_id ? ` and ne_id like '%${query.ne_id}%' ` : ''; + querySQL += query.ne_name ? ` and ne_name like '%${query.ne_name}%' ` : ''; + querySQL += query.ne_type ? ` and ne_type like '%${query.ne_type}%' ` : ''; + querySQL += + query.beginTime && query.endTime + ? ` and event_time BETWEEN '${query.beginTime}' and ' ${query.endTime}'` + : ''; + + // 发起请求 + const result = await request({ + url: `/api/rest/databaseManagement/v1/select/omc_db/alarm_event`, + method: 'get', + params: { + rowsSQL: rowsSQL + querySQL, + }, + }); + + if (result.code === RESULT_CODE_SUCCESS) { + let v = result.data.data[0]; + const vArr = parseObjLineToHump(v['alarm_event']); + result.data = vArr == null ? [] : vArr; + } + return result; +} + + + + diff --git a/src/i18n/locales/en-US.ts b/src/i18n/locales/en-US.ts index a8ffc188..0fd65bef 100644 --- a/src/i18n/locales/en-US.ts +++ b/src/i18n/locales/en-US.ts @@ -974,6 +974,7 @@ export default { showSet:'Show filter settings', exportSure:'Confirm whether to export all active alarm information', viewIdInfo:'View {alarmId} record information', + closeModal:'Close', }, historyAlarm:{ exportSure:'Confirm whether to export all historical alarm information', @@ -986,6 +987,9 @@ export default { noChange:'There is no change in the alarm forwarding settings.', forwardSet:'Alarm Forwarding Setting', }, + eventAlarm:{ + exportSure:'Confirm whether to export all event alarm information', + } }, logManage:{ alarm:{ diff --git a/src/i18n/locales/zh-CN.ts b/src/i18n/locales/zh-CN.ts index b22f8142..8139793b 100644 --- a/src/i18n/locales/zh-CN.ts +++ b/src/i18n/locales/zh-CN.ts @@ -974,6 +974,7 @@ export default { showSet:'显示过滤设置', exportSure:'确认是否导出全部活动告警信息', viewIdInfo:'查看{alarmId} 记录信息', + closeModal:'关闭', }, historyAlarm:{ exportSure:'确认是否导出全部历史告警信息?', @@ -985,6 +986,9 @@ export default { save:'保存设置', noChange:'告警前转接口设置无变更', forwardSet:'告警前转接口设置', + }, + eventAlarm:{ + exportSure:'确认是否导出全部事件告警信息?', } }, logManage:{ diff --git a/src/views/faultManage/event/index.vue b/src/views/faultManage/event/index.vue new file mode 100644 index 00000000..33e68309 --- /dev/null +++ b/src/views/faultManage/event/index.vue @@ -0,0 +1,858 @@ + + + + + + + From 6592561bca1fb15b9312077c1d1a70b438dcd8a5 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Thu, 30 May 2024 15:32:42 +0800 Subject: [PATCH 3/6] =?UTF-8?q?style:=20=E5=8F=82=E6=95=B0=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C=E5=A4=9A=E8=AF=AD=E8=A8=80=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/i18n/locales/en-US.ts | 34 +++++++++++++++++----------------- src/i18n/locales/zh-CN.ts | 34 +++++++++++++++++----------------- src/utils/regular-utils.ts | 5 +++-- 3 files changed, 37 insertions(+), 36 deletions(-) diff --git a/src/i18n/locales/en-US.ts b/src/i18n/locales/en-US.ts index a8ffc188..9574c5aa 100644 --- a/src/i18n/locales/en-US.ts +++ b/src/i18n/locales/en-US.ts @@ -469,21 +469,21 @@ export default { neType: 'NE Type', neTypePleace: "Please select the network element type", noConfigData: "No data on configuration items", - updateValue: "The value of the {num} attribute was modified successfully.", + updateValue: "[ {num} ] parameter value modified successfully.", updateValueErr: "Attribute value modification failure", updateItem: "Modify Index to {num}.", updateItemErr: "Record modification failure", delItemOk: "Deleting Index as {num} succeeded", addItemOk: "Add Index as {num} Record Succeeded", addItemErr: "Record addition failure", - requireUn: "{display} input value is of unknown type", - requireString: "The {display} parameter value is invalid.", - requireInt: "{display} Parameter value not in reasonable range {filter}", - requireIpv4: "{display} not a legitimate IPV4 address", - requireIpv6: "{display} Not a legitimate IPV6 address.", - requireEnum: "{display} is not a reasonable enumeration value.", - requireBool: "{display} is not a reasonable boolean value.", - editOkTip: "Confirm updating the value of this {num} attribute?", + requireUn: "[ {display} ] input value is of unknown type", + requireString: "[ {display} ] parameter value is invalid.", + requireInt: "[ {display} ] parameter value not in reasonable range {filter}", + requireIpv4: "[ {display} ] not a legitimate IPV4 address", + requireIpv6: "[ {display} ] not a legitimate IPV6 address.", + requireEnum: "[ {display} ] is not a reasonable enumeration value.", + requireBool: "[ {display} ] is not a reasonable boolean value.", + editOkTip: "Confirm updating the value of this [ {num} ] attribute?", updateItemTip: "Confirm updating the data item with Index [{num}]?", delItemTip: "Confirm deleting the data item with Index [{num}]?", arrayMore: "Expand", @@ -1720,14 +1720,14 @@ export default { cmdOpTip: "Select the item to be operated in the left command navigation!", cmdNoTip: "{num} no optional command operation", require: "Mandatory parameter: {num}", - requireUn: "{display} input value is of unknown type", - requireString: "The {display} parameter value is invalid.", - requireInt: "{display} Parameter value not in reasonable range {filter}", - requireIpv4: "{display} not a legitimate IPV4 address", - requireIpv6: "{display} Not a legitimate IPV6 address.", - requireEnum: "{display} is not a reasonable enumeration value.", - requireBool: "{display} is not a reasonable boolean value.", - requireFile: "{display} is not a value that matches the parameter file type.", + requireUn: "[ {display} ] input value is of unknown type", + requireString: "[ {display} ] parameter value is invalid.", + requireInt: "[ {display} ] parameter value not in reasonable range {filter}", + requireIpv4: "[ {display} ] not a legitimate IPV4 address", + requireIpv6: "[ {display} ] not a legitimate IPV6 address.", + requireEnum: "[ {display} ] is not a reasonable enumeration value.", + requireBool: "[ {display} ] is not a reasonable boolean value.", + requireFile: "[ {display} ] is not a value that matches the parameter file type.", cmdQuickEntry: "Command Quick Entry", cmdQuickEntryHelp: "Line feed (Shift + Enter), Execute (Enter)", cmdParamPanel: "Parameter Panel", diff --git a/src/i18n/locales/zh-CN.ts b/src/i18n/locales/zh-CN.ts index b22f8142..948d2c61 100644 --- a/src/i18n/locales/zh-CN.ts +++ b/src/i18n/locales/zh-CN.ts @@ -469,21 +469,21 @@ export default { neType: "网元类型", neTypePleace: "请选择网元类型", noConfigData: "暂无配置项数据", - updateValue: "{num} 属性值修改成功", + updateValue: "【 {num} 】 属性值修改成功", updateValueErr: "属性值修改失败", updateItem: "修改 Index 为 {num} 记录成功", updateItemErr: "记录修改失败", delItemOk: "删除 Index 为 {num} 记录成功", addItemOk: "新增 Index 为 {num} 记录成功", addItemErr: "记录新增失败", - requireUn: "{display} 输入值是未知类型", - requireString: "{display} 参数值不合理", - requireInt: "{display} 参数值不在合理范围 {filter}", - requireIpv4: "{display} 不是合法的IPV4地址", - requireIpv6: "{display} 不是合法的IPV6地址", - requireEnum: "{display} 不是合理的枚举值", - requireBool: "{display} 不是合理的布尔类型的值", - editOkTip: "确认更新该{num}属性值吗?", + requireUn: "【 {display} 】输入值是未知类型", + requireString: "【 {display} 】参数值不合理", + requireInt: "【 {display} 】参数值不在合理范围 {filter}", + requireIpv4: "【 {display} 】不是合法的IPV4地址", + requireIpv6: "【 {display} 】不是合法的IPV6地址", + requireEnum: "【 {display} 】不是合理的枚举值", + requireBool: "【 {display} 】不是合理的布尔类型的值", + editOkTip: "确认更新该【 {num} 】属性值吗?", updateItemTip: "确认更新Index为 【{num}】 的数据项?", delItemTip: "确认删除Index为 【{num}】 的数据项?", arrayMore: "展开", @@ -1720,14 +1720,14 @@ export default { cmdOpTip: "左侧命令导航中选择要操作项!", cmdNoTip: "{num} 无可选命令操作", require: "必填参数:{num}", - requireUn: "{display} 输入值是未知类型", - requireString: "{display} 参数值不合理", - requireInt: "{display} 参数值不在合理范围 {filter}", - requireIpv4: "{display} 不是合法的IPV4地址", - requireIpv6: "{display} 不是合法的IPV6地址", - requireEnum: "{display} 不是合理的枚举值", - requireBool: "{display} 不是合理的布尔类型的值", - requireFile: "{display} 不是符合参数文件类型的值", + requireUn: "【 {display} 】输入值是未知类型", + requireString: "【 {display} 】参数值不合理", + requireInt: "【 {display} 】参数值不在合理范围 {filter}", + requireIpv4: "【 {display} 】不是合法的IPV4地址", + requireIpv6: "【 {display} 】不是合法的IPV6地址", + requireEnum: "【 {display} 】不是合理的枚举值", + requireBool: "【 {display} 】不是合理的布尔类型的值", + requireFile: "【 {display} 】不是符合参数文件类型的值", cmdQuickEntry: "命令快速输入", cmdQuickEntryHelp: "换行(Shift + Enter) 执行发送(Enter)", cmdParamPanel: "参数面板", diff --git a/src/utils/regular-utils.ts b/src/utils/regular-utils.ts index fff43163..65a9fd52 100644 --- a/src/utils/regular-utils.ts +++ b/src/utils/regular-utils.ts @@ -84,13 +84,14 @@ export function validURL(str: string) { // http:// is appended so url.Parse will succeed, strTemp used so it does not impact rxURL.MatchString strTemp = 'http://' + str; } - debugger; + + let u = { host: '', pathname: '' }; try { new URL(strTemp); } catch (error) { return false; } - const u = new URL(strTemp); + if (u.host.startsWith('.')) { return false; } From 68362ba3e37ba91c46eb7581bf9580eda4e30686 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Thu, 30 May 2024 15:41:17 +0800 Subject: [PATCH 4/6] =?UTF-8?q?feat:=20=E7=BD=91=E5=85=83=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E9=85=8D=E7=BD=AE=E5=8F=AF=E6=94=B6=E8=B5=B7=E5=B7=A6?= =?UTF-8?q?=E4=BE=A7=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configParamTreeTable/hooks/useOptions.ts | 157 ++++++++++++++++ .../configParamTreeTable/index.vue | 177 +++--------------- 2 files changed, 182 insertions(+), 152 deletions(-) create mode 100644 src/views/configManage/configParamTreeTable/hooks/useOptions.ts diff --git a/src/views/configManage/configParamTreeTable/hooks/useOptions.ts b/src/views/configManage/configParamTreeTable/hooks/useOptions.ts new file mode 100644 index 00000000..5b2f00dc --- /dev/null +++ b/src/views/configManage/configParamTreeTable/hooks/useOptions.ts @@ -0,0 +1,157 @@ +import useI18n from '@/hooks/useI18n'; +import { regExpIPv4, regExpIPv6, validURL } from '@/utils/regular-utils'; + +export default function useOptions() { + const { t } = useI18n(); + + /**规则校验 */ + function ruleVerification(row: Record): (string | boolean)[] { + let result = [true, '']; + const type = row.type; + const value = row.value; + const filter = row.filter; + const display = row.display; + + // 子嵌套的不检查 + if (row.array) { + return result; + } + + // 可选的同时没有值不检查 + if (row.optional === 'true' && !value) { + return result; + } + switch (type) { + case 'int': + if (filter && filter.indexOf('~') !== -1) { + const filterArr = filter.split('~'); + const minInt = parseInt(filterArr[0]); + const maxInt = parseInt(filterArr[1]); + const valueInt = parseInt(value); + if (valueInt < minInt || valueInt > maxInt) { + return [ + false, + t('views.configManage.configParamForm.requireInt', { + display, + filter, + }), + ]; + } + } + break; + case 'ipv4': + if (!regExpIPv4.test(value)) { + return [ + false, + t('views.configManage.configParamForm.requireIpv4', { display }), + ]; + } + break; + case 'ipv6': + if (!regExpIPv6.test(value)) { + return [ + false, + t('views.configManage.configParamForm.requireIpv6', { display }), + ]; + } + break; + case 'enum': + if (filter && filter.indexOf('{') === 1) { + let filterJson: Record = {}; + try { + filterJson = JSON.parse(filter); //string---json + } catch (error) { + console.error(error); + } + + if (!Object.keys(filterJson).includes(`${value}`)) { + return [ + false, + t('views.configManage.configParamForm.requireEnum', { display }), + ]; + } + } + break; + case 'bool': + if (filter && filter.indexOf('{') === 1) { + let filterJson: Record = {}; + try { + filterJson = JSON.parse(filter); //string---json + } catch (error) { + console.error(error); + } + + if (!Object.values(filterJson).includes(`${value}`)) { + return [ + false, + t('views.configManage.configParamForm.requireBool', { display }), + ]; + } + } + break; + case 'string': + // 字符串长度判断 + if (filter && filter.indexOf('~') !== -1) { + try { + const filterArr = filter.split('~'); + let rule = new RegExp( + '^\\S{' + filterArr[0] + ',' + filterArr[1] + '}$' + ); + if (!rule.test(value)) { + return [ + false, + t('views.configManage.configParamForm.requireString', { + display, + }), + ]; + } + } catch (error) { + console.error(error); + } + } + // 字符串http判断 + if (value.startsWith('http')) { + try { + if (!validURL(value)) { + return [ + false, + t('views.configManage.configParamForm.requireString', { + display, + }), + ]; + } + } catch (error) { + console.error(error); + } + } + + break; + case 'regex': + if (filter) { + try { + let regex = new RegExp(filter); + if (!regex.test(value)) { + return [ + false, + t('views.configManage.configParamForm.requireString', { + display, + }), + ]; + } + } catch (error) { + console.error(error); + } + } + break; + + default: + return [ + false, + t('views.configManage.configParamForm.requireUn', { display }), + ]; + } + return result; + } + + return { ruleVerification }; +} diff --git a/src/views/configManage/configParamTreeTable/index.vue b/src/views/configManage/configParamTreeTable/index.vue index 2f77656f..95a807d8 100644 --- a/src/views/configManage/configParamTreeTable/index.vue +++ b/src/views/configManage/configParamTreeTable/index.vue @@ -13,11 +13,12 @@ import { addParamConfigInfo, } from '@/api/configManage/configParam'; import useNeInfoStore from '@/store/modules/neinfo'; -import { regExpIPv4, regExpIPv6, validURL } from '@/utils/regular-utils'; +import useOptions from './hooks/useOptions'; import { SizeType } from 'ant-design-vue/lib/config-provider'; import { DataNode } from 'ant-design-vue/lib/tree'; const neInfoStore = useNeInfoStore(); const { t } = useI18n(); +const { ruleVerification } = useOptions(); /**网元参数 */ let neCascaderOptions = ref[]>([]); @@ -25,6 +26,14 @@ let neCascaderOptions = ref[]>([]); /**网元类型选择 type,id */ let neTypeSelect = ref(['', '']); +/**左侧导航是否可收起 */ +let collapsible = ref(true); + +/**改变收起状态 */ +function changeCollapsible() { + collapsible.value = !collapsible.value; +} + /**对象信息状态类型 */ type TreeStateType = { /**网元 loading */ @@ -945,155 +954,6 @@ function arrayAddInit(data: any[], dataRule: any) { return ruleFrom; } -/**规则校验 */ -function ruleVerification(row: Record): (string | boolean)[] { - let result = [true, '']; - const type = row.type; - const value = row.value; - const filter = row.filter; - const display = row.display; - - // 子嵌套的不检查 - if (row.array) { - return result; - } - - // 可选的同时没有值不检查 - if (row.optional === 'true' && !value) { - return result; - } - switch (type) { - case 'int': - if (filter && filter.indexOf('~') !== -1) { - const filterArr = filter.split('~'); - const minInt = parseInt(filterArr[0]); - const maxInt = parseInt(filterArr[1]); - const valueInt = parseInt(value); - if (valueInt < minInt || valueInt > maxInt) { - return [ - false, - t('views.configManage.configParamForm.requireInt', { - display, - filter, - }), - ]; - } - } - break; - case 'ipv4': - if (!regExpIPv4.test(value)) { - return [ - false, - t('views.configManage.configParamForm.requireIpv4', { display }), - ]; - } - break; - case 'ipv6': - if (!regExpIPv6.test(value)) { - return [ - false, - t('views.configManage.configParamForm.requireIpv6', { display }), - ]; - } - break; - case 'enum': - if (filter && filter.indexOf('{') === 1) { - let filterJson: Record = {}; - try { - filterJson = JSON.parse(filter); //string---json - } catch (error) { - console.error(error); - } - - if (!Object.keys(filterJson).includes(`${value}`)) { - return [ - false, - t('views.configManage.configParamForm.requireEnum', { display }), - ]; - } - } - break; - case 'bool': - if (filter && filter.indexOf('{') === 1) { - let filterJson: Record = {}; - try { - filterJson = JSON.parse(filter); //string---json - } catch (error) { - console.error(error); - } - - if (!Object.values(filterJson).includes(`${value}`)) { - return [ - false, - t('views.configManage.configParamForm.requireBool', { display }), - ]; - } - } - break; - case 'string': - // 字符串长度判断 - if (filter && filter.indexOf('~') !== -1) { - try { - const filterArr = filter.split('~'); - let rule = new RegExp( - '^\\S{' + filterArr[0] + ',' + filterArr[1] + '}$' - ); - if (!rule.test(value)) { - return [ - false, - t('views.configManage.configParamForm.requireString', { - display, - }), - ]; - } - } catch (error) { - console.error(error); - } - } - // 字符串http判断 - if (value.startsWith('http')) { - try { - if (!validURL(value)) { - return [ - false, - t('views.configManage.configParamForm.requireString', { - display, - }), - ]; - } - } catch (error) { - console.error(error); - } - } - - break; - case 'regex': - if (filter) { - try { - let regex = new RegExp(filter); - if (!regex.test(value)) { - return [ - false, - t('views.configManage.configParamForm.requireString', { - display, - }), - ]; - } - } catch (error) { - console.error(error); - } - } - break; - - default: - return [ - false, - t('views.configManage.configParamForm.requireUn', { display }), - ]; - } - return result; -} - /**对话框对象信息状态类型 */ type ModalStateType = { /**添加框是否显示 */ @@ -1197,7 +1057,13 @@ onMounted(() => {