|
@@ -12,11 +12,13 @@
|
|
|
popper-class="custom-select-popper"
|
|
|
:teleported="false"
|
|
|
style="width: 1200px; margin-left: 30px"
|
|
|
+ @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="title-box">{{ planTitle }}</div>
|
|
|
|
|
@@ -55,10 +57,14 @@
|
|
|
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;
|
|
@@ -75,6 +81,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: '',
|
|
@@ -119,6 +130,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 () => {
|
|
|
// 检查是否选择了响应等级
|
|
@@ -138,6 +169,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}`);
|
|
@@ -153,6 +185,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,8 +260,12 @@ const getPlanDocInfo = (plan_id) => {
|
|
|
|
|
|
|
|
|
// 在组件挂载时尝试获取预案数据
|
|
|
-onMounted(() => {
|
|
|
+onMounted(async() => {
|
|
|
if (props.eventId) {
|
|
|
+ const response = await getEventDetail({ event_id: props.eventId });
|
|
|
+ const event_data = response.data;
|
|
|
+ planId.value = event_data.plan_id;
|
|
|
+
|
|
|
fetchPlanData();
|
|
|
}
|
|
|
});
|