对接步骤 完成实验全流程

main
JayChou 2 months ago
parent 54f2a33f09
commit 5c4ac4735b
  1. 5
      package.json
  2. 321
      pnpm-lock.yaml
  3. BIN
      public/template.docx
  4. 16
      src/api/index.ts
  5. BIN
      src/assets/images/ideaicon.png
  6. BIN
      src/assets/images/idealeftbgc.png
  7. 8
      src/router/index.ts
  8. 42
      src/store/modules/setting.ts
  9. 30
      src/views/compiler/index.vue
  10. 1
      src/views/designRoute/index.vue
  11. 91
      src/views/experimentalData/index.vue
  12. 749
      src/views/largeDataScreen/home.vue
  13. 147
      src/views/program/index.vue

@ -22,12 +22,17 @@
"@highlightjs/vue-plugin": "^2.1.0",
"@kjgl77/datav-vue3": "^1.7.3",
"axios": "^1.7.2",
"docxtemplater": "^3.60.2",
"echarts": "^5.6.0",
"element-plus": "^2.9.5",
"file-saver": "^2.0.5",
"highlight.js": "^11.11.1",
"insert-css": "^2.0.0",
"install": "^0.13.0",
"jszip-utils": "^0.1.0",
"lib-flexible": "^0.3.2",
"pinia": "^2.1.7",
"pizzip": "^3.1.8",
"postcss-plugin-px2rem": "^0.8.1",
"sass": "^1.77.6",
"sass-loader": "^14.2.1",

@ -47,24 +47,39 @@ importers:
axios:
specifier: ^1.7.2
version: 1.7.2
docxtemplater:
specifier: ^3.60.2
version: 3.60.2
echarts:
specifier: ^5.6.0
version: 5.6.0
element-plus:
specifier: ^2.9.5
version: 2.9.5(vue@3.4.29(typescript@5.2.2))
file-saver:
specifier: ^2.0.5
version: 2.0.5
highlight.js:
specifier: ^11.11.1
version: 11.11.1
insert-css:
specifier: ^2.0.0
version: 2.0.0
install:
specifier: ^0.13.0
version: 0.13.0
jszip-utils:
specifier: ^0.1.0
version: 0.1.0
lib-flexible:
specifier: ^0.3.2
version: 0.3.2
pinia:
specifier: ^2.1.7
version: 2.1.7(typescript@5.2.2)(vue@3.4.29(typescript@5.2.2))
pizzip:
specifier: ^3.1.8
version: 3.1.8
postcss-plugin-px2rem:
specifier: ^0.8.1
version: 0.8.1
@ -105,6 +120,12 @@ importers:
typescript:
specifier: ^5.2.2
version: 5.2.2
unplugin-auto-import:
specifier: ^19.1.1
version: 19.1.1(@vueuse/core@10.11.0(vue@3.4.29(typescript@5.2.2)))
unplugin-vue-components:
specifier: ^28.4.1
version: 28.4.1(@babel/parser@7.24.7)(vue@3.4.29(typescript@5.2.2))
vite:
specifier: ^5.3.1
version: 5.3.1(@types/node@20.14.9)(less@4.2.2)(sass@1.77.6)
@ -374,6 +395,9 @@ packages:
'@jridgewell/sourcemap-codec@1.4.15':
resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
'@jridgewell/sourcemap-codec@1.5.0':
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
'@kjgl77/datav-vue3@1.7.3':
resolution: {integrity: sha512-8zNu2zDXylDS6aL8SNDR7/h4ccO2LnBg/KbTwOeF7p9hqiRW9TR7Zd/e8baYnJPb9tAwYOubzWTQnjUTdtE8dA==}
@ -570,6 +594,15 @@ packages:
'@vueuse/shared@9.13.0':
resolution: {integrity: sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==}
'@xmldom/xmldom@0.9.8':
resolution: {integrity: sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==}
engines: {node: '>=14.6'}
acorn@8.14.1:
resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==}
engines: {node: '>=0.4.0'}
hasBin: true
ansi-regex@0.2.1:
resolution: {integrity: sha512-sGwIGMjhYdW26/IhwK2gkWWI8DRCVO6uj3hYgHT+zD+QL1pa37tM3ujhyfcJIYSbsxp7Gxhy7zrRW/1AHm4BmA==}
engines: {node: '>=0.10.0'}
@ -650,6 +683,12 @@ packages:
concat-map@0.0.1:
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
confbox@0.1.8:
resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
confbox@0.2.1:
resolution: {integrity: sha512-hkT3yDPFbs95mNCy1+7qNKC6Pro+/ibzYxtM2iqEigpf0sVw+bg4Zh9/snjsBcf990vfIsg5+1U7VyiyBb3etg==}
copy-anything@2.0.6:
resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==}
@ -665,6 +704,15 @@ packages:
de-indent@1.0.2:
resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
debug@4.4.0:
resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
decode-uri-component@0.2.2:
resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
engines: {node: '>=0.10'}
@ -673,6 +721,10 @@ packages:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
docxtemplater@3.60.2:
resolution: {integrity: sha512-x6p8Vr5FgZn0ibmFJz4IS9u8KANQKLzhrp3EMxMvzBAxFW/c3kYhJKFNN8QzjJzXqKO2+XWCN1KTcaSKjqtnqg==}
engines: {node: '>=0.10'}
dom-serializer@2.0.0:
resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
@ -718,12 +770,33 @@ packages:
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
engines: {node: '>=0.8.0'}
escape-string-regexp@5.0.0:
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
engines: {node: '>=12'}
estree-walker@2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
estree-walker@3.0.3:
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
exsolve@1.0.4:
resolution: {integrity: sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==}
extend@3.0.2:
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
fdir@6.4.3:
resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==}
peerDependencies:
picomatch: ^3 || ^4
peerDependenciesMeta:
picomatch:
optional: true
file-saver@2.0.5:
resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==}
fill-range@7.1.1:
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
@ -813,6 +886,10 @@ packages:
insert-css@2.0.0:
resolution: {integrity: sha512-xGq5ISgcUP5cvGkS2MMFLtPDBtrtQPSFfC6gA6U8wHKqfjTIMZLZNxOItQnoSjdOzlXOLU/yD32RKC4SvjNbtA==}
install@0.13.0:
resolution: {integrity: sha512-zDml/jzr2PKU9I8J/xyZBQn8rPCAY//UOYNmR01XwNwyfhEWObo2SWfSl1+0tm1u6PhxLwDnfsT/6jB7OUxqFA==}
engines: {node: '>= 0.10'}
is-binary-path@2.1.0:
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
engines: {node: '>=8'}
@ -838,6 +915,9 @@ packages:
js-tokens@9.0.0:
resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==}
js-tokens@9.0.1:
resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==}
json5@1.0.2:
resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==}
hasBin: true
@ -845,6 +925,9 @@ packages:
jsonfile@2.4.0:
resolution: {integrity: sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==}
jszip-utils@0.1.0:
resolution: {integrity: sha512-tBNe0o3HAf8vo0BrOYnLPnXNo5A3KsRMnkBFYjh20Y3GPYGfgyoclEMgvVchx0nnL+mherPi74yLPIusHUQpZg==}
less@4.2.2:
resolution: {integrity: sha512-tkuLHQlvWUTeQ3doAqnHbNn8T6WX1KA8yvbKG9x4VtKtIjHsVKQZCH11zRgAfbDAXC2UNIg/K9BYAAcEzUIrNg==}
engines: {node: '>=6'}
@ -857,6 +940,10 @@ packages:
resolution: {integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==}
engines: {node: '>=4.0.0'}
local-pkg@1.1.1:
resolution: {integrity: sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==}
engines: {node: '>=14'}
lodash-es@4.17.21:
resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
@ -873,6 +960,9 @@ packages:
magic-string@0.30.10:
resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==}
magic-string@0.30.17:
resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
make-dir@2.1.0:
resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
engines: {node: '>=6'}
@ -903,9 +993,15 @@ packages:
minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
mlly@1.7.4:
resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==}
mousetrap@1.6.5:
resolution: {integrity: sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==}
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@ -933,6 +1029,9 @@ packages:
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
pako@2.1.0:
resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==}
parse-node-version@1.0.1:
resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==}
engines: {node: '>= 0.10'}
@ -944,6 +1043,9 @@ packages:
resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
engines: {node: '>=0.10.0'}
pathe@2.0.3:
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
picocolors@1.0.1:
resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
@ -951,6 +1053,10 @@ packages:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
picomatch@4.0.2:
resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
engines: {node: '>=12'}
pify@4.0.1:
resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
engines: {node: '>=6'}
@ -967,6 +1073,15 @@ packages:
typescript:
optional: true
pizzip@3.1.8:
resolution: {integrity: sha512-Nynadaz6/o1cmXDQGKqmTnbeaY10BGNc1PPOZYJMfLcjWfVJQ1ARngpVO+BrrRl/WUNIj0V9uJNrP72mkfsY5A==}
pkg-types@1.3.1:
resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
pkg-types@2.1.0:
resolution: {integrity: sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==}
postcss-html@1.7.0:
resolution: {integrity: sha512-MfcMpSUIaR/nNgeVS8AyvyDugXlADjN9AcV7e5rDfrF1wduIAGSkL4q2+wgrZgA3sHVAHLDO9FuauHhZYW2nBw==}
engines: {node: ^12 || >=14}
@ -1007,6 +1122,9 @@ packages:
resolution: {integrity: sha512-R+LQj3Evbjbpmglo7D0PBVsnAbKP4WSvZEZUnF8RGIpWkIHFeAT+BlDOxxBxKVyMDecmfv9qdzNLTZLMq32osA==}
hasBin: true
quansync@0.2.10:
resolution: {integrity: sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==}
readdirp@3.6.0:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
@ -1060,6 +1178,9 @@ packages:
sax@1.4.1:
resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
scule@1.3.0:
resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==}
semver@5.7.2:
resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
hasBin: true
@ -1098,6 +1219,9 @@ packages:
resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==}
engines: {node: '>=0.10.0'}
strip-literal@3.0.0:
resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==}
supports-color@0.2.0:
resolution: {integrity: sha512-tdCZ28MnM7k7cJDJc7Eq80A9CsRFAAOZUy41npOZCs++qSjfIy7o5Rh46CBk+Dk5FbKJ33X3Tqg4YrV07N5RaA==}
engines: {node: '>=0.10.0'}
@ -1111,6 +1235,10 @@ packages:
resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==}
engines: {node: '>=0.8.0'}
tinyglobby@0.2.12:
resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==}
engines: {node: '>=12.0.0'}
to-fast-properties@2.0.0:
resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
engines: {node: '>=4'}
@ -1127,9 +1255,49 @@ packages:
engines: {node: '>=14.17'}
hasBin: true
ufo@1.5.4:
resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
undici-types@5.26.5:
resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
unimport@4.1.2:
resolution: {integrity: sha512-oVUL7PSlyVV3QRhsdcyYEMaDX8HJyS/CnUonEJTYA3//bWO+o/4gG8F7auGWWWkrrxBQBYOO8DKe+C53ktpRXw==}
engines: {node: '>=18.12.0'}
unplugin-auto-import@19.1.1:
resolution: {integrity: sha512-sCGZZrSR1Bc8RfN8Q0RUDxXtC20rdAt7UB4lDyq8MNtKVHiXXh+5af6Nz4JRp9Q+7HjnbgQfQox0TkEymjdUAQ==}
engines: {node: '>=14'}
peerDependencies:
'@nuxt/kit': ^3.2.2
'@vueuse/core': '*'
peerDependenciesMeta:
'@nuxt/kit':
optional: true
'@vueuse/core':
optional: true
unplugin-utils@0.2.4:
resolution: {integrity: sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==}
engines: {node: '>=18.12.0'}
unplugin-vue-components@28.4.1:
resolution: {integrity: sha512-niGSc0vJD9ueAnsqcfAldmtpkppZ09B6p2G1dL7X5S8KPdgbk1P+txPwaaDCe7N+eZh2VG1aAypLXkuJs3OSUg==}
engines: {node: '>=14'}
peerDependencies:
'@babel/parser': ^7.15.8
'@nuxt/kit': ^3.2.2
vue: 2 || 3
peerDependenciesMeta:
'@babel/parser':
optional: true
'@nuxt/kit':
optional: true
unplugin@2.2.1:
resolution: {integrity: sha512-Q0YDhwViJaSnHf1cxLf+/VKhmfdr/ZAS/RL2GQVO0cAbAfJAVUef2bvNu+veyWcEPNwsTlFmMiFLjf8Xeqog8g==}
engines: {node: '>=18.12.0'}
urix@0.1.0:
resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==}
deprecated: Please see https://github.com/lydell/urix#deprecated
@ -1213,6 +1381,9 @@ packages:
typescript:
optional: true
webpack-virtual-modules@0.6.2:
resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
@ -1407,6 +1578,8 @@ snapshots:
'@jridgewell/sourcemap-codec@1.4.15': {}
'@jridgewell/sourcemap-codec@1.5.0': {}
'@kjgl77/datav-vue3@1.7.3(vue@3.4.29(typescript@5.2.2))':
dependencies:
'@jiaminghi/c-render': 0.4.3
@ -1621,6 +1794,10 @@ snapshots:
- '@vue/composition-api'
- vue
'@xmldom/xmldom@0.9.8': {}
acorn@8.14.1: {}
ansi-regex@0.2.1: {}
ansi-regex@2.1.1: {}
@ -1705,6 +1882,10 @@ snapshots:
concat-map@0.0.1: {}
confbox@0.1.8: {}
confbox@0.2.1: {}
copy-anything@2.0.6:
dependencies:
is-what: 3.14.1
@ -1722,10 +1903,18 @@ snapshots:
de-indent@1.0.2: {}
debug@4.4.0:
dependencies:
ms: 2.1.3
decode-uri-component@0.2.2: {}
delayed-stream@1.0.0: {}
docxtemplater@3.60.2:
dependencies:
'@xmldom/xmldom': 0.9.8
dom-serializer@2.0.0:
dependencies:
domelementtype: 2.3.0
@ -1809,10 +1998,24 @@ snapshots:
escape-string-regexp@1.0.5: {}
escape-string-regexp@5.0.0: {}
estree-walker@2.0.2: {}
estree-walker@3.0.3:
dependencies:
'@types/estree': 1.0.5
exsolve@1.0.4: {}
extend@3.0.2: {}
fdir@6.4.3(picomatch@4.0.2):
optionalDependencies:
picomatch: 4.0.2
file-saver@2.0.5: {}
fill-range@7.1.1:
dependencies:
to-regex-range: 5.0.1
@ -1896,6 +2099,8 @@ snapshots:
insert-css@2.0.0: {}
install@0.13.0: {}
is-binary-path@2.1.0:
dependencies:
binary-extensions: 2.3.0
@ -1914,6 +2119,8 @@ snapshots:
js-tokens@9.0.0: {}
js-tokens@9.0.1: {}
json5@1.0.2:
dependencies:
minimist: 1.2.8
@ -1922,6 +2129,8 @@ snapshots:
optionalDependencies:
graceful-fs: 4.2.11
jszip-utils@0.1.0: {}
less@4.2.2:
dependencies:
copy-anything: 2.0.6
@ -1944,6 +2153,12 @@ snapshots:
emojis-list: 3.0.0
json5: 1.0.2
local-pkg@1.1.1:
dependencies:
mlly: 1.7.4
pkg-types: 2.1.0
quansync: 0.2.10
lodash-es@4.17.21: {}
lodash-unified@1.0.3(@types/lodash-es@4.17.12)(lodash-es@4.17.21)(lodash@4.17.21):
@ -1958,6 +2173,10 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.4.15
magic-string@0.30.17:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
make-dir@2.1.0:
dependencies:
pify: 4.0.1
@ -1985,8 +2204,17 @@ snapshots:
minimist@1.2.8: {}
mlly@1.7.4:
dependencies:
acorn: 8.14.1
pathe: 2.0.3
pkg-types: 1.3.1
ufo: 1.5.4
mousetrap@1.6.5: {}
ms@2.1.3: {}
nanoid@3.3.7: {}
natives@1.1.6: {}
@ -2007,16 +2235,22 @@ snapshots:
dependencies:
wrappy: 1.0.2
pako@2.1.0: {}
parse-node-version@1.0.1: {}
path-browserify@1.0.1: {}
path-is-absolute@1.0.1: {}
pathe@2.0.3: {}
picocolors@1.0.1: {}
picomatch@2.3.1: {}
picomatch@4.0.2: {}
pify@4.0.1:
optional: true
@ -2028,6 +2262,22 @@ snapshots:
optionalDependencies:
typescript: 5.2.2
pizzip@3.1.8:
dependencies:
pako: 2.1.0
pkg-types@1.3.1:
dependencies:
confbox: 0.1.8
mlly: 1.7.4
pathe: 2.0.3
pkg-types@2.1.0:
dependencies:
confbox: 0.2.1
exsolve: 1.0.4
pathe: 2.0.3
postcss-html@1.7.0:
dependencies:
htmlparser2: 8.0.2
@ -2078,6 +2328,8 @@ snapshots:
extend: 3.0.2
fs-extra: 0.16.5
quansync@0.2.10: {}
readdirp@3.6.0:
dependencies:
picomatch: 2.3.1
@ -2130,6 +2382,8 @@ snapshots:
sax@1.4.1:
optional: true
scule@1.3.0: {}
semver@5.7.2:
optional: true
@ -2159,6 +2413,10 @@ snapshots:
dependencies:
ansi-regex: 2.1.1
strip-literal@3.0.0:
dependencies:
js-tokens: 9.0.1
supports-color@0.2.0: {}
supports-color@2.0.0: {}
@ -2167,6 +2425,11 @@ snapshots:
dependencies:
has-flag: 1.0.0
tinyglobby@0.2.12:
dependencies:
fdir: 6.4.3(picomatch@4.0.2)
picomatch: 4.0.2
to-fast-properties@2.0.0: {}
to-regex-range@5.0.1:
@ -2177,8 +2440,64 @@ snapshots:
typescript@5.2.2: {}
ufo@1.5.4: {}
undici-types@5.26.5: {}
unimport@4.1.2:
dependencies:
acorn: 8.14.1
escape-string-regexp: 5.0.0
estree-walker: 3.0.3
local-pkg: 1.1.1
magic-string: 0.30.17
mlly: 1.7.4
pathe: 2.0.3
picomatch: 4.0.2
pkg-types: 1.3.1
scule: 1.3.0
strip-literal: 3.0.0
tinyglobby: 0.2.12
unplugin: 2.2.1
unplugin-utils: 0.2.4
unplugin-auto-import@19.1.1(@vueuse/core@10.11.0(vue@3.4.29(typescript@5.2.2))):
dependencies:
local-pkg: 1.1.1
magic-string: 0.30.17
picomatch: 4.0.2
unimport: 4.1.2
unplugin: 2.2.1
unplugin-utils: 0.2.4
optionalDependencies:
'@vueuse/core': 10.11.0(vue@3.4.29(typescript@5.2.2))
unplugin-utils@0.2.4:
dependencies:
pathe: 2.0.3
picomatch: 4.0.2
unplugin-vue-components@28.4.1(@babel/parser@7.24.7)(vue@3.4.29(typescript@5.2.2)):
dependencies:
chokidar: 3.6.0
debug: 4.4.0
local-pkg: 1.1.1
magic-string: 0.30.17
mlly: 1.7.4
tinyglobby: 0.2.12
unplugin: 2.2.1
unplugin-utils: 0.2.4
vue: 3.4.29(typescript@5.2.2)
optionalDependencies:
'@babel/parser': 7.24.7
transitivePeerDependencies:
- supports-color
unplugin@2.2.1:
dependencies:
acorn: 8.14.1
webpack-virtual-modules: 0.6.2
urix@0.1.0: {}
utility-types@3.11.0: {}
@ -2231,6 +2550,8 @@ snapshots:
optionalDependencies:
typescript: 5.2.2
webpack-virtual-modules@0.6.2: {}
wrappy@1.0.2: {}
zrender@5.6.1:

Binary file not shown.

@ -50,4 +50,20 @@ export const checkapi = (params:any)=> {
method: 'get',
params
})
}
// 获取实验报告
export const getReport = () => {
return request({
url: "/xnRecords/getSummarize",
method: "get",
})
}
// 保存实验报告
export const saveReport = (data: any) => {
return request({
url: "/xnRecords/saveSummarize",
method: "post",
data
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

@ -25,6 +25,11 @@ const routerList: any = [
name: "Compiler",
component: () => import("@/views/compiler/index.vue"),
},
{
path: "experimentalData",
name: "ExperimentalData",
component: () => import("@/views/experimentalData/index.vue"),
}
],
},
{
@ -36,7 +41,8 @@ const routerList: any = [
path: '/login',
name: 'Login',
component: () => import('@/layout/loginPage.vue')
}
},
];
const router: any = createRouter({

@ -1,4 +1,7 @@
import { defineStore } from "pinia";
import { ElMessage } from "element-plus";
import router from "@/router";
const settingStore = defineStore("settingStore", {
state: (): any => {
return {
@ -16,11 +19,15 @@ const settingStore = defineStore("settingStore", {
sdsz: 0, // 湿度数值
falg: false,
timer: null,
experimentPreservation: false, // 是否设计好实验
saveRoute: false, // 是否保存路由
experimentPreservation:
Boolean(localStorage.getItem("experimentPreservation")) || false, // 是否设计好实验
saveRoute: Boolean(localStorage.getItem("saveRoute")) || false, // 是否保存路由
stepIds: null,
wenduCode: null,
shiduCode:null
shiduCode: null,
isRunning: false,
isRunCode: Boolean(localStorage.getItem("isRunCode")) || false,
shiyanData: [],
};
},
actions: {
@ -70,6 +77,11 @@ const settingStore = defineStore("settingStore", {
}, 1000);
},
simulateHeatingAndHumidifying() {
// const router = useRouter();
if (this.isRunning) return; // 如果已经在运行,则直接返回
this.isRunning = true;
this.shiyanData = [];
// 计算时间常数
const a = (100000 * this.zl * this.srmj) / this.jrgl;
const b = (10000 * this.jsmj) / this.jsgl;
@ -92,12 +104,34 @@ const settingStore = defineStore("settingStore", {
2
)}°C, 湿度: ${currentHumidity}%RH`
);
this.shiyanData.push({
time,
currentTemp,
currentHumidity,
});
this.qw = currentTemp >= 100 ? 100 : currentTemp;
this.cssd = currentHumidity >= 100 ? 100 : Number(currentHumidity.toFixed(2));
this.cssd =
currentHumidity >= 100 ? 100 : Number(currentHumidity.toFixed(2));
// 停止加热 & 加湿
if (currentTemp >= 100 && currentHumidity >= 100) {
console.log("温度和湿度均达到上限,停止模拟!");
ElMessage.warning("温度和湿度均达到上限,停止模拟");
if (this.isRunCode) {
router.push({
path: "/experimentalData",
});
} else {
router.push({
path: "/",
query: {
ieda: true,
},
});
}
clearInterval(interval);
this.isRunning = false; // 复位标志,允许再次触发
}
time += 1; // 每秒增加 1s

@ -8,30 +8,26 @@
</div>
</div>
<div class="setting">
<el-button>保存</el-button>
<el-button @click="saveCode">保存</el-button>
</div>
</div>
</template>
<script setup>
import { onMounted, ref } from "vue";
import { setStepEvent } from "@/utils/setStep";
import { formatDate } from "@/utils";
import settingStore from "@/store/modules/setting";
import { useRouter } from "vue-router";
const router = useRouter()
const useSettingStore = settingStore();
import hljs from "highlight.js/lib/core";
const editor = ref(null);
const code = ref('console.log("Hello, World!");');
const highlightCode = () => {
const codeBlock = editor.value;
console.log(codeBlock);
if (codeBlock) {
hljs.highlightElement(code);
}
};
onMounted(() => {
// highlightCode();
});
const saveCode = () => {
useSettingStore.setValue(true, 'isRunCode');
localStorage.setItem('isRunCode','true')
setStepEvent(8,formatDate(new Date()))
router.push('/program')
}
</script>
<style scoped>

@ -852,6 +852,7 @@ const onSave = () => {
}
ElMessage.success("保存成功");
settingStore.setValue( true,'saveRoute');
localStorage.setItem('saveRoute',true)
router.push('/program')
// const data = graph.toJSON();
// console.log(data);

@ -0,0 +1,91 @@
<template>
<div class="container">
<div class="main">
<el-table
:data="tableData"
height="700"
style="width: 100%"
:style="{ background: 'transparent' }"
>
<el-table-column prop="time" label="时间(秒)" width="180" >
<template #default="{row}">
<span style="margin-left: 10px">{{ row.time + 1 }}</span>
</template>
</el-table-column>
<el-table-column prop="currentTemp" label="温度" width="180" >
<template #default="{row}">
<span style="margin-left: 10px">{{ row.currentTemp.toFixed(2) }}摄氏度</span>
</template>
</el-table-column>
<el-table-column prop="currentHumidity" label="湿度" >
<template #default="{row}">
<span style="margin-left: 10px">{{ row.currentHumidity.toFixed(2) }}摄氏度</span>
</template>
</el-table-column>
</el-table>
</div>
</div>
</template>
<script setup>
import settingstore from '@/store/modules/setting'
import { setStepEvent } from "@/utils/setStep";
import { formatDate } from "@/utils";
import {ref} from 'vue'
const useSettingStore = settingstore()
const tableData = ref([])
tableData.value = useSettingStore.shiyanData
console.log(tableData.valu);
setStepEvent(10,formatDate(new Date()))
</script>
<style scoped>
.container {
width: 100%;
height: 100vh;
display: flex;
justify-content: center;
margin-top: 100px;
/* position: relative; */
}
.main {
width: 1442px;
height: 753px;
/* background-color: pink; */
background-size: contain;
background-position: center center;
position: relative;
}
/* 让整个表格透明 */
.el-table {
background: transparent !important;
}
:deep(.el-table th) {
background: transparent !important;
}
/* 让表头也透明 */
.el-table th {
background: transparent !important;
}
/* 让每一行背景透明 */
:deep(.el-table tr) {
background: transparent !important;
color: #fff;
&:hover {
color: #000 !important;
background-color: pink !important;
}
}
:deep(.el-table tr:hover) {
color: #000 !important;
/* background-color: pink !important; */
}
/* 去掉边框 */
.el-table::before {
background: transparent !important;
}
</style>

@ -152,7 +152,7 @@
</div>
</template>
<div class="setting-list">
<div class="item" @click="openSrttingDialog">
<div class="item">
<div class="icon">
<!-- <img src="@/assets/images/home.png" alt="" /> -->
</div>
@ -162,7 +162,74 @@
<div class="icon">
<img src="@/assets/images/home.png" alt="" />
</div>
<div class="name">管理员身份运行</div>
<div class="name" @click="goToLabView">管理员身份运行</div>
</div>
<div class="item">
<div class="icon">
<img src="@/assets/images/home.png" alt="" />
</div>
<div class="name">解压到当前文件夹</div>
</div>
<div class="item">
<div class="icon">
<img src="@/assets/images/home.png" alt="" />
</div>
<div class="name">解压到...</div>
</div>
<div class="item">
<div class="icon">
<img src="@/assets/images/home.png" alt="" />
</div>
<div class="name">解压到"LabVIEW2024 (64位)\"</div>
</div>
<div class="item">
<div class="icon">
<img src="@/assets/images/home.png" alt="" />
</div>
<div class="name">其他压缩命令</div>
</div>
<div class="item">
<div class="icon">
<img src="@/assets/images/home.png" alt="" />
</div>
<div class="name">Edit width Notepad++</div>
</div>
</div>
</el-popover>
<el-popover
placement="right"
:width="260"
trigger="contextmenu"
ref="popover2"
v-if="installationStep === 11"
>
<template #reference>
<div class="item">
<div class="icon">
<img
style="width: 100%"
src="@/assets/images/ideaicon.png"
alt=""
srcset=""
/>
</div>
<div class="file-name" style="text-align: center">
IntelliJ IDEA 2020.1 x64
</div>
</div>
</template>
<div class="setting-list">
<div class="item">
<div class="icon">
<!-- <img src="@/assets/images/home.png" alt="" /> -->
</div>
<div class="name" style="font-weight: 700">打开</div>
</div>
<div class="item">
<div class="icon">
<img src="@/assets/images/home.png" alt="" />
</div>
<div class="name" @click="goToLabIdea">管理员身份运行</div>
</div>
<div class="item">
<div class="icon">
@ -313,30 +380,47 @@
<div class="title">用户信息</div>
<div class="tip">请输入以下信息</div>
<div class="name">
<span>全名</span><el-input style="width: 280px;margin-left: 30px;"placeholder="软件安全管家"></el-input>
<span>全名</span
><el-input
style="width: 280px; margin-left: 30px"
placeholder="软件安全管家"
></el-input>
</div>
<div class="unit">
<span>单位</span><el-input style="width: 280px;margin-left: 30px;"placeholder="中国大陆"></el-input>
<span>单位</span
><el-input
style="width: 280px; margin-left: 30px"
placeholder="中国大陆"
></el-input>
</div>
</div>
<div class="step3" v-show="installationStep === 3">
<div class="title">序列号</div>
<div class="tip">请输入以下产品序列号</div>
<div class="serial">
<div class="name" >序列号</div>
<el-form label-width="400px" style="max-width: 720" >
<el-form-item label="LabVIEW 2014(基本版 / 完整版 / 专业版):"label-width="307px">
<el-input style="width: 300px;margin-left: 95px;" />
</el-form-item>
<el-form-item label="应用程序生成器 - 用于 LabVIEW 2014,如激活 LabVIEW 专业版则保留空白:">
<el-input style="width: 300px"/>
</el-form-item>
<el-form-item label="Report Generation 工具包 - 用于 LabVIEW 2014,如激活 LabVIEW 专业版则保留空白:">
<el-input style="width: 300px"/>
</el-form-item>
<el-form-item label="atabase 工具包 - 用于 LabVIEW 2014,如激活 LabVIEW 专业版则保留空白):">
<el-input style="width: 300px"/>
</el-form-item>
<div class="name">序列号</div>
<el-form label-width="400px" style="max-width: 720">
<el-form-item
label="LabVIEW 2014(基本版 / 完整版 / 专业版):"
label-width="307px"
>
<el-input style="width: 300px; margin-left: 95px" />
</el-form-item>
<el-form-item
label="应用程序生成器 - 用于 LabVIEW 2014,如激活 LabVIEW 专业版则保留空白:"
>
<el-input style="width: 300px" />
</el-form-item>
<el-form-item
label="Report Generation 工具包 - 用于 LabVIEW 2014,如激活 LabVIEW 专业版则保留空白:"
>
<el-input style="width: 300px" />
</el-form-item>
<el-form-item
label="atabase 工具包 - 用于 LabVIEW 2014,如激活 LabVIEW 专业版则保留空白):"
>
<el-input style="width: 300px" />
</el-form-item>
</el-form>
</div>
</div>
@ -344,11 +428,23 @@
<div class="title">目标目录</div>
<div class="tip">选择主安装目录</div>
<div class="item">选择 NI 软件的安装文件夹</div>
<el-select disabled placeholder="C:\Users\LabVIEW Chinese\2014" style="width: 300px;margin-top: 10px;"/>
<el-button disabled style="margin-left: 5px;margin-top: 10px;">浏览</el-button>
<el-select
disabled
placeholder="C:\Users\LabVIEW Chinese\2014"
style="width: 300px; margin-top: 10px"
/>
<el-button disabled style="margin-left: 5px; margin-top: 10px"
>浏览</el-button
>
<div class="item">选择NI LabVIEW 2014的安装文件夹</div>
<el-select disabled placeholder="C:\Users\LabVIEW Chinese\2014" style="width: 300px;margin-top: 10px;"/>
<el-button disabled style="margin-left: 5px;margin-top: 10px;">浏览</el-button>
<el-select
disabled
placeholder="C:\Users\LabVIEW Chinese\2014"
style="width: 300px; margin-top: 10px"
/>
<el-button disabled style="margin-left: 5px; margin-top: 10px"
>浏览</el-button
>
</div>
<div class="step5" v-show="installationStep === 5">
<div class="title">组件</div>
@ -364,39 +460,58 @@
<div class="item">设备驱动程序</div>
</div>
<div class="image-container">
<p style="margin-bottom: 20px;">测量和仪器的图形化编程</p>
<img src="@/assets/images/bg13.png" alt="">
<p style="margin-top: 20px;">该组件将安装至本地硬盘</p>
<p style="margin-bottom: 20px">测量和仪器的图形化编程</p>
<img src="@/assets/images/bg13.png" alt="" />
<p style="margin-top: 20px">该组件将安装至本地硬盘</p>
</div>
</div>
<div class="name">选择NI LabVIEW 2014的安装文件夹</div>
<el-select disabled placeholder="C:\Users\LabVIEW Chinese\2014" style="width: 300px;margin-top: 10px;"/>
<el-button disabled style="margin-left: 5px;margin-top: 10px;">浏览</el-button>
</div>
<div class="name">选择NI LabVIEW 2014的安装文件夹</div>
<el-select
disabled
placeholder="C:\Users\LabVIEW Chinese\2014"
style="width: 300px; margin-top: 10px"
/>
<el-button disabled style="margin-left: 5px; margin-top: 10px"
>浏览</el-button
>
</div>
<div class="step6" v-show="installationStep === 6">
<div class="title">产品通知</div>
<div class="tip">请查看所选配置的相关信息</div>
<div class="item">
警告可能已启用Windows防火墙默认状态下Windows操作系统启用防火墙首次打开LabVIEW时可能会弹出一个对话框要求您选择是否从网络接收信息建议选择解除阻止以使用LabVIEW的所有网络功能详细信息请访问ni.com/info并输入信息代码expm69查询
<br>产品注意事项
<br>安装该产品之前必须安装Microsoft Office XP或更高版本Report Generation工具包-用于Microsoft Office提供的一组VI可用于创建和编辑Microsoft Word和Microsoft Excel格式的报表通过报表生成工具用户可使用WordExcel或自定义模板创建风格一致的专业报表减少报表显示打印或保存前编程的工作量还可以在*.rd文档和Excel工作表中执行Visual Basic宏实现自定义的功能更多关于Report Generation工具包的信息请访问ni.com/info并输入信息代码report
<br>正在安装自等社过猪保要票影的前我地,是器得品和更新如执行搜索则gational Instruments将在遵循保密协议的前提下使用您的搜索查询来改进搜索结果和相关性
<br />产品注意事项 <br />安装该产品之前必须安装Microsoft Office
XP或更高版本Report Generation工具包-用于Microsoft
Office提供的一组VI可用于创建和编辑Microsoft Word和Microsoft
Excel格式的报表通过报表生成工具用户可使用WordExcel或自定义模板创建风格一致的专业报表减少报表显示打印或保存前编程的工作量还可以在*.rd文档和Excel工作表中执行Visual
Basic宏实现自定义的功能更多关于Report
Generation工具包的信息请访问ni.com/info并输入信息代码report
<br />正在安装自等社过猪保要票影的前我地,是器得品和更新如执行搜索则gational
Instruments将在遵循保密协议的前提下使用您的搜索查询来改进搜索结果和相关性
</div>
</div>
<div class="step7" v-show="installationStep === 7">
<p class="name">总进度</p>
<el-progress :text-inside="true" :stroke-width="20" :percentage="80" style="margin-bottom: 25px"/>
<el-progress
:text-inside="true"
:stroke-width="20"
:percentage="80"
style="margin-bottom: 25px"
/>
<p class="name">复制新文件</p>
<el-progress :percentage="100" status="success" :stroke-width="20" />
</div>
<div class="step7" v-show="installationStep === 8">
<p class="name">总进度</p>
<el-progress :text-inside="true" :stroke-width="20" :percentage="80" style="margin-bottom: 25px"/>
<el-progress
:text-inside="true"
:stroke-width="20"
:percentage="80"
style="margin-bottom: 25px"
/>
<p class="name">复制新文件</p>
<el-progress :percentage="100" status="success" :stroke-width="20" />
</div>
</div>
<template #footer>
@ -442,90 +557,182 @@
</template>
</el-dialog>
<el-dialog
v-model="Popup"
width="650px"
height="500px"
top="10%"
style="left: 5%;padding: 0;"
>
<template #header>
<div class="dialog-header" >安装LabVIEW硬件支持</div>
</template>
<div class="installation-box">
<div v-show="installationStep === 8">
<div style="margin-top: 8px; margin-bottom: 80px;font-size: 16px;line-height: 1.6;letter-spacing: 0.5px;font-weight: bold">如需使LabVIEW支持硬件设备必须安装相应的设备驱动程序即便以前版本的LabVIEW已经安装相应设备驱动程序仍需需为当前版本的LabVIEW重新安装</div>
<div class="item">如所需文件处于其他位置请在下面输入相应路径</div>
<el-select disabled placeholder="C:\Users\LabVIEW Chinese\2014" style="width: 300px;margin-top: 10px;margin-left: 15px;"/>
<el-button disabled style="margin-left: 5px;margin-top: 10px;">浏览</el-button>
</div>
<div class="step9" v-show="installationStep === 9"style="height: 250px;font-weight: bold;font-size: 16px;">
安装完成!
v-model="Popup"
width="650px"
height="500px"
top="10%"
style="left: 5%; padding: 0"
>
<template #header>
<div class="dialog-header">安装LabVIEW硬件支持</div>
</template>
<div class="installation-box">
<div v-show="installationStep === 8">
<div
style="
margin-top: 8px;
margin-bottom: 80px;
font-size: 16px;
line-height: 1.6;
letter-spacing: 0.5px;
font-weight: bold;
"
>
如需使LabVIEW支持硬件设备必须安装相应的设备驱动程序即便以前版本的LabVIEW已经安装相应设备驱动程序仍需需为当前版本的LabVIEW重新安装
</div>
<div class="item">如所需文件处于其他位置请在下面输入相应路径</div>
<el-select
disabled
placeholder="C:\Users\LabVIEW Chinese\2014"
style="width: 300px; margin-top: 10px; margin-left: 15px"
/>
<el-button disabled style="margin-left: 5px; margin-top: 10px"
>浏览</el-button
>
</div>
<div
class="step9"
v-show="installationStep === 9"
style="height: 250px; font-weight: bold; font-size: 16px"
>
安装完成!
</div>
</div>
<template #footer>
<div class="dialog-footer">
<el-button
v-show="installationStep === 8"
size="large"
@click="Installation = false"
style="background-color: #f3f3f3; color: #000000; border-color: #ccc"
>安装支持</el-button
>
<el-button
v-show="installationStep === 8"
type="primary"
size="large"
@click="setInstallationStep"
style="background-color: #0052d9; color: #fff; border: 0"
>
不需要支持
</el-button>
<el-button
v-show="installationStep === 9"
size="large"
@click="Installation = false"
style="background-color: #f3f3f3; color: #000000; border-color: #ccc"
>上一步</el-button
>
<el-button
v-show="installationStep === 9"
type="primary"
size="large"
@click="Installation = false"
style="background-color: #f3f3f3; color: #000000; border-color: #ccc"
>
下一步
</el-button>
<el-button
v-show="installationStep === 9"
size="large"
@click="Completed"
style="background-color: #0052d9; color: #fff; border: 0"
>完成</el-button
>
</div>
</template>
</el-dialog>
<el-dialog
v-model="isShowIdea"
width="1000px"
height="500px"
top="10%"
style="left: 5%; padding: 0"
>
<template #header>
<div class="dialog-header">INTELIJ IDEA SETUP</div>
</template>
<div class="idea-box">
<div class="left"></div>
<div class="right">
<div v-if="installationStep === 10">
<div class="title">Welcome to IntelliJ lDEA Setup</div>
<div class="description">
Setup wil guide you through the installation of Inteli] IDEA. It is
recommended that you dose all other applications befonestarting
Setup, This will make it possible to update relevantsystem fles
wthout having to reboot your computer.<br /> Click Nedt to cantinue.
</div>
</div>
<div v-if="installationStep === 11">
<div class="title"> Completing inteliJ lDEA Setup </div>
<div class="description">
lrtel lDEA has been instdlled on your comgarier.Chdk nnish to dose setmp R.n intt3 boEA
</div>
<template #footer>
<div class="dialog-footer">
<el-button
v-show="installationStep === 8"
size="large"
@click="Installation = false"
style="background-color: #f3f3f3; color: #000000; border-color: #ccc"
>安装支持</el-button
>
<el-button
v-show="installationStep === 8"
type="primary"
size="large"
@click="setInstallationStep"
style="background-color: #0052d9; color: #fff; border: 0"
>
不需要支持
</el-button>
<el-button
v-show="installationStep === 9"
size="large"
@click="Installation = false"
style="background-color: #f3f3f3; color: #000000; border-color: #ccc"
>上一步</el-button
>
<el-button
v-show="installationStep === 9"
type="primary"
size="large"
@click="Installation = false"
style="background-color: #f3f3f3; color: #000000; border-color: #ccc"
>
下一步
</el-button>
<el-button
v-show="installationStep === 9"
size="large"
@click="Completed"
style="background-color: #0052d9; color: #fff; border: 0"
>完成</el-button
>
</div>
</template>
</el-dialog>
</div>
</div>
<!-- <div
class="step9"
style="height: 250px; font-weight: bold; font-size: 16px"
>
安装完成!
</div> -->
</div>
<template #footer>
<div class="dialog-footer">
<el-button
v-show="installationStep === 10"
type="primary"
size="large"
@click="setInstallationStep"
style="background-color: #f3f3f3; color: #000000; border-color: #ccc"
>
下一步
</el-button>
<el-button
v-show="installationStep === 11"
size="large"
@click="insatIdea"
style="background-color: #0052d9; color: #fff; border: 0"
>完成</el-button
>
</div>
</template>
</el-dialog>
</template>
<script setup lang="ts">
import { ref } from "vue";
import { setStepEvent } from "@/utils/setStep";
import { formatDate } from "@/utils";
import { useRouter, useRoute } from "vue-router";
type Falg = boolean;
type Step = number;
const falg = ref<Falg>(false);
const product = ref<Falg>(false);
const falg = ref<Falg>(Boolean(localStorage.getItem("falg")) || false);
const product = ref<Falg>(Boolean(localStorage.getItem("product")) || false);
const step = ref<Step>(0);
const popover1 = ref<any>(null);
const popover2 = ref<any>(null);
const dialogVisible = ref<Falg>(false);
const Installation = ref<Falg>(false);
const Popup = ref<Falg>(false);
const installationStep = ref<Step>(1);
const installationStep = ref<Step>(
Number(localStorage.getItem("installationStep")) || 0
);
const route = useRoute();
const router = useRouter();
const isShowIdea = ref<Boolean>(false);
console.log(route);
if (route.query.idea) {
isShowIdea.value = true;
installationStep.value = 10
}
const checkList = ref<Step[]>([1, 2]);
const unpack = (): void => {
falg.value = true;
localStorage.setItem("falg", "true");
console.log(falg);
popover1.value.hide();
};
@ -546,17 +753,34 @@ const openSrttingDialog = (): void => {
};
const setInstallationStep = (): void => {
installationStep.value++;
if(installationStep.value == 8){
Popup.value = true
localStorage.setItem("installationStep", installationStep.value.toString());
if (installationStep.value == 8) {
Popup.value = true;
}
if(installationStep.value == 9){
Installation.value = false
Popup.value = true
if (installationStep.value == 9) {
Installation.value = false;
Popup.value = true;
}
};
const Completed = ():void => {
Popup.value = false
const Completed = (): void => {
Popup.value = false;
product.value = true;
localStorage.setItem("product", "true");
};
// labView
const goToLabView = async () => {
await setStepEvent(1, formatDate(new Date()));
router.push("/program");
};
const goToLabIdea = async () => {
await setStepEvent(7,formatDate(new Date()))
router.push('/compiler')
}
const insatIdea = () => {
isShowIdea.value = false
setStepEvent(6,formatDate(new Date()))
}
</script>
@ -778,155 +1002,176 @@ const Completed = ():void => {
}
}
.step2 {
min-height: 230px;
.title {
font-size: 24px;
color: #585858;
font-weight: 700;
margin-top: 10px;
}
.tip {
font-size: 16px;
line-height: 30px;
color: #585858;
margin-top: 10px;
}
.name,
.unit {
padding-left: 37px;
margin-top: 25px;
min-height: 230px;
.title {
font-size: 24px;
color: #585858;
font-weight: 700;
margin-top: 10px;
}
.tip {
font-size: 16px;
line-height: 30px;
color: #585858;
}
margin-top: 10px;
}
.name,
.unit {
padding-left: 37px;
margin-top: 25px;
}
}
.step3{
// width: 540px;
// height: 500px;
// border-radius: 5px;
// background-color: #fff;
.title {
font-size: 25px;
font-weight: bold; /* 设置文字加粗 */
}
.tip{
margin-top: 20px;
font-size: 15px;
font-weight: bold; /* 设置文字加粗 */
}
.serial{
margin-top: 40px;
.name{
font-size: 15px;
font-weight: bold; /* 设置文字加粗 */
margin-left: 400px;
margin-bottom: 15px;
}
:deep(.el-form-item__label ){
text-align: left; /* 设置label左对齐 */
line-height: 20px;
}
}
}
.step4{
.title {
font-size: 25px;
font-weight: bold; /* 设置文字加粗 */
}
.tip {
margin-top: 20px;
font-size: 15px;
font-weight: bold; /* 设置文字加粗 */
}
.item{
margin-top: 50px;
}
.item:before {
content: "• "; /* 在内容前添加一个小点和空格 */
color: rgb(0, 0, 0); /* 设置小点的颜色 */
font-size: 15px; /* 设置小点的大小 */
margin-right: 5px; /* 设置小点和文本之间的间距 */
}
}
.step5{
.title {
font-size: 25px;
font-weight: bold; /* 设置文字加粗 */
}
.tip {
margin-top: 20px;
font-size: 15px;
font-weight: bold; /* 设置文字加粗 */
}
.headers{
display: flex; /* 使用Flexbox布局 */
justify-content: space-between; /* 让子元素在容器中左右对齐 */
}
.header{
display: flex; /* 使用Flexbox布局 */
flex-direction: column; /* 设置子元素竖向排列 */
align-items: flex-start; /* 对齐方式,让子元素的起始位置对齐 */
width: auto;
}
.item{
margin-top: 20px;
margin-left: 30px;
font-size: 13px;
}
.item:before {
content: '▸ '; /* 在内容前添加一个小点和空格 */
color: rgb(0, 0, 0); /* 设置小点的颜色 */
font-size: 13px; /* 设置小点的大小 */
margin-right: 5px; /* 设置小点和文本之间的间距 */
}
.image-container {
background-color: #ebebeb;
width: 300px; /* 或者根据需要调整宽度 */
margin-left: auto; /* 推动到右侧 */
padding: 10px;
display: flex; /* 启用Flexbox布局 */
flex-direction: column; /* 设置子元素竖向排列 */
justify-content: center; /* 垂直居中 */
align-items: center; /* 水平居中 */
}
.name{
margin-top: 40px;
}
.name:before {
content: "• "; /* 在内容前添加一个小点和空格 */
color: rgb(0, 0, 0); /* 设置小点的颜色 */
font-size: 15px; /* 设置小点的大小 */
margin-right: 5px; /* 设置小点和文本之间的间距 */
}
}
.step6{
.title {
font-size: 15px;
font-weight: bold; /* 设置文字加粗 */
color: #f2994a;
margin-bottom: 10px;
}
.item{
margin-top: 40px;
line-height: 1.6; /* 设置行高 */
letter-spacing: 0.5px; /* 设置字母间距 */
}
.step3 {
// width: 540px;
// height: 500px;
// border-radius: 5px;
// background-color: #fff;
.title {
font-size: 25px;
font-weight: bold; /* 设置文字加粗 */
}
.step7{
padding: 50px;
// width: 600px;
.name{
margin-bottom: 8px;
.tip {
margin-top: 20px;
font-size: 15px;
font-weight: bold; /* 设置文字加粗 */
}
.serial {
margin-top: 40px;
.name {
font-size: 15px;
font-weight: bold; /* 设置文字加粗 */
margin-left: 400px;
margin-bottom: 15px;
}
:deep(.el-form-item__label) {
text-align: left; /* 设置label左对齐 */
line-height: 20px;
}
.item:before {
content: "• "; /* 在内容前添加一个小点和空格 */
color: rgb(0, 0, 0); /* 设置小点的颜色 */
font-size: 15px; /* 设置小点的大小 */
margin-right: 5px; /* 设置小点和文本之间的间距 */
}
}
}
.step4 {
.title {
font-size: 25px;
font-weight: bold; /* 设置文字加粗 */
}
.tip {
margin-top: 20px;
font-size: 15px;
font-weight: bold; /* 设置文字加粗 */
}
.item {
margin-top: 50px;
}
.item:before {
content: "• "; /* 在内容前添加一个小点和空格 */
color: rgb(0, 0, 0); /* 设置小点的颜色 */
font-size: 15px; /* 设置小点的大小 */
margin-right: 5px; /* 设置小点和文本之间的间距 */
}
}
.step5 {
.title {
font-size: 25px;
font-weight: bold; /* 设置文字加粗 */
}
.tip {
margin-top: 20px;
font-size: 15px;
font-weight: bold; /* 设置文字加粗 */
}
.headers {
display: flex; /* 使用Flexbox布局 */
justify-content: space-between; /* 让子元素在容器中左右对齐 */
}
.header {
display: flex; /* 使用Flexbox布局 */
flex-direction: column; /* 设置子元素竖向排列 */
align-items: flex-start; /* 对齐方式,让子元素的起始位置对齐 */
width: auto;
}
.item {
margin-top: 20px;
margin-left: 30px;
font-size: 13px;
}
.item:before {
content: "▸ "; /* 在内容前添加一个小点和空格 */
color: rgb(0, 0, 0); /* 设置小点的颜色 */
font-size: 13px; /* 设置小点的大小 */
margin-right: 5px; /* 设置小点和文本之间的间距 */
}
.image-container {
background-color: #ebebeb;
width: 300px; /* 或者根据需要调整宽度 */
margin-left: auto; /* 推动到右侧 */
padding: 10px;
display: flex; /* 启用Flexbox布局 */
flex-direction: column; /* 设置子元素竖向排列 */
justify-content: center; /* 垂直居中 */
align-items: center; /* 水平居中 */
}
.name {
margin-top: 40px;
}
.name:before {
content: "• "; /* 在内容前添加一个小点和空格 */
color: rgb(0, 0, 0); /* 设置小点的颜色 */
font-size: 15px; /* 设置小点的大小 */
margin-right: 5px; /* 设置小点和文本之间的间距 */
}
}
.step6 {
.title {
font-size: 15px;
font-weight: bold; /* 设置文字加粗 */
color: #f2994a;
margin-bottom: 10px;
}
.item {
margin-top: 40px;
line-height: 1.6; /* 设置行高 */
letter-spacing: 0.5px; /* 设置字母间距 */
}
}
.step7 {
padding: 50px;
// width: 600px;
.name {
margin-bottom: 8px;
font-size: 15px;
font-weight: bold; /* 设置文字加粗 */
}
.item:before {
content: "• "; /* 在内容前添加一个小点和空格 */
color: rgb(0, 0, 0); /* 设置小点的颜色 */
font-size: 15px; /* 设置小点的大小 */
margin-right: 5px; /* 设置小点和文本之间的间距 */
}
}
}
.idea-box {
width: 1000px;
height: 400px;
display: flex;
.left {
width: 234px;
height: 100%;
background: url("../../assets/images/idealeftbgc.png");
}
.right{
flex: 1;
margin-left: 30px;
.title{
font-size: 32px;
color: #585858;
}
.description{
margin-top: 50px;
line-height: 24px;
font-weight: 600;
}
}
}
.dialog-header {
padding: 20px;

@ -43,10 +43,15 @@
<el-button @click="onUndo">撤回</el-button>
<el-button @click="onRedo">恢复</el-button>
<el-button @click="clearLocalStorage">清除缓存</el-button>
<el-button @click="onSave">{{
useSettingStore.experimentPreservation ? "运行" : "保存"
}}</el-button>
<el-button
:disabled="
useSettingStore.experimentPreservation && useSettingStore.isRunning
"
@click="onSave"
>{{ useSettingStore.experimentPreservation ? "运行" : "保存" }}</el-button
>
<el-button @click="onTip">提示</el-button>
<el-button @click="showDialog">填写实验报告</el-button>
</div>
<div class="tip-view">
<el-image
@ -63,6 +68,36 @@
/>
<!-- <img src="../../assets/images/guanxitu.png" alt=""> -->
</div>
<el-dialog
v-model="dialogVisible"
title="实验报告"
width="650"
v-if="dialogVisible"
>
<el-form :model="form" label-width="auto" style="max-width: 600px">
<el-form-item label="实验内容">
<el-input v-model="form.shiyanStep" type="textarea" />
<div class="tips">实践内容及步骤</div>
</el-form-item>
<el-form-item label="实验结果">
<el-input v-model="form.shiyanJieGuo" type="textarea" />
<div class="tips">本实践源程序清单及运行结果或实践结论实践设计图</div>
</el-form-item>
<el-form-item label="实践总结">
<el-input v-model="form.shijianZhongJie" type="textarea" />
<div class="tips">对本实践结果进行分析实践心得及改进意见</div>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="exportWord">
导出
</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup lang="ts">
@ -85,6 +120,11 @@ import tipView from "@/assets/images/chengxv.png";
import { useRouter } from "vue-router";
import { setStepEvent } from "@/utils/setStep";
import { formatDate } from "@/utils";
import JSZipUtils from "jszip-utils";
import JSZip from "pizzip";
import Docxtemplater from "docxtemplater";
import { saveAs } from "file-saver";
import { getReport,saveReport} from '@/api'
const useSettingStore = settingStore();
const router = useRouter();
// console.log(useSettingStore.qw);
@ -1094,10 +1134,10 @@ const saveNodeData = () => {
case "custom-text-cssd":
useSettingStore.setValue(parseInt(node.label), "cssd"); // 湿
break;
case "custom-text-jsgl":
case "custom-text-jsgl":
useSettingStore.setValue(parseInt(node.label), "jsgl"); // 湿
break;
case "custom-text-jsmj":
case "custom-text-jsmj":
useSettingStore.setValue(parseInt(node.label), "jsmj"); // 湿
break;
}
@ -1126,14 +1166,14 @@ function preWork() {
insertCss(`
#container {
display: flex;
bord
}
#stencil {
width: 0.9375rem;
height: 3.125rem;
position: relative;
}
#graph-container {
width: 8.3333rem;
@ -1183,7 +1223,10 @@ const onRedo = () => {
graph.redo();
};
const sdsz = ref<any>(null);
const onSave = () => {
const onSave = async () => {
if (useSettingStore.isRunCode) {
await setStepEvent(9, formatDate(new Date()));
}
if (
!hasExactNames(graph.getNodes(), [
"custom-text",
@ -1206,6 +1249,11 @@ const onSave = () => {
}
if (!useSettingStore.experimentPreservation) {
useSettingStore.setValue(true, "experimentPreservation");
localStorage.setItem("experimentPreservation", "true");
if (!useSettingStore.isRunCode) {
await setStepEvent(2, formatDate(new Date()));
}
router.push("/designRoute");
return;
}
@ -1245,7 +1293,7 @@ const onSave = () => {
useSettingStore.setValue(parseInt(item.attrs.text.text), item.name);
break;
case "custom-text-jrgl":
if (!parseInt(item.attrs.text.text)) {
if (!parseInt(item.attrs.text.text)) {
ElMessage({
type: "warning",
message: "请请填写加热功率信息",
@ -1365,8 +1413,11 @@ const onSave = () => {
// useSettingStore.openHeating();
// useSettingStore.calculateTemperature();
useSettingStore.simulateHeatingAndHumidifying();
setStepEvent(4, formatDate(new Date()));
if (!useSettingStore.isRunCode) {
setStepEvent(4, formatDate(new Date()));
setStepEvent(5, formatDate(new Date()));
}
// const data = graph.toJSON();
// console.log(data);
// const edges = graph.getEdges();
@ -1444,6 +1495,76 @@ const onTip = () => {
preview.value.$el.children[0].click();
console.log(preview.value);
};
const dialogVisible = ref(false);
const form = ref({
shiyanStep: "",
shiyanJieGuo:'',
shijianZhongJie:'',
laoshipingyu:' 非常好',
sum:100
});
const showDialog = async () => {
const res:any = await getReport();
form.value.shijianZhongJie = res.result.summarize;
form.value.shiyanJieGuo = res.result.result;
form.value.shiyanStep = res.result.experimentalResult;
console.log(res);
dialogVisible.value = true;
};
const exportWord = async () => {
await saveReport({
experimentalResult:form.value.shiyanStep,
result:form.value.shiyanJieGuo,
summarize:form.value.shijianZhongJie
})
dialogVisible.value = false;
ElMessage.success('保存成功')
await setStepEvent(11, formatDate(new Date()));
return
JSZipUtils.getBinaryContent("template.docx", function (error:any, content:any) {
//
if (error) {
throw error;
}
// JSZip
let zip = new JSZip(content);
// docxtemplater
let doc = new Docxtemplater().loadZip(zip);
//
doc.setData({
...form.value,
shiyanTime:formatDate(new Date())
// table:_this.table,
});
try {
//
doc.render();
} catch (error) {
//
// let e = {
// message: error.message,
// name: error.name,
// stack: error.stack,
// properties: error.properties,
// }
ElMessage.error('导出失败')
throw error;
}
// docxtemplaterzip
let out = doc.getZip().generate({
type: "blob",
mimeType:
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
});
//
saveAs(out, "实验报告.docx");
});
}
</script>
<style scoped>
@ -1464,4 +1585,8 @@ const onTip = () => {
width: 200px;
height: 400px;
}
.tips {
font-size: 12px;
color: #999;
}
</style>

Loading…
Cancel
Save