From 302fb2f25876eb22ff23786d9fe21a42ef22897b Mon Sep 17 00:00:00 2001 From: zhangyao Date: Thu, 29 Jun 2023 12:48:08 +0800 Subject: [PATCH] feat: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 预警管理静态页面开发 --- src/bg-ui/bg-code-editor.vue | 20 +- src/bg-ui/bg-table.vue | 22 +- src/components/env.js | 4 + src/components/manual-distribution/form.vue | 1 - src/components/warn-detail/info.vue | 6 +- .../indicator-config/add/index.vue | 60 +++ .../indicator-config/detail/index.vue | 7 + .../indicator-config/edit/index.vue | 126 +++++ .../forewarning/indicator-config/index.vue | 384 ++++++++++++++ .../indicator-config/modules/add-form.vue | 469 ++++++++++++++++++ .../indicator-config/modules/interface.js | 39 ++ .../indicator-config/modules/slide.vue | 418 ++++++++++++++++ src/page/main/forewarning/list/index.vue | 5 +- .../main/forewarning/rule-set/add/index.vue | 56 +++ .../forewarning/rule-set/detail/index.vue | 256 +++++++++- .../main/forewarning/rule-set/edit/index.vue | 210 ++++++++ src/page/main/forewarning/rule-set/index.vue | 22 +- .../forewarning/rule-set/modules/add-form.vue | 264 ++++++++++ .../rule-set/modules/common-com.vue | 171 +++++++ .../forewarning/rule-set/modules/custom.vue | 440 ++++++++++++++++ .../forewarning/rule-set/modules/gateway.vue | 286 +++++++++++ .../forewarning/rule-set/modules/static.vue | 412 +++++++++++++++ .../business-ticket-manage/add/index.vue | 1 + 23 files changed, 3652 insertions(+), 27 deletions(-) create mode 100644 src/page/main/forewarning/indicator-config/add/index.vue create mode 100644 src/page/main/forewarning/indicator-config/detail/index.vue create mode 100644 src/page/main/forewarning/indicator-config/edit/index.vue create mode 100644 src/page/main/forewarning/indicator-config/index.vue create mode 100644 src/page/main/forewarning/indicator-config/modules/add-form.vue create mode 100644 src/page/main/forewarning/indicator-config/modules/interface.js create mode 100644 src/page/main/forewarning/indicator-config/modules/slide.vue create mode 100644 src/page/main/forewarning/rule-set/add/index.vue create mode 100644 src/page/main/forewarning/rule-set/edit/index.vue create mode 100644 src/page/main/forewarning/rule-set/modules/add-form.vue create mode 100644 src/page/main/forewarning/rule-set/modules/common-com.vue create mode 100644 src/page/main/forewarning/rule-set/modules/custom.vue create mode 100644 src/page/main/forewarning/rule-set/modules/gateway.vue create mode 100644 src/page/main/forewarning/rule-set/modules/static.vue diff --git a/src/bg-ui/bg-code-editor.vue b/src/bg-ui/bg-code-editor.vue index 827c959..7ecb6c6 100644 --- a/src/bg-ui/bg-code-editor.vue +++ b/src/bg-ui/bg-code-editor.vue @@ -82,20 +82,28 @@ const states = reactive({ const codeChange = () => { emit("update:modelValue", states.content); }; - -onMounted(() => { +const init = (n) => { let obj = ""; // console.log(typeof JSON.parse(this.datas)); try { - if (typeof JSON.parse(props.modelValue) == "object") { - obj = JSON.stringify(JSON.parse(props.modelValue), null, "\t"); + if (typeof JSON.parse(n) == "object") { + obj = JSON.stringify(JSON.parse(n), null, "\t"); } else { - obj = props.modelValue; + obj = n; } } catch (e) { - obj = props.modelValue; + obj = n; } states.content = obj; +}; +watch( + () => props.modelValue, + (n) => { + init(n); + } +); +onMounted(() => { + init(props.modelValue); }); const { content } = toRefs(states); diff --git a/src/bg-ui/bg-table.vue b/src/bg-ui/bg-table.vue index 38ec75b..601448c 100644 --- a/src/bg-ui/bg-table.vue +++ b/src/bg-ui/bg-table.vue @@ -24,7 +24,7 @@ import { watch, ref, nextTick } from "vue"; import { selectTableMixin } from "./hook/mixin-select-table"; -const { - nowSelectData, - allSelectData, - initAllSelectData, - selectData, - initSelectTableData, - runPage, - dealSelectData, -} = selectTableMixin(); +const { nowSelectData, allSelectData, initAllSelectData, selectData, initSelectTableData, runPage, dealSelectData } = + selectTableMixin(); const props = defineProps({ height: { @@ -112,6 +105,11 @@ const props = defineProps({ type: Array, default: () => [], }, + // 自定义返回值用来决定这一行的 CheckBox 是否可以勾选 + selectable: { + type: Function, + default: null, + }, }); const table = ref(null); @@ -198,6 +196,10 @@ const tableRowClassName = ({ row, rowIndex }) => { } }; const selectable = (row, index) => { + // 判断是否传入自定义返回值用来决定这一行的 CheckBox 是否可以勾选,否则使用默认勾选逻辑 + if (props.selectable) { + return props.selectable(row, index); + } if (props.canEdit) { if (row[props.canEditFlag] && row[props.canEditFlag] == 1) { return false; diff --git a/src/components/env.js b/src/components/env.js index b8697a2..a29f352 100644 --- a/src/components/env.js +++ b/src/components/env.js @@ -2,4 +2,8 @@ export const TIMEING_RULES = { 1: '手动下发', 2: '按周', 3: '自定义时间' +} +export const MAX_DAY = 7; +export const ONLY_INPUT_NUM = (value) => { + return value.replace(/[^\d]/g, '') } \ No newline at end of file diff --git a/src/components/manual-distribution/form.vue b/src/components/manual-distribution/form.vue index 3dbc950..fa455be 100644 --- a/src/components/manual-distribution/form.vue +++ b/src/components/manual-distribution/form.vue @@ -268,7 +268,6 @@ defineExpose({ } } .user-table { - max-height: 345px; :deep(.el-table thead th) { background-color: #f5f6f9; } diff --git a/src/components/warn-detail/info.vue b/src/components/warn-detail/info.vue index c14dc02..dc9afec 100644 --- a/src/components/warn-detail/info.vue +++ b/src/components/warn-detail/info.vue @@ -2,7 +2,7 @@
-
+
{{ item.label }}
@@ -13,7 +13,7 @@ {{ STATUS_OBJ[valueData[item.prop]] }} - {{ valueData[item.prop] }} + {{ valueData[item.prop] }}
@@ -60,7 +60,7 @@ const status_obj = computed(() => { align-items: center; flex: 1; height: 48px; - line-height: 46px; + line-height: 48px; font-size: 14px; color: #404a62; .label { diff --git a/src/page/main/forewarning/indicator-config/add/index.vue b/src/page/main/forewarning/indicator-config/add/index.vue new file mode 100644 index 0000000..9f6050d --- /dev/null +++ b/src/page/main/forewarning/indicator-config/add/index.vue @@ -0,0 +1,60 @@ + + + + + diff --git a/src/page/main/forewarning/indicator-config/detail/index.vue b/src/page/main/forewarning/indicator-config/detail/index.vue new file mode 100644 index 0000000..0985907 --- /dev/null +++ b/src/page/main/forewarning/indicator-config/detail/index.vue @@ -0,0 +1,7 @@ + + + + + diff --git a/src/page/main/forewarning/indicator-config/edit/index.vue b/src/page/main/forewarning/indicator-config/edit/index.vue new file mode 100644 index 0000000..3a60c52 --- /dev/null +++ b/src/page/main/forewarning/indicator-config/edit/index.vue @@ -0,0 +1,126 @@ + + + + + diff --git a/src/page/main/forewarning/indicator-config/index.vue b/src/page/main/forewarning/indicator-config/index.vue new file mode 100644 index 0000000..e4379d7 --- /dev/null +++ b/src/page/main/forewarning/indicator-config/index.vue @@ -0,0 +1,384 @@ + + + + + diff --git a/src/page/main/forewarning/indicator-config/modules/add-form.vue b/src/page/main/forewarning/indicator-config/modules/add-form.vue new file mode 100644 index 0000000..bf8dcf6 --- /dev/null +++ b/src/page/main/forewarning/indicator-config/modules/add-form.vue @@ -0,0 +1,469 @@ + + + + + + diff --git a/src/page/main/forewarning/indicator-config/modules/interface.js b/src/page/main/forewarning/indicator-config/modules/interface.js new file mode 100644 index 0000000..37edbf1 --- /dev/null +++ b/src/page/main/forewarning/indicator-config/modules/interface.js @@ -0,0 +1,39 @@ +import { ElMessage } from "element-plus"; +const setParams = (res, { id, class_id }) => { + let params = { + class_id, + metric_name: res.name, + expr: res.indicator_expression, + alert_range: res.warningScopeRows.map((e) => { + return { + variable_name: e.key, + metric_name: e.indicator_scope, + metric_label: e.indicator_tag, + chinese_name: e.cname, + is_required: e.is_required == 1, + is_linked: e.is_linkage == 1, + }; + }) || [], + duration: res.time, + duration_unit: res.unit, + check_period: res.inspection_cycle, + is_enabled: res.state, + alert_rule_type: res.rule_type, + } + if (id) { + params.id = id + } + return params; +} +export const URL = "https://so.wodcloud.co/v1/api/metric_config" +export const Save = (res, p) => { + let params = setParams(res, p); + console.log("params: ", params); + // axios[id ? 'put' : 'post'](URL, params).then(res => { + // if(res.data.code == 200){ + // console.log('success'); + // }else{ + // ElMessage.error(res.data.data) + // } + // }) +} \ No newline at end of file diff --git a/src/page/main/forewarning/indicator-config/modules/slide.vue b/src/page/main/forewarning/indicator-config/modules/slide.vue new file mode 100644 index 0000000..4178c04 --- /dev/null +++ b/src/page/main/forewarning/indicator-config/modules/slide.vue @@ -0,0 +1,418 @@ + + + + + + diff --git a/src/page/main/forewarning/list/index.vue b/src/page/main/forewarning/list/index.vue index a425c7f..adc6888 100644 --- a/src/page/main/forewarning/list/index.vue +++ b/src/page/main/forewarning/list/index.vue @@ -87,6 +87,7 @@ :headers="headers" :rows="tableRows" @selectAc="selectRows" + :selectable="selectable" :isIndex="true" :select="true" :stripe="true"> @@ -398,7 +399,9 @@ const filterClear = () => { }; changePage(1); }; // 重置筛选项 - +const selectable = (row, index) => { + return row.state === 0; +}; const getTableRows = () => { let params = { ...state.filter }; // axios diff --git a/src/page/main/forewarning/rule-set/add/index.vue b/src/page/main/forewarning/rule-set/add/index.vue new file mode 100644 index 0000000..61d336b --- /dev/null +++ b/src/page/main/forewarning/rule-set/add/index.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/src/page/main/forewarning/rule-set/detail/index.vue b/src/page/main/forewarning/rule-set/detail/index.vue index d0315ee..7f702da 100644 --- a/src/page/main/forewarning/rule-set/detail/index.vue +++ b/src/page/main/forewarning/rule-set/detail/index.vue @@ -1,7 +1,257 @@ - + - + diff --git a/src/page/main/forewarning/rule-set/edit/index.vue b/src/page/main/forewarning/rule-set/edit/index.vue new file mode 100644 index 0000000..ea05c63 --- /dev/null +++ b/src/page/main/forewarning/rule-set/edit/index.vue @@ -0,0 +1,210 @@ + + + + + diff --git a/src/page/main/forewarning/rule-set/index.vue b/src/page/main/forewarning/rule-set/index.vue index 768d19f..8a97402 100644 --- a/src/page/main/forewarning/rule-set/index.vue +++ b/src/page/main/forewarning/rule-set/index.vue @@ -69,6 +69,7 @@ :headers="headers" :rows="tableRows" @selectAc="selectRows" + :selectable="selectable" :isIndex="true" :select="true" :stripe="true"> @@ -243,7 +244,12 @@ const batchDelete = () => { const goDetail = (row) => { console.log("去详情"); - router.push(`/forewarning/rule-set/detail?id=${row.id}`); + router.push({ + path: "/forewarning/rule-set/detail", + query: { + id: row.id, + }, + }); }; // 查看详情 const changeSearch = (val) => { @@ -267,6 +273,9 @@ const filterClear = () => { changePage(1); }; // 重置筛选项 +const selectable = (row, index) => { + return row.state === 0; +}; const getTableRows = () => { let params = { ...state.filter }; // axios @@ -349,12 +358,19 @@ const stateChange = (row) => { const addRule = () => { console.log("新增"); - // router.push(`/xxx/xxx`); + router.push({ + path: `/forewarning/rule-set/add`, + }); }; // 新增规则 const editRow = (row) => { console.log("编辑"); - // router.push(`/xxx/xxx?id=${row.id}`); + router.push({ + path: `/forewarning/rule-set/edit`, + query: { + id: row.id, + }, + }); }; // 编辑 const deleteRow = (row) => { diff --git a/src/page/main/forewarning/rule-set/modules/add-form.vue b/src/page/main/forewarning/rule-set/modules/add-form.vue new file mode 100644 index 0000000..b3f9d11 --- /dev/null +++ b/src/page/main/forewarning/rule-set/modules/add-form.vue @@ -0,0 +1,264 @@ + + + + + + diff --git a/src/page/main/forewarning/rule-set/modules/common-com.vue b/src/page/main/forewarning/rule-set/modules/common-com.vue new file mode 100644 index 0000000..364d273 --- /dev/null +++ b/src/page/main/forewarning/rule-set/modules/common-com.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/src/page/main/forewarning/rule-set/modules/custom.vue b/src/page/main/forewarning/rule-set/modules/custom.vue new file mode 100644 index 0000000..e2f34e5 --- /dev/null +++ b/src/page/main/forewarning/rule-set/modules/custom.vue @@ -0,0 +1,440 @@ + + + + + diff --git a/src/page/main/forewarning/rule-set/modules/gateway.vue b/src/page/main/forewarning/rule-set/modules/gateway.vue new file mode 100644 index 0000000..b510074 --- /dev/null +++ b/src/page/main/forewarning/rule-set/modules/gateway.vue @@ -0,0 +1,286 @@ + + + + + diff --git a/src/page/main/forewarning/rule-set/modules/static.vue b/src/page/main/forewarning/rule-set/modules/static.vue new file mode 100644 index 0000000..2999a0f --- /dev/null +++ b/src/page/main/forewarning/rule-set/modules/static.vue @@ -0,0 +1,412 @@ + + + + + diff --git a/src/page/main/ticket/business-ticket-manage/add/index.vue b/src/page/main/ticket/business-ticket-manage/add/index.vue index 142dc23..af2b567 100644 --- a/src/page/main/ticket/business-ticket-manage/add/index.vue +++ b/src/page/main/ticket/business-ticket-manage/add/index.vue @@ -63,6 +63,7 @@ const Distribute = async () => { align-items: center; justify-content: flex-end; border-top: 1px solid #ddd; + padding: 0 24px; } } } -- 2.26.0