溯源查询功能
Showing
3 changed files
with
817 additions
and
0 deletions
| ... | @@ -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 |
-
Please register or sign in to post a comment