diff --git a/src/api/perfManage/perfThreshold.ts b/src/api/perfManage/perfThreshold.ts new file mode 100644 index 00000000..16574c7e --- /dev/null +++ b/src/api/perfManage/perfThreshold.ts @@ -0,0 +1,189 @@ +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'; + +/** + * 查询任务列表 + * @param query 查询参数 + * @returns object + */ +export async function listPerfThreshold(query: Record) { + let totalSQL = 'select count(*) as total from measure_threshold where 1=1 '; + let rowsSQL = 'select * from measure_threshold where 1=1 '; + + // 查询 + let querySQL = ''; + if (query.neType) { + querySQL += ` and ne_type like '%${query.neType}%' `; + } + + // 排序 + let sortSql = ' order by create_time '; + if (query.sortOrder === 'asc') { + sortSql += ' asc '; + } else { + sortSql += ' desc '; + } + // 分页 + const pageNum = (query.pageNum - 1) * query.pageSize; + const limtSql = ` limit ${pageNum},${query.pageSize} `; + + // 发起请求 + const result = await request({ + url: `/api/rest/databaseManagement/v1/select/omc_db/measure_threshold`, + method: 'get', + params: { + totalSQL: totalSQL + querySQL, + rowsSQL: rowsSQL + querySQL + sortSql + 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) => { + const itemData = item['measure_threshold']; + 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 id 网元ID + * @returns object + */ +export async function getPerfThre(id: string | number) { + // 发起请求 + const result = await request({ + url: `/api/rest/databaseManagement/v1/select/omc_db/measure_threshold`, + method: 'get', + params: { + SQL: `select * from measure_threshold where id = ${id}`, + }, + }); + // 解析数据 + if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) { + let data = result.data.data[0]; + return Object.assign(result, { + data: parseObjLineToHump(data['measure_threshold'][0]), + }); + } + return result; +} + +/** + * 新增性能门限 + * @param data 网元对象 + * @returns object + */ +export function addPerfThre(data: Record) { + let obj: any = { + ne_type: data.neType, + kpi_set: data.performanceArr, + status: 'Inactive', + orig_severity: data.origSeverity, + threshold: data.threshold, + }; + + return request({ + url: `/api/rest/databaseManagement/v1/omc_db/measure_threshold`, + method: 'post', + data: { measure_task: [obj] }, + }); +} + +/** + * 修改性能测量任务 + * @param data 网元对象 + * @returns object + */ +export function updatePerfThre(data: Record) { + let obj: any = { + ne_type: data.neType, + kpi_set: data.performanceArr, + status: 'Inactive', + orig_severity: data.origSeverity, + threshold: data.threshold, + }; + return request({ + url: `/api/rest/databaseManagement/v1/omc_db/measure_task?WHERE=id=${data.id}`, + method: 'put', + data: { data: obj }, + }); +} + +/** + * 删除性能门限 + * @param noticeId 网元ID + * @returns object + */ +export async function delPerfThre(data: Record) { + return request({ + url: `/api/rest/databaseManagement/v1/omc_db/measure_threshold?WHERE=id=${data.id}`, + method: 'delete', + }); +} + +/** + * 获取网元跟踪接口列表 + * @returns object + */ +export async function getNePerformanceList() { + // 发起请求 + const result = await request({ + url: `/api/rest/databaseManagement/v1/elementType/omc_db/objectType/measure_title`, + method: 'get', + params: { + SQL: `SELECT * FROM measure_title`, + }, + }); + // 解析数据 + if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) { + let data = result.data.data[0]; + return Object.assign(result, { + data: parseObjLineToHump(data['measure_title']), + }); + } + return result; +} + +/** + * 激活任务 + * @param + * @returns bolb + */ +export function threRun(data: Record) { + return request({ + url: `/api/rest/databaseManagement/v1/omc_db/measure_threshold?WHERE=id=${data.id}`, + method: 'put', + data: { data: { status: 'Active' } }, + }); +} + +/** + * 挂起任务 + * @param + * @returns bolb + */ +export function threStop(data: Record) { + return request({ + url: `/api/rest/databaseManagement/v1/omc_db/measure_threshold?WHERE=id=${data.id}`, + method: 'put', + data: { data: { status: 'Inactive' } }, + }); +} diff --git a/src/api/perfManage/taskManage.ts b/src/api/perfManage/taskManage.ts index b775bda8..9bf8672f 100644 --- a/src/api/perfManage/taskManage.ts +++ b/src/api/perfManage/taskManage.ts @@ -18,6 +18,13 @@ export async function listPerfTask(query: Record) { querySQL += ` and ne_type like '%${query.neType}%' `; } + // 排序 + let sortSql = ' order by create_time '; + if (query.sortOrder === 'asc') { + sortSql += ' asc '; + } else { + sortSql += ' desc '; + } // 分页 const pageNum = (query.pageNum - 1) * query.pageSize; const limtSql = ` limit ${pageNum},${query.pageSize} `; @@ -28,7 +35,7 @@ export async function listPerfTask(query: Record) { method: 'get', params: { totalSQL: totalSQL + querySQL, - rowsSQL: rowsSQL + querySQL + limtSql, + rowsSQL: rowsSQL + querySQL + sortSql+ limtSql, }, }); @@ -171,7 +178,7 @@ export async function delPerfTask(data: Record) { } /** - * 获取网元跟踪接口列表 + * 获取性能测量指标列表 * @returns object */ export async function getNePerformanceList() { diff --git a/src/i18n/locales/en-US.ts b/src/i18n/locales/en-US.ts index ddafb392..a54a1e26 100644 --- a/src/i18n/locales/en-US.ts +++ b/src/i18n/locales/en-US.ts @@ -224,7 +224,17 @@ export default { addTask:'Add Task', stopTask:'Stop Task', errorTaskInfo: 'Failed to obtain task information', + granulOptionPlease:'Please select the measurement granularity', }, + perfThreshold:{ + thresholdValue:'Threshold Value', + alarmType:'Alarm Type', + delThre:'Successfully deleted threshold {num}', + delThreTip:'Are you sure to delete the data item with record number {num}?', + editThre:'Update Threshold', + addThre:'Add Threshold', + errorThreInfo: 'Failed to obtain threshold information', + } }, traceManage: { analysis: { diff --git a/src/i18n/locales/zh-CN.ts b/src/i18n/locales/zh-CN.ts index 7b1a35c2..8fee6b01 100644 --- a/src/i18n/locales/zh-CN.ts +++ b/src/i18n/locales/zh-CN.ts @@ -224,7 +224,17 @@ export default { addTask:'新增任务', stopTask:'挂起', errorTaskInfo: '获取任务信息失败', + granulOptionPlease:'请选择测量粒度', }, + perfThreshold:{ + thresholdValue:'门限值', + alarmType:'告警类型', + delThre:'成功删除性能门限 {num}', + delThreTip:'确认删除记录编号为 {num} 的数据项?', + editThre:'修改性能门限', + addThre:'新增性能门限', + errorThreInfo: '获取性能门限信息失败', + } }, traceManage: { analysis: { diff --git a/src/views/perfManage/perfThreshold/index.vue b/src/views/perfManage/perfThreshold/index.vue index bd222d5b..c562d0c2 100644 --- a/src/views/perfManage/perfThreshold/index.vue +++ b/src/views/perfManage/perfThreshold/index.vue @@ -1,23 +1,42 @@ @@ -347,26 +486,15 @@ onMounted(() => { - - - - - - + @@ -389,12 +517,17 @@ onMounted(() => { - + - + -
- {{ t('views.traceManage.analysis.signalData') }} -
- - {{ v.row }} - {{ v.code }} - {{ v.asciiText }} - - -
- {{ t('views.traceManage.analysis.signalDetail') }} - + + + + + + + + + + - - {{ t('views.traceManage.analysis.taskDownText') }} - -
-
+ + + + + + + + + + + + + + + + + + +
@@ -506,26 +713,4 @@ onMounted(() => { .table :deep(.ant-pagination) { padding: 0 24px; } - -.raw { - &-title { - color: #000000d9; - font-size: 24px; - line-height: 1.8; - } - .num { - background-color: #e5e5e5; - } - .code { - background-color: #e7e6ff; - } - .txt { - background-color: #ffe3e5; - } - - &-html { - max-height: 300px; - overflow-y: scroll; - } -} diff --git a/src/views/perfManage/taskManage/index.vue b/src/views/perfManage/taskManage/index.vue index 98278664..ee125a25 100644 --- a/src/views/perfManage/taskManage/index.vue +++ b/src/views/perfManage/taskManage/index.vue @@ -19,9 +19,16 @@ import { taskStop, taskRun, } from '@/api/perfManage/taskManage'; -import { regExpIPv4} from '@/utils/regular-utils'; const { t, currentLocale } = useI18n(); +const generateOptions = (start: any, end: any) => { + const options = []; + for (let i = start; i <= end; i++) { + options.push({ label: i.toString(), value: i.toString() }); + } + return options; +}; + /**表格所需option */ const taskManageOption = reactive({ granulOption: [ @@ -45,38 +52,7 @@ const taskManageOption = reactive({ { label: '星期六', value: '6' }, { label: '星期天', value: '7' }, ], - Monthly: [ - { label: '1', value: '1' }, - { label: '2', value: '2' }, - { label: '3', value: '3' }, - { label: '4', value: '4' }, - { label: '5', value: '5' }, - { label: '6', value: '6' }, - { label: '7', value: '7' }, - { label: '8', value: '8' }, - { label: '9', value: '9' }, - { label: '10', value: '10' }, - { label: '11', value: '11' }, - { label: '12', value: '12' }, - { label: '13', value: '13' }, - { label: '14', value: '14' }, - { label: '15', value: '15' }, - { label: '16', value: '16' }, - { label: '17', value: '17' }, - { label: '18', value: '18' }, - { label: '19', value: '19' }, - { label: '20', value: '20' }, - { label: '21', value: '21' }, - { label: '22', value: '22' }, - { label: '23', value: '23' }, - { label: '24', value: '24' }, - { label: '25', value: '25' }, - { label: '26', value: '26' }, - { label: '27', value: '27' }, - { label: '28', value: '28' }, - { label: '29', value: '29' }, - { label: '30', value: '30' }, - ], + Monthly: generateOptions(1, 30), }, }); @@ -206,7 +182,7 @@ function fnTableSize({ key }: MenuInfo) { } /** - * 备份信息删除 + * 测量任务删除 * @param row 记录编号ID */ function fnRecordDelete(row: Record) { @@ -323,17 +299,10 @@ const modalStateFrom = Form.useForm( message: t('views.traceManage.task.neTypePlease'), }, ], - endTime: [ + granulOption: [ { required: true, - message: t('views.traceManage.task.rangePickerPlease'), - }, - ], - dstIp: [ - { - required: true, - pattern: regExpIPv4, - message: t('views.traceManage.task.dstIpPlease'), + message: t('views.perfManage.taskManage.granulOptionPlease'), }, ], performanceArr: [ @@ -379,7 +348,7 @@ function fnChange(open: any) { } /**性能测量数据集对应修改 */ -function fnSelectInterface(s: any, option: any) { +function fnSelectPer(s: any, option: any) { modalState.from.kpiSet = s.join(','); const groupedData = option.reduce((groups: any, item: any) => { const { kpiCode, ...rest } = item; @@ -556,32 +525,39 @@ function fnModalVisibleByEdit(id?: string) { * 进行表达规则校验 */ function fnModalOk() { - const from = toRaw(modalState.from); - from.accountId = useUserStore().userName; - console.log(from); - modalState.confirmLoading = true; - const perfTask = from.id ? updatePerfTask(from) : addPerfTask(from); - const hide = message.loading(t('common.loading'), 0); - perfTask - .then(res => { - if (res.code === RESULT_CODE_SUCCESS) { - message.success({ - content: t('common.msgSuccess', { msg: modalState.title }), - duration: 3, + modalStateFrom + .validate() + .then(e => { + const from = toRaw(modalState.from); + from.accountId = useUserStore().userName; + console.log(from); + modalState.confirmLoading = true; + const perfTask = from.id ? updatePerfTask(from) : addPerfTask(from); + const hide = message.loading(t('common.loading'), 0); + perfTask + .then(res => { + if (res.code === RESULT_CODE_SUCCESS) { + message.success({ + content: t('common.msgSuccess', { msg: modalState.title }), + duration: 3, + }); + modalState.visibleByEdit = false; + modalStateFrom.resetFields(); + } else { + message.error({ + content: `${res.msg}`, + duration: 3, + }); + } + }) + .finally(() => { + hide(); + modalState.confirmLoading = false; + fnGetList(); }); - modalState.visibleByEdit = false; - modalStateFrom.resetFields(); - } else { - message.error({ - content: `${res.msg}`, - duration: 3, - }); - } }) - .finally(() => { - hide(); - modalState.confirmLoading = false; - fnGetList(); + .catch(e => { + message.error(t('common.errorFields', { num: e.errorFields.length }), 3); }); } @@ -838,14 +814,18 @@ onMounted(() => { - + @@ -1031,7 +1011,7 @@ onMounted(() => { placeholder="Please select" v-model:value="modalState.neTypPerformanceList" :options="modalState.neTypPerformance" - @change="fnSelectInterface" + @change="fnSelectPer" >