4e2618d5 by lihua

溯源查询功能

1 parent 62fa0c56
......@@ -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
})
......
......@@ -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
......
<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
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!