diff --git a/package.json b/package.json index 1b65dfc..1c2ade5 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d641ff1..19fe5ee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -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: diff --git a/public/template.docx b/public/template.docx new file mode 100644 index 0000000..9b5de61 Binary files /dev/null and b/public/template.docx differ diff --git a/src/api/index.ts b/src/api/index.ts index 766ccd0..52b0095 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -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 + }) } \ No newline at end of file diff --git a/src/assets/images/ideaicon.png b/src/assets/images/ideaicon.png new file mode 100644 index 0000000..49317ca Binary files /dev/null and b/src/assets/images/ideaicon.png differ diff --git a/src/assets/images/idealeftbgc.png b/src/assets/images/idealeftbgc.png new file mode 100644 index 0000000..05939b9 Binary files /dev/null and b/src/assets/images/idealeftbgc.png differ diff --git a/src/router/index.ts b/src/router/index.ts index 75b9269..a94bfbb 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -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({ diff --git a/src/store/modules/setting.ts b/src/store/modules/setting.ts index 74494ec..6211d46 100644 --- a/src/store/modules/setting.ts +++ b/src/store/modules/setting.ts @@ -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 diff --git a/src/views/compiler/index.vue b/src/views/compiler/index.vue index d88adbf..be18db2 100644 --- a/src/views/compiler/index.vue +++ b/src/views/compiler/index.vue @@ -8,30 +8,26 @@
测量和仪器的图形化编程
-该组件将安装至本地硬盘
+测量和仪器的图形化编程
+该组件将安装至本地硬盘
总进度
-复制新文件
总进度
-复制新文件