|  | @@ -0,0 +1,1028 @@
 | 
											
												
													
														|  | 
 |  | +<template>
 | 
											
												
													
														|  | 
 |  | +    <!-- 所有弹出框 -->
 | 
											
												
													
														|  | 
 |  | +    <div class="l_Dialog tuiy">
 | 
											
												
													
														|  | 
 |  | +        <!-- 灾害类型 -->
 | 
											
												
													
														|  | 
 |  | +        <el-dialog v-model="dialogVisible" width="482" align-center :modal="false" :close-on-click-modal="false"
 | 
											
												
													
														|  | 
 |  | +            draggable class="dialog_class bgcolor">
 | 
											
												
													
														|  | 
 |  | +            <template #header="{ titleId, titleClass }">
 | 
											
												
													
														|  | 
 |  | +                <div class="my-header">
 | 
											
												
													
														|  | 
 |  | +                    <el-image :src="icon" fit="contain"></el-image>
 | 
											
												
													
														|  | 
 |  | +                    <h4 :id="titleId" :class="titleClass">灾害类型</h4>
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                </div>
 | 
											
												
													
														|  | 
 |  | +            </template>
 | 
											
												
													
														|  | 
 |  | +            <div class="my_content">
 | 
											
												
													
														|  | 
 |  | +                <el-radio-group v-model="classradio1" class="radio-group">
 | 
											
												
													
														|  | 
 |  | +                    <el-radio label="Fire">火灾</el-radio>
 | 
											
												
													
														|  | 
 |  | +                    <el-radio label="Water">突水</el-radio>
 | 
											
												
													
														|  | 
 |  | +                    <el-radio label="Gass">瓦斯爆炸</el-radio>
 | 
											
												
													
														|  | 
 |  | +                </el-radio-group>
 | 
											
												
													
														|  | 
 |  | +            </div>
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            <template #footer>
 | 
											
												
													
														|  | 
 |  | +                <div class="dialog-footer class_footer l_btn ">
 | 
											
												
													
														|  | 
 |  | +                    <div class="footerbtn">
 | 
											
												
													
														|  | 
 |  | +                        <div class="borderimg"><el-button @click="dialogVisible = false">取消</el-button></div>
 | 
											
												
													
														|  | 
 |  | +                    </div>
 | 
											
												
													
														|  | 
 |  | +                    <div class="footerbtn">
 | 
											
												
													
														|  | 
 |  | +                        <div class="borderimg"><el-button @click="classclick(); dialogVisible= false;">
 | 
											
												
													
														|  | 
 |  | +                                确定
 | 
											
												
													
														|  | 
 |  | +                            </el-button></div>
 | 
											
												
													
														|  | 
 |  | +                    </div>
 | 
											
												
													
														|  | 
 |  | +                </div>
 | 
											
												
													
														|  | 
 |  | +            </template>
 | 
											
												
													
														|  | 
 |  | +        </el-dialog>
 | 
											
												
													
														|  | 
 |  | +        <!--火灾 事故列表 -->
 | 
											
												
													
														|  | 
 |  | +        <el-dialog v-model="dialog.dialogVisible_fire" width="600" :modal="false" :close-on-click-modal="false"
 | 
											
												
													
														|  | 
 |  | +            draggable class="dialog_class bgcolor tablefocus shigutable">
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            <template #header="{ titleId, titleClass }">
 | 
											
												
													
														|  | 
 |  | +                <div class="my-header">
 | 
											
												
													
														|  | 
 |  | +                    <el-image :src="icon" fit="contain"></el-image>
 | 
											
												
													
														|  | 
 |  | +                    <h4 :id="titleId" :class="titleClass"> 事故列表</h4>
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                </div>
 | 
											
												
													
														|  | 
 |  | +            </template>
 | 
											
												
													
														|  | 
 |  | +            <div class="my_content1 bgcolor  tablefocus scoperadio ">
 | 
											
												
													
														|  | 
 |  | +                <el-table :data="tableData" style="width: 100%" v-loading="loading" element-loading-text="Loading..."
 | 
											
												
													
														|  | 
 |  | +                :highlight-current-row="currentrow"
 | 
											
												
													
														|  | 
 |  | +                    element-loading-background="rgba(0, 10, 0, 0.1)" :row-class-name="tableRowClassName"
 | 
											
												
													
														|  | 
 |  | +                    :header-cell-style="{ 'background': ' #375A88' }" @select="projectsSelectionSelect">
 | 
											
												
													
														|  | 
 |  | +                    <el-table-column width="50">
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                        <template #default="scope">
 | 
											
												
													
														|  | 
 |  | +                            <el-radio v-model="scoperadio" :label="scope.row.aid"
 | 
											
												
													
														|  | 
 |  | +                                @change="getRadioRow(scope.row)"></el-radio>
 | 
											
												
													
														|  | 
 |  | +                        </template>
 | 
											
												
													
														|  | 
 |  | +                    </el-table-column>
 | 
											
												
													
														|  | 
 |  | +                    <el-table-column type="index" label="序号" width="50" />
 | 
											
												
													
														|  | 
 |  | +                    <el-table-column prop="name" label="名称" />
 | 
											
												
													
														|  | 
 |  | +                    <el-table-column prop="name" label="来源" width="120" />
 | 
											
												
													
														|  | 
 |  | +                    <el-table-column prop="time" label="时间" width="180" />
 | 
											
												
													
														|  | 
 |  | +                </el-table>
 | 
											
												
													
														|  | 
 |  | +                <div class="demo-pagination-block pagination">
 | 
											
												
													
														|  | 
 |  | +                    <el-pagination v-model:current-page="currentPage4" v-model:page-size="pageSize4" small background
 | 
											
												
													
														|  | 
 |  | +                        layout="prev, total,pager, next, jumpe," :total="parseInt(total)" class="mt-4"
 | 
											
												
													
														|  | 
 |  | +                        @current-change="handleCurrentChange2" />
 | 
											
												
													
														|  | 
 |  | +                </div>
 | 
											
												
													
														|  | 
 |  | +                <div class="dialog-footer footer_div l_btn">
 | 
											
												
													
														|  | 
 |  | +                    <div class="footerbtn flex1">
 | 
											
												
													
														|  | 
 |  | +                        <div class="borderimg"><el-button @click="addsg('1');">添加</el-button></div>
 | 
											
												
													
														|  | 
 |  | +                    </div>
 | 
											
												
													
														|  | 
 |  | +                    <div class="footerbtn flex1">
 | 
											
												
													
														|  | 
 |  | +                        <div class="borderimg"><el-button @click="addsg('2')">
 | 
											
												
													
														|  | 
 |  | +                                修改
 | 
											
												
													
														|  | 
 |  | +                            </el-button></div>
 | 
											
												
													
														|  | 
 |  | +                    </div>
 | 
											
												
													
														|  | 
 |  | +                    <div class="footerbtn flex1">
 | 
											
												
													
														|  | 
 |  | +                        <div class="borderimg"><el-button @click="dialog.dialogsgdelect = true; dialog.dialogForm = false;">
 | 
											
												
													
														|  | 
 |  | +                                删除
 | 
											
												
													
														|  | 
 |  | +                            </el-button></div>
 | 
											
												
													
														|  | 
 |  | +                    </div>
 | 
											
												
													
														|  | 
 |  | +                    <div class="footerbtn flex1">
 | 
											
												
													
														|  | 
 |  | +                        <div class="borderimg"><el-button @click="accident()">
 | 
											
												
													
														|  | 
 |  | +                                确定
 | 
											
												
													
														|  | 
 |  | +                            </el-button></div>
 | 
											
												
													
														|  | 
 |  | +                    </div>
 | 
											
												
													
														|  | 
 |  | +                </div>
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            </div>
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            <div class="ddd" v-show="dialog.dialogForm">
 | 
											
												
													
														|  | 
 |  | +                <div class="header_l">
 | 
											
												
													
														|  | 
 |  | +                    <el-image :src="icon" fit="contain"></el-image>
 | 
											
												
													
														|  | 
 |  | +                    <h4 class="tianjia"> {{ shigtext }}</h4>
 | 
											
												
													
														|  | 
 |  | +                    <div class="closeimg" @click="dialog.dialogForm = false"><el-image :src="closeimg" fit="contain"
 | 
											
												
													
														|  | 
 |  | +                            style="margin-top: -10px;"></el-image></div>
 | 
											
												
													
														|  | 
 |  | +                    <div class="ddd_div" style="display: flex;">
 | 
											
												
													
														|  | 
 |  | +                        <div class="demo-input-suffix firsttitle magintop">
 | 
											
												
													
														|  | 
 |  | +                            <el-form-item label="事故名称">
 | 
											
												
													
														|  | 
 |  | +                                <el-input v-model="formull.name" class="w-50 m-2" maxlength="18"   :placeholder="placeholder" />
 | 
											
												
													
														|  | 
 |  | +                            </el-form-item>
 | 
											
												
													
														|  | 
 |  | +                            <div class="l_btn class_btn" style="width: auto;">
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                                <div class="footerbtn">
 | 
											
												
													
														|  | 
 |  | +                                    <div class="borderimg"><el-button @click="sgadd()">
 | 
											
												
													
														|  | 
 |  | +                                            确定
 | 
											
												
													
														|  | 
 |  | +                                        </el-button></div>
 | 
											
												
													
														|  | 
 |  | +                                </div>
 | 
											
												
													
														|  | 
 |  | +                            </div>
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                        </div>
 | 
											
												
													
														|  | 
 |  | +                    </div>
 | 
											
												
													
														|  | 
 |  | +                </div>
 | 
											
												
													
														|  | 
 |  | +            </div>
 | 
											
												
													
														|  | 
 |  | +            <el-dialog v-model="dialog.dialogsgdelect" width="400" class="dialog_class bgcolor tianjia">
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                <template #header="{ titleId, titleClass }">
 | 
											
												
													
														|  | 
 |  | +                    <div class="my-header ">
 | 
											
												
													
														|  | 
 |  | +                        <el-image :src="icon" fit="contain"></el-image>
 | 
											
												
													
														|  | 
 |  | +                        <h4 :id="titleId" :class="titleClass">删除</h4>
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                    </div>
 | 
											
												
													
														|  | 
 |  | +                </template>
 | 
											
												
													
														|  | 
 |  | +                <h4 class="delecttitle"> 是否确认删除<span class="spanclad">{{ idobj.name }}</span></h4>
 | 
											
												
													
														|  | 
 |  | +                <div class="dialog-footer footer_div l_btn">
 | 
											
												
													
														|  | 
 |  | +                    <div class="footerbtn flex1">
 | 
											
												
													
														|  | 
 |  | +                        <div class="borderimg"><el-button @click="dialog.dialogsgdelect = false">取消</el-button></div>
 | 
											
												
													
														|  | 
 |  | +                    </div>
 | 
											
												
													
														|  | 
 |  | +                    <div class="footerbtn flex1">
 | 
											
												
													
														|  | 
 |  | +                        <div class="borderimg"><el-button @click="sgdelect(); dialog.dialogsgdelect = false">
 | 
											
												
													
														|  | 
 |  | +                                确定
 | 
											
												
													
														|  | 
 |  | +                            </el-button></div>
 | 
											
												
													
														|  | 
 |  | +                    </div>
 | 
											
												
													
														|  | 
 |  | +                </div>
 | 
											
												
													
														|  | 
 |  | +            </el-dialog>
 | 
											
												
													
														|  | 
 |  | +        </el-dialog>
 | 
											
												
													
														|  | 
 |  | +        <!--火灾左侧栏-->
 | 
											
												
													
														|  | 
 |  | +        <div class="common-layout" style="margin: 0;" v-show="leftcoll.collfire">
 | 
											
												
													
														|  | 
 |  | +            <el-aside width="278px" class="L_aside L_aside1 asideg asidegbg  leftbgimg">
 | 
											
												
													
														|  | 
 |  | +                <div class="demo-collapse">
 | 
											
												
													
														|  | 
 |  | +                    <el-collapse v-model="coolactiveName" accordion>
 | 
											
												
													
														|  | 
 |  | +                        <el-collapse-item name="1">
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                            <template #title>
 | 
											
												
													
														|  | 
 |  | +                                <el-icon class="iconimg Frame2" fit="contain"></el-icon>
 | 
											
												
													
														|  | 
 |  | +                                火灾<el-icon class="header-icon">
 | 
											
												
													
														|  | 
 |  | +                                </el-icon>
 | 
											
												
													
														|  | 
 |  | +                            </template>
 | 
											
												
													
														|  | 
 |  | +                            <div class="asides_content">
 | 
											
												
													
														|  | 
 |  | +                                <el-form :inline="true" :model="tuiyanobj" class="demo-form-inline">
 | 
											
												
													
														|  | 
 |  | +                                    <div class="l_padding " style="padding:20px 20px 20px 24px; ">
 | 
											
												
													
														|  | 
 |  | +                                        <div class="line selecwidth">
 | 
											
												
													
														|  | 
 |  | +                                            <el-form-item label="污染物选择:">
 | 
											
												
													
														|  | 
 |  | +                                                <!-- <el-select v-model="options.coid" multiple filterable allow-create
 | 
											
												
													
														|  | 
 |  | +                                                    default-first-option :reserve-keyword="false" value-key="code"
 | 
											
												
													
														|  | 
 |  | +                                                    @change="selectchange($event)" placeholder="请选择">
 | 
											
												
													
														|  | 
 |  | +                                                    <el-option v-for="item in options" :key="item.coid"
 | 
											
												
													
														|  | 
 |  | +                                                        :label="item.code" :value="item" />
 | 
											
												
													
														|  | 
 |  | +                                                </el-select> -->
 | 
											
												
													
														|  | 
 |  | +                                                <el-select v-model="value" multiple filterable allow-create
 | 
											
												
													
														|  | 
 |  | +                                                    default-first-option :reserve-keyword="false" value-key="code"
 | 
											
												
													
														|  | 
 |  | +                                                    @change="selectchange($event)" placeholder="请选择">
 | 
											
												
													
														|  | 
 |  | +                                                    <el-option v-for="item in options" :key="item.coid"
 | 
											
												
													
														|  | 
 |  | +                                                        :label="item.code" :value="item" />
 | 
											
												
													
														|  | 
 |  | +                                                </el-select> 
 | 
											
												
													
														|  | 
 |  | +                                            </el-form-item>
 | 
											
												
													
														|  | 
 |  | +                                        </div>
 | 
											
												
													
														|  | 
 |  | +                                        <ul>
 | 
											
												
													
														|  | 
 |  | +                                            <li>
 | 
											
												
													
														|  | 
 |  | +                                                <div class="demo-datetime-picker">
 | 
											
												
													
														|  | 
 |  | +                                                    <!-- <span class="inputtext_1">选择时间</span> -->
 | 
											
												
													
														|  | 
 |  | +                                                    <div class="block">
 | 
											
												
													
														|  | 
 |  | +                                                        <el-date-picker v-model="tuiyanobj.pickertime" type="datetime"
 | 
											
												
													
														|  | 
 |  | +                                                            placeholder="Pick a Date" format="YYYY-MM-DD HH:mm:ss"
 | 
											
												
													
														|  | 
 |  | +                                                            @change="timeclick()" />
 | 
											
												
													
														|  | 
 |  | +                                                    </div>
 | 
											
												
													
														|  | 
 |  | +                                                </div>
 | 
											
												
													
														|  | 
 |  | +                                            </li>
 | 
											
												
													
														|  | 
 |  | +                                            <li><span class="inputtext_1">时间步长</span>
 | 
											
												
													
														|  | 
 |  | +                                                <div class="inputkuang"> <el-input v-model="tuiyanobj.dt" />
 | 
											
												
													
														|  | 
 |  | +                                                    <span class="righttext">s</span>
 | 
											
												
													
														|  | 
 |  | +                                                </div>
 | 
											
												
													
														|  | 
 |  | +                                            </li>
 | 
											
												
													
														|  | 
 |  | +                                            <li><span class="inputtext_1">空间步长</span>
 | 
											
												
													
														|  | 
 |  | +                                                <div class="inputkuang"> <el-input v-model="tuiyanobj.dx" />
 | 
											
												
													
														|  | 
 |  | +                                                    <span class="righttext">m</span>
 | 
											
												
													
														|  | 
 |  | +                                                </div>
 | 
											
												
													
														|  | 
 |  | +                                            </li>
 | 
											
												
													
														|  | 
 |  | +                                            <li><span class="inputtext_1">模拟时长</span>
 | 
											
												
													
														|  | 
 |  | +                                                <div class="inputkuang"> <el-input v-model="tuiyanobj.totaltime" />
 | 
											
												
													
														|  | 
 |  | +                                                    <span class="righttext">s</span>
 | 
											
												
													
														|  | 
 |  | +                                                </div>
 | 
											
												
													
														|  | 
 |  | +                                            </li>
 | 
											
												
													
														|  | 
 |  | +                                            <li><span class="inputtext_1">输出步长</span>
 | 
											
												
													
														|  | 
 |  | +                                                <div class="inputkuang"> <el-input v-model="tuiyanobj.reportstep" />
 | 
											
												
													
														|  | 
 |  | +                                                    <span class="righttext">s</span>
 | 
											
												
													
														|  | 
 |  | +                                                </div>
 | 
											
												
													
														|  | 
 |  | +                                            </li>
 | 
											
												
													
														|  | 
 |  | +                                            <li><span class="inputtext_1">交互步长</span>
 | 
											
												
													
														|  | 
 |  | +                                                <div class="inputkuang"> <el-input
 | 
											
												
													
														|  | 
 |  | +                                                        v-model="tuiyanobj.interactionstep" />
 | 
											
												
													
														|  | 
 |  | +                                                    <span class="righttext">s</span>
 | 
											
												
													
														|  | 
 |  | +                                                </div>
 | 
											
												
													
														|  | 
 |  | +                                            </li>
 | 
											
												
													
														|  | 
 |  | +                                        </ul>
 | 
											
												
													
														|  | 
 |  | +                                    </div>
 | 
											
												
													
														|  | 
 |  | +                                    <div class="asdis_btn">
 | 
											
												
													
														|  | 
 |  | +                                        <div class="btn"   :class="{chuactive: isActive === 1}" @click="changeClass(1)"><span class="spantext" @click="initial();">初始数据</span></div>
 | 
											
												
													
														|  | 
 |  | +                                        <div class="btn"  :class="{chuactive: isActive === 2}" @click="changeClass(2)"><span class="spantext" @click="calculate();">开始计算</span></div>
 | 
											
												
													
														|  | 
 |  | +                                    </div>
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                                    <div class=" logs">
 | 
											
												
													
														|  | 
 |  | +                                        <div class="logs_pading">
 | 
											
												
													
														|  | 
 |  | +                                            <h4>模拟日志</h4>
 | 
											
												
													
														|  | 
 |  | +                                            <div class="footerTextBox">
 | 
											
												
													
														|  | 
 |  | +                                                <el-input class="footerText" type="textarea" id="textarea_id"
 | 
											
												
													
														|  | 
 |  | +                                                    v-model="rizhi.logs"></el-input>
 | 
											
												
													
														|  | 
 |  | +                                            </div>
 | 
											
												
													
														|  | 
 |  | +                                        </div>
 | 
											
												
													
														|  | 
 |  | +                                    </div>
 | 
											
												
													
														|  | 
 |  | +                                </el-form>
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                            </div>
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                        </el-collapse-item>
 | 
											
												
													
														|  | 
 |  | +                    </el-collapse>
 | 
											
												
													
														|  | 
 |  | +                </div>
 | 
											
												
													
														|  | 
 |  | +            </el-aside>
 | 
											
												
													
														|  | 
 |  | +        </div>
 | 
											
												
													
														|  | 
 |  | +        <!-- 突水 -->
 | 
											
												
													
														|  | 
 |  | +        <div class="common-layout" style="margin: 0;" v-show="leftcoll.collwater">
 | 
											
												
													
														|  | 
 |  | +            <el-aside width="1.6667rem" class="L_aside L_aside1 asideg asidegbg  leftbgimg1">
 | 
											
												
													
														|  | 
 |  | +                <div class="demo-collapse">
 | 
											
												
													
														|  | 
 |  | +                    <el-collapse v-model="coolactiveName" accordion>
 | 
											
												
													
														|  | 
 |  | +                        <el-collapse-item name="1" class="imgneon">
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                            <template #title>
 | 
											
												
													
														|  | 
 |  | +                                <el-icon class="iconimg Frame3" fit="contain"></el-icon>
 | 
											
												
													
														|  | 
 |  | +                                突水<el-icon class="header-icon">
 | 
											
												
													
														|  | 
 |  | +                                </el-icon>
 | 
											
												
													
														|  | 
 |  | +                            </template>
 | 
											
												
													
														|  | 
 |  | +                            <div class="asides_content">
 | 
											
												
													
														|  | 
 |  | +                                <el-form :inline="true" :model="tuiyanobj" class="demo-form-inline">
 | 
											
												
													
														|  | 
 |  | +                                    <div class="l_padding " style="padding:20px 20px 20px 24px; ">
 | 
											
												
													
														|  | 
 |  | +                                        <ul>
 | 
											
												
													
														|  | 
 |  | +                                            <li>
 | 
											
												
													
														|  | 
 |  | +                                                <div class="demo-datetime-picker">
 | 
											
												
													
														|  | 
 |  | +                                                    <!-- <span class="inputtext_1">选择时间</span> -->
 | 
											
												
													
														|  | 
 |  | +                                                    <div class="block">
 | 
											
												
													
														|  | 
 |  | +                                                        <el-date-picker v-model="tuiyanobj.pickertime" type="datetime"
 | 
											
												
													
														|  | 
 |  | +                                                            placeholder="Pick a Date" format="YYYY-MM-DD HH:mm:ss"
 | 
											
												
													
														|  | 
 |  | +                                                            value-format="YYYY-MM-DD HH:mm:ss" @change="timeclick()" />
 | 
											
												
													
														|  | 
 |  | +                                                    </div>
 | 
											
												
													
														|  | 
 |  | +                                                </div>
 | 
											
												
													
														|  | 
 |  | +                                            </li>
 | 
											
												
													
														|  | 
 |  | +                                            <li>
 | 
											
												
													
														|  | 
 |  | +                                                <!-- <el-form-item label="时间步长">
 | 
											
												
													
														|  | 
 |  | +                                                <el-input v-model="tuiyanobj.dt" placeholder="时间步长" clearable />
 | 
											
												
													
														|  | 
 |  | +                                                </el-form-item> -->
 | 
											
												
													
														|  | 
 |  | +                                                <span class="inputtext_1">时间步长</span>
 | 
											
												
													
														|  | 
 |  | +                                                <div class="inputkuang"> <el-input v-model="tuiyanobj.dt" />
 | 
											
												
													
														|  | 
 |  | +                                                    <span class="righttext">s</span>
 | 
											
												
													
														|  | 
 |  | +                                                </div>
 | 
											
												
													
														|  | 
 |  | +                                            </li>
 | 
											
												
													
														|  | 
 |  | +                                            <li><span class="inputtext_1">空间步长</span>
 | 
											
												
													
														|  | 
 |  | +                                                <div class="inputkuang"> <el-input v-model="tuiyanobj.dx" />
 | 
											
												
													
														|  | 
 |  | +                                                    <span class="righttext">m</span>
 | 
											
												
													
														|  | 
 |  | +                                                </div>
 | 
											
												
													
														|  | 
 |  | +                                            </li>
 | 
											
												
													
														|  | 
 |  | +                                            <li><span class="inputtext_1">模拟时长</span>
 | 
											
												
													
														|  | 
 |  | +                                                <div class="inputkuang"> <el-input v-model="tuiyanobj.totaltime" />
 | 
											
												
													
														|  | 
 |  | +                                                    <span class="righttext">s</span>
 | 
											
												
													
														|  | 
 |  | +                                                </div>
 | 
											
												
													
														|  | 
 |  | +                                            </li>
 | 
											
												
													
														|  | 
 |  | +                                            <li><span class="inputtext_1">输出步长</span>
 | 
											
												
													
														|  | 
 |  | +                                                <div class="inputkuang"> <el-input v-model="tuiyanobj.reportstep" />
 | 
											
												
													
														|  | 
 |  | +                                                    <span class="righttext">s</span>
 | 
											
												
													
														|  | 
 |  | +                                                </div>
 | 
											
												
													
														|  | 
 |  | +                                            </li>
 | 
											
												
													
														|  | 
 |  | +                                            <li><span class="inputtext_1">交互步长</span>
 | 
											
												
													
														|  | 
 |  | +                                                <div class="inputkuang"> <el-input
 | 
											
												
													
														|  | 
 |  | +                                                        v-model="tuiyanobj.interactionstep" />
 | 
											
												
													
														|  | 
 |  | +                                                    <span class="righttext">s</span>
 | 
											
												
													
														|  | 
 |  | +                                                </div>
 | 
											
												
													
														|  | 
 |  | +                                            </li>
 | 
											
												
													
														|  | 
 |  | +                                        </ul>
 | 
											
												
													
														|  | 
 |  | +                                    </div>
 | 
											
												
													
														|  | 
 |  | +                                    <div class="asdis_btn">
 | 
											
												
													
														|  | 
 |  | +                                        <div class="btn" :class="{chuactive: isActive === 1}" @click="changeClass(1)"><span class="spantext" @click="initial();">初始数据</span></div>
 | 
											
												
													
														|  | 
 |  | +                                        <div class="btn" :class="{chuactive: isActive === 2}" @click="changeClass(2)"><span class="spantext" @click="calculate();">开始计算</span></div>
 | 
											
												
													
														|  | 
 |  | +                                    </div>
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                                    <div class=" logs">
 | 
											
												
													
														|  | 
 |  | +                                        <div class="logs_pading">
 | 
											
												
													
														|  | 
 |  | +                                            <h4>模拟日志</h4>
 | 
											
												
													
														|  | 
 |  | +                                            <div class="footerTextBox">
 | 
											
												
													
														|  | 
 |  | +                                                <el-input class="footerText" type="textarea" id="textarea_id"
 | 
											
												
													
														|  | 
 |  | +                                                    v-model="rizhi.logs"></el-input>
 | 
											
												
													
														|  | 
 |  | +                                            </div>
 | 
											
												
													
														|  | 
 |  | +                                        </div>
 | 
											
												
													
														|  | 
 |  | +                                    </div>
 | 
											
												
													
														|  | 
 |  | +                                </el-form>
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                            </div>
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                        </el-collapse-item>
 | 
											
												
													
														|  | 
 |  | +                    </el-collapse>
 | 
											
												
													
														|  | 
 |  | +                </div>
 | 
											
												
													
														|  | 
 |  | +            </el-aside>
 | 
											
												
													
														|  | 
 |  | +        </div>
 | 
											
												
													
														|  | 
 |  | +        <!-- 瓦斯爆炸 -->
 | 
											
												
													
														|  | 
 |  | +        <div class="common-layout" style="margin: 0;" v-show="leftcoll.Gass">
 | 
											
												
													
														|  | 
 |  | +            <el-aside width="278px" class="L_aside L_aside1 asideg asidegbg  leftbgimg">
 | 
											
												
													
														|  | 
 |  | +                <div class="demo-collapse">
 | 
											
												
													
														|  | 
 |  | +                    <el-collapse v-model="coolactiveName" accordion>
 | 
											
												
													
														|  | 
 |  | +                        <el-collapse-item name="1">
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                            <template #title>
 | 
											
												
													
														|  | 
 |  | +                                <el-icon class="iconimg Frame4" fit="contain"></el-icon>
 | 
											
												
													
														|  | 
 |  | +                                瓦斯爆炸<el-icon class="header-icon">
 | 
											
												
													
														|  | 
 |  | +                                </el-icon>
 | 
											
												
													
														|  | 
 |  | +                            </template>
 | 
											
												
													
														|  | 
 |  | +                            <div class="asides_content">
 | 
											
												
													
														|  | 
 |  | +                                <el-form :inline="true" :model="tuiyanobj" class="demo-form-inline">
 | 
											
												
													
														|  | 
 |  | +                                    <div class="l_padding " style="padding:20px 20px 20px 24px; ">
 | 
											
												
													
														|  | 
 |  | +                                        <ul>
 | 
											
												
													
														|  | 
 |  | +                                            <li>
 | 
											
												
													
														|  | 
 |  | +                                                <span class="inputtext_1">并行核数</span>
 | 
											
												
													
														|  | 
 |  | +                                                <div class="inputkuang"> <el-input v-model="tuiyanobj.dt" />
 | 
											
												
													
														|  | 
 |  | +                                                </div>
 | 
											
												
													
														|  | 
 |  | +                                            </li>
 | 
											
												
													
														|  | 
 |  | +                                            <li><span class="inputtext_1">时间步长</span>
 | 
											
												
													
														|  | 
 |  | +                                                <div class="inputkuang"> <el-input v-model="tuiyanobj.dt" />
 | 
											
												
													
														|  | 
 |  | +                                                    <span class="righttext">s</span>
 | 
											
												
													
														|  | 
 |  | +                                                </div>
 | 
											
												
													
														|  | 
 |  | +                                            </li>
 | 
											
												
													
														|  | 
 |  | +                                        
 | 
											
												
													
														|  | 
 |  | +                                            <li><span class="inputtext_1">模拟时长</span>
 | 
											
												
													
														|  | 
 |  | +                                                <div class="inputkuang"> <el-input v-model="tuiyanobj.totaltime" />
 | 
											
												
													
														|  | 
 |  | +                                                    <span class="righttext">s</span>
 | 
											
												
													
														|  | 
 |  | +                                                </div>
 | 
											
												
													
														|  | 
 |  | +                                            </li>
 | 
											
												
													
														|  | 
 |  | +                                            <li><span class="inputtext_1">输出步长</span>
 | 
											
												
													
														|  | 
 |  | +                                                <div class="inputkuang"> <el-input v-model="tuiyanobj.reportstep" />
 | 
											
												
													
														|  | 
 |  | +                                                    <span class="righttext">s</span>
 | 
											
												
													
														|  | 
 |  | +                                                </div>
 | 
											
												
													
														|  | 
 |  | +                                            </li>
 | 
											
												
													
														|  | 
 |  | +                                            <li><span class="inputtext_1">子迭代步数</span>
 | 
											
												
													
														|  | 
 |  | +                                                <div class="inputkuang"> <el-input
 | 
											
												
													
														|  | 
 |  | +                                                        v-model="tuiyanobj.interactionstep" />
 | 
											
												
													
														|  | 
 |  | +                                                </div>
 | 
											
												
													
														|  | 
 |  | +                                            </li>
 | 
											
												
													
														|  | 
 |  | +                                        </ul>
 | 
											
												
													
														|  | 
 |  | +                                    </div>
 | 
											
												
													
														|  | 
 |  | +                                    <div class="asdis_btn">
 | 
											
												
													
														|  | 
 |  | +                                        <div class="btn" :class="{chuactive: isActive === 1}" @click="changeClass(1)"><span class="spantext" @click="initial();">初始数据</span></div>
 | 
											
												
													
														|  | 
 |  | +                                        <div class="btn" :class="{chuactive: isActive === 2}" @click="changeClass(2)"><span class="spantext" @click="calculate();">开始计算</span></div>
 | 
											
												
													
														|  | 
 |  | +                                    </div>
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                                    <div class=" logs">
 | 
											
												
													
														|  | 
 |  | +                                        <div class="logs_pading">
 | 
											
												
													
														|  | 
 |  | +                                            <h4>模拟日志</h4>
 | 
											
												
													
														|  | 
 |  | +                                            <div class="footerTextBox">
 | 
											
												
													
														|  | 
 |  | +                                                <el-input class="footerText" type="textarea" id="textarea_id"
 | 
											
												
													
														|  | 
 |  | +                                                    v-model="rizhi.logs"></el-input>
 | 
											
												
													
														|  | 
 |  | +                                            </div>
 | 
											
												
													
														|  | 
 |  | +                                        </div>
 | 
											
												
													
														|  | 
 |  | +                                    </div>
 | 
											
												
													
														|  | 
 |  | +                                </el-form>
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                            </div>
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                        </el-collapse-item>
 | 
											
												
													
														|  | 
 |  | +                    </el-collapse>
 | 
											
												
													
														|  | 
 |  | +                </div>
 | 
											
												
													
														|  | 
 |  | +            </el-aside>
 | 
											
												
													
														|  | 
 |  | +        </div>
 | 
											
												
													
														|  | 
 |  | +    </div>
 | 
											
												
													
														|  | 
 |  | +</template>
 | 
											
												
													
														|  | 
 |  | +<!-- timestampToTime -->
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +<script setup>
 | 
											
												
													
														|  | 
 |  | +import { computed, ref, onMounted, reactive, toRef } from "vue";
 | 
											
												
													
														|  | 
 |  | +import { request, uploadFile } from "@/utils/request";
 | 
											
												
													
														|  | 
 |  | +import { ElMessage, ElButton, ElDialog, ElSelect, formEmits } from 'element-plus'
 | 
											
												
													
														|  | 
 |  | +import icon from "@/assets/img/icon.png";
 | 
											
												
													
														|  | 
 |  | +import Frame2 from "@/assets/img/Frame2.png";
 | 
											
												
													
														|  | 
 |  | +import t1 from "@/assets/img/t1.png";
 | 
											
												
													
														|  | 
 |  | +import t2 from "@/assets/img/t2.png";
 | 
											
												
													
														|  | 
 |  | +import t3 from "@/assets/img/t3.png";
 | 
											
												
													
														|  | 
 |  | +import t4 from "@/assets/img/t4.png";
 | 
											
												
													
														|  | 
 |  | +import mitts from "@/utils/Bus"
 | 
											
												
													
														|  | 
 |  | +import icon1 from "@/assets/img/Group27.png";
 | 
											
												
													
														|  | 
 |  | +import closeimg from "@/assets/img/colse.png";
 | 
											
												
													
														|  | 
 |  | +import { timestampToTime } from '@/js/lindex.js'
 | 
											
												
													
														|  | 
 |  | +import { vtkmodel } from "@/control/vtkModel.js";
 | 
											
												
													
														|  | 
 |  | +const changeModel= ()=>  {
 | 
											
												
													
														|  | 
 |  | +  vtkmodel.clearJgAddMode();
 | 
											
												
													
														|  | 
 |  | +  vtkmodel.renderWindow.render();
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +let currentrow=ref(false);
 | 
											
												
													
														|  | 
 |  | +let placeholder=ref('某次某事件火灾事故');
 | 
											
												
													
														|  | 
 |  | +let emit = defineEmits(['headerclick', 'childfun', 'moxingclick','handleSelect','leftsimulation'])
 | 
											
												
													
														|  | 
 |  | +const props = defineProps({
 | 
											
												
													
														|  | 
 |  | +    addselect: {
 | 
											
												
													
														|  | 
 |  | +        type: Function,
 | 
											
												
													
														|  | 
 |  | +        required: true,
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  | 
 |  | +    headerobj: {
 | 
											
												
													
														|  | 
 |  | +        type: Object,
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  | 
 |  | +    valzaiqing:{
 | 
											
												
													
														|  | 
 |  | +        type:String
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  | 
 |  | +    classradio: {
 | 
											
												
													
														|  | 
 |  | +    type: String,
 | 
											
												
													
														|  | 
 |  | +    // default: '',activeIndex
 | 
											
												
													
														|  | 
 |  | +  },
 | 
											
												
													
														|  | 
 |  | +  activeIndex: {
 | 
											
												
													
														|  | 
 |  | +    type: String,
 | 
											
												
													
														|  | 
 |  | +    // default: '',activeIndex
 | 
											
												
													
														|  | 
 |  | +  },
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +});
 | 
											
												
													
														|  | 
 |  | +let startlog=ref('0');
 | 
											
												
													
														|  | 
 |  | +let shigtext = ref('');
 | 
											
												
													
														|  | 
 |  | +let websock = ref(null);
 | 
											
												
													
														|  | 
 |  | +let times = ref({
 | 
											
												
													
														|  | 
 |  | +    lockReconnect: false, //是否真正建立连接
 | 
											
												
													
														|  | 
 |  | +    timeout: 28 * 1000, //30秒一次心跳
 | 
											
												
													
														|  | 
 |  | +    timeoutObj: null, //心跳倒计时
 | 
											
												
													
														|  | 
 |  | +    serverTimeout0bj: null, //
 | 
											
												
													
														|  | 
 |  | +    timeoutnum: null, //断开重连倒计时
 | 
											
												
													
														|  | 
 |  | +})
 | 
											
												
													
														|  | 
 |  | +let zqname = ref({});
 | 
											
												
													
														|  | 
 |  | +let shiguobj = ref({
 | 
											
												
													
														|  | 
 |  | +    source: '自荐',
 | 
											
												
													
														|  | 
 |  | +    type: '预演',
 | 
											
												
													
														|  | 
 |  | +    sid: '-1'
 | 
											
												
													
														|  | 
 |  | +})
 | 
											
												
													
														|  | 
 |  | +let sgdata = ref({});
 | 
											
												
													
														|  | 
 |  | +let formull = ref({
 | 
											
												
													
														|  | 
 |  | +    source: '',
 | 
											
												
													
														|  | 
 |  | +    name: ''
 | 
											
												
													
														|  | 
 |  | +})
 | 
											
												
													
														|  | 
 |  | +let idobj = ref({
 | 
											
												
													
														|  | 
 |  | +    sgaid: "",
 | 
											
												
													
														|  | 
 |  | +    name: "",
 | 
											
												
													
														|  | 
 |  | +    time: ""
 | 
											
												
													
														|  | 
 |  | +})
 | 
											
												
													
														|  | 
 |  | +let router = useRouter();
 | 
											
												
													
														|  | 
 |  | +const value1 = ref('')
 | 
											
												
													
														|  | 
 |  | +let loading = ref(true)
 | 
											
												
													
														|  | 
 |  | +let aid = ref();
 | 
											
												
													
														|  | 
 |  | +let firepid = ref("");
 | 
											
												
													
														|  | 
 |  | +let firesid = ref("");
 | 
											
												
													
														|  | 
 |  | +const currentPage4 = ref(1);
 | 
											
												
													
														|  | 
 |  | +const pageSize4 = ref(3)
 | 
											
												
													
														|  | 
 |  | +let total = ref(1);
 | 
											
												
													
														|  | 
 |  | +const dialogVisible = ref(false);
 | 
											
												
													
														|  | 
 |  | +const classradio = ref();
 | 
											
												
													
														|  | 
 |  | +let classradio1 = ref('Fire');
 | 
											
												
													
														|  | 
 |  | +const leftcoll = ref({
 | 
											
												
													
														|  | 
 |  | +    collfire: false,
 | 
											
												
													
														|  | 
 |  | +    collwater: false,
 | 
											
												
													
														|  | 
 |  | +    Gass:false,
 | 
											
												
													
														|  | 
 |  | +});
 | 
											
												
													
														|  | 
 |  | +const monitor = ref(false);
 | 
											
												
													
														|  | 
 |  | +const dialog = ref({
 | 
											
												
													
														|  | 
 |  | +    dialogVisible_fire: false,
 | 
											
												
													
														|  | 
 |  | +    jianced: true,
 | 
											
												
													
														|  | 
 |  | +    monitor: false,
 | 
											
												
													
														|  | 
 |  | +    dialogForm: false,
 | 
											
												
													
														|  | 
 |  | +    dialogsgdelect: false,
 | 
											
												
													
														|  | 
 |  | +})
 | 
											
												
													
														|  | 
 |  | +let tuiyanobj = ref({
 | 
											
												
													
														|  | 
 |  | +    value: [''],
 | 
											
												
													
														|  | 
 |  | +    pickertime: '24-03-06 00:00:00',
 | 
											
												
													
														|  | 
 |  | +    acctime: '2024-03-06 00:00:00',
 | 
											
												
													
														|  | 
 |  | +    dt: '',
 | 
											
												
													
														|  | 
 |  | +    dx: '',
 | 
											
												
													
														|  | 
 |  | +    reportstep: '',
 | 
											
												
													
														|  | 
 |  | +    interactionstep: '',
 | 
											
												
													
														|  | 
 |  | +    totaltime: '',
 | 
											
												
													
														|  | 
 |  | +    coids: '',
 | 
											
												
													
														|  | 
 |  | +    cocodes: ''
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +})
 | 
											
												
													
														|  | 
 |  | +let tuiyanobj2 = ref({
 | 
											
												
													
														|  | 
 |  | +    value: ['SO2'],
 | 
											
												
													
														|  | 
 |  | +    pickertime: '',
 | 
											
												
													
														|  | 
 |  | +    acctime: '2024-03-06 00:00:00',
 | 
											
												
													
														|  | 
 |  | +    dt: '0.1',
 | 
											
												
													
														|  | 
 |  | +    dx: '10',
 | 
											
												
													
														|  | 
 |  | +    reportstep: '60',
 | 
											
												
													
														|  | 
 |  | +    interactionstep: '3600',
 | 
											
												
													
														|  | 
 |  | +    totaltime: '3600',
 | 
											
												
													
														|  | 
 |  | +    coids: '1',
 | 
											
												
													
														|  | 
 |  | +    cocodes: 'CO2'
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +})
 | 
											
												
													
														|  | 
 |  | +let tuiyanobj3 = ref({
 | 
											
												
													
														|  | 
 |  | +    value: ['SO2'],
 | 
											
												
													
														|  | 
 |  | +    pickertime: '',
 | 
											
												
													
														|  | 
 |  | +    acctime: '2024-03-06 00:00:00',
 | 
											
												
													
														|  | 
 |  | +    dt: '5',
 | 
											
												
													
														|  | 
 |  | +    dx: '5',
 | 
											
												
													
														|  | 
 |  | +    reportstep: '60',
 | 
											
												
													
														|  | 
 |  | +    interactionstep: '3600',
 | 
											
												
													
														|  | 
 |  | +    totaltime: '3600',
 | 
											
												
													
														|  | 
 |  | +    coids: '1',
 | 
											
												
													
														|  | 
 |  | +    cocodes: 'CO2'
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +})
 | 
											
												
													
														|  | 
 |  | +let tableobj = ref({});
 | 
											
												
													
														|  | 
 |  | +let coolactiveName = ref(["1", "2"]);
 | 
											
												
													
														|  | 
 |  | +let newlog = ref("");
 | 
											
												
													
														|  | 
 |  | +let rizhi = ref({
 | 
											
												
													
														|  | 
 |  | +    top: "50px",
 | 
											
												
													
														|  | 
 |  | +    logs: '',
 | 
											
												
													
														|  | 
 |  | +    left: "90px"
 | 
											
												
													
														|  | 
 |  | +});
 | 
											
												
													
														|  | 
 |  | +let formLabelWidth5 = ref('130px');
 | 
											
												
													
														|  | 
 |  | +const formInline = ref({
 | 
											
												
													
														|  | 
 |  | +    user: '11',
 | 
											
												
													
														|  | 
 |  | +    region: 'shanghai',
 | 
											
												
													
														|  | 
 |  | +    date: '',
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +})
 | 
											
												
													
														|  | 
 |  | +const value = ref([])
 | 
											
												
													
														|  | 
 |  | +const options = ref([])
 | 
											
												
													
														|  | 
 |  | +let arrvalue=ref([]);
 | 
											
												
													
														|  | 
 |  | +let scoperadio = ref(1);
 | 
											
												
													
														|  | 
 |  | +// 推演结果
 | 
											
												
													
														|  | 
 |  | +const customColor = ref('#409eff')
 | 
											
												
													
														|  | 
 |  | +const tableRowClassName = ({ row, rowIndex }) => {
 | 
											
												
													
														|  | 
 |  | +    if (rowIndex % 2 != 0) {
 | 
											
												
													
														|  | 
 |  | +        return 'evenRow';
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    return 'oddRow';
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +const tableData = ref([]);
 | 
											
												
													
														|  | 
 |  | +const tableData2 = [
 | 
											
												
													
														|  | 
 |  | +    {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        date: '站点1',
 | 
											
												
													
														|  | 
 |  | +        name: '2',
 | 
											
												
													
														|  | 
 |  | +        address: '10',
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  | 
 |  | +    {
 | 
											
												
													
														|  | 
 |  | +        date: '站点1',
 | 
											
												
													
														|  | 
 |  | +        name: '2',
 | 
											
												
													
														|  | 
 |  | +        address: '10',
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  | 
 |  | +    {
 | 
											
												
													
														|  | 
 |  | +        date: '站点1',
 | 
											
												
													
														|  | 
 |  | +        name: '2',
 | 
											
												
													
														|  | 
 |  | +        address: '10',
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  | 
 |  | +    {
 | 
											
												
													
														|  | 
 |  | +        date: '站点1',
 | 
											
												
													
														|  | 
 |  | +        name: '2',
 | 
											
												
													
														|  | 
 |  | +        address: '10',
 | 
											
												
													
														|  | 
 |  | +    },
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +]
 | 
											
												
													
														|  | 
 |  | +const handleCurrentChange = ({ row, rowIndex }) => {
 | 
											
												
													
														|  | 
 |  | +    // console.log(row);
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +// aid获取
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +// 类型选择
 | 
											
												
													
														|  | 
 |  | +const classclick = (val) => {
 | 
											
												
													
														|  | 
 |  | +    classradio.value= val;
 | 
											
												
													
														|  | 
 |  | +    console.log(classradio.value);
 | 
											
												
													
														|  | 
 |  | +    console.log(22222)
 | 
											
												
													
														|  | 
 |  | +    scoperadio.value="";
 | 
											
												
													
														|  | 
 |  | +    dialog.value.dialogVisible_fire = true;
 | 
											
												
													
														|  | 
 |  | +    props.addselect();
 | 
											
												
													
														|  | 
 |  | +    getdata();
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | + 
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +// 事故确定列表
 | 
											
												
													
														|  | 
 |  | +const accident = () => {
 | 
											
												
													
														|  | 
 |  | +    if (idobj.value.name == '') {
 | 
											
												
													
														|  | 
 |  | +        ElMessage.error('请选择项目')
 | 
											
												
													
														|  | 
 |  | +    } else {
 | 
											
												
													
														|  | 
 |  | +    //   router.push({ path: "/appmian" });
 | 
											
												
													
														|  | 
 |  | +      console.log(router.push);
 | 
											
												
													
														|  | 
 |  | +        if(props.valzaiqing=='模拟数据'){
 | 
											
												
													
														|  | 
 |  | +        const params = {
 | 
											
												
													
														|  | 
 |  | +            transCode: 'D10017',
 | 
											
												
													
														|  | 
 |  | +            aid:aid.value,
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        request(params)
 | 
											
												
													
														|  | 
 |  | +            .then((res) => {
 | 
											
												
													
														|  | 
 |  | +                if(res.state=='1'){
 | 
											
												
													
														|  | 
 |  | +                    emit("leftsimulation",res,sgdata.value);
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +                else if(res.state=='-1'){
 | 
											
												
													
														|  | 
 |  | +                    ElMessage({
 | 
											
												
													
														|  | 
 |  | +                        message: " 求解失败",
 | 
											
												
													
														|  | 
 |  | +                        type: 'error',
 | 
											
												
													
														|  | 
 |  | +                    });
 | 
											
												
													
														|  | 
 |  | +                    }else if(res.state=='0'){
 | 
											
												
													
														|  | 
 |  | +                    ElMessage({ message: "求解未完成",  type: 'error',
 | 
											
												
													
														|  | 
 |  | +                    });
 | 
											
												
													
														|  | 
 |  | +                    }
 | 
											
												
													
														|  | 
 |  | +            
 | 
											
												
													
														|  | 
 |  | +            })
 | 
											
												
													
														|  | 
 |  | +            .catch((err) => {
 | 
											
												
													
														|  | 
 |  | +                if(err.returnMsg=="任务不存在!"){
 | 
											
												
													
														|  | 
 |  | +   
 | 
											
												
													
														|  | 
 |  | +                    ElMessage({
 | 
											
												
													
														|  | 
 |  | +                    message: "未求解",
 | 
											
												
													
														|  | 
 |  | +                    type: 'error',
 | 
											
												
													
														|  | 
 |  | +                    });
 | 
											
												
													
														|  | 
 |  | +                    }
 | 
											
												
													
														|  | 
 |  | +            //ElMessage.error(err.returnMsg)
 | 
											
												
													
														|  | 
 |  | +            
 | 
											
												
													
														|  | 
 |  | +            })
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        }else{
 | 
											
												
													
														|  | 
 |  | +         initWebSocket();
 | 
											
												
													
														|  | 
 |  | +         rizhi.value.logs='';
 | 
											
												
													
														|  | 
 |  | +         newlog.value ='';  
 | 
											
												
													
														|  | 
 |  | +        emit('headerclick', sgdata.value);
 | 
											
												
													
														|  | 
 |  | +        emit('childfun');
 | 
											
												
													
														|  | 
 |  | +        emit('moxingclick', true);
 | 
											
												
													
														|  | 
 |  | +        pollute();
 | 
											
												
													
														|  | 
 |  | +         emit('handleSelect', '1');
 | 
											
												
													
														|  | 
 |  | +        fetchFileContent();
 | 
											
												
													
														|  | 
 |  | +        accident2(props.activeIndex)
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    dialog.value.dialogVisible_fire = false;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +  
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +const accident2 = (key,val) => {
 | 
											
												
													
														|  | 
 |  | +    classradio.value=val;
 | 
											
												
													
														|  | 
 |  | +    console.log(key);
 | 
											
												
													
														|  | 
 |  | +    if (key == '1'||key == '2'||key == '3') {
 | 
											
												
													
														|  | 
 |  | +        console.log(classradio.value);
 | 
											
												
													
														|  | 
 |  | +        if (classradio.value== "Fire") {
 | 
											
												
													
														|  | 
 |  | + 
 | 
											
												
													
														|  | 
 |  | +            leftcoll.value.collfire = true;
 | 
											
												
													
														|  | 
 |  | +            leftcoll.value.collwater = false;
 | 
											
												
													
														|  | 
 |  | +            leftcoll.value.Gass = false;
 | 
											
												
													
														|  | 
 |  | +            console.log(leftcoll.value.collfire)
 | 
											
												
													
														|  | 
 |  | +            console.log(1112333)
 | 
											
												
													
														|  | 
 |  | +        } else if (classradio.value== "Water") {
 | 
											
												
													
														|  | 
 |  | +            leftcoll.value.collwater = true;
 | 
											
												
													
														|  | 
 |  | +            leftcoll.value.collfire = false;
 | 
											
												
													
														|  | 
 |  | +            leftcoll.value.Gass = false;
 | 
											
												
													
														|  | 
 |  | +        } else if(classradio.value== "Gass"){
 | 
											
												
													
														|  | 
 |  | +            leftcoll.value.Gass = true;
 | 
											
												
													
														|  | 
 |  | +            leftcoll.value.collfire = false;
 | 
											
												
													
														|  | 
 |  | +            leftcoll.value.collwater = false;
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        rewu();
 | 
											
												
													
														|  | 
 |  | +    } else {
 | 
											
												
													
														|  | 
 |  | +          leftcoll.value.collfire = false;
 | 
											
												
													
														|  | 
 |  | +          leftcoll.value.collwater = false;
 | 
											
												
													
														|  | 
 |  | +          leftcoll.value.Gass = false;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +//事故添加列表
 | 
											
												
													
														|  | 
 |  | +const sgadd = () => {
 | 
											
												
													
														|  | 
 |  | +    const params = {
 | 
											
												
													
														|  | 
 |  | +        transCode: 'D00002',
 | 
											
												
													
														|  | 
 |  | +        source: shiguobj.value.source,
 | 
											
												
													
														|  | 
 |  | +        type: shiguobj.value.type,
 | 
											
												
													
														|  | 
 |  | +        name: formull.value.name,
 | 
											
												
													
														|  | 
 |  | +        stype: classradio.value,
 | 
											
												
													
														|  | 
 |  | +        sid: shiguobj.value.sid,
 | 
											
												
													
														|  | 
 |  | +        aid: aid.value
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    request(params)
 | 
											
												
													
														|  | 
 |  | +        .then((res) => {
 | 
											
												
													
														|  | 
 |  | +            dialog.value.dialogForm = false;
 | 
											
												
													
														|  | 
 |  | +            getdata();
 | 
											
												
													
														|  | 
 |  | +            scoperadio.value = null;
 | 
											
												
													
														|  | 
 |  | +        })
 | 
											
												
													
														|  | 
 |  | +        .catch((err) => {
 | 
											
												
													
														|  | 
 |  | +            ElMessage.error(err.returnMsg)
 | 
											
												
													
														|  | 
 |  | +        })
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +// 事故列表的选择
 | 
											
												
													
														|  | 
 |  | +const getRadioRow = (val) => {
 | 
											
												
													
														|  | 
 |  | +    // currentrow.value=true;
 | 
											
												
													
														|  | 
 |  | +    sgdata.value = (val);
 | 
											
												
													
														|  | 
 |  | +    console.log(tableobj.value)
 | 
											
												
													
														|  | 
 |  | +    formull.value.name = val.name;
 | 
											
												
													
														|  | 
 |  | +    aid.value = val.aid;
 | 
											
												
													
														|  | 
 |  | +    idobj.value.name = val.name;
 | 
											
												
													
														|  | 
 |  | +    idobj.value.time = val.time;
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +function handleCurrentChange2(val) {
 | 
											
												
													
														|  | 
 |  | +       scoperadio.value = null;
 | 
											
												
													
														|  | 
 |  | +    currentPage4.value = val;
 | 
											
												
													
														|  | 
 |  | +    getdata();
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +// 事故添加按钮
 | 
											
												
													
														|  | 
 |  | +const addsg = (val) => {
 | 
											
												
													
														|  | 
 |  | +    if (val == '1') {
 | 
											
												
													
														|  | 
 |  | +        currentrow.value=false;
 | 
											
												
													
														|  | 
 |  | +        shigtext.value = '事故添加';
 | 
											
												
													
														|  | 
 |  | +        aid.value = 0;
 | 
											
												
													
														|  | 
 |  | +        formull.value.name = '';
 | 
											
												
													
														|  | 
 |  | +    } else if (val == '2') {
 | 
											
												
													
														|  | 
 |  | +        shigtext.value = '事故修改';
 | 
											
												
													
														|  | 
 |  | +        formull.value.name = idobj.value.name
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    dialog.value.dialogForm = true;
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +// 事故删除
 | 
											
												
													
														|  | 
 |  | +const sgdelect = () => {
 | 
											
												
													
														|  | 
 |  | +    const params = {
 | 
											
												
													
														|  | 
 |  | +        transCode: 'D000016',
 | 
											
												
													
														|  | 
 |  | +        aid: aid.value,
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    request(params)
 | 
											
												
													
														|  | 
 |  | +        .then((res) => {
 | 
											
												
													
														|  | 
 |  | +            getdata();
 | 
											
												
													
														|  | 
 |  | +            ElMessage({
 | 
											
												
													
														|  | 
 |  | +                message: '删除成功',
 | 
											
												
													
														|  | 
 |  | +                type: 'success',
 | 
											
												
													
														|  | 
 |  | +            })
 | 
											
												
													
														|  | 
 |  | +        })
 | 
											
												
													
														|  | 
 |  | +        .catch((err) => {
 | 
											
												
													
														|  | 
 |  | +            loading.value = false;
 | 
											
												
													
														|  | 
 |  | +            ElMessage.error(err.returnMsg)
 | 
											
												
													
														|  | 
 |  | +        })
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +//事故获取列表
 | 
											
												
													
														|  | 
 |  | +const getdata = () => {
 | 
											
												
													
														|  | 
 |  | +    if(classradio.value== "Fire"){
 | 
											
												
													
														|  | 
 |  | +        placeholder.value='某次某事件火灾事故'
 | 
											
												
													
														|  | 
 |  | +    } else if (classradio.value== "Water") {
 | 
											
												
													
														|  | 
 |  | +        placeholder.value='某次某事件突水事故'
 | 
											
												
													
														|  | 
 |  | +    }else if(classradio.value== "Gass"){
 | 
											
												
													
														|  | 
 |  | +        placeholder.value='某次某事件瓦斯事故'
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    const params = {
 | 
											
												
													
														|  | 
 |  | +        transCode: 'D00003',
 | 
											
												
													
														|  | 
 |  | +        count: pageSize4.value,
 | 
											
												
													
														|  | 
 |  | +        page: currentPage4.value,
 | 
											
												
													
														|  | 
 |  | +        aid: aid.value,
 | 
											
												
													
														|  | 
 |  | +        stype: classradio.value,
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    request(params)
 | 
											
												
													
														|  | 
 |  | +        .then((res) => {
 | 
											
												
													
														|  | 
 |  | +            loading.value = false;
 | 
											
												
													
														|  | 
 |  | +            tableData.value = res.rows;
 | 
											
												
													
														|  | 
 |  | +            total.value = res.total;
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        })
 | 
											
												
													
														|  | 
 |  | +        .catch((err) => {
 | 
											
												
													
														|  | 
 |  | +            loading.value = false;
 | 
											
												
													
														|  | 
 |  | +            ElMessage.error(err.returnMsg)
 | 
											
												
													
														|  | 
 |  | +        })
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +// 污染物的查询
 | 
											
												
													
														|  | 
 |  | +const pollute = () => {
 | 
											
												
													
														|  | 
 |  | +    value.value=[];
 | 
											
												
													
														|  | 
 |  | +    const params = {
 | 
											
												
													
														|  | 
 |  | +        transCode: 'D10013',
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    request(params)
 | 
											
												
													
														|  | 
 |  | +        .then((res) => {
 | 
											
												
													
														|  | 
 |  | +            options.value = res.rows;
 | 
											
												
													
														|  | 
 |  | +           value.value.push(res.rows[0]);
 | 
											
												
													
														|  | 
 |  | +     
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        })
 | 
											
												
													
														|  | 
 |  | +        .catch((err) => {
 | 
											
												
													
														|  | 
 |  | +            ElMessage.error(err.returnMsg)
 | 
											
												
													
														|  | 
 |  | +        })
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +//任务求解任务信息
 | 
											
												
													
														|  | 
 |  | +//state 完成1  失败是-1
 | 
											
												
													
														|  | 
 |  | +const rewu=()=>{
 | 
											
												
													
														|  | 
 |  | +  
 | 
											
												
													
														|  | 
 |  | +     arrvalue.value=[];
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    const params = {
 | 
											
												
													
														|  | 
 |  | +        transCode: 'D10017',
 | 
											
												
													
														|  | 
 |  | +        aid:aid.value,
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    request(params)
 | 
											
												
													
														|  | 
 |  | +        .then((res) => {
 | 
											
												
													
														|  | 
 |  | +            arrvalue.value=res.cocodes.split(',');
 | 
											
												
													
														|  | 
 |  | +            tuiyanobj.value=res;
 | 
											
												
													
														|  | 
 |  | +            tuiyanobj.value.pickertime=res.acctime;
 | 
											
												
													
														|  | 
 |  | +            console.log(tuiyanobj.value.acctime)
 | 
											
												
													
														|  | 
 |  | +            console.log(options.value.length);
 | 
											
												
													
														|  | 
 |  | +            value.value=arrvalue.value;   
 | 
											
												
													
														|  | 
 |  | +            value.value=[];
 | 
											
												
													
														|  | 
 |  | +            for (let i = 0; i <options.value.length; i++){
 | 
											
												
													
														|  | 
 |  | +              for (let j = 0; j < arrvalue.value.length; j++){
 | 
											
												
													
														|  | 
 |  | +            if(options.value[i].code==arrvalue.value[j]){
 | 
											
												
													
														|  | 
 |  | +                value.value.push(options.value[i]);
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +              }
 | 
											
												
													
														|  | 
 |  | +           }
 | 
											
												
													
														|  | 
 |  | +      
 | 
											
												
													
														|  | 
 |  | +        })
 | 
											
												
													
														|  | 
 |  | +        .catch((err) => {
 | 
											
												
													
														|  | 
 |  | +           // ElMessage.error(err.returnMsg)
 | 
											
												
													
														|  | 
 |  | +           addinitial();
 | 
											
												
													
														|  | 
 |  | +        })
 | 
											
												
													
														|  | 
 |  | +      
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +//默认时间
 | 
											
												
													
														|  | 
 |  | +const inititimeDefaultal = () => {
 | 
											
												
													
														|  | 
 |  | +    var date = new Date();
 | 
											
												
													
														|  | 
 |  | +    var timeStamp = Date.parse(date)
 | 
											
												
													
														|  | 
 |  | +    var s1 = timestampToTime(timeStamp);
 | 
											
												
													
														|  | 
 |  | +    return s1;
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +let isActive=ref(0)
 | 
											
												
													
														|  | 
 |  | +const  changeClass= (i)=>  {
 | 
											
												
													
														|  | 
 |  | + isActive.value = i;
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +// 初始数据
 | 
											
												
													
														|  | 
 |  | +const initial = () => {
 | 
											
												
													
														|  | 
 |  | +  
 | 
											
												
													
														|  | 
 |  | +    addinitial();
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +const addinitial=()=>{
 | 
											
												
													
														|  | 
 |  | +    if (classradio.value == "Fire") {
 | 
											
												
													
														|  | 
 |  | +        tuiyanobj2.value.pickertime = inititimeDefaultal();
 | 
											
												
													
														|  | 
 |  | +        tuiyanobj2.value.acctime = inititimeDefaultal();
 | 
											
												
													
														|  | 
 |  | +        tuiyanobj2.value.cocodes = options.value[0].code;
 | 
											
												
													
														|  | 
 |  | +        tuiyanobj2.value.coids=options.value[0].coid;
 | 
											
												
													
														|  | 
 |  | +        tuiyanobj.value = tuiyanobj2.value;
 | 
											
												
													
														|  | 
 |  | +    } else {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +        tuiyanobj3.value.pickertime = inititimeDefaultal();
 | 
											
												
													
														|  | 
 |  | +        tuiyanobj3.value.acctime = inititimeDefaultal();
 | 
											
												
													
														|  | 
 |  | +        tuiyanobj.value = tuiyanobj3.value;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +function zdtimechange() {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +const timeclick = () => {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    var timeStamp = Date.parse(tuiyanobj.value.pickertime)
 | 
											
												
													
														|  | 
 |  | +    tuiyanobj.value.acctime = timestampToTime(timeStamp);
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +//  下拉多选
 | 
											
												
													
														|  | 
 |  | +const selectchange = (val) => {
 | 
											
												
													
														|  | 
 |  | +    console.log(val);
 | 
											
												
													
														|  | 
 |  | +    let arr1 = [];
 | 
											
												
													
														|  | 
 |  | +    let arr2 = [];
 | 
											
												
													
														|  | 
 |  | +    for (let i = 0; i <= val.length - 1; i++) {
 | 
											
												
													
														|  | 
 |  | +        console.log(val[i])
 | 
											
												
													
														|  | 
 |  | +        arr1.push(val[i].coid);
 | 
											
												
													
														|  | 
 |  | +        arr2.push(val[i].code);
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +    tuiyanobj.value.coids = arr1.join(',');
 | 
											
												
													
														|  | 
 |  | +    tuiyanobj.value.cocodes = arr2.join(',');
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +//推演的开始计算
 | 
											
												
													
														|  | 
 |  | +const calculate = () => {
 | 
											
												
													
														|  | 
 |  | +    rizhi.value.logs='';
 | 
											
												
													
														|  | 
 |  | +    newlog.value ='';
 | 
											
												
													
														|  | 
 |  | +    const params = {
 | 
											
												
													
														|  | 
 |  | +        transCode: 'D00008',
 | 
											
												
													
														|  | 
 |  | +        aid: aid.value,
 | 
											
												
													
														|  | 
 |  | +        acctime: tuiyanobj.value.acctime,
 | 
											
												
													
														|  | 
 |  | +        dt: tuiyanobj.value.dt,
 | 
											
												
													
														|  | 
 |  | +        dx: tuiyanobj.value.dx,
 | 
											
												
													
														|  | 
 |  | +        reportstep: tuiyanobj.value.reportstep,
 | 
											
												
													
														|  | 
 |  | +        interactionstep: tuiyanobj.value.interactionstep,
 | 
											
												
													
														|  | 
 |  | +        totaltime: tuiyanobj.value.totaltime,
 | 
											
												
													
														|  | 
 |  | +        coids: tuiyanobj.value.coids,
 | 
											
												
													
														|  | 
 |  | +        cocodes: tuiyanobj.value.cocodes,
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    request(params)
 | 
											
												
													
														|  | 
 |  | +        .then((res) => {
 | 
											
												
													
														|  | 
 |  | +          //  initWebSocket();
 | 
											
												
													
														|  | 
 |  | +        })
 | 
											
												
													
														|  | 
 |  | +        .catch((err) => {
 | 
											
												
													
														|  | 
 |  | +            ElMessage.error(err.returnMsg)
 | 
											
												
													
														|  | 
 |  | +        })
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +const projectsSelectionSelect = () => {
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +// 日志获取
 | 
											
												
													
														|  | 
 |  | +function getthislog(val) {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    if (val.includes("msg=heartCheck")) {
 | 
											
												
													
														|  | 
 |  | +    } else {
 | 
											
												
													
														|  | 
 |  | +        newlog.value = newlog.value + "\n" + val;
 | 
											
												
													
														|  | 
 |  | +        rizhi.value.logs = newlog.value;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +        let textarea = document.getElementById("textarea_id");
 | 
											
												
													
														|  | 
 |  | +        textarea.scrollTop = textarea.scrollHeight;
 | 
											
												
													
														|  | 
 |  | +   
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +// 历史日志
 | 
											
												
													
														|  | 
 |  | +async function fetchFileContent() {
 | 
											
												
													
														|  | 
 |  | +    const params = {
 | 
											
												
													
														|  | 
 |  | +        transCode: "D000015",
 | 
											
												
													
														|  | 
 |  | +        aid: aid.value
 | 
											
												
													
														|  | 
 |  | +    };
 | 
											
												
													
														|  | 
 |  | +    await request(params)
 | 
											
												
													
														|  | 
 |  | +        .then((res) => {
 | 
											
												
													
														|  | 
 |  | +            if (res.returnCode == "000000000") {
 | 
											
												
													
														|  | 
 |  | +                  getthislog(res.logs);
 | 
											
												
													
														|  | 
 |  | +            } else {
 | 
											
												
													
														|  | 
 |  | +                ElMessage({
 | 
											
												
													
														|  | 
 |  | +                    message: res.returnMsg,
 | 
											
												
													
														|  | 
 |  | +                    type: "error",
 | 
											
												
													
														|  | 
 |  | +                });
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +        })
 | 
											
												
													
														|  | 
 |  | +        .catch((err) => { });
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +// 日志
 | 
											
												
													
														|  | 
 |  | +function initWebSocket() {
 | 
											
												
													
														|  | 
 |  | +    //初始化weosocket
 | 
											
												
													
														|  | 
 |  | +    // const wsuri = "ws://192.168.0.43:8087//websocket?projectId="+this.pid; ws://192.168.0.131/diswebsocket?projectId=5
 | 
											
												
													
														|  | 
 |  | +    const wsurl = import.meta.env.VITE_WEBSOCKET_URL + aid.value
 | 
											
												
													
														|  | 
 |  | +    console.log(wsurl);
 | 
											
												
													
														|  | 
 |  | +    websock = new WebSocket(wsurl);
 | 
											
												
													
														|  | 
 |  | +    websock.onopen = websocketonopen;
 | 
											
												
													
														|  | 
 |  | +    websock.onmessage = websocketonmessage;
 | 
											
												
													
														|  | 
 |  | +    websock.onerror = websocketonerror;
 | 
											
												
													
														|  | 
 |  | +    websock.onclose = websocketclose;
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +// Websoket连接成功事件
 | 
											
												
													
														|  | 
 |  | +const websocketonopen = (res) => {
 | 
											
												
													
														|  | 
 |  | + console.log("WebSocket连接成功", res);
 | 
											
												
													
														|  | 
 |  | +    start();
 | 
											
												
													
														|  | 
 |  | +};
 | 
											
												
													
														|  | 
 |  | +// Websoket接收消息事件
 | 
											
												
													
														|  | 
 |  | +const websocketonmessage = (res) => {
 | 
											
												
													
														|  | 
 |  | + //   console.log("数据", res);
 | 
											
												
													
														|  | 
 |  | +    //  console.log(res.data);
 | 
											
												
													
														|  | 
 |  | +    getthislog(res.data);
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    reset();
 | 
											
												
													
														|  | 
 |  | +};
 | 
											
												
													
														|  | 
 |  | +// Websoket连接错误事件
 | 
											
												
													
														|  | 
 |  | +const websocketonerror = (res) => {
 | 
											
												
													
														|  | 
 |  | +    console.log("连接错误", res);
 | 
											
												
													
														|  | 
 |  | +    websock.value.close();
 | 
											
												
													
														|  | 
 |  | +    reconnect();
 | 
											
												
													
														|  | 
 |  | +};
 | 
											
												
													
														|  | 
 |  | +// Websoket断开事件
 | 
											
												
													
														|  | 
 |  | +const websocketclose = (res) => {
 | 
											
												
													
														|  | 
 |  | +    console.log("断开连接", res);
 | 
											
												
													
														|  | 
 |  | +};
 | 
											
												
													
														|  | 
 |  | +// 创建 websocket 的实例
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +// 心跳包
 | 
											
												
													
														|  | 
 |  | +const reconnect = () => {
 | 
											
												
													
														|  | 
 |  | +    if (times.value.lockReconnect) return;
 | 
											
												
													
														|  | 
 |  | +    times.value.lockReconnect = true;
 | 
											
												
													
														|  | 
 |  | +    //没连接上会一直重连,设置延迟避免请求过多
 | 
											
												
													
														|  | 
 |  | +    times.value.timeoutnum && clearTimeout(times.value.timeoutnum);
 | 
											
												
													
														|  | 
 |  | +    times.value.timeoutnum = setTimeout(function () {
 | 
											
												
													
														|  | 
 |  | +        //新连接
 | 
											
												
													
														|  | 
 |  | +        initWebSocket();
 | 
											
												
													
														|  | 
 |  | +        times.value.lockReconnect = false;
 | 
											
												
													
														|  | 
 |  | +    }, 10000);
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +const reset = () => {
 | 
											
												
													
														|  | 
 |  | +    //重置心跳
 | 
											
												
													
														|  | 
 |  | +    clearTimeout(times.value.timeoutObj);
 | 
											
												
													
														|  | 
 |  | +    clearTimeout(times.value.serverTimeoutObj);
 | 
											
												
													
														|  | 
 |  | +    start();
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +const start = () => {
 | 
											
												
													
														|  | 
 |  | +    //开启心跳
 | 
											
												
													
														|  | 
 |  | +    times.value.timeoutObj && clearTimeout(times.value.timeoutObj);
 | 
											
												
													
														|  | 
 |  | +    times.value.serverTimeoutObj && clearTimeout(times.value.serverTimeoutObj);
 | 
											
												
													
														|  | 
 |  | +    times.value.timeoutObj = setTimeout(function () {
 | 
											
												
													
														|  | 
 |  | +        //这里发送一个心跳,后端收到后,返回一个心跳消息
 | 
											
												
													
														|  | 
 |  | +        if (websock.readyState == 1) {
 | 
											
												
													
														|  | 
 |  | +            //如果连接正常
 | 
											
												
													
														|  | 
 |  | +            websock.send("heartCheck");
 | 
											
												
													
														|  | 
 |  | +        } else {
 | 
											
												
													
														|  | 
 |  | +            //否则重连
 | 
											
												
													
														|  | 
 |  | +            console.log(111111)
 | 
											
												
													
														|  | 
 |  | +            reconnect();
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        times.value.serverTimeoutObj = setTimeout(function () {
 | 
											
												
													
														|  | 
 |  | +            // 超时关闭
 | 
											
												
													
														|  | 
 |  | +            websock.close(); //如果onclose会执行reconnect,我们执行ws.close()就行了.如果直接执行reconnect 会触发onclose导致重连两次
 | 
											
												
													
														|  | 
 |  | +        }, times.value.timeout);
 | 
											
												
													
														|  | 
 |  | +    }, times.value.timeout);
 | 
											
												
													
														|  | 
 |  | +}
 | 
											
												
													
														|  | 
 |  | +// 组件被销毁之前,清空 sock 对象
 | 
											
												
													
														|  | 
 |  | +onBeforeUnmount(() => {
 | 
											
												
													
														|  | 
 |  | +    // 关闭连接
 | 
											
												
													
														|  | 
 |  | +    websocketclose;
 | 
											
												
													
														|  | 
 |  | +    // 销毁 websocket 实例对象
 | 
											
												
													
														|  | 
 |  | +    websock.value = null;
 | 
											
												
													
														|  | 
 |  | +    rizhi.logs='';
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +});
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +onMounted(() => {
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +   // dialogVisible.value=true;
 | 
											
												
													
														|  | 
 |  | +});
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +defineExpose({ monitor, accident2, leftcoll, classradio, aid, dialogVisible ,changeModel,classclick});
 | 
											
												
													
														|  | 
 |  | +</script>
 | 
											
												
													
														|  | 
 |  | +
 |