eec9c0fc by lihua

溯源查询功能

1 parent 7b3b2e52
...@@ -328,3 +328,16 @@ export const getSignatureFile = (params, data) => request({ ...@@ -328,3 +328,16 @@ export const getSignatureFile = (params, data) => request({
328 'Content-Type': 'multipart/form-data' 328 'Content-Type': 'multipart/form-data'
329 } 329 }
330 }) 330 })
331
332 /** ---------------------- 区块链日志 ---------------------- */
333 export const getBlockChainPageList = (params) => request({
334 url: `${import.meta.env.VITE_APP_DIGITAL_CONTRACT_URL}/blockchain-code/page-list`,
335 method: 'post',
336 data: params
337 })
338
339 export const getBlockChainDetail = (params) => request({
340 url: `${import.meta.env.VITE_APP_DIGITAL_CONTRACT_URL}/blockchain-detail/chain-page-list`,
341 method: 'post',
342 data: params
343 })
......
...@@ -197,6 +197,26 @@ const routes: RouteRecordRaw[] = [ ...@@ -197,6 +197,26 @@ const routes: RouteRecordRaw[] = [
197 }, 197 },
198 }] 198 }]
199 }, 199 },
200 {
201 path: '/data-smart-contract-common/traceability-inquiry-manage',
202 component: Layout,
203 meta: {
204 title: '溯源查询',
205 icon: 'sidebar-videos',
206 },
207 children: [{
208 path: '',
209 name: 'traceabilityInquiryManage',
210 component: () => import('@/views/data_smart_contract/traceabilityInquiryManage.vue'),
211 meta: {
212 title: '',
213 sidebar: false,
214 breadcrumb: false,
215 cache: true,
216 editPage: true
217 },
218 }]
219 },
200 ] 220 ]
201 221
202 export default routes 222 export default routes
...\ No newline at end of file ...\ No newline at end of file
......
1 <route lang="yaml">
2 name: traceabilityInquiryManage
3 </route>
4
5 <script lang="ts" setup name="traceabilityInquiryManage">
6 import TableTools from "@/components/Tools/table_tools.vue";
7 import {
8 getBlockChainPageList,
9 getBlockChainDetail
10 } from "@/api/modules/dataSmartContract";
11 import { commonPageConfig } from "@/components/PageNav";
12 import { TableColumnWidth } from "@/utils/enum";
13
14 const { proxy } = getCurrentInstance() as any;
15
16 const blockTableSearchItemList = ref([{
17 type: "input",
18 label: "",
19 field: "keyWord",
20 default: "",
21 placeholder: "编码/名称",
22 maxlength: 50,
23 clearable: true,
24 }]);
25
26 const blockPage = ref({
27 ...commonPageConfig,
28 keyWord: ''
29 });
30
31 const toBlockTableSearch = (val: any, clear: boolean = false) => {
32 if (clear) {
33 blockTableSearchItemList.value.map((item) => (item.default = ""));
34 blockPage.value.keyWord = '';
35 } else {
36 blockPage.value.keyWord = val.keyWord;
37 }
38 getBlockTableData();
39 };
40
41 const processTableInfo = ref({
42 id: "process-table",
43 rowKey: 'guid',
44 fields: [
45 { label: "序号", type: "index", width: TableColumnWidth.INDEX, align: "center" },
46 { label: "编码", field: "code", width: 355 },
47 { label: "名称", field: "name", width: 160 },
48 { label: "类型", field: "type", width: 120 },
49 { label: "提交日期", field: "submitTime", width: 170 },
50 { label: "所属主体", field: "tenantName", minWidth: 200 }
51 ],
52 data: [{guid: '1'}],
53 showPage: true,
54 page: {
55 type: "normal",
56 rows: 0,
57 ...blockPage.value,
58 },
59 loading: false,
60 });
61
62 const getBlockTableData = () => {
63 // processTableInfo.value.loading = true
64 // getBlockChainPageList({
65 // pageIndex: blockPage.value.curr,
66 // pageSize: blockPage.value.limit,
67 // keyWord: blockPage.value.keyWord
68 // }).then((res: any) => {
69 // processTableInfo.value.data = [];
70 // if (res?.code == proxy.$passCode) {
71 // const data = res.data || {};
72 // processTableInfo.value.loading = false
73 // processTableInfo.value.data = data.records || []
74 // processTableInfo.value.page.limit = data.pageSize
75 // processTableInfo.value.page.curr = data.pageIndex
76 // processTableInfo.value.page.rows = data.totalRows
77 // } else {
78 // res?.msg && proxy.$ElMessage.error(res?.msg)
79 // processTableInfo.value.loading = false
80 // }
81 // }).catch(() => {
82 // processTableInfo.value.loading = false
83 // })
84 }
85
86 const processTablePageChange = (info) => {
87 blockPage.value.curr = Number(info.curr);
88 blockPage.value.limit = Number(info.limit);
89 processTableInfo.value.page.curr = blockPage.value.curr;
90 processTableInfo.value.page.limit = blockPage.value.limit;
91 getBlockTableData();
92 };
93
94 onBeforeMount(() => {
95 toBlockTableSearch({});
96 })
97
98 const activities: any = ref([]);
99
100 const detailLoading = ref(false);
101
102 const handleTableExpandChange = (row: any, expandedRows: any[]) => {
103 let expand = expandedRows.includes(row);
104 if (!expand) {
105 return;
106 }
107 const data: any = [ {
108 "updateTime": "2025-12-15 13:33:22",
109 "updateUserName": "尹总监",
110 "guid": "1b2a69f9de30445290ee1f0c4814d8cd",
111 "connectId": null,
112 "productId": "691110108665628935500000RZY7D3OYM",
113 "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
114 "labelName": "数据销毁",
115 "logHash": "c99d2ac8e3cc6de35e3e46225c246e341f131b5ff7f3d4ce1a8d37bf21681b55",
116 "blockchainTx": "b5b149599f207463210af117537a3577520769221c8f132cef68ac82fa1c72fc",
117 "submitter": "某创新药企业",
118 "bizName": "测试区块链记录合约",
119 "bizType": "合约",
120 "contractSubmitName": "某创新药企业",
121 "contractProviderName": "某创新药企业",
122 "contractUseName": "某地医院",
123 "blockchainTime": "2025-12-15 13:33:24"
124 },
125 {
126 "updateTime": "2025-12-15 13:33:22",
127 "updateUserName": "尹总监",
128 "guid": "da2ae6fd87c64ffb9337edb74655e153",
129 "connectId": null,
130 "productId": "691110108665628935500000RZY7D3OYM",
131 "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
132 "labelName": "合约解除",
133 "logHash": "6e6dea2d5802717d6b411441e9b05efdb34bc6cfbf383c214366ff1b7be29ecd",
134 "blockchainTx": "77ba6fd78c22546dbb038eaaf266aafc1146ebb59fee3e75da0ad3ee7771a2fa",
135 "submitter": "某创新药企业",
136 "bizName": "测试区块链记录合约",
137 "bizType": "合约",
138 "contractSubmitName": "某创新药企业",
139 "contractProviderName": "某创新药企业",
140 "contractUseName": "某地医院",
141 "blockchainTime": "2025-12-15 13:33:24"
142 },
143 {
144 "updateTime": "2025-12-15 13:33:01",
145 "updateUserName": "尹总监",
146 "guid": "3b35567d2aa748978b28c9115f5390e0",
147 "connectId": null,
148 "productId": "691110108665628935500000RZY7D3OYM",
149 "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
150 "labelName": "数据使用",
151 "logHash": "ec6183cb199e8df086c34520c667543227da5a6acf70f7cecccf11a92bb905cc",
152 "blockchainTx": "517092b54fd932a8a9d9f12219217a01ce8cf3772f2a77bcd874c3bda106529b",
153 "submitter": "某地医院",
154 "bizName": "测试区块链记录合约",
155 "bizType": "合约",
156 "contractSubmitName": "某创新药企业",
157 "contractProviderName": "某创新药企业",
158 "contractUseName": "某地医院",
159 "blockchainTime": "2025-12-15 13:33:05"
160 },
161 {
162 "updateTime": "2025-12-15 13:32:59",
163 "updateUserName": "尹总监",
164 "guid": "a4089faa09e64a199cf3e7cb04812a7d",
165 "connectId": null,
166 "productId": "691110108665628935500000RZY7D3OYM",
167 "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
168 "labelName": "数据使用",
169 "logHash": "c6bf535ed81cbcaee3beed0792e3ce90b3f64e7786551df349930dc0f68e6fa1",
170 "blockchainTx": "f12d973c226d9edd404b9cd0f056da8f6cfd005cfeeee6e2fbf6134e8d477e4f",
171 "submitter": "某地医院",
172 "bizName": "测试区块链记录合约",
173 "bizType": "合约",
174 "contractSubmitName": "某创新药企业",
175 "contractProviderName": "某创新药企业",
176 "contractUseName": "某地医院",
177 "blockchainTime": "2025-12-15 13:33:01"
178 },
179 {
180 "updateTime": "2025-12-15 13:32:55",
181 "updateUserName": "尹总监",
182 "guid": "e0039215516f4b78a8cfd9f9781aaaf3",
183 "connectId": null,
184 "productId": "691110108665628935500000RZY7D3OYM",
185 "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
186 "labelName": "数据使用",
187 "logHash": "d399699c6a6a6377fe060cf46197c96de50d73677ecc7b53b31622975f2e6156",
188 "blockchainTx": "5dce456b0aa44130d64ba039dc966ed6f24b22965027c7d0d780f78a84a82dcf",
189 "submitter": "某地医院",
190 "bizName": "测试区块链记录合约",
191 "bizType": "合约",
192 "contractSubmitName": "某创新药企业",
193 "contractProviderName": "某创新药企业",
194 "contractUseName": "某地医院",
195 "blockchainTime": "2025-12-15 13:32:58"
196 },
197 {
198 "updateTime": "2025-12-15 13:32:35",
199 "updateUserName": "尹总监",
200 "guid": "0bcba4903e2b4758931f5952daa7b7f9",
201 "connectId": null,
202 "productId": "691110108665628935500000RZY7D3OYM",
203 "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
204 "labelName": "数据交付",
205 "logHash": "429a64e38d1d9ecb1d01801f3e2394b78da7e2243a97e77d4a7fff845fca3133",
206 "blockchainTx": "8186385634c40af96de4839a0f29de57a1a179229d70b57d39ea8073daf6be42",
207 "submitter": "某创新药企业",
208 "bizName": "测试区块链记录合约",
209 "bizType": "合约",
210 "contractSubmitName": "某创新药企业",
211 "contractProviderName": "某创新药企业",
212 "contractUseName": "某地医院",
213 "blockchainTime": "2025-12-15 13:32:38"
214 },
215 {
216 "updateTime": "2025-12-15 13:31:50",
217 "updateUserName": "尹总监",
218 "guid": "59abd7656f2e49519893ca096ceadc22",
219 "connectId": null,
220 "productId": "691110108665628935500000RZY7D3OYM",
221 "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
222 "labelName": "合约签署",
223 "logHash": "6a41c11930024f2289cccbab467bd79bbe1fc38414971a6375fe9abf7ff2ac84",
224 "blockchainTx": "ba63af760c49d6301afcc5e36d48f224884fb1b87c623350e215955b2dca6a13",
225 "submitter": "某创新药企业",
226 "bizName": "测试区块链记录合约",
227 "bizType": "合约",
228 "contractSubmitName": "某创新药企业",
229 "contractProviderName": "某创新药企业",
230 "contractUseName": "某地医院",
231 "blockchainTime": "2025-12-15 13:31:51"
232 },
233 {
234 "updateTime": "2025-12-15 13:31:49",
235 "updateUserName": "尹总监",
236 "guid": "06e1254f8f1349748774799603d9aa2e",
237 "connectId": null,
238 "productId": "691110108665628935500000RZY7D3OYM",
239 "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
240 "labelName": "合约履约中",
241 "logHash": "4ad0513a3a58a92b83bc2c53c0e6d16a537f03e357104965a51cf87637c9a821",
242 "blockchainTx": "a9e2dbb4e2dc10c60eb8584a2ad29fb64db920a38af3a74e17e73394ea1d20f3",
243 "submitter": "某创新药企业",
244 "bizName": "测试区块链记录合约",
245 "bizType": "合约",
246 "contractSubmitName": "某创新药企业",
247 "contractProviderName": "某创新药企业",
248 "contractUseName": "某地医院",
249 "blockchainTime": "2025-12-15 13:31:51"
250 },
251 {
252 "updateTime": "2025-12-15 13:31:16",
253 "updateUserName": "尹总监",
254 "guid": "3ce91910e42c4944a40541afcd0a7e68",
255 "connectId": null,
256 "productId": "691110108665628935500000RZY7D3OYM",
257 "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
258 "labelName": "合约签署",
259 "logHash": "5f932532568b2815715bc56ab77dcd7871110e9443e1a6fff284ef7a6d92a409",
260 "blockchainTx": "d9a0b2c23e26820b4979db658d6bcb0ba6e6a375e5da91912fb43dd031d831f4",
261 "submitter": "某地医院",
262 "bizName": "测试区块链记录合约",
263 "bizType": "合约",
264 "contractSubmitName": "某创新药企业",
265 "contractProviderName": "某创新药企业",
266 "contractUseName": "某地医院",
267 "blockchainTime": "2025-12-15 13:31:18"
268 },
269 {
270 "updateTime": "2025-12-15 13:30:44",
271 "updateUserName": "尹总监",
272 "guid": "570eb98aef004f92b55a91caaa89e9d3",
273 "connectId": null,
274 "productId": "691110108665628935500000RZY7D3OYM",
275 "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
276 "labelName": "合约确认",
277 "logHash": "1a8376ef1afa41140959386eef95e5d72e96cd8257612bb47e4cf7562fd0da45",
278 "blockchainTx": "0684ee016568bbb3734ef446b9b92a352100de7b951119132691e9d1cd38b1a0",
279 "submitter": "某地医院",
280 "bizName": "测试区块链记录合约",
281 "bizType": "合约",
282 "contractSubmitName": "某创新药企业",
283 "contractProviderName": "某创新药企业",
284 "contractUseName": "某地医院",
285 "blockchainTime": "2025-12-15 13:30:47"
286 },
287 {
288 "updateTime": "2025-12-15 13:29:46",
289 "updateUserName": "尹总监",
290 "guid": "f310ff4aa25243ada67dbbb10b7d2564",
291 "connectId": null,
292 "productId": "691110108665628935500000RZY7D3OYM",
293 "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
294 "labelName": "合约创建",
295 "logHash": "26a20d03581e4f83e388b1287050c808e59bd359fdc30a25d85dc3b9997bead8",
296 "blockchainTx": "0547f7045a78b310bffe6a324f78f72b4dee264bc1172fa5bb69131183b81a83",
297 "submitter": "某创新药企业",
298 "bizName": "测试区块链记录合约",
299 "bizType": "合约",
300 "contractSubmitName": "某创新药企业",
301 "contractProviderName": "某创新药企业",
302 "contractUseName": "某地医院",
303 "blockchainTime": "2025-12-15 13:29:48"
304 },
305 {
306 "updateTime": "2025-12-15 13:27:56",
307 "updateUserName": "尹总监",
308 "guid": "e6713d53dbcc46da82c960b156811df9",
309 "connectId": null,
310 "productId": "691110108665628935500000RZY7D3OYM",
311 "contractId": null,
312 "labelName": "数据产品上架审批通过",
313 "logHash": "41de37476ee51843b57c5ce409adbc95aadc4234eb76f8d9ab7a4fc858f8b1e8",
314 "blockchainTx": "6593a23d18ad6dcfa2663a3c371cb8d7e3af58b811d7ce264363f38d51718f0b",
315 "submitter": "北京传世博润科技有限公司",
316 "bizName": "测试数据产品区块链记录",
317 "bizType": null,
318 "contractSubmitName": null,
319 "contractProviderName": null,
320 "contractUseName": null,
321 "blockchainTime": "2025-12-15 13:27:22"
322 },]
323 activities.value = [];
324 for (const d of data) {
325 activities.value.push({
326 timestamp: d.labelName + ' ' + d.updateTime,
327 type: 'primary',
328 hollow: true,
329 info: d
330 })
331 }
332 //detailLoading.value = true;
333 // getBlockChainDetail({
334 // pageIndex: 1,
335 // pageSize: -1,
336 // type: row.type,
337 // code: row.code
338 // }).then((res: any) => {
339 // detailLoading.value = false;
340 // if (res?.code == proxy.$passCode) {
341 // // const data = res.data || [];
342 // const data: any = [ {
343 // "updateTime": "2025-12-15 13:33:22",
344 // "updateUserName": "尹总监",
345 // "guid": "1b2a69f9de30445290ee1f0c4814d8cd",
346 // "connectId": null,
347 // "productId": "691110108665628935500000RZY7D3OYM",
348 // "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
349 // "labelName": "数据销毁",
350 // "logHash": "c99d2ac8e3cc6de35e3e46225c246e341f131b5ff7f3d4ce1a8d37bf21681b55",
351 // "blockchainTx": "b5b149599f207463210af117537a3577520769221c8f132cef68ac82fa1c72fc",
352 // "submitter": "某创新药企业",
353 // "bizName": "测试区块链记录合约",
354 // "bizType": "合约",
355 // "contractSubmitName": "某创新药企业",
356 // "contractProviderName": "某创新药企业",
357 // "contractUseName": "某地医院",
358 // "blockchainTime": "2025-12-15 13:33:24"
359 // },
360 // {
361 // "updateTime": "2025-12-15 13:33:22",
362 // "updateUserName": "尹总监",
363 // "guid": "da2ae6fd87c64ffb9337edb74655e153",
364 // "connectId": null,
365 // "productId": "691110108665628935500000RZY7D3OYM",
366 // "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
367 // "labelName": "合约解除",
368 // "logHash": "6e6dea2d5802717d6b411441e9b05efdb34bc6cfbf383c214366ff1b7be29ecd",
369 // "blockchainTx": "77ba6fd78c22546dbb038eaaf266aafc1146ebb59fee3e75da0ad3ee7771a2fa",
370 // "submitter": "某创新药企业",
371 // "bizName": "测试区块链记录合约",
372 // "bizType": "合约",
373 // "contractSubmitName": "某创新药企业",
374 // "contractProviderName": "某创新药企业",
375 // "contractUseName": "某地医院",
376 // "blockchainTime": "2025-12-15 13:33:24"
377 // },
378 // {
379 // "updateTime": "2025-12-15 13:33:01",
380 // "updateUserName": "尹总监",
381 // "guid": "3b35567d2aa748978b28c9115f5390e0",
382 // "connectId": null,
383 // "productId": "691110108665628935500000RZY7D3OYM",
384 // "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
385 // "labelName": "数据使用",
386 // "logHash": "ec6183cb199e8df086c34520c667543227da5a6acf70f7cecccf11a92bb905cc",
387 // "blockchainTx": "517092b54fd932a8a9d9f12219217a01ce8cf3772f2a77bcd874c3bda106529b",
388 // "submitter": "某地医院",
389 // "bizName": "测试区块链记录合约",
390 // "bizType": "合约",
391 // "contractSubmitName": "某创新药企业",
392 // "contractProviderName": "某创新药企业",
393 // "contractUseName": "某地医院",
394 // "blockchainTime": "2025-12-15 13:33:05"
395 // },
396 // {
397 // "updateTime": "2025-12-15 13:32:59",
398 // "updateUserName": "尹总监",
399 // "guid": "a4089faa09e64a199cf3e7cb04812a7d",
400 // "connectId": null,
401 // "productId": "691110108665628935500000RZY7D3OYM",
402 // "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
403 // "labelName": "数据使用",
404 // "logHash": "c6bf535ed81cbcaee3beed0792e3ce90b3f64e7786551df349930dc0f68e6fa1",
405 // "blockchainTx": "f12d973c226d9edd404b9cd0f056da8f6cfd005cfeeee6e2fbf6134e8d477e4f",
406 // "submitter": "某地医院",
407 // "bizName": "测试区块链记录合约",
408 // "bizType": "合约",
409 // "contractSubmitName": "某创新药企业",
410 // "contractProviderName": "某创新药企业",
411 // "contractUseName": "某地医院",
412 // "blockchainTime": "2025-12-15 13:33:01"
413 // },
414 // {
415 // "updateTime": "2025-12-15 13:32:55",
416 // "updateUserName": "尹总监",
417 // "guid": "e0039215516f4b78a8cfd9f9781aaaf3",
418 // "connectId": null,
419 // "productId": "691110108665628935500000RZY7D3OYM",
420 // "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
421 // "labelName": "数据使用",
422 // "logHash": "d399699c6a6a6377fe060cf46197c96de50d73677ecc7b53b31622975f2e6156",
423 // "blockchainTx": "5dce456b0aa44130d64ba039dc966ed6f24b22965027c7d0d780f78a84a82dcf",
424 // "submitter": "某地医院",
425 // "bizName": "测试区块链记录合约",
426 // "bizType": "合约",
427 // "contractSubmitName": "某创新药企业",
428 // "contractProviderName": "某创新药企业",
429 // "contractUseName": "某地医院",
430 // "blockchainTime": "2025-12-15 13:32:58"
431 // },
432 // {
433 // "updateTime": "2025-12-15 13:32:35",
434 // "updateUserName": "尹总监",
435 // "guid": "0bcba4903e2b4758931f5952daa7b7f9",
436 // "connectId": null,
437 // "productId": "691110108665628935500000RZY7D3OYM",
438 // "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
439 // "labelName": "数据交付",
440 // "logHash": "429a64e38d1d9ecb1d01801f3e2394b78da7e2243a97e77d4a7fff845fca3133",
441 // "blockchainTx": "8186385634c40af96de4839a0f29de57a1a179229d70b57d39ea8073daf6be42",
442 // "submitter": "某创新药企业",
443 // "bizName": "测试区块链记录合约",
444 // "bizType": "合约",
445 // "contractSubmitName": "某创新药企业",
446 // "contractProviderName": "某创新药企业",
447 // "contractUseName": "某地医院",
448 // "blockchainTime": "2025-12-15 13:32:38"
449 // },
450 // {
451 // "updateTime": "2025-12-15 13:31:50",
452 // "updateUserName": "尹总监",
453 // "guid": "59abd7656f2e49519893ca096ceadc22",
454 // "connectId": null,
455 // "productId": "691110108665628935500000RZY7D3OYM",
456 // "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
457 // "labelName": "合约签署",
458 // "logHash": "6a41c11930024f2289cccbab467bd79bbe1fc38414971a6375fe9abf7ff2ac84",
459 // "blockchainTx": "ba63af760c49d6301afcc5e36d48f224884fb1b87c623350e215955b2dca6a13",
460 // "submitter": "某创新药企业",
461 // "bizName": "测试区块链记录合约",
462 // "bizType": "合约",
463 // "contractSubmitName": "某创新药企业",
464 // "contractProviderName": "某创新药企业",
465 // "contractUseName": "某地医院",
466 // "blockchainTime": "2025-12-15 13:31:51"
467 // },
468 // {
469 // "updateTime": "2025-12-15 13:31:49",
470 // "updateUserName": "尹总监",
471 // "guid": "06e1254f8f1349748774799603d9aa2e",
472 // "connectId": null,
473 // "productId": "691110108665628935500000RZY7D3OYM",
474 // "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
475 // "labelName": "合约履约中",
476 // "logHash": "4ad0513a3a58a92b83bc2c53c0e6d16a537f03e357104965a51cf87637c9a821",
477 // "blockchainTx": "a9e2dbb4e2dc10c60eb8584a2ad29fb64db920a38af3a74e17e73394ea1d20f3",
478 // "submitter": "某创新药企业",
479 // "bizName": "测试区块链记录合约",
480 // "bizType": "合约",
481 // "contractSubmitName": "某创新药企业",
482 // "contractProviderName": "某创新药企业",
483 // "contractUseName": "某地医院",
484 // "blockchainTime": "2025-12-15 13:31:51"
485 // },
486 // {
487 // "updateTime": "2025-12-15 13:31:16",
488 // "updateUserName": "尹总监",
489 // "guid": "3ce91910e42c4944a40541afcd0a7e68",
490 // "connectId": null,
491 // "productId": "691110108665628935500000RZY7D3OYM",
492 // "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
493 // "labelName": "合约签署",
494 // "logHash": "5f932532568b2815715bc56ab77dcd7871110e9443e1a6fff284ef7a6d92a409",
495 // "blockchainTx": "d9a0b2c23e26820b4979db658d6bcb0ba6e6a375e5da91912fb43dd031d831f4",
496 // "submitter": "某地医院",
497 // "bizName": "测试区块链记录合约",
498 // "bizType": "合约",
499 // "contractSubmitName": "某创新药企业",
500 // "contractProviderName": "某创新药企业",
501 // "contractUseName": "某地医院",
502 // "blockchainTime": "2025-12-15 13:31:18"
503 // },
504 // {
505 // "updateTime": "2025-12-15 13:30:44",
506 // "updateUserName": "尹总监",
507 // "guid": "570eb98aef004f92b55a91caaa89e9d3",
508 // "connectId": null,
509 // "productId": "691110108665628935500000RZY7D3OYM",
510 // "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
511 // "labelName": "合约确认",
512 // "logHash": "1a8376ef1afa41140959386eef95e5d72e96cd8257612bb47e4cf7562fd0da45",
513 // "blockchainTx": "0684ee016568bbb3734ef446b9b92a352100de7b951119132691e9d1cd38b1a0",
514 // "submitter": "某地医院",
515 // "bizName": "测试区块链记录合约",
516 // "bizType": "合约",
517 // "contractSubmitName": "某创新药企业",
518 // "contractProviderName": "某创新药企业",
519 // "contractUseName": "某地医院",
520 // "blockchainTime": "2025-12-15 13:30:47"
521 // },
522 // {
523 // "updateTime": "2025-12-15 13:29:46",
524 // "updateUserName": "尹总监",
525 // "guid": "f310ff4aa25243ada67dbbb10b7d2564",
526 // "connectId": null,
527 // "productId": "691110108665628935500000RZY7D3OYM",
528 // "contractId": "83911101086656289355008420251215132943WYTFAP3Y7",
529 // "labelName": "合约创建",
530 // "logHash": "26a20d03581e4f83e388b1287050c808e59bd359fdc30a25d85dc3b9997bead8",
531 // "blockchainTx": "0547f7045a78b310bffe6a324f78f72b4dee264bc1172fa5bb69131183b81a83",
532 // "submitter": "某创新药企业",
533 // "bizName": "测试区块链记录合约",
534 // "bizType": "合约",
535 // "contractSubmitName": "某创新药企业",
536 // "contractProviderName": "某创新药企业",
537 // "contractUseName": "某地医院",
538 // "blockchainTime": "2025-12-15 13:29:48"
539 // },
540 // {
541 // "updateTime": "2025-12-15 13:27:56",
542 // "updateUserName": "尹总监",
543 // "guid": "e6713d53dbcc46da82c960b156811df9",
544 // "connectId": null,
545 // "productId": "691110108665628935500000RZY7D3OYM",
546 // "contractId": null,
547 // "labelName": "数据产品上架审批通过",
548 // "logHash": "41de37476ee51843b57c5ce409adbc95aadc4234eb76f8d9ab7a4fc858f8b1e8",
549 // "blockchainTx": "6593a23d18ad6dcfa2663a3c371cb8d7e3af58b811d7ce264363f38d51718f0b",
550 // "submitter": "北京传世博润科技有限公司",
551 // "bizName": "测试数据产品区块链记录",
552 // "bizType": null,
553 // "contractSubmitName": null,
554 // "contractProviderName": null,
555 // "contractUseName": null,
556 // "blockchainTime": "2025-12-15 13:27:22"
557 // },]
558 // activities.value = [];
559 // for (const d of data) {
560 // activities.value.push({
561 // timestamp: d.updateTIme,
562 // type: 'primary',
563 // hollow: true,
564 // info: d
565 // })
566 // }
567 // } else {
568 // activities.value = [];
569 // res?.msg && proxy.$ElMessage.error(res?.msg)
570 // }
571 // })
572 }
573
574 </script>
575
576 <template>
577 <div class="container_wrap">
578 <div class="table_tool_wrap">
579 <TableTools :searchItems="blockTableSearchItemList" :init="false" searchId="block-table-search"
580 @search="toBlockTableSearch" />
581 </div>
582 <div class="table_panel_wrap">
583 <el-table v-loading="processTableInfo.loading" ref="tableRef" :data="processTableInfo.data"
584 @expand-change="handleTableExpandChange" :highlight-current-row="true" stripe border height="100%"
585 tooltip-effect="light" row-key="guid" class="expand-table"
586 :style="{ width: '100%', height: 'calc(100% - 8px)', display: 'inline-block', }">
587 <el-table-column type="expand">
588 <template #default="scope">
589 <el-timeline style="width: 100%;min-height: 150px;" v-loading="detailLoading">
590 <el-timeline-item v-for="(activity, index) in activities" :key="index" :timestamp="activity.timestamp"
591 :hollow="activity.hollow" :type="activity.type" placement="top">
592 <div class="list_panel">
593 <template v-if="activity.info?.bizType == '合约'">
594 <div class="list_item">
595 <span class="item_label">合约发起方:</span>
596 <span class="item_value"><ellipsis-tooltip :content="activity.info?.contractSubmitName || '--'"
597 class-name="w100f mr8-i" :refName="'tooltipOver' + 'contractSubmitName'"></ellipsis-tooltip></span>
598 </div>
599 <div class="list_item">
600 <span class="item_label">数据提供方:</span>
601 <span class="item_value"><ellipsis-tooltip :content="activity.info?.contractProviderName || '--'"
602 class-name="w100f mr8-i" :refName="'tooltipOver' + 'contractProviderName'"></ellipsis-tooltip></span>
603 </div>
604 <div class="list_item">
605 <span class="item_label">数据使用方:</span>
606 <span class="item_value"><ellipsis-tooltip :content="activity.info?.contractUseName || '--'"
607 class-name="w100f mr8-i" :refName="'tooltipOver' + 'contractUseName'"></ellipsis-tooltip></span>
608 </div>
609 </template>
610 <template v-else-if="activity.info?.bizType == '连接器'">
611 <div class="list_item">
612 <span class="item_label">连接器名称:</span>
613 <span class="item_value"><ellipsis-tooltip :content="activity.info?.bizName || '--'"
614 class-name="w100f mr8-i" :refName="'tooltipOver' + 'bizName'"></ellipsis-tooltip></span>
615 </div>
616 <div class="list_item">
617 <span class="item_label">所属企业:</span>
618 <span class="item_value"><ellipsis-tooltip :content="activity.info?.submitter || '--'"
619 class-name="w100f mr8-i" :refName="'tooltipOver' + 'submitter1'"></ellipsis-tooltip></span>
620 </div>
621 <div class="list_item">
622 <span class="item_label">提交时间:</span>
623 <span class="item_value">{{ activity.info?.updateTime || '--' }}</span>
624 </div>
625 </template>
626 <template v-else>
627 <div class="list_item">
628 <span class="item_label">数据产品名称:</span>
629 <span class="item_value"><ellipsis-tooltip :content="activity.info?.bizName || '--'"
630 class-name="w100f mr8-i" :refName="'tooltipOver' + 'bizName'"></ellipsis-tooltip></span>
631 </div>
632 <div class="list_item">
633 <span class="item_label">数据产品类型:</span>
634 <span class="item_value">{{ activity.info?.bizType || '--' }}</span>
635 </div>
636 <div class="list_item">
637 <span class="item_label">提交方:</span>
638 <span class="item_value"><ellipsis-tooltip :content="activity.info?.submitter || '--'"
639 class-name="w100f mr8-i" :refName="'tooltipOver' + 'submitter'"></ellipsis-tooltip></span>
640 </div>
641 </template>
642 <div class="list_item" style="width: 66.66%;">
643 <span class="item_label">区块链ID:</span>
644 <span class="item_value"><ellipsis-tooltip :content="activity.info?.blockchainTx || '--'"
645 class-name="w100f mr8-i" :refName="'tooltipOver' + 'blockchainTx'"></ellipsis-tooltip></span>
646 </div>
647 <div class="list_item">
648 <span class="item_label">区块链时间:</span>
649 <span class="item_value">{{ activity.info?.blockchainTime || '--' }}</span>
650 </div>
651 <div class="list_item is_block">
652 <span class="item_label">hash值:</span>
653 <span class="item_value"><ellipsis-tooltip :content="activity?.info?.logHash || '--'"
654 class-name="w100f mr8-i" :refName="'tooltipOver' + 'logHash'"></ellipsis-tooltip></span>
655 </div>
656 <div class="split-line"></div>
657 </div>
658 </el-timeline-item>
659 </el-timeline>
660 </template>
661 </el-table-column>
662 <el-table-column v-for="field in processTableInfo.fields" :prop="field.field" :label="field.label"
663 :width="field.width" :minWidth="field.minWidth" :align="field.align" show-overflow-tooltip>
664 <template #default="scope">
665 <span>{{ scope.row[field.field || ''] || '--' }}</span>
666 </template>
667 </el-table-column>
668 </el-table>
669 <PageNav :pageInfo="blockPage" @pageChange="processTablePageChange" />
670 </div>
671 </div>
672 </template>
673
674 <style lang="scss" scoped>
675 :deep(.el-table.expand-table) {
676 .el-table__expanded-cell.el-table__cell {
677 background: #fff !important;
678 padding-top: 14px;
679 padding-bottom: 14px;
680 padding-left: 8px;
681 padding-right: 14px;
682 }
683 }
684
685 .list_panel {
686 display: flex;
687 flex-wrap: wrap;
688 display: flex;
689 align-items: flex-start;
690
691 .list_item {
692 width: 33.33%;
693 line-height: 32px;
694 font-size: 14px;
695 color: var(--el-text-color-regular);
696 display: flex;
697 justify-content: space-between;
698 min-width: 120px;
699
700 .item_label {
701 text-align: left;
702 }
703
704 .item_value {
705 color: var(--el-color-regular);
706 padding: 0 4px;
707 flex: 1;
708 text-align: justify;
709 min-width: 0;
710
711 &.link {
712 color: var(--el-color-primary);
713 cursor: pointer;
714 }
715
716 &.row {
717 display: flex;
718 justify-content: flex-start;
719 align-items: center;
720 flex-direction: row;
721
722 :deep(.custom) {
723 width: auto;
724 max-width: calc(100% - 75px);
725 }
726 }
727 }
728
729 &.is_block {
730 width: 100%;
731
732 .item_value {
733 white-space: pre-wrap;
734 }
735 }
736 }
737 }
738
739 :deep(.el-timeline) {
740 margin-left: -8px;
741
742 .el-timeline-item__tail {
743 height: calc(100% - 18px);
744 top: 14px;
745 }
746
747 .el-timeline-item {
748 padding-bottom: 8px;
749 }
750
751 .el-timeline-item__timestamp {
752 color: #212121;
753 font-size: 14px;
754 font-weight: 600;
755 }
756
757 .time-title {
758 color: #212121;
759 }
760
761 .row-per {
762 display: flex;
763 flex-direction: row;
764 align-items: center;
765
766 .desc {
767 color: #999;
768
769 .main {
770 color: var(--el-color-primary);
771 cursor: pointer;
772 }
773 }
774
775 }
776 }
777
778 .split-line {
779 border-top: 1px solid #d9d9d9;
780 height: 1px;
781 width: 100%;
782 margin-top: 4px;
783 }
784 </style>
...\ No newline at end of file ...\ 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!