|
|
@@ -138,14 +138,7 @@
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="预警专项">
|
|
|
- <el-select v-model="formData.warningSpecial" filterable clearable allow-create default-first-option placeholder="请选择或输入预警专项" style="width: 100%">
|
|
|
- <el-option
|
|
|
- v-for="item in filteredSpecialOptions"
|
|
|
- :key="`${item.itemId}-${item.warningSpecial}`"
|
|
|
- :label="item.warningSpecial"
|
|
|
- :value="item.warningSpecial"
|
|
|
- />
|
|
|
- </el-select>
|
|
|
+ <el-input v-model="formData.warningSpecial" placeholder="请输入预警专项" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
@@ -197,7 +190,9 @@
|
|
|
<el-col :span="12">
|
|
|
<el-form-item label="状态">
|
|
|
<el-select v-model="formData.status" style="width: 100%">
|
|
|
- <el-option label="草稿" value="DRAFT" />
|
|
|
+ <el-option label="启用" value="ENABLED" />
|
|
|
+ <el-option label="禁用" value="DISABLED" />
|
|
|
+ <el-option label="作废" value="INVALID" />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
@@ -305,7 +300,11 @@
|
|
|
<el-table :data="detailData.alarmList || []" border size="small">
|
|
|
<el-table-column label="报警ID" prop="alarmId" min-width="160" />
|
|
|
<el-table-column label="报警名称" prop="alarmName" min-width="180" show-overflow-tooltip />
|
|
|
- <el-table-column label="报警类型" prop="alarmType" min-width="120" />
|
|
|
+ <el-table-column label="报警类型" min-width="120">
|
|
|
+ <template #default="scope">
|
|
|
+ {{ formatTypeText(scope.row.alarmType || scope.row.warningType) }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
</el-table>
|
|
|
|
|
|
<el-divider content-position="left">处置记录</el-divider>
|
|
|
@@ -332,15 +331,14 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import { computed, onMounted, reactive, ref } from "vue";
|
|
|
-import { ElMessage, ElMessageBox } from "element-plus";
|
|
|
+import {computed, onMounted, reactive, ref} from "vue";
|
|
|
+import {ElMessage, ElMessageBox} from "element-plus";
|
|
|
import {
|
|
|
deleteYjxxData,
|
|
|
getAlertTypeDictionaryData,
|
|
|
+ getdbyjlistData,
|
|
|
getWarningDetailData,
|
|
|
- getWarningItemListData,
|
|
|
getWarningReasonListData,
|
|
|
- getdbyjlistData,
|
|
|
releaseYjxxData,
|
|
|
submitYjxxData,
|
|
|
updateYjxxData
|
|
|
@@ -352,7 +350,6 @@ const total = ref(0);
|
|
|
const warningList = ref([]);
|
|
|
const warningTypeOptions = ref([]);
|
|
|
const warningLevelOptions = ref([]);
|
|
|
-const warningItems = ref([]);
|
|
|
const reasonOptions = ref([]);
|
|
|
const uploadRef = ref();
|
|
|
const formAttachments = ref([]);
|
|
|
@@ -398,21 +395,6 @@ const warningLevelLabelMap = computed(() => {
|
|
|
}, {});
|
|
|
});
|
|
|
|
|
|
-const filteredSpecialOptions = computed(() => {
|
|
|
- return warningItems.value.filter((item) => {
|
|
|
- if (item.status && item.status !== "ENABLED") {
|
|
|
- return false;
|
|
|
- }
|
|
|
- if (formData.warningType && item.warningType !== formData.warningType) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- if (formData.warningLevel && item.warningLevel !== formData.warningLevel) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- return !!item.warningSpecial;
|
|
|
- });
|
|
|
-});
|
|
|
-
|
|
|
function createEmptyForm() {
|
|
|
return {
|
|
|
warningId: "",
|
|
|
@@ -428,7 +410,7 @@ function createEmptyForm() {
|
|
|
publisher: "",
|
|
|
publishTime: "",
|
|
|
handler: "",
|
|
|
- status: "DRAFT",
|
|
|
+ status: "ENABLED",
|
|
|
warningContent: "",
|
|
|
remark: ""
|
|
|
};
|
|
|
@@ -500,6 +482,7 @@ function formatLevelText(value) {
|
|
|
|
|
|
function getLevelTagType(level) {
|
|
|
return {
|
|
|
+ "0": "danger",
|
|
|
"1": "danger",
|
|
|
"2": "warning",
|
|
|
"3": "success",
|
|
|
@@ -509,6 +492,9 @@ function getLevelTagType(level) {
|
|
|
|
|
|
function getStatusText(status) {
|
|
|
return {
|
|
|
+ ENABLED: "启用",
|
|
|
+ DISABLED: "禁用",
|
|
|
+ INVALID: "作废",
|
|
|
DRAFT: "草稿",
|
|
|
RELEASED: "已发布",
|
|
|
PENDING: "待处理",
|
|
|
@@ -521,12 +507,15 @@ function getStatusText(status) {
|
|
|
|
|
|
function getStatusTagType(status) {
|
|
|
return {
|
|
|
+ ENABLED: "success",
|
|
|
+ DISABLED: "warning",
|
|
|
+ INVALID: "danger",
|
|
|
DRAFT: "info",
|
|
|
RELEASED: "success",
|
|
|
PENDING: "warning",
|
|
|
PROCESSING: "warning",
|
|
|
HANDLED: "success",
|
|
|
- CLOSED: "",
|
|
|
+ CLOSED: "info",
|
|
|
RETURNED: "danger"
|
|
|
}[status] || "";
|
|
|
}
|
|
|
@@ -554,24 +543,34 @@ function normalizeWarningRow(item) {
|
|
|
return row;
|
|
|
}
|
|
|
|
|
|
+function normalizeAlarmRow(item) {
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ alarmId: item.alarmId || item.alarm_id || "",
|
|
|
+ alarmName: item.alarmName || item.alarm_name || item.deviceName || item.device_name || "",
|
|
|
+ alarmType: item.alarmType || item.alarm_type || item.warningType || item.warning_type || ""
|
|
|
+ };
|
|
|
+}
|
|
|
+
|
|
|
+function normalizeDisposalRow(item) {
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ disposalTypeName: item.disposalTypeName || item.disposal_type_name || item.disposalType || item.disposal_type || "",
|
|
|
+ disposalUser: item.disposalUser || item.disposal_user || "",
|
|
|
+ disposalContent: item.disposalContent || item.disposal_content || "",
|
|
|
+ createTime: item.createTime || item.create_time || ""
|
|
|
+ };
|
|
|
+}
|
|
|
+
|
|
|
async function loadDicts() {
|
|
|
const [typeRes, levelRes] = await Promise.all([
|
|
|
- getAlertTypeDictionaryData({ dictType: "warning_type" }),
|
|
|
- getAlertTypeDictionaryData({ dictType: "warning_level" })
|
|
|
+ getAlertTypeDictionaryData({ dictType: "alert_type" }),
|
|
|
+ getAlertTypeDictionaryData({ dictType: "alert_level" })
|
|
|
]);
|
|
|
warningTypeOptions.value = typeRes.rows || [];
|
|
|
warningLevelOptions.value = levelRes.rows || [];
|
|
|
}
|
|
|
|
|
|
-async function loadWarningItems() {
|
|
|
- const res = await getWarningItemListData({
|
|
|
- pageNum: 1,
|
|
|
- pageSize: 200,
|
|
|
- status: "ENABLED"
|
|
|
- });
|
|
|
- warningItems.value = res.data?.records || [];
|
|
|
-}
|
|
|
-
|
|
|
async function loadReasonOptions() {
|
|
|
if (!formData.warningType || !formData.warningLevel) {
|
|
|
reasonOptions.value = [];
|
|
|
@@ -668,7 +667,7 @@ async function submitForm() {
|
|
|
publisher: formData.publisher,
|
|
|
publishTime: formData.publishTime,
|
|
|
handler: formData.handler,
|
|
|
- status: formData.status || "DRAFT",
|
|
|
+ status: formData.status || "ENABLED",
|
|
|
warningContent: formData.warningContent,
|
|
|
remark: formData.remark
|
|
|
},
|
|
|
@@ -690,14 +689,14 @@ async function submitForm() {
|
|
|
|
|
|
async function handleView(row) {
|
|
|
const res = await getWarningDetailData(row.warningId);
|
|
|
- detailData.value = res.data || {};
|
|
|
- if (!detailData.value.basicInfo) {
|
|
|
- detailData.value = {
|
|
|
- basicInfo: row,
|
|
|
- alarmList: [],
|
|
|
- disposalList: []
|
|
|
- };
|
|
|
- }
|
|
|
+ const detail = res.data || {};
|
|
|
+ const basicSource = detail.basicInfo || detail;
|
|
|
+ detailData.value = {
|
|
|
+ ...detail,
|
|
|
+ basicInfo: normalizeWarningRow({ ...row, ...basicSource }),
|
|
|
+ alarmList: (detail.alarmList || []).map(normalizeAlarmRow),
|
|
|
+ disposalHistory: (detail.disposalHistory || detail.disposalList || []).map(normalizeDisposalRow)
|
|
|
+ };
|
|
|
detailVisible.value = true;
|
|
|
}
|
|
|
|
|
|
@@ -724,7 +723,7 @@ async function handlePublish(row) {
|
|
|
}
|
|
|
|
|
|
onMounted(async () => {
|
|
|
- await Promise.all([loadDicts(), loadWarningItems()]);
|
|
|
+ await loadDicts();
|
|
|
await loadList();
|
|
|
});
|
|
|
</script>
|