zengyicheng před 1 rokem
rodič
revize
67054d882b

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/css/389.58cedb81.css


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/css/798.1af2f473.css


+ 1 - 1
dist/index.html

@@ -1 +1 @@
-<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>双创学院管理系统</title><script defer="defer" src="/js/chunk-vendors.c0eb00f6.js"></script><script defer="defer" src="/js/app.0438b7f6.js"></script><link href="/css/chunk-vendors.0225060a.css" rel="stylesheet"><link href="/css/app.28d9bcb6.css" rel="stylesheet"></head><body><div id="app"></div></body></html>
+<!doctype html><html lang=""><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>双创学院管理系统</title><script defer="defer" src="/js/chunk-vendors.c0eb00f6.js"></script><script defer="defer" src="/js/app.a006086e.js"></script><link href="/css/chunk-vendors.0225060a.css" rel="stylesheet"><link href="/css/app.28d9bcb6.css" rel="stylesheet"></head><body><div id="app"></div></body></html>

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/212.1c0449e7.js.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/260.6025b45b.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/260.6025b45b.js.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/286.7c416a59.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/286.7c416a59.js.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 1 - 1
dist/js/3.09f9f7ca.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/3.09f9f7ca.js.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/389.f4ead9a9.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/389.f4ead9a9.js.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/7.1ae27333.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/7.1ae27333.js.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/732.0433319f.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/732.0433319f.js.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/798.edac65f8.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/798.edac65f8.js.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/898.7c41b9e2.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/898.7c41b9e2.js.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/982.fe4c0508.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/982.fe4c0508.js.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/997.15599f68.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/997.15599f68.js.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/app.0438b7f6.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/app.0438b7f6.js.map


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/app.a006086e.js


Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 0 - 0
dist/js/app.a006086e.js.map


+ 533 - 6
package-lock.json

@@ -1575,6 +1575,14 @@
       "integrity": "sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==",
       "dev": true
     },
+    "@swc/helpers": {
+      "version": "0.3.17",
+      "resolved": "https://registry.npmmirror.com/@swc/helpers/-/helpers-0.3.17.tgz",
+      "integrity": "sha512-tb7Iu+oZ+zWJZ3HJqwx8oNwSDIU440hmVMDPhpACWQWnrZHK99Bxs70gT1L2dnr5Hg50ZRWEFkQCAnOVVV0z1Q==",
+      "requires": {
+        "tslib": "^2.4.0"
+      }
+    },
     "@trysound/sax": {
       "version": "0.2.0",
       "resolved": "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz",
@@ -2768,6 +2776,15 @@
         }
       }
     },
+    "array-buffer-byte-length": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
+      "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "is-array-buffer": "^3.0.1"
+      }
+    },
     "array-flatten": {
       "version": "2.1.2",
       "resolved": "https://registry.npmmirror.com/array-flatten/-/array-flatten-2.1.2.tgz",
@@ -2827,6 +2844,11 @@
         "postcss-value-parser": "^4.2.0"
       }
     },
+    "available-typed-arrays": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
+      "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw=="
+    },
     "axios": {
       "version": "1.4.0",
       "resolved": "https://registry.npmmirror.com/axios/-/axios-1.4.0.tgz",
@@ -3085,6 +3107,14 @@
         "fill-range": "^7.0.1"
       }
     },
+    "brotli": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmmirror.com/brotli/-/brotli-1.3.3.tgz",
+      "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==",
+      "requires": {
+        "base64-js": "^1.1.2"
+      }
+    },
     "browserslist": {
       "version": "4.21.5",
       "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.5.tgz",
@@ -3657,6 +3687,11 @@
         "which": "^1.2.9"
       }
     },
+    "crypto-js": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmmirror.com/crypto-js/-/crypto-js-4.2.0.tgz",
+      "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
+    },
     "css-declaration-sorter": {
       "version": "6.3.1",
       "resolved": "https://registry.npmmirror.com/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz",
@@ -4015,6 +4050,34 @@
         }
       }
     },
+    "define-data-property": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.1.tgz",
+      "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==",
+      "requires": {
+        "get-intrinsic": "^1.2.1",
+        "gopd": "^1.0.1",
+        "has-property-descriptors": "^1.0.0"
+      },
+      "dependencies": {
+        "function-bind": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
+          "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
+        },
+        "get-intrinsic": {
+          "version": "1.2.2",
+          "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
+          "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+          "requires": {
+            "function-bind": "^1.1.2",
+            "has-proto": "^1.0.1",
+            "has-symbols": "^1.0.3",
+            "hasown": "^2.0.0"
+          }
+        }
+      }
+    },
     "define-lazy-prop": {
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
@@ -4053,6 +4116,11 @@
       "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
       "dev": true
     },
+    "dfa": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmmirror.com/dfa/-/dfa-1.2.0.tgz",
+      "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q=="
+    },
     "dir-glob": {
       "version": "3.0.1",
       "resolved": "https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz",
@@ -4328,6 +4396,29 @@
         "stackframe": "^1.3.4"
       }
     },
+    "es-get-iterator": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmmirror.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz",
+      "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.1.3",
+        "has-symbols": "^1.0.3",
+        "is-arguments": "^1.1.1",
+        "is-map": "^2.0.2",
+        "is-set": "^2.0.2",
+        "is-string": "^1.0.7",
+        "isarray": "^2.0.5",
+        "stop-iteration-iterator": "^1.0.0"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "2.0.5",
+          "resolved": "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz",
+          "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
+        }
+      }
+    },
     "es-module-lexer": {
       "version": "0.9.3",
       "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz",
@@ -4768,6 +4859,98 @@
       "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.2.tgz",
       "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
     },
+    "fontkit": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmmirror.com/fontkit/-/fontkit-1.9.0.tgz",
+      "integrity": "sha512-HkW/8Lrk8jl18kzQHvAw9aTHe1cqsyx5sDnxncx652+CIfhawokEPkeM3BoIC+z/Xv7a0yMr0f3pRRwhGH455g==",
+      "requires": {
+        "@swc/helpers": "^0.3.13",
+        "brotli": "^1.3.2",
+        "clone": "^2.1.2",
+        "deep-equal": "^2.0.5",
+        "dfa": "^1.2.0",
+        "restructure": "^2.0.1",
+        "tiny-inflate": "^1.0.3",
+        "unicode-properties": "^1.3.1",
+        "unicode-trie": "^2.0.0"
+      },
+      "dependencies": {
+        "call-bind": {
+          "version": "1.0.5",
+          "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.5.tgz",
+          "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
+          "requires": {
+            "function-bind": "^1.1.2",
+            "get-intrinsic": "^1.2.1",
+            "set-function-length": "^1.1.1"
+          }
+        },
+        "deep-equal": {
+          "version": "2.2.3",
+          "resolved": "https://registry.npmmirror.com/deep-equal/-/deep-equal-2.2.3.tgz",
+          "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==",
+          "requires": {
+            "array-buffer-byte-length": "^1.0.0",
+            "call-bind": "^1.0.5",
+            "es-get-iterator": "^1.1.3",
+            "get-intrinsic": "^1.2.2",
+            "is-arguments": "^1.1.1",
+            "is-array-buffer": "^3.0.2",
+            "is-date-object": "^1.0.5",
+            "is-regex": "^1.1.4",
+            "is-shared-array-buffer": "^1.0.2",
+            "isarray": "^2.0.5",
+            "object-is": "^1.1.5",
+            "object-keys": "^1.1.1",
+            "object.assign": "^4.1.4",
+            "regexp.prototype.flags": "^1.5.1",
+            "side-channel": "^1.0.4",
+            "which-boxed-primitive": "^1.0.2",
+            "which-collection": "^1.0.1",
+            "which-typed-array": "^1.1.13"
+          }
+        },
+        "function-bind": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
+          "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
+        },
+        "get-intrinsic": {
+          "version": "1.2.2",
+          "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
+          "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+          "requires": {
+            "function-bind": "^1.1.2",
+            "has-proto": "^1.0.1",
+            "has-symbols": "^1.0.3",
+            "hasown": "^2.0.0"
+          }
+        },
+        "isarray": {
+          "version": "2.0.5",
+          "resolved": "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz",
+          "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
+        },
+        "regexp.prototype.flags": {
+          "version": "1.5.1",
+          "resolved": "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz",
+          "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==",
+          "requires": {
+            "call-bind": "^1.0.2",
+            "define-properties": "^1.2.0",
+            "set-function-name": "^2.0.0"
+          }
+        }
+      }
+    },
+    "for-each": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz",
+      "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+      "requires": {
+        "is-callable": "^1.1.3"
+      }
+    },
     "form-data": {
       "version": "4.0.0",
       "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.0.tgz",
@@ -4950,6 +5133,14 @@
         "slash": "^3.0.0"
       }
     },
+    "gopd": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz",
+      "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
+      "requires": {
+        "get-intrinsic": "^1.1.3"
+      }
+    },
     "graceful-fs": {
       "version": "4.2.10",
       "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.10.tgz",
@@ -4978,6 +5169,11 @@
         "function-bind": "^1.1.1"
       }
     },
+    "has-bigints": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz",
+      "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ=="
+    },
     "has-flag": {
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz",
@@ -4992,6 +5188,11 @@
         "get-intrinsic": "^1.1.1"
       }
     },
+    "has-proto": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz",
+      "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg=="
+    },
     "has-symbols": {
       "version": "1.0.3",
       "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz",
@@ -5011,6 +5212,21 @@
       "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==",
       "dev": true
     },
+    "hasown": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.0.tgz",
+      "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==",
+      "requires": {
+        "function-bind": "^1.1.2"
+      },
+      "dependencies": {
+        "function-bind": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
+          "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
+        }
+      }
+    },
     "he": {
       "version": "1.2.0",
       "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
@@ -5281,6 +5497,34 @@
       "resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
       "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
     },
+    "internal-slot": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.6.tgz",
+      "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==",
+      "requires": {
+        "get-intrinsic": "^1.2.2",
+        "hasown": "^2.0.0",
+        "side-channel": "^1.0.4"
+      },
+      "dependencies": {
+        "function-bind": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
+          "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
+        },
+        "get-intrinsic": {
+          "version": "1.2.2",
+          "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
+          "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+          "requires": {
+            "function-bind": "^1.1.2",
+            "has-proto": "^1.0.1",
+            "has-symbols": "^1.0.3",
+            "hasown": "^2.0.0"
+          }
+        }
+      }
+    },
     "ipaddr.js": {
       "version": "2.0.1",
       "resolved": "https://registry.npmmirror.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz",
@@ -5296,12 +5540,30 @@
         "has-tostringtag": "^1.0.0"
       }
     },
+    "is-array-buffer": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
+      "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.2.0",
+        "is-typed-array": "^1.1.10"
+      }
+    },
     "is-arrayish": {
       "version": "0.2.1",
       "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz",
       "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
       "dev": true
     },
+    "is-bigint": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz",
+      "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
+      "requires": {
+        "has-bigints": "^1.0.1"
+      }
+    },
     "is-binary-path": {
       "version": "2.1.0",
       "resolved": "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz",
@@ -5311,6 +5573,20 @@
         "binary-extensions": "^2.0.0"
       }
     },
+    "is-boolean-object": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
+      "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "has-tostringtag": "^1.0.0"
+      }
+    },
+    "is-callable": {
+      "version": "1.2.7",
+      "resolved": "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz",
+      "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="
+    },
     "is-ci": {
       "version": "1.2.1",
       "resolved": "https://registry.npmmirror.com/is-ci/-/is-ci-1.2.1.tgz",
@@ -5384,12 +5660,25 @@
       "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==",
       "dev": true
     },
+    "is-map": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/is-map/-/is-map-2.0.2.tgz",
+      "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg=="
+    },
     "is-number": {
       "version": "7.0.0",
       "resolved": "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz",
       "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
       "dev": true
     },
+    "is-number-object": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz",
+      "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
+      "requires": {
+        "has-tostringtag": "^1.0.0"
+      }
+    },
     "is-plain-obj": {
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz",
@@ -5414,11 +5703,47 @@
         "has-tostringtag": "^1.0.0"
       }
     },
+    "is-set": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/is-set/-/is-set-2.0.2.tgz",
+      "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g=="
+    },
+    "is-shared-array-buffer": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
+      "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
+      "requires": {
+        "call-bind": "^1.0.2"
+      }
+    },
     "is-stream": {
       "version": "1.1.0",
       "resolved": "https://registry.npmmirror.com/is-stream/-/is-stream-1.1.0.tgz",
-      "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
-      "dev": true
+      "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ=="
+    },
+    "is-string": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz",
+      "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
+      "requires": {
+        "has-tostringtag": "^1.0.0"
+      }
+    },
+    "is-symbol": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz",
+      "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
+      "requires": {
+        "has-symbols": "^1.0.2"
+      }
+    },
+    "is-typed-array": {
+      "version": "1.1.12",
+      "resolved": "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.12.tgz",
+      "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
+      "requires": {
+        "which-typed-array": "^1.1.11"
+      }
     },
     "is-unicode-supported": {
       "version": "0.1.0",
@@ -5426,6 +5751,20 @@
       "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
       "dev": true
     },
+    "is-weakmap": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/is-weakmap/-/is-weakmap-2.0.1.tgz",
+      "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA=="
+    },
+    "is-weakset": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmmirror.com/is-weakset/-/is-weakset-2.0.2.tgz",
+      "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==",
+      "requires": {
+        "call-bind": "^1.0.2",
+        "get-intrinsic": "^1.1.1"
+      }
+    },
     "is-what": {
       "version": "3.14.1",
       "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz",
@@ -5737,6 +6076,22 @@
       "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==",
       "dev": true
     },
+    "linebreak": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmmirror.com/linebreak/-/linebreak-1.1.0.tgz",
+      "integrity": "sha512-MHp03UImeVhB7XZtjd0E4n6+3xr5Dq/9xI/5FptGk5FrbDR3zagPa2DS6U8ks/3HjbKWG9Q1M2ufOzxV2qLYSQ==",
+      "requires": {
+        "base64-js": "0.0.8",
+        "unicode-trie": "^2.0.0"
+      },
+      "dependencies": {
+        "base64-js": {
+          "version": "0.0.8",
+          "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-0.0.8.tgz",
+          "integrity": "sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw=="
+        }
+      }
+    },
     "lines-and-columns": {
       "version": "1.2.4",
       "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
@@ -6464,8 +6819,7 @@
     "object-inspect": {
       "version": "1.12.3",
       "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.3.tgz",
-      "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
-      "dev": true
+      "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g=="
     },
     "object-is": {
       "version": "1.1.5",
@@ -6485,7 +6839,6 @@
       "version": "4.1.4",
       "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.4.tgz",
       "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
-      "dev": true,
       "requires": {
         "call-bind": "^1.0.2",
         "define-properties": "^1.1.4",
@@ -6781,6 +7134,17 @@
       "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
       "dev": true
     },
+    "pdfkit": {
+      "version": "0.14.0",
+      "resolved": "https://registry.npmmirror.com/pdfkit/-/pdfkit-0.14.0.tgz",
+      "integrity": "sha512-Hnor8/78jhHm6ONrxWhrqOwAVALlBnFyWOF8sstBZMiqHZgZ5A6RU+Q3yahhw82plxpT7LOfH3b3qcOX6rzMQg==",
+      "requires": {
+        "crypto-js": "^4.2.0",
+        "fontkit": "^1.8.1",
+        "linebreak": "^1.0.2",
+        "png-js": "^1.0.0"
+      }
+    },
     "performance-now": {
       "version": "2.1.0",
       "resolved": "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz",
@@ -6836,6 +7200,11 @@
         "find-up": "^4.0.0"
       }
     },
+    "png-js": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/png-js/-/png-js-1.0.0.tgz",
+      "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g=="
+    },
     "portfinder": {
       "version": "1.0.32",
       "resolved": "https://registry.npmmirror.com/portfinder/-/portfinder-1.0.32.tgz",
@@ -7586,6 +7955,11 @@
         "signal-exit": "^3.0.2"
       }
     },
+    "restructure": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/restructure/-/restructure-2.0.1.tgz",
+      "integrity": "sha512-e0dOpjm5DseomnXx2M5lpdZ5zoHqF1+bqdMJUohoYVVQa7cBdnk7fdmeI6byNWP/kiME72EeTiSypTCVnpLiDg=="
+    },
     "retry": {
       "version": "0.13.1",
       "resolved": "https://registry.npmmirror.com/retry/-/retry-0.13.1.tgz",
@@ -7821,6 +8195,45 @@
         "send": "0.18.0"
       }
     },
+    "set-function-length": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.1.1.tgz",
+      "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==",
+      "requires": {
+        "define-data-property": "^1.1.1",
+        "get-intrinsic": "^1.2.1",
+        "gopd": "^1.0.1",
+        "has-property-descriptors": "^1.0.0"
+      },
+      "dependencies": {
+        "function-bind": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
+          "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
+        },
+        "get-intrinsic": {
+          "version": "1.2.2",
+          "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
+          "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+          "requires": {
+            "function-bind": "^1.1.2",
+            "has-proto": "^1.0.1",
+            "has-symbols": "^1.0.3",
+            "hasown": "^2.0.0"
+          }
+        }
+      }
+    },
+    "set-function-name": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.1.tgz",
+      "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==",
+      "requires": {
+        "define-data-property": "^1.0.1",
+        "functions-have-names": "^1.2.3",
+        "has-property-descriptors": "^1.0.0"
+      }
+    },
     "setimmediate": {
       "version": "1.0.5",
       "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz",
@@ -7871,7 +8284,6 @@
       "version": "1.0.4",
       "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz",
       "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
-      "dev": true,
       "requires": {
         "call-bind": "^1.0.0",
         "get-intrinsic": "^1.0.2",
@@ -7895,6 +8307,11 @@
         "totalist": "^1.0.0"
       }
     },
+    "slang": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmmirror.com/slang/-/slang-0.3.0.tgz",
+      "integrity": "sha512-kGj3TvxSDR1Enhig/aan5ucfWNDULTiWg3NrExUzO2ShXcYsm6k2oPxnav8GtslYvozxRAqL+E2O3P3QKtQYSg=="
+    },
     "slash": {
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/slash/-/slash-3.0.0.tgz",
@@ -8066,6 +8483,14 @@
       "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
       "dev": true
     },
+    "stop-iteration-iterator": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmmirror.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz",
+      "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==",
+      "requires": {
+        "internal-slot": "^1.0.4"
+      }
+    },
     "string-width": {
       "version": "4.2.3",
       "resolved": "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz",
@@ -8291,6 +8716,11 @@
       "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
       "dev": true
     },
+    "tiny-inflate": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz",
+      "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="
+    },
     "tmp": {
       "version": "0.2.1",
       "resolved": "https://registry.npmmirror.com/tmp/-/tmp-0.2.1.tgz",
@@ -8385,12 +8815,37 @@
       "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==",
       "dev": true
     },
+    "unicode-properties": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmmirror.com/unicode-properties/-/unicode-properties-1.4.1.tgz",
+      "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==",
+      "requires": {
+        "base64-js": "^1.3.0",
+        "unicode-trie": "^2.0.0"
+      }
+    },
     "unicode-property-aliases-ecmascript": {
       "version": "2.1.0",
       "resolved": "https://registry.npmmirror.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz",
       "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==",
       "dev": true
     },
+    "unicode-trie": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmmirror.com/unicode-trie/-/unicode-trie-2.0.0.tgz",
+      "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==",
+      "requires": {
+        "pako": "^0.2.5",
+        "tiny-inflate": "^1.0.0"
+      },
+      "dependencies": {
+        "pako": {
+          "version": "0.2.9",
+          "resolved": "https://registry.npmmirror.com/pako/-/pako-0.2.9.tgz",
+          "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="
+        }
+      }
+    },
     "universalify": {
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/universalify/-/universalify-2.0.0.tgz",
@@ -9446,12 +9901,84 @@
         "isexe": "^2.0.0"
       }
     },
+    "which-boxed-primitive": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
+      "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
+      "requires": {
+        "is-bigint": "^1.0.1",
+        "is-boolean-object": "^1.1.0",
+        "is-number-object": "^1.0.4",
+        "is-string": "^1.0.5",
+        "is-symbol": "^1.0.3"
+      }
+    },
+    "which-collection": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/which-collection/-/which-collection-1.0.1.tgz",
+      "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==",
+      "requires": {
+        "is-map": "^2.0.1",
+        "is-set": "^2.0.1",
+        "is-weakmap": "^2.0.1",
+        "is-weakset": "^2.0.1"
+      }
+    },
+    "which-typed-array": {
+      "version": "1.1.13",
+      "resolved": "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.13.tgz",
+      "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==",
+      "requires": {
+        "available-typed-arrays": "^1.0.5",
+        "call-bind": "^1.0.4",
+        "for-each": "^0.3.3",
+        "gopd": "^1.0.1",
+        "has-tostringtag": "^1.0.0"
+      },
+      "dependencies": {
+        "call-bind": {
+          "version": "1.0.5",
+          "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.5.tgz",
+          "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==",
+          "requires": {
+            "function-bind": "^1.1.2",
+            "get-intrinsic": "^1.2.1",
+            "set-function-length": "^1.1.1"
+          }
+        },
+        "function-bind": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
+          "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="
+        },
+        "get-intrinsic": {
+          "version": "1.2.2",
+          "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz",
+          "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==",
+          "requires": {
+            "function-bind": "^1.1.2",
+            "has-proto": "^1.0.1",
+            "has-symbols": "^1.0.3",
+            "hasown": "^2.0.0"
+          }
+        }
+      }
+    },
     "wildcard": {
       "version": "2.0.0",
       "resolved": "https://registry.npmmirror.com/wildcard/-/wildcard-2.0.0.tgz",
       "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==",
       "dev": true
     },
+    "wkhtmltopdf": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmmirror.com/wkhtmltopdf/-/wkhtmltopdf-0.4.0.tgz",
+      "integrity": "sha512-PXvsPehsmP1HeUDPx5qofitc+TJ0+Gb4Xn11iPJnHrLgXwyzRUzn9/b2t+soE+fwBMqUPs4Wchd0CRW+52MkNQ==",
+      "requires": {
+        "is-stream": "^1.0.1",
+        "slang": ">=0.2"
+      }
+    },
     "wrap-ansi": {
       "version": "7.0.0",
       "resolved": "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz",

+ 3 - 1
package.json

@@ -25,6 +25,7 @@
     "less": "^4.1.3",
     "less-loader": "^11.1.0",
     "nprogress": "^0.2.0",
+    "pdfkit": "^0.14.0",
     "pizzip": "^3.1.4",
     "video.js": "^8.5.2",
     "vue": "^2.6.14",
@@ -34,7 +35,8 @@
     "vue2-editor": "^2.10.3",
     "vuex": "^3.6.2",
     "vuex-persistedstate": "^4.1.0",
-    "wangeditor": "^4.6.14"
+    "wangeditor": "^4.6.14",
+    "wkhtmltopdf": "^0.4.0"
   },
   "devDependencies": {
     "@babel/core": "^7.12.16",

+ 160 - 12
src/App.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="page core_dialogue">
     <el-header v-if="$route.meta.isAuth">
-      <img src="./assets/img/sclogo4.png" alt="" style="height: 60px;" />
+      <img src="./assets/img/sclogo4.png" alt="" style="height: 60px" />
       <!-- <img src="@/assets/img/szjsxy.png" alt=""> -->
       <div class="homeExitContent">
         <!-- <el-button size="mini" @click="$store.commit('update',['userInfo',{userid:'2021400203',username:'yym',type:2}])">yym</el-button> -->
@@ -55,16 +55,14 @@
               </div>
             </template>
           </el-table-column>
-          <el-table-column
-            prop="operation"
-            align="center"
-            label="操作"
-          >
+          <el-table-column prop="operation" align="center" label="操作">
             <template #default="scope">
               <el-button
                 type="primary"
                 size="mini"
-                @click="lookDetail(scope.row,scope.row.courseId, scope.row.typeid)"
+                @click="
+                  lookDetail(scope.row, scope.row.courseId, scope.row.typeid)
+                "
                 >查看</el-button
               >
             </template>
@@ -139,10 +137,10 @@ export default {
     CleanStorage() {
       sessionStorage.clear();
     },
-    lookDetail(r,val, tid) {
+    lookDetail(r, val, tid) {
       //查看详情按钮
       // localStorage.setItem("pid",JSON.stringify(val))
-      this.$store.commit('update', ['NotifyDig', false]);
+      this.$store.commit("update", ["NotifyDig", false]);
       this.$router.push(`/projectApplicationDetailMain?tid=${tid}&pid=${val}`);
     },
   },
@@ -166,6 +164,156 @@ export default {
   width: 100%;
   display: table-caption;
 }
+// .divCss {
+//   width: 100%;
+//   height: 1850px;
+//   overflow: hidden;
+//   margin: 20px auto;
+//   padding: 20px 0;
+//   box-sizing: border-box;
+//   display: flex;
+//   align-items: center;
+// }
+// .divCss2 {
+//   width: 100%;
+//   display: table-caption;
+// }
+// .tableCss {
+//   position: relative;
+//   color: black;
+//   width: 1200px;
+//   margin: 0 auto;
+//   margin-bottom: 20px;
+//   font-size: 24px;
+//   font-family: \5b8b\4f53;
+//   tr {
+//     width: 100%;
+//     border: none;
+//   }
+//   tr td {
+//     height: 60px;
+//     width: 200px;
+//     text-align: center;
+//     box-sizing: border-box;
+//     padding: 10px;
+//     position: relative;
+//     .textCss {
+//       word-break: break-word;
+//       white-space: pre-line;
+//       line-height: 40px;
+//     }
+//     // :deep(.el-textarea.is-disabled .el-textarea__inner) {
+//     //   background-color: unset;
+//     //   border-color: unset;
+//     //   color: rgb(0, 0, 0);
+//     //   cursor: unset;
+//     // }
+//     .noFileBox {
+//       width: 98%;
+//       min-height: 200px;
+//       display: flex;
+//       flex-direction: column;
+//       flex-wrap: nowrap;
+//       align-items: flex-start;
+//     }
+//     .bigBlock {
+//       width: 98%;
+//       min-height: 200px;
+//       display: flex;
+//       flex-direction: column;
+//       flex-wrap: nowrap;
+//       align-items: flex-start;
+//       border: 1px solid #cad1dc;
+//       border-radius: 4px;
+//       padding: 10px;
+//       margin: 20px 0 0 0;
+//       .fileBlock {
+//         width: 98%;
+//         margin-right: 20px;
+//         position: relative;
+//         border-radius: 5%;
+//         padding: 5px 0 5px 0;
+//         border-bottom: 1px solid #cad1dc;
+//         .fileBox {
+//           display: flex;
+//           flex-direction: row;
+//           flex-wrap: nowrap;
+//           justify-content: space-between;
+//           align-items: center;
+
+//           .fileBoxLeft {
+//             cursor: pointer;
+//             display: flex;
+//             flex-direction: row;
+//             flex-wrap: nowrap;
+//             align-items: center;
+//             .chapter_upload_l_i3 {
+//               width: 15px;
+//               height: 15px;
+//               background-repeat: no-repeat;
+//               background-size: 100% 100%;
+//               background-image: url("./assets/img/u_video.png");
+//             }
+//             .titName {
+//               width: calc(100% - 15px);
+//               white-space: nowrap;
+//               overflow: hidden;
+//               text-overflow: ellipsis;
+//               word-break: break-word;
+//               text-align: left;
+//               margin-left: 10px;
+//               max-width: 800px;
+//             }
+//           }
+//           .fileBoxRight {
+//             cursor: pointer;
+//             display: flex;
+//             flex-direction: row;
+//             flex-wrap: nowrap;
+//             align-items: center;
+//             .chapter_upload_ic_r {
+//               width: 18px;
+//               height: 18px;
+//               background-repeat: no-repeat;
+//               background-size: 100% 100%;
+//               background-image: url("./assets/img/delete_u.png");
+//             }
+//           }
+//         }
+//       }
+//       .masking-out {
+//         width: 100px;
+//         height: 135px;
+//         position: absolute;
+//         top: 0;
+//         left: 0;
+//         display: none;
+//         border-radius: 5%;
+//         background: #00000053;
+//         .delete {
+//           cursor: pointer;
+//           margin-left: 50%;
+//           margin-top: 50%;
+//           transform: translate(-50%, -50%);
+//         }
+//         .delete:hover {
+//           color: #fff;
+//         }
+//       }
+//       .fileBlock:hover .masking-out {
+//         display: block;
+//       }
+//     }
+//     p {
+//       text-align: left;
+//     }
+//     :deep(.el-textarea__inner) {
+//       border: none;
+//       resize: none;
+//       font-size: 18px;
+//     }
+//   }
+// }
 * {
   margin: 0;
   padding: 0;
@@ -285,13 +433,13 @@ hr {
     max-width: 100%;
     height: 300px;
     // white-space: nowrap;
-    p:first-child{
+    p:first-child {
       font-weight: 600;
     }
-    div>p{
+    div > p {
       font-weight: unset !important;
     }
-    span>p{
+    span > p {
       font-weight: unset !important;
     }
     span {

+ 1 - 2
src/components/tool/pdf.js

@@ -2,7 +2,6 @@ import html2canvas from "html2canvas";
 import jsPDF from "jspdf";
 
 export const downloadPDF = (page, fileName = 'test') => {
-
     html2canvas(page).then(function(canvas) {
         canvas2PDF(canvas, fileName);
     });
@@ -18,7 +17,7 @@ const canvas2PDF = (canvas, fileName) => {
     // 未生成pdf的html页面高度
     let leftHeight = contentHeight;
     // 页面偏移
-    let position = -30;
+    let position = 0;
     // html页面生成的canvas在pdf中图片的宽高(本例为:横向a4纸[841.89,592.28],纵向需调换尺寸)
     let imgWidth = 550;
     let imgHeight = 592.28 / contentWidth * contentHeight;

+ 8 - 0
src/router/index.js

@@ -28,6 +28,14 @@ const routes = [{
             import ('@/views/resultShow/resultShowDetail.vue'),
         meta: { isAuth: true, checkPower: false }
 
+    },
+    { //成果展示
+        name: 'Closingstatement1',
+        path: '/Closingstatement1',
+        component: () =>
+            import ('@/views/projectManage/components/Closingstatement1.vue'),
+        meta: { isAuth: true, checkPower: false }
+
     },
     { //测试
         name: 'test',

+ 51 - 19
src/views/projectManage/ProjectManagement.vue

@@ -258,6 +258,13 @@
                 size="mini"
                 >资金情况</el-button
               > -->
+              <el-button
+                type="primary"
+                v-show="false"
+                @click="jump(scope.row.courseId)"
+                size="mini"
+                >提交结项测试测试</el-button
+              >
               <el-button
                 type="primary"
                 v-show="scope.row.isupload == 2"
@@ -467,7 +474,6 @@ import beUpload from "../../components/tool/beUpload";
 import Closingstatement from "./components/Closingstatement.vue";
 //下载pdf
 import { downloadPDF } from "@/components/tool/pdf";
-import html2pdf from "html2pdf.js";
 export default {
   components: { beUpload, Closingstatement },
   data() {
@@ -732,6 +738,7 @@ export default {
                 this.myArrayProp[0].actualuse = num; //添加已经使用过的经费
 
                 console.log(this.myArrayProp);
+                // window.open(`/Closingstatement1?iid=${val.courseId}`);
                 this.endDialog = true;
               })
               .catch((err) => {
@@ -936,39 +943,62 @@ export default {
           }
         );
     },
+    jump(id){
+      window.open(`/Closingstatement1?iid=${id}`);
+    },
     getWord() {
       // let tableBox = this.$refs.finalClo.$refs.tableBox;
       // let tableBox2 = this.$refs.finalClo.$refs.tableBox2;
       // // let tableInnerHtml = "";
       // let tableInnerHtml2 = "";
-      // let div = document.createElement('div');
+      // let div = document.createElement("div");
       // div.className = "divCss";
+      // let table = document.createElement("table");
+      // table.className = "tableCss";
+      // table.border = "1";
+      // table.setAttribute('cellspacing', '0');
+      // div.appendChild(table)
       // let num = 0;
-      // for(var i = 0;i<tableBox.children.length;i++){
+      // for (var i = 0; i < tableBox.children.length; i++) {
       //   let child = tableBox.children[i];
       //   let childHeight = child.offsetHeight;
-      //   if(childHeight < 1930 && (num + childHeight) < 1930){
+      //   if (childHeight < 1500 && num + childHeight < 1500) {
       //     // tableInnerHtml2 += child.innerHTML;
-      //     div.appendChild(child.cloneNode(true))
+      //     table.appendChild(child.cloneNode(true));
       //     num += childHeight;
-      //   }else if(childHeight < 1930 && (num + childHeight) > 1930){
+      //   } else if (childHeight < 1800 && num + childHeight > 1800) {
       //     num = childHeight;
-      //     tableBox2.appendChild(div)
-      //     div = document.createElement('div');
+      //     tableBox2.appendChild(div);
+      //     div = document.createElement("div");
       //     div.className = "divCss";
-      //     div.appendChild(child.cloneNode(true))
-      //   }else if(childHeight > 1930){
+      //     table = document.createElement("table");
+      //     table.className = "tableCss";
+      //     table.border = "1";
+      //     table.setAttribute('cellspacing', '0');
+      //     div.appendChild(table)
+      //     table.appendChild(child.cloneNode(true));
+      //   } else if (childHeight > 1800) {
       //     num = childHeight;
-      //     tableBox2.appendChild(div)
-      //     div = document.createElement('div');
+      //     tableBox2.appendChild(div);
+      //     div = document.createElement("div");
       //     div.className = "divCss";
-      //     div.appendChild(child.cloneNode(true))
-      //   }else{
+      //     table = document.createElement("table");
+      //     table.className = "tableCss";
+      //     table.border = "1";
+      //     table.setAttribute('cellspacing', '0');
+      //     div.appendChild(table)
+      //     table.appendChild(child.cloneNode(true));
+      //   } else {
       //     num = childHeight;
-      //     tableBox2.appendChild(div)
-      //     div = document.createElement('div');
+      //     tableBox2.appendChild(div);
+      //     div = document.createElement("div");
       //     div.className = "divCss";
-      //     div.appendChild(child.cloneNode(true))
+      //     table = document.createElement("table");
+      //     table.className = "tableCss";
+      //     table.border = "1";
+      //     table.setAttribute('cellspacing', '0');
+      //     div.appendChild(table)
+      //     table.appendChild(child.cloneNode(true));
       //   }
       // }
       // tableBox2.innerHTML = tableInnerHtml;
@@ -1125,7 +1155,8 @@ export default {
     }
     .el-dialog__body {
       box-sizing: border-box;
-      padding: 30px 20px 0 20px;
+      // padding: 30px 20px 0 20px;
+      padding: 0;
     }
     .deleteContent {
       width: 100%;
@@ -1203,7 +1234,8 @@ export default {
     }
     .el-dialog__body {
       box-sizing: border-box;
-      padding: 30px 20px 0 20px;
+      // padding: 30px 20px 0 20px;
+      padding: 0;
     }
     .addDialogLogo {
       width: 60px;

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 540 - 525
src/views/projectManage/components/Closingstatement.vue


+ 122 - 0
src/views/projectManage/components/Closingstatement1.vue

@@ -0,0 +1,122 @@
+<template>
+  <div>
+    <Closingstatement
+      style="background: #fff"
+      ref="finalClo"
+      :myArrayProp="myArrayProp"
+      :iid="iid"
+      :isDownPdf="isDownPdf"
+    ></Closingstatement>
+
+    <div
+      slot="footer"
+      class="dialog-footer"
+      style="display: flex; justify-content: center"
+    >
+      <el-button type="primary" @click="getWord" class="AllDialogBtn"
+        >下载表格</el-button
+      >
+    </div>
+  </div>
+</template>
+
+<script>
+import Closingstatement from "../components/Closingstatement.vue";
+//下载pdf
+import { downloadPDF } from "@/components/tool/pdf";
+export default {
+  components: { Closingstatement },
+  data() {
+    return {
+      myArrayProp: [], //结项书-后端获取的数据
+      iid: this.$route.query.iid,
+      isDownPdf: false,
+      submitData: {
+        //结项书要填写的数据
+        brief: "",
+        plan: "",
+        technology: "",
+        business: "",
+        innovate: "",
+        resultAccessory: [],
+        firmAccessory: [],
+        competitionAccessory: [],
+        exchangeAccessory: [],
+        conversionAccessory: [],
+        talentsAccessory: [],
+        targetPlan: "",
+        realityResult: "",
+        socialValue: "",
+        taskAccessory: [],
+      },
+    };
+  },
+  methods: {
+    getPrice() {
+      this.ajax
+        .get(this.$store.state.api + "/getClosingstatementData", {
+          uid: this.$store.state.userInfo.userid,
+          pid: this.iid,
+        })
+        .then((res) => {
+          let num = 0;
+          res.data[1].forEach((i) => {
+            //计算出已经使用过的金钱
+            // console.log(i);
+            i["actualuse"] = JSON.parse(i["actualuse"]);
+            for (let key in i["actualuse"]) {
+              if (i["actualuse"][key]) {
+                num = i["actualuse"][key] * 1 + num;
+              }
+            }
+          });
+          console.log(num);
+
+          let data = res.data[0];
+
+          data[0].course_student = JSON.parse(data[0].course_student);
+          data[0].course_teacher = JSON.parse(data[0].course_teacher);
+          if (data[0].multiSelectProject != null) {
+            data[0].multiSelectProject = JSON.parse(data[0].multiSelectProject);
+          }
+
+          data[0].money = JSON.parse(data[0].money);
+          data[0].ClosingstatementData = data[0].ClosingstatementData
+            ? JSON.parse(data[0].ClosingstatementData)
+            : this.submitData;
+
+          this.myArrayProp = data;
+          this.myArrayProp[0].actualuse = num; //添加已经使用过的经费
+
+          console.log(this.myArrayProp);
+        })
+        .catch((err) => {
+          console.log(err);
+        });
+    },
+    getWord() {
+      this.isDownPdf = true;
+      this.$forceUpdate();
+      setTimeout(() => {
+        downloadPDF(
+          this.$refs.finalClo.$refs.downPDF,
+          this.myArrayProp[0].title + "申报书"
+        );
+        setTimeout(() => {
+          this.isDownPdf = false;
+          this.$forceUpdate();
+        }, 500);
+      }, 500);
+    },
+  },
+
+  mounted() {
+    // console.log(this.myArrayProp);
+    //    this.getData();
+    this.getPrice();
+  },
+};
+</script>
+
+<style lang="less" scoped>
+</style>

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů