{% 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;
    }
    .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: 10px;
        padding: 2px;
        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: 25px;
    }
    .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;
        line-height: 489px;
        text-align: center;
        font-size: 20px;
    }
    .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;
    }
    .module_num{
        width: 80px;
        display: inline-block;
    }
    .module_type{
        display: inline-block;
    }
    .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;
    }
    .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_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;
    }
</style>
<!--suppress SpellCheckingInspection, CheckEmptyScriptTag -->
<div class="main-content pb55">
    <div class="container-fluid">
        <!-- <div class="pos-box bgw mtb15">
            <div class="position f14 c9 pull-left">
                <a class="plr10 c4" href="/">{{data['lan']['H1']}}</a>/<span
                    class="plr10 c4">{{data['lan']['H2']}}</span>
            </div>
        </div> -->
    <div class="pos-box bgw mtb15">
            <div class="tab-list" 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="control-item" data-type="go">Go项目</div> -->
            </div>
        </div>
    <div class="site_table_view bgw mtb15 pd15 tab-view-box">
            <!-- <div class="info-title-tips">
                <p><span class="glyphicon glyphicon-alert"
                         style="color: #f39c12; margin-right: 10px;"></span>{{data['lan']['PS']}}建站成功后，请在<a
                        class="btlink"
                        href="/crontab">[计划任务]</a>页面添加定时备份任务!</p>
            </div> -->
            <!-- <div class="tab-nav" id="cutMode">
                <span class="on" data-type="php">PHP项目</span>
                <span data-type="nodejs">Node项目</span>
                <span data-type="java">JAVA项目</span>
                <span data-type="go">Go项目</span>
            </div> -->
            <div class="tab-con" style="padding: 0;overflow: inherit;">
                <div class="tab-con-block">
                    <div id="bt_site_table"></div>
                    <!-- <div class="mask_layer hide">
                      <div class="prompt_description web-model"></div>
                    </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">
                                <bt-button type="success" class="mr5" title="添加Java项目" @click="add_java_project"></bt-button>
                                <bt-button title="JDK管理"  class="mr5" @click="jdk_manage_view"></bt-button>
                                <bt-button title="Tomcat管理"  class="mr5" @click="tomcat_manage_view"></bt-button>
                                <bt-link class="mlr15" title="Java项目教程" href="https://www.bt.cn/bbs/thread-76217-1-1.html" target="_blank"></bt-link>
                            </div>
                            <div class="pull-right">
                                <!--                                <bt-text class="bt_search" v-model="serachValue" width="230px" placeholder="请输入项目名称" icon="search" @keyup.enter="search_project_info" @icon-event="search_project_info">-->
                                <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"
                                  :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"
                                             :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" />
                            </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', '680px']" @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: 30px 30px 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 title="JDK管理" v-model="jdkManageView" :area="['480px','400px']" @close="jdkPathValue = ''">
                            <bt-text width="300px" v-model="jdkPathValue" class-name="mr10" placeholder="请输入自定义JDK地址，或选择JDK路径"
                                     icon="folder-open" @icon-event="select_path('add_load_jdk', 'file')"></bt-text>
                            <bt-button type="success" title="添加JDK" class-name="mlr15 mr0"
                                       @click="add_jdk_info"></bt-button>
                            <div class="divtable mt10">
                                <table class="table table-hover">
                                    <thead>
                                    <tr>
                                        <th>JDK地址</th>
                                        <th style="text-align:right;width:80px;">操作</th>
                                    </tr>
                                    </thead>
                                    <tbody>
                                    <tr v-for="(item,index) in jdkInfo" :key="index">
                                        <td><span>${item[1]}</span></td>
                                        <td style="text-align:right;">
                                            <template v-if="item[0] === '自定义JDK'">
                                                <bt-link title="删除" @click.native="delete_jdk_info(item,index)"/>
                                            </template>
                                            <template v-else>
                                                <span>不可操作</span>
                                            </template>
                                        </td>
                                    </tr>
                                    </tbody>
                                </table>
                            </div>
                        </bt-layer>

                        <!-- Tomcat管理 -->
                        <bt-layer title="Tomcat版本管理"  v-model="tomcatManageView" area="600px">
                            <div class="box_item" v-for="(item,key) in tomcatInfo">
                                <div class="box_title">${key}</div>
                                <template v-if="item.status">
                                    <div class="block">
                                        <div class="status">
                                            <div class="btn_item_block">
                                                <span>当前状态：<bt-link :title="item.info.status?'运行中':'已停止'"
                                                                    :status="item.info.status"
                                                                    :icon="item.info.status?'play':'pause'"
                                                                    @click="set_tomcat_service(item.version,item.info.status?'stop':'start')"/></span>
                                            </div>
                                            <div class="btn_item_block">
                                                <span>端口：</span>
                                                <span>${item.info.port}<bt-link title="更改"
                                                                                @click="open_tomcat_port_view(item.version,item.info.port)"
                                                                                class="ml5"/></span>
                                            </div>
                                            <div class="btn_item_block">
                                                <span>JDK路径：</span>
                                                <span>${item.info.jdk_path}</span>
<!--                                                <bt-link title="更改"-->
<!--                                                         @click="open_tomcat_jdk_view(item.tomcat_start,item.info.jdk_path)"-->
<!--                                                         class="ml5"/>-->
                                            </div>
                                        </div>
                                        <bt-button @click="set_tomcat_service(item.version)" title="启动"
                                                   v-if="!item.info.status"></bt-button>
                                        <bt-button @click="set_tomcat_service(item.version,'stop')" title="停止"
                                                   v-if="item.info.status"></bt-button>
                                        <bt-button @click="set_tomcat_service(item.version,'restart')"
                                                   title="重载配置"></bt-button>
                                        <bt-button type="danger"
                                                   @click="install_tomcat_version(item.version,'uninstall')"
                                                   title="卸载"></bt-button>
                                    </div>
                                </template>
                                <template v-else>
                                    <div class="block"><span style="margin-right: 15px">当前版本未安装，点击安装后操作</span>
                                        <bt-button size="xs" title="点击安装"
                                                   @click="install_tomcat_version(item.version)"></bt-button>
                                    </div>
                                </template>
                            </div>
                        </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','722px']"
                                  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="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>
        </div>
    </div>
</div>
{% endblock %}
{% block scripts %}
{{ super() }} 
<script type="text/javascript">
	bt.set_cookie('sites_path', "{{session['config']['sites_path']}}");
	bt.set_cookie('serverType', "{{session['webserver']}}");
	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}}/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 %}