forked from integrated_whb/integrated_whb_vue
init
parent
04f28b4acc
commit
7724a93c30
File diff suppressed because it is too large
Load Diff
|
@ -91,7 +91,7 @@
|
|||
.el-menu-item {
|
||||
&:hover, &.is-active {
|
||||
//background: #1d3f77;
|
||||
background-image: linear-gradient(to right, #1e499a, rgba(0,0,0,0));
|
||||
background-image: linear-gradient(to right, #1e499a, rgba(0, 0, 0, 0));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -122,7 +122,7 @@
|
|||
width: 100% !important;
|
||||
}
|
||||
|
||||
.el-textarea.is-disabled .el-textarea__inner {
|
||||
.el-textarea.is-disabled .el-textarea__inner, .el-select {
|
||||
--el-disabled-border-color: var(--el-border-color);
|
||||
}
|
||||
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 6.4 KiB |
|
@ -2041,6 +2041,109 @@ export default [
|
|||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/major_hazard_sources/monitoring_type_management",
|
||||
meta: { title: "监测类型管理", isSubMenu: false },
|
||||
component: "major_hazard_sources/monitoring_type_management/index",
|
||||
},
|
||||
{
|
||||
path: "/major_hazard_sources/data_collection_threshold_setting",
|
||||
meta: { title: "数据采集阈值设定", isSubMenu: false },
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
component:
|
||||
"major_hazard_sources/data_collection_threshold_setting/index",
|
||||
},
|
||||
{
|
||||
path: "/major_hazard_sources/data_collection_threshold_setting/threshold_setting",
|
||||
meta: {
|
||||
title: "阈值设定",
|
||||
activeMenu:
|
||||
"/major_hazard_sources/data_collection_threshold_setting",
|
||||
},
|
||||
component:
|
||||
"major_hazard_sources/data_collection_threshold_setting/threshold_setting",
|
||||
},
|
||||
{
|
||||
path: "/major_hazard_sources/data_collection_threshold_setting/view",
|
||||
meta: {
|
||||
title: "查看",
|
||||
activeMenu:
|
||||
"/major_hazard_sources/data_collection_threshold_setting",
|
||||
},
|
||||
component:
|
||||
"major_hazard_sources/data_collection_threshold_setting/view",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/major_hazard_sources/real_time_data_monitoring",
|
||||
meta: { title: "实时数据监测", isSubMenu: false },
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
component: "major_hazard_sources/real_time_data_monitoring/index",
|
||||
},
|
||||
{
|
||||
path: "/major_hazard_sources/real_time_data_monitoring/view",
|
||||
meta: {
|
||||
title: "查看",
|
||||
activeMenu: "/major_hazard_sources/real_time_data_monitoring",
|
||||
},
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
component:
|
||||
"major_hazard_sources/real_time_data_monitoring/view",
|
||||
},
|
||||
{
|
||||
path: "/major_hazard_sources/real_time_data_monitoring/view/emergency_handling_record",
|
||||
meta: {
|
||||
title: "应急处理记录",
|
||||
activeMenu: "/major_hazard_sources/real_time_data_monitoring",
|
||||
},
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "",
|
||||
component:
|
||||
"major_hazard_sources/real_time_data_monitoring/emergency_handling_record",
|
||||
},
|
||||
{
|
||||
path: "/major_hazard_sources/real_time_data_monitoring/view/emergency_handling_record/view",
|
||||
meta: {
|
||||
title: "查看",
|
||||
activeMenu:
|
||||
"/major_hazard_sources/real_time_data_monitoring",
|
||||
},
|
||||
component:
|
||||
"major_hazard_sources/real_time_data_monitoring/emergency_handling_record_view",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: "/three_institutional_libraries",
|
||||
redirect:
|
||||
"/three_institutional_libraries/safety_production_responsibility_system",
|
||||
meta: { title: "三项制度库", model: MODEL["5"] },
|
||||
component: "children",
|
||||
children: [
|
||||
{
|
||||
path: "/three_institutional_libraries/safety_production_responsibility_system",
|
||||
meta: { title: "安全生产责任制", isSubMenu: false },
|
||||
component:
|
||||
"three_institutional_libraries/safety_production_responsibility_system/index",
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
|
|
@ -251,6 +251,13 @@ export const layoutFnGetMajorHazardSourceType = async () => {
|
|||
});
|
||||
return ref(resData.list);
|
||||
};
|
||||
// 监测数据类型
|
||||
export const layoutFnGetEquipmentType = async () => {
|
||||
const resData = await getLevelsCorp({
|
||||
DICTIONARIES_ID: "6a724d36c3ad416fad22049d932c1987",
|
||||
});
|
||||
return ref(resData.list);
|
||||
};
|
||||
// 部门树
|
||||
export const layoutFnGetDepartmentTree = async (params) => {
|
||||
const resData = await getDepartmentTree(params);
|
||||
|
|
|
@ -62,7 +62,5 @@ export const setRealTimeDataMonitoringEquipmentEdit = (params) =>
|
|||
post("/majordangersourcedisposal/edit", params); // 实时数据监测设备应急处置修改
|
||||
export const getEmergencyHandlingRecordList = (params) =>
|
||||
post("/majordangersourcedisposal/list", params); // 应急处理记录列表
|
||||
export const setEmergencyHandlingRecordFalseAlarm = (params) =>
|
||||
post("/majordangersourcedisposal/editAlarmFalse", params); // 应急处理记录设置成误报
|
||||
export const getEmergencyHandlingRecordView = (params) =>
|
||||
post("/majordangersourcedisposal/goShow", params); // 应急处理记录查看
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<div class="title">{{ item.title }}</div>
|
||||
</div>
|
||||
<div :class="['child_container', { active: item.check }]">
|
||||
<div class="child_options">
|
||||
<div :class="['child_options', item.type]">
|
||||
<div
|
||||
class="child_option"
|
||||
v-for="(item1, index1) in item.list"
|
||||
|
@ -422,6 +422,10 @@ const fnBottomChildOptionsListChange = (index, item1, index1) => {
|
|||
color: #28b9fe;
|
||||
}
|
||||
}
|
||||
|
||||
&.workSafely {
|
||||
left: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,116 @@
|
|||
<template>
|
||||
<el-dialog v-model="visible" title="设备停用" :on-close="fnClose">
|
||||
<el-form ref="formRef" :rules="rules" :model="form" label-width="150px">
|
||||
<el-form-item label="停用状态" prop="DISABLE_STATUS">
|
||||
<el-select v-model="form.DISABLE_STATUS">
|
||||
<el-option
|
||||
v-for="item in [
|
||||
{ ID: '2', NAME: '停用' },
|
||||
{ ID: '3', NAME: '检修' },
|
||||
]"
|
||||
:key="item.ID"
|
||||
:label="item.NAME"
|
||||
:value="item.ID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="停用开始时间" prop="DISABLE_TIME_START">
|
||||
<el-date-picker
|
||||
v-model="form.DISABLE_TIME_START"
|
||||
format="YYYY-MM-DD HH:mm"
|
||||
value-format="YYYY-MM-DD HH:mm"
|
||||
type="datetime"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="停用结束时间" prop="DISABLE_TIME_END">
|
||||
<el-date-picker
|
||||
v-model="form.DISABLE_TIME_END"
|
||||
format="YYYY-MM-DD HH:mm"
|
||||
value-format="YYYY-MM-DD HH:mm"
|
||||
type="datetime"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="停用原因" prop="DISABLE_REASON">
|
||||
<el-input
|
||||
v-model="form.DISABLE_REASON"
|
||||
:autosize="{ minRows: 3 }"
|
||||
type="textarea"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="停用人" prop="DISABLE_USER">
|
||||
<el-input v-model="form.DISABLE_USER" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="fnClose">取消</el-button>
|
||||
<el-button type="primary" @click="fnSubmit"> 确定 </el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from "vue";
|
||||
import { useVModels } from "@vueuse/core";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||
import { setDataCollectionThresholdSettingDeactivate } from "@/request/major_hazard_sources.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
|
||||
const props = defineProps({
|
||||
visible: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
default: false,
|
||||
},
|
||||
form: {
|
||||
type: Object,
|
||||
required: true,
|
||||
default: () => ({}),
|
||||
},
|
||||
id: {
|
||||
type: String,
|
||||
required: true,
|
||||
default: "",
|
||||
},
|
||||
});
|
||||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||
const { visible, form } = useVModels(props, emits);
|
||||
const rules = {
|
||||
DISABLE_STATUS: [
|
||||
{ required: true, message: "停用状态不能为空", trigger: "blur" },
|
||||
],
|
||||
DISABLE_TIME_START: [
|
||||
{ required: true, message: "请选择停用开始时间", trigger: "blur" },
|
||||
],
|
||||
DISABLE_TIME_END: [
|
||||
{ required: true, message: "请选择停用结束时间", trigger: "blur" },
|
||||
],
|
||||
DISABLE_REASON: [
|
||||
{ required: true, message: "停用原因不能为空", trigger: "blur" },
|
||||
],
|
||||
DISABLE_USER: [
|
||||
{ required: true, message: "停用人不能为空", trigger: "blur" },
|
||||
],
|
||||
};
|
||||
const formRef = ref(null);
|
||||
const fnClose = () => {
|
||||
formRef.value.resetFields();
|
||||
visible.value = false;
|
||||
};
|
||||
const fnSubmit = debounce(
|
||||
1000,
|
||||
async () => {
|
||||
await useFormValidate(formRef);
|
||||
await setDataCollectionThresholdSettingDeactivate({
|
||||
...form.value,
|
||||
MAJORDANGERSOURCE_ID: props.id,
|
||||
});
|
||||
ElMessage.success("停用成功");
|
||||
fnClose();
|
||||
emits("get-data");
|
||||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -0,0 +1,294 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
v-model="visible"
|
||||
:title="type === 'add' ? '添加' : '修改'"
|
||||
:on-close="fnClose"
|
||||
>
|
||||
<el-form ref="formRef" :rules="rules" :model="form" label-width="110px">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="监测数据类型" prop="MONITORINGDEVICESENSOR_TYPE">
|
||||
<el-select
|
||||
v-model="form.MONITORINGDEVICESENSOR_TYPE"
|
||||
:disabled="type === 'edit'"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in equipmentTypeList"
|
||||
:key="item.BIANMA"
|
||||
:label="item.NAME"
|
||||
:value="item.BIANMA"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="量程下限" prop="RANGE_MIN">
|
||||
<el-input-number
|
||||
v-model="form.RANGE_MIN"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:mix="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="量程上限" prop="RANGE_MAX">
|
||||
<el-input-number
|
||||
v-model="form.RANGE_MAX"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:mix="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="一级预警下限" prop="RANGE1_MIN">
|
||||
<el-input-number
|
||||
v-model="form.RANGE1_MIN"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:mix="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="一级预警上限" prop="RANGE1_MAX">
|
||||
<el-input-number
|
||||
v-model="form.RANGE1_MAX"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:mix="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="二级预警下限" prop="RANGE2_MIN">
|
||||
<el-input-number
|
||||
v-model="form.RANGE2_MIN"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:mix="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="二级预警上限" prop="RANGE2_MAX">
|
||||
<el-input-number
|
||||
v-model="form.RANGE2_MAX"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:mix="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="三级预警下限" prop="RANGE3_MIN">
|
||||
<el-input-number
|
||||
v-model="form.RANGE3_MIN"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:mix="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="三级预警上限" prop="RANGE3_MAX">
|
||||
<el-input-number
|
||||
v-model="form.RANGE3_MAX"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:mix="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="四级预警下限" prop="RANGE4_MIN">
|
||||
<el-input-number
|
||||
v-model="form.RANGE4_MIN"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:mix="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="四级预警上限" prop="RANGE4_MAX">
|
||||
<el-input-number
|
||||
v-model="form.RANGE4_MAX"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:mix="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="fnClose">取消</el-button>
|
||||
<el-button type="primary" @click="fnSubmit"> 确定 </el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { useVModels } from "@vueuse/core";
|
||||
import { ref } from "vue";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||
import {
|
||||
setDataCollectionThresholdSettingThresholdSettingAdd,
|
||||
setDataCollectionThresholdSettingThresholdSettingEdit,
|
||||
} from "@/request/major_hazard_sources.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
|
||||
const props = defineProps({
|
||||
visible: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
default: false,
|
||||
},
|
||||
form: {
|
||||
type: Object,
|
||||
required: true,
|
||||
default: () => {},
|
||||
},
|
||||
type: {
|
||||
type: String,
|
||||
required: true,
|
||||
default: "",
|
||||
},
|
||||
id: {
|
||||
type: String,
|
||||
required: true,
|
||||
default: "",
|
||||
},
|
||||
equipmentTypeList: {
|
||||
type: Array,
|
||||
required: true,
|
||||
default: () => [],
|
||||
},
|
||||
});
|
||||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||
const { visible, form } = useVModels(props, emits);
|
||||
const rules = {
|
||||
MONITORINGDEVICESENSOR_TYPE: [
|
||||
{ required: true, message: "监测数据类型不能为空", trigger: "blur" },
|
||||
],
|
||||
RANGE_MIN: [
|
||||
{
|
||||
required: true,
|
||||
pattern:
|
||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
|
||||
message: "请输入正确格式,可保留两位小数",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
RANGE_MAX: [
|
||||
{
|
||||
required: true,
|
||||
pattern:
|
||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
|
||||
message: "请输入正确格式,可保留两位小数",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
RANGE1_MIN: [
|
||||
{
|
||||
required: true,
|
||||
pattern:
|
||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
|
||||
message: "请输入正确格式,可保留两位小数",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
RANGE1_MAX: [
|
||||
{
|
||||
required: true,
|
||||
pattern:
|
||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
|
||||
message: "请输入正确格式,可保留两位小数",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
RANGE2_MIN: [
|
||||
{
|
||||
required: true,
|
||||
pattern:
|
||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
|
||||
message: "请输入正确格式,可保留两位小数",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
RANGE2_MAX: [
|
||||
{
|
||||
required: true,
|
||||
pattern:
|
||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
|
||||
message: "请输入正确格式,可保留两位小数",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
RANGE3_MIN: [
|
||||
{
|
||||
required: true,
|
||||
pattern:
|
||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
|
||||
message: "请输入正确格式,可保留两位小数",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
RANGE3_MAX: [
|
||||
{
|
||||
required: true,
|
||||
pattern:
|
||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
|
||||
message: "请输入正确格式,可保留两位小数",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
RANGE4_MIN: [
|
||||
{
|
||||
required: true,
|
||||
pattern:
|
||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
|
||||
message: "请输入正确格式,可保留两位小数",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
RANGE4_MAX: [
|
||||
{
|
||||
required: true,
|
||||
pattern:
|
||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
|
||||
message: "请输入正确格式,可保留两位小数",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
};
|
||||
const formRef = ref(null);
|
||||
const fnClose = () => {
|
||||
formRef.value.resetFields();
|
||||
visible.value = false;
|
||||
};
|
||||
const fnSubmit = debounce(
|
||||
1000,
|
||||
async () => {
|
||||
await useFormValidate(formRef);
|
||||
props.type === "add"
|
||||
? await setDataCollectionThresholdSettingThresholdSettingAdd({
|
||||
...form.value,
|
||||
MAJORDANGERSOURCE_ID: props.id,
|
||||
})
|
||||
: await setDataCollectionThresholdSettingThresholdSettingEdit({
|
||||
...form.value,
|
||||
MAJORDANGERSOURCE_ID: props.id,
|
||||
});
|
||||
fnClose();
|
||||
ElMessage.success("保存成功");
|
||||
emits("get-data");
|
||||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -2,19 +2,19 @@
|
|||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="data.searchForm"
|
||||
:model="searchForm"
|
||||
label-width="120px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="重大危险源名称" prop="KEYWORDS">
|
||||
<el-input v-model="data.searchForm.KEYWORDS" />
|
||||
<el-form-item label="重大危险源名称" prop="MAJORDANGERSOURCE_NAME">
|
||||
<el-input v-model="searchForm.MAJORDANGERSOURCE_NAME" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item label="重大危险源类型" prop="MAJORDANGERSOURCE_TYPE">
|
||||
<el-select v-model="data.searchForm.MAJORDANGERSOURCE_TYPE">
|
||||
<el-select v-model="searchForm.MAJORDANGERSOURCE_TYPE">
|
||||
<el-option
|
||||
v-for="item in majorHazardSourceTypeList"
|
||||
:key="item.BIANMA"
|
||||
|
@ -29,7 +29,7 @@
|
|||
label="重大危险源状态"
|
||||
prop="MAJORDANGERSOURCE_STATUS"
|
||||
>
|
||||
<el-select v-model="data.searchForm.MAJORDANGERSOURCE_STATUS">
|
||||
<el-select v-model="searchForm.MAJORDANGERSOURCE_STATUS">
|
||||
<el-option
|
||||
v-for="item in majorHazardSourceStateList"
|
||||
:key="item.ID"
|
||||
|
@ -45,7 +45,7 @@
|
|||
prop="RESPONSIBLE_PERSON_NAME"
|
||||
label-width="70px"
|
||||
>
|
||||
<el-input v-model="data.searchForm.RESPONSIBLE_PERSON_NAME" />
|
||||
<el-input v-model="searchForm.RESPONSIBLE_PERSON_NAME" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
|
@ -61,13 +61,13 @@
|
|||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
:data="data.list"
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="data.pagination"
|
||||
v-model:pagination="pagination"
|
||||
>
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(data.pagination, $index) }}
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="MAJORDANGERSOURCE_NAME" label="重大危险源名称" />
|
||||
|
@ -83,11 +83,11 @@
|
|||
prop="MAJORDANGERSOURCE_ADDRESS"
|
||||
label="重大危险源地址"
|
||||
/>
|
||||
<el-table-column prop="RESPONSIBLE_PERSON" label="责任人" />
|
||||
<el-table-column prop="RESPONSIBLE_PERSON_NAME" label="责任人" />
|
||||
<el-table-column label="状态">
|
||||
<template v-slot="{ row }">
|
||||
{{
|
||||
fnTranslationStatus(
|
||||
translationStatus(
|
||||
row.MAJORDANGERSOURCE_STATUS,
|
||||
majorHazardSourceStateList
|
||||
)
|
||||
|
@ -151,90 +151,39 @@
|
|||
</el-table-column>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
<el-dialog v-model="data.deactivateDialog.visible" title="设备停用">
|
||||
<el-form
|
||||
ref="deactivateDialogFormRef"
|
||||
:rules="data.deactivateDialog.rules"
|
||||
:model="data.deactivateDialog.form"
|
||||
label-width="150px"
|
||||
>
|
||||
<el-form-item label="停用状态" prop="DISABLE_STATUS">
|
||||
<el-select v-model="data.deactivateDialog.form.DISABLE_STATUS">
|
||||
<el-option
|
||||
v-for="item in [
|
||||
{ ID: '2', NAME: '停用' },
|
||||
{ ID: '3', NAME: '检修' },
|
||||
]"
|
||||
:key="item.ID"
|
||||
:label="item.NAME"
|
||||
:value="item.ID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="停用开始时间" prop="DISABLE_TIME_START">
|
||||
<el-date-picker
|
||||
v-model="data.deactivateDialog.form.DISABLE_TIME_START"
|
||||
format="YYYY-MM-DD HH:mm"
|
||||
value-format="YYYY-MM-DD HH:mm"
|
||||
type="datetime"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="停用结束时间" prop="DISABLE_TIME_END">
|
||||
<el-date-picker
|
||||
v-model="data.deactivateDialog.form.DISABLE_TIME_END"
|
||||
format="YYYY-MM-DD HH:mm"
|
||||
value-format="YYYY-MM-DD HH:mm"
|
||||
type="datetime"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="停用原因" prop="DISABLE_REASON">
|
||||
<el-input
|
||||
v-model="data.deactivateDialog.form.DISABLE_REASON"
|
||||
autosize
|
||||
type="textarea"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="停用人" prop="DISABLE_USER">
|
||||
<el-input v-model="data.deactivateDialog.form.DISABLE_USER" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="fnDeactivateDialogChangeShow">取消</el-button>
|
||||
<el-button type="primary" @click="fnDeactivateDialogSubmit">
|
||||
确定
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<deactivate
|
||||
v-model:visible="data.deactivateDialog.visible"
|
||||
v-model:form="data.deactivateDialog.form"
|
||||
:id="data.deactivateDialog.MAJORDANGERSOURCE_ID"
|
||||
@get-data="fnResetPagination"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { nextTick, reactive, ref } from "vue";
|
||||
import { fnTranslationStatus, serialNumber } from "@/assets/js/utils";
|
||||
import { nextTick, reactive } from "vue";
|
||||
import { translationStatus, serialNumber } from "@/assets/js/utils";
|
||||
import {
|
||||
getDataCollectionThresholdSettingList,
|
||||
setDataCollectionThresholdSettingDeactivate,
|
||||
setDataCollectionThresholdSettingEnable,
|
||||
} from "@/request/major_hazard_sources";
|
||||
import { layoutFnButtonJurisdiction } from "@/assets/js/button_jurisdiction";
|
||||
import useButtonJurisdiction from "@/assets/js/useButtonJurisdiction.js";
|
||||
import { layoutFnGetMajorHazardSourceType } from "@/assets/js/data_dictionary.js";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import { useUserStore } from "@/pinia/user.js";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { useRouter } from "vue-router";
|
||||
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import Deactivate from "./components/deactivate.vue";
|
||||
|
||||
const userStore = useUserStore();
|
||||
const router = useRouter();
|
||||
const deactivateDialogFormRef = ref(null);
|
||||
const majorHazardSourceStateList = [
|
||||
{ ID: "1", NAME: "正常" },
|
||||
{ ID: "2", NAME: "停用" },
|
||||
{ ID: "3", NAME: "检修" },
|
||||
];
|
||||
const data = reactive({
|
||||
list: [],
|
||||
pagination: {
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
},
|
||||
searchForm: {},
|
||||
deactivateDialog: {
|
||||
visible: false,
|
||||
MAJORDANGERSOURCE_ID: "",
|
||||
|
@ -245,76 +194,17 @@ const data = reactive({
|
|||
DISABLE_REASON: "",
|
||||
DISABLE_USER: userStore.getUserInfo.NAME,
|
||||
},
|
||||
rules: {
|
||||
DISABLE_STATUS: [
|
||||
{ required: true, message: "停用状态不能为空", trigger: "blur" },
|
||||
],
|
||||
DISABLE_TIME_START: [
|
||||
{ required: true, message: "请选择停用开始时间", trigger: "blur" },
|
||||
],
|
||||
DISABLE_TIME_END: [
|
||||
{ required: true, message: "请选择停用结束时间", trigger: "blur" },
|
||||
],
|
||||
DISABLE_REASON: [
|
||||
{ required: true, message: "停用原因不能为空", trigger: "blur" },
|
||||
],
|
||||
DISABLE_USER: [
|
||||
{ required: true, message: "停用人不能为空", trigger: "blur" },
|
||||
],
|
||||
},
|
||||
},
|
||||
});
|
||||
const fnGetData = async () => {
|
||||
const resData = await getDataCollectionThresholdSettingList({
|
||||
currentPage: data.pagination.currentPage,
|
||||
showCount: data.pagination.pageSize,
|
||||
...data.searchForm,
|
||||
});
|
||||
data.list = resData.varList;
|
||||
data.pagination.total = resData.page.totalResult;
|
||||
};
|
||||
fnGetData();
|
||||
const buttonJurisdiction = await layoutFnButtonJurisdiction(
|
||||
"majordangersource"
|
||||
);
|
||||
const { list, pagination, searchForm, fnResetPagination, fnGetData } =
|
||||
useListData(getDataCollectionThresholdSettingList);
|
||||
const buttonJurisdiction = await useButtonJurisdiction("majordangersource");
|
||||
const majorHazardSourceTypeList = await layoutFnGetMajorHazardSourceType();
|
||||
const majorHazardSourceStateList = [
|
||||
{ ID: "1", NAME: "正常" },
|
||||
{ ID: "2", NAME: "停用" },
|
||||
{ ID: "3", NAME: "检修" },
|
||||
];
|
||||
const fnResetPagination = () => {
|
||||
data.pagination = {
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
};
|
||||
fnGetData();
|
||||
};
|
||||
const fnDeactivateDialogChangeShow = () => {
|
||||
data.deactivateDialog.visible = !data.deactivateDialog.visible;
|
||||
};
|
||||
const fnDeactivate = async (MAJORDANGERSOURCE_ID) => {
|
||||
fnDeactivateDialogChangeShow();
|
||||
data.deactivateDialog.visible = true;
|
||||
data.deactivateDialog.MAJORDANGERSOURCE_ID = MAJORDANGERSOURCE_ID;
|
||||
await nextTick();
|
||||
deactivateDialogFormRef.value.resetFields();
|
||||
};
|
||||
const fnDeactivateDialogSubmit = debounce(
|
||||
1000,
|
||||
async () => {
|
||||
await useFormValidate(deactivateDialogFormRef);
|
||||
const { form, MAJORDANGERSOURCE_ID } = data.deactivateDialog;
|
||||
await setDataCollectionThresholdSettingDeactivate({
|
||||
...form,
|
||||
MAJORDANGERSOURCE_ID,
|
||||
});
|
||||
fnDeactivateDialogChangeShow();
|
||||
ElMessage.success("停用成功");
|
||||
fnResetPagination();
|
||||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
const fnEnable = debounce(
|
||||
1000,
|
||||
async (MAJORDANGERSOURCE_ID) => {
|
||||
|
|
|
@ -4,14 +4,14 @@
|
|||
<layout-table
|
||||
ref="tableRef"
|
||||
row-key="MONITORINGDEVICESENSOR_ID"
|
||||
:data="data.list"
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="data.pagination"
|
||||
v-model:pagination="pagination"
|
||||
>
|
||||
<el-table-column reserve-selection type="selection" width="55" />
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(data.pagination, $index) }}
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
|
@ -38,7 +38,7 @@
|
|||
<el-table-column prop="RANGE4_MIN" label="下限" />
|
||||
<el-table-column prop="RANGE4_MAX" label="上限" />
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="200">
|
||||
<el-table-column label="操作" width="100">
|
||||
<template v-slot="{ row }">
|
||||
<el-button
|
||||
v-if="buttonJurisdiction.edit"
|
||||
|
@ -78,144 +78,14 @@
|
|||
</template>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
<el-dialog
|
||||
v-model="data.addOrEditDialog.visible"
|
||||
:title="data.addOrEditDialog.type === 'add' ? '添加' : '修改'"
|
||||
>
|
||||
<el-form
|
||||
ref="addOrEditDialogFormRef"
|
||||
:rules="data.addOrEditDialog.rules"
|
||||
:model="data.addOrEditDialog.form"
|
||||
label-width="110px"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<el-form-item
|
||||
label="监测数据类型"
|
||||
prop="MONITORINGDEVICESENSOR_TYPE"
|
||||
>
|
||||
<el-select
|
||||
v-model="data.addOrEditDialog.form.MONITORINGDEVICESENSOR_TYPE"
|
||||
:disabled="data.addOrEditDialog.type === 'edit'"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in data.addOrEditDialog.equipmentTypeList"
|
||||
:key="item.BIANMA"
|
||||
:label="item.NAME"
|
||||
:value="item.BIANMA"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="量程下限" prop="RANGE_MIN">
|
||||
<el-input-number
|
||||
v-model="data.addOrEditDialog.form.RANGE_MIN"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:mix="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="量程上限" prop="RANGE_MAX">
|
||||
<el-input-number
|
||||
v-model="data.addOrEditDialog.form.RANGE_MAX"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:mix="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="一级预警下限" prop="RANGE1_MIN">
|
||||
<el-input-number
|
||||
v-model="data.addOrEditDialog.form.RANGE1_MIN"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:mix="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="一级预警上限" prop="RANGE1_MAX">
|
||||
<el-input-number
|
||||
v-model="data.addOrEditDialog.form.RANGE1_MAX"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:mix="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="二级预警下限" prop="RANGE2_MIN">
|
||||
<el-input-number
|
||||
v-model="data.addOrEditDialog.form.RANGE2_MIN"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:mix="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="二级预警上限" prop="RANGE2_MAX">
|
||||
<el-input-number
|
||||
v-model="data.addOrEditDialog.form.RANGE2_MAX"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:mix="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="三级预警下限" prop="RANGE3_MIN">
|
||||
<el-input-number
|
||||
v-model="data.addOrEditDialog.form.RANGE3_MIN"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:mix="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="三级预警上限" prop="RANGE3_MAX">
|
||||
<el-input-number
|
||||
v-model="data.addOrEditDialog.form.RANGE3_MAX"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:mix="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="四级预警下限" prop="RANGE4_MIN">
|
||||
<el-input-number
|
||||
v-model="data.addOrEditDialog.form.RANGE4_MIN"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:mix="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="四级预警上限" prop="RANGE4_MAX">
|
||||
<el-input-number
|
||||
v-model="data.addOrEditDialog.form.RANGE4_MAX"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:mix="0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="fnAddOrEditDialogChangeShow">取消</el-button>
|
||||
<el-button type="primary" @click="fnAddOrEditDialogSubmit">
|
||||
确定
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<threshold-setting-add
|
||||
v-model:visible="data.addOrEditDialog.visible"
|
||||
v-model:form="data.addOrEditDialog.form"
|
||||
:type="data.addOrEditDialog.type"
|
||||
:id="MAJORDANGERSOURCE_ID"
|
||||
:equipment-type-list="equipmentTypeList"
|
||||
@get-data="fnResetPagination"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -225,34 +95,23 @@ import { serialNumber } from "@/assets/js/utils";
|
|||
import {
|
||||
getDataCollectionThresholdSettingThresholdSettingList,
|
||||
getDataCollectionThresholdSettingThresholdSettingView,
|
||||
setDataCollectionThresholdSettingThresholdSettingAdd,
|
||||
setDataCollectionThresholdSettingThresholdSettingDelete,
|
||||
setDataCollectionThresholdSettingThresholdSettingDeleteMultiple,
|
||||
setDataCollectionThresholdSettingThresholdSettingEdit,
|
||||
} from "@/request/major_hazard_sources";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { layoutFnButtonJurisdiction } from "@/assets/js/button_jurisdiction.js";
|
||||
import useButtonJurisdiction from "@/assets/js/useButtonJurisdiction.js";
|
||||
import { useRoute } from "vue-router";
|
||||
import { layoutFnGetEquipmentTypeCorp } from "@/assets/js/data_dictionary.js";
|
||||
import CloneDeep from "lodash-es/cloneDeep.js";
|
||||
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import ThresholdSettingAdd from "./components/threshold_setting_add.vue";
|
||||
import { layoutFnGetEquipmentType } from "@/assets/js/data_dictionary.js";
|
||||
|
||||
const route = useRoute();
|
||||
const { MAJORDANGERSOURCE_ID } = route.query;
|
||||
const tableRef = ref(null);
|
||||
const addOrEditDialogFormRef = ref(null);
|
||||
const data = reactive({
|
||||
list: [],
|
||||
pagination: {
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
},
|
||||
addOrEditDialog: {
|
||||
visible: false,
|
||||
type: "",
|
||||
equipmentTypeList: [],
|
||||
form: {
|
||||
MONITORINGDEVICESENSOR_TYPE: "",
|
||||
RANGE_MIN: 0,
|
||||
|
@ -266,135 +125,36 @@ const data = reactive({
|
|||
RANGE4_MIN: 0,
|
||||
RANGE4_MAX: 0,
|
||||
},
|
||||
rules: {
|
||||
MONITORINGDEVICESENSOR_TYPE: [
|
||||
{ required: true, message: "监测数据类型不能为空", trigger: "blur" },
|
||||
],
|
||||
RANGE_MIN: [
|
||||
{
|
||||
required: true,
|
||||
pattern:
|
||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
|
||||
message: "请输入正确格式,可保留两位小数",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
RANGE_MAX: [
|
||||
{
|
||||
required: true,
|
||||
pattern:
|
||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
|
||||
message: "请输入正确格式,可保留两位小数",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
RANGE1_MIN: [
|
||||
{
|
||||
required: true,
|
||||
pattern:
|
||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
|
||||
message: "请输入正确格式,可保留两位小数",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
RANGE1_MAX: [
|
||||
{
|
||||
required: true,
|
||||
pattern:
|
||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
|
||||
message: "请输入正确格式,可保留两位小数",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
RANGE2_MIN: [
|
||||
{
|
||||
required: true,
|
||||
pattern:
|
||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
|
||||
message: "请输入正确格式,可保留两位小数",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
RANGE2_MAX: [
|
||||
{
|
||||
required: true,
|
||||
pattern:
|
||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
|
||||
message: "请输入正确格式,可保留两位小数",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
RANGE3_MIN: [
|
||||
{
|
||||
required: true,
|
||||
pattern:
|
||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
|
||||
message: "请输入正确格式,可保留两位小数",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
RANGE3_MAX: [
|
||||
{
|
||||
required: true,
|
||||
pattern:
|
||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
|
||||
message: "请输入正确格式,可保留两位小数",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
RANGE4_MIN: [
|
||||
{
|
||||
required: true,
|
||||
pattern:
|
||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
|
||||
message: "请输入正确格式,可保留两位小数",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
RANGE4_MAX: [
|
||||
{
|
||||
required: true,
|
||||
pattern:
|
||||
/(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
|
||||
message: "请输入正确格式,可保留两位小数",
|
||||
trigger: "blur",
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
});
|
||||
const fnGetData = async () => {
|
||||
const resData = await getDataCollectionThresholdSettingThresholdSettingList({
|
||||
currentPage: data.pagination.currentPage,
|
||||
showCount: data.pagination.pageSize,
|
||||
MAJORDANGERSOURCE_ID,
|
||||
const equipmentTypeList = ref([]);
|
||||
const fnEquipmentTypeListDeduplication = async (list) => {
|
||||
const cloneEquipmentTypeList = await layoutFnGetEquipmentType();
|
||||
for (let i = 0; i < cloneEquipmentTypeList.value.length; i++) {
|
||||
for (let j = 0; j < list.length; j++) {
|
||||
if (
|
||||
cloneEquipmentTypeList.value[i].BIANMA ===
|
||||
list[j].MONITORINGDEVICESENSOR_TYPE
|
||||
) {
|
||||
cloneEquipmentTypeList.value[i] = "";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
equipmentTypeList.value = cloneEquipmentTypeList.value.filter(Boolean);
|
||||
};
|
||||
const { list, pagination, fnGetData, fnResetPagination, tableRef } =
|
||||
useListData(getDataCollectionThresholdSettingThresholdSettingList, {
|
||||
otherParams: { MAJORDANGERSOURCE_ID },
|
||||
callbackFn: (list) => {
|
||||
fnEquipmentTypeListDeduplication(list);
|
||||
},
|
||||
});
|
||||
data.list = resData.varList;
|
||||
data.pagination.total = resData.page.totalResult;
|
||||
};
|
||||
fnGetData();
|
||||
const buttonJurisdiction = await layoutFnButtonJurisdiction(
|
||||
"majordangersource"
|
||||
);
|
||||
const equipmentTypeList = await layoutFnGetEquipmentTypeCorp();
|
||||
const fnResetPagination = () => {
|
||||
data.pagination = {
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
};
|
||||
tableRef.value.clearSelection();
|
||||
fnGetData();
|
||||
};
|
||||
const fnAddOrEditDialogChangeShow = () => {
|
||||
data.addOrEditDialog.visible = !data.addOrEditDialog.visible;
|
||||
};
|
||||
const buttonJurisdiction = await useButtonJurisdiction("majordangersource");
|
||||
const fnAddOrEdit = async (MONITORINGDEVICESENSOR_ID, type) => {
|
||||
fnAddOrEditDialogChangeShow();
|
||||
fnEquipmentTypeListDeduplication();
|
||||
data.addOrEditDialog.type = type;
|
||||
data.addOrEditDialog.visible = true;
|
||||
await nextTick();
|
||||
addOrEditDialogFormRef.value.resetFields();
|
||||
data.addOrEditDialog.type = type;
|
||||
if (type === "edit") {
|
||||
const resData = await getDataCollectionThresholdSettingThresholdSettingView(
|
||||
{ MONITORINGDEVICESENSOR_ID }
|
||||
|
@ -402,43 +162,6 @@ const fnAddOrEdit = async (MONITORINGDEVICESENSOR_ID, type) => {
|
|||
data.addOrEditDialog.form = resData.pd;
|
||||
}
|
||||
};
|
||||
const fnEquipmentTypeListDeduplication = () => {
|
||||
const cloneEquipmentTypeList = CloneDeep(equipmentTypeList.value);
|
||||
for (let i = 0; i < cloneEquipmentTypeList.length; i++) {
|
||||
for (let j = 0; j < data.list.length; j++) {
|
||||
if (
|
||||
cloneEquipmentTypeList[i].BIANMA ===
|
||||
data.list[j].MONITORINGDEVICESENSOR_TYPE
|
||||
) {
|
||||
cloneEquipmentTypeList[i] = "";
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
data.addOrEditDialog.equipmentTypeList =
|
||||
cloneEquipmentTypeList.filter(Boolean);
|
||||
};
|
||||
const fnAddOrEditDialogSubmit = debounce(
|
||||
1000,
|
||||
async () => {
|
||||
await useFormValidate(addOrEditDialogFormRef);
|
||||
const { form, type } = data.addOrEditDialog;
|
||||
if (type === "add")
|
||||
await setDataCollectionThresholdSettingThresholdSettingAdd({
|
||||
...form,
|
||||
MAJORDANGERSOURCE_ID,
|
||||
});
|
||||
if (type === "edit")
|
||||
await setDataCollectionThresholdSettingThresholdSettingEdit({
|
||||
...form,
|
||||
MAJORDANGERSOURCE_ID,
|
||||
});
|
||||
fnAddOrEditDialogChangeShow();
|
||||
ElMessage.success("保存成功");
|
||||
fnResetPagination();
|
||||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
const fnDelete = debounce(
|
||||
1000,
|
||||
async (MONITORINGDEVICESENSOR_ID) => {
|
||||
|
|
|
@ -3,106 +3,98 @@
|
|||
<el-divider content-position="left">设备信息</el-divider>
|
||||
<el-descriptions :column="2" border>
|
||||
<el-descriptions-item label="重大危险源名称">
|
||||
{{ data.info.MAJORDANGERSOURCE_NAME }}
|
||||
{{ info.MAJORDANGERSOURCE_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="重大危险源编号">
|
||||
{{ data.info.MAJORDANGERSOURCE_NUMBER }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="重大危险源类型">
|
||||
{{ data.info.MAJORDANGERSOURCE_TYPE_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="申报等级">
|
||||
{{ data.info.DECLARATION_LEVEL_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="投入使用日期">
|
||||
{{ data.info.USE_DATE }}
|
||||
{{ info.MAJORDANGERSOURCE_NUMBER }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="重大危险源地址">
|
||||
{{ data.info.MAJORDANGERSOURCE_ADDRESS }}
|
||||
{{ info.MAJORDANGERSOURCE_ADDRESS }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="重大危险源类型">
|
||||
{{ info.MAJORDANGERSOURCE_TYPE_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="投入使用日期">
|
||||
{{ info.USE_DATE }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="申报等级">
|
||||
{{ info.DECLARATION_LEVEL_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="实际储存量">
|
||||
{{ data.info.STORAGE_ACTUAL }}
|
||||
{{ info.STORAGE_ACTUAL }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="最大储量">
|
||||
{{ data.info.STORAGE_MAX }}
|
||||
{{ info.STORAGE_MAX }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="管控措施" :span="2">
|
||||
{{ data.info.CONTROL_MEASURES }}
|
||||
{{ info.CONTROL_MEASURES }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="误报审核人">
|
||||
{{ data.info.ALARM_REVIEWER_NAME }}
|
||||
<el-descriptions-item label="责任人">
|
||||
{{ info.RESPONSIBLE_PERSON_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="联系方式">
|
||||
{{ data.info.ALARM_REVIEWER_PHONE }}
|
||||
{{ info.RESPONSIBLE_PERSON_PHONE }}
|
||||
</el-descriptions-item>
|
||||
<template
|
||||
v-for="item in data.info.responsibleList"
|
||||
:key="item.MAJORDANGERSOURCE_RESPONSIBLE_ID"
|
||||
>
|
||||
<el-descriptions-item label="责任人">
|
||||
{{ item.RESPONSIBLE_USER_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="联系方式">
|
||||
{{ item.RESPONSIBLE_PERSON_PHONE }}
|
||||
</el-descriptions-item>
|
||||
</template>
|
||||
<el-descriptions-item
|
||||
label="分公司应急预案"
|
||||
v-if="data.info.BRANCHEMERGENCYPLAN_FILEPATH"
|
||||
v-if="info.BRANCHEMERGENCYPLAN_FILEPATH"
|
||||
>
|
||||
{{ data.info.BRANCHEMERGENCYPLAN_NAME }}
|
||||
{{ info.BRANCHEMERGENCYPLAN_NAME }}
|
||||
<el-button
|
||||
class="ml"
|
||||
class="ml-10"
|
||||
type="primary"
|
||||
@click="fnDownloadFile(data.info.MAJORDANGERSOURCE_ID)"
|
||||
@click="
|
||||
useDownloadFile(
|
||||
info.BRANCHEMERGENCYPLAN_FILEPATH,
|
||||
info.BRANCHEMERGENCYPLAN_NAME
|
||||
)
|
||||
"
|
||||
>
|
||||
下载
|
||||
</el-button>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="重大危险源位置">
|
||||
<el-button circle @click="data.mapDialogVisible = true">
|
||||
<el-button circle @click="mapDialogVisible = true">
|
||||
<el-icon>
|
||||
<Place />
|
||||
</el-icon>
|
||||
</el-button>
|
||||
经度:{{ data.info.MAJORDANGERSOURCE_LONGITUDE }} , 纬度:{{
|
||||
data.info.MAJORDANGERSOURCE_LATITUDE
|
||||
经度:{{ info.MAJORDANGERSOURCE_LONGITUDE }} , 纬度:{{
|
||||
info.MAJORDANGERSOURCE_LATITUDE
|
||||
}}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
<el-divider content-position="left">阈值设定信息</el-divider>
|
||||
<layout-table :data="data.info.SENSORLIST" :show-pagination="false">
|
||||
<el-table-column label="序号" width="60" type="index">
|
||||
<el-table-column
|
||||
prop="MONITORINGDEVICESENSOR_TYPE_NAME"
|
||||
label="监测数据类型"
|
||||
/>
|
||||
<el-table-column label="量程">
|
||||
<el-table-column prop="RANGE_MIN" label="下限" />
|
||||
<el-table-column prop="RANGE_MAX" label="上限" />
|
||||
</el-table-column>
|
||||
<el-table-column label="一级预警">
|
||||
<el-table-column prop="RANGE1_MIN" label="下限" />
|
||||
<el-table-column prop="RANGE1_MAX" label="上限" />
|
||||
</el-table-column>
|
||||
<el-table-column label="二级预警">
|
||||
<el-table-column prop="RANGE2_MIN" label="下限" />
|
||||
<el-table-column prop="RANGE2_MAX" label="上限" />
|
||||
</el-table-column>
|
||||
<el-table-column label="三级预警">
|
||||
<el-table-column prop="RANGE3_MIN" label="下限" />
|
||||
<el-table-column prop="RANGE3_MAX" label="上限" />
|
||||
</el-table-column>
|
||||
<el-table-column label="四级预警">
|
||||
<el-table-column prop="RANGE4_MIN" label="下限" />
|
||||
<el-table-column prop="RANGE4_MAX" label="上限" />
|
||||
</el-table-column>
|
||||
<layout-table :data="info.SENSORLIST" :show-pagination="false">
|
||||
<el-table-column
|
||||
prop="MONITORINGDEVICESENSOR_TYPE_NAME"
|
||||
label="监测数据类型"
|
||||
/>
|
||||
<el-table-column label="量程">
|
||||
<el-table-column prop="RANGE_MIN" label="下限" />
|
||||
<el-table-column prop="RANGE_MAX" label="上限" />
|
||||
</el-table-column>
|
||||
<el-table-column label="一级预警">
|
||||
<el-table-column prop="RANGE1_MIN" label="下限" />
|
||||
<el-table-column prop="RANGE1_MAX" label="上限" />
|
||||
</el-table-column>
|
||||
<el-table-column label="二级预警">
|
||||
<el-table-column prop="RANGE2_MIN" label="下限" />
|
||||
<el-table-column prop="RANGE2_MAX" label="上限" />
|
||||
</el-table-column>
|
||||
<el-table-column label="三级预警">
|
||||
<el-table-column prop="RANGE3_MIN" label="下限" />
|
||||
<el-table-column prop="RANGE3_MAX" label="上限" />
|
||||
</el-table-column>
|
||||
<el-table-column label="四级预警">
|
||||
<el-table-column prop="RANGE4_MIN" label="下限" />
|
||||
<el-table-column prop="RANGE4_MAX" label="上限" />
|
||||
</el-table-column>
|
||||
</layout-table>
|
||||
<layout-map
|
||||
:latitude="data.info.MAJORDANGERSOURCE_LATITUDE"
|
||||
:longitude="data.info.MAJORDANGERSOURCE_LONGITUDE"
|
||||
v-model:visible="data.mapDialogVisible"
|
||||
<map-dialog
|
||||
v-model:visible="mapDialogVisible"
|
||||
:latitude="info.MAJORDANGERSOURCE_LATITUDE"
|
||||
:longitude="info.MAJORDANGERSOURCE_LONGITUDE"
|
||||
type="view"
|
||||
/>
|
||||
</layout-card>
|
||||
|
@ -110,32 +102,23 @@
|
|||
|
||||
<script setup>
|
||||
import { useRoute } from "vue-router";
|
||||
import { reactive } from "vue";
|
||||
import { ref } from "vue";
|
||||
import { getDataCollectionThresholdSettingView } from "@/request/major_hazard_sources";
|
||||
import { ElMessageBox } from "element-plus";
|
||||
import { Place } from "@element-plus/icons-vue";
|
||||
import LayoutMap from "@/components/map/index.vue";
|
||||
import useDownloadFile from "@/assets/js/useDownloadFile.js";
|
||||
import MapDialog from "../major_hazard_management/components/map.vue";
|
||||
|
||||
const route = useRoute();
|
||||
const MAJORDANGERSOURCE_ID = route.query.MAJORDANGERSOURCE_ID;
|
||||
const data = reactive({
|
||||
info: {},
|
||||
mapDialogVisible: false,
|
||||
});
|
||||
const { MAJORDANGERSOURCE_ID } = route.query;
|
||||
const info = ref({});
|
||||
const mapDialogVisible = ref(false);
|
||||
const fnGetData = async () => {
|
||||
const resData = await getDataCollectionThresholdSettingView({
|
||||
MAJORDANGERSOURCE_ID,
|
||||
});
|
||||
data.info = resData.pd;
|
||||
info.value = resData.pd;
|
||||
};
|
||||
fnGetData();
|
||||
const fnDownloadFile = async (MAJORDANGERSOURCE_ID) => {
|
||||
await ElMessageBox.confirm("确定要下载此文件吗?", { type: "warning" });
|
||||
window.open(
|
||||
"/api/majordangersource/download?MAJORDANGERSOURCE_ID=" +
|
||||
MAJORDANGERSOURCE_ID
|
||||
);
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
|
|
@ -2,31 +2,26 @@
|
|||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="data.searchForm"
|
||||
:model="searchForm"
|
||||
label-width="90px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="报警级别" prop="ALARM_LEVEL">
|
||||
<el-select v-model="data.searchForm.ALARM_LEVEL">
|
||||
<el-select v-model="searchForm.ALARM_LEVEL">
|
||||
<el-option
|
||||
v-for="item in [
|
||||
{ VALUE: '1', NAME: '一级' },
|
||||
{ VALUE: '2', NAME: '二级' },
|
||||
{ VALUE: '3', NAME: '三级' },
|
||||
{ VALUE: '4', NAME: '四级' },
|
||||
]"
|
||||
:key="item.VALUE"
|
||||
v-for="item in levelList"
|
||||
:key="item.ID"
|
||||
:label="item.NAME"
|
||||
:value="item.VALUE"
|
||||
:value="item.ID"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="处置状态" prop="DISPOSAL_STATUS">
|
||||
<el-select v-model="data.searchForm.DISPOSAL_STATUS">
|
||||
<el-select v-model="searchForm.DISPOSAL_STATUS">
|
||||
<el-option
|
||||
v-for="item in stateList"
|
||||
:key="item.ID"
|
||||
|
@ -49,45 +44,33 @@
|
|||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
:data="data.list"
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="data.pagination"
|
||||
v-model:pagination="pagination"
|
||||
>
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(data.pagination, $index) }}
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="MAJORDANGERSOURCE_NUMBER" label="危险源编号" />
|
||||
<el-table-column prop="ALARM_TYPE_NAME" label="报警类型" width="80" />
|
||||
<el-table-column prop="MAJORDANGERSOURCE_NUMBER" label="油罐编号" />
|
||||
<el-table-column prop="ALARM_TYPE_NAME" label="报警类型" />
|
||||
<el-table-column prop="ALARM_VALUE" label="报警值" />
|
||||
<el-table-column label="报警级别" width="100">
|
||||
<el-table-column label="报警级别">
|
||||
<template v-slot="{ row }">
|
||||
<span v-if="row.ALARM_LEVEL === '1'">一级</span>
|
||||
<span v-else-if="row.ALARM_LEVEL === '2'">二级</span>
|
||||
<span v-else-if="row.ALARM_LEVEL === '3'">三级</span>
|
||||
<span v-else-if="row.ALARM_LEVEL === '4'">四级</span>
|
||||
{{ translationStatus(row.ALARM_LEVEL, levelList) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
prop="ALARM_RANGE_MIN"
|
||||
label="报警阈值下限"
|
||||
width="120"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="ALARM_RANGE_MAX"
|
||||
label="报警阈值上限"
|
||||
width="120"
|
||||
/>
|
||||
<el-table-column prop="ALARM_RANGE_MIN" label="报警阈值下限" />
|
||||
<el-table-column prop="ALARM_RANGE_MAX" label="报警阈值上限" />
|
||||
<el-table-column label="处置状态">
|
||||
<template v-slot="{ row }">
|
||||
{{ fnTranslationStatus(row.ALARM_LEVEL, stateList) }}
|
||||
{{ translationStatus(row.DISPOSAL_STATUS, stateList) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="DISPOSAL_TIME" label="时间" />
|
||||
<el-table-column prop="DISPOSAL_PERSON" label="处置人" />
|
||||
<el-table-column prop="DISPOSAL_METHOD" label="处置方式" />
|
||||
<el-table-column label="操作" width="150">
|
||||
<el-table-column label="操作" width="100">
|
||||
<template v-slot="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
|
@ -107,18 +90,6 @@
|
|||
>
|
||||
查看
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
v-if="
|
||||
row.ALARM_REVIEWER_ID === userStore.getUserInfo.USER_ID &&
|
||||
row.DISPOSAL_STATUS === '-1'
|
||||
"
|
||||
@click="fnFalseAlarmHandling(row.MAJORDANGERSOURCE_DISPOSAL_ID)"
|
||||
>
|
||||
误报处置
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</layout-table>
|
||||
|
@ -127,69 +98,29 @@
|
|||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive } from "vue";
|
||||
import { fnTranslationStatus, serialNumber } from "@/assets/js/utils";
|
||||
import {
|
||||
getEmergencyHandlingRecordList,
|
||||
setEmergencyHandlingRecordFalseAlarm,
|
||||
} from "@/request/major_hazard_sources";
|
||||
import { translationStatus, serialNumber } from "@/assets/js/utils";
|
||||
import { getEmergencyHandlingRecordList } from "@/request/major_hazard_sources";
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
import { useUserStore } from "@/pinia/user.js";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
const { MAJORDANGERSOURCE_ID } = route.query;
|
||||
const userStore = useUserStore();
|
||||
const levelList = [
|
||||
{ ID: "1", NAME: "一级" },
|
||||
{ ID: "2", NAME: "二级" },
|
||||
{ ID: "3", NAME: "三级" },
|
||||
{ ID: "4", NAME: "四级" },
|
||||
];
|
||||
const stateList = [
|
||||
{ ID: "-2", NAME: "误报" },
|
||||
{ ID: "-1", NAME: "未处置" },
|
||||
{ ID: "0", NAME: "报警升级" },
|
||||
{ ID: "1", NAME: "处置完成" },
|
||||
];
|
||||
const data = reactive({
|
||||
list: [],
|
||||
pagination: {
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
},
|
||||
searchForm: {},
|
||||
});
|
||||
const fnGetData = async () => {
|
||||
const resData = await getEmergencyHandlingRecordList({
|
||||
currentPage: data.pagination.currentPage,
|
||||
showCount: data.pagination.pageSize,
|
||||
...data.searchForm,
|
||||
MAJORDANGERSOURCE_ID,
|
||||
const { list, searchForm, pagination, fnResetPagination, fnGetData } =
|
||||
useListData(getEmergencyHandlingRecordList, {
|
||||
otherParams: { MAJORDANGERSOURCE_ID },
|
||||
});
|
||||
data.list = resData.varList;
|
||||
data.pagination.total = resData.page.totalResult;
|
||||
};
|
||||
fnGetData();
|
||||
const fnResetPagination = () => {
|
||||
data.pagination = {
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
};
|
||||
fnGetData();
|
||||
};
|
||||
const fnFalseAlarmHandling = debounce(
|
||||
1000,
|
||||
async (MAJORDANGERSOURCE_DISPOSAL_ID) => {
|
||||
await ElMessageBox.confirm("确定要将此报警记录设置成误报吗?", {
|
||||
type: "warning",
|
||||
});
|
||||
await setEmergencyHandlingRecordFalseAlarm({
|
||||
MAJORDANGERSOURCE_DISPOSAL_ID,
|
||||
});
|
||||
ElMessage.success("设置成功");
|
||||
fnResetPagination();
|
||||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
|
|
|
@ -3,90 +3,87 @@
|
|||
<el-divider content-position="left">重大危险源信息</el-divider>
|
||||
<el-descriptions :column="2" border>
|
||||
<el-descriptions-item label="危险源编号">
|
||||
{{ data.info.MAJORDANGERSOURCE_NUMBER }}
|
||||
{{ info.MAJORDANGERSOURCE_NUMBER }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="报警类型">
|
||||
{{ data.info.ALARM_TYPE_NAME }}
|
||||
{{ info.ALARM_TYPE_NAME }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="报警值">
|
||||
{{ data.info.ALARM_VALUE }}
|
||||
{{ info.ALARM_VALUE }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="报警级别">
|
||||
<span v-if="data.info.ALARM_LEVEL === '1'">一级</span>
|
||||
<span v-else-if="data.info.ALARM_LEVEL === '2'">二级</span>
|
||||
<span v-else-if="data.info.ALARM_LEVEL === '3'">三级</span>
|
||||
<span v-else-if="data.info.ALARM_LEVEL === '4'">四级</span>
|
||||
{{ translationStatus(info.ALARM_LEVEL, levelList) }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="阈值下限">
|
||||
{{ data.info.ALARM_RANGE_MIN }}
|
||||
{{ info.ALARM_RANGE_MIN }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="阈值上限">
|
||||
{{ data.info.ALARM_RANGE_MAX }}
|
||||
{{ info.ALARM_RANGE_MAX }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="处置人">
|
||||
{{ data.info.DISPOSAL_PERSON }}
|
||||
{{ info.DISPOSAL_PERSON }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="处置方式">
|
||||
{{ data.info.DISPOSAL_METHOD }}
|
||||
{{ info.DISPOSAL_METHOD }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="处置描述" :span="2">
|
||||
{{ data.info.DISPOSAL_DESC }}
|
||||
{{ info.DISPOSAL_DESC }}
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="处置前图片" :span="2">
|
||||
<img
|
||||
v-viewer
|
||||
v-for="item in data.info.disposalBeforeFile"
|
||||
v-for="item in info.disposalBeforeFile"
|
||||
:key="item.FILEPATH"
|
||||
:src="item.url"
|
||||
alt=""
|
||||
class="ml"
|
||||
class="ml-10"
|
||||
/>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="处置后图片" :span="2">
|
||||
<img
|
||||
v-viewer
|
||||
v-for="item in data.info.disposalAfterFile"
|
||||
v-for="item in info.disposalAfterFile"
|
||||
:key="item.FILEPATH"
|
||||
:src="item.url"
|
||||
alt=""
|
||||
class="ml"
|
||||
class="ml-10"
|
||||
/>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="处置完成时间" :span="2">
|
||||
{{ data.info.DISPOSAL_TIME_OVER }}
|
||||
{{ info.DISPOSAL_TIME_OVER }}
|
||||
</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</layout-card>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive } from "vue";
|
||||
import { ref } from "vue";
|
||||
import { getEmergencyHandlingRecordView } from "@/request/major_hazard_sources.js";
|
||||
import { useRoute } from "vue-router";
|
||||
import { fnAddingPrefixToFile } from "@/assets/js/utils.js";
|
||||
import { addingPrefixToFile, translationStatus } from "@/assets/js/utils.js";
|
||||
|
||||
const route = useRoute();
|
||||
const { MAJORDANGERSOURCE_DISPOSAL_ID } = route.query;
|
||||
const data = reactive({
|
||||
info: {},
|
||||
});
|
||||
const levelList = [
|
||||
{ ID: "1", NAME: "一级" },
|
||||
{ ID: "2", NAME: "二级" },
|
||||
{ ID: "3", NAME: "三级" },
|
||||
{ ID: "4", NAME: "四级" },
|
||||
];
|
||||
const info = ref({});
|
||||
const fnGetData = async () => {
|
||||
const resData = await getEmergencyHandlingRecordView({
|
||||
MAJORDANGERSOURCE_DISPOSAL_ID,
|
||||
});
|
||||
data.info = resData.pd;
|
||||
data.info.disposalBeforeFile = fnAddingPrefixToFile(
|
||||
info.value = resData.pd;
|
||||
info.value.disposalBeforeFile = addingPrefixToFile(
|
||||
resData.pd.disposalBeforeFile
|
||||
);
|
||||
data.info.disposalAfterFile = fnAddingPrefixToFile(
|
||||
info.value.disposalAfterFile = addingPrefixToFile(
|
||||
resData.pd.disposalAfterFile
|
||||
);
|
||||
};
|
||||
fnGetData();
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.ml:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
</style>
|
||||
<style lang="scss" scoped></style>
|
||||
|
|
|
@ -1,74 +1,94 @@
|
|||
<template>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
:data="data.list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="data.pagination"
|
||||
>
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(data.pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="MAJORDANGERSOURCE_NAME" label="重大危险源名称" />
|
||||
<el-table-column
|
||||
prop="MAJORDANGERSOURCE_TYPE_NAME"
|
||||
label="重大危险源类型"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="MAJORDANGERSOURCE_ADDRESS"
|
||||
label="重大危险源地址"
|
||||
/>
|
||||
<el-table-column prop="USER_NAME" label="变更人" />
|
||||
<el-table-column prop="CREATTIME" label="变更时间" />
|
||||
<el-table-column label="操作" width="80">
|
||||
<template v-slot="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/major_hazard_sources/major_hazard_management/change_record/view',
|
||||
query: { CREATTIME: row.CREATTIME, MAJORDANGERSOURCE_ID },
|
||||
})
|
||||
"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="searchForm"
|
||||
label-width="80px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item
|
||||
label="重大危险源名称"
|
||||
prop="MAJORDANGERSOURCE_NAME"
|
||||
label-width="130px"
|
||||
>
|
||||
<el-input v-model="searchForm.MAJORDANGERSOURCE_NAME" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="责任人" prop="RESPONSIBLE_PERSON_NAME">
|
||||
<el-input v-model="searchForm.RESPONSIBLE_PERSON_NAME" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-form-item label-width="10px">
|
||||
<el-button type="primary" native-type="submit">搜索</el-button>
|
||||
<el-button native-type="reset" @click="fnResetPagination">
|
||||
重置
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<layout-card>
|
||||
<layout-table
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="pagination"
|
||||
>
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="MAJORDANGERSOURCE_NAME" label="重大危险源名称" />
|
||||
<el-table-column
|
||||
prop="MAJORDANGERSOURCE_TYPE_NAME"
|
||||
label="重大危险源类型"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="MAJORDANGERSOURCE_ADDRESS"
|
||||
label="重大危险源地址"
|
||||
/>
|
||||
<el-table-column prop="USER_NAME" label="变更人" />
|
||||
<el-table-column prop="CREATTIME" label="变更时间" />
|
||||
<el-table-column label="操作" width="80">
|
||||
<template v-slot="{ row }">
|
||||
<el-button
|
||||
type="primary"
|
||||
text
|
||||
link
|
||||
@click="
|
||||
router.push({
|
||||
path: '/major_hazard_sources/major_hazard_management/change_record/view',
|
||||
query: { CREATTIME: row.CREATTIME, MAJORDANGERSOURCE_ID },
|
||||
})
|
||||
"
|
||||
>
|
||||
查看
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive } from "vue";
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import { getMajorHazardManagementChangeRecordList } from "@/request/major_hazard_sources";
|
||||
import { useRouter, useRoute } from "vue-router";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
|
||||
const router = useRouter();
|
||||
const route = useRoute();
|
||||
const { MAJORDANGERSOURCE_ID } = route.query;
|
||||
const data = reactive({
|
||||
list: [],
|
||||
pagination: {
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
},
|
||||
});
|
||||
const fnGetData = async () => {
|
||||
const resData = await getMajorHazardManagementChangeRecordList({
|
||||
currentPage: data.pagination.currentPage,
|
||||
showCount: data.pagination.pageSize,
|
||||
MAJORDANGERSOURCE_ID,
|
||||
const { list, pagination, searchForm, fnGetData, fnResetPagination } =
|
||||
useListData(getMajorHazardManagementChangeRecordList, {
|
||||
otherParams: { MAJORDANGERSOURCE_ID },
|
||||
});
|
||||
data.list = resData.varList;
|
||||
data.pagination.total = resData.page.totalResult;
|
||||
};
|
||||
fnGetData();
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<span class="title">变更时间</span>
|
||||
<span>{{ data.info.OPERATTIME }}</span>
|
||||
</div>
|
||||
<table class="mt">
|
||||
<table class="mt-10">
|
||||
<tr>
|
||||
<td class="title" />
|
||||
<td
|
||||
|
@ -72,7 +72,11 @@
|
|||
经度:{{ data.info.MAJORDANGERSOURCE_LONGITUDE }} , 纬度:{{
|
||||
data.info.MAJORDANGERSOURCE_LATITUDE
|
||||
}}
|
||||
<el-button class="ml" circle @click="data.mapDialogVisible = true">
|
||||
<el-button
|
||||
class="ml-10"
|
||||
circle
|
||||
@click="data.mapDialogVisible = true"
|
||||
>
|
||||
<el-icon>
|
||||
<Place />
|
||||
</el-icon>
|
||||
|
@ -85,7 +89,7 @@
|
|||
data.oldInfo.MAJORDANGERSOURCE_LATITUDE
|
||||
}}
|
||||
<el-button
|
||||
class="ml"
|
||||
class="ml-10"
|
||||
circle
|
||||
@click="data.oldMapDialogVisible = true"
|
||||
>
|
||||
|
@ -201,9 +205,14 @@
|
|||
{{ data.info.BRANCHEMERGENCYPLAN_NAME }}
|
||||
</span>
|
||||
<el-button
|
||||
class="ml"
|
||||
class="ml-10"
|
||||
type="primary"
|
||||
@click="fnDownloadFile(data.info.MAJORDANGERSOURCELOG_ID)"
|
||||
@click="
|
||||
useDownloadFile(
|
||||
data.info.BRANCHEMERGENCYPLAN_FILEPATH,
|
||||
data.info.BRANCHEMERGENCYPLAN_NAME
|
||||
)
|
||||
"
|
||||
>
|
||||
下载
|
||||
</el-button>
|
||||
|
@ -212,25 +221,30 @@
|
|||
<td>
|
||||
<span>{{ data.oldInfo.BRANCHEMERGENCYPLAN_NAME }}</span>
|
||||
<el-button
|
||||
class="ml"
|
||||
class="ml-10"
|
||||
type="primary"
|
||||
@click="fnDownloadFile(data.oldInfo.MAJORDANGERSOURCELOG_ID)"
|
||||
@click="
|
||||
useDownloadFile(
|
||||
data.oldInfo.BRANCHEMERGENCYPLAN_FILEPATH,
|
||||
data.oldInfo.BRANCHEMERGENCYPLAN_NAME
|
||||
)
|
||||
"
|
||||
>
|
||||
下载
|
||||
</el-button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<layout-map
|
||||
<map-dialog
|
||||
v-model:visible="data.mapDialogVisible"
|
||||
:latitude="data.info.MAJORDANGERSOURCE_LATITUDE"
|
||||
:longitude="data.info.MAJORDANGERSOURCE_LONGITUDE"
|
||||
v-model:visible="data.mapDialogVisible"
|
||||
type="view"
|
||||
/>
|
||||
<layout-map
|
||||
<map-dialog
|
||||
v-model:visible="data.oldMapDialogVisible"
|
||||
:latitude="data.oldInfo.MAJORDANGERSOURCE_LATITUDE"
|
||||
:longitude="data.oldInfo.MAJORDANGERSOURCE_LONGITUDE"
|
||||
v-model:visible="data.oldMapDialogVisible"
|
||||
type="view"
|
||||
/>
|
||||
</layout-card>
|
||||
|
@ -238,11 +252,11 @@
|
|||
|
||||
<script setup>
|
||||
import { reactive } from "vue";
|
||||
import { ElMessageBox } from "element-plus";
|
||||
import { getMajorHazardManagementChangeRecordView } from "@/request/major_hazard_sources.js";
|
||||
import { useRoute } from "vue-router";
|
||||
import LayoutMap from "@/components/map/index.vue";
|
||||
import { Place } from "@element-plus/icons-vue";
|
||||
import useDownloadFile from "@/assets/js/useDownloadFile.js";
|
||||
import MapDialog from "@/views/major_hazard_sources/major_hazard_management/components/map.vue";
|
||||
|
||||
const route = useRoute();
|
||||
const { MAJORDANGERSOURCE_ID, CREATTIME } = route.query;
|
||||
|
@ -263,13 +277,6 @@ const fnGetData = async () => {
|
|||
if (resData.varList.length > 1) data.oldInfo = resData.varList[1];
|
||||
};
|
||||
fnGetData();
|
||||
const fnDownloadFile = async (MAJORDANGERSOURCELOG_ID) => {
|
||||
await ElMessageBox.confirm("确定要下载此文件吗?", { type: "warning" });
|
||||
window.open(
|
||||
"/api/majordangersourcelog/download?MAJORDANGERSOURCELOG_ID=" +
|
||||
MAJORDANGERSOURCELOG_ID
|
||||
);
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
|
|
@ -0,0 +1,95 @@
|
|||
<template>
|
||||
<el-dialog
|
||||
v-model="visible"
|
||||
:title="type === 'edit' ? '修改' : '新增'"
|
||||
:on-close="fnClose"
|
||||
>
|
||||
<el-form ref="formRef" :model="form" :rules="rules" label-width="120px">
|
||||
<el-form-item label="监测类型名称" prop="NAME">
|
||||
<el-input v-model="form.NAME" />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="ORDER_BY">
|
||||
<el-input v-model.number="form.ORDER_BY" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="BZ">
|
||||
<el-input
|
||||
v-model="form.BZ"
|
||||
type="textarea"
|
||||
:autosize="{ minRows: 3 }"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="fnClose">取消</el-button>
|
||||
<el-button type="primary" @click="fnSubmit"> 确定 </el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ref } from "vue";
|
||||
import { useVModels } from "@vueuse/core";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||
import {
|
||||
setMonitoringTypeManagementAdd,
|
||||
setMonitoringTypeManagementEdit,
|
||||
} from "@/request/major_hazard_sources.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
|
||||
const props = defineProps({
|
||||
visible: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
default: false,
|
||||
},
|
||||
form: {
|
||||
type: Object,
|
||||
required: true,
|
||||
default: () => ({}),
|
||||
},
|
||||
type: {
|
||||
type: String,
|
||||
required: true,
|
||||
default: "",
|
||||
},
|
||||
});
|
||||
const emits = defineEmits(["update:visible", "update:form", "get-data"]);
|
||||
const { visible, form } = useVModels(props, emits);
|
||||
const rules = {
|
||||
NAME: [
|
||||
{ required: true, message: "字典名称不能为空", trigger: "change" },
|
||||
{ min: 2, max: 30, message: "长度在 2 到 30 个字符", trigger: "blur" },
|
||||
],
|
||||
ORDER_BY: [
|
||||
{ required: true, message: "字典序号名称不能为空", trigger: "change" },
|
||||
{ type: "number", message: "字典序号必须为数字" },
|
||||
],
|
||||
};
|
||||
const formRef = ref(null);
|
||||
const fnClose = () => {
|
||||
formRef.value.resetFields();
|
||||
visible.value = false;
|
||||
};
|
||||
const fnSubmit = debounce(
|
||||
1000,
|
||||
async () => {
|
||||
await useFormValidate(formRef);
|
||||
const params = {
|
||||
...form.value,
|
||||
BIANMA: "MONITORINGEQUIPMENTTYPE",
|
||||
YNDEL: "no",
|
||||
PARENT_ID: "6a724d36c3ad416fad22049d932c1987",
|
||||
};
|
||||
props.type === "add"
|
||||
? await setMonitoringTypeManagementAdd(params)
|
||||
: await setMonitoringTypeManagementEdit(params);
|
||||
ElMessage.success("保存成功");
|
||||
fnClose();
|
||||
emits("get-data");
|
||||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -2,14 +2,14 @@
|
|||
<div>
|
||||
<el-card>
|
||||
<el-form
|
||||
:model="data.searchForm"
|
||||
:model="searchForm"
|
||||
label-width="100px"
|
||||
@submit.prevent="fnResetPagination"
|
||||
>
|
||||
<el-row>
|
||||
<el-col :span="6">
|
||||
<el-form-item label="监测类型名称" prop="KEYWORDS">
|
||||
<el-input v-model="data.searchForm.KEYWORDS" />
|
||||
<el-input v-model="searchForm.KEYWORDS" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
|
@ -27,14 +27,14 @@
|
|||
<layout-table
|
||||
ref="tableRef"
|
||||
row-key="DICTIONARIES_ID"
|
||||
:data="data.list"
|
||||
:data="list"
|
||||
@get-data="fnGetData"
|
||||
v-model:pagination="data.pagination"
|
||||
v-model:pagination="pagination"
|
||||
>
|
||||
<el-table-column reserve-selection type="selection" width="55" />
|
||||
<el-table-column label="序号" width="60">
|
||||
<template #default="{ $index }">
|
||||
{{ serialNumber(data.pagination, $index) }}
|
||||
{{ serialNumber(pagination, $index) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="NAME" label="监测类型名称" />
|
||||
|
@ -80,66 +80,35 @@
|
|||
</template>
|
||||
</layout-table>
|
||||
</layout-card>
|
||||
<el-dialog
|
||||
v-model="data.addOrEditDialog.visible"
|
||||
:title="data.addOrEditDialog.type === 'edit' ? '修改' : '新增'"
|
||||
>
|
||||
<el-form
|
||||
ref="addOrEditDialogFormRef"
|
||||
:model="data.addOrEditDialog.form"
|
||||
:rules="data.addOrEditDialog.rules"
|
||||
label-width="120px"
|
||||
>
|
||||
<el-form-item label="监测类型名称" prop="NAME">
|
||||
<el-input v-model="data.addOrEditDialog.form.NAME" />
|
||||
</el-form-item>
|
||||
<el-form-item label="排序" prop="ORDER_BY">
|
||||
<el-input v-model.number="data.addOrEditDialog.form.ORDER_BY" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="BZ">
|
||||
<el-input
|
||||
v-model="data.addOrEditDialog.form.BZ"
|
||||
type="textarea"
|
||||
autosize
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="fnAddOrEditDialogChangeShow">取消</el-button>
|
||||
<el-button type="primary" @click="fnAddOrEditDialogSubmit">
|
||||
确定
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<add
|
||||
v-model:visible="data.addOrEditDialog.visible"
|
||||
v-model:form="data.addOrEditDialog.form"
|
||||
:type="data.addOrEditDialog.type"
|
||||
@get-data="fnResetPagination"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { nextTick, reactive, ref } from "vue";
|
||||
import { nextTick, reactive } from "vue";
|
||||
import { serialNumber } from "@/assets/js/utils";
|
||||
import {
|
||||
getMonitoringTypeManagementList,
|
||||
setMonitoringTypeManagementAdd,
|
||||
setMonitoringTypeManagementDelete,
|
||||
setMonitoringTypeManagementDeleteMultiple,
|
||||
setMonitoringTypeManagementEdit,
|
||||
} from "@/request/major_hazard_sources";
|
||||
import { layoutFnButtonJurisdiction } from "@/assets/js/button_jurisdiction";
|
||||
import useButtonJurisdiction from "@/assets/js/useButtonJurisdiction.js";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import { cloneDeep } from "lodash-es";
|
||||
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
import Add from "./components/add.vue";
|
||||
|
||||
const tableRef = ref(null);
|
||||
const addOrEditDialogFormRef = ref(null);
|
||||
const { list, searchForm, pagination, fnGetData, fnResetPagination, tableRef } =
|
||||
useListData(getMonitoringTypeManagementList, {
|
||||
otherParams: { DICTIONARIES_ID: "6a724d36c3ad416fad22049d932c1987" },
|
||||
});
|
||||
const data = reactive({
|
||||
list: [],
|
||||
pagination: {
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
},
|
||||
searchForm: {},
|
||||
addOrEditDialog: {
|
||||
visible: false,
|
||||
type: "",
|
||||
|
@ -148,39 +117,9 @@ const data = reactive({
|
|||
ORDER_BY: "",
|
||||
BZ: "",
|
||||
},
|
||||
rules: {
|
||||
NAME: [
|
||||
{ required: true, message: "字典名称不能为空", trigger: "change" },
|
||||
{ min: 2, max: 30, message: "长度在 2 到 30 个字符", trigger: "blur" },
|
||||
],
|
||||
ORDER_BY: [
|
||||
{ required: true, message: "字典序号名称不能为空", trigger: "change" },
|
||||
{ type: "number", message: "字典序号必须为数字" },
|
||||
],
|
||||
},
|
||||
},
|
||||
});
|
||||
const fnGetData = async () => {
|
||||
const resData = await getMonitoringTypeManagementList({
|
||||
currentPage: data.pagination.currentPage,
|
||||
showCount: data.pagination.pageSize,
|
||||
...data.searchForm,
|
||||
DICTIONARIES_ID: "6a724d36c3ad416fad22049d932c1987",
|
||||
});
|
||||
data.list = resData.varList;
|
||||
data.pagination.total = resData.page.totalResult;
|
||||
};
|
||||
fnGetData();
|
||||
const buttonJurisdiction = await layoutFnButtonJurisdiction("dictionaries");
|
||||
const fnResetPagination = () => {
|
||||
data.pagination = {
|
||||
currentPage: 1,
|
||||
pageSize: 10,
|
||||
total: 0,
|
||||
};
|
||||
tableRef.value.clearSelection();
|
||||
fnGetData();
|
||||
};
|
||||
const buttonJurisdiction = await useButtonJurisdiction("dictionaries");
|
||||
const fnDelete = debounce(
|
||||
1000,
|
||||
async (DICTIONARIES_ID) => {
|
||||
|
@ -209,35 +148,12 @@ const fnDeleteAll = debounce(
|
|||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
const fnAddOrEditDialogChangeShow = () => {
|
||||
data.addOrEditDialog.visible = !data.addOrEditDialog.visible;
|
||||
};
|
||||
const fnAddOrEdit = async (row, type) => {
|
||||
data.addOrEditDialog.type = type;
|
||||
fnAddOrEditDialogChangeShow();
|
||||
data.addOrEditDialog.visible = true;
|
||||
await nextTick();
|
||||
addOrEditDialogFormRef.value.resetFields();
|
||||
data.addOrEditDialog.type = type;
|
||||
if (type === "edit") data.addOrEditDialog.form = cloneDeep(row);
|
||||
};
|
||||
const fnAddOrEditDialogSubmit = debounce(
|
||||
1000,
|
||||
async () => {
|
||||
await useFormValidate(addOrEditDialogFormRef);
|
||||
const { type, form } = data.addOrEditDialog;
|
||||
const params = {
|
||||
...form,
|
||||
BIANMA: "MONITORINGEQUIPMENTTYPE",
|
||||
YNDEL: "no",
|
||||
PARENT_ID: "6a724d36c3ad416fad22049d932c1987",
|
||||
};
|
||||
if (type === "add") await setMonitoringTypeManagementAdd(params);
|
||||
if (type === "edit") await setMonitoringTypeManagementEdit(params);
|
||||
ElMessage.success("保存成功");
|
||||
fnAddOrEditDialogChangeShow();
|
||||
fnResetPagination();
|
||||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped></style>
|
||||
|
|
|
@ -0,0 +1,196 @@
|
|||
<template>
|
||||
<el-dialog v-model="visible" title="应急处置" :on-close="fnClose">
|
||||
<el-form ref="formRef" :rules="rules" :model="form" label-width="110px">
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="储罐编号" prop="MAJORDANGERSOURCE_NUMBER">
|
||||
<el-input :model-value="info.MAJORDANGERSOURCE_NUMBER" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="报警类型" prop="ALARM_TYPE">
|
||||
<el-select v-model="form.ALARM_TYPE" disabled>
|
||||
<el-option
|
||||
v-for="item in equipmentTypeList"
|
||||
:key="item.BIANMA"
|
||||
:label="item.NAME"
|
||||
:value="item.BIANMA"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="报警级别" prop="ALARM_LEVEL">
|
||||
<el-select v-model="form.ALARM_LEVEL" disabled>
|
||||
<el-option
|
||||
v-for="item in equipmentLevelList"
|
||||
:key="item.VALUE"
|
||||
:label="item.NAME"
|
||||
:value="item.VALUE"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="报警值" prop="ALARM_VALUE">
|
||||
<el-input v-model="form.ALARM_VALUE" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="阈值下限" prop="ALARM_RANGE_MIN">
|
||||
<el-input v-model="form.ALARM_RANGE_MIN" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="阈值上限" prop="ALARM_RANGE_MAX">
|
||||
<el-input v-model="form.ALARM_RANGE_MAX" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="处置人" prop="DISPOSAL_PERSON">
|
||||
<el-input v-model="form.DISPOSAL_PERSON" />
|
||||
</el-form-item>
|
||||
<el-form-item label="处置方式" prop="DISPOSAL_METHOD">
|
||||
<el-input v-model="form.DISPOSAL_METHOD" />
|
||||
</el-form-item>
|
||||
<el-form-item label="处置描述" prop="DISPOSAL_DESC">
|
||||
<el-input v-model="form.DISPOSAL_DESC" autosize type="textarea" />
|
||||
</el-form-item>
|
||||
<el-form-item label="处置前图片" prop="disposalBeforeFile">
|
||||
<layout-upload
|
||||
v-model:file-list="form.disposalBeforeFile"
|
||||
accept=".jpg,.jpeg,.png"
|
||||
list-type="picture-card"
|
||||
:limit="99"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="处置后图片" prop="disposalAfterFile">
|
||||
<layout-upload
|
||||
v-model:file-list="form.disposalAfterFile"
|
||||
accept=".jpg,.jpeg,.png"
|
||||
list-type="picture-card"
|
||||
:limit="99"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="处置完成时间" prop="DISPOSAL_TIME_OVER">
|
||||
<el-date-picker
|
||||
v-model="form.DISPOSAL_TIME_OVER"
|
||||
format="YYYY-MM-DD HH:mm"
|
||||
value-format="YYYY-MM-DD HH:mm"
|
||||
type="datetime"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="fnClose">取消</el-button>
|
||||
<el-button type="primary" @click="fnSubmit"> 确定 </el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import LayoutUpload from "@/components/upload/index.vue";
|
||||
import { layoutFnGetEquipmentType } from "@/assets/js/data_dictionary.js";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||
import { setRealTimeDataMonitoringEquipmentEdit } from "@/request/major_hazard_sources.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
import { ref } from "vue";
|
||||
import { useVModels } from "@vueuse/core";
|
||||
import { setUploadImg } from "@/request/api.js";
|
||||
|
||||
const props = defineProps({
|
||||
visible: {
|
||||
type: Boolean,
|
||||
required: true,
|
||||
default: false,
|
||||
},
|
||||
form: {
|
||||
type: Object,
|
||||
required: true,
|
||||
default: () => ({}),
|
||||
},
|
||||
info: {
|
||||
type: Object,
|
||||
required: true,
|
||||
default: () => ({}),
|
||||
},
|
||||
id: {
|
||||
type: String,
|
||||
required: true,
|
||||
default: "",
|
||||
},
|
||||
});
|
||||
const emits = defineEmits(["update:visible", "update:form"]);
|
||||
const { visible, form } = useVModels(props, emits);
|
||||
const rules = {
|
||||
ALARM_TYPE: [{ required: true, message: "请选择报警类型", trigger: "blur" }],
|
||||
ALARM_VALUE: [{ required: true, message: "报警值不能为空", trigger: "blur" }],
|
||||
ALARM_LEVEL: [
|
||||
{ required: true, message: "报警级别不能为空", trigger: "blur" },
|
||||
],
|
||||
ALARM_RANGE_MIN: [
|
||||
{ required: true, message: "报警阈值下限不能为空", trigger: "blur" },
|
||||
],
|
||||
ALARM_RANGE_MAX: [
|
||||
{ required: true, message: "报警阈值上限不能为空", trigger: "blur" },
|
||||
],
|
||||
disposalBeforeFile: [
|
||||
{ required: true, message: "处置前图片不能为空", trigger: "blur" },
|
||||
],
|
||||
disposalAfterFile: [
|
||||
{ required: true, message: "处置后图片不能为空", trigger: "blur" },
|
||||
],
|
||||
DISPOSAL_PERSON: [
|
||||
{ required: true, message: "处置人不能为空", trigger: "blur" },
|
||||
],
|
||||
DISPOSAL_METHOD: [
|
||||
{ required: true, message: "处置方式不能为空", trigger: "blur" },
|
||||
],
|
||||
DISPOSAL_DESC: [
|
||||
{ required: true, message: "处置描述不能为空", trigger: "blur" },
|
||||
],
|
||||
DISPOSAL_TIME_OVER: [
|
||||
{ required: true, message: "请选择处置完成时间", trigger: "blur" },
|
||||
],
|
||||
};
|
||||
const formRef = ref(null);
|
||||
const equipmentTypeList = await layoutFnGetEquipmentType();
|
||||
const equipmentLevelList = [
|
||||
{ VALUE: "1", NAME: "一级" },
|
||||
{ VALUE: "2", NAME: "二级" },
|
||||
{ VALUE: "3", NAME: "三级" },
|
||||
{ VALUE: "4", NAME: "四级" },
|
||||
];
|
||||
const fnClose = () => {
|
||||
formRef.value.resetFields();
|
||||
visible.value = false;
|
||||
};
|
||||
const fnSubmit = debounce(
|
||||
1000,
|
||||
async () => {
|
||||
await useFormValidate(formRef);
|
||||
await fnUploadImg("disposalBeforeFile", 20);
|
||||
await fnUploadImg("disposalAfterFile", 21);
|
||||
await setRealTimeDataMonitoringEquipmentEdit({
|
||||
...form.value,
|
||||
DISPOSAL_STATUS: "1",
|
||||
MAJORDANGERSOURCE_ID: props.id,
|
||||
});
|
||||
fnClose();
|
||||
ElMessage.success("保存成功");
|
||||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
const fnUploadImg = async (file, TYPE) => {
|
||||
for (let i = 0; i < form.value[file].length; i++) {
|
||||
const formData = new FormData();
|
||||
formData.append("FFILE", form.value[file][i].raw);
|
||||
formData.append("FOREIGN_KEY", form.value.MAJORDANGERSOURCE_DISPOSAL_ID);
|
||||
formData.append("TYPE", TYPE);
|
||||
await setUploadImg(formData);
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss"></style>
|
|
@ -2,7 +2,7 @@
|
|||
<layout-card>
|
||||
<div class="container">
|
||||
<div
|
||||
v-for="(item, index) in data.list"
|
||||
v-for="(item, index) in list"
|
||||
:key="index"
|
||||
class="item"
|
||||
@click="
|
||||
|
@ -35,19 +35,14 @@
|
|||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive } from "vue";
|
||||
import { getRealTimeDataMonitoringEquipment } from "@/request/major_hazard_sources.js";
|
||||
import { useRouter } from "vue-router";
|
||||
import useListData from "@/assets/js/useListData.js";
|
||||
|
||||
const router = useRouter();
|
||||
const data = reactive({
|
||||
list: [],
|
||||
const { list } = useListData(getRealTimeDataMonitoringEquipment, {
|
||||
usePagination: false,
|
||||
});
|
||||
const fnGetData = async () => {
|
||||
const resData = await getRealTimeDataMonitoringEquipment();
|
||||
data.list = resData.varList;
|
||||
};
|
||||
fnGetData();
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
@ -59,6 +54,7 @@ fnGetData();
|
|||
flex-basis: 20%;
|
||||
text-align: center;
|
||||
cursor: pointer;
|
||||
margin: 10px 0;
|
||||
|
||||
.img {
|
||||
margin-top: 10px;
|
||||
|
@ -66,8 +62,11 @@ fnGetData();
|
|||
}
|
||||
|
||||
.info {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
|
||||
div {
|
||||
display: inline-block;
|
||||
width: 40%;
|
||||
border: 1px solid var(--el-border-color);
|
||||
padding: 8px 20px;
|
||||
font-size: 14px;
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
>
|
||||
应急处置
|
||||
</el-button>
|
||||
<div style="margin-top: 14px">
|
||||
<div class="mt-14">
|
||||
<el-button
|
||||
type="primary"
|
||||
@click="
|
||||
|
@ -166,127 +166,12 @@
|
|||
</el-tabs>
|
||||
</div>
|
||||
</layout-card>
|
||||
<el-dialog v-model="data.emergencyResponseDialog.visible" title="应急处置">
|
||||
<el-form
|
||||
ref="emergencyResponseDialogFormRef"
|
||||
:rules="data.emergencyResponseDialog.rules"
|
||||
:model="data.emergencyResponseDialog.form"
|
||||
label-width="110px"
|
||||
>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="储罐编号" prop="MAJORDANGERSOURCE_NUMBER">
|
||||
<el-input v-model="data.info.MAJORDANGERSOURCE_NUMBER" disabled />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="报警类型" prop="ALARM_TYPE">
|
||||
<el-select
|
||||
v-model="data.emergencyResponseDialog.form.ALARM_TYPE"
|
||||
disabled
|
||||
>
|
||||
<el-option
|
||||
v-for="item in equipmentTypeList"
|
||||
:key="item.BIANMA"
|
||||
:label="item.NAME"
|
||||
:value="item.BIANMA"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="报警级别" prop="ALARM_LEVEL">
|
||||
<el-select
|
||||
v-model="data.emergencyResponseDialog.form.ALARM_LEVEL"
|
||||
disabled
|
||||
>
|
||||
<el-option
|
||||
v-for="item in equipmentLevelList"
|
||||
:key="item.VALUE"
|
||||
:label="item.NAME"
|
||||
:value="item.VALUE"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="报警值" prop="ALARM_VALUE">
|
||||
<el-input
|
||||
v-model="data.emergencyResponseDialog.form.ALARM_VALUE"
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="阈值下限" prop="ALARM_RANGE_MIN">
|
||||
<el-input
|
||||
v-model="data.emergencyResponseDialog.form.ALARM_RANGE_MIN"
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="阈值上限" prop="ALARM_RANGE_MAX">
|
||||
<el-input
|
||||
v-model="data.emergencyResponseDialog.form.ALARM_RANGE_MAX"
|
||||
disabled
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-form-item label="处置人" prop="DISPOSAL_PERSON">
|
||||
<el-input
|
||||
v-model="data.emergencyResponseDialog.form.DISPOSAL_PERSON"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="处置方式" prop="DISPOSAL_METHOD">
|
||||
<el-input
|
||||
v-model="data.emergencyResponseDialog.form.DISPOSAL_METHOD"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="处置描述" prop="DISPOSAL_DESC">
|
||||
<el-input
|
||||
v-model="data.emergencyResponseDialog.form.DISPOSAL_DESC"
|
||||
autosize
|
||||
type="textarea"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="处置前图片" prop="disposalBeforeFile">
|
||||
<layout-upload
|
||||
v-model:file-list="
|
||||
data.emergencyResponseDialog.form.disposalBeforeFile
|
||||
"
|
||||
accept=".jpg,.jpeg,.png"
|
||||
list-type="picture-card"
|
||||
:limit="99"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="处置后图片" prop="disposalAfterFile">
|
||||
<layout-upload
|
||||
v-model:file-list="
|
||||
data.emergencyResponseDialog.form.disposalAfterFile
|
||||
"
|
||||
accept=".jpg,.jpeg,.png"
|
||||
list-type="picture-card"
|
||||
:limit="99"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="处置完成时间" prop="DISPOSAL_TIME_OVER">
|
||||
<el-date-picker
|
||||
v-model="data.emergencyResponseDialog.form.DISPOSAL_TIME_OVER"
|
||||
format="YYYY-MM-DD HH:mm"
|
||||
value-format="YYYY-MM-DD HH:mm"
|
||||
type="datetime"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="fnEmergencyResponseDialogChangeShow">取消</el-button>
|
||||
<el-button type="primary" @click="fnEmergencyResponseDialogSubmit">
|
||||
确定
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
<emergency-response
|
||||
v-model:visible="data.emergencyResponseDialog.visible"
|
||||
v-model:form="data.emergencyResponseDialog.form"
|
||||
:id="MAJORDANGERSOURCE_ID"
|
||||
:info="data.info"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -298,16 +183,11 @@ import {
|
|||
getRealTimeDataMonitoringEquipmentDisposal,
|
||||
getRealTimeDataMonitoringEquipmentData,
|
||||
getRealTimeDataMonitoringEquipmentLogList,
|
||||
setRealTimeDataMonitoringEquipmentEdit,
|
||||
} from "@/request/major_hazard_sources.js";
|
||||
import { ElMessage } from "element-plus";
|
||||
import * as echarts from "echarts";
|
||||
import LayoutUpload from "@/components/upload/index.vue";
|
||||
import { cloneDeep } from "lodash-es";
|
||||
import { layoutFnGetEquipmentTypeCorp } from "@/assets/js/data_dictionary.js";
|
||||
import { debounce } from "throttle-debounce";
|
||||
import { setUploadImg } from "@/request/api.js";
|
||||
import useFormValidate from "@/assets/js/useFormValidate.js";
|
||||
import EmergencyResponse from "./components/emergency_response.vue";
|
||||
|
||||
const route = useRoute();
|
||||
const { MAJORDANGERSOURCE_ID } = route.query;
|
||||
|
@ -316,26 +196,25 @@ const Echarts1 = null;
|
|||
const Echarts2 = null;
|
||||
let timer = null;
|
||||
const tabsActive = ref("first");
|
||||
const emergencyResponseDialogFormRef = ref(null);
|
||||
const disposalNew = {};
|
||||
let disposal = {};
|
||||
const chartData = {
|
||||
LIQUIDLEVEL: {
|
||||
dataX: ["15:14:00", "15:14:05", "15:14:10", "15:14:15", "15:14:20"],
|
||||
legend: ["液位"],
|
||||
color: ["#3888FA"],
|
||||
dataY: [[13.172, 13.171, 13.173, 13.171, 13.175]],
|
||||
},
|
||||
TEMPERATURE: {
|
||||
dataX: ["15:14:00", "15:14:05", "15:14:10", "15:14:15", "15:14:20"],
|
||||
legend: ["温度"],
|
||||
color: ["#3888FA"],
|
||||
dataY: [[26.6, 26.3, 26.5, 26.6, 26.2]],
|
||||
},
|
||||
};
|
||||
const data = reactive({
|
||||
info: {},
|
||||
disposalNew: {},
|
||||
disposal: {},
|
||||
logList: [],
|
||||
chartData: {
|
||||
LIQUIDLEVEL: {
|
||||
dataX: ["15:14:00", "15:14:05", "15:14:10", "15:14:15", "15:14:20"],
|
||||
legend: ["液位"],
|
||||
color: ["#3888FA"],
|
||||
dataY: [[13.172, 13.171, 13.173, 13.171, 13.175]],
|
||||
},
|
||||
TEMPERATURE: {
|
||||
dataX: ["15:14:00", "15:14:05", "15:14:10", "15:14:15", "15:14:20"],
|
||||
legend: ["温度"],
|
||||
color: ["#3888FA"],
|
||||
dataY: [[26.6, 26.3, 26.5, 26.6, 26.2]],
|
||||
},
|
||||
},
|
||||
hasDisposal: false,
|
||||
emergencyResponseDialog: {
|
||||
visible: false,
|
||||
|
@ -353,108 +232,69 @@ const data = reactive({
|
|||
disposalBeforeFile: [],
|
||||
disposalAfterFile: [],
|
||||
},
|
||||
rules: {
|
||||
ALARM_TYPE: [
|
||||
{ required: true, message: "请选择报警类型", trigger: "blur" },
|
||||
],
|
||||
ALARM_VALUE: [
|
||||
{ required: true, message: "报警值不能为空", trigger: "blur" },
|
||||
],
|
||||
ALARM_LEVEL: [
|
||||
{ required: true, message: "报警级别不能为空", trigger: "blur" },
|
||||
],
|
||||
ALARM_RANGE_MIN: [
|
||||
{ required: true, message: "报警阈值下限不能为空", trigger: "blur" },
|
||||
],
|
||||
ALARM_RANGE_MAX: [
|
||||
{ required: true, message: "报警阈值上限不能为空", trigger: "blur" },
|
||||
],
|
||||
disposalBeforeFile: [
|
||||
{ required: true, message: "处置前图片不能为空", trigger: "blur" },
|
||||
],
|
||||
disposalAfterFile: [
|
||||
{ required: true, message: "处置后图片不能为空", trigger: "blur" },
|
||||
],
|
||||
DISPOSAL_PERSON: [
|
||||
{ required: true, message: "处置人不能为空", trigger: "blur" },
|
||||
],
|
||||
DISPOSAL_METHOD: [
|
||||
{ required: true, message: "处置方式不能为空", trigger: "blur" },
|
||||
],
|
||||
DISPOSAL_DESC: [
|
||||
{ required: true, message: "处置描述不能为空", trigger: "blur" },
|
||||
],
|
||||
DISPOSAL_TIME_OVER: [
|
||||
{ required: true, message: "请选择处置完成时间", trigger: "blur" },
|
||||
],
|
||||
},
|
||||
},
|
||||
});
|
||||
const fnGetDisposal = async () => {
|
||||
const resData = await getRealTimeDataMonitoringEquipmentDisposal({
|
||||
MAJORDANGERSOURCE_ID,
|
||||
});
|
||||
data.disposal = resData.varList.length > 0 ? resData.varList[0] : {};
|
||||
disposal = resData.pd;
|
||||
let message = "";
|
||||
let type = "";
|
||||
// 当前监测数据等级 高于 库里报警数据等级,升级报警信息
|
||||
if (
|
||||
data.disposal.MAJORDANGERSOURCE_DISPOSAL_ID &&
|
||||
Number(data.disposal.ALARM_LEVEL) >
|
||||
Number(
|
||||
data.disposalNew.ALARM_LEVEL === ""
|
||||
? "10"
|
||||
: data.disposalNew.ALARM_LEVEL
|
||||
)
|
||||
disposal.MAJORDANGERSOURCE_DISPOSAL_ID &&
|
||||
Number(disposal.ALARM_LEVEL) >
|
||||
Number(disposalNew.ALARM_LEVEL === "" ? "10" : disposalNew.ALARM_LEVEL)
|
||||
) {
|
||||
data.disposal = { ...data.disposal, ...data.disposalNew };
|
||||
disposal = { ...disposal, ...disposalNew };
|
||||
message =
|
||||
data.info.MAJORDANGERSOURCE_NAME +
|
||||
"【" +
|
||||
(data.disposalNew.ALARM_TYPE === "MONITORINGEQUIPMENTTYPE001"
|
||||
(disposalNew.ALARM_TYPE === "MONITORINGEQUIPMENTTYPE001"
|
||||
? "液位"
|
||||
: "温度") +
|
||||
"】已升级为";
|
||||
if (data.disposalNew.ALARM_LEVEL === "1") {
|
||||
if (disposalNew.ALARM_LEVEL === "1") {
|
||||
message += "一级";
|
||||
type = "error";
|
||||
} else if (data.disposalNew.ALARM_LEVEL === "2") {
|
||||
} else if (disposalNew.ALARM_LEVEL === "2") {
|
||||
message += "二级";
|
||||
type = "warning";
|
||||
} else if (data.disposalNew.ALARM_LEVEL === "3") {
|
||||
} else if (disposalNew.ALARM_LEVEL === "3") {
|
||||
message += "三级";
|
||||
type = "warning";
|
||||
} else if (data.disposalNew.ALARM_LEVEL === "4") {
|
||||
} else if (disposalNew.ALARM_LEVEL === "4") {
|
||||
message += "四级";
|
||||
type = "info";
|
||||
}
|
||||
message += "预警,请尽快处理";
|
||||
} else {
|
||||
// 新增报警数据
|
||||
data.disposal = { ...data.disposal, ...data.disposalNew };
|
||||
disposal = { ...disposal, ...disposalNew };
|
||||
message =
|
||||
data.info.MAJORDANGERSOURCE_NAME +
|
||||
"【" +
|
||||
(data.disposalNew.ALARM_TYPE === "MONITORINGEQUIPMENTTYPE001"
|
||||
(disposalNew.ALARM_TYPE === "MONITORINGEQUIPMENTTYPE001"
|
||||
? "液位"
|
||||
: "温度") +
|
||||
"】已达";
|
||||
if (data.disposalNew.ALARM_LEVEL === "1") {
|
||||
if (disposalNew.ALARM_LEVEL === "1") {
|
||||
message += "一级";
|
||||
type = "error";
|
||||
} else if (data.disposalNew.ALARM_LEVEL === "2") {
|
||||
} else if (disposalNew.ALARM_LEVEL === "2") {
|
||||
message += "二级";
|
||||
type = "warning";
|
||||
} else if (data.disposalNew.ALARM_LEVEL === "3") {
|
||||
} else if (disposalNew.ALARM_LEVEL === "3") {
|
||||
message += "三级";
|
||||
type = "warning";
|
||||
} else if (data.disposalNew.ALARM_LEVEL === "4") {
|
||||
} else if (disposalNew.ALARM_LEVEL === "4") {
|
||||
message += "四级";
|
||||
type = "info";
|
||||
}
|
||||
message += "预警,请尽快处理";
|
||||
}
|
||||
if (type) {
|
||||
if (message) {
|
||||
data.hasDisposal = true;
|
||||
messageExample && messageExample.close();
|
||||
messageExample = null;
|
||||
|
@ -493,8 +333,8 @@ const fnGetStorageTankData = async () => {
|
|||
data.info.LIQUIDLEVEL_RANGEMAX = item.RANGE1_MAX;
|
||||
if (ALARM_LEVEL > 1) {
|
||||
ALARM_LEVEL = 1;
|
||||
data.disposalNew.ALARM_TYPE = item.MONITORINGDEVICESENSOR_TYPE;
|
||||
data.disposalNew.ALARM_LEVEL = "1";
|
||||
disposalNew.ALARM_TYPE = item.MONITORINGDEVICESENSOR_TYPE;
|
||||
disposalNew.ALARM_LEVEL = "1";
|
||||
}
|
||||
} else if (
|
||||
Number(item.RANGE2_MIN) <= Number(liquidLevel) &&
|
||||
|
@ -505,8 +345,8 @@ const fnGetStorageTankData = async () => {
|
|||
data.info.LIQUIDLEVEL_RANGEMAX = item.RANGE2_MAX;
|
||||
if (ALARM_LEVEL > 2) {
|
||||
ALARM_LEVEL = 2;
|
||||
data.disposalNew.ALARM_TYPE = item.MONITORINGDEVICESENSOR_TYPE;
|
||||
data.disposalNew.ALARM_LEVEL = "2";
|
||||
disposalNew.ALARM_TYPE = item.MONITORINGDEVICESENSOR_TYPE;
|
||||
disposalNew.ALARM_LEVEL = "2";
|
||||
}
|
||||
} else if (
|
||||
Number(item.RANGE3_MIN) <= Number(liquidLevel) &&
|
||||
|
@ -517,8 +357,8 @@ const fnGetStorageTankData = async () => {
|
|||
data.info.LIQUIDLEVEL_RANGEMAX = item.RANGE3_MAX;
|
||||
if (ALARM_LEVEL > 3) {
|
||||
ALARM_LEVEL = 3;
|
||||
data.disposalNew.ALARM_TYPE = item.MONITORINGDEVICESENSOR_TYPE;
|
||||
data.disposalNew.ALARM_LEVEL = "3";
|
||||
disposalNew.ALARM_TYPE = item.MONITORINGDEVICESENSOR_TYPE;
|
||||
disposalNew.ALARM_LEVEL = "3";
|
||||
}
|
||||
} else if (
|
||||
Number(item.RANGE4_MIN) <= Number(liquidLevel) &&
|
||||
|
@ -529,8 +369,8 @@ const fnGetStorageTankData = async () => {
|
|||
data.info.LIQUIDLEVEL_RANGEMAX = item.RANGE4_MAX;
|
||||
if (ALARM_LEVEL > 4) {
|
||||
ALARM_LEVEL = 4;
|
||||
data.disposalNew.ALARM_TYPE = item.MONITORINGDEVICESENSOR_TYPE;
|
||||
data.disposalNew.ALARM_LEVEL = "4";
|
||||
disposalNew.ALARM_TYPE = item.MONITORINGDEVICESENSOR_TYPE;
|
||||
disposalNew.ALARM_LEVEL = "4";
|
||||
}
|
||||
} else {
|
||||
data.info.LIQUIDLEVELCLASS = "green";
|
||||
|
@ -539,11 +379,11 @@ const fnGetStorageTankData = async () => {
|
|||
}
|
||||
if (
|
||||
ALARM_LEVEL < 10 &&
|
||||
data.disposalNew.ALARM_TYPE === item.MONITORINGDEVICESENSOR_TYPE
|
||||
disposalNew.ALARM_TYPE === item.MONITORINGDEVICESENSOR_TYPE
|
||||
) {
|
||||
data.disposalNew.ALARM_VALUE = liquidLevel;
|
||||
data.disposalNew.ALARM_RANGE_MIN = data.info.LIQUIDLEVEL_RANGEMIN;
|
||||
data.disposalNew.ALARM_RANGE_MAX = data.info.LIQUIDLEVEL_RANGEMAX;
|
||||
disposalNew.ALARM_VALUE = liquidLevel;
|
||||
disposalNew.ALARM_RANGE_MIN = data.info.LIQUIDLEVEL_RANGEMIN;
|
||||
disposalNew.ALARM_RANGE_MAX = data.info.LIQUIDLEVEL_RANGEMAX;
|
||||
}
|
||||
} else if (
|
||||
item.MONITORINGDEVICESENSOR_TYPE === "MONITORINGEQUIPMENTTYPE002"
|
||||
|
@ -558,8 +398,8 @@ const fnGetStorageTankData = async () => {
|
|||
data.info.TEMPERATURE_RANGEMAX = item.RANGE1_MAX;
|
||||
if (ALARM_LEVEL > 1) {
|
||||
ALARM_LEVEL = 1;
|
||||
data.disposalNew.ALARM_TYPE = item.MONITORINGDEVICESENSOR_TYPE;
|
||||
data.disposalNew.ALARM_LEVEL = "1";
|
||||
disposalNew.ALARM_TYPE = item.MONITORINGDEVICESENSOR_TYPE;
|
||||
disposalNew.ALARM_LEVEL = "1";
|
||||
}
|
||||
} else if (
|
||||
Number(item.RANGE2_MIN) <= Number(temperature) &&
|
||||
|
@ -570,8 +410,8 @@ const fnGetStorageTankData = async () => {
|
|||
data.info.TEMPERATURE_RANGEMAX = item.RANGE2_MAX;
|
||||
if (ALARM_LEVEL > 2) {
|
||||
ALARM_LEVEL = 2;
|
||||
data.disposalNew.ALARM_TYPE = item.MONITORINGDEVICESENSOR_TYPE;
|
||||
data.disposalNew.ALARM_LEVEL = "2";
|
||||
disposalNew.ALARM_TYPE = item.MONITORINGDEVICESENSOR_TYPE;
|
||||
disposalNew.ALARM_LEVEL = "2";
|
||||
}
|
||||
} else if (
|
||||
Number(item.RANGE3_MIN) <= Number(temperature) &&
|
||||
|
@ -582,8 +422,8 @@ const fnGetStorageTankData = async () => {
|
|||
data.info.TEMPERATURE_RANGEMAX = item.RANGE3_MAX;
|
||||
if (ALARM_LEVEL > 3) {
|
||||
ALARM_LEVEL = 3;
|
||||
data.disposalNew.ALARM_TYPE = item.MONITORINGDEVICESENSOR_TYPE;
|
||||
data.disposalNew.ALARM_LEVEL = "3";
|
||||
disposalNew.ALARM_TYPE = item.MONITORINGDEVICESENSOR_TYPE;
|
||||
disposalNew.ALARM_LEVEL = "3";
|
||||
}
|
||||
} else if (
|
||||
Number(item.RANGE4_MIN) <= Number(temperature) &&
|
||||
|
@ -594,8 +434,8 @@ const fnGetStorageTankData = async () => {
|
|||
data.info.TEMPERATURE_RANGEMAX = item.RANGE4_MAX;
|
||||
if (ALARM_LEVEL > 4) {
|
||||
ALARM_LEVEL = 4;
|
||||
data.disposalNew.ALARM_TYPE = item.MONITORINGDEVICESENSOR_TYPE;
|
||||
data.disposalNew.ALARM_LEVEL = "4";
|
||||
disposalNew.ALARM_TYPE = item.MONITORINGDEVICESENSOR_TYPE;
|
||||
disposalNew.ALARM_LEVEL = "4";
|
||||
}
|
||||
} else {
|
||||
data.info.TEMPERATURECLASS = "green";
|
||||
|
@ -604,11 +444,11 @@ const fnGetStorageTankData = async () => {
|
|||
}
|
||||
if (
|
||||
ALARM_LEVEL < 10 &&
|
||||
data.disposalNew.ALARM_TYPE === item.MONITORINGDEVICESENSOR_TYPE
|
||||
disposalNew.ALARM_TYPE === item.MONITORINGDEVICESENSOR_TYPE
|
||||
) {
|
||||
data.disposalNew.ALARM_VALUE = temperature;
|
||||
data.disposalNew.ALARM_RANGE_MIN = data.info.TEMPERATURE_RANGEMIN;
|
||||
data.disposalNew.ALARM_RANGE_MAX = data.info.TEMPERATURE_RANGEMAX;
|
||||
disposalNew.ALARM_VALUE = temperature;
|
||||
disposalNew.ALARM_RANGE_MIN = data.info.TEMPERATURE_RANGEMIN;
|
||||
disposalNew.ALARM_RANGE_MAX = data.info.TEMPERATURE_RANGEMAX;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -694,21 +534,21 @@ const fnGetStorageTankLogList = async () => {
|
|||
item[
|
||||
"STORAGETANK" + data.info.MAJORDANGERSOURCE_STORAGETANK + "_OPERATTIME"
|
||||
];
|
||||
data.chartData.LIQUIDLEVEL.dataX[j] =
|
||||
chartData.LIQUIDLEVEL.dataX[j] =
|
||||
datatime.length > 11 ? datatime.substring(11) : datatime;
|
||||
data.chartData.TEMPERATURE.dataX[j] =
|
||||
chartData.TEMPERATURE.dataX[j] =
|
||||
datatime.length > 11 ? datatime.substring(11) : datatime;
|
||||
data.chartData.LIQUIDLEVEL.dataY[0][j] =
|
||||
chartData.LIQUIDLEVEL.dataY[0][j] =
|
||||
item[
|
||||
"STORAGETANK" + data.info.MAJORDANGERSOURCE_STORAGETANK + "_LIQUIDLEVEL"
|
||||
];
|
||||
data.chartData.TEMPERATURE.dataY[0][j] =
|
||||
chartData.TEMPERATURE.dataY[0][j] =
|
||||
item[
|
||||
"STORAGETANK" + data.info.MAJORDANGERSOURCE_STORAGETANK + "_TEMPERATURE"
|
||||
];
|
||||
});
|
||||
fnInitEcharts(data.chartData.LIQUIDLEVEL, Echarts1, "#echarts1");
|
||||
fnInitEcharts(data.chartData.TEMPERATURE, Echarts2, "#echarts2");
|
||||
fnInitEcharts(chartData.LIQUIDLEVEL, Echarts1, "#echarts1");
|
||||
fnInitEcharts(chartData.TEMPERATURE, Echarts2, "#echarts2");
|
||||
};
|
||||
const fnGetData = async () => {
|
||||
const resData = await getRealTimeDataMonitoringEquipmentInfo({
|
||||
|
@ -723,50 +563,10 @@ const fnGetData = async () => {
|
|||
}, 5000);
|
||||
};
|
||||
fnGetData();
|
||||
const equipmentTypeList = await layoutFnGetEquipmentTypeCorp();
|
||||
const equipmentLevelList = [
|
||||
{ VALUE: "1", NAME: "一级" },
|
||||
{ VALUE: "2", NAME: "二级" },
|
||||
{ VALUE: "3", NAME: "三级" },
|
||||
{ VALUE: "4", NAME: "四级" },
|
||||
];
|
||||
const fnEmergencyResponseDialogChangeShow = () => {
|
||||
data.emergencyResponseDialog.visible = !data.emergencyResponseDialog.visible;
|
||||
};
|
||||
const fnEmergencyResponse = async () => {
|
||||
fnEmergencyResponseDialogChangeShow();
|
||||
data.emergencyResponseDialog.visible = true;
|
||||
await nextTick();
|
||||
emergencyResponseDialogFormRef.value.resetFields();
|
||||
data.emergencyResponseDialog.form = cloneDeep(data.disposal);
|
||||
};
|
||||
const fnEmergencyResponseDialogSubmit = debounce(
|
||||
1000,
|
||||
async () => {
|
||||
await useFormValidate(emergencyResponseDialogFormRef);
|
||||
const { form } = data.emergencyResponseDialog;
|
||||
await fnUploadImg("disposalBeforeFile", 20);
|
||||
await fnUploadImg("disposalAfterFile", 21);
|
||||
await setRealTimeDataMonitoringEquipmentEdit({
|
||||
...form,
|
||||
DISPOSAL_STATUS: "1",
|
||||
MAJORDANGERSOURCE_ID,
|
||||
MAJORDANGERSOURCE_DISPOSAL_ID:
|
||||
data.disposal.MAJORDANGERSOURCE_DISPOSAL_ID,
|
||||
});
|
||||
fnEmergencyResponseDialogChangeShow();
|
||||
ElMessage.success("保存成功");
|
||||
},
|
||||
{ atBegin: true }
|
||||
);
|
||||
const fnUploadImg = async (file, TYPE) => {
|
||||
const { form } = data.emergencyResponseDialog;
|
||||
for (let i = 0; i < form[file].length; i++) {
|
||||
const formData = new FormData();
|
||||
formData.append("FFILE", form[file][i].raw);
|
||||
formData.append("FOREIGN_KEY", data.disposal.MAJORDANGERSOURCE_DISPOSAL_ID);
|
||||
formData.append("TYPE", TYPE);
|
||||
await setUploadImg(formData);
|
||||
}
|
||||
data.emergencyResponseDialog.form = cloneDeep(disposal);
|
||||
};
|
||||
onBeforeUnmount(() => {
|
||||
messageExample && messageExample.close();
|
||||
|
|
Loading…
Reference in New Issue