315 lines
10 KiB
HTML
315 lines
10 KiB
HTML
|
<head>
|
|||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|||
|
<meta http-equiv="Cache-Control" content="no-cache"/>
|
|||
|
<title>数瑞数联网系统</title>
|
|||
|
<script src="./jqueryui1.12/jquery-2.1.4.js"></script>
|
|||
|
<script src="./js/createWS.js"></script>
|
|||
|
<script src="./js/cryptico.js"></script>
|
|||
|
<script src="./js/bootstrap.min.js"></script>
|
|||
|
<script src="./js/commonutil.js"></script>
|
|||
|
<script src="./js/vue.js"></script>
|
|||
|
<script src="./client/js/bdwareclient.js"></script>
|
|||
|
<script src="./js/sm2.js"></script>
|
|||
|
<link href="./css/common.css" rel="stylesheet">
|
|||
|
<link href="./css/bootstrap.min.css" rel="stylesheet">
|
|||
|
</head>
|
|||
|
<body style="background: #2E324C; color: white;">
|
|||
|
|
|||
|
<div class="modal fade" id="pubkeyDialog" data-backdrop="static">
|
|||
|
<div class="modal-dialog modal-dialog-centered" role="document">
|
|||
|
<div class="modal-content">
|
|||
|
<div class="modal-header">
|
|||
|
<h5 class="modal-title" id="exampleModalLongTitle" style="color:black;">用户信息</h5>
|
|||
|
</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>
|
|||
|
|
|||
|
|
|||
|
<button type="button" class="btn btn-outline-primary"
|
|||
|
id="generatePubkeyBtn" v-on:click="generatePubkey">生成新密钥
|
|||
|
</button>
|
|||
|
|
|||
|
|
|||
|
<button class="btn btn-outline-danger" for="localKeyList"
|
|||
|
v-on:click="deletePubkey">删除密钥
|
|||
|
</button>
|
|||
|
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
|
|||
|
<textarea class="form-control mb-3" title="复制密钥,并妥善保存"
|
|||
|
id="sm2KeyTextarea" v-model="sm2KeyStr"
|
|||
|
style="width: 100%; min-height: 150px; resize:none" rows="" cols="">
|
|||
|
</textarea>
|
|||
|
<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>
|
|||
|
<div class="input-group-append">
|
|||
|
<button type="button" class="btn btn-primary"
|
|||
|
data-dismiss="modal" id="importPubkeyBtn"
|
|||
|
v-on:click="importPubkey">确认
|
|||
|
</button>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
|
|||
|
|
|||
|
<div style="width: 90%; height:10px; max-width: 1000px; min-width: 850px; margin: 3% auto 0px;">
|
|||
|
<header class="" style="float:right">
|
|||
|
<div class=" nav navbar-right userName" data-toggle="modal" id="user"
|
|||
|
data-target="#pubkeyDialog">当前用户: {{shortName}}
|
|||
|
</div>
|
|||
|
</header>
|
|||
|
</div>
|
|||
|
|
|||
|
<style>
|
|||
|
.halfDiv {
|
|||
|
float: left;
|
|||
|
width: 100%;
|
|||
|
height: 100%;
|
|||
|
}
|
|||
|
|
|||
|
.projectTreeDiv {
|
|||
|
height: auto;
|
|||
|
padding: 0;
|
|||
|
}
|
|||
|
|
|||
|
.halfDivRight {
|
|||
|
float: left;
|
|||
|
width: 100%;
|
|||
|
height: 100%;
|
|||
|
}
|
|||
|
|
|||
|
.ui-tabs {
|
|||
|
padding: 0;
|
|||
|
}
|
|||
|
|
|||
|
.ui-accordion .ui-accordion-content {
|
|||
|
padding: 0;
|
|||
|
}
|
|||
|
|
|||
|
#tabs-1 {
|
|||
|
display: none;
|
|||
|
}
|
|||
|
|
|||
|
.ui-tabs .ui-tabs-panel {
|
|||
|
padding: 0;
|
|||
|
}
|
|||
|
|
|||
|
.context-menu-root {
|
|||
|
z-index: 10;
|
|||
|
}
|
|||
|
|
|||
|
#projectDiv {
|
|||
|
height: 83%;
|
|||
|
width: 20%;
|
|||
|
border: 0px solid grey;
|
|||
|
float: left;
|
|||
|
}
|
|||
|
|
|||
|
.CodeMirror {
|
|||
|
height: auto
|
|||
|
}
|
|||
|
|
|||
|
.logoimg {
|
|||
|
width: auto;
|
|||
|
height: auto;
|
|||
|
max-width: 100%;
|
|||
|
max-height: 100%;
|
|||
|
}
|
|||
|
|
|||
|
input {
|
|||
|
height: 32px;
|
|||
|
}
|
|||
|
|
|||
|
.sendTransInput {
|
|||
|
background-color: #f0e4e4;
|
|||
|
border-radius: 5px;
|
|||
|
margin: 5px;
|
|||
|
width: 15%;
|
|||
|
margin-left: 4%;
|
|||
|
border: 0px;
|
|||
|
}
|
|||
|
|
|||
|
.normalDiv {
|
|||
|
float: left;
|
|||
|
text-align: center;
|
|||
|
border-radius: 5px;
|
|||
|
margin: 2%;
|
|||
|
padding: 5px;
|
|||
|
padding-top: 30px;
|
|||
|
padding-bottom: 30px;
|
|||
|
width: 29%;
|
|||
|
cursor: hand;
|
|||
|
background: #2E324C;
|
|||
|
color: white;
|
|||
|
}
|
|||
|
|
|||
|
.iconimg {
|
|||
|
width: auto;
|
|||
|
height: auto;
|
|||
|
max-width: 48px;
|
|||
|
max-height: 48px;
|
|||
|
vertical-align: middle;
|
|||
|
filter: invert(100%);
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
</style>
|
|||
|
<div id="main" style="background: #2E324C; color: white;">
|
|||
|
<input id="urlInput" style="display:none"/>
|
|||
|
<input id="selectContract" style="display:none"/>
|
|||
|
<div
|
|||
|
style="width: 90%; max-width: 1000px; min-width: 850px; margin: 0 auto; margin-top: 3%;">
|
|||
|
<div style="width: 20%; float: right; margin-right: 0%">
|
|||
|
<img src="./images/logo.png" class="logoimg"></img>
|
|||
|
</div>
|
|||
|
<div
|
|||
|
style="width: fit-content; margin: 0; font-size: 200%; background-color: white; color: black; border-radius: 10px; float: left; padding: 10px;">
|
|||
|
导航
|
|||
|
</div>
|
|||
|
<div
|
|||
|
style="width: 100%; margin-top: 2%; float: left; background-color: white; border-radius: 10px;">
|
|||
|
<div class="normalDiv" onclick="jumpTo('./DOIP/GlobalRouter/assets/#')">
|
|||
|
<img src="./images/datanet/identifier.png" class="iconimg"></img><br/>
|
|||
|
<span style="vertical-align: middle">标识解析系统</span>
|
|||
|
</div>
|
|||
|
<div class="normalDiv" onclick="jumpTo('./DOIP/Registry/assets/#')">
|
|||
|
<img src="./images/datanet/search.png" class="iconimg"></img><br/>
|
|||
|
<span style="vertical-align: middle">数字对象注册表</span>
|
|||
|
</div>
|
|||
|
<div class="normalDiv"
|
|||
|
onclick="jumpTo('./client/bdwareclient.html?self=true&contract=RepositoryExample')">
|
|||
|
<img src="./images/datanet/repo.png" class="iconimg"></img><br/>
|
|||
|
<span style="vertical-align: middle">数字对象仓库</span>
|
|||
|
</div>
|
|||
|
|
|||
|
</div>
|
|||
|
<br/>
|
|||
|
<div style="width: fit-content; margin-top: 2%; float: right; border-radius: 10px; font-size: 50%">
|
|||
|
Icons made by
|
|||
|
<a href="https://www.flaticon.com/authors/monkik"
|
|||
|
title="monkik" style="color: white;">monkik</a>
|
|||
|
from
|
|||
|
<a href="https://www.flaticon.com/" title="Flaticon"
|
|||
|
style="color: white;">www.flaticon.com</a>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<script>
|
|||
|
jumpTo = function (addr) {
|
|||
|
document.location.href = addr;
|
|||
|
};
|
|||
|
const isBaaS = false
|
|||
|
const h = document.body.clientHeight
|
|||
|
- $("header").css("height").replace("px", "")
|
|||
|
$("#main").css("height", h + "px");
|
|||
|
function init() {
|
|||
|
const urlParams = getRequestParameters();
|
|||
|
initVue();
|
|||
|
initGlobal(urlParams);
|
|||
|
|
|||
|
if (global.urlparam["noRender"] === "true") {
|
|||
|
switchRenderBtn.innerHTML = "加载界面";
|
|||
|
}
|
|||
|
global.cbs = {};
|
|||
|
|
|||
|
const urlInput = $("#urlInput");
|
|||
|
if (global.urlparam["self"] === "true") {
|
|||
|
if (document.location.href.startsWith("http")) {
|
|||
|
let path = document.location.origin + document.location.pathname;
|
|||
|
path = path.replace("/client/bdwareclient.html", "");
|
|||
|
urlInput[0].value = path.replace("http",
|
|||
|
"ws");
|
|||
|
if (global.urlparam["withNodeCenterWS"] === "true") {
|
|||
|
urlInput[0].value += "/NodeCenterWS";
|
|||
|
}
|
|||
|
connectNode();
|
|||
|
}
|
|||
|
} else if (global.urlparam["nodeAddr"]) {
|
|||
|
urlInput[0].value = global.urlparam["nodeAddr"];
|
|||
|
connectNode();
|
|||
|
} else {
|
|||
|
const lastNode = localStorage.getItem("lastNode");
|
|||
|
if (lastNode) {
|
|||
|
urlInput[0].value = lastNode;
|
|||
|
connectNode();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
init();
|
|||
|
$(document).ready(function(){
|
|||
|
if(localStorage.getItem("PrivKeyList") == null || localStorage.getItem("agent") == null){
|
|||
|
$('#pubkeyDialog').modal();
|
|||
|
}else{
|
|||
|
var div = document.getElementById("user");
|
|||
|
// div.setAttribute("style","display:none");
|
|||
|
}
|
|||
|
})
|
|||
|
$('#pubkeyDialog').on('hide.bs.modal', function () {
|
|||
|
var div = document.getElementById("user");
|
|||
|
var lst = JSON.parse(localStorage.getItem("PrivKeyList"));
|
|||
|
lst.pop();
|
|||
|
localStorage.setItem("PrivKeyList",JSON.stringify(lst));
|
|||
|
});
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
</script>
|
|||
|
</body>
|
|||
|
</html>
|
|||
|
<!--
|
|||
|
============ NodeCenter的一些链接:其中39.106.6.6监听的是1817端口。 查看节点是否启动
|
|||
|
http://39.106.6.6:18001/SCIDE/NodeCenter?action=ping 查看NodeCenter当前连接的节点
|
|||
|
http://39.106.6.6:18001/SCIDE/NodeCenter?action=listCMInfo
|
|||
|
|
|||
|
刷新NodeCenter已连接节点的合约数据
|
|||
|
http://39.106.6.6:18001/SCIDE/NodeCenter?action=updateContract
|
|||
|
|
|||
|
检查节点是否已连接,删除断开连接的节点
|
|||
|
http://39.106.6.6:18001/SCIDE/NodeCenter?action=checkAlive
|
|||
|
|
|||
|
获取某个合约的日志数量
|
|||
|
http://39.106.6.6:18001/SCIDE/NodeCenter?action=getLogSize&contractID=BDCoin
|
|||
|
|
|||
|
获取某个合约的日志,从第offset条,取count条
|
|||
|
http://39.106.6.6:18001/SCIDE/NodeCenter?action=requestLog&contractID=BDCoin&offset=16&count=10
|
|||
|
|
|||
|
获取某个合约的日志,取最新的count条
|
|||
|
http://39.106.6.6:18001/SCIDE/NodeCenter?action=requestLastLog&contractID=BDCoin&count=10
|
|||
|
-->
|