mirror of
https://gitee.com/BDWare/router-frontend
synced 2025-04-27 14:32:22 +00:00
Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
6b455ca7fc | ||
|
2e11239e89 | ||
|
a93e03c48e |
180
src/client/bdwareclient2.html
Normal file
180
src/client/bdwareclient2.html
Normal file
@ -0,0 +1,180 @@
|
||||
<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="./js/createWS.js"></script>
|
||||
<script src="./js/cryptico.js"></script>
|
||||
<script src="./js/jquery-2.1.4.js"></script>
|
||||
<script src="./js/bootstrap.min.js"></script>
|
||||
<script src="./js/commonutil.js"></script>
|
||||
<script src="./js/vue.js"></script>
|
||||
<script src="./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>
|
||||
<header class="headerFooter navbar navbar-default navbar-fixed-top navColor ">
|
||||
<div class="col-10">
|
||||
<div class="input-group">
|
||||
<a class="navbar-brand" href="#">
|
||||
<img alt="Brand"
|
||||
src="./img/logo-1.png" style="height: 30px">
|
||||
</a>
|
||||
<a class="navbar-brand">数字对象仓库 </a>
|
||||
<div class="input-group-prepend">
|
||||
<input id="urlInput" style="border-top-left-radius: 5px; border-bottom-left-radius: 5px"
|
||||
type="text" placeholder="输入地址">
|
||||
</div>
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-outline-secondary" type="button"
|
||||
onclick="connectNode()">GO
|
||||
</button>
|
||||
</div>
|
||||
<div class="input-group-append">
|
||||
<button class="btn btn-outline-secondary"
|
||||
style="border-top-right-radius: 5px; border-bottom-right-radius: 5px" id="switchRenderBtn"
|
||||
type="button"
|
||||
onclick="changeRender()">不加载界面
|
||||
</button>
|
||||
</div>
|
||||
<span> </span>
|
||||
<div class="input-group-append">
|
||||
<select id="selectContract" class="custom-select"
|
||||
style="-webkit-appearance: none" onchange="changeApp()">
|
||||
<option selected>选择合约</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class=" nav navbar-right userName" data-toggle="modal"
|
||||
data-target="#pubkeyDialog">欢迎, {{shortName}}
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div id="main">
|
||||
<div class="row h-100" id="mainDiv"></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>
|
||||
<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>
|
||||
|
||||
<script>
|
||||
const isBaaS = false
|
||||
const h = document.body.clientHeight
|
||||
- $("header").css("height").replace("px", "")
|
||||
$("#main").css("height", h + "px");
|
||||
init();
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -3,7 +3,7 @@ var loadContractList = function (e) {
|
||||
param.action = "listNodes";
|
||||
param.pubKey = global.sm2Key.publicKey;
|
||||
global.wssocket.send(JSON.stringify(param));
|
||||
if (global.nodeInfo == undefined) {
|
||||
if (!global.nodeInfo) {
|
||||
setTimeout(loadContractList, 300);
|
||||
return;
|
||||
}
|
||||
@ -11,7 +11,7 @@ var loadContractList = function (e) {
|
||||
var list = [];
|
||||
for (var i = 0; i < global.nodeInfo.online.length; i++) {
|
||||
var node = global.nodeInfo.online[i];
|
||||
if (node.contracts != undefined)
|
||||
if (node.contracts)
|
||||
for (var j = 0; j < node.contracts.length; j++) {
|
||||
list.push(node.contracts[j]);
|
||||
}
|
||||
@ -143,24 +143,32 @@ var drawContractListTable = function (list) {
|
||||
"sSortDescending": ": 以降序排列此列"
|
||||
}
|
||||
};
|
||||
var tableHead = "<table id='contractListTabDivTab' class='table display row-border'><thead><tr><th>序号</th><th>合约ID</th><th>合约名称</th><th>运行模式</th><th>合约类型</th><th>方法数量</th></tr></thead><tbody>";
|
||||
const tableHead = "<table id='contractListTabDivTab' class='table display row-border'>" +
|
||||
"<thead><tr>" +
|
||||
"<th>序号</th>" +
|
||||
"<th>合约ID</th>" +
|
||||
"<th>合约名称</th>" +
|
||||
"<th>运行模式</th>" +
|
||||
"<th>合约类型</th>" +
|
||||
"<th>方法数量</th>" +
|
||||
"</tr></thead><tbody>";
|
||||
var tableTail = "</tbody></table>";
|
||||
var html = tableHead;
|
||||
var count = 0;
|
||||
for (var i = 0; i < list.length; i++) {
|
||||
var node = list[i];
|
||||
if (node.contracts != undefined)
|
||||
if (node.contracts)
|
||||
for (var j = 0; j < node.contracts.length; j++) {
|
||||
var c = node.contracts[j];
|
||||
if (c.type != undefined && c.type.startsWith("RequestAll") && !c.isMaster)
|
||||
if (c.type && c.type.startsWith("RequestAll") && !c.isMaster)
|
||||
continue;
|
||||
html += "<tr><td>";
|
||||
html += (++count);
|
||||
html += "</td><td>";
|
||||
html += c.contractID;
|
||||
html += "</td><td>";
|
||||
html += "<a onclick='jumpToContractClient(\"" + node.masterAddress + "\",\"" + c.contractID + "\")' style='cursor: pointer'>"
|
||||
html += c.contractName;
|
||||
html += `<a onclick='jumpToContractClient("${node.masterAddress}","${c.contractID}")' style='cursor: pointer'>`
|
||||
html += c.contractName + (c.type && c.type.startsWith("SelfAdaptive") && c.isMaster ? "(M)" : "");
|
||||
html += "</a>"
|
||||
html += "</td><td>";
|
||||
html += c.type;
|
||||
@ -170,9 +178,11 @@ var drawContractListTable = function (list) {
|
||||
// html+=c.events.length
|
||||
// else html+=0;
|
||||
html += "</td><td>";
|
||||
if (c.exportedFunctions != undefined)
|
||||
if (c.exportedFunctions) {
|
||||
html += c.exportedFunctions.length;
|
||||
else html += "-1";
|
||||
} else {
|
||||
html += "-1";
|
||||
}
|
||||
html += "</td></tr>";
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user