GGSheng's picture
feat: deploy Gemma 4 to hf space
08c964e verified
{% 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 %}