Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
csbr-daop
/
fe-data-trusted-space
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
4e2618d5
authored
2025-12-15 17:54:45 +0800
by
lihua
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
溯源查询功能
1 parent
62fa0c56
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
817 additions
and
0 deletions
src/api/modules/dataSmartContract.ts
src/router/modules/dataSmartContract.ts
src/views/data_smart_contract/traceabilityInquiryManage.vue
src/api/modules/dataSmartContract.ts
View file @
4e2618d
...
...
@@ -328,3 +328,16 @@ export const getSignatureFile = (params, data) => request({
'Content-Type'
:
'multipart/form-data'
}
})
/** ---------------------- 区块链日志 ---------------------- */
export
const
getBlockChainPageList
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_DIGITAL_CONTRACT_URL
}
/blockchain-code/page-list`
,
method
:
'post'
,
data
:
params
})
export
const
getBlockChainDetail
=
(
params
)
=>
request
({
url
:
`
${
import
.
meta
.
env
.
VITE_APP_DIGITAL_CONTRACT_URL
}
/blockchain-detail/chain-page-list`
,
method
:
'post'
,
data
:
params
})
...
...
src/router/modules/dataSmartContract.ts
View file @
4e2618d
...
...
@@ -197,6 +197,26 @@ const routes: RouteRecordRaw[] = [
},
}]
},
{
path
:
'/data-smart-contract-common/traceability-inquiry-manage'
,
component
:
Layout
,
meta
:
{
title
:
'溯源查询'
,
icon
:
'sidebar-videos'
,
},
children
:
[{
path
:
''
,
name
:
'traceabilityInquiryManage'
,
component
:
()
=>
import
(
'@/views/data_smart_contract/traceabilityInquiryManage.vue'
),
meta
:
{
title
:
''
,
sidebar
:
false
,
breadcrumb
:
false
,
cache
:
true
,
editPage
:
true
},
}]
},
]
export
default
routes
\ No newline at end of file
...
...
src/views/data_smart_contract/traceabilityInquiryManage.vue
0 → 100644
View file @
4e2618d
<route
lang=
"yaml"
>
name: traceabilityInquiryManage
</route>
<
script
lang=
"ts"
setup
name=
"traceabilityInquiryManage"
>
import
TableTools
from
"@/components/Tools/table_tools.vue"
;
import
{
getBlockChainPageList
,
getBlockChainDetail
}
from
"@/api/modules/dataSmartContract"
;
import
{
commonPageConfig
}
from
"@/components/PageNav"
;
import
{
TableColumnWidth
}
from
"@/utils/enum"
;
const
{
proxy
}
=
getCurrentInstance
()
as
any
;
const
blockTableSearchItemList
=
ref
([{
type
:
"input"
,
label
:
""
,
field
:
"keyWord"
,
default
:
""
,
placeholder
:
"编码/名称"
,
maxlength
:
50
,
clearable
:
true
,
}]);
const
blockPage
=
ref
({
...
commonPageConfig
,
keyWord
:
''
});
const
toBlockTableSearch
=
(
val
:
any
,
clear
:
boolean
=
false
)
=>
{
if
(
clear
)
{
blockTableSearchItemList
.
value
.
map
((
item
)
=>
(
item
.
default
=
""
));
blockPage
.
value
.
keyWord
=
''
;
}
else
{
blockPage
.
value
.
keyWord
=
val
.
keyWord
;
}
getBlockTableData
();
};
const
processTableInfo
=
ref
({
id
:
"process-table"
,
rowKey
:
'guid'
,
fields
:
[
{
label
:
"序号"
,
type
:
"index"
,
width
:
TableColumnWidth
.
INDEX
,
align
:
"center"
},
{
label
:
"编码"
,
field
:
"code"
,
width
:
355
},
{
label
:
"名称"
,
field
:
"name"
,
width
:
160
},
{
label
:
"类型"
,
field
:
"type"
,
width
:
120
},
{
label
:
"提交日期"
,
field
:
"submitTime"
,
width
:
170
},
{
label
:
"所属主体"
,
field
:
"tenantName"
,
minWidth
:
200
}
],
data
:
[{
guid
:
'1'
}],
showPage
:
true
,
page
:
{
type
:
"normal"
,
rows
:
0
,
...
blockPage
.
value
,
},
loading
:
false
,
});
const
getBlockTableData
=
()
=>
{
// processTableInfo.value.loading = true
// getBlockChainPageList({
// pageIndex: blockPage.value.curr,
// pageSize: blockPage.value.limit,
// keyWord: blockPage.value.keyWord
// }).then((res: any) => {
// processTableInfo.value.data = [];
// if (res?.code == proxy.$passCode) {
// const data = res.data || {};
// processTableInfo.value.loading = false
// processTableInfo.value.data = data.records || []
// processTableInfo.value.page.limit = data.pageSize
// processTableInfo.value.page.curr = data.pageIndex
// processTableInfo.value.page.rows = data.totalRows
// } else {
// res?.msg && proxy.$ElMessage.error(res?.msg)
// processTableInfo.value.loading = false
// }
// }).catch(() => {
// processTableInfo.value.loading = false
// })
}
const
processTablePageChange
=
(
info
)
=>
{
blockPage
.
value
.
curr
=
Number
(
info
.
curr
);
blockPage
.
value
.
limit
=
Number
(
info
.
limit
);
processTableInfo
.
value
.
page
.
curr
=
blockPage
.
value
.
curr
;
processTableInfo
.
value
.
page
.
limit
=
blockPage
.
value
.
limit
;
getBlockTableData
();
};
onBeforeMount
(()
=>
{
toBlockTableSearch
({});
})
const
activities
:
any
=
ref
([]);
const
detailLoading
=
ref
(
false
);
const
handleTableExpandChange
=
(
row
:
any
,
expandedRows
:
any
[])
=>
{
let
expand
=
expandedRows
.
includes
(
row
);
if
(
!
expand
)
{
return
;
}
const
data
:
any
=
[
{
"updateTime"
:
"2025-12-15 13:33:22"
,
"updateUserName"
:
"尹总监"
,
"guid"
:
"1b2a69f9de30445290ee1f0c4814d8cd"
,
"connectId"
:
null
,
"productId"
:
"691110108665628935500000RZY7D3OYM"
,
"contractId"
:
"83911101086656289355008420251215132943WYTFAP3Y7"
,
"labelName"
:
"数据销毁"
,
"logHash"
:
"c99d2ac8e3cc6de35e3e46225c246e341f131b5ff7f3d4ce1a8d37bf21681b55"
,
"blockchainTx"
:
"b5b149599f207463210af117537a3577520769221c8f132cef68ac82fa1c72fc"
,
"submitter"
:
"某创新药企业"
,
"bizName"
:
"测试区块链记录合约"
,
"bizType"
:
"合约"
,
"contractSubmitName"
:
"某创新药企业"
,
"contractProviderName"
:
"某创新药企业"
,
"contractUseName"
:
"某地医院"
,
"blockchainTime"
:
"2025-12-15 13:33:24"
},
{
"updateTime"
:
"2025-12-15 13:33:22"
,
"updateUserName"
:
"尹总监"
,
"guid"
:
"da2ae6fd87c64ffb9337edb74655e153"
,
"connectId"
:
null
,
"productId"
:
"691110108665628935500000RZY7D3OYM"
,
"contractId"
:
"83911101086656289355008420251215132943WYTFAP3Y7"
,
"labelName"
:
"合约解除"
,
"logHash"
:
"6e6dea2d5802717d6b411441e9b05efdb34bc6cfbf383c214366ff1b7be29ecd"
,
"blockchainTx"
:
"77ba6fd78c22546dbb038eaaf266aafc1146ebb59fee3e75da0ad3ee7771a2fa"
,
"submitter"
:
"某创新药企业"
,
"bizName"
:
"测试区块链记录合约"
,
"bizType"
:
"合约"
,
"contractSubmitName"
:
"某创新药企业"
,
"contractProviderName"
:
"某创新药企业"
,
"contractUseName"
:
"某地医院"
,
"blockchainTime"
:
"2025-12-15 13:33:24"
},
{
"updateTime"
:
"2025-12-15 13:33:01"
,
"updateUserName"
:
"尹总监"
,
"guid"
:
"3b35567d2aa748978b28c9115f5390e0"
,
"connectId"
:
null
,
"productId"
:
"691110108665628935500000RZY7D3OYM"
,
"contractId"
:
"83911101086656289355008420251215132943WYTFAP3Y7"
,
"labelName"
:
"数据使用"
,
"logHash"
:
"ec6183cb199e8df086c34520c667543227da5a6acf70f7cecccf11a92bb905cc"
,
"blockchainTx"
:
"517092b54fd932a8a9d9f12219217a01ce8cf3772f2a77bcd874c3bda106529b"
,
"submitter"
:
"某地医院"
,
"bizName"
:
"测试区块链记录合约"
,
"bizType"
:
"合约"
,
"contractSubmitName"
:
"某创新药企业"
,
"contractProviderName"
:
"某创新药企业"
,
"contractUseName"
:
"某地医院"
,
"blockchainTime"
:
"2025-12-15 13:33:05"
},
{
"updateTime"
:
"2025-12-15 13:32:59"
,
"updateUserName"
:
"尹总监"
,
"guid"
:
"a4089faa09e64a199cf3e7cb04812a7d"
,
"connectId"
:
null
,
"productId"
:
"691110108665628935500000RZY7D3OYM"
,
"contractId"
:
"83911101086656289355008420251215132943WYTFAP3Y7"
,
"labelName"
:
"数据使用"
,
"logHash"
:
"c6bf535ed81cbcaee3beed0792e3ce90b3f64e7786551df349930dc0f68e6fa1"
,
"blockchainTx"
:
"f12d973c226d9edd404b9cd0f056da8f6cfd005cfeeee6e2fbf6134e8d477e4f"
,
"submitter"
:
"某地医院"
,
"bizName"
:
"测试区块链记录合约"
,
"bizType"
:
"合约"
,
"contractSubmitName"
:
"某创新药企业"
,
"contractProviderName"
:
"某创新药企业"
,
"contractUseName"
:
"某地医院"
,
"blockchainTime"
:
"2025-12-15 13:33:01"
},
{
"updateTime"
:
"2025-12-15 13:32:55"
,
"updateUserName"
:
"尹总监"
,
"guid"
:
"e0039215516f4b78a8cfd9f9781aaaf3"
,
"connectId"
:
null
,
"productId"
:
"691110108665628935500000RZY7D3OYM"
,
"contractId"
:
"83911101086656289355008420251215132943WYTFAP3Y7"
,
"labelName"
:
"数据使用"
,
"logHash"
:
"d399699c6a6a6377fe060cf46197c96de50d73677ecc7b53b31622975f2e6156"
,
"blockchainTx"
:
"5dce456b0aa44130d64ba039dc966ed6f24b22965027c7d0d780f78a84a82dcf"
,
"submitter"
:
"某地医院"
,
"bizName"
:
"测试区块链记录合约"
,
"bizType"
:
"合约"
,
"contractSubmitName"
:
"某创新药企业"
,
"contractProviderName"
:
"某创新药企业"
,
"contractUseName"
:
"某地医院"
,
"blockchainTime"
:
"2025-12-15 13:32:58"
},
{
"updateTime"
:
"2025-12-15 13:32:35"
,
"updateUserName"
:
"尹总监"
,
"guid"
:
"0bcba4903e2b4758931f5952daa7b7f9"
,
"connectId"
:
null
,
"productId"
:
"691110108665628935500000RZY7D3OYM"
,
"contractId"
:
"83911101086656289355008420251215132943WYTFAP3Y7"
,
"labelName"
:
"数据交付"
,
"logHash"
:
"429a64e38d1d9ecb1d01801f3e2394b78da7e2243a97e77d4a7fff845fca3133"
,
"blockchainTx"
:
"8186385634c40af96de4839a0f29de57a1a179229d70b57d39ea8073daf6be42"
,
"submitter"
:
"某创新药企业"
,
"bizName"
:
"测试区块链记录合约"
,
"bizType"
:
"合约"
,
"contractSubmitName"
:
"某创新药企业"
,
"contractProviderName"
:
"某创新药企业"
,
"contractUseName"
:
"某地医院"
,
"blockchainTime"
:
"2025-12-15 13:32:38"
},
{
"updateTime"
:
"2025-12-15 13:31:50"
,
"updateUserName"
:
"尹总监"
,
"guid"
:
"59abd7656f2e49519893ca096ceadc22"
,
"connectId"
:
null
,
"productId"
:
"691110108665628935500000RZY7D3OYM"
,
"contractId"
:
"83911101086656289355008420251215132943WYTFAP3Y7"
,
"labelName"
:
"合约签署"
,
"logHash"
:
"6a41c11930024f2289cccbab467bd79bbe1fc38414971a6375fe9abf7ff2ac84"
,
"blockchainTx"
:
"ba63af760c49d6301afcc5e36d48f224884fb1b87c623350e215955b2dca6a13"
,
"submitter"
:
"某创新药企业"
,
"bizName"
:
"测试区块链记录合约"
,
"bizType"
:
"合约"
,
"contractSubmitName"
:
"某创新药企业"
,
"contractProviderName"
:
"某创新药企业"
,
"contractUseName"
:
"某地医院"
,
"blockchainTime"
:
"2025-12-15 13:31:51"
},
{
"updateTime"
:
"2025-12-15 13:31:49"
,
"updateUserName"
:
"尹总监"
,
"guid"
:
"06e1254f8f1349748774799603d9aa2e"
,
"connectId"
:
null
,
"productId"
:
"691110108665628935500000RZY7D3OYM"
,
"contractId"
:
"83911101086656289355008420251215132943WYTFAP3Y7"
,
"labelName"
:
"合约履约中"
,
"logHash"
:
"4ad0513a3a58a92b83bc2c53c0e6d16a537f03e357104965a51cf87637c9a821"
,
"blockchainTx"
:
"a9e2dbb4e2dc10c60eb8584a2ad29fb64db920a38af3a74e17e73394ea1d20f3"
,
"submitter"
:
"某创新药企业"
,
"bizName"
:
"测试区块链记录合约"
,
"bizType"
:
"合约"
,
"contractSubmitName"
:
"某创新药企业"
,
"contractProviderName"
:
"某创新药企业"
,
"contractUseName"
:
"某地医院"
,
"blockchainTime"
:
"2025-12-15 13:31:51"
},
{
"updateTime"
:
"2025-12-15 13:31:16"
,
"updateUserName"
:
"尹总监"
,
"guid"
:
"3ce91910e42c4944a40541afcd0a7e68"
,
"connectId"
:
null
,
"productId"
:
"691110108665628935500000RZY7D3OYM"
,
"contractId"
:
"83911101086656289355008420251215132943WYTFAP3Y7"
,
"labelName"
:
"合约签署"
,
"logHash"
:
"5f932532568b2815715bc56ab77dcd7871110e9443e1a6fff284ef7a6d92a409"
,
"blockchainTx"
:
"d9a0b2c23e26820b4979db658d6bcb0ba6e6a375e5da91912fb43dd031d831f4"
,
"submitter"
:
"某地医院"
,
"bizName"
:
"测试区块链记录合约"
,
"bizType"
:
"合约"
,
"contractSubmitName"
:
"某创新药企业"
,
"contractProviderName"
:
"某创新药企业"
,
"contractUseName"
:
"某地医院"
,
"blockchainTime"
:
"2025-12-15 13:31:18"
},
{
"updateTime"
:
"2025-12-15 13:30:44"
,
"updateUserName"
:
"尹总监"
,
"guid"
:
"570eb98aef004f92b55a91caaa89e9d3"
,
"connectId"
:
null
,
"productId"
:
"691110108665628935500000RZY7D3OYM"
,
"contractId"
:
"83911101086656289355008420251215132943WYTFAP3Y7"
,
"labelName"
:
"合约确认"
,
"logHash"
:
"1a8376ef1afa41140959386eef95e5d72e96cd8257612bb47e4cf7562fd0da45"
,
"blockchainTx"
:
"0684ee016568bbb3734ef446b9b92a352100de7b951119132691e9d1cd38b1a0"
,
"submitter"
:
"某地医院"
,
"bizName"
:
"测试区块链记录合约"
,
"bizType"
:
"合约"
,
"contractSubmitName"
:
"某创新药企业"
,
"contractProviderName"
:
"某创新药企业"
,
"contractUseName"
:
"某地医院"
,
"blockchainTime"
:
"2025-12-15 13:30:47"
},
{
"updateTime"
:
"2025-12-15 13:29:46"
,
"updateUserName"
:
"尹总监"
,
"guid"
:
"f310ff4aa25243ada67dbbb10b7d2564"
,
"connectId"
:
null
,
"productId"
:
"691110108665628935500000RZY7D3OYM"
,
"contractId"
:
"83911101086656289355008420251215132943WYTFAP3Y7"
,
"labelName"
:
"合约创建"
,
"logHash"
:
"26a20d03581e4f83e388b1287050c808e59bd359fdc30a25d85dc3b9997bead8"
,
"blockchainTx"
:
"0547f7045a78b310bffe6a324f78f72b4dee264bc1172fa5bb69131183b81a83"
,
"submitter"
:
"某创新药企业"
,
"bizName"
:
"测试区块链记录合约"
,
"bizType"
:
"合约"
,
"contractSubmitName"
:
"某创新药企业"
,
"contractProviderName"
:
"某创新药企业"
,
"contractUseName"
:
"某地医院"
,
"blockchainTime"
:
"2025-12-15 13:29:48"
},
{
"updateTime"
:
"2025-12-15 13:27:56"
,
"updateUserName"
:
"尹总监"
,
"guid"
:
"e6713d53dbcc46da82c960b156811df9"
,
"connectId"
:
null
,
"productId"
:
"691110108665628935500000RZY7D3OYM"
,
"contractId"
:
null
,
"labelName"
:
"数据产品上架审批通过"
,
"logHash"
:
"41de37476ee51843b57c5ce409adbc95aadc4234eb76f8d9ab7a4fc858f8b1e8"
,
"blockchainTx"
:
"6593a23d18ad6dcfa2663a3c371cb8d7e3af58b811d7ce264363f38d51718f0b"
,
"submitter"
:
"北京传世博润科技有限公司"
,
"bizName"
:
"测试数据产品区块链记录"
,
"bizType"
:
null
,
"contractSubmitName"
:
null
,
"contractProviderName"
:
null
,
"contractUseName"
:
null
,
"blockchainTime"
:
"2025-12-15 13:27:22"
},]
activities
.
value
=
[];
for
(
const
d
of
data
)
{
activities
.
value
.
push
({
timestamp
:
d
.
labelName
+
' '
+
d
.
updateTime
,
type
:
'primary'
,
hollow
:
true
,
info
:
d
})
}
//detailLoading.value = true;
// getBlockChainDetail({
// pageIndex: 1,
// pageSize: -1,
// type: row.type,
// code: row.code
// }).then((res: any) => {
// detailLoading.value = false;
// if (res?.code == proxy.$passCode) {
// // const data = res.data || [];
// const data: any = [ {
// "updateTime": "2025-12-15 13:33:22",
// "updateUserName": "尹总监",
// "guid": "1b2a69f9de30445290ee1f0c4814d8cd",
// "connectId": null,
// "productId": "691110108665628935500000RZY7D3OYM",
// "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
// "labelName": "数据销毁",
// "logHash": "c99d2ac8e3cc6de35e3e46225c246e341f131b5ff7f3d4ce1a8d37bf21681b55",
// "blockchainTx": "b5b149599f207463210af117537a3577520769221c8f132cef68ac82fa1c72fc",
// "submitter": "某创新药企业",
// "bizName": "测试区块链记录合约",
// "bizType": "合约",
// "contractSubmitName": "某创新药企业",
// "contractProviderName": "某创新药企业",
// "contractUseName": "某地医院",
// "blockchainTime": "2025-12-15 13:33:24"
// },
// {
// "updateTime": "2025-12-15 13:33:22",
// "updateUserName": "尹总监",
// "guid": "da2ae6fd87c64ffb9337edb74655e153",
// "connectId": null,
// "productId": "691110108665628935500000RZY7D3OYM",
// "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
// "labelName": "合约解除",
// "logHash": "6e6dea2d5802717d6b411441e9b05efdb34bc6cfbf383c214366ff1b7be29ecd",
// "blockchainTx": "77ba6fd78c22546dbb038eaaf266aafc1146ebb59fee3e75da0ad3ee7771a2fa",
// "submitter": "某创新药企业",
// "bizName": "测试区块链记录合约",
// "bizType": "合约",
// "contractSubmitName": "某创新药企业",
// "contractProviderName": "某创新药企业",
// "contractUseName": "某地医院",
// "blockchainTime": "2025-12-15 13:33:24"
// },
// {
// "updateTime": "2025-12-15 13:33:01",
// "updateUserName": "尹总监",
// "guid": "3b35567d2aa748978b28c9115f5390e0",
// "connectId": null,
// "productId": "691110108665628935500000RZY7D3OYM",
// "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
// "labelName": "数据使用",
// "logHash": "ec6183cb199e8df086c34520c667543227da5a6acf70f7cecccf11a92bb905cc",
// "blockchainTx": "517092b54fd932a8a9d9f12219217a01ce8cf3772f2a77bcd874c3bda106529b",
// "submitter": "某地医院",
// "bizName": "测试区块链记录合约",
// "bizType": "合约",
// "contractSubmitName": "某创新药企业",
// "contractProviderName": "某创新药企业",
// "contractUseName": "某地医院",
// "blockchainTime": "2025-12-15 13:33:05"
// },
// {
// "updateTime": "2025-12-15 13:32:59",
// "updateUserName": "尹总监",
// "guid": "a4089faa09e64a199cf3e7cb04812a7d",
// "connectId": null,
// "productId": "691110108665628935500000RZY7D3OYM",
// "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
// "labelName": "数据使用",
// "logHash": "c6bf535ed81cbcaee3beed0792e3ce90b3f64e7786551df349930dc0f68e6fa1",
// "blockchainTx": "f12d973c226d9edd404b9cd0f056da8f6cfd005cfeeee6e2fbf6134e8d477e4f",
// "submitter": "某地医院",
// "bizName": "测试区块链记录合约",
// "bizType": "合约",
// "contractSubmitName": "某创新药企业",
// "contractProviderName": "某创新药企业",
// "contractUseName": "某地医院",
// "blockchainTime": "2025-12-15 13:33:01"
// },
// {
// "updateTime": "2025-12-15 13:32:55",
// "updateUserName": "尹总监",
// "guid": "e0039215516f4b78a8cfd9f9781aaaf3",
// "connectId": null,
// "productId": "691110108665628935500000RZY7D3OYM",
// "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
// "labelName": "数据使用",
// "logHash": "d399699c6a6a6377fe060cf46197c96de50d73677ecc7b53b31622975f2e6156",
// "blockchainTx": "5dce456b0aa44130d64ba039dc966ed6f24b22965027c7d0d780f78a84a82dcf",
// "submitter": "某地医院",
// "bizName": "测试区块链记录合约",
// "bizType": "合约",
// "contractSubmitName": "某创新药企业",
// "contractProviderName": "某创新药企业",
// "contractUseName": "某地医院",
// "blockchainTime": "2025-12-15 13:32:58"
// },
// {
// "updateTime": "2025-12-15 13:32:35",
// "updateUserName": "尹总监",
// "guid": "0bcba4903e2b4758931f5952daa7b7f9",
// "connectId": null,
// "productId": "691110108665628935500000RZY7D3OYM",
// "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
// "labelName": "数据交付",
// "logHash": "429a64e38d1d9ecb1d01801f3e2394b78da7e2243a97e77d4a7fff845fca3133",
// "blockchainTx": "8186385634c40af96de4839a0f29de57a1a179229d70b57d39ea8073daf6be42",
// "submitter": "某创新药企业",
// "bizName": "测试区块链记录合约",
// "bizType": "合约",
// "contractSubmitName": "某创新药企业",
// "contractProviderName": "某创新药企业",
// "contractUseName": "某地医院",
// "blockchainTime": "2025-12-15 13:32:38"
// },
// {
// "updateTime": "2025-12-15 13:31:50",
// "updateUserName": "尹总监",
// "guid": "59abd7656f2e49519893ca096ceadc22",
// "connectId": null,
// "productId": "691110108665628935500000RZY7D3OYM",
// "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
// "labelName": "合约签署",
// "logHash": "6a41c11930024f2289cccbab467bd79bbe1fc38414971a6375fe9abf7ff2ac84",
// "blockchainTx": "ba63af760c49d6301afcc5e36d48f224884fb1b87c623350e215955b2dca6a13",
// "submitter": "某创新药企业",
// "bizName": "测试区块链记录合约",
// "bizType": "合约",
// "contractSubmitName": "某创新药企业",
// "contractProviderName": "某创新药企业",
// "contractUseName": "某地医院",
// "blockchainTime": "2025-12-15 13:31:51"
// },
// {
// "updateTime": "2025-12-15 13:31:49",
// "updateUserName": "尹总监",
// "guid": "06e1254f8f1349748774799603d9aa2e",
// "connectId": null,
// "productId": "691110108665628935500000RZY7D3OYM",
// "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
// "labelName": "合约履约中",
// "logHash": "4ad0513a3a58a92b83bc2c53c0e6d16a537f03e357104965a51cf87637c9a821",
// "blockchainTx": "a9e2dbb4e2dc10c60eb8584a2ad29fb64db920a38af3a74e17e73394ea1d20f3",
// "submitter": "某创新药企业",
// "bizName": "测试区块链记录合约",
// "bizType": "合约",
// "contractSubmitName": "某创新药企业",
// "contractProviderName": "某创新药企业",
// "contractUseName": "某地医院",
// "blockchainTime": "2025-12-15 13:31:51"
// },
// {
// "updateTime": "2025-12-15 13:31:16",
// "updateUserName": "尹总监",
// "guid": "3ce91910e42c4944a40541afcd0a7e68",
// "connectId": null,
// "productId": "691110108665628935500000RZY7D3OYM",
// "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
// "labelName": "合约签署",
// "logHash": "5f932532568b2815715bc56ab77dcd7871110e9443e1a6fff284ef7a6d92a409",
// "blockchainTx": "d9a0b2c23e26820b4979db658d6bcb0ba6e6a375e5da91912fb43dd031d831f4",
// "submitter": "某地医院",
// "bizName": "测试区块链记录合约",
// "bizType": "合约",
// "contractSubmitName": "某创新药企业",
// "contractProviderName": "某创新药企业",
// "contractUseName": "某地医院",
// "blockchainTime": "2025-12-15 13:31:18"
// },
// {
// "updateTime": "2025-12-15 13:30:44",
// "updateUserName": "尹总监",
// "guid": "570eb98aef004f92b55a91caaa89e9d3",
// "connectId": null,
// "productId": "691110108665628935500000RZY7D3OYM",
// "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
// "labelName": "合约确认",
// "logHash": "1a8376ef1afa41140959386eef95e5d72e96cd8257612bb47e4cf7562fd0da45",
// "blockchainTx": "0684ee016568bbb3734ef446b9b92a352100de7b951119132691e9d1cd38b1a0",
// "submitter": "某地医院",
// "bizName": "测试区块链记录合约",
// "bizType": "合约",
// "contractSubmitName": "某创新药企业",
// "contractProviderName": "某创新药企业",
// "contractUseName": "某地医院",
// "blockchainTime": "2025-12-15 13:30:47"
// },
// {
// "updateTime": "2025-12-15 13:29:46",
// "updateUserName": "尹总监",
// "guid": "f310ff4aa25243ada67dbbb10b7d2564",
// "connectId": null,
// "productId": "691110108665628935500000RZY7D3OYM",
// "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
// "labelName": "合约创建",
// "logHash": "26a20d03581e4f83e388b1287050c808e59bd359fdc30a25d85dc3b9997bead8",
// "blockchainTx": "0547f7045a78b310bffe6a324f78f72b4dee264bc1172fa5bb69131183b81a83",
// "submitter": "某创新药企业",
// "bizName": "测试区块链记录合约",
// "bizType": "合约",
// "contractSubmitName": "某创新药企业",
// "contractProviderName": "某创新药企业",
// "contractUseName": "某地医院",
// "blockchainTime": "2025-12-15 13:29:48"
// },
// {
// "updateTime": "2025-12-15 13:27:56",
// "updateUserName": "尹总监",
// "guid": "e6713d53dbcc46da82c960b156811df9",
// "connectId": null,
// "productId": "691110108665628935500000RZY7D3OYM",
// "contractId": null,
// "labelName": "数据产品上架审批通过",
// "logHash": "41de37476ee51843b57c5ce409adbc95aadc4234eb76f8d9ab7a4fc858f8b1e8",
// "blockchainTx": "6593a23d18ad6dcfa2663a3c371cb8d7e3af58b811d7ce264363f38d51718f0b",
// "submitter": "北京传世博润科技有限公司",
// "bizName": "测试数据产品区块链记录",
// "bizType": null,
// "contractSubmitName": null,
// "contractProviderName": null,
// "contractUseName": null,
// "blockchainTime": "2025-12-15 13:27:22"
// },]
// activities.value = [];
// for (const d of data) {
// activities.value.push({
// timestamp: d.updateTIme,
// type: 'primary',
// hollow: true,
// info: d
// })
// }
// } else {
// activities.value = [];
// res?.msg && proxy.$ElMessage.error(res?.msg)
// }
// })
}
</
script
>
<
template
>
<div
class=
"container_wrap"
>
<div
class=
"table_tool_wrap"
>
<TableTools
:searchItems=
"blockTableSearchItemList"
:init=
"false"
searchId=
"block-table-search"
@
search=
"toBlockTableSearch"
/>
</div>
<div
class=
"table_panel_wrap"
>
<el-table
v-loading=
"processTableInfo.loading"
ref=
"tableRef"
:data=
"processTableInfo.data"
@
expand-change=
"handleTableExpandChange"
:highlight-current-row=
"true"
stripe
border
height=
"100%"
tooltip-effect=
"light"
row-key=
"guid"
class=
"expand-table"
:style=
"
{ width: '100%', height: 'calc(100% - 8px)', display: 'inline-block', }">
<el-table-column
type=
"expand"
>
<template
#
default=
"scope"
>
<el-timeline
style=
"width: 100%;min-height: 150px;"
v-loading=
"detailLoading"
>
<el-timeline-item
v-for=
"(activity, index) in activities"
:key=
"index"
:timestamp=
"activity.timestamp"
:hollow=
"activity.hollow"
:type=
"activity.type"
placement=
"top"
>
<div
class=
"list_panel"
>
<template
v-if=
"activity.info?.bizType == '合约'"
>
<div
class=
"list_item"
>
<span
class=
"item_label"
>
合约发起方:
</span>
<span
class=
"item_value"
><ellipsis-tooltip
:content=
"activity.info?.contractSubmitName || '--'"
class-name=
"w100f mr8-i"
:refName=
"'tooltipOver' + 'contractSubmitName'"
></ellipsis-tooltip></span>
</div>
<div
class=
"list_item"
>
<span
class=
"item_label"
>
数据提供方:
</span>
<span
class=
"item_value"
><ellipsis-tooltip
:content=
"activity.info?.contractProviderName || '--'"
class-name=
"w100f mr8-i"
:refName=
"'tooltipOver' + 'contractProviderName'"
></ellipsis-tooltip></span>
</div>
<div
class=
"list_item"
>
<span
class=
"item_label"
>
数据使用方:
</span>
<span
class=
"item_value"
><ellipsis-tooltip
:content=
"activity.info?.contractUseName || '--'"
class-name=
"w100f mr8-i"
:refName=
"'tooltipOver' + 'contractUseName'"
></ellipsis-tooltip></span>
</div>
</
template
>
<
template
v-else-if=
"activity.info?.bizType == '连接器'"
>
<div
class=
"list_item"
>
<span
class=
"item_label"
>
连接器名称:
</span>
<span
class=
"item_value"
><ellipsis-tooltip
:content=
"activity.info?.bizName || '--'"
class-name=
"w100f mr8-i"
:refName=
"'tooltipOver' + 'bizName'"
></ellipsis-tooltip></span>
</div>
<div
class=
"list_item"
>
<span
class=
"item_label"
>
所属企业:
</span>
<span
class=
"item_value"
><ellipsis-tooltip
:content=
"activity.info?.submitter || '--'"
class-name=
"w100f mr8-i"
:refName=
"'tooltipOver' + 'submitter1'"
></ellipsis-tooltip></span>
</div>
<div
class=
"list_item"
>
<span
class=
"item_label"
>
提交时间:
</span>
<span
class=
"item_value"
>
{{
activity
.
info
?.
updateTime
||
'--'
}}
</span>
</div>
</
template
>
<
template
v-else
>
<div
class=
"list_item"
>
<span
class=
"item_label"
>
数据产品名称:
</span>
<span
class=
"item_value"
><ellipsis-tooltip
:content=
"activity.info?.bizName || '--'"
class-name=
"w100f mr8-i"
:refName=
"'tooltipOver' + 'bizName'"
></ellipsis-tooltip></span>
</div>
<div
class=
"list_item"
>
<span
class=
"item_label"
>
数据产品类型:
</span>
<span
class=
"item_value"
>
{{
activity
.
info
?.
bizType
||
'--'
}}
</span>
</div>
<div
class=
"list_item"
>
<span
class=
"item_label"
>
提交方:
</span>
<span
class=
"item_value"
><ellipsis-tooltip
:content=
"activity.info?.submitter || '--'"
class-name=
"w100f mr8-i"
:refName=
"'tooltipOver' + 'submitter'"
></ellipsis-tooltip></span>
</div>
</
template
>
<div
class=
"list_item"
style=
"width: 66.66%;"
>
<span
class=
"item_label"
>
区块链ID:
</span>
<span
class=
"item_value"
><ellipsis-tooltip
:content=
"activity.info?.blockchainTx || '--'"
class-name=
"w100f mr8-i"
:refName=
"'tooltipOver' + 'blockchainTx'"
></ellipsis-tooltip></span>
</div>
<div
class=
"list_item"
>
<span
class=
"item_label"
>
区块链时间:
</span>
<span
class=
"item_value"
>
{{ activity.info?.blockchainTime || '--' }}
</span>
</div>
<div
class=
"list_item is_block"
>
<span
class=
"item_label"
>
hash值:
</span>
<span
class=
"item_value"
><ellipsis-tooltip
:content=
"activity?.info?.logHash || '--'"
class-name=
"w100f mr8-i"
:refName=
"'tooltipOver' + 'logHash'"
></ellipsis-tooltip></span>
</div>
<div
class=
"split-line"
></div>
</div>
</el-timeline-item>
</el-timeline>
</template>
</el-table-column>
<el-table-column
v-for=
"field in processTableInfo.fields"
:prop=
"field.field"
:label=
"field.label"
:width=
"field.width"
:minWidth=
"field.minWidth"
:align=
"field.align"
show-overflow-tooltip
>
<
template
#
default=
"scope"
>
<span>
{{
scope
.
row
[
field
.
field
||
''
]
||
'--'
}}
</span>
</
template
>
</el-table-column>
</el-table>
<PageNav
:pageInfo=
"blockPage"
@
pageChange=
"processTablePageChange"
/>
</div>
</div>
</template>
<
style
lang=
"scss"
scoped
>
:deep
(
.el-table.expand-table
)
{
.el-table__expanded-cell.el-table__cell
{
background
:
#fff
!important
;
padding-top
:
14px
;
padding-bottom
:
14px
;
padding-left
:
8px
;
padding-right
:
14px
;
}
}
.list_panel
{
display
:
flex
;
flex-wrap
:
wrap
;
display
:
flex
;
align-items
:
flex-start
;
.list_item
{
width
:
33.33%
;
line-height
:
32px
;
font-size
:
14px
;
color
:
var
(
--el-text-color-regular
);
display
:
flex
;
justify-content
:
space-between
;
min-width
:
120px
;
.item_label
{
text-align
:
left
;
}
.item_value
{
color
:
var
(
--el-color-regular
);
padding
:
0
4px
;
flex
:
1
;
text-align
:
justify
;
min-width
:
0
;
&.link
{
color
:
var
(
--el-color-primary
);
cursor
:
pointer
;
}
&
.row
{
display
:
flex
;
justify-content
:
flex-start
;
align-items
:
center
;
flex-direction
:
row
;
:deep(.custom)
{
width
:
auto
;
max-width
:
calc
(
100%
-
75px
);
}
}
}
&
.is_block
{
width
:
100%
;
.item_value
{
white-space
:
pre-wrap
;
}
}
}
}
:deep
(
.el-timeline
)
{
margin-left
:
-8px
;
.el-timeline-item__tail
{
height
:
calc
(
100%
-
18px
);
top
:
14px
;
}
.el-timeline-item
{
padding-bottom
:
8px
;
}
.el-timeline-item__timestamp
{
color
:
#212121
;
font-size
:
14px
;
font-weight
:
600
;
}
.time-title
{
color
:
#212121
;
}
.row-per
{
display
:
flex
;
flex-direction
:
row
;
align-items
:
center
;
.desc
{
color
:
#999
;
.main
{
color
:
var
(
--el-color-primary
);
cursor
:
pointer
;
}
}
}
}
.split-line
{
border-top
:
1px
solid
#d9d9d9
;
height
:
1px
;
width
:
100%
;
margin-top
:
4px
;
}
</
style
>
\ No newline at end of file
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment