Bläddra i källkod

Merge remote-tracking branch 'origin/dev' into dev

Hwf 6 månader sedan
förälder
incheckning
30eb4b0113

+ 23 - 0
src/api/duty/eventing.ts

@@ -132,6 +132,29 @@ export function launchPlan(data) {
     data: data
   });
 }
+
+
+
+// 取消应急预案
+export function cancelPlan(data) {
+  return request({
+    url: '/api/event_management/event/cancel_emergency_plan',
+    method: 'post',
+    data: data
+  });
+}
+
+// 取消应急预案
+export function updatePlanResponseLevel(data) {
+  return request({
+    url: '/api/event_management/event/update_emergency_plan_response_level',
+    method: 'post',
+    data: data
+  });
+}
+
+
+
 // 获取预案单位任务
 export function unitTask(data) {
   return request({

+ 49 - 3
src/views/emergencyCommandMap/RightSection/StartPlan.vue

@@ -10,11 +10,13 @@
         popper-class="custom-select-popper"
         :teleported="false"
         style="width: 240px; margin-left: 10px"
+        @change="change_response_level"
       >
         <el-option v-for="level in responseLevels" :key="level.value" :label="level.name" :value="level.value"></el-option>
       </el-select>
-      <div class="common-btn-primary2" @click="onStartPlan">启动预案</div>
-      <div class="common-btn-primary2" @click="onTaskDelivery">预案任务下发</div>
+      <div class="common-btn-primary2" @click="onStartPlan" v-show="planId === ''">启动预案</div>
+      <div class="common-btn-primary2" @click="onCancelPlan" v-show="planId != ''">取消响应</div>
+      <div class="common-btn-primary2" @click="onTaskDelivery" v-show="planId === ''">预案任务下发</div>
     </div>
     <div class="common-title-box">{{ planTitle }}</div>
 
@@ -53,10 +55,13 @@
 import { ref, watch, defineProps, defineEmits, reactive } from 'vue';
 import { ElMessage } from 'element-plus';
 import TaskDelivery from './TaskDelivery.vue';
-import { matchingPlan, launchPlan, getPlanDoc } from '@/api/duty/eventing';
+import { matchingPlan, launchPlan, getPlanDoc, cancelPlan, updatePlanResponseLevel } from '@/api/duty/eventing';
+import { getEventDetail } from '@/api/duty/eventing';
 // 内部状态
+const planId = ref('');
 const planTitle = ref(''); // 预案名称
 const selectedLevel = ref(''); // 默认响应等级为空
+const response_level = ref('');
 // 定义组件接收的属性类型
 interface Props {
   show: boolean;
@@ -73,6 +78,11 @@ const responseLevels = [
   { value: '3', name: '较大(III级)' },
   { value: '4', name: '一般(IV级)' }
 ];
+
+const get_response_level_text = (val) => {
+  return responseLevels.find(item => item.value == val).name
+}
+
 const planData = reactive({
     //purpose: '',
     //basis: '',
@@ -117,6 +127,26 @@ const onClose = () => {
   emit('update:show', false);
 };
 
+const change_response_level = async() => {
+  if(planId.value != "") {
+    let confirm_msg = "";
+    if (parseInt(selectedLevel.value) < parseInt(response_level.value)) {
+      confirm_msg = "是否确认升级预案等级为" + get_response_level_text(selectedLevel.value);
+    }
+    else {
+      confirm_msg = "是否确认降级预案等级为" + get_response_level_text(selectedLevel.value);
+    }
+    ElMessageBox.confirm(confirm_msg, '系统提示', {
+      type: 'warning'
+    }).then((res) => {
+      updatePlanResponseLevel({eventId: props.eventId, response_level: selectedLevel.value, plan_id: planData.plan_id})
+      ElMessage.success("变更预案等级成功");
+      setTimeout(()=>{onClose()}, 1000);
+    })
+  }
+  console.log(selectedLevel.value);
+};
+
 // 处理启动预案的函数
 const onStartPlan = async () => {
   // 检查是否选择了响应等级
@@ -136,6 +166,7 @@ const onStartPlan = async () => {
     // 调用后端API启动预案
     const response = await launchPlan(data);
     if (response && response.code === 200) {
+      response_level.value = selectedLevel.value;
       ElMessage.success('预案启动成功!');
     } else if (response && response.code !== 200) {
       ElMessage.error(`预案启动失败,后端返回错误码:${response.code}`);
@@ -151,6 +182,17 @@ const onStartPlan = async () => {
     }
   }
 };
+
+const onCancelPlan = async() => {
+  ElMessageBox.confirm('是否取消响应?', '系统提示', {
+    type: 'warning'
+  }).then((res) => {
+    cancelPlan({eventId: props.eventId})
+    ElMessage.success("取消响应成功");
+    setTimeout(()=>{onClose()}, 1000);
+  })
+}
+
 // 处理标签页点击事件
 const onTabClick = (tab: any, event: Event) => {
   // 实现标签页点击的逻辑
@@ -217,6 +259,10 @@ const getPlanDocInfo = (plan_id) => {
 // 在组件挂载时尝试获取预案数据
 onMounted(() => {
   if (props.eventId) {
+    const response = await getEventDetail({ event_id: props.eventId });
+    const event_data = response.data;
+    planId.value = event_data.plan_id;
+
     fetchPlanData();
   }
 });

+ 1 - 1
src/views/emergencyCommandMap/RightSection/TaskDelivery.vue

@@ -1,5 +1,5 @@
 <template>
-  <Dialog v-model="dialogVisible" type="xl" :title="props.title" @close="closeDialog">
+  <Dialog :hide-title="false" v-model="dialogVisible" type="xl" :title="props.title" @close="closeDialog">
     <div class="content">
       <el-skeleton :loading="loading" animated>
         <template #template>

+ 4 - 4
src/views/emergencyCommandMap/RightSection/index.vue

@@ -119,10 +119,10 @@ const getEventIdFromUrl = () => {
 const startPlan = async () => {
   const response = await getEventDetail({ event_id: eventId.value });
   const event_data = response.data;
-  if (event_data.emergency_notify_count > 0) {
-    ElMessage.warning('预案已启动');
-    return;
-  }
+  // if (event_data.emergency_notify_count > 0) {
+  //   ElMessage.warning('预案已启动');
+  //   return;
+  // }
 
   if (event_data.del_flag === '0') {
     // 正式事件