Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
JDChain
Explorer
提交
44fb6b20
E
Explorer
项目概览
JDChain
/
Explorer
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
Explorer
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
44fb6b20
编写于
6月 22, 2020
作者:
J
jinlong12
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'develop' of
https://git.jd.com/jd-blockchain/explorer
into event
上级
076c433c
320e32e8
变更
8
显示空白变更内容
内联
并排
Showing
8 changed file
with
453 addition
and
87 deletion
+453
-87
data-explorer/server/routes/ledgers.js
data-explorer/server/routes/ledgers.js
+215
-3
data-explorer/src/stores/headerStore.js
data-explorer/src/stores/headerStore.js
+1
-1
data-explorer/src/stores/pages/eventStore.js
data-explorer/src/stores/pages/eventStore.js
+16
-9
data-explorer/src/web/components/eventInfo/eventInfo.js
data-explorer/src/web/components/eventInfo/eventInfo.js
+147
-23
data-explorer/src/web/components/transactionInfo/transactionInfo.t.html
...src/web/components/transactionInfo/transactionInfo.t.html
+45
-13
data-explorer/src/web/pages/event/event.js
data-explorer/src/web/pages/event/event.js
+19
-15
data-explorer/src/web/pages/event/event.t.html
data-explorer/src/web/pages/event/event.t.html
+2
-2
data-explorer/src/web/pages/search/search.t.html
data-explorer/src/web/pages/search/search.t.html
+8
-21
未找到文件。
data-explorer/server/routes/ledgers.js
浏览文件 @
44fb6b20
...
...
@@ -708,8 +708,11 @@ router.get('/:ledger/txs/hash/:tx_hash', function(req, res) {
}
},
{
"
roles
"
:
[{
"
disableLedgerPermissions
"
:
[
"
CONFIGURE_ROLES
"
,
"
AUTHORIZE_USER_ROLES
"
,
"
SET_CONSENSUS
"
,
"
SET_CRYPTO
"
,
"
REGISTER_PARTICIPANT
"
],
"
disableTransactionPermissions
"
:
[
"
DIRECT_OPERATION
"
,
"
CONTRACT_OPERATION
"
],
// "disableLedgerPermissions": ["CONFIGURE_ROLES", "AUTHORIZE_USER_ROLES", "SET_CONSENSUS", "SET_CRYPTO", "REGISTER_PARTICIPANT"],
// "disableTransactionPermissions": ["DIRECT_OPERATION", "CONTRACT_OPERATION"],
"
disableLedgerPermissions
"
:
[],
"
disableTransactionPermissions
"
:
[],
"
roleName
"
:
"
DEFAULT
"
,
"
enableLedgerPermissions
"
:
[
"
REGISTER_USER
"
,
"
REGISTER_DATA_ACCOUNT
"
,
"
REGISTER_CONTRACT
"
,
"
UPGRADE_CONTRACT
"
,
"
SET_USER_ATTRIBUTES
"
,
"
WRITE_DATA_ACCOUNT
"
,
"
APPROVE_TX
"
,
"
CONSENSUS_TX
"
],
"
enableTransactionPermissions
"
:
[
"
DIRECT_OPERATION
"
,
"
CONTRACT_OPERATION
"
]
...
...
@@ -756,6 +759,15 @@ router.get('/:ledger/txs/hash/:tx_hash', function(req, res) {
"
authorizedRoles
"
:
[],
"
policy
"
:
"
UNION
"
}]
},
{
"
eventAccountID
"
:{
"
address
"
:{
"
value
"
:
"
LdeNpSUAoWgmj8inksfuBx6vL3PMdZxnovkFa
"
},
"
pubKey
"
:{
"
value
"
:
"
7VeRPrJgSt4nKqSinLMwHGEWskPiQ5WNqcSj9ximuwLTjKoH
"
}
}
}],
"
hash
"
:
{
"
value
"
:
"
j5mTxuFAaBejKoRGphTaAWv5A15uSLPP8PUKiggs2NppR9
"
...
...
@@ -1418,7 +1430,207 @@ router.get('/:ledger/events/user/accounts/:address/names/:eventName', function(r
"
type
"
:
"
BYTES
"
,
"
value
"
:
"
Ynl0ZXM=
"
}
},
{
"
sequence
"
:
0
,
// 事件序列
"
transactionSource
"
:
{
// 交易哈希
"
value
"
:
"
j5ufPaiHndQ31ieQsBNFg57zqr2DmRJS8VnJCVmEL2dYWm
"
},
"
blockHeight
"
:
1
,
// 区块高度
"
contractSource
"
:
""
,
// 合约地址
"
eventAccount
"
:
{
// 事件账户
"
value
"
:
"
LdeNpSUAoWgmj8inksfuBx6vL3PMdZxnovkFa
"
},
"
name
"
:
"
e1
"
,
// 事件名
"
content
"
:
{
// 事件内容
"
nil
"
:
false
,
"
bytes
"
:
{
"
value
"
:
"
C7P9wfY
"
},
"
type
"
:
"
BYTES
"
,
"
value
"
:
"
Ynl0ZXM=
"
}
},
{
"
sequence
"
:
1
,
"
transactionSource
"
:
{
"
value
"
:
"
j5ufPaiHndQ31ieQsBNFg57zqr2DmRJS8VnJCVmEL2dYWm
"
},
"
blockHeight
"
:
1
,
"
contractSource
"
:
""
,
"
eventAccount
"
:
{
"
value
"
:
"
LdeNpSUAoWgmj8inksfuBx6vL3PMdZxnovkFa
"
},
"
name
"
:
"
e1
"
,
"
content
"
:
{
"
nil
"
:
false
,
"
bytes
"
:
{
"
value
"
:
"
C7P9wfY
"
},
"
type
"
:
"
BYTES
"
,
"
value
"
:
"
Ynl0ZXM=
"
}
},
{
"
sequence
"
:
0
,
// 事件序列
"
transactionSource
"
:
{
// 交易哈希
"
value
"
:
"
j5ufPaiHndQ31ieQsBNFg57zqr2DmRJS8VnJCVmEL2dYWm
"
},
"
blockHeight
"
:
1
,
// 区块高度
"
contractSource
"
:
""
,
// 合约地址
"
eventAccount
"
:
{
// 事件账户
"
value
"
:
"
LdeNpSUAoWgmj8inksfuBx6vL3PMdZxnovkFa
"
},
"
name
"
:
"
e1
"
,
// 事件名
"
content
"
:
{
// 事件内容
"
nil
"
:
false
,
"
bytes
"
:
{
"
value
"
:
"
C7P9wfY
"
},
"
type
"
:
"
BYTES
"
,
"
value
"
:
"
Ynl0ZXM=
"
}
},
{
"
sequence
"
:
1
,
"
transactionSource
"
:
{
"
value
"
:
"
j5ufPaiHndQ31ieQsBNFg57zqr2DmRJS8VnJCVmEL2dYWm
"
},
"
blockHeight
"
:
1
,
"
contractSource
"
:
""
,
"
eventAccount
"
:
{
"
value
"
:
"
LdeNpSUAoWgmj8inksfuBx6vL3PMdZxnovkFa
"
},
"
name
"
:
"
e1
"
,
"
content
"
:
{
"
nil
"
:
false
,
"
bytes
"
:
{
"
value
"
:
"
C7P9wfY
"
},
"
type
"
:
"
BYTES
"
,
"
value
"
:
"
Ynl0ZXM=
"
}
},
{
"
sequence
"
:
0
,
// 事件序列
"
transactionSource
"
:
{
// 交易哈希
"
value
"
:
"
j5ufPaiHndQ31ieQsBNFg57zqr2DmRJS8VnJCVmEL2dYWm
"
},
"
blockHeight
"
:
1
,
// 区块高度
"
contractSource
"
:
""
,
// 合约地址
"
eventAccount
"
:
{
// 事件账户
"
value
"
:
"
LdeNpSUAoWgmj8inksfuBx6vL3PMdZxnovkFa
"
},
"
name
"
:
"
e1
"
,
// 事件名
"
content
"
:
{
// 事件内容
"
nil
"
:
false
,
"
bytes
"
:
{
"
value
"
:
"
C7P9wfY
"
},
"
type
"
:
"
BYTES
"
,
"
value
"
:
"
Ynl0ZXM=
"
}
},
{
"
sequence
"
:
1
,
"
transactionSource
"
:
{
"
value
"
:
"
j5ufPaiHndQ31ieQsBNFg57zqr2DmRJS8VnJCVmEL2dYWm
"
},
"
blockHeight
"
:
1
,
"
contractSource
"
:
""
,
"
eventAccount
"
:
{
"
value
"
:
"
LdeNpSUAoWgmj8inksfuBx6vL3PMdZxnovkFa
"
},
"
name
"
:
"
e1
"
,
"
content
"
:
{
"
nil
"
:
false
,
"
bytes
"
:
{
"
value
"
:
"
C7P9wfY
"
},
"
type
"
:
"
BYTES
"
,
"
value
"
:
"
Ynl0ZXM=
"
}
},
{
"
sequence
"
:
0
,
// 事件序列
"
transactionSource
"
:
{
// 交易哈希
"
value
"
:
"
j5ufPaiHndQ31ieQsBNFg57zqr2DmRJS8VnJCVmEL2dYWm
"
},
"
blockHeight
"
:
1
,
// 区块高度
"
contractSource
"
:
""
,
// 合约地址
"
eventAccount
"
:
{
// 事件账户
"
value
"
:
"
LdeNpSUAoWgmj8inksfuBx6vL3PMdZxnovkFa
"
},
"
name
"
:
"
e1
"
,
// 事件名
"
content
"
:
{
// 事件内容
"
nil
"
:
false
,
"
bytes
"
:
{
"
value
"
:
"
C7P9wfY
"
},
"
type
"
:
"
BYTES
"
,
"
value
"
:
"
Ynl0ZXM=
"
}
},
{
"
sequence
"
:
1
,
"
transactionSource
"
:
{
"
value
"
:
"
j5ufPaiHndQ31ieQsBNFg57zqr2DmRJS8VnJCVmEL2dYWm
"
},
"
blockHeight
"
:
1
,
"
contractSource
"
:
""
,
"
eventAccount
"
:
{
"
value
"
:
"
LdeNpSUAoWgmj8inksfuBx6vL3PMdZxnovkFa
"
},
"
name
"
:
"
e1
"
,
"
content
"
:
{
"
nil
"
:
false
,
"
bytes
"
:
{
"
value
"
:
"
C7P9wfY
"
},
"
type
"
:
"
BYTES
"
,
"
value
"
:
"
Ynl0ZXM=
"
}
},
{
"
sequence
"
:
0
,
// 事件序列
"
transactionSource
"
:
{
// 交易哈希
"
value
"
:
"
j5ufPaiHndQ31ieQsBNFg57zqr2DmRJS8VnJCVmEL2dYWm
"
},
"
blockHeight
"
:
1
,
// 区块高度
"
contractSource
"
:
""
,
// 合约地址
"
eventAccount
"
:
{
// 事件账户
"
value
"
:
"
LdeNpSUAoWgmj8inksfuBx6vL3PMdZxnovkFa
"
},
"
name
"
:
"
e1
"
,
// 事件名
"
content
"
:
{
// 事件内容
"
nil
"
:
false
,
"
bytes
"
:
{
"
value
"
:
"
C7P9wfY
"
},
"
type
"
:
"
BYTES
"
,
"
value
"
:
"
Ynl0ZXM=
"
}
},
{
"
sequence
"
:
1
,
"
transactionSource
"
:
{
"
value
"
:
"
j5ufPaiHndQ31ieQsBNFg57zqr2DmRJS8VnJCVmEL2dYWm
"
},
"
blockHeight
"
:
1
,
"
contractSource
"
:
""
,
"
eventAccount
"
:
{
"
value
"
:
"
LdeNpSUAoWgmj8inksfuBx6vL3PMdZxnovkFa
"
},
"
name
"
:
"
e1
"
,
"
content
"
:
{
"
nil
"
:
false
,
"
bytes
"
:
{
"
value
"
:
"
C7P9wfY
"
},
"
type
"
:
"
BYTES
"
,
"
value
"
:
"
Ynl0ZXM=
"
}
},
],
"
success
"
:
true
});
...
...
data-explorer/src/stores/headerStore.js
浏览文件 @
44fb6b20
...
...
@@ -20,7 +20,7 @@ const HeaderStore = types
icon
:
'
switcher
'
},{
path
:
'
event
'
,
name
:
'
事件
'
,
name
:
'
事件
账户
'
,
icon
:
'
mail
'
,
},{
path
:
'
contract
'
,
...
...
data-explorer/src/stores/pages/eventStore.js
浏览文件 @
44fb6b20
...
...
@@ -24,6 +24,7 @@ const EventStore = types
nameCurrent
:
1
,
dataLatest
:
{},
// 最新事件数据
nameRecord
:
{},
}))
.
views
(
self
=>
({
...
...
@@ -39,17 +40,22 @@ const EventStore = types
setEvent
(
v
)
{
self
.
eventCurrent
=
v
;
console
.
log
(
v
,
self
.
eventCurrent
)
},
setName
(
v
)
{
self
.
nameCurrent
=
v
;
},
setNameRecord
(
v
)
{
self
.
nameRecord
=
v
;
},
// 事件账户列表
getAccount
(
ledger
,
param
)
{
getAccount
(
ledger
,
param
,
keywords
)
{
self
.
ledger
=
ledger
;
return
fetchData
(
`
${
__HOST
}
/ledgers/
${
ledger
}
/events/user/accounts`
,
self
.
setAccount
,
result
=>
self
.
setAccount
(
result
,
keywords
)
,
param
,
{
method
:
'
get
'
,
headers
:
{
...
...
@@ -61,9 +67,10 @@ const EventStore = types
console
.
log
(
error
);
});
},
setAccount
(
result
)
{
setAccount
(
result
,
keywords
)
{
if
(
result
&&
result
.
success
)
{
self
.
tableData
=
result
.
data
||
[];
self
.
tableData
=
result
.
data
&&
result
.
data
.
filter
(
item
=>
item
.
address
.
value
.
indexOf
(
keywords
)
!=
-
1
)
||
[];
self
.
accountcount
=
self
.
tableData
.
length
||
0
}
else
{
self
.
tableData
=
[];
...
...
@@ -95,10 +102,10 @@ const EventStore = types
},
// 指定事件账户下事件列表
getEvent
(
ledgers
,
address
)
{
getEvent
Data
(
ledgers
,
address
,
param
)
{
return
fetchData
(
`
${
__HOST
}
/ledgers/
${
ledgers
}
/events/user/accounts/
${
address
}
/names`
,
self
.
setEvent
,
''
,
{
self
.
setEvent
Data
,
param
,
{
method
:
'
get
'
,
headers
:
{
// accept: 'application/json',
...
...
@@ -109,10 +116,9 @@ const EventStore = types
console
.
log
(
error
);
});
},
setEvent
(
result
)
{
setEvent
Data
(
result
)
{
if
(
result
&&
result
.
success
)
{
self
.
dataEvent
=
result
.
data
||
[];
console
.
log
(
self
.
dataEvent
)
}
else
{
self
.
dataEvent
=
[];
...
...
@@ -161,6 +167,7 @@ const EventStore = types
setEventName
(
result
)
{
if
(
result
&&
result
.
success
)
{
self
.
dataName
=
result
.
data
||
[];
self
.
dataName
.
map
((
item
,
key
)
=>
item
.
index
=
key
);
}
else
{
self
.
dataName
=
[];
...
...
data-explorer/src/web/components/eventInfo/eventInfo.js
浏览文件 @
44fb6b20
...
...
@@ -4,7 +4,23 @@ import { observer, inject } from 'mobx-react';
import
nj
from
'
nornj
'
;
import
styles
from
'
./eventInfo.m.scss
'
;
import
{
Badge
,
Col
,
Drawer
,
Row
,
Table
}
from
'
antd
'
;
import
{
Badge
,
Col
,
Drawer
,
Message
,
Row
,
Table
}
from
'
antd
'
;
function
arrayIndexOf
(
arr
,
val
)
{
for
(
var
i
=
0
,
len
=
arr
.
length
;
i
<
len
;
i
++
)
{
if
(
arr
[
i
]
==
val
)
{
return
i
;
}
}
return
-
1
;
}
function
arrayRemove
(
arr
,
val
)
{
var
index
=
arrayIndexOf
(
arr
,
val
);
if
(
index
>
-
1
)
{
arr
.
splice
(
index
,
1
);
}
return
arr
;
}
//页面容器组件
...
...
@@ -18,17 +34,56 @@ export default class EventInfo extends Component {
@
observable
pageSize
=
10
;
@
observable
pageEvent
=
10
;
@
observable
visible
=
false
;
@
observable
expandedRowKeys
=
[];
@
observable
expandedRowKeysName
=
[];
onPageChange
=
(
page
,
pageSize
)
=>
{
const
{
store
:
{
event
}
}
=
this
.
props
;
console
.
log
(
page
,
pageSize
)
const
{
data
,
store
:
{
common
,
event
}
}
=
this
.
props
;
const
closeLoading
=
Message
.
loading
(
'
正在获取数据...
'
,
0
);
let
leaders
=
common
.
getDefaultLedger
();
event
.
setEvent
(
page
);
// this.Search();
this
.
expandedRowKeys
=
[];
let
param
=
{
fromIndex
:
(
event
.
eventCurrent
-
1
)
*
this
.
pageSize
,
count
:
this
.
pageSize
,
};
let
address
=
data
.
address
&&
data
.
address
.
value
&&
data
.
address
.
value
||
''
;
// 查询事件列表
Promise
.
all
([
event
.
getEventCount
(
common
.
getDefaultLedger
(),
address
)
]).
then
(()
=>
{
if
(
event
.
eventTotal
>
0
)
{
Promise
.
all
([
event
.
getEventData
(
common
.
getDefaultLedger
(),
address
,
param
)
]).
then
(()
=>
{
closeLoading
();
});
}
else
{
closeLoading
();
}
})
}
onPageChangeName
=
(
page
,
pageSize
)
=>
{
const
{
store
:
{
event
}
}
=
this
.
props
;
const
{
data
,
store
:
{
common
,
event
}
}
=
this
.
props
;
event
.
setName
(
page
);
this
.
expandedRowKeysName
=
[];
let
address
=
data
.
address
&&
data
.
address
.
value
&&
data
.
address
.
value
||
''
;
let
param
=
{
fromSequence
:
(
event
.
nameCurrent
-
1
)
*
this
.
pageEvent
,
count
:
this
.
pageEvent
,
}
Promise
.
all
([
event
.
getEventName
(
common
.
getDefaultLedger
(),
address
,
event
.
nameRecord
,
param
)
]).
then
(()
=>
{
})
}
onShow
=
(
record
,
index
)
=>
{
...
...
@@ -38,7 +93,7 @@ export default class EventInfo extends Component {
fromSequence
:
(
event
.
nameCurrent
-
1
)
*
this
.
pageEvent
,
count
:
this
.
pageEvent
,
}
event
.
setNameRecord
(
record
)
Promise
.
all
([
event
.
getEventName
(
common
.
getDefaultLedger
(),
address
,
record
,
param
)
]).
then
(()
=>
{
...
...
@@ -47,11 +102,12 @@ export default class EventInfo extends Component {
}
onClose
=
()
=>
{
const
{
data
,
store
:
{
common
,
event
}
}
=
this
.
props
;
this
.
visible
=
false
;
event
.
setName
(
1
)
}
onShowLatest
=
(
e
,
record
)
=>
{
console
.
log
(
e
)
const
{
data
,
store
:
{
common
,
event
}
}
=
this
.
props
;
let
address
=
data
.
address
&&
data
.
address
.
value
&&
data
.
address
.
value
||
''
;
...
...
@@ -59,7 +115,7 @@ export default class EventInfo extends Component {
Promise
.
all
([
event
.
getEventLatest
(
common
.
getDefaultLedger
(),
address
,
record
)
]).
then
(()
=>
{
console
.
log
(
event
.
dataLatest
)
})
}
...
...
@@ -111,27 +167,90 @@ export default class EventInfo extends Component {
}]
}
// 子表展开收缩函数
handleExpandShow
=
(
expanded
,
record
)
=>
{
if
(
expanded
)
{
let
testArr
=
[];
testArr
.
push
(
record
);
this
.
expandedRowKeys
=
[...
testArr
];
}
else
{
this
.
expandedRowKeys
=
[...
arrayRemove
(
this
.
expandedRowKeys
,
record
)]
}
}
handleExpandShowName
=
(
expanded
,
record
)
=>
{
if
(
expanded
)
{
let
testArr
=
[];
testArr
.
push
(
record
.
index
);
this
.
expandedRowKeysName
=
[...
testArr
];
console
.
log
(
record
,
this
.
expandedRowKeysName
)
}
else
{
this
.
expandedRowKeysName
=
[...
arrayRemove
(
this
.
expandedRowKeysName
,
record
.
index
)]
}
}
nameColumns
=
()
=>
{
return
[{
dataIndex
:
'
sequence
'
,
title
:
'
事件序列
'
,
},
{
},
{
dataIndex
:
'
transactionSource.value
'
,
title
:
'
交易哈希
'
,
},
{
},
{
title
:
'
合约地址
'
,
dataIndex
:
'
contractSource
'
,
},
{
},
{
title
:
'
区块高度
'
,
dataIndex
:
'
blockHeight
'
,
},
{
title
:
'
事件账户
'
,
dataIndex
:
'
eventAccount.value
'
},
{
title
:
'
事件名称
'
,
dataIndex
:
'
name
'
,
}]
},
// {
// title: '事件账户',
// dataIndex: 'eventAccount.value'
// },
// {
// title: '事件名称',
// dataIndex: 'name',
// }
]
}
eventContent
=
record
=>
{
return
(
<
div
className
=
{
styles
.
info
}
>
<
Row
className
=
{
styles
.
gl
}
>
<
Col
span
=
{
4
}
xs
=
{
24
}
sm
=
{
8
}
lg
=
{
4
}
>
事件账户
:
<
/Col
>
<
Col
span
=
{
20
}
xs
=
{
24
}
sm
=
{
16
}
lg
=
{
20
}
>
{
record
.
eventAccount
&&
record
.
eventAccount
.
value
&&
record
.
eventAccount
.
value
||
''
}
<
/Col
>
<
Col
span
=
{
4
}
xs
=
{
24
}
sm
=
{
8
}
lg
=
{
4
}
>
事件名称
:
<
/Col
>
<
Col
span
=
{
20
}
xs
=
{
24
}
sm
=
{
16
}
lg
=
{
20
}
>
{
record
.
name
&&
record
.
name
||
''
}
<
/Col
>
{
/* <Col span = {4} xs = {24} sm = {8} lg = {4}>内容:</Col>
<Col span = {20} xs = {24} sm = {16} lg = {20}>
<ul>
<li>nil: {record.content && record.content.nil && record.content.nil || false}</li>
<li>bytes: {record.content && record.content.bytes && record.content.bytes.value && record.content.bytes.value || false}</li>
<li>type: {record.content && record.content.type && record.content.type || ''}</li>
<li>value: {record.content && record.content.value && record.content.value || ''}</li>
</ul>
</Col> */
}
<
Col
span
=
{
4
}
xs
=
{
24
}
sm
=
{
8
}
lg
=
{
4
}
>
nil
:
<
/Col
>
<
Col
span
=
{
8
}
xs
=
{
24
}
sm
=
{
16
}
lg
=
{
8
}
>
{
record
.
content
&&
record
.
content
.
nil
&&
record
.
content
.
nil
||
false
}
<
/Col
>
<
Col
span
=
{
4
}
xs
=
{
24
}
sm
=
{
8
}
lg
=
{
4
}
>
bytes
:
<
/Col
>
<
Col
span
=
{
8
}
xs
=
{
24
}
sm
=
{
16
}
lg
=
{
8
}
>
{
record
.
content
&&
record
.
content
.
bytes
&&
record
.
content
.
bytes
.
value
&&
record
.
content
.
bytes
.
value
||
false
}
<
/Col
>
<
Col
span
=
{
4
}
xs
=
{
24
}
sm
=
{
8
}
lg
=
{
4
}
>
type
:
<
/Col
>
<
Col
span
=
{
8
}
xs
=
{
24
}
sm
=
{
16
}
lg
=
{
8
}
>
{
record
.
content
&&
record
.
content
.
type
&&
record
.
content
.
type
||
''
}
<
/Col
>
<
Col
span
=
{
4
}
xs
=
{
24
}
sm
=
{
8
}
lg
=
{
4
}
>
value
:
<
/Col
>
<
Col
span
=
{
8
}
xs
=
{
24
}
sm
=
{
16
}
lg
=
{
8
}
>
{
record
.
content
&&
record
.
content
.
value
&&
record
.
content
.
value
||
''
}
<
/Col
>
<
/Row
>
<
/div
>
)
}
render
()
{
...
...
@@ -150,12 +269,13 @@ export default class EventInfo extends Component {
<
h3
>
事件列表
<
/h3
>
<
Table
rowKey
=
{
record
=>
record
}
dataSource
=
{
event
.
dataEvent
}
columns
=
{
this
.
eventColumns
()}
// onExpand = {this.onShowLatest
}
expandedRowKeys
=
{
this
.
expandedRowKeys
}
expandedRowRender
=
{
this
.
expandedRowRender
}
onExpand
=
{(
expanded
,
record
)
=>
this
.
handleExpandShow
(
expanded
,
record
)}
onRow
=
{
record
=>
({
// onMouse: event => this.onShowLatest(event)
onMouseOver
:
event
=>
this
.
onShowLatest
(
event
,
record
)
}
)}
...
...
@@ -170,13 +290,14 @@ export default class EventInfo extends Component {
<
/div
>
<
Drawer
title
=
"
事件详情
"
title
=
"
历史记录
"
maskClosable
=
{
false
}
onClose
=
{
this
.
onClose
}
visible
=
{
this
.
visible
}
width
=
{
1200
}
>
<
Table
rowKey
=
{
record
=>
record
.
index
}
dataSource
=
{
event
.
dataName
}
columns
=
{
this
.
nameColumns
()}
pagination
=
{{
...
...
@@ -186,6 +307,9 @@ export default class EventInfo extends Component {
onChange
:
this
.
onPageChangeName
,
showQuickJumper
:
true
}}
onExpand
=
{(
expanded
,
record
)
=>
this
.
handleExpandShowName
(
expanded
,
record
)}
expandedRowKeys
=
{
this
.
expandedRowKeysName
}
expandedRowRender
=
{
record
=>
this
.
eventContent
(
record
)}
/
>
<
/Drawer
>
<
/div
>
...
...
data-explorer/src/web/components/transactionInfo/transactionInfo.t.html
浏览文件 @
44fb6b20
...
...
@@ -190,6 +190,22 @@
</BlockCollapsePanel>
</
#
if>
<!-- 事件账户 -->
<
#if
{{
this.eventAccountID
}}
>
<BlockCollapsePanel
title=
"事件账户"
>
<table
style=
"line-height:41px;width:100%;"
>
<tr>
<td>
事件账户地址:
</td>
<td>
{{this.eventAccountID.address.value}}
</td>
</tr>
<tr>
<td>
事件账户公钥算法:
</td>
<td>
{{tranBase58(this.eventAccountID.pubKey.value)}}
</td>
</tr>
</table>
</BlockCollapsePanel>
</
#
if>
<!-- 角色配置 -->
<
#if
{{
this.roles
}}
>
<BlockCollapsePanel
title=
"角色配置"
>
...
...
@@ -202,11 +218,13 @@
<!-- <td>{{enableLedgerPermissions && enableLedgerPermissions.join(',') || ''}}</td> -->
<td>
{{enableLedgerPermissions
&&
transform(enableLedgerPermissions) || ''}}
</td>
</tr>
<
#if
{{
disableLedgerPermissions
&&
disableLedgerPermissions.length
!=
0}}
>
<tr>
<td>
不可执行的操作:
</td>
<!-- <td>{{disableLedgerPermissions && disableLedgerPermissions.join(',') || ''}}</td> -->
<td>
{{disableLedgerPermissions
&&
transform(disableLedgerPermissions) || ''}}
</td>
</tr>
</
#
if>
</table>
</BlockCollapseSmall>
<BlockCollapseSmall
title=
"交易操作权限"
>
...
...
@@ -216,11 +234,13 @@
<!-- <td>{{enableTransactionPermissions && enableTransactionPermissions.join(',') || ''}}</td> -->
<td>
{{enableTransactionPermissions
&&
transform(enableTransactionPermissions) || ''}}
</td>
</tr>
<
#if
{{
disableTransactionPermissions
&&
disableTransactionPermissions.length
!=
0}}
>
<tr>
<td>
不可执行的操作:
</td>
<td>
{{disableTransactionPermissions
&&
transform(disableTransactionPermissions) || ''}}
</td>
<!-- <td>{{disableTransactionPermissions && disableTransactionPermissions.join(',') || ''}}</td> -->
</tr>
</
#
if>
</table>
</BlockCollapseSmall>
</BlockCollapse>
...
...
@@ -237,6 +257,18 @@
<td>
用户地址:
</td>
<td>
{{(userAddresses
&&
userAddresses[0]
&&
userAddresses[0].value)
&&
userAddresses[0].value || ''}}
</td>
</tr>
<!-- <#if {{authorizedRoles && authorizedRoles.length != 0}}>
<tr>
<td>用户授权的角色清单:</td>
<td>{{authorizedRoles && authorizedRoles.join(',') || ''}}</td>
</tr>
</#if>
<#if {{unauthorizedRoles && unauthorizedRoles.length != 0}}>
<tr>
<td>用户未授权的角色清单:</td>
<td>{{unauthorizedRoles && unauthorizedRoles.join(',') || ''}}</td>
</tr>
</#if> -->
<tr>
<td>
用户授权的角色清单:
</td>
<td>
{{authorizedRoles
&&
authorizedRoles.join(',') || ''}}
</td>
...
...
data-explorer/src/web/pages/event/event.js
浏览文件 @
44fb6b20
...
...
@@ -30,12 +30,17 @@ export default class Event extends Component {
@
observable
accountData
=
{};
@
observable
click
=
0
;
@
observable
show
=
false
;
@
observable
accou
ntAddress
=
''
;
@
observable
eve
ntAddress
=
''
;
constructor
(
props
)
{
super
(
props
);
}
onInputChange
=
e
=>
{
this
.
eventAddress
=
e
.
target
.
value
;
console
.
log
(
this
.
eventAddress
)
}
componentDidMount
()
{
const
{
store
:
{
header
}
}
=
this
.
props
;
header
.
setSelectMenu
([
'
event
'
]);
...
...
@@ -62,7 +67,7 @@ export default class Event extends Component {
]).
then
(()
=>
{
if
(
event
.
accountcount
>
0
)
{
Promise
.
all
([
event
.
getAccount
(
leaders
,
param
)
event
.
getAccount
(
leaders
,
param
,
this
.
eventAddress
)
]).
then
(()
=>
{
closeLoading
();
});
...
...
@@ -72,17 +77,6 @@ export default class Event extends Component {
})
}
//模糊查询
@
autobind
onSerchInfo
()
{
if
(
this
.
accountAddress
.
trim
()
!=
''
)
{
this
.
onSearchVague
();
}
else
{
this
.
onSearch
()
}
}
@
autobind
onPageChange
(
page
,
pageSize
)
{
const
{
store
:
{
event
}
}
=
this
.
props
;
...
...
@@ -97,12 +91,17 @@ export default class Event extends Component {
const
closeLoading
=
Message
.
loading
(
'
正在获取数据...
'
,
0
);
let
param
=
{
fromIndex
:
0
,
count
:
10
,
};
Promise
.
all
([
event
.
getEventCount
(
common
.
getDefaultLedger
(),
address
)
]).
then
(()
=>
{
if
(
event
.
eventTotal
>
0
)
{
Promise
.
all
([
event
.
getEvent
(
common
.
getDefaultLedger
(),
address
)
event
.
getEvent
Data
(
common
.
getDefaultLedger
(),
address
,
param
)
]).
then
(()
=>
{
closeLoading
();
this
.
accountData
=
record
;
...
...
@@ -119,7 +118,13 @@ export default class Event extends Component {
}
onShow
=
()
=>
{
const
{
store
:
{
common
,
event
}
}
=
this
.
props
;
this
.
show
=
!
this
.
show
;
// this.eventAddress = '';
event
.
setCurrent
(
1
)
event
.
setEvent
(
1
)
event
.
setName
(
1
)
}
@
computed
get
eventColumns
()
{
...
...
@@ -144,7 +149,6 @@ export default class Event extends Component {
render
()
{
const
{
store
:
{
event
}
}
=
this
.
props
;
console
.
log
(
event
.
tableData
)
return
tmpls
.
container
(
this
.
state
,
this
.
props
,
this
,
{
styles
,
event
,
...
...
data-explorer/src/web/pages/event/event.t.html
浏览文件 @
44fb6b20
...
...
@@ -4,8 +4,8 @@
事件账户
</h2>
<div
style=
"margin-bottom:20px;"
#show
={!
show
}
>
<ant-Input
style=
"width:200px;margin-right:20px"
/>
<ant-Button
style=
"margin-right:20px"
icon=
"search"
type=
"primary"
class=
"{styles.btn}"
onClick=
{
SerchInfo
}
>
查询
</ant-Button>
<ant-Input
style=
"width:200px;margin-right:20px"
value=
{eventAddress}
onChange=
{onInputChange}
/
>
<ant-Button
style=
"margin-right:20px"
icon=
"search"
type=
"primary"
class=
"{styles.btn}"
onClick=
{
onSearch
}
>
查询
</ant-Button>
</div>
<div
class=
"{styles.datapanel}"
#show
={!
show
}
>
<ant-Table
...
...
data-explorer/src/web/pages/search/search.t.html
浏览文件 @
44fb6b20
...
...
@@ -76,7 +76,7 @@
</div>
</router-Link>
<!-- 事件账户总数,暂时以数据账户代替 -->
<router-Link
to=
'event'
class=
"{styles.link}"
>
<
!-- <
router-Link to='event' class="{styles.link}">
<div class="{styles.tabs} {styles.ledgers}">
<div class="{styles.span}">
<div class="{styles.left}">
...
...
@@ -90,7 +90,7 @@
</div>
</div>
</div>
</router-Link>
</router-Link>
-->
<router-Link
to=
'contract'
class=
"{styles.link}"
>
<div
class=
"{styles.tabs} {styles.contracts}"
>
<div
class=
"{styles.span}"
>
...
...
@@ -115,7 +115,7 @@
<span>
{search.txsData.length}
</span>
条交易内容,
<span>
{search.contractsData.length}
</span>
条合约数据,
<span>
{search.accountsData.length}
</span>
条数据账户,
<
span>
{search.eventData.length}
</span>
条事件账户,
<
!-- <span>{search.eventData.length}</span>条事件账户, -->
<span>
{search.usersData.length}
</span>
条用户数据
</div>
<ant-Tabs>
...
...
@@ -171,20 +171,13 @@
</
#
each>
<!-- 事件账户 -->
<
#each
{{
search.eventData
}}
>
<
!-- <
#each {{search.eventData}}>
<article key={@index} class="{styles.option}">
<p class="{styles.title}">
<!-- <span>数据账户地址:</span>
<span :dangerouslySetInnerHTML="{__html: highLIght(address.value)}"></span>
<span>数据账户公钥:</span>
<span :dangerouslySetInnerHTML="{__html: highLIght(pubKey.value)}"></span>
<span>数据账户公钥算法:</span>
<span :dangerouslySetInnerHTML="{__html: tranBase58(pubKey.value)}"></span>
<span>默克尔树根哈希</span>
<span><AccountRootHash address={address.value}/></span> -->
</p>
</article>
</
#
each>
</#each>
-->
<!-- 用户数据 -->
<
#each
{{
search.usersData
}}
>
...
...
@@ -287,17 +280,11 @@
</
#
else>
</
#
if>
</ant-TabPane>
<ant-TabPane
tab=
"事件账户"
key=
"5"
>
<
!-- <
ant-TabPane tab="事件账户" key="5">
<#if {{search.eventData.length > 0}}>
<#each {{search.eventData}}>
<article key={@index} class="{styles.option}">
<p class="{styles.title}">
<!-- <span>用户地址:</span>
<span :dangerouslySetInnerHTML="{__html: highLIght(address.value)}"></span>
<span>用户公钥:</span>
<span :dangerouslySetInnerHTML="{__html: highLIght(pubKey.value)}"></span>
<span>用户公钥算法:</span>
<span :dangerouslySetInnerHTML="{__html: tranBase58(pubKey.value)}"></span> -->
</p>
</article>
</#each>
...
...
@@ -308,7 +295,7 @@
暂无数据
</#else>
</#if>
</ant-TabPane>
</ant-TabPane>
-->
<ant-TabPane
tab=
"用户"
key=
'6'
>
<
#if
{{
search.usersData.length
>
0}}>
<
#each
{{
search.usersData
}}
>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录