1333 lines
86 KiB
HTML
1333 lines
86 KiB
HTML
<html>
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||
<meta http-equiv="Cache-Control" content="no-cache"/>
|
||
<title>数瑞数联网网关Portal</title>
|
||
<script src="./jqueryui1.12/jquery-2.1.4.js"></script>
|
||
<script src="./js/popper.min.js"></script>
|
||
|
||
<link href="./jqueryui1.12/jquery-ui.css" rel="stylesheet">
|
||
<script src="./jqueryui1.12/jquery-ui.js"></script>
|
||
<script src="./jqueryui1.12/jquery.contextMenu.js"></script>
|
||
<link href="./jqueryui1.12/jquery.contextMenu.min.css" rel="stylesheet">
|
||
<script src="./jqueryui1.12/jquery.ui.position.js"></script>
|
||
<link href="./jqueryui1.12/jquery-editable-select.css" rel="stylesheet">
|
||
<script src="./jqueryui1.12/jquery-editable-select.js"></script>
|
||
<script src="./js/createWS.js"></script>
|
||
<script src="./js/cryptico.js"></script>
|
||
<script src="./js/commonutil.js"></script>
|
||
<script src="./js/bootstrap.min.js"></script>
|
||
<script src="./js/echarts.min.js"></script>
|
||
<script src="./js/echarts-gl.min.js"></script>
|
||
<script src="./js/echartsTheme.js"></script>
|
||
|
||
<script src="./js/sm2.js"></script>
|
||
<link rel="stylesheet" type="text/css"
|
||
href="./js/DataTables/datatables.min.css"/>
|
||
<link rel="stylesheet" type="text/css"
|
||
href="./js/DataTables/datatables.extra.css"/>
|
||
<script type="text/javascript"
|
||
src="./js/DataTables/jquery.dataTables.min.js"></script>
|
||
<script type="text/javascript"
|
||
src="./js/DataTables/dataTables.bootstrap4.min.js"></script>
|
||
<script src="./js/NodePortal.js"></script>
|
||
<script src="./js/nodePortalLog/initLog.js"></script>
|
||
<script src="./js/nodePortalLog/drawPic.js"></script>
|
||
<script src="./js/codeManage/projectManage.js"></script>
|
||
<script src="./js/codeManage/fileManage.js"></script>
|
||
<script src="./js/codeManage/selectManage.js"></script>
|
||
<script src="./js/codeManage/operManage.js"></script>
|
||
<script src="./js/codeManage/recoverFrame.js"></script>
|
||
<script src="./js/codeManage/contractAuthManage.js"></script>
|
||
<script src="./js/instanceManage/newManage.js"></script>
|
||
<script src="./js/NodeUser.js"></script>
|
||
<script src="./js/NodeConfig.js"></script>
|
||
<script src="./js/NodeContractInstances.js"></script>
|
||
<!-- <script src="./js/scide.js"></script> -->
|
||
<script src="./js/vue.js"></script>
|
||
|
||
<!-- <link
|
||
href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-switch/3.3.2/css/bootstrap3/bootstrap-switch.min.css"
|
||
rel="stylesheet">
|
||
<script
|
||
src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-switch/3.3.2/js/bootstrap-switch.min.js"></script> -->
|
||
<!-- <link rel="stylesheet" href="./css/bootstrap.min.css"> -->
|
||
<link rel="stylesheet" href="./css/loading.css">
|
||
<link rel="stylesheet" href="./css/common.css">
|
||
<link rel="stylesheet" href="./css/bootstrap.min.css">
|
||
<script src="./js/bootstrap.min.js"></script>
|
||
<link href="./css/bootstrap4-toggle.min.css" rel="stylesheet">
|
||
<script src="./js/bootstrap4-toggle.min.js"></script>
|
||
|
||
</head>
|
||
<body style="overflow-x: hidden;">
|
||
|
||
<header
|
||
class="headerFooter navbar navbar-default navbar-fixed-top navColor ">
|
||
<div class="col-4">
|
||
<a class="navbar-brand" href="#"> <img alt="Brand"
|
||
src="./images/logo-1.png" style="height: 30px">
|
||
</a> <span>数瑞数联网网关管理</span>
|
||
</div>
|
||
|
||
<div class="nav navbar-right userName" data-toggle="modal"
|
||
data-target="#pubkeyDialog">欢迎, {{shortName}}
|
||
</div>
|
||
</header>
|
||
|
||
<div class="container-fluid " id="main">
|
||
<div class="row h-100">
|
||
<div class="col-2 " id="horiNav">
|
||
<div class="nav flex-column nav-pills " id="v-pills-tab"
|
||
role="tablist" aria-orientation="vertical">
|
||
<a class="nav-link active" id="v-pills-nodeManager-tab"
|
||
data-toggle="pill" href="#v-pills-nodeManager" role="tab"
|
||
aria-controls="v-pills-nodeManager" aria-selected="false"
|
||
onclick="loadNodeConfig()"><img
|
||
src="./images/index/customer-support.png" class="iconimg">网关配置 </a>
|
||
<a class="nav-link" id="v-pills-userManager-tab"
|
||
data-toggle="pill" href="#v-pills-userManager" role="tab"
|
||
aria-controls="v-pills-userManager" aria-selected="true"
|
||
onclick="loadUserMan()"> <img
|
||
src="./images/index/operation.png" class="iconimg">用户管理
|
||
</a>
|
||
<a
|
||
class="nav-link" id="v-pills-logManager-tab" data-toggle="pill"
|
||
href="#v-pills-logManager" role="tab" onclick="initLocalLog()"
|
||
aria-controls="v-pills-logManager" aria-selected="false"><img
|
||
src="./images/index/writer.png" class="iconimg">监管日志管理
|
||
</a>
|
||
|
||
<a class="nav-link" id="v-pills-contractCodeManager-tab"
|
||
data-toggle="pill" href="#v-pills-contractCodeManager" role="tab"
|
||
aria-controls="v-pills-contractCodeManager"
|
||
onclick="initcodeManage()" aria-selected="false"><img
|
||
src="./images/index/analysis.png" class="iconimg">DO接入管理 </a> <a
|
||
class="nav-link" id="v-pills-contractInstance-tab"
|
||
data-toggle="pill" href="#v-pills-contractInstance" role="tab"
|
||
aria-controls="v-pills-contractInstance" aria-selected="false"
|
||
onclick="loadContractInstances()"><img
|
||
src="./images/index/network.png" class="iconimg">DO实例管理 </a>
|
||
</div>
|
||
</div>
|
||
<div class="col-10 h-100" style="padding: 0; overflow-y: scroll;">
|
||
<div class="tab-content" id="v-pills-tabContent">
|
||
<!-- 用户管理对应的DIV -->
|
||
<div class="tab-pane fade " id="v-pills-userManager"
|
||
role="tabpanel" aria-labelledby="v-pills-userManager-tab">
|
||
<div class="container">
|
||
<div class="row" style="margin-top: 30px">
|
||
<div class="col-sm-6">
|
||
<div class="card ">
|
||
<div class="card-body">
|
||
<h5 class="card-title">用户情况</h5>
|
||
<!-- <p class="card-text">管理员人数、节点人数、申请人数</p> -->
|
||
<div class="d-flex justify-content-center" id="RolePie">
|
||
<div class="spinner-border text-primary"
|
||
style="width: 4rem; height: 4rem;" role="status">
|
||
<span class="sr-only">Loading...</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="col-sm-6">
|
||
<div class="card ">
|
||
<div class="card-body">
|
||
<h5 class="card-title">用户活跃统计</h5>
|
||
<!-- <p class="card-text">管理员人数、节点人数、申请人数</p> -->
|
||
<div class="container col-12" id="nodeUserActivityDiv"
|
||
style="padding: 0px">
|
||
<div class="d-flex justify-content-center">
|
||
<div class="spinner-border text-primary"
|
||
style="width: 4rem; height: 4rem;" role="status">
|
||
<span class="sr-only">Loading...</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- <div class="modal fade" id="dialog" tabindex="-1" role="dialog"
|
||
aria-labelledby="exampleModalLabel" aria-hidden="true">
|
||
<div class="modal-dialog" role="document">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<h5 class="modal-title" id="dialogTitleH5">Modal title</h5>
|
||
<button type="button" class="close" data-dismiss="modal"
|
||
aria-label="Close">
|
||
<span aria-hidden="true">×</span>
|
||
</button>
|
||
</div>
|
||
<div class="modal-body" id="warning">...</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-outline-secondary"
|
||
data-dismiss="modal">关闭</button>
|
||
<button type="button" id="dialogConfimBtn"
|
||
class="btn btn-outline-primary" data-dismiss="modal">确定</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div> -->
|
||
|
||
<div class="row" style="margin-top: 30px">
|
||
<div class="col-sm-12">
|
||
<div class="card">
|
||
<div class="card-body">
|
||
<h5 class="card-title">授权用户管理</h5>
|
||
<div id="authorizedRole">
|
||
<div class="d-flex justify-content-center">
|
||
<div class="spinner-border text-primary"
|
||
style="width: 4rem; height: 4rem;" role="status">
|
||
<span class="sr-only">Loading...</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="row" style="margin-top: 30px">
|
||
<div class="col-sm-12">
|
||
<div class="card ">
|
||
<div class="card-body">
|
||
<h5 class="card-title">未授权用户管理</h5>
|
||
<div id="unAuthorizedRole">
|
||
<div class="d-flex justify-content-center">
|
||
<div class="spinner-border text-primary"
|
||
style="width: 4rem; height: 4rem;" role="status">
|
||
<span class="sr-only">Loading...</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- 合约启动管理管理 对应的DIV -->
|
||
<div class="tab-pane fade" id="v-pills-contractCodeManager"
|
||
role="tabpanel" aria-labelledby="v-pills-contractCodeManager-tab">
|
||
|
||
<div id="fileMenu" class=" container">
|
||
<div class="row h-100"
|
||
style="padding-top: 30px; padding-bottom: 30px">
|
||
|
||
<div class="col-sm-12" style="height: 100%">
|
||
<div id="chooseButtons" class="row" style="height: 40%">
|
||
<div class="col-sm-12">
|
||
<div class="card ">
|
||
<div class="card-body">
|
||
<div class="input-group mb3">
|
||
<div class="input-group-prepend">
|
||
<button id="ypkIsPrivate" class=" btn btn-outline-primary"
|
||
onclick="changeYpkPath()" data-toggle="tooltip"
|
||
data-original-title="点击可切换目录"
|
||
style="cursor:pointer">公共目录
|
||
</button>
|
||
</div>
|
||
<select id="selectYpkFile" class="custom-select"
|
||
style="appearance: none"
|
||
onchange="changeYpkName(this.value)">
|
||
<option selected>请选择ypk文件</option>
|
||
</select>
|
||
<select id="selectDumpPeriod" class="custom-select"
|
||
style="appearance: none">
|
||
|
||
<option selected>不保存</option>
|
||
<option selected>/12hours自动保存</option>
|
||
<option selected>/1day自动保存</option>
|
||
<option selected>/2days自动保存</option>
|
||
<option selected>选择状态保存模式</option>
|
||
|
||
</select>
|
||
<div class="input-group-append">
|
||
<button onclick="deleteYpk()"
|
||
type="button" title="删除该DOypk文件" data-toggle="tooltip"
|
||
class="btn btn-outline-primary">
|
||
<img alt="Brand"
|
||
src="./images/index/trash.png"
|
||
class="buttonimg">
|
||
</button>
|
||
</div>
|
||
<div class="input-group-append">
|
||
<button type="button" class="btn btn-outline-primary"
|
||
title="使用该ypk单点启动DO" data-toggle="tooltip"
|
||
onclick="startContractAtSlave()">
|
||
<img alt="Brand" src="./images/onlineide/start.png"
|
||
class="buttonimg">
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
</br>
|
||
<div class="input-group mb3">
|
||
|
||
|
||
<!-- <select id="selectUnits" class="custom-select" onclick="getNodeTrustUnits()" -->
|
||
<select id="selectUnits" class="custom-select"
|
||
style="appearance: none">
|
||
<option selected>选择节点集群</option>
|
||
<option>无</option>
|
||
</select>
|
||
<input class="form-control" id="selectUnitNum" type="number"
|
||
placeholder="选择节点数量" step="1" class="modal_input" min="1"
|
||
max="10"/>
|
||
<select class="custom-select" id="sequence"
|
||
style="appearance: none">
|
||
<option selected id="sequencing" value="0">选择集群DO模式</option>
|
||
<option value="1">RequestOnce</option>
|
||
<option value="2">ResponseOnce</option>
|
||
<option value="3">RARF</option>
|
||
<option value="4">RARH</option>
|
||
<option value="5">RARA</option>
|
||
<option value="6">Sharding</option>
|
||
</select>
|
||
<div class="btn-group mr-3" role="group"
|
||
style="margin-left: 2%">
|
||
<button type="button" class="btn btn-outline-primary"
|
||
data-toggle="tooltip" onclick="distributeContract()"
|
||
title="分发DOypk至集群其他节点">
|
||
<img alt="Brand"
|
||
src="./images/onlineide/video-files.png"
|
||
class="buttonimg">
|
||
</button>
|
||
<button type="button" class="btn btn-outline-primary"
|
||
data-toggle="tooltip"
|
||
onclick="startContractUnits()"
|
||
title="启动(集群)">
|
||
<img alt="Brand" src="./images/onlineide/ethernet.png"
|
||
class="buttonimg">
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</br>
|
||
<div class="input-group mb3">
|
||
<select class="custom-select"
|
||
style="appearance: none">
|
||
<option selected value="0">选择共识算法</option>
|
||
<option value="0">无需共识</option>
|
||
<option value="1">PBFT</option>
|
||
<option value="2">RAFT</option>
|
||
<option value="3">Single</option>
|
||
</select>
|
||
<select id="network" class="custom-select" style="appearance: none">
|
||
<option selected value="0">选择通信方式</option>
|
||
<option value="0">TCP</option>
|
||
<option value="1">P2P</option>
|
||
</select>
|
||
<select id="response" class="custom-select"
|
||
style="appearance: none">
|
||
<option selected value="0">选择结果返回模式</option>
|
||
<option value="0">All</option>
|
||
<option value="1">Most</option>
|
||
<option value="2">First</option>
|
||
</select>
|
||
<div class="btn-group mr-3" role="group" style="margin-left: 2%">
|
||
<button type="button" class="btn btn-outline-primary"
|
||
data-toggle="tooltip"
|
||
onclick="startContractConfig()"
|
||
title="启动配置集群">
|
||
<img alt="Brand" src="./images/onlineide/configstart.png"
|
||
class="buttonimg">
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<input id="uploadFileInput" style="display: none;"
|
||
type="file" name="file" onchange="uploadFile()">
|
||
|
||
<div id="displayBoxes" class="row d-flex align-items-stretch"
|
||
style="height: 60%">
|
||
<div class="col-sm-12">
|
||
<div id="resultArea">
|
||
<div class="card " style="height: 100%">
|
||
<div class="card-body" style="height: 100%">
|
||
<h5 class="card-title">
|
||
返回结果显示
|
||
</h5></br>
|
||
<label id="result" style="height: 80%; width: 100%"></label>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
<!-- 合约实例管理 对应的DIV -->
|
||
<!-- TODO
|
||
合约实例DB-对应所有者用户/
|
||
申请新实例发送请求到数据库/
|
||
此页面中请求再ManagerAction中创建新方法/
|
||
licence是否依然使用39contract -->
|
||
<div class="tab-pane fade" id="v-pills-contractInstance"
|
||
role="tabpanel" aria-labelledby="v-pills-contractInstance-tab">
|
||
<div class="container">
|
||
|
||
<div class="row" style="margin-top: 30px">
|
||
<div class="col-sm-6">
|
||
<div class="card ">
|
||
<div class="card-body">
|
||
<h5 class="card-title">DO实例状态</h5>
|
||
<div class="container col-12" id="ciStatusPieDiv"
|
||
style="min-height: 150px; padding: 0px">
|
||
<div class="d-flex justify-content-center">
|
||
<div class="spinner-border text-primary"
|
||
style="width: 4rem; height: 4rem;" role="status">
|
||
<span class="sr-only">Loading...</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="col-sm-6">
|
||
<div class="card ">
|
||
<div class="card-body">
|
||
<h5 class="card-title">各类DO实例调用次数</h5>
|
||
<div class="container col-12" id="ciTimesPieDiv"
|
||
style="min-height: 150px; padding: 0px">
|
||
<div class="d-flex justify-content-center">
|
||
<div class="spinner-border text-primary"
|
||
style="width: 4rem; height: 4rem;" role="status">
|
||
<span class="sr-only">Loading...</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row" style="margin-top: 30px">
|
||
<div class="col-sm-12">
|
||
<div class="card ">
|
||
<div class="card-body" id="ciTabDiv">
|
||
<h5 class="card-title">DO实例列表</h5>
|
||
<div class="d-flex justify-content-center">
|
||
<div class="spinner-border text-primary"
|
||
style="width: 4rem; height: 4rem;" role="status">
|
||
<span class="sr-only">Loading...</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- <div class="card-body">
|
||
<h5 class="card-title">合约实例列表</h5>
|
||
<div class="container" style="minHeight: 150px; padding: 0px">
|
||
<div class="d-flex justify-content-center">
|
||
<table class="table" id="contractinstancestable">
|
||
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div> -->
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row" style="margin-top: 30px">
|
||
<div class="col-sm-12">
|
||
<div class="card ">
|
||
<div class="card-body">
|
||
<button onclick="killAllContract()" type="button"
|
||
class="btn btn-outline-primary">停止全部
|
||
</button>
|
||
</div>
|
||
<div class="card-body" id="cpTabDiv">
|
||
<div class="d-flex justify-content-center">
|
||
<div class="spinner-border text-primary"
|
||
style="width: 4rem; height: 4rem;" role="status">
|
||
<span class="sr-only">Loading...</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- <div class="card-body">
|
||
<h5 class="card-title">合约实例列表</h5>
|
||
<div class="container" style="minHeight: 150px; padding: 0px">
|
||
<div class="d-flex justify-content-center">
|
||
<table class="table" id="contractinstancestable">
|
||
|
||
</table>
|
||
</div>
|
||
</div>
|
||
</div> -->
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="row" style="margin-top: 30px">
|
||
<div class="col-sm-12" id="contractinstance">
|
||
<div class="card ">
|
||
<div class="card-body">
|
||
<h5 class="card-title">实例详情</h5>
|
||
<div class="container">
|
||
<div class="row d-flex justify-content-flex-start">
|
||
<div class="input-group mb-3">
|
||
|
||
<div class="input-group-prepend">
|
||
<label class="input-group-text">选择实例</label>
|
||
</div>
|
||
<select id="selectContractInstance"
|
||
onchange="changeContractInstance(this.value)"
|
||
class="form-control">
|
||
<option selected>选择...</option>
|
||
</select>
|
||
|
||
<!-- only for test ADSP -->
|
||
<!--<div class="input-group-prepend">
|
||
<button onclick="startTestADSP()" type="button"
|
||
class="btn btn-outline-primary">开始测试
|
||
</button>
|
||
</div>-->
|
||
|
||
</div>
|
||
</div>
|
||
<div class="row d-flex justify-content-flex-start">
|
||
<h6 class="card-title" style="margin-top: 2%">实例调用</h6>
|
||
<div class="input-group mb-3">
|
||
<div class="input-group-prepend">
|
||
<select id="selectContractFunction" onchange=""
|
||
class="form-control">
|
||
<option selected>选择方法...</option>
|
||
</select>
|
||
</div>
|
||
<div class="input-group-append">
|
||
<span class="input-group-text">参数</span>
|
||
</div>
|
||
|
||
<input type="text" class="form-control" placeholder="输入参数" id="arg">
|
||
<input type="text" class="form-control col-2" placeholder="输入gas"
|
||
id="gasLimit">
|
||
<div class="input-group-append">
|
||
<div class="input-group-text">
|
||
<input type="checkbox" id="executeContractAsDebug"
|
||
aria-label="Checkbox for isDebug"
|
||
data-toggle="tooltip"
|
||
title="模拟调用"></input>
|
||
</div>
|
||
</div>
|
||
<div class="input-group-append">
|
||
<button onclick="executeContract()" type="button"
|
||
class="btn btn-outline-primary">执行
|
||
</button>
|
||
</div>
|
||
<div class="input-group-append">
|
||
<button onclick="executeContractWithDynamicResult()"
|
||
type="button" class="btn btn-outline-primary">动态分析执行
|
||
</button>
|
||
</div>
|
||
<div class="input-group-append">
|
||
<button onclick="executeContractConfig()"
|
||
type="button" class="btn btn-outline-primary">集群配置执行
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="row d-flex justify-content-flex-start">
|
||
<div class="input-group mb-3">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text" id="responseStatus">执行状态:</span>
|
||
</div>
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text" id="responseID">执行ID:</span>
|
||
</div>
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text" id="responseTime">执行时间:</span>
|
||
</div>
|
||
<textarea class="form-control" id="responseArea"></textarea>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row d-flex justify-content-flex-start">
|
||
<h6 class="card-title" style="margin-top: 2%">Mask配置</h6>
|
||
<div class="input-group mb-3">
|
||
|
||
<div class="input-group-append">
|
||
<span class="input-group-text">参数</span>
|
||
</div>
|
||
|
||
<input type="text" class="form-control" placeholder="输入参数"
|
||
id="maskArg">
|
||
|
||
<div class="input-group-append">
|
||
<button onclick="getMask()" type="button"
|
||
class="btn btn-outline-primary">get
|
||
</button>
|
||
</div>
|
||
<div class="input-group-append">
|
||
<button onclick="setMask()"
|
||
type="button" class="btn btn-outline-primary">set
|
||
</button>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
<div class="row d-flex justify-content-flex-start">
|
||
<div class="input-group mb-3">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text" id="maskStatus">当前配置:</span>
|
||
</div>
|
||
|
||
<textarea class="form-control" id="maskResponseArea"></textarea>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row d-flex justify-content-flex-start">
|
||
<h6 class="card-title" style="margin-top: 2%">Mock配置</h6>
|
||
<div class="input-group mb-3">
|
||
|
||
<div class="input-group-append">
|
||
<span class="input-group-text">参数</span>
|
||
</div>
|
||
|
||
<input type="text" class="form-control" placeholder="输入参数"
|
||
id="mockArg">
|
||
|
||
<div class="input-group-append">
|
||
<button onclick="getMock()" type="button"
|
||
class="btn btn-outline-primary">get
|
||
</button>
|
||
</div>
|
||
<div class="input-group-append">
|
||
<button onclick="setMock()"
|
||
type="button" class="btn btn-outline-primary">set
|
||
</button>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
<div class="row d-flex justify-content-flex-start">
|
||
<div class="input-group mb-3">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text" id="mockStatus">当前配置:</span>
|
||
</div>
|
||
|
||
<textarea class="form-control" id="mockResponseArea"></textarea>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row d-flex justify-content-flex-start">
|
||
<h6 class="card-title" style="margin-top: 2%">权限管理</h6>
|
||
</div>
|
||
<div class="row d-flex justify-content-flex-start">
|
||
<div id="contractSetting" class="col-sm-4">
|
||
<div class="card " style="height: 100%">
|
||
<div class="card-body "
|
||
style="flex: 1 1 auto; overflow-y: auto">
|
||
<h6>
|
||
<b>当前DO权限</b>
|
||
</h6>
|
||
<div>
|
||
<ul class="list-group" id="ulPermission">
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="row d-flex justify-content-flex-start">
|
||
<h6 class="card-title" style="margin-top: 2%">状态管理</h6>
|
||
</div>
|
||
<div class="row d-flex justify-content-flex-start">
|
||
<div class="input-group mb-3">
|
||
<div class="input-group-prepend">
|
||
<button onclick="showChangeDumpPeriod()"
|
||
type="button" class="btn btn-outline-primary">
|
||
更改保存周期
|
||
</button>
|
||
</div>
|
||
<div class="input-group-append">
|
||
<button id="dumpButton" onclick="dumpContract()"
|
||
type="button" class="btn btn-outline-primary">
|
||
保存状态
|
||
</button>
|
||
</div>
|
||
<div class="input-group-append">
|
||
<span class="input-group-text">选择镜像文件:</span>
|
||
|
||
</div>
|
||
<select id="selectMemeryFiles" class="custom-select"
|
||
onchange="changeMemoryFiles(this.value)"
|
||
style="appearance:none; -webkit-appearance:none">
|
||
<option selected>选择时间</option>
|
||
</select>
|
||
<div class="input-group-append">
|
||
<button id="backtoButton" onclick="transferTo()"
|
||
type="button" class="btn btn-outline-primary">
|
||
恢复状态
|
||
</button>
|
||
</div>
|
||
<div class="input-group-append">
|
||
<button id="deleteIMGButton" onclick="deleteMemoryFile()"
|
||
type="button" class="btn btn-outline-primary">
|
||
删除该镜像
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="row d-flex justify-content-flex-start">
|
||
<div class="input-group">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text">结果:</span>
|
||
</div>
|
||
<textarea class="form-control" id="recoverResult"></textarea>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<br/>
|
||
<div class="container" style="padding: 0px; display:none">
|
||
<div class="d-flex justify-content-center">
|
||
<div class="input-group mb-3">
|
||
<div class="btn-group mr-3" role="group">
|
||
<button onclick="killAllContractLocal()"
|
||
type="button" class="btn btn-outline-secondary">停止全部
|
||
</button>
|
||
<button onclick="stopContractP2PTrustfully()"
|
||
type="button" class="btn btn-outline-secondary">停止可信DO
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- 日志管理 对应的DIV -->
|
||
<div class="tab-pane fade" id="v-pills-logManager" role="tabpanel"
|
||
aria-labelledby="v-pills-logManager-tab">
|
||
<div class="container">
|
||
<div class="row" style="margin-top: 30px">
|
||
<div class="col-sm-6">
|
||
<div class="card ">
|
||
<div class="card-body">
|
||
<div class="card-title" style="margin-bottom: 50px">
|
||
<h5 class="card-title" id="logPie1" style="float: left">各类平台操作百分比</h5>
|
||
<div class="input-group mb-2"
|
||
style="float: right; width: 35%">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text"
|
||
id="inputGroup-sizing-default">时间</span>
|
||
</div>
|
||
<select class="custom-select" id="pie1"
|
||
onchange="changePie1Time(this.value)"
|
||
style="appearance: none;">
|
||
<option selected>365天</option>
|
||
<option selected>30天</option>
|
||
<option selected>7天</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
<div class="container col-12" id="auditLocalNodeLogPie"
|
||
style="min-height: 250px; padding: 0px">
|
||
<div class="d-flex justify-content-center">
|
||
<div class="spinner-border text-primary"
|
||
style="width: 4rem; height: 4rem;" role="status">
|
||
<span class="sr-only">Loading...</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="col-sm-6">
|
||
<div class="card ">
|
||
<div class="card-body">
|
||
<div class="card-title" style="margin-bottom: 50px">
|
||
<h5 class="card-title" id="logPie2" style="float: left">各类DO操作百分比</h5>
|
||
<div class="input-group mb-2"
|
||
style="float: right; width: 35%">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text"
|
||
id="inputGroup-sizing-default">时间</span>
|
||
</div>
|
||
<select class="custom-select" id="pie2"
|
||
onchange="changePie2Time(this.value)"
|
||
style="appearance: none;">
|
||
<option selected>365天</option>
|
||
<option selected>30天</option>
|
||
<option selected>7天</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
<div class="container col-12" id="auditLocalContractLogPie"
|
||
style="min-height: 250px; padding: 0px">
|
||
<div class="d-flex justify-content-center">
|
||
<div class="spinner-border text-primary"
|
||
style="width: 4rem; height: 4rem;" role="status">
|
||
<span class="sr-only">Loading...</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="container">
|
||
<div class="row" style="margin-top: 30px">
|
||
<div class="col-sm-6">
|
||
<div class="card ">
|
||
<div class="card-body">
|
||
<div class="card-title" style="margin-bottom: 50px">
|
||
<h5 class="card-title" id="logLine1" style="float: left">每日平台使用统计</h5>
|
||
<div class="input-group mb-2"
|
||
style="float: right; width: 35%">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text"
|
||
id="inputGroup-sizing-default">时间</span>
|
||
</div>
|
||
<select class="custom-select" id="line1"
|
||
onchange="changeLine1Time(this.value)"
|
||
style="appearance: none;">
|
||
<option selected>365天</option>
|
||
<option selected>30天</option>
|
||
<option selected>7天</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
<div class="container col-12" id="auditLocalNodeLogLine"
|
||
style="min-height: 250px; padding: 0px">
|
||
<div class="d-flex justify-content-center">
|
||
<div class="spinner-border text-primary"
|
||
style="width: 4rem; height: 4rem;" role="status">
|
||
<span class="sr-only">Loading...</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="col-sm-6">
|
||
<div class="card ">
|
||
<div class="card-body">
|
||
<div class="card-title" style="margin-bottom: 50px">
|
||
<h5 class="card-title" id="logLine2" style="float: left">每日DO操作统计</h5>
|
||
<div class="input-group mb-2"
|
||
style="float: right; width: 35%">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text"
|
||
id="inputGroup-sizing-default">时间</span>
|
||
</div>
|
||
<select class="custom-select" id="line2"
|
||
onchange="changeLine2Time(this.value)"
|
||
style="appearance: none;">
|
||
<option selected>365天</option>
|
||
<option selected>30天</option>
|
||
<option selected>7天</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
<div class="container col-12" id="auditLocalContractLogLine"
|
||
style="min-height: 250px; padding: 0px">
|
||
<div class="d-flex justify-content-center">
|
||
<div class="spinner-border text-primary"
|
||
style="width: 4rem; height: 4rem;" role="status">
|
||
<span class="sr-only">Loading...</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="container">
|
||
<div class="row" style="margin-top: 30px">
|
||
<div class="col-sm-12">
|
||
<div class="card">
|
||
<div class="card-body">
|
||
<div class="card-title" style="margin-bottom: 30px">
|
||
<h5 class="card-title" style="float: left">节点日志详情</h5>
|
||
<div class="input-group mb-2" style="float:right;width:25%">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text"
|
||
id="inputGroup-sizing-default">时间范围(单位:日)</span>
|
||
</div>
|
||
<input type="text" class="form-control" id="nodeLogInput"></input>
|
||
<div class="input-group-append">
|
||
<button type="button" class="btn btn-outline-primary"
|
||
onclick="changeNodeLogTime()"
|
||
title="更新内容" data-toggle="tooltip">
|
||
<img src="./images/onlineide/refresh.png" class="buttonimg"/>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card-body" id="localNodeLog">
|
||
<div class="d-flex justify-content-center">
|
||
<div class="spinner-border text-primary"
|
||
style="width: 4rem; height: 4rem;" role="status">
|
||
<span class="sr-only">Loading...</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="row" style="margin-top: 30px">
|
||
<div class="col-sm-12">
|
||
<div class="card ">
|
||
<div class="card-body">
|
||
<div class="card-title" style="margin-bottom: 30px">
|
||
<h5 class="card-title" style="float: left">DO日志详情</h5>
|
||
<div class="input-group mb-2" style="float:right;width:25%">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text"
|
||
id="inputGroup-sizing-default">时间范围(单位:日)</span>
|
||
</div>
|
||
<input type="text" class="form-control" id="contractLogInput"></input>
|
||
<div class="input-group-append">
|
||
<button type="button" class="btn btn-outline-primary"
|
||
onclick="changeContractLogTime()"
|
||
title="更新内容" data-toggle="tooltip">
|
||
<img src="./images/onlineide/refresh.png" class="buttonimg"/>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card-body" id="localContractLog">
|
||
<div class="d-flex justify-content-center">
|
||
<div class="spinner-border text-primary"
|
||
style="width: 4rem; height: 4rem;" role="status">
|
||
<span class="sr-only">Loading...</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="row" style="margin-top: 30px">
|
||
<div class="col-sm-12">
|
||
<div class="card ">
|
||
<div class="card-body">
|
||
<div class="card-title" style="margin-bottom: 30px">
|
||
<h5 class="card-title" style="float: left">账本日志审计</h5>
|
||
</div>
|
||
<div class="card-body" id="ledger">
|
||
<div class="d-flex justify-content-center">
|
||
|
||
<div class="input-group mb-3">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text"
|
||
id="inputGroup-sizing-default">账本:</span>
|
||
</div>
|
||
<input type="text" class="form-control" id="ledgerInput">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text"
|
||
id="inputGroup-sizing-default">Hash:</span>
|
||
</div>
|
||
<input type="text" class="form-control" id="hashInput">
|
||
<div class="input-group-append">
|
||
<button class="btn btn-outline-secondary" type="button"
|
||
id="changeNodeName" onclick="queryDataByHash()">查询
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="row" style="margin-top: 30px">
|
||
<div class="col-sm-12">
|
||
<div class="card ">
|
||
<div class="card-body">
|
||
<div class="card-title" style="margin-bottom: 30px">
|
||
<h5 class="card-title" style="float: left">账本日志详情</h5>
|
||
<div class="input-group mb-2" style="float:right;width:25%">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text"
|
||
id="inputGroup-sizing-default">条数范围(单位:条)</span>
|
||
</div>
|
||
<input type="text" class="form-control" id="ledgerLogInput"></input>
|
||
<div class="input-group-append">
|
||
<button type="button" class="btn btn-outline-primary"
|
||
onclick="changeLedgerLogCount()"
|
||
title="更新内容" data-toggle="tooltip">
|
||
<img src="./images/onlineide/refresh.png" class="buttonimg"/>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="card-body" id="ledgerLog">
|
||
<div class="d-flex justify-content-center">
|
||
<div class="spinner-border text-primary"
|
||
style="width: 4rem; height: 4rem;" role="status">
|
||
<span class="sr-only">Loading...</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- 节点管理 对应的DIV -->
|
||
<div class="tab-pane fade show active" id="v-pills-nodeManager" role="tabpanel"
|
||
aria-labelledby="v-pills-nodeManager-tab">
|
||
<div class="container">
|
||
<div class="row" style="margin-top: 30px">
|
||
<div class="col-sm-12">
|
||
<div class="card">
|
||
<div class="card-body">
|
||
<h5 class="card-title">节点配置</h5>
|
||
<div class="card-body" id="centerportal">
|
||
<div class="d-flex justify-content-center">
|
||
<div class="input-group mb-3">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text"
|
||
id="inputGroup-sizing-default">节点名称</span>
|
||
</div>
|
||
<input type="text" class="form-control" id="nodeNameInput">
|
||
<div class="input-group-append">
|
||
<button class="btn btn-outline-secondary" type="button"
|
||
id="changeNodeName" onclick="changeNodeName()">修改
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="d-flex justify-content-center">
|
||
<div class="input-group mb-3">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text"
|
||
id="inputGroup-sizing-default">路由设置</span>
|
||
</div>
|
||
<input type="text" class="form-control" id="doipConfigInput">
|
||
<div class="input-group-append">
|
||
<button class="btn btn-outline-secondary" type="button"
|
||
id="changeDOIPConfig" onclick="changeDOIPConfig()">修改
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="d-flex justify-content-center" style="display:none">
|
||
<div class="input-group mb-3">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text"
|
||
id="inputGroup-sizing-default">内网地址</span>
|
||
</div>
|
||
<input type="text" class="form-control" id="ipPortInput">
|
||
<div class="input-group-append">
|
||
<button class="btn btn-outline-secondary" type="button"
|
||
id="changeIpPort" onclick="changeIpPort()">修改
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="d-flex justify-content-center">
|
||
<div class="input-group mb-3">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text"
|
||
id="inputGroup-sizing-default">PeerID</span>
|
||
</div>
|
||
<input type="text" class="form-control" id="peerIDInput">
|
||
</div>
|
||
</div>
|
||
<div class="d-flex justify-content-center">
|
||
<div class="input-group mb-3">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text"
|
||
id="inputGroup-sizing-default">YJS路径</span>
|
||
</div>
|
||
<input type="text" class="form-control" id="yjsInput">
|
||
<div class="input-group-append">
|
||
<button class="btn btn-outline-secondary" type="button"
|
||
id="changeYJSPath" onclick="changeYJSPath()">修改
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="d-flex justify-content-center">
|
||
<div class="input-group mb-3">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text"
|
||
id="inputGroup-sizing-default">MasterAddr</span>
|
||
</div>
|
||
<input type="text" class="form-control" id="masterAddrInput">
|
||
<div class="input-group-append">
|
||
<button class="btn btn-outline-secondary" type="button"
|
||
onclick="changeMasterAddress()">修改
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="d-flex justify-content-center">
|
||
<div class='input-group mb-3'>
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text"
|
||
id="inputGroup-sizing-default">加入网络</span>
|
||
</div>
|
||
<input type='text' class='form-control'
|
||
id='nodeCenterInput'>
|
||
<div class='input-group-append'>
|
||
<button class='btn btn-outline-secondary' type='button'
|
||
id='changeNodeCenter' onclick='changeNodeCenter()'>修改
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="d-flex justify-content-center">
|
||
<div class="input-group mb-3">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text"
|
||
id="inputGroup-sizing-default">账本节点</span>
|
||
</div>
|
||
<input type="text" class="form-control" placeholder="IP:Port 以空格间隔"
|
||
id="bdledgerPeersInput">
|
||
<div class='input-group-append'>
|
||
<button class='btn btn-outline-secondary' type='button'
|
||
id='changeBDledger' onclick='changeBDledger()'>修改
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row" style="margin-top: 30px; display:none;">
|
||
<div class="col-sm-12">
|
||
<div class="card">
|
||
<div class="card-body">
|
||
<h5 class="card-title">Licence配置</h5>
|
||
<div class="card-body" id="paths">
|
||
<div class="d-flex justify-content-center">
|
||
<div class="input-group mb-3">
|
||
<div class="input-group-prepend">
|
||
<span class="input-group-text">Licence</span>
|
||
</div>
|
||
<textarea class="form-control" id="licence"
|
||
aria-label="Licence"></textarea>
|
||
</div>
|
||
</div>
|
||
<div class="d-flex justify-content-center">
|
||
<div class="input-group mb-3">
|
||
<span class="input-group-text">Licence过期时间 </span> <span
|
||
class="input-group-text" id="expireTime"></span>
|
||
</div>
|
||
</div>
|
||
<div class="d-flex justify-content-center">
|
||
<div class="input-group mb-3">
|
||
<button type="button" onclick="uploadLicence()"
|
||
class="btn btn-outline-secondary">设置Licence
|
||
</button>
|
||
<button onclick="submitReq()" type="button"
|
||
class="btn btn-outline-secondary">申请Licence
|
||
</button>
|
||
<button onclick="flushLicence()" type="button"
|
||
class="btn btn-outline-secondary">刷新申请状态
|
||
</button>
|
||
<button onclick="downloadUUID()" type="button"
|
||
class="btn btn-outline-secondary">下载节点ID文件
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- 用于配置sm2密钥的对话框 -->
|
||
<div class="modal fade" id="pubkeyDialog" tabindex="-1" role="dialog"
|
||
aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
|
||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<h5 class="modal-title" id="exampleModalLongTitle">用户信息</h5>
|
||
<button type="button" class="close" data-dismiss="modal"
|
||
aria-label="Close">
|
||
<span aria-hidden="true">×</span>
|
||
</button>
|
||
</div>
|
||
<div class="modal-body">
|
||
<div class="row" style="padding-left: 16px; padding-right: 16px">
|
||
|
||
<div class="input-group mb-3">
|
||
<div class="input-group-prepend">
|
||
<label class="input-group-text" for="localKeyList">本地公钥</label>
|
||
</div>
|
||
|
||
<select class="custom-select"
|
||
aria-label="Example select with button addon"
|
||
style="appearance: none" v-model="selectedSM2Key"
|
||
@change="changeSM2Key($event)">
|
||
<option v-for="(item,index) in sm2KeyList" :key="index"
|
||
:value='item.id'>{{item.title}}
|
||
</option>
|
||
</select>
|
||
<div class="input-group-append">
|
||
<button class="btn btn-outline-primary" for="localKeyList"
|
||
v-on:click="exportPubkey">导出公钥
|
||
</button>
|
||
</div>
|
||
<div class="input-group-append">
|
||
<button class="btn btn-outline-danger" for="localKeyList"
|
||
v-on:click="deletePubkey">删除公钥
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="row" style="padding-left: 16px; padding-right: 16px">
|
||
|
||
<div class="input-group mb-1">
|
||
<div class="input-group-prepend">
|
||
<label class="input-group-text" for="localKeyList">当前SM2密钥</label>
|
||
</div>
|
||
<input type="text" class="form-control" placeholder="(请复制并妥善保存)"
|
||
disabled="disabled" aria-label=""
|
||
aria-describedby="basic-addon1">
|
||
|
||
<div class="input-group-append">
|
||
<button type="button" class="btn btn-outline-primary"
|
||
id="generatePubkeyBtn" v-on:click="generatePubkey">生成新公钥
|
||
</button>
|
||
<button type="button" class="btn btn-outline-primary"
|
||
data-dismiss="modal" id="importPubkeyBtn"
|
||
v-on:click="importPubkey">导入公钥
|
||
</button>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
<textarea class="form-control mb-3" title="复制密钥,并妥善保存"
|
||
id="sm2KeyTextarea" v-model="sm2KeyStr"
|
||
style="width: 100%; min-height: 150px" rows="" cols="">
|
||
</textarea>
|
||
<div class="row" style="padding-left: 16px; padding-right: 16px;">
|
||
|
||
</div>
|
||
<div class="row" style="padding-left: 16px; padding-right: 16px">
|
||
<span>我的权限:{{myRole}}</span>
|
||
</div>
|
||
<div class="input-group">
|
||
<select id="inputGroupSelect04" v-model="test"
|
||
class="custom-select" style="appearance: none"
|
||
@change="changeProduct($event)">
|
||
<option v-for="(item,index) in productList" :key="index"
|
||
:value='item.id'>{{item.title}}
|
||
</option>
|
||
</select>
|
||
<div class="input-group-append">
|
||
<button class="btn btn-outline-primary" type="button"
|
||
v-on:click="applyRole">角色认证
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
<!-- Flexbox container for aligning the toasts -->
|
||
<div aria-live="polite" aria-atomic="true" aria-hidden="true"
|
||
class="d-flex justify-content-center align-items-center"
|
||
style="dispaly: none; min-height: 200px; position: absolute; top: 30%; left: 40%;"
|
||
aria-hidden="true">
|
||
<!-- Then put toasts within -->
|
||
|
||
<div id="alertDiv" class="toast fade hide" role="alert"
|
||
aria-live="assertive" autohide="false" aria-atomic="true"
|
||
style="min-width: 200px">
|
||
|
||
<div class="toast-header">
|
||
<strong class="mr-auto">{{toastTitle}}</strong>
|
||
<button type="button" class="ml-2 mb-1 close" data-dismiss="toast"
|
||
aria-label="Close">
|
||
<span aria-hidden="true">×</span>
|
||
</button>
|
||
</div>
|
||
<div class="toast-body">{{toastMessage}}</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="modal fade" id="dialog" tabindex="-1" role="dialog"
|
||
aria-labelledby="exampleModalLabel" aria-hidden="true">
|
||
<div class="modal-dialog" role="document">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<h5 class="modal-title" id="dialogTitleH5">Modal title</h5>
|
||
<button type="button" class="close" data-dismiss="modal"
|
||
aria-label="Close">
|
||
<span aria-hidden="true">×</span>
|
||
</button>
|
||
</div>
|
||
<div class="modal-body" id="dialogBodyDiv">...</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-outline-secondary"
|
||
data-dismiss="modal">关闭
|
||
</button>
|
||
<button type="button" id="dialogConfimBtn"
|
||
class="btn btn-outline-primary" data-dismiss="modal">确定
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<footer class="headerFooter" footermt-autopy-3>
|
||
<div class="row">
|
||
|
||
<div style="padding-left: -10px;" class="col-7">©2018-2020</div>
|
||
<div class="col-5" style="text-align:right">
|
||
Icons made by <a href="https://www.flaticon.com/authors/monkik"
|
||
title="monkik" style="color: white;">monkik</a> and
|
||
<a href="https://www.flaticon.com/authors/becris" style="color: white;" title="Becris">Becris</a> from <a
|
||
href="https://www.flaticon.com/" title="Flaticon"
|
||
style="color: white;">www.flaticon.com</a>
|
||
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
|
||
|
||
<script>
|
||
const isBaaS = false
|
||
var h = document.body.clientHeight
|
||
- $("header").css("height").replace("px", "")
|
||
- $("footer").css("height").replace("px", "");
|
||
$("#main").css("height", h + "px");
|
||
init();
|
||
|
||
//initWSocket();
|
||
|
||
|
||
|
||
</script>
|
||
|
||
</body>
|
||
</html> |