{% extends "layout.html" %}

{% block content %}
<style>
    .module_details_item:last-child .module_details_head{
        border-bottom:none;
    }
    .warning_scan_body .module_num{
        display: inline-block;
        margin-left: 20px;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        margin-right: 20px;
    }
    .warning_scan_body li:first-child .module_head{
        border-top: none;
    }
    .warning_scan_body .module_num span {
        color: red;
    }
    .btn_num{
        font-weight: bold;
        margin-left: 5px;
        padding: 1px 5px;
        text-align: center;
        border-radius: 3px;
        color:#fff;
        background: red;
    }
    .module_details_block .line_content {
        width: 245px;
    }
    .cmsList ol{
        padding: 20px;
    }
    .cmsList ol li{
        width: 140px;
        display: inline-block;
        text-align: center;
    }
    .cms {
        font-size:15px;
        padding: 60px 100px 0 100px;
        line-height: 30px;
    }
    .cms ol li {
        width: 255px;
        float: left;
    }
    .warning_scan_head .warning_scan_ps1{
        line-height:30px;
        display:inline-block;
        text-align: left;
        vertical-align: middle;
        margin-left: 16px;
    }
    .warning_scan_head .buy{
        position: absolute;
        top: 45px;
        width:101px;
        font-size: 13px;
    }
    .warning_scan_head .buy .wechatEnterpriseService{
        vertical-align: middle;
        width:21px;
        float:left;
        margin-top: 3px;
    }
    .warning_scan_head .buy .service_buy2{
        width:80px;
        font-size: 15px;
    }
    .scanNone .buy{
        position: absolute;
        top: 160px;
        width:101px;
        font-size: 13px;
        right: 85px;
    }
    .warning_scan_body .safe_state{
			border: 1px solid #e8e8e8;
        height: 490px;
        display: flex;
				flex-direction: column;
				justify-content: center;
				align-items: center;
        font-size: 20px;
				position: relative;
    }
    .warning_scan_head .warning_cancel_scan{
				position: relative;
        float: right;
        top: 10px;
        width: 100px;
        height: 38px;
        font-size: 14px;
        line-height: 24px;
        border-radius: 4px;
        color: #20a53a;
        background: #fff;
        border: 1px solid #20a53a;
    }
    .warning_scan_head .warning_cancel_scan:hover,.warning_scan_head .warn_close_scan:hover{
        color: #fff;
        background: #20a53a;
    }
    .warning_scan_head .warn_close_scan{
        display: none;
        position: relative;
        float: right;
        top: 10px;
        right: 60px;
        width: 100px;
        height: 38px;
        line-height: 24px;
        border-radius: 4px;
        color: #20a53a;
        background: #fff;
        border: 1px solid #20a53a;
        font-size: 14px;
        text-align: center;
    }
    .warning_scan_head .safaty_load{
        display: none;
        position: absolute;
        width: 60px;
        height: 60px;
        border-radius: 50%;
        border-top: 3px solid transparent;
        border-right: 3px solid rgba(32, 165, 58, 100);
        border-bottom: 3px solid rgba(32, 165, 58, 100);
        border-left: 3px solid rgba(32, 165, 58, 100);
        -webkit-animation: load8 1.1s infinite linear;
        animation: load8 1.1s infinite linear;
    }
    @-webkit-keyframes load8 {
        0% {
            -webkit-transform: rotate(0deg);
            transform: rotate(0deg);
        }
        100% {
            -webkit-transform: rotate(360deg);
            transform: rotate(360deg);
        }
    }
    @keyframes load8 {
        0% {
            -webkit-transform: rotate(0deg);
            transform: rotate(0deg);
        }
        100% {
            -webkit-transform: rotate(360deg);
            transform: rotate(360deg);
        }
    }
    .module_details_body .line_title{
        display: inline-block;
    }
    .module_title{
        width: 200px;
        display: inline-block;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }
    .module_num{
        width: 120px;
        display: inline-block;
    }
    .module_type{
        display: inline-block;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        max-width: 220px;
    }
    .warning_scan_head .halving_line {
        margin: 0 auto;
        width: 685px;
        border-bottom: 1px solid rgba(241, 241, 241, 100);
    }
    .warning_scan_body .module_head {
        height: 45px;
        line-height: 45px;
        overflow: hidden;
    }
    .module_details_list.active{
        overflow:hidden;
        height: auto;
        margin: 13px 5px 20px 10px;
        transition: margin 500ms;
    }
    .module_details_title>span {
        color: #a9a9a9;
        max-width: 360px;
    }
    .warning_scan_view{
        padding: 0;
    }
    .warning_scan_head{
        padding: 0;
    }
    .warning_scan_head .scanNone{
        padding: 50px 16px 20px 38px;
    }
    .warning_scan_head .scanNone.active{
        padding: 25px 16px 13px 38px;
        transition: padding 500ms;
    }
    .warning_scan_head img{
        width: 85px;
        height: 85px;
    }
    .warning_scan_head .warning_scan_describe{
        display: inline-block;
        color: rgba(68, 68, 68, 100);
        line-height: 26px;
        text-align: left;
        vertical-align: middle;
        margin-left: 16px;
    }
    .warning_scan_describe .warning_scan_title{
        font-size: 18px;
    }
    .warning_scan_describe .warning_scan_title i{
        font-style: inherit;
        color: #f0ad4e;
    }
    .warning_scan_describe .warn_scan_subtitle{
        font-size: 13px;
        margin-top: 7px;
    }
    .scanNone .warn_look,
    .scanNone .warn_again_scan{
				position: relative;
        float: right;
        top: 10px;
        width: 80px;
        height: 35px;
        line-height: 24px;
        border-radius: 4px;
        background-color: rgba(32, 165, 58, 100);
        color: rgba(255, 255, 255, 100);
        font-size: 13px;
        text-align: center;
        border: none;
    }
    .scanNone .warn_look{
        border: 1px solid #20a53a;
        color: #20a53a;
        background-color: #fff;
    }
    .scanNone .warn_look:hover{
        color: #20a53a;
        background: #20a53a1f;
    }
    .warning_scan_head .warn_repair_scan{
				position: relative;
        float: right;
        top: 10px;
        width: 80px;
        height: 35px;
        line-height: 24px;
        border-radius: 4px;
        background-color: rgba(32, 165, 58, 100);
        color: rgba(255, 255, 255, 100);
        font-size: 13px;
        text-align: center;
        border: none;
    }
		.warning_scan_head .warn_look_scan{
    position: relative;
    float: right;
    top: 10px;
    width: 80px;
    height: 35px;
    line-height: 24px;
    border-radius: 4px;
    background-color: rgba(32, 165, 58, 100);
    color: rgba(255, 255, 255, 100);
    font-size: 13px;
    text-align: center;
    border: none;
}
    .warning_scan_head .topBtn{
        background-color: rgba(32, 165, 58, 100);
color: rgba(255, 255, 255, 100);
}
    .warning_scan_head .topBtn:hover{
        background-color: #1d9534;
        color: rgba(255, 255, 255, 100);
}
    #wechat-customer span{
        width: auto;
    }
    .alarmTip{
        width: 40px;
        height: 26px;
        padding: 5px;
        display: flex;
        align-items: center;
        justify-content: center;
        margin-right: 10px;
        border-radius: 4px;
        margin-left: 10px;
    }
    .module_details_head:before{
        display: none;
    }
    .module_item .module_head{
        background: #fff;
    }
    .module_item .module_head:hover{
        background: #f5f7fa;
    }
    .warning_scan_view .module_details_item:hover .module_details_head {
      background: #f5f7fa;
    }

        .warning_scan_view .module_details_item:hover .module_details_body {
            background: #f5f7fa;
        }
        .warning_scan_head .scanNone {
padding: 25px 16px 20px 38px;
				}
		.warning_scan_body .safe_state .safe_title{
        position: absolute;
				top: 289px;
				left: 179px;
    }
    .warning_scan_body {
        position: relative;
        overflow: auto;
        max-height: 490px;
        margin: 18px 35px 0 35px
    }
    .warning_scan_body .webedit-con{
        height: 350px;
        margin-top: 40px;
        overflow: hidden;
    }
    .webedit-con .thumbnail-box{
        border-radius: 5px;
        border: 1px solid rgba(241, 241, 241, 100);
        text-align: center;
        cursor: pointer;
        position: relative;
        display: inline-block;
        background: none;
    }
    .webedit-con .thumbnail-introduce{
        display: inline-block;
        margin-left: 36px;
        margin-top: 30px;
        text-align: left;
        font-size: 16px;
        color: rgba(85, 85, 85, 100);
    }
    .webedit-con .thumbnail-introduce ul{
        font-size: 13px;
        margin-top: 11px;
    }
    .webedit-con .thumbnail-introduce ul span{
        color: rgba(102, 102, 102, 100);
        font-size: 12px;
    }
    .help_info_text{
        margin-left: 36px;
        position: absolute;
        bottom: 20px;
        color: rgba(85, 85, 85, 100);
        list-style: none;
        font-size: 12px;
    }

    .webedit-con .warning_scan_head .scanNone {
        padding: 50px 16px 20px 16px;
    }
    .webedit-con .warning_scan_head .scanNone.active{
        padding: 0 16px 20px 16px;
        transition: padding 500ms;
    }
    .webedit-con .warning_scan_head .halving_line1{
        margin: 0 20px;
        border-bottom: 1px solid rgba(241, 241, 241, 100);
    }
    .webedit-con .warning_scan_body{
        margin: 33px 20px 0 20px;
    }
    .webedit-con .warning_scan_body .warning_scan_body_title{
        color: rgba(85, 85, 85, 100);
        font-size: 18px;
    }
    .webedit-con .warning_scan_body .warning_scan_body_con{
        margin-top: 30px;
        font-size: 14px;
    }
    .webedit-con .warning_scan_body .warning_scan_body_con div{
        display: inline-block;
        width: 130px;
        height: 100px;
        text-align: center;
    }
    .webedit-con .warning_scan_body .warning_scan_body_con span{
        display: block;
    }
    .webedit-con .warning_scan_body .warning_scan_body_con img{
        width: 60px;
        opacity: 0.5;
    }
    .webedit-con .warning_scan_body .module_title img{
        width: 25px;
        opacity: 0.7;
    }
    .webedit-con .warning_scan_body .module_item{
        height: 55px;
        font-size: 13px;
        margin-top: 7px;
        background-color: rgba(252, 252, 252, 100);
    }
    .webedit-con .warning_scan_body .module_head{
        height: 55px;
        line-height: 55px;
    }
    .webedit-con .warning_scan_body .module_head .module_title{
        font-size: 13px;
    }
    .webedit-con .warning_scan_body .module_head .module_cut_show{
        height: 55px;
        line-height: 55px;
    }
    .webedit-con .warning_scan_head .safaty_load{
        display: none;
        position: absolute;
        width: 65px;
        height: 65px;
        border-radius: 50%;
        border-top: 3px solid transparent;
        border-right: 3px solid rgba(32, 165, 58, 100);
        border-bottom: 3px solid rgba(32, 165, 58, 100);
        border-left: 3px solid rgba(32, 165, 58, 100);
        -webkit-animation: load8 1.1s infinite linear;
        animation: load8 1.1s infinite linear;
    }
    .webedit-con .module_num .scan_load{
        display: none;
        width: 14px;
        height: 14px;
        border-radius: 50%;
        border-top: 1px solid transparent;
        border-right: 1px solid rgba(32, 165, 58, 100);
        border-bottom: 1px solid rgba(32, 165, 58, 100);
        border-left: 1px solid rgba(32, 165, 58, 100);
        -webkit-animation: load8 1.3s infinite linear;
        animation: load8 1.3s infinite linear;
    }
		/* php分类选择器宽度 */
		.site_class_type.bt_select_updown {
			width: 130px;
		}
    /* 流量统计样式 */
    .site_traffic--typeBox{
        position: absolute;
        background: #fff;
        z-index: 99;
        box-shadow: 0 1px 5px rgba(0, 0, 0, .5)
    }
    .site_traffic--typeBox li {
        line-height: 28px;
        height: 28px;
        padding: 0 8px;
    }
    .site_traffic--typeBox li:hover{
        background: #20a53a;
        color: #fff;
    }
    .site_traffic--typeBox li.active {
        background: #20a53a;
        color: #fff;
    }
    .site_traffic--typeBox::before{
        content: '';
        position: absolute;
        top: -8px;
        right: 22px;
        border-top: 4px transparent dashed;
        border-left: 4px transparent dashed;
        border-right: 4px transparent dashed;
        border-bottom: 4px #fff solid;
    }

    /* 流量统计样式 end */
		/* 下拉按钮样式 */
    .btn-default.active, .btn-default:active, .open>.dropdown-toggle.btn-default{
        outline: none;
        box-shadow: none;
        color: #1D9534;
        background-color: #F1F9F3;
        border-color: #BCE4C4;
    }
    .open>.dropdown-toggle.btn-default:hover{
        color: #1D9534;
        background-color: #F1F9F3;
        border-color: #BCE4C4;
    }
    .dropdown-menu>li>a:hover{
        color: #1D9534;
        background: #F5F7FA;
    }
    .open>.base-btn:hover{
        border-color: #1D9534;
    }
    #confirm{
        box-shadow:  0 0 0 0;
    }
    .open>.dropdown-menu{
        padding: 5px 0 5px 0;
    }
    .open>.dropdown-menu li{
        cursor: pointer;
    }
    .demo_hr_div {
        border-top: #ccc 1px dashed;
        padding-top: 10px;
        margin-top: 10px;
        display: flex;
        width: 100%;
        justify-content: center;
    }
    .form-check-lable{
        cursor: pointer;
    }
    .other_disposition{
        display: inline-flex !important;
			align-items:center;
        text-align: center;
        margin-bottom: 10px;
		}
    .select-icon{
        display: inline-block;
        height: 12px;
        width: 12px;
        cursor: pointer;
        margin-left: 4px;
        background-repeat: no-repeat;
        background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIuMDAwMDAwIiBoZWlnaHQ9IjEyLjAwMDAwMCIgdmlld0JveD0iMCAwIDEyIDEyIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KCTxkZXNjPgoJCQlDcmVhdGVkIHdpdGggUGl4c28uCgk8L2Rlc2M+Cgk8ZGVmcy8+Cgk8cGF0aCBpZD0icGF0aCIgZD0iTTEuMTIzMjggMy44MDkzOUw1LjcxNTU4IDguODQzODdDNS44Nzg2MiA5LjAyMzAxIDYuMTY4NDcgOS4wNDQzMSA2LjMzMDM4IDguODYzODlMMTAuODc5MyAzLjc4MzA4QzExLjA0MTIgMy42MDI2NiAxMS4wNCAzLjMxMjAxIDEwLjg3NyAzLjEzMjgxQzEwLjc5NjIgMy4wNDQ2OCAxMC42ODk0IDMgMTAuNTgzOCAzQzEwLjQ3NyAzIDEwLjM2OTQgMy4wNDU5NiAxMC4yODgzIDMuMTM2Nkw2LjAyODgzIDcuODkyODJMMS43MDg2NCAzLjE1NjYyQzEuNjI3ODcgMy4wNjg0OCAxLjUyMjIgMy4wMjM4IDEuNDE1MzkgMy4wMjM4QzEuMzA3NDYgMy4wMjM4IDEuMjAxMDMgMy4wNjk3NiAxLjExOTg4IDMuMTYwNEMwLjk1ODM1MyAzLjMzODMyIDAuOTYwNjE4IDMuNjMwMjUgMS4xMjMyOCAzLjgwOTM5WiIgZmlsbC1ydWxlPSJub256ZXJvIiBmaWxsPSIjMjBBNTNBIi8+Cjwvc3ZnPgo=);
		}
    .select-icon-roate{
        display: inline-block;
        height: 12px;
        cursor: pointer;
        width: 12px;
        margin-left: 4px;
        background-repeat: no-repeat;
        transform: rotate(180deg);
        background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIuMDAwMDAwIiBoZWlnaHQ9IjEyLjAwMDAwMCIgdmlld0JveD0iMCAwIDEyIDEyIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KCTxkZXNjPgoJCQlDcmVhdGVkIHdpdGggUGl4c28uCgk8L2Rlc2M+Cgk8ZGVmcy8+Cgk8cGF0aCBpZD0icGF0aCIgZD0iTTEuMTIzMjggMy44MDkzOUw1LjcxNTU4IDguODQzODdDNS44Nzg2MiA5LjAyMzAxIDYuMTY4NDcgOS4wNDQzMSA2LjMzMDM4IDguODYzODlMMTAuODc5MyAzLjc4MzA4QzExLjA0MTIgMy42MDI2NiAxMS4wNCAzLjMxMjAxIDEwLjg3NyAzLjEzMjgxQzEwLjc5NjIgMy4wNDQ2OCAxMC42ODk0IDMgMTAuNTgzOCAzQzEwLjQ3NyAzIDEwLjM2OTQgMy4wNDU5NiAxMC4yODgzIDMuMTM2Nkw2LjAyODgzIDcuODkyODJMMS43MDg2NCAzLjE1NjYyQzEuNjI3ODcgMy4wNjg0OCAxLjUyMjIgMy4wMjM4IDEuNDE1MzkgMy4wMjM4QzEuMzA3NDYgMy4wMjM4IDEuMjAxMDMgMy4wNjk3NiAxLjExOTg4IDMuMTYwNEMwLjk1ODM1MyAzLjMzODMyIDAuOTYwNjE4IDMuNjMwMjUgMS4xMjMyOCAzLjgwOTM5WiIgZmlsbC1ydWxlPSJub256ZXJvIiBmaWxsPSIjMjBBNTNBIi8+Cjwvc3ZnPgo=);
		}
    .box_title{
        cursor: pointer;
		}
    .dropdown-menu>li>a{
        font-size: 12px;
        height: 28px;
        display: flex;
        flex-direction: row;
        align-items: center;
        color: #666666;
    }
    /* 下拉按钮样式end */
		/* 高级设置样式 */
		.advance_manu{
			width:130px;
			flex-direction: column;
			align-items:center; 
			position:absolute;
			top:30px;
			left:-71px;
			z-index:9999;
			background-color:white;
			border:1px solid #DCDFD6;
			border-radius: 4px;
			padding: 5px 0;
			box-sizing:content-box;
			color: #666;
			display: none;
			box-shadow: 0px 3px 16px rgba(153, 153, 153, 0.42);
		}
		.advance_manu .adv-option:hover{
			color: #20A53A;
    	background-color: #F5F7FA;
		}
		.adv-tips{
			position:absolute;
			bottom:38px;
			left:-71px;
			padding: 10px;
			background-color:white;
			border:1px solid #DCDFD6;
			border-radius: 2px;
			color: #F0AD4E;
			background-color: #FDF6EC;
		}
		.adv-tips:hover{
			color: #666;
		}
    /* 高级设置样式 end */
    #bt_site_table .site_path {
        max-width: 240px;
        text-overflow: ellipsis;
        white-space: nowrap;
        overflow: hidden;
        display: block;
    }
</style>
<!--suppress SpellCheckingInspection, CheckEmptyScriptTag -->
<div class="main-content pb55">
    <div class="container-fluid">
    <div class="pos-box bgw mtb15 flex justify-between">
        <div class="tab-list flex" id="cutMode">
            <div class="tabs-item" data-type="php">PHP项目</div>
            <div class="tabs-item" data-type="java">Java项目</div>
            <div class="tabs-item" data-type="nodejs">Node项目</div>
            <div class="tabs-item" data-type="go">Go项目</div>
            <div class="tabs-item" data-type="python">Python项目</div>
            <div class="tabs-item" data-type="other">其他项目</div>
        </div>
    </div>
    <div class="site_table_view bgw mtb15 pd15 tab-view-box">
            <div class="tab-con" style="padding: 0;overflow: inherit;">
                <div class="tab-con-block">
                    <div id="bt_site_table"></div>
                </div>
                <div class="tab-con-block">
                    <div id="bt_java_table" class="bt_table" v-cloak>
                        <div class="tootls_group tootls_top">
														<div class="pull-left" style="display: flex">
															<bt-button type="success" class="mr5" title="添加Java项目" @click="add_java_project"></bt-button>
															<bt-button-select title="JAVA环境管理" @click="jdk_manage_view" @jdk_manage_view="jdk_manage_view" @tomcat_manage_view="tomcat_manage_view">
															</bt-button-select>
															<bt-link class="mlr15" title="Java项目教程" href="https://www.bt.cn/bbs/thread-76217-1-1.html" target="_blank"></bt-link>
                                                            <span class="bt-desired ml10" style="background-size: 16px 16px;background-position-y: center;"><a href="javascript:;" class="btlink ml5 npsFeedback" onclick="bt_tools.nps({name:'网站',type:14})">需求反馈</a></span>
													 </div>
                            <div class="pull-right">
                                <div class="bt_search">
                                    <input type="text" class="search_input" v-model="serachValue" placeholder="请输入项目名称或备注"
                                           @keyup.enter="search_project_info"/>
                                    <span class="glyphicon glyphicon-search" @click="search_project_info"></span>
                                </div>
                            </div>
                        </div>

                        <bt-table :data="projectList"
                                  data-key="id"
                                  min-width="1000px"
                                  class="mt10"
                                  ref="java_table"
                                  :batch="true"
                                  :batch-list="[{title:'开启项目',value:'multi_open_project'},{title:'停用项目',value:'multi_close_project'},{title:'绑定外网',value:'multi_check_bind_extranet'},{title:'部署证书',value:'multi_setup_ssl'},{title:'删除项目',value:'multi_remove_project'}]"
                                  :page="pageInfo.page"
                                  :page-limit="pageInfo.limit"
                                  :page-total="pageInfo.tools"
                                  @cut-pages="get_project_list"
                        >
                            <bt-table-column type="checkbox" width="20px"></bt-table-column>
                            <bt-table-column title="项目名称" width="120px" v-slot="scope">
                                <template v-if="scope.$row.is_file_ok || typeof scope.$row.is_file_ok === 'undefined'">
                                    <bt-link :title="scope.$row.name" :tips="scope.$row.name"  @click="project_settings_view(scope.$row)"/>
                                </template>
                                <template v-else>${ scope.$row.name }</template>
                            </bt-table-column>
                            <bt-table-column title="服务状态" width="90px" v-slot="scope">
                                <template v-if="scope.$row.is_file_ok || typeof scope.$row.is_file_ok === 'undefined'">
                                    <bt-link :title="scope.$row.run ? '运行中' : '未启动'"
                                             :status="scope.$row.run"
																						 :id="scope.$row.id"
                                             :name="scope.$row.name"
                                             :icon="scope.$row.run?'play':'pause'"
                                             @click="switch_operation_state(scope.$row)"></bt-link>
                                </template>
                                <template v-else>已停止</template>
                            </bt-table-column>
                            <bt-table-column title="项目类型" width="150px">
                                <template v-slot="scope">
                                    ${ get_project_type(scope.$row) }
                                </template>
                            </bt-table-column>
                            <bt-table-column title="端口" width="100px" v-slot="scope">
                                <template v-if="scope.$row.is_file_ok || typeof scope.$row.is_file_ok === 'undefined'">
                                    ${ get_listen_info(scope.$row) }
                                </template>
                                <template v-else>--</template>
                            </bt-table-column>
                            <bt-table-column title="CPU"  width="80px" v-slot="scope">
                                <template v-if="scope.$row.is_file_ok || typeof scope.$row.is_file_ok === 'undefined'">
                                    ${ get_cpu_info(scope.$row) }
                                </template>
                                <template v-else>--</template>
                            </bt-table-column>
                            <bt-table-column title="内存" width="100px" v-slot="scope">
                                <template v-if="scope.$row.is_file_ok || typeof scope.$row.is_file_ok === 'undefined'">
                                    ${ get_memory_info(scope.$row) }
                                </template>
                                <template v-else>${ get_memory_info(scope.$row) }</template>
                            </bt-table-column>
                            <bt-table-column title="根目录" min-width="80px" v-slot="scope">
															<bt-link :title="scope.$row.path" @click="open_file_path(scope.$row.path)" :tips="scope.$row.path" :is-info="true" />
														</bt-table-column>
														<bt-table-column title="目录详情" min-width="40px" v-slot="scope">
																<bt-link :title="scope.$row.path" @click="open_file_path(scope.$row.path)" :tips="scope.$row.path" :is-info="false" />
														</bt-table-column>
                            <bt-table-column title="备注" min-width="80px" v-slot="scope">
                                <template v-if="scope.$row.is_file_ok || typeof scope.$row.is_file_ok === 'undefined'">
                                    <bt-text cust-class="table-input" :block="true" :value="scope.$row.ps" width="100%" placeholder="点击编辑内容，按回车或失去焦点自动保存" @blur="editor_project_ps($event, scope.$row)" @keyup="enter_editor_project_ps($event)" />
                                </template>
                                <template v-else>当前项目域名不在配置文件中，请尝试修复项目</template>
                            </bt-table-column>
                            <bt-table-column title="SSL证书" width="80px" v-slot="scope">
                                <template v-if="scope.$row.is_file_ok || typeof scope.$row.is_file_ok === 'undefined'">
                                    <bt-link v-if="scope.$row.ssl == null || scope.$row.ssl === -1" :status="2"  title="未部署" tips="点击部署证书" @click="cut_project_tabs('ssl',scope.$row)"></bt-link>
                                    <bt-link v-else-if="scope.$row.ssl.endtime" :status="(scope.$row.ssl.endtime<7?0:1)" :title="(scope.$row.ssl.endtime>0?('剩余'+ scope.$row.ssl.endtime +'天'):'已过期')" :tips="get_ssl_info(scope.$row)" @click="cut_project_tabs('ssl',scope.$row)"></bt-link>
                                </template>
                                <template v-else>--</template>
                            </bt-table-column>
                            <bt-table-column title="操作" width="120px" align="right" v-slot="scope">
                                <template v-if="scope.$row.is_file_ok || typeof scope.$row.is_file_ok === 'undefined'">
                                    <bt-link title="设置" @click="project_settings_view(scope.$row)"></bt-link> &nbsp;&nbsp;|&nbsp;&nbsp;
                                    <bt-link title="删除" @click="delete_project_find(scope.$row)"></bt-link>
                                </template>
                                <template v-else>
                                    <bt-link title="修复" @click="repair_project_find(scope.$row)"></bt-link> &nbsp;&nbsp;|&nbsp;&nbsp;
                                    <bt-link title="删除" @click="delete_project_find(scope.$row)"></bt-link>
                                </template>
                            </bt-table-column>
                        </bt-table>

                        <!-- 添加JAVA对象 -->
                        <bt-layer title="添加JAVA项目" v-model="addJavaView" :area="['620px', '640px']" @close="close_add_java_project">
													<div style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; padding-bottom: 49px;">
															<div style="height: 100%; padding: 20px 20px 20px; overflow: auto;">
																	<bt-java-form :config="{form:projectFormInfo,jdkList:jdkList,tomcatList:tomcatList}"></bt-java-form>
															</div>
													</div>
													<div class="bt-form-submit-btn">
															<bt-button type="danger" title="关闭" @click.native="addJavaView = false"></bt-button>
															<bt-button type="success" title="提交" @click.native="submit_form_info"></bt-button>
													</div>
											</bt-layer>

                        <!-- JAVA管理 -->
                        <bt-layer class-name="pd0" title="JAVA环境管理" v-model="javaEnvShow" :area="['680px','500px']" @close="close_java_evn">
													<bt-tabs v-model="javaEnvName" :data="projectInfo" @change="cut_project_settings_model" :tab-refresh="true">
															<bt-tabs-pane label="JDK管理" name="JDKConfig" component="bt-java-jdk" :refresh="true" :config="{jdkInfo:jdkInfo}"></bt-tabs-pane>
															<bt-tabs-pane label="Tomcat管理" name="tomcatconfig" component="bt-java-tomcat" :refresh="true"></bt-tabs-pane>
													</bt-tabs>
											</bt-layer>
                        <!-- 修改Tomcat端口 -->
                        <bt-layer :title="'修改Tomcat'+ tomcatVersion + '-端口'" v-model="modifyTomcatPort" area="400px" >
                            <div class="bt-form">
                                <bt-line label="端口" label-width="80px">
                                    <bt-text width="250px" v-model="tomcatPort" placeholder="请输入需要修改端口号，不可为空"/>
                                </bt-line>
                            </div>
                            <div class="bt-form-submit-btn">
                                <bt-button type="danger" title="关闭" @click.native="modifyTomcatPort = false"></bt-button>
                                <bt-button type="success" title="提交" @click.native="modify_tomcat_port"></bt-button>
                            </div>
                        </bt-layer>

                        <!--修改Tomcat JDk -->
                        <bt-layer :title="'修改Tomcat' + tomcatVersion + '-JDK版本'" v-model="modifyTomcatJdk" area="400px">
                            <div class="bt-form">
                                <bt-line label="JDK地址" label-width="80px">
                                    <bt-text width="230px" v-model="tomcatJdk" placeholder="请输入需要修改JDK路径，不可为空" icon="folder-open"
                                             @icon-event="select_path('tomcat_jsk_path')"/>
                                </bt-line>
                            </div>
                            <div class="bt-form-submit-btn">
                                <bt-button type="danger" title="关闭" @click.native="modifyTomcatJdk = false"></bt-button>
                                <bt-button type="success" title="提交" @click.native="modify_tomcat_jdk"></bt-button>
                            </div>
                        </bt-layer>

                        <!-- 设置界面 -->
                        <bt-layer :title="'JAVA项目管理-[ '+ projectInfo.name +' ]，添加时间['+ projectInfo.addtime +']'"
                                  v-model="projectSettings"
                                  :area="['780px','780px']"
                                  class-name="pd0"
                                  @close="close_project_settings" >
                            <bt-tabs v-model="project_settings_model" :data="projectInfo" @change="cut_project_settings_model" :tab-refresh="true">
                                <bt-tabs-pane label="项目信息" name="projectInformation" component="bt-java-form" :refresh="true" :config="{form:projectFormInfo,jdkList:jdkList,tomcatList:tomcatAllList, getProjectList: get_project_list}"></bt-tabs-pane>
                                <bt-tabs-pane label="域名管理" name="domainManagement" component="bt-site-domain" :refresh="true"></bt-tabs-pane>
                                <bt-tabs-pane label="外网映射" name="networkMapping" component="bt-site-network-mapping" :refresh="true"></bt-tabs-pane>
                                <bt-tabs-pane label="伪静态" name="pseudoStatic"></bt-tabs-pane>
                                <bt-tabs-pane label="配置文件" name="configurationFile"></bt-tabs-pane>
                                <bt-tabs-pane label="Tomcat配置" name="tomcatConfig" v-if="projectInfo.project_config.java_type === 'neizhi' || projectInfo.project_config.java_type === 'duli'">
                                    <p style="color: #666; margin-bottom: 7px">提示：Ctrl+F 搜索关键字，Ctrl+S 保存，Ctrl+H 查找替换</p>
                                    <div class="bt-input-text ace_config_editor_scroll " id="tomcatConfig" style="height: 450px;line-height: 18px;font-size: 12px;"></div>
                                    <bt-button type="success" title="保存配置" @click="save_tomcat_config" class="mt10"></bt-button>
                                    <bt-help :list="[['此处为Tomcat配置文件,若您不了解配置规则,请勿随意修改']]" style="padding: 0"></bt-help>
                                </bt-tabs-pane>
                                <bt-tabs-pane label="SSL" name="ssl"></bt-tabs-pane>
                                <bt-tabs-pane label="服务状态" name="serviceStatus" component="bt-site-service-status" :refresh="true"></bt-tabs-pane>
                                <bt-tabs-pane label="负载状态" name="loadState"></bt-tabs-pane>
																<bt-tabs-pane label="性能监控" name="performanceMonitor" v-if="projectInfo.project_config.java_type == 'springboot'"></bt-tabs-pane>
                                <bt-tabs-pane label="项目日志" name="projectLog" component="bt-site-logs" :refresh="true"></bt-tabs-pane>
                                <bt-tabs-pane label="网站日志" name="siteLog"></bt-tabs-pane>
                                <bt-tabs-pane class="mask_module" :public="defalutTabView">
                                    <div class="node_mask_module_text" v-if="project_settings_model !== 'loadState'">请开启<a href="javascript:;" class="btlink mapExtranet" @click="cut_project_tabs('networkMapping')"> 外网映射 </a>后查看</div>
                                    <div class="node_mask_module_text" v-else>请<a href="javascript:;" class="btlink mapExtranet" @click="cut_project_tabs('serviceStatus')">启动项目服务</a>后查看</div>
                                </bt-tabs-pane>
                            </bt-tabs>
                        </bt-layer>
                        <div :class="{mask_layer:true,hide:!initialization}">
                            <div class="prompt_description java-model"> <span>当前为未<a href="javascript:;" class="btlink" @click="jdk_manage_view">添加JDK</a>和<a href="javascript:;" class="btlink" @click="tomcat_manage_view">安装Tomcat</a></span></div>
                        </div>
                    </div>
                </div>
                <div class="tab-con-block ">
                    <div id="bt_node_table"></div>
                    <div class="mask_layer hide">
                        <div class="prompt_description node-model"></div>
                    </div>
                </div>
                <div class="tab-con-block">
                  <div id="bt_go_table"></div>
                </div>
                <div class="tab-con-block">
                    <div id="bt_python_table"></div>
                </div>
                <div class="tab-con-block">
                  <div id="bt_other_table"></div>
                </div>
            </div>
        </div>
    </div>
</div>
{% endblock %}
{% block scripts %}
{{ super() }}
<script type="text/javascript">
	var serverType = "{{session['webserver']}}";
	bt.set_cookie('sites_path', "{{session['config']['sites_path']}}");
	bt.set_cookie('serverType', serverType);
	var isSetup = "{{data['isSetup']}}" === 'True' ? true : false
</script>
<script type="text/javascript" src="{{g.cdn_url}}/laydate/laydate.js?version={{g['version']}}"></script>
<script type="text/javascript" src="{{g.cdn_url}}/js/site.js?version={{g['version']}}&repair={{data['js_random']}}"></script>
<script type="text/javascript" src="{{g.cdn_url}}/js/soft.js?version={{g['version']}}&repair={{data['js_random']}}"></script>
<script type="text/javascript" src="{{g.cdn_url}}/editor/ace.js?version={{g['version']}}&repair={{data['js_random']}}"></script>
<script type="text/javascript">
    {% if not data['isSetup'] %}
      layer.msg('未安装Web服务器，<a href="javascript:;" class="btlink" onclick="bt.soft.install(\'nginx\')">安装Nginx</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="javascript:;" class="btlink" onclick="bt.soft.install(\'apache\')">安装Apache</a>', { icon: 7, shade: [0.3, '#000'], time: 0,area:'380px' });
      $(".layui-layer-shade").css("margin-left", "180px");
    {% else %}
      site.plugin_firewall();
    {% endif %}
</script>
{% endblock %}
