<template> <div id="GongDanPaiFa"> <el-form :model="form" label-width="auto" style="max-width: 100%; padding: 0 40px 0 0px" class="GongDanPaiForm" > <el-form-item label="工单类型:" class="cell2"> <!-- <el-input v-model="form.moduleTypeName" /> --> <el-select v-model="form.moduleType" placeholder="" style="width: 100%"> <el-option v-for="item in module_type" :key="item.value" :label="item.label" :value="item.value" /> </el-select> </el-form-item> <el-form-item label="警情时间:" class="cell2"> <el-input v-model="form.requestFeedbackTime" /> </el-form-item> <el-form-item label="风险位置:" class="cell1"> <el-input v-model="form.eventAddress" /> </el-form-item> <el-form-item label="辅助研判:" class="cell1"> <el-input v-model="form.eventDetails" /> </el-form-item> <el-form-item label="要求反馈时间:" class="cell2"> <el-input v-model="form.requestFeedbackHourNum" /> </el-form-item> <el-form-item label="要求完成时间:" class="cell2"> <el-input v-model="form.requiredCompletionTime" /> </el-form-item> </el-form> <el-button color="#03B6A0" style="width: 110px; height: 34px" @click="CloseDialog()" >派发工单</el-button > </div> </template> <script setup name="GongDanPaiFa"> import { ref, reactive, toRefs, onMounted, watch } from "vue"; import bus from "@/bus"; // 辅助决策 import { commonWarningGet, alarmWorkOrderAdd, alarmWorkOrderList } from "@/api/RQWarning"; const props = defineProps({ // 数据id dataID: { type: String, }, }); import { unitVoiceTemplateCall } from "@/api/OutgoingCall/templateList"; const { proxy } = getCurrentInstance(); const { module_type } = proxy.useDict("module_type"); const { order_type } = proxy.useDict("order_type"); console.log("🚀 ~ module_type,order_type:", module_type, order_type); const AllData = reactive({ form: { // GDType: '预警工单', // JQTimer: '2024-09-26 17:26:00', // FXWZ: '宝塔区凤凰山街道二道街', // FZYP: '压力检测超标,并且该地点管网发生过管道泄漏事件', // FKSJ: '2小时内', // WCSJ: '2024-09-30', }, }); const { form } = toRefs(AllData); // 关闭弹窗 const CloseDialog = () => { console.log( `在${form.value.eventAddress}出现了${form.value.eventDetails},请于${form.value.requestFeedbackHourNum}进行确认与反馈` ); alarmWorkOrderAdd(form.value) .then((res) => { // console.log('🚀 ~ CloseDialog ~ res:', res); unitVoiceTemplateCall({ robotId: "2c922fb8-40f1-47e9-afc0-dc3c7b6bb3cd", phones: "13129919657,13638648812,13332926003", templateDesc: { title: "延安城市生命线通知", // notice: `在${form.value.FXWZ}出现了${form.value.FZYP},请于${form.value.FKSJ}进行确认与反馈`, notice: `在${form.value.eventAddress}出现了${form.value.eventDetails},请于${form.value.requestFeedbackHourNum}进行确认与反馈`, }, }).then((response) => { proxy.$modal.msgSuccess("派发成功"); bus.emit("publicDialog_Close"); }); }) .catch((err) => { console.log("🚀 ~ alarmWorkOrderAdd ~ err:", err); }); // unitVoiceTemplateCall({ // robotId: '2c922fb8-40f1-47e9-afc0-dc3c7b6bb3cd', // phones: '13129919657,13638648812,13332926003', // templateDesc: { // title: '延安城市生命线通知', // // notice: `在${form.value.FXWZ}出现了${form.value.FZYP},请于${form.value.FKSJ}进行确认与反馈`, // notice: `在${form.value.wranLocation}出现了${form.value.assessment},请于${form.value.requestFeedbackHour}进行确认与反馈`, // }, // }).then(response => { // proxy.$modal.msgSuccess('派发成功'); // bus.emit('publicDialog_Close'); // }); }; // 工单信息 const getWarningData = async () => { try { const res = await commonWarningGet(props.dataID); form.value.requestFeedbackTime = res.data.warnTime; form.value.warnId = res.data.id; form.value.eventAddress = res.data.wranLocation; form.value.eventDetails = res.data.riskProfile + "," + res.data.assessment; form.value.orderType = "early_warning"; form.value.moduleTypeName = module_type.value.find( (item) => item.value == res.data.moduleType )?.label; form.value.moduleType = res.data.moduleType; form.value.requestFeedbackHour = "2"; form.value.requestFeedbackHourNum = "2小时"; form.value.requiredCompletionTime = getCalculatedTime( form.value.requestFeedbackTime, "2小时" ); console.log("🚀 ~ getWarningData ~ res:", res); } catch (error) { console.log("🚀 ~ getWarningData ~ error:", error); } }; watch( () => form.value.requestFeedbackHourNum, (val) => { const num = val.match(/(\d+)\s*(小时|分钟|秒)/); if (num) { const value = parseInt(num, 10); form.value.requestFeedbackHour = value; form.value.requiredCompletionTime = getCalculatedTime( form.value.requestFeedbackTime, val ); } }, {} ); // 定义一个方法来计算新的时间 const getCalculatedTime = (v1, v2) => { const time = proxy.moment(v1); const durationParts = v2.match(/(\d+)\s*(小时|分钟|秒)/); // console.log("🚀 ~ getCalculatedTime ~ durationParts:", durationParts) if (durationParts) { const value = parseInt(durationParts[1], 10); const unit = durationParts[2]; // console.log(value, unit); switch (unit) { case "小时": return time.add(value, "hours").format("YYYY-MM-DD HH:mm:ss"); case "分钟": return time.add(value, "minutes").format("YYYY-MM-DD HH:mm:ss"); case "秒": return time.add(value, "seconds").format("YYYY-MM-DD HH:mm:ss"); default: return time.format("YYYY-MM-DD HH:mm:ss"); } } return time.format("YYYY-MM-DD HH:mm:ss"); }; onMounted(() => { console.log(123123123, props.dataID); getWarningData(); if (props.dataID == "001") { form.value.FZYP = "压力监测异常波动,可能是设施故障"; } else if (props.dataID == "002") { form.value.FZYP = "燃气管道压力过大,会存在燃气爆管风险"; } else if (props.dataID == "003") { form.value.FZYP = "高峰期流量持续降低,会存在燃气泄漏风险"; } else if (props.dataID == "004") { form.value.FXWZ = "东大街管网"; form.value.FZYP = "高水位,水深250mm"; } else if (props.dataID == "005") { form.value.FXWZ = "枣园南路与枣园五路管网"; form.value.FZYP = "满管,水深400mm"; } else if (props.dataID == "006") { form.value.FXWZ = "王家坪旧址门口"; form.value.FZYP = "积水,水深120mm"; } }); </script> <style lang="scss" scoped> #GongDanPaiFa { width: 100%; height: 100%; text-align: center; padding-top: 20px; :deep(.GongDanPaiForm) { width: 100%; height: calc(100% - 60px); overflow: auto; .cell1 { float: left; width: 100%; } .cell2 { float: left; width: 50%; .el-form-item__label { width: 200px !important; } } .el-form-item__label { font-family: Source Han Sans CN; font-weight: 400; font-size: 16px; color: #ffffff; } .el-input__wrapper { background: rgba(14, 69, 89, 0.9); border: 1px solid #1cf5fc; box-shadow: none; .el-input__inner { font-family: Source Han Sans CN; font-weight: 400; font-size: 16px; color: #c1d3d4; } } } } </style>