<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>

