<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 zaihaisel">
            <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" style="padding: 0 20px 0 0;">
                    <el-radio label="Fire">火灾</el-radio>
                    <el-radio label="Water">突水</el-radio>
                    <el-radio label="Gass">瓦斯爆炸</el-radio>
                    <el-radio label="Gass1">一维瓦斯爆炸</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="classclick1(classradio1); dialogVisible= false;">
                                确定
                            </el-button></div>
                    </div>
                </div>
            </template>
        </el-dialog>
        <!--火灾 事故列表 -->
        <el-dialog v-model="dialog.dialogVisible_fire" width="700"  @close="handleClose" :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 xian2 shigu">
                <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)" :row-class-name="tableRowClassName"
                    :header-cell-style="{ 'background': 'rgba(0, 10, 0,0)' }" @select="projectsSelectionSelect">
                    <template v-slot:empty>
                        <p>暂无数据</p>
                        </template>
                    <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="70" />
                    <el-table-column prop="name" label="名称" />
                    <!-- <el-table-column prop="name" label="来源" /> -->
                    <el-table-column prop="time" label="时间"  />
                </el-table>
                <div class="demo-pagination-block pagination">
                    <el-config-provider :locale="zhCn">
                    <el-pagination v-model:current-page="currentPage4" v-model:page-size="pageSize4" small background
                        layout="prev, total,pager, next, jumpe, ->, 总共, 条" class="mt-4"
                        @current-change="handleCurrentChange2"  :total="parseInt(total)">
                            <!-- <template #default="total">
                            总共 {{ total }} 条
                            </template> -->
                        </el-pagination> 
                    </el-config-provider>

                </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>
                    <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="13"   :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>
            <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="2.125rem" class="L_aside L_aside1 asideg asidegbg  leftbgimg1">
                <div class="demo-collapse">
                    <el-collapse v-model="coolactiveName" accordion>
                        <el-collapse-item name="1" class="imgneon1">
                            <template #title>
                          <el-icon class="iconimg imgneon Frame3"  fit="contain"></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   collapse-tags
                                                    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.name" :value="item" />
                                                </el-select> 
                                            </el-form-item>
                                        </div>
                                        <ul> <li>
                                                <div class="demo-datetime-picker">
                                                    <!-- <span class="inputtext_1">选择时间</span> -->
                                                    <div class="block">
                                                        <el-config-provider :locale="zhCn">
                                                        <el-date-picker v-model="tuiyanobj.pickertime" type="datetime"
                                                            placeholder="时间选择" format="YYYY-MM-DD HH:mm:ss"
                                                            @change="timeclick()" />
                                                        </el-config-provider>    
                                                    </div>
                                                </div>
                                            </li>
                                            <el-tooltip  class="box-item" effect="dark" content="用户关心的灾情持续总时长"
                                            placement="right">
                                            <li >
                                            
                                                <span class="inputtext_1">模拟时长</span>
                                                <div class="inputkuang"> <el-input v-model="tuiyanobj.totaltime" />
                                                    <span class="righttext">s</span>
                                                </div>
                                           
                                            </li>
                                        </el-tooltip>
                                            <el-tooltip class="box-item" effect="dark" content="演化结果输出频率"
                                            placement="right">
                                            <li>
                                            
                                                <span class="inputtext_1">输出步长</span>
                                                <div class="inputkuang"> <el-input v-model="tuiyanobj.reportstep" />
                                                    <span class="righttext">s</span>
                                                </div>
                                           
                                            </li>
                                        </el-tooltip>
                                            <el-tooltip  class="box-item" effect="dark" content="求解器求解物理时间步长"
                                            placement="right">
                                            <li v-show="iskeynum">  
                                              
                                                <span class="inputtext_1">时间步长</span>  
                                                <div class="inputkuang"> <el-input v-model="tuiyanobj.dt" />
                                                    <span class="righttext">s</span>
                                                </div> 
                                           
                                            </li>
                                        </el-tooltip>
                                          <el-tooltip  class="box-item" effect="dark" content="求解器求解空间推进步长"
                                               placement="right">
                                            <li v-show="iskeynum">
                                              
                                                <span class="inputtext_1">空间步长</span>
                                                <div class="inputkuang"> <el-input v-model="tuiyanobj.dx" />
                                                    <span class="righttext">m</span>
                                                </div>
                                            </li>
                                        </el-tooltip>
                                     
                                            <li v-show="iskeynum" ><span class="inputtext_1">交互步长</span>
                                                <div class="inputkuang"> <el-input disabled
                                                        v-model="tuiyanobj.interactionstep" />
                                                    <span class="righttext">s</span>
                                                </div>
                                            </li>
                                        </ul>
                                        <div @click="showMore" class="txt">{{txt}}</div>
                                    </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 === 3}" @click="changeClass(3)" ><span class="spantext" >停止计算</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-config-provider :locale="zhCn">
                                                        <el-date-picker v-model="tuiyanobj.pickertime" type="datetime"
                                                            placeholder="时间选择" format="YYYY-MM-DD HH:mm:ss"
                                                            value-format="YYYY-MM-DD HH:mm:ss" @change="timeclick()" />
                                                        </el-config-provider>
                                                        </div>
                                                </div>
                                            </li>
                                            <el-tooltip class="box-item" effect="dark" content="用户关心的灾情持续总时长"
                                            placement="right">
                                            <li><span class="inputtext_1">模拟时长</span>
                                                <div class="inputkuang"> <el-input v-model="tuiyanobj.totaltime"  oninput ="value=value.replace(/[^0-9]/g,'')"  />
                                                    <span class="righttext">s</span>
                                                </div>
                                            </li>
                                        </el-tooltip>
                                        <el-tooltip class="box-item" effect="dark" content="演化结果输出频率"
                                            placement="right">
                                            <li><span class="inputtext_1">输出步长</span>
                                                <div class="inputkuang"> <el-input v-model="tuiyanobj.reportstep"   oninput ="value=value.replace(/[^0-9.]/g,'')"  />
                                                    <span class="righttext">s</span>
                                                </div>
                                            </li>
                                        </el-tooltip>
                                            <el-tooltip class="box-item" effect="dark" content="求解器求解物理时间步长"
                                            placement="right">
                                            <li v-show="iskeynum">
                                                <span class="inputtext_1">时间步长</span>  
                                                <div class="inputkuang"> <el-input v-model="tuiyanobj.dt"   oninput ="value=value.replace(/[^0-9]/g,'')"   />
                                                    <span class="righttext">s</span>
                                                </div>
                                         
                                            </li>
                                        </el-tooltip>
                                        <el-tooltip class="box-item" effect="dark" content="求解器求解空间推进步长"
                                            placement="right">
                                            <li v-show="iskeynum"><span class="inputtext_1">空间步长</span>
                                                <div class="inputkuang"> <el-input v-model="tuiyanobj.dx"   oninput ="value=value.replace(/[^0-9]/g,'')"  />
                                                    <span class="righttext">m</span>
                                                </div>
                                            </li>
                                        </el-tooltip>
                                            <li v-show="iskeynum"><span class="inputtext_1">交互步长</span>
                                                <div class="inputkuang"> <el-input disabled
                                                        v-model="tuiyanobj.interactionstep"    oninput ="value=value.replace(/[^0-9.]/g,'')"   />
                                                    <span class="righttext">s</span>
                                                </div>
                                            </li>
                                        </ul>
                                        <div @click="showMore" class="txt">{{txt}}</div>
                                    </div>
                                    <!-- //@click="changeClass(1)"  @click="initial();"  @click="calculate();"-->
                                    <div class="asdis_btn">
                                        <div class="btn" :class="{chuactive: isActive === 1}" @click="changeClass(1)" ><span class="spantext" >初始数据</span></div>
                                        <div class="btn" :class="{chuactive: isActive === 3}" @click="changeClass(3)" ><span class="spantext" >停止计算</span></div>
                                        <div class="btn" :class="{chuactive: isActive === 2}" @click="changeClass(2)" ><span class="spantext" >开始计算</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="2.125rem" 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>
                                                <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,ElConfigProvider} from 'element-plus'
import zhCn from 'element-plus/es/locale/lang/zh-cn'
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";
import emitter from "@/utils/emitter";
import { useRoute } from 'vue-router';
const route = useRoute();
const changeModel= ()=>  {
  vtkmodel.clearJgAddMode();
  vtkmodel.renderWindow.render();
}
let txt=ref('更多设置');
let iskeynum=ref(false);
let currentrow=ref(false);
let placeholder=ref('某次某事件火灾事故');
let emit = defineEmits(['headerclick', 'childfun', 'imgonclock','moxingclick','handleSelect','leftsimulation','resulysucss','websockfrist','funcfirst','showfun'])
const props = defineProps({
    addselect: {
        type: Function,
        required: true,

    },
    headerobj: {
        type: Object,
    },
    valzaiqing:{
        type:String
    },
    classradio: {
    type: String,
    // default: '',activeIndex
  },
  activeIndex: {
    type: String,
    // default: '',activeIndex
  }, activeIndeximg: {
    type: String,
    // default: '',activeIndex
  },

});
let startlog=ref('0');
let shigtext = ref('');
let websock = 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 state=ref();
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,
});
let stype=ref("");
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: ['CO2','CH4'],
    pickertime: '',
    acctime: '2024-03-06 00:00:00',
    dt: '0.1',
    dx: '10',
    reportstep: '60',
    interactionstep: '3600',
    totaltime: '3600',
    coids: "15,2",
    cocodes: "CH4,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 tuiyanobj4 = ref({
    value: ['CO2','CH4'],
    pickertime: '',
    acctime: '2024-03-06 00:00:00',
    dt: '1',
    dx: '20',
    reportstep: '60',
    interactionstep: '60',
    totaltime: '1',
    coids: "15,2",
     cocodes: "CH4,CO2"

})
let tuiyanobj5 = ref({
    value: ['CO2','CH4'],
    pickertime: '',
    acctime: '2024-03-06 00:00:00',
    dt: '0.2',
    dx: '10',
    reportstep: '60',
    interactionstep: '3600',
    totaltime: '3600',
    coids: "15,2",
     cocodes: "CH4,CO2"

})
let tableobj = ref({});
let coolactiveName = ref(["1", "2"]);
let newlog = ref("");
let rizhi = ref({
    top: "50px",
    logs: '',
    wlogs:'',
    flogs:'',
    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 showMore= ()=>{
    // iskeynum.value=true;
    // txt.value="收起"
    iskeynum.value=!iskeynum.value;
    txt.value=iskeynum.value?'收起':'更多设置'
 
}
const handleCurrentChange = ({ row, rowIndex }) => {
}
// aid获取
const classclick1 = (val) => {
    classradio1.value= val;
    stype.value=val;
    console.log( classradio1.value);
    scoperadio.value="";
    currentPage4.value=1;
    dialog.value.dialogVisible_fire = true;
    props.addselect();
    getdata();
}
// 类型选择
const classclick = (val) => {
    classradio.value= val;
    stype.value=val;
    console.log(classradio.value);
    scoperadio.value="";
    currentPage4.value=1;
    dialog.value.dialogVisible_fire = true;
    props.addselect();
    getdata();
}
// 
const handleClose = () => {
    emit('imgonclock');
}
// 事故确定列表
const accident = () => {
    if (idobj.value.name == '') {
        ElMessage.error('请选择事故项目')
    } else {
     // router.push({ path: "/appmian" });
        if(props.valzaiqing=='模拟数据'){
        const params = {
            transCode: 'D10017',
            aid:aid.value,
        }
        request(params)
            .then((res) => {
                if(res.state=='1'){
                    emit("leftsimulation",res,sgdata.value);
                    let step= Number(res.totaltime)/Number(res.reportstep);
                    emitter.emit('step',step);
                }
                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{
        // setTimeout(function(){
          
         initWebSocket();
        rizhi.value.logs='';
        rizhi.value.flogs= rizhi.value.logs;
        rizhi.value.wlogs= rizhi.value.logs;
        newlog.value =''; 
           // console.log(sgdata.value);
        emit('headerclick', sgdata.value);
        emit('childfun');
       
        emit('moxingclick', true);
        pollute();
        //  emit('handleSelect', '1');
        fetchFileContent();
        console.log(props.activeIndex);
       // accident2(props.activeIndex)
        rewu();
        // if(state.value=="1"){
        //      emit('websockfrist');
        //     }
    // },100)
    }
    dialog.value.dialogVisible_fire = false;
    
    emit('imgonclock');
    }
  

}
const accident2 = (key) => {
   console.log(key);
    if (key == '1'||key == '2'||key == '3'||key == '5') {
        if (classradio.value== "Fire") {
            leftcoll.value.collfire = true;
            leftcoll.value.collwater = false;
            //  leftcoll.value.Gass = false;
        } 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 = true;
            leftcoll.value.collwater = false;
        }else if(classradio.value== "Gass1"){
            // leftcoll.value.Gass = true;
            leftcoll.value.collfire = true;
            leftcoll.value.collwater = false;
        }
    } 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;
    console.log(val);
    sgdata.value = (val);
    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(stype.value== "Fire"){
        placeholder.value='某次某事件火灾事故'
    } else if (stype.value== "Water") {
        placeholder.value='某次某事件突水事故'
    }else if(stype.value== "Gass"){
        placeholder.value='某次某事件瓦斯事故'
    }else if(stype.value== "Gass1"){
        placeholder.value='某次某事件一维瓦斯事故'
    }
    const params = {
        transCode: 'D00003',
        count: pageSize4.value,
        page: currentPage4.value,
        aid: aid.value,
        stype: stype.value,
    }
    request(params)
        .then((res) => {
            loading.value = false;
            tableData.value=res.rows.map(item=>{
             if(item.hasOwnProperty('time')){
                return{
                    ...item,
                    time:item.time.replace(/[+].*/, '')
                }
             }else{
                return{
                    ...item,
                }
            }
        })
            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) => {
            state.value=res.state;
            emit('resulysucss',res.state);
            if(state.value=="1"){
                //emit('websockfrist');
                if(res.hasOwnProperty("cocodes")){
                    arrvalue.value=res.cocodes.split(',');
                }
                emit('websockfrist');
                sessionStorage.setItem("acctime",res.acctime);
                }else{
                    if(res.hasOwnProperty("cocodes")){
                    arrvalue.value=res.cocodes.split(',');
                }
                }
            
           
            tuiyanobj.value=res;
            sessionStorage.setItem("state",state.value);
            //fun3D();
            tuiyanobj.value.pickertime=res.acctime;
            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]);
            }
              }
           }
         //  state.value=ref(null)
          //
        })
        .catch((err) => {
           // ElMessage.error(err.returnMsg)
           //state.value='0';
           sessionStorage.setItem("state",'0');
           emit('resulysucss');
           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;
 if( i=='1'){
    initial();
 }else if(i=='2'){
    calculate()
 }else if(i=='3'){
    stopcompute()
 }
}
// 停止计算
const stopcompute= ()=>{
    const params = {
        transCode: "D30004",
        aid: aid.value
    };
 request(params)
        .then((res) => {
                ElMessage({
                    message: "已停止计算",
                    type: "error",
                });
        })
        .catch((err) => { });

}
// 初始数据
const initial = () => {
  
    addinitial();

}
const addinitial=()=>{
    console.log(classradio.value);
    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 }
        console.log( tuiyanobj.value)
        arrvalue.value=tuiyanobj.value.cocodes.split(',');
        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]);
            }
              }
           }
    } else if(classradio.value == "Water"){
        tuiyanobj3.value.pickertime = inititimeDefaultal();
        tuiyanobj.value ={ ...tuiyanobj3.value };
    }
      else if(classradio.value == "Gass"){
        tuiyanobj4.value.pickertime = inititimeDefaultal();
        tuiyanobj4.value.acctime = inititimeDefaultal();
        tuiyanobj.value ={ ...tuiyanobj4.value }
        arrvalue.value=tuiyanobj.value.cocodes.split(',');
        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]);
            }
              }
           }
    
    }else if(classradio.value == "Gass1"){
        tuiyanobj5.value.pickertime = inititimeDefaultal();
        tuiyanobj5.value.acctime = inititimeDefaultal();
        tuiyanobj5.value.cocodes = options.value[0].code;
        tuiyanobj5.value.coids=options.value[0].coid;
        tuiyanobj.value ={ ...tuiyanobj5.value }
        console.log( tuiyanobj.value);
        arrvalue.value=tuiyanobj.value.cocodes.split(',');
        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]);
            }
              }
           }
    }
    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) => {
    let arr1 = [];
    let arr2 = [];
    for (let i = 0; i <= val.length - 1; i++) {
        arr1.push(val[i].coid);
        arr2.push(val[i].code);
    }
    tuiyanobj.value.coids = arr1.join(',');
    tuiyanobj.value.cocodes = arr2.join(',');
}
//推演的开始计算
const calculate = () => {
    vtkmodel.clearJgAddMode();
     vtkmodel.renderWindow.render();
    rizhi.value.logs='';
    rizhi.value.flogs= rizhi.value.logs;
    rizhi.value.wlogs= rizhi.value.logs;
    emit('funcfirst');
    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
    if(websock!=null){
        websock.close();
        websock=null;
    }
    const wsurl = import.meta.env.VITE_WEBSOCKET_URL + aid.value
    console.log("initWebSocket",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) => {
    getthislog(res.data);
    if(res.data=="求解——————————————————成功"){  
       // rewu()
     emit('websockfrist');
    }
 reset();
};
// Websoket连接错误事件
const websocketonerror = (res) => {
    console.log("连接错误", res);
    initWebSocket();
  
};
// 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 {
            //否则重连
            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='';

});
//查询
const getmoun=()=>{
       emit('showfun');
    const params = {
        transCode: 'D00003',
        count: pageSize4.value,
        page: currentPage4.value,
        aid: aid.value,
        stype: '',
    }
    request(params)
        .then((res) => {
        
            sgdata.value=res.rows[0];
            console.log( sgdata.value);
        aid.value=sgdata.value.aid;
         classradio.value=sgdata.value.stype;
        classclick(classradio.value);
        idobj.value.name=sgdata.value.name;
           console.log( idobj.value.name); 
           accident();
            if( sgdata.value.stype=="Water"){
                emitter.emit('handleSelect4', '1');
            }else if( sgdata.value.stype=="Fire"){
                emitter.emit('handleSelect4', '2');
            }else if( sgdata.value.stype=="Gass"){
                emitter.emit('handleSelect4', '3');
            }else if( sgdata.value.stype=="4"){
                emitter.emit('handleSelect4', '4');
            }else if( sgdata.value.stype=="Gass1"){
                emitter.emit('handleSelect4', '5');
            }else{

            }
            
           
        })
}
onMounted(() => {
    //const paramValue =window.location.href;//.paramNamehttp://localhost:5173/#/
    const paramValue =window.location.href;
   // const paramValue ='http://localhost:5173/#/aid=7';
    const parts = paramValue.split('=');
    console.log(parts);
    aid.value=parts[1];
    if( aid.value==null||aid.value==''){
        
    }else{
        getmoun();
                  
    // emitter.on('accident',(data)=>{
    //     getmoun();
   
    // });
    }
  


        




});
const change2=(val)=>{
    formull.value.name.forceUpdate();
}
onUnmounted(() =>{

emitter.off('accident')
})
defineExpose({ monitor, accident2, leftcoll, classradio, aid, dialogVisible ,changeModel,classclick,state,dialog});
</script>
<style scoped>

.xian2{
    margin: 0.1321rem !important;
}
</style>
<style>
  @import '../../src/style/style.css';
 .scoperadio .el-radio__label {
    display: none !important;
}
.tooltip-base-box {
  width: 600px;
}
.tooltip-base-box .row {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.tooltip-base-box .center {
  justify-content: center;
}
.tooltip-base-box .box-item {
  width: 110px;
  margin-top: 10px;
}
</style>
