Browse Source

科学家工作室

YY 2 năm trước cách đây
mục cha
commit
ce96ca8c46

+ 325 - 0
package-lock.json

@@ -13,7 +13,9 @@
         "@wangeditor/editor-for-vue": "^5.1.12",
         "animate.css": "^4.1.1",
         "axios": "^1.3.4",
+        "dom-to-image": "^2.6.0",
         "element-plus": "^2.3.0",
+        "jspdf": "^2.5.1",
         "lodash": "^4.17.21",
         "moment": "^2.29.4",
         "naf-core": "^0.1.2",
@@ -701,6 +703,12 @@
       "integrity": "sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA==",
       "dev": true
     },
+    "node_modules/@types/raf": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmmirror.com/@types/raf/-/raf-3.4.0.tgz",
+      "integrity": "sha512-taW5/WYqo36N7V39oYyHP9Ipfd5pNFvGTIQsNGj86xV88YQ7GnI30/yMfKDF7Zgin0m3e+ikX88FvImnK4RjGw==",
+      "optional": true
+    },
     "node_modules/@types/semver": {
       "version": "7.3.13",
       "resolved": "https://registry.npmmirror.com/@types/semver/-/semver-7.3.13.tgz",
@@ -1675,6 +1683,17 @@
       "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
       "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
     },
+    "node_modules/atob": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz",
+      "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+      "bin": {
+        "atob": "bin/atob.js"
+      },
+      "engines": {
+        "node": ">= 4.5.0"
+      }
+    },
     "node_modules/available-typed-arrays": {
       "version": "1.0.5",
       "resolved": "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
@@ -1700,6 +1719,15 @@
       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
       "dev": true
     },
+    "node_modules/base64-arraybuffer": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
+      "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==",
+      "optional": true,
+      "engines": {
+        "node": ">= 0.6.0"
+      }
+    },
     "node_modules/binary-extensions": {
       "version": "2.2.0",
       "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -1756,6 +1784,17 @@
         "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
       }
     },
+    "node_modules/btoa": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/btoa/-/btoa-1.2.1.tgz",
+      "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==",
+      "bin": {
+        "btoa": "bin/btoa.js"
+      },
+      "engines": {
+        "node": ">= 0.4.0"
+      }
+    },
     "node_modules/buffer-from": {
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
@@ -1789,6 +1828,25 @@
       "dev": true,
       "peer": true
     },
+    "node_modules/canvg": {
+      "version": "3.0.10",
+      "resolved": "https://registry.npmmirror.com/canvg/-/canvg-3.0.10.tgz",
+      "integrity": "sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==",
+      "optional": true,
+      "dependencies": {
+        "@babel/runtime": "^7.12.5",
+        "@types/raf": "^3.4.0",
+        "core-js": "^3.8.3",
+        "raf": "^3.4.1",
+        "regenerator-runtime": "^0.13.7",
+        "rgbcolor": "^1.0.1",
+        "stackblur-canvas": "^2.0.0",
+        "svg-pathdata": "^6.0.3"
+      },
+      "engines": {
+        "node": ">=10.0.0"
+      }
+    },
     "node_modules/chalk": {
       "version": "4.1.2",
       "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
@@ -1892,6 +1950,13 @@
       "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
       "dev": true
     },
+    "node_modules/core-js": {
+      "version": "3.29.1",
+      "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.29.1.tgz",
+      "integrity": "sha512-+jwgnhg6cQxKYIIjGtAHq2nwUOolo9eoFZ4sHfUH09BLXBgxnH4gA0zEd+t+BO2cNB8idaBtZFcFTRjQJRJmAw==",
+      "hasInstallScript": true,
+      "optional": true
+    },
     "node_modules/cross-spawn": {
       "version": "7.0.3",
       "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -1906,6 +1971,15 @@
         "node": ">= 8"
       }
     },
+    "node_modules/css-line-break": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz",
+      "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
+      "optional": true,
+      "dependencies": {
+        "utrie": "^1.0.2"
+      }
+    },
     "node_modules/cssesc": {
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz",
@@ -2011,6 +2085,11 @@
         "node": ">=6.0.0"
       }
     },
+    "node_modules/dom-to-image": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmmirror.com/dom-to-image/-/dom-to-image-2.6.0.tgz",
+      "integrity": "sha512-Dt0QdaHmLpjURjU7Tnu3AgYSF2LuOmksSGsUcE6ItvJoCWTBEmiMXcqBdNSAm9+QbbwD7JMoVsuuKX6ZVQv1qA=="
+    },
     "node_modules/dom7": {
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/dom7/-/dom7-3.0.0.tgz",
@@ -2019,6 +2098,12 @@
         "ssr-window": "^3.0.0-alpha.1"
       }
     },
+    "node_modules/dompurify": {
+      "version": "2.4.5",
+      "resolved": "https://registry.npmmirror.com/dompurify/-/dompurify-2.4.5.tgz",
+      "integrity": "sha512-jggCCd+8Iqp4Tsz0nIvpcb22InKEBrGz5dw3EQJMs8HPJDsKbFIO3STYtAvCfDx26Muevn1MHVI0XxjgFfmiSA==",
+      "optional": true
+    },
     "node_modules/electron-to-chromium": {
       "version": "1.4.331",
       "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.331.tgz",
@@ -2595,6 +2680,11 @@
         "reusify": "^1.0.4"
       }
     },
+    "node_modules/fflate": {
+      "version": "0.4.8",
+      "resolved": "https://registry.npmmirror.com/fflate/-/fflate-0.4.8.tgz",
+      "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA=="
+    },
     "node_modules/file-entry-cache": {
       "version": "6.0.1",
       "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@@ -2941,6 +3031,19 @@
       "resolved": "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-2.0.1.tgz",
       "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A=="
     },
+    "node_modules/html2canvas": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz",
+      "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
+      "optional": true,
+      "dependencies": {
+        "css-line-break": "^2.1.0",
+        "text-segmentation": "^1.0.3"
+      },
+      "engines": {
+        "node": ">=8.0.0"
+      }
+    },
     "node_modules/i18next": {
       "version": "20.6.1",
       "resolved": "https://registry.npmmirror.com/i18next/-/i18next-20.6.1.tgz",
@@ -3328,6 +3431,23 @@
       "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
       "dev": true
     },
+    "node_modules/jspdf": {
+      "version": "2.5.1",
+      "resolved": "https://registry.npmmirror.com/jspdf/-/jspdf-2.5.1.tgz",
+      "integrity": "sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==",
+      "dependencies": {
+        "@babel/runtime": "^7.14.0",
+        "atob": "^2.1.2",
+        "btoa": "^1.2.1",
+        "fflate": "^0.4.8"
+      },
+      "optionalDependencies": {
+        "canvg": "^3.0.6",
+        "core-js": "^3.6.0",
+        "dompurify": "^2.2.0",
+        "html2canvas": "^1.0.0-rc.5"
+      }
+    },
     "node_modules/klona": {
       "version": "2.0.6",
       "resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz",
@@ -3987,6 +4107,12 @@
         "node": ">=8"
       }
     },
+    "node_modules/performance-now": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz",
+      "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
+      "optional": true
+    },
     "node_modules/picocolors": {
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
@@ -4158,6 +4284,15 @@
       "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
       "dev": true
     },
+    "node_modules/raf": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmmirror.com/raf/-/raf-3.4.1.tgz",
+      "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
+      "optional": true,
+      "dependencies": {
+        "performance-now": "^2.1.0"
+      }
+    },
     "node_modules/randombytes": {
       "version": "2.1.0",
       "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz",
@@ -4267,6 +4402,15 @@
         "node": ">=0.10.0"
       }
     },
+    "node_modules/rgbcolor": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/rgbcolor/-/rgbcolor-1.0.1.tgz",
+      "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==",
+      "optional": true,
+      "engines": {
+        "node": ">= 0.8.15"
+      }
+    },
     "node_modules/rimraf": {
       "version": "3.0.2",
       "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz",
@@ -4572,6 +4716,15 @@
       "resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-3.0.0.tgz",
       "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA=="
     },
+    "node_modules/stackblur-canvas": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmmirror.com/stackblur-canvas/-/stackblur-canvas-2.5.0.tgz",
+      "integrity": "sha512-EeNzTVfj+1In7aSLPKDD03F/ly4RxEuF/EX0YcOG0cKoPXs+SLZxDawQbexQDBzwROs4VKLWTOaZQlZkGBFEIQ==",
+      "optional": true,
+      "engines": {
+        "node": ">=0.1.14"
+      }
+    },
     "node_modules/string.prototype.padend": {
       "version": "3.1.4",
       "resolved": "https://registry.npmmirror.com/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz",
@@ -4659,6 +4812,15 @@
         "node": ">= 0.4"
       }
     },
+    "node_modules/svg-pathdata": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmmirror.com/svg-pathdata/-/svg-pathdata-6.0.3.tgz",
+      "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==",
+      "optional": true,
+      "engines": {
+        "node": ">=12.0.0"
+      }
+    },
     "node_modules/tapable": {
       "version": "2.2.1",
       "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
@@ -4719,6 +4881,15 @@
         }
       }
     },
+    "node_modules/text-segmentation": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",
+      "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
+      "optional": true,
+      "dependencies": {
+        "utrie": "^1.0.2"
+      }
+    },
     "node_modules/text-table": {
       "version": "0.2.0",
       "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
@@ -4857,6 +5028,15 @@
       "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
       "dev": true
     },
+    "node_modules/utrie": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz",
+      "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
+      "optional": true,
+      "dependencies": {
+        "base64-arraybuffer": "^1.0.2"
+      }
+    },
     "node_modules/validate-npm-package-license": {
       "version": "3.0.4",
       "resolved": "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
@@ -5586,6 +5766,12 @@
       "integrity": "sha512-1uEQxww3DaghA0RxqHx0O0ppVlo43pJhepY51OxuQIKHpjbnYLA7vcdwioNPzIqmC2u3I/dmylcqjlh0e7AyUA==",
       "dev": true
     },
+    "@types/raf": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmmirror.com/@types/raf/-/raf-3.4.0.tgz",
+      "integrity": "sha512-taW5/WYqo36N7V39oYyHP9Ipfd5pNFvGTIQsNGj86xV88YQ7GnI30/yMfKDF7Zgin0m3e+ikX88FvImnK4RjGw==",
+      "optional": true
+    },
     "@types/semver": {
       "version": "7.3.13",
       "resolved": "https://registry.npmmirror.com/@types/semver/-/semver-7.3.13.tgz",
@@ -6351,6 +6537,11 @@
       "resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
       "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
     },
+    "atob": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz",
+      "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
+    },
     "available-typed-arrays": {
       "version": "1.0.5",
       "resolved": "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
@@ -6373,6 +6564,12 @@
       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
       "dev": true
     },
+    "base64-arraybuffer": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
+      "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==",
+      "optional": true
+    },
     "binary-extensions": {
       "version": "2.2.0",
       "resolved": "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -6417,6 +6614,11 @@
         "update-browserslist-db": "^1.0.10"
       }
     },
+    "btoa": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmmirror.com/btoa/-/btoa-1.2.1.tgz",
+      "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g=="
+    },
     "buffer-from": {
       "version": "1.1.2",
       "resolved": "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz",
@@ -6447,6 +6649,22 @@
       "dev": true,
       "peer": true
     },
+    "canvg": {
+      "version": "3.0.10",
+      "resolved": "https://registry.npmmirror.com/canvg/-/canvg-3.0.10.tgz",
+      "integrity": "sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==",
+      "optional": true,
+      "requires": {
+        "@babel/runtime": "^7.12.5",
+        "@types/raf": "^3.4.0",
+        "core-js": "^3.8.3",
+        "raf": "^3.4.1",
+        "regenerator-runtime": "^0.13.7",
+        "rgbcolor": "^1.0.1",
+        "stackblur-canvas": "^2.0.0",
+        "svg-pathdata": "^6.0.3"
+      }
+    },
     "chalk": {
       "version": "4.1.2",
       "resolved": "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz",
@@ -6532,6 +6750,12 @@
       "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
       "dev": true
     },
+    "core-js": {
+      "version": "3.29.1",
+      "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.29.1.tgz",
+      "integrity": "sha512-+jwgnhg6cQxKYIIjGtAHq2nwUOolo9eoFZ4sHfUH09BLXBgxnH4gA0zEd+t+BO2cNB8idaBtZFcFTRjQJRJmAw==",
+      "optional": true
+    },
     "cross-spawn": {
       "version": "7.0.3",
       "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -6543,6 +6767,15 @@
         "which": "^2.0.1"
       }
     },
+    "css-line-break": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz",
+      "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
+      "optional": true,
+      "requires": {
+        "utrie": "^1.0.2"
+      }
+    },
     "cssesc": {
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz",
@@ -6622,6 +6855,11 @@
         "esutils": "^2.0.2"
       }
     },
+    "dom-to-image": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmmirror.com/dom-to-image/-/dom-to-image-2.6.0.tgz",
+      "integrity": "sha512-Dt0QdaHmLpjURjU7Tnu3AgYSF2LuOmksSGsUcE6ItvJoCWTBEmiMXcqBdNSAm9+QbbwD7JMoVsuuKX6ZVQv1qA=="
+    },
     "dom7": {
       "version": "3.0.0",
       "resolved": "https://registry.npmmirror.com/dom7/-/dom7-3.0.0.tgz",
@@ -6630,6 +6868,12 @@
         "ssr-window": "^3.0.0-alpha.1"
       }
     },
+    "dompurify": {
+      "version": "2.4.5",
+      "resolved": "https://registry.npmmirror.com/dompurify/-/dompurify-2.4.5.tgz",
+      "integrity": "sha512-jggCCd+8Iqp4Tsz0nIvpcb22InKEBrGz5dw3EQJMs8HPJDsKbFIO3STYtAvCfDx26Muevn1MHVI0XxjgFfmiSA==",
+      "optional": true
+    },
     "electron-to-chromium": {
       "version": "1.4.331",
       "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.331.tgz",
@@ -7106,6 +7350,11 @@
         "reusify": "^1.0.4"
       }
     },
+    "fflate": {
+      "version": "0.4.8",
+      "resolved": "https://registry.npmmirror.com/fflate/-/fflate-0.4.8.tgz",
+      "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA=="
+    },
     "file-entry-cache": {
       "version": "6.0.1",
       "resolved": "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@@ -7383,6 +7632,16 @@
       "resolved": "https://registry.npmmirror.com/html-void-elements/-/html-void-elements-2.0.1.tgz",
       "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A=="
     },
+    "html2canvas": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz",
+      "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
+      "optional": true,
+      "requires": {
+        "css-line-break": "^2.1.0",
+        "text-segmentation": "^1.0.3"
+      }
+    },
     "i18next": {
       "version": "20.6.1",
       "resolved": "https://registry.npmmirror.com/i18next/-/i18next-20.6.1.tgz",
@@ -7706,6 +7965,21 @@
       "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
       "dev": true
     },
+    "jspdf": {
+      "version": "2.5.1",
+      "resolved": "https://registry.npmmirror.com/jspdf/-/jspdf-2.5.1.tgz",
+      "integrity": "sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==",
+      "requires": {
+        "@babel/runtime": "^7.14.0",
+        "atob": "^2.1.2",
+        "btoa": "^1.2.1",
+        "canvg": "^3.0.6",
+        "core-js": "^3.6.0",
+        "dompurify": "^2.2.0",
+        "fflate": "^0.4.8",
+        "html2canvas": "^1.0.0-rc.5"
+      }
+    },
     "klona": {
       "version": "2.0.6",
       "resolved": "https://registry.npmmirror.com/klona/-/klona-2.0.6.tgz",
@@ -8237,6 +8511,12 @@
       "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
       "dev": true
     },
+    "performance-now": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz",
+      "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
+      "optional": true
+    },
     "picocolors": {
       "version": "1.0.0",
       "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
@@ -8345,6 +8625,15 @@
       "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
       "dev": true
     },
+    "raf": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmmirror.com/raf/-/raf-3.4.1.tgz",
+      "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
+      "optional": true,
+      "requires": {
+        "performance-now": "^2.1.0"
+      }
+    },
     "randombytes": {
       "version": "2.1.0",
       "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz",
@@ -8431,6 +8720,12 @@
       "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
       "dev": true
     },
+    "rgbcolor": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmmirror.com/rgbcolor/-/rgbcolor-1.0.1.tgz",
+      "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==",
+      "optional": true
+    },
     "rimraf": {
       "version": "3.0.2",
       "resolved": "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz",
@@ -8665,6 +8960,12 @@
       "resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-3.0.0.tgz",
       "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA=="
     },
+    "stackblur-canvas": {
+      "version": "2.5.0",
+      "resolved": "https://registry.npmmirror.com/stackblur-canvas/-/stackblur-canvas-2.5.0.tgz",
+      "integrity": "sha512-EeNzTVfj+1In7aSLPKDD03F/ly4RxEuF/EX0YcOG0cKoPXs+SLZxDawQbexQDBzwROs4VKLWTOaZQlZkGBFEIQ==",
+      "optional": true
+    },
     "string.prototype.padend": {
       "version": "3.1.4",
       "resolved": "https://registry.npmmirror.com/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz",
@@ -8734,6 +9035,12 @@
       "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
       "dev": true
     },
+    "svg-pathdata": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmmirror.com/svg-pathdata/-/svg-pathdata-6.0.3.tgz",
+      "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==",
+      "optional": true
+    },
     "tapable": {
       "version": "2.2.1",
       "resolved": "https://registry.npmmirror.com/tapable/-/tapable-2.2.1.tgz",
@@ -8768,6 +9075,15 @@
         "terser": "^5.16.5"
       }
     },
+    "text-segmentation": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",
+      "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
+      "optional": true,
+      "requires": {
+        "utrie": "^1.0.2"
+      }
+    },
     "text-table": {
       "version": "0.2.0",
       "resolved": "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz",
@@ -8878,6 +9194,15 @@
       "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
       "dev": true
     },
+    "utrie": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz",
+      "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
+      "optional": true,
+      "requires": {
+        "base64-arraybuffer": "^1.0.2"
+      }
+    },
     "validate-npm-package-license": {
       "version": "3.0.4",
       "resolved": "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",

+ 2 - 0
package.json

@@ -17,7 +17,9 @@
     "@wangeditor/editor-for-vue": "^5.1.12",
     "animate.css": "^4.1.1",
     "axios": "^1.3.4",
+    "dom-to-image": "^2.6.0",
     "element-plus": "^2.3.0",
+    "jspdf": "^2.5.1",
     "lodash": "^4.17.21",
     "moment": "^2.29.4",
     "naf-core": "^0.1.2",

+ 155 - 185
src/views/center/studio/info/export.vue

@@ -3,12 +3,11 @@
     <el-row>
       <el-col :span="24" class="main animate__animated animate__backInRight" v-loading="loading">
         <el-col :span="24" class="one">
-          <c-search :is_back="true" @toBack="toBack()">
-            <template v-slot="custombtn">
+          <component :is="partsSearch" :is_back="true" @toBack="toBack()">
+            <template v-slot:custombtn>
               <el-button type="success" size="small" @click="toExport()">导出</el-button>
-              <!-- <el-button type="success" size="small" v-print="{ id: 'demo', popTitle: info.name }">打印</el-button> -->
             </template>
-          </c-search>
+          </component>
         </el-col>
         <el-col :span="24" class="two" id="demo" ref="print" style="box-shadow: 0 0 10px #f1f1f1; margin: 0 0 10px 0; padding: 10px 200px">
           <el-col :span="24" class="two_1" style="text-align: center; margin: 10px 0 15px 0; font-weight: none; font-size: 48px; font-family: 仿宋">
@@ -72,188 +71,159 @@
     </el-row>
   </div>
 </template>
-
-<script>
-import { mapState, createNamespacedHelpers } from 'vuex';
-const { mapActions } = createNamespacedHelpers('studio');
-const { mapActions: scientistsettle } = createNamespacedHelpers('scientistsettle');
-const { mapActions: sysdictdata } = createNamespacedHelpers('sysdictdata');
-const { mapActions: unitStudioApply } = createNamespacedHelpers('unitStudioApply');
-const { mapActions: userStudioApply } = createNamespacedHelpers('userStudioApply');
-import htmlToPdf from '@common/src/util/htmlToPdf.js';
-export default {
-  name: 'info',
-  props: {},
-  components: {},
-  data: function () {
-    return {
-      // 依托单位基本信息
-      unitInfo: {},
-      // 科学家信息
-      sciInfo: {},
-      info: { team: [], zy_fields: [] },
-      fieldList: [],
-      // 入驻科学家入驻条数
-      sci_num: 0,
-      loading: false,
+<script lang="ts" setup>
+import partsSearch from '@/components/c-search.vue';
+import type { Ref } from 'vue';
+import { ref, onMounted } from 'vue';
+import { useRoute } from 'vue-router';
+import { ElMessageBox } from 'element-plus';
+import htmlToPdf from '@common/src/util/htmlToPdf.ts';
+// #region 接口
+import { StudioStore } from '@common/src/stores/studio/studios/studio'; // 列表 // 列表
+import { DictDataStore } from '@common/src/stores/users/sysdictdata'; // 字典表
+import { ScientistsettleStore } from '@common/src/stores/studio/studios/scientistsettle';
+import { UnitStudioApplyStore } from '@common/src/stores/studio/role/unitStudioApply';
+import { UserStudioApplyStore } from '@common/src/stores/studio/role/userStudioApply';
+import type { IQueryResult } from '@/util/types.util';
+const studio = StudioStore();
+const sysdictdata = DictDataStore();
+const scientistsettle = ScientistsettleStore();
+const unitStudioApply = UnitStudioApplyStore();
+const userStudioApply = UserStudioApplyStore();
+let route = useRoute();
+interface Item {}
+interface teamItem {
+  name: string;
+  zc: string;
+  company: string;
+}
+// #endregion
+// #region 数据
+// 依托单位基本信息
+let unitInfo: Ref<{ unit_contact: string; unit_phone: { phone: string } }> = ref({ unit_contact: '', unit_phone: { phone: '' } });
+// 科学家信息
+let sciInfo: Ref<{ company: string; phone: { phone: string } }> = ref({ company: '', phone: { phone: '' } });
+let info: Ref<{
+  team: Array<teamItem>;
+  zy_fields: Array<Item>;
+  name: string;
+  zy_fields_name: string;
+  company_name: string;
+  company_contact: string;
+  company_contact_phone: string;
+  scientist_name: string;
+  scientistinfo_company: string;
+  scientistinfo_phone: string;
+  apply_time: string;
+}> = ref({
+  team: [],
+  zy_fields: [],
+  name: '',
+  zy_fields_name: '',
+  company_name: '',
+  company_contact: '',
+  company_contact_phone: '',
+  scientist_name: '',
+  scientistinfo_company: '',
+  scientistinfo_phone: '',
+  apply_time: '',
+});
+let fieldList: Ref<any[]> = ref([]);
+// 入驻科学家入驻条数
+let sci_num: Ref<number> = ref(0);
+let loading: Ref<boolean> = ref(false);
+let company_id = route.query.company_id;
+let scientistinfo_id = route.query.scientistinfo_id;
+let id = route.query.id;
+// #endregion
+onMounted(async () => {
+  await searchOther();
+  await searchunitBasic();
+  await searchsciBasic();
+  await search();
+});
+// 查询企业基本信息
+const searchunitBasic = async () => {
+  if (company_id) {
+    const res: IQueryResult = await unitStudioApply.fetch(company_id);
+    unitInfo.value = res.data as { unit_contact: string; unit_phone: { phone: string } };
+  }
+};
+// 查询科学家基本信息
+const searchsciBasic = async () => {
+  if (scientistinfo_id) {
+    const res: IQueryResult = await userStudioApply.fetch(scientistinfo_id);
+    sciInfo.value = res.data as { company: string; phone: { phone: string } };
+  }
+};
+const search = async () => {
+  if (id) {
+    const res: IQueryResult = await studio.fetch(id);
+    let infos = res.data as {
+      team: Array<teamItem>;
+      zy_fields: Array<Item>;
+      name: string;
+      zy_fields_name: string;
+      company_name: string;
+      company_contact: string;
+      company_contact_phone: string;
+      scientist_name: string;
+      scientistinfo_company: string;
+      scientistinfo_phone: string;
+      apply_time: string;
     };
-  },
-  async created() {
-    await this.searchOther();
-    await this.searchunitBasic();
-    await this.searchsciBasic();
-    await this.search();
-  },
-  methods: {
-    ...mapActions(['fetch']),
-    ...scientistsettle(['query']),
-    ...sysdictdata({ dQuery: 'query' }),
-    ...unitStudioApply({ uFetch: 'fetch' }),
-    ...userStudioApply({ sFetch: 'fetch' }),
-    // 查询企业基本信息
-    async searchunitBasic() {
-      if (this.company_id) {
-        let res = await this.uFetch(this.company_id);
-        if (this.$checkRes(res)) {
-          this.$set(this, `unitInfo`, res.data);
-        }
-      }
-    },
-    // 查询科学家基本信息
-    async searchsciBasic() {
-      if (this.scientistinfo_id) {
-        let res = await this.sFetch(this.scientistinfo_id);
-        if (this.$checkRes(res)) {
-          this.$set(this, `sciInfo`, res.data);
-        }
-      }
-    },
-    async search() {
-      if (this.id) {
-        let res = await this.fetch(this.id);
-        if (this.$checkRes(res)) {
-          let info = res.data;
-          info.team = await this.sarchTeam();
-          if (info.zy_fields && info.zy_fields.length > 0) info.zy_fields_name = this.searchDict(info.zy_fields, 'fieldList');
-          info.company_contact = this.unitInfo.unit_contact;
-          info.company_contact_phone = this.unitInfo.unit_phone.phone;
-          info.scientistinfo_company = this.sciInfo.company;
-          info.scientistinfo_phone = this.sciInfo.phone.phone;
-          this.$set(this, `sci_num`, 4 + info.team.length);
-          this.$set(this, `info`, info);
-        }
-      }
-    },
-    // 查询团队信息
-    async sarchTeam() {
-      let list = [];
-      let res = await this.query({ studio_id: this.id });
-      if (this.$checkRes(res)) {
-        if (res.total > 0) {
-          let data = res.data[0];
-          list = data.team;
-        }
-      }
-      return list;
-    },
-    searchDict(e, type) {
-      let data = [];
-      for (const val of e) {
-        let info = this[type].find((i) => i.dict_value == val);
-        if (info) data.push(info.dict_label);
-      }
-      return data.join(',');
-    },
-    // 导出
-    toExport() {
-      let that = this;
-      this.$confirm('您确认要导出此信息吗?', '提示', {
-        confirmButtonText: '确定',
-        cancelButtonText: '取消',
-        type: 'warning',
-      })
-        .then(() => {
-          that.loading = true;
-          let ele = document.querySelector('#demo');
-          let pdfName = this.info.name;
-          htmlToPdf.createPDF(ele, pdfName);
-          that.loading = false;
-        })
-        .catch(() => {});
-    },
-    // 返回
-    toBack() {
-      window.history.go('-1');
-    },
-    // 查询其他信息
-    async searchOther() {
-      let res;
-      // 专业领域
-      res = await this.dQuery({ dict_type: 'studio_field' });
-      if (this.$checkRes(res)) {
-        this.$set(this, `fieldList`, res.data);
-      }
-    },
-  },
-  computed: {
-    ...mapState(['user']),
-    id() {
-      return this.$route.query.id;
-    },
-    company_id() {
-      return this.$route.query.company_id;
-    },
-    scientistinfo_id() {
-      return this.$route.query.scientistinfo_id;
-    },
-  },
-  metaInfo() {
-    return { title: this.$route.meta.title };
-  },
-  watch: {
-    test: {
-      deep: true,
-      immediate: true,
-      handler(val) {},
-    },
-  },
+    infos.team = await sarchTeam();
+    if (infos.zy_fields && infos.zy_fields.length > 0) infos.zy_fields_name = searchDict(infos.zy_fields, 'fieldList');
+    infos.company_contact = unitInfo.value.unit_contact;
+    infos.company_contact_phone = unitInfo.value.unit_phone.phone;
+    infos.scientistinfo_company = sciInfo.value.company;
+    infos.scientistinfo_phone = sciInfo.value.phone.phone;
+    sci_num.value = 4 + infos.team.length;
+    info.value = infos;
+  }
+};
+// 查询团队信息
+const sarchTeam = async () => {
+  let list = [];
+  let res = await scientistsettle.query({ studio_id: id });
+  if (res.total > 0) {
+    let data = res.data[0];
+    list = data.team;
+  }
+  return list;
+};
+const searchDict = (e, type) => {
+  let data = [];
+  for (const val of e) {
+    let info = [type].find((i) => i.dict_value == val);
+    if (info) data.push(info.dict_label);
+  }
+  return data.join(',');
+};
+// 导出
+const toExport = () => {
+  ElMessageBox.confirm('您确认要导出此信息吗', '提示', {
+    confirmButtonText: '确认',
+    cancelButtonText: '取消',
+    type: 'warning',
+  }).then(async () => {
+    loading.value = true;
+    let ele = document.querySelector('#demo');
+    let pdfName = info.value.name;
+    htmlToPdf.createPDF(ele, pdfName, { is_water: false, water: ``, is_show: 'p' });
+    loading.value = false;
+  });
+};
+// 返回
+const toBack = () => {
+  window.history.go(-1);
+};
+// 查询其他信息
+const searchOther = async () => {
+  // 专业领域
+  const p1: IQueryResult = await sysdictdata.query({ dict_type: 'studio_field' });
+  fieldList.value = p1.data as [];
 };
 </script>
 
-<style lang="scss" scoped>
-// .main {
-//   .two {
-//     box-shadow: 0 0 10px #f1f1f1;
-//     margin: 0 0 10px 0;
-//     padding: 10px 20px;
-//     .two_1 {
-//       text-align: center;
-//       margin: 0 0 1vw 0;
-//       font-weight: none;
-//       font-size: 30px;
-//       font-family: 仿宋;
-//     }
-//     .two_2 {
-//       padding: 0 14%;
-//       table {
-//         tr {
-//           td {
-//             font-size: 28px;
-//             font-family: 仿宋;
-//             padding: 8px;
-//           }
-//           .team {
-//             p {
-//               margin: 0 0 5px 0;
-//               font-size: 14px;
-//             }
-//           }
-//           .key {
-//             font-weight: none;
-//           }
-//         }
-//       }
-//     }
-//   }
-// }
-</style>
+<style lang="scss" scoped></style>

+ 3 - 3
src/views/center/studio/info/index.vue

@@ -119,8 +119,6 @@ const search = async (e: { skip: number; limit: number }) => {
   let info = { limit: limit, skip: skip, ...searchForm.value };
   const res: IQueryResult = await studio.query(info);
   tableData.value = res.data as any[];
-  console.log(res.data);
-
   total.value = res.total;
 };
 // 查询
@@ -138,8 +136,10 @@ const toExam = (data: object) => {
   form.value = data;
   dialog.value = { title: '信息管理', show: true, type: '1' };
 };
-// 删除
+// 导出
 const toExport = async (data: { _id: string; company_id: string; scientistinfo_id: string }) => {
+  console.log('1');
+
   router.push({
     path: '/center/studio/info/export',
     query: { id: data._id, company_id: data.company_id, scientistinfo_id: data.scientistinfo_id },

+ 1 - 2
src/views/center/users/company/index.vue

@@ -89,8 +89,7 @@ let fields: Ref<any[]> = ref([
 // 操作
 let opera: Ref<any[]> = ref([
   { label: '详情', method: 'view' },
-  { label: '审核', method: 'exam', type: 'warning' },
-  // { label: '审核', method: 'exam', type: 'warning', display: (i) => i.status == '0' },
+  { label: '审核', method: 'exam', type: 'warning', display: (i) => i.status == '0' },
   { label: '删除', method: 'del', type: 'danger', confirm: true },
 ]);
 // 多选

+ 1 - 2
src/views/center/users/scientist/index.vue

@@ -94,8 +94,7 @@ let fields: Ref<any[]> = ref([
 // 操作
 let opera: Ref<any[]> = ref([
   { label: '详情', method: 'view' },
-  { label: '审核', method: 'exam', type: 'warning' },
-  // { label: '审核', method: 'exam', type: 'warning', display: (i) => i.status == '0' },
+  { label: '审核', method: 'exam', type: 'warning', display: (i) => i.status == '0' },
   { label: '删除', method: 'del', type: 'danger', confirm: true },
 ]);
 // 多选

+ 6 - 6
tsconfig.json

@@ -5,7 +5,7 @@
   "compilerOptions": {
     "target": "esnext",
     "module": "esnext",
-    "strict": true,
+    "strict": false,
     "jsx": "preserve",
     "moduleResolution": "node",
     "baseUrl": ".",
@@ -14,11 +14,11 @@
     },
     "isolatedModules": false,
     "suppressImplicitAnyIndexErrors": true,
-    "sourceMap":true,
-    "resolveJsonModule":true,
-    "esModuleInterop":true,
-    "lib":["esnext","dom"],
-    "allowSyntheticDefaultImports":true,
+    "sourceMap": true,
+    "resolveJsonModule": true,
+    "esModuleInterop": true,
+    "lib": ["esnext", "dom"],
+    "allowSyntheticDefaultImports": true,
   },
 
   "references": [