diff --git a/package-lock.json b/package-lock.json index 64aca88..cf1bc83 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1428,6 +1428,23 @@ "resolved": "https://registry.npmmirror.com/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmmirror.com/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==" + } + } + }, "async": { "version": "3.2.6", "resolved": "https://registry.npmmirror.com/async/-/async-3.2.6.tgz", @@ -1502,6 +1519,11 @@ "resolved": "https://registry.npmmirror.com/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.29.0.tgz", "integrity": "sha512-0pcSSGxC0QxT+yVkivxIqW0Y4VlO2XSDPofBAqoJ1qJxgH9eiUDLv50Rixij2cDuEfx4M6DpD9UGZpRhT5Q8qg==" }, + "bn.js": { + "version": "5.2.2", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==" + }, "brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -1518,6 +1540,107 @@ "fill-range": "^7.1.1" } }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.1", + "resolved": "https://registry.npmmirror.com/browserify-rsa/-/browserify-rsa-4.1.1.tgz", + "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", + "requires": { + "bn.js": "^5.2.1", + "randombytes": "^2.1.0", + "safe-buffer": "^5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, + "browserify-sign": { + "version": "4.2.3", + "resolved": "https://registry.npmmirror.com/browserify-sign/-/browserify-sign-4.2.3.tgz", + "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", + "requires": { + "bn.js": "^5.2.1", + "browserify-rsa": "^4.1.0", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.5", + "hash-base": "~3.0", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.7", + "readable-stream": "^2.3.8", + "safe-buffer": "^5.2.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, "browserslist": { "version": "4.24.2", "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.24.2.tgz", @@ -1548,6 +1671,11 @@ "resolved": "https://registry.npmmirror.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.2.tgz", "integrity": "sha512-I7wzHwA3t1/lwXQh+A5PbNvJxgfo5r3xulgpYDB5zckTu/Z9oUK9biouBKQUjEqzaz3HnAT6TYoovmE+GqSf7A==" }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + }, "buffers": { "version": "0.1.1", "resolved": "https://registry.npmmirror.com/buffers/-/buffers-0.1.1.tgz", @@ -1633,6 +1761,22 @@ "resolved": "https://registry.npmmirror.com/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" }, + "cipher-base": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/cipher-base/-/cipher-base-1.0.6.tgz", + "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", + "requires": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, "citty": { "version": "0.1.6", "resolved": "https://registry.npmmirror.com/citty/-/citty-0.1.6.tgz", @@ -1743,6 +1887,47 @@ "readable-stream": "^3.4.0" } }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmmirror.com/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==" + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1763,6 +1948,25 @@ } } }, + "crypto-browserify": { + "version": "3.12.1", + "resolved": "https://registry.npmmirror.com/crypto-browserify/-/crypto-browserify-3.12.1.tgz", + "integrity": "sha512-r4ESw/IlusD17lgQi1O20Fa3qNnsckR126TdUuBgAu7GBYSIPvdNyONd3Zrxh0xCwA4+6w/TDArBPsMvhur+KQ==", + "requires": { + "browserify-cipher": "^1.0.1", + "browserify-sign": "^4.2.3", + "create-ecdh": "^4.0.4", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "diffie-hellman": "^5.0.3", + "hash-base": "~3.0.4", + "inherits": "^2.0.4", + "pbkdf2": "^3.1.2", + "public-encrypt": "^4.0.3", + "randombytes": "^2.1.0", + "randomfill": "^1.0.4" + } + }, "csstype": { "version": "2.6.21", "resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz", @@ -1777,6 +1981,11 @@ "type": "^2.7.2" } }, + "data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" + }, "dayjs": { "version": "1.11.13", "resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz", @@ -1796,6 +2005,11 @@ "ms": "^2.1.3" } }, + "decode-uri-component": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.4.1.tgz", + "integrity": "sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==" + }, "deep-pick-omit": { "version": "1.2.1", "resolved": "https://registry.npmmirror.com/deep-pick-omit/-/deep-pick-omit-1.2.1.tgz", @@ -1811,6 +2025,15 @@ "resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, + "des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, "destr": { "version": "2.0.3", "resolved": "https://registry.npmmirror.com/destr/-/destr-2.0.3.tgz", @@ -1822,6 +2045,23 @@ "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "dev": true }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmmirror.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==" + } + } + }, "dom7": { "version": "3.0.0", "resolved": "https://registry.npmmirror.com/dom7/-/dom7-3.0.0.tgz", @@ -1886,6 +2126,27 @@ "normalize-wheel-es": "^1.2.0" } }, + "elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmmirror.com/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==" + } + } + }, "end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -2015,6 +2276,15 @@ "resolved": "https://registry.npmmirror.com/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, "exceljs": { "version": "4.4.0", "resolved": "https://registry.npmmirror.com/exceljs/-/exceljs-4.4.0.tgz", @@ -2084,6 +2354,22 @@ "reusify": "^1.0.4" } }, + "fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "requires": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "dependencies": { + "web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==" + } + } + }, "file-saver": { "version": "2.0.5", "resolved": "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz", @@ -2097,6 +2383,11 @@ "to-regex-range": "^5.0.1" } }, + "filter-obj": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/filter-obj/-/filter-obj-5.1.0.tgz", + "integrity": "sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==" + }, "follow-redirects": { "version": "1.15.9", "resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz", @@ -2126,6 +2417,14 @@ "web-streams-polyfill": "4.0.0-beta.3" } }, + "formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmmirror.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "requires": { + "fetch-blob": "^3.1.2" + } + }, "frac": { "version": "1.1.2", "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz", @@ -2279,17 +2578,52 @@ "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, + "hash-base": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/hash-base/-/hash-base-3.0.5.tgz", + "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", + "requires": { + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, "hash-sum": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-2.0.0.tgz", "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==" }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmmirror.com/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, "hookable": { "version": "5.5.3", "resolved": "https://registry.npmmirror.com/hookable/-/hookable-5.5.3.tgz", @@ -2744,6 +3078,16 @@ "uc.micro": "^2.1.0" } }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmmirror.com/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, "mdurl": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/mdurl/-/mdurl-2.0.0.tgz", @@ -2779,6 +3123,22 @@ "picomatch": "^2.3.1" } }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==" + } + } + }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", @@ -2812,6 +3172,16 @@ "resolved": "https://registry.npmmirror.com/mimic-fn/-/mimic-fn-4.0.0.tgz", "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==" }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, "minimatch": { "version": "9.0.5", "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz", @@ -2930,11 +3300,13 @@ "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" }, "node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "version": "3.3.2", + "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "requires": { - "whatwg-url": "^5.0.0" + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" } }, "node-fetch-native": { @@ -3050,6 +3422,14 @@ "undici-types": "~5.26.4" } }, + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmmirror.com/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, "undici-types": { "version": "5.26.5", "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz", @@ -3062,6 +3442,26 @@ "resolved": "https://registry.npmmirror.com/pako/-/pako-2.1.0.tgz", "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" }, + "parse-asn1": { + "version": "5.1.7", + "resolved": "https://registry.npmmirror.com/parse-asn1/-/parse-asn1-5.1.7.tgz", + "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", + "requires": { + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "hash-base": "~3.0", + "pbkdf2": "^3.1.2", + "safe-buffer": "^5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + } + } + }, "parse-node-version": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz", @@ -3094,6 +3494,18 @@ "resolved": "https://registry.npmmirror.com/pathe/-/pathe-1.1.2.tgz", "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmmirror.com/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, "perfect-debounce": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz", @@ -3189,11 +3601,41 @@ "dev": true, "optional": true }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmmirror.com/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==" + } + } + }, "punycode.js": { "version": "2.3.1", "resolved": "https://registry.npmmirror.com/punycode.js/-/punycode.js-2.3.1.tgz", "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==" }, + "query-string": { + "version": "9.1.2", + "resolved": "https://registry.npmmirror.com/query-string/-/query-string-9.1.2.tgz", + "integrity": "sha512-s3UlTyjxRux4KjwWaJsjh1Mp8zoCkSGKirbD9H89pEM9UOZsfpRZpdfzvsy2/mGlLfC3NnYVpy2gk7jXITHEtA==", + "requires": { + "decode-uri-component": "^0.4.1", + "filter-obj": "^5.1.0", + "split-on-first": "^3.0.0" + } + }, "querystring": { "version": "0.2.1", "resolved": "https://registry.npmmirror.com/querystring/-/querystring-0.2.1.tgz", @@ -3204,6 +3646,23 @@ "resolved": "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, "rc9": { "version": "2.1.2", "resolved": "https://registry.npmmirror.com/rc9/-/rc9-2.1.2.tgz", @@ -3275,6 +3734,15 @@ "glob": "^7.1.3" } }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, "rollup": { "version": "4.24.0", "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.24.0.tgz", @@ -3371,6 +3839,15 @@ "resolved": "https://registry.npmmirror.com/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmmirror.com/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz", @@ -3448,6 +3925,11 @@ "resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" }, + "split-on-first": { + "version": "3.0.0", + "resolved": "https://registry.npmmirror.com/split-on-first/-/split-on-first-3.0.0.tgz", + "integrity": "sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==" + }, "ssf": { "version": "0.11.2", "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz", diff --git a/package.json b/package.json index d83f4e4..27a2d82 100644 --- a/package.json +++ b/package.json @@ -16,15 +16,18 @@ "@wangeditor/editor-for-vue": "^5.1.12", "axios": "^1.7.2", "compressorjs": "^1.2.1", + "crypto-browserify": "^3.12.1", "dayjs": "^1.11.13", "element-plus": "^2.9.0", "exceljs": "^4.4.0", "file-saver": "^2.0.5", "markdown-it": "^14.1.0", "mitt": "^3.0.1", + "node-fetch": "^3.3.2", "openai": "^4.89.0", "pinia": "^2.0.35", "pinia-plugin-persistedstate": "^4.1.2", + "query-string": "^9.1.2", "querystring": "^0.2.1", "shrinkpng": "^1.2.0-beta.1", "vue": "^3.2.31", diff --git a/src/api/myAxios.ts b/src/api/myAxios.ts index 66ca6df..5d644d6 100644 --- a/src/api/myAxios.ts +++ b/src/api/myAxios.ts @@ -4,9 +4,9 @@ import router from '../router' const myAxios = axios.create({ withCredentials:true, - // baseURL: 'http://localhost:9092/api' + baseURL: 'http://localhost:9092/api' // baseURL: 'http://154.8.193.216:9093/api' //隋雨霏服务器测试环境 - baseURL: 'https://www.carboner.cn:8888/api' + // baseURL: 'https://www.carboner.cn:8888/api' // baseURL:'http://1.94.237.210:9092/api' }); // 添加请求拦截器 diff --git a/src/router/index.ts b/src/router/index.ts index 8bcf760..d8854a0 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,10 +1,10 @@ -import {createRouter, createWebHashHistory} from "vue-router"; +import {createRouter, createWebHistory} from "vue-router"; import {constantRoute } from "./routes"; import { userStore } from "@/store/userStore"; // 创建路由实例并传递 `routes` 配置 const router = createRouter({ // 4. 内部提供了 history 模式的实现。为了简单起见,我们在这里使用 hash 模式。 - history: createWebHashHistory(), + history: createWebHistory(), routes: constantRoute , // `routes: routes` 的缩写 }) //路由的请求拦截器 diff --git a/src/router/routes.ts b/src/router/routes.ts index d832a78..238169c 100644 --- a/src/router/routes.ts +++ b/src/router/routes.ts @@ -1,6 +1,10 @@ export const constantRoute = [ { path: '/', + redirect: '/login' + }, + { + path: '/login', name: 'login', component: () => import("@/views/Login.vue"), meta: { @@ -515,19 +519,9 @@ export const constantRoute = [ } ] }, - { - path: '/Test', - name: '测试页面', - component: () => import("../views/test.vue") - }, - { - path: '/Test2', - name: '测试页面2', - component: () => import("../views/test2.vue") - }, - { - path: '/Test3', - name: '测试页面3', - component: () => import("../views/excelTest.vue") - } + // { + // path: '/Test', + // name: '测试页面', + // component: () => import("@/views/test.vue") + // } ] diff --git a/src/utils/imgUpload/ImgSingleUpload.vue b/src/utils/imgUpload/ImgSingleUpload.vue index 0892010..e6a906d 100644 --- a/src/utils/imgUpload/ImgSingleUpload.vue +++ b/src/utils/imgUpload/ImgSingleUpload.vue @@ -39,7 +39,7 @@ interface Emits { const compressImage =(file: any)=> { //图片压缩方法 - // console.log('compressImage',file) + console.log('compressImage',file) return new Promise((resolve, reject) => { new Compressor(file.file, { quality: 0.2, //压缩质量,越高文件越大 diff --git a/src/views/ActivityMessageManagement/MessageCenter.vue b/src/views/ActivityMessageManagement/MessageCenter.vue index 68aabde..63d6259 100644 --- a/src/views/ActivityMessageManagement/MessageCenter.vue +++ b/src/views/ActivityMessageManagement/MessageCenter.vue @@ -48,7 +48,7 @@ <!-- 分页器 --> <div style="padding: 10px 0"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" - :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[5, 10, 15, 20]" + :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[10, 20, 30, 50]" :small="null" :disabled="null" :background="null" layout="total, sizes, prev, pager, next, jumper" :total="total"/> </div> @@ -67,7 +67,7 @@ const total = ref(0); //总页数 const idList = ref<Number[]>([]); const searchParams: any = ref({ //封装分页 current: 1, //当前页码 - pageSize: 5, //每页显示条数 + pageSize: 10, //每页显示条数 sortField: "id", //根据ID分类 sortOrder: "descend" //降序 }) diff --git a/src/views/Commodity/MerchandiseCenter.vue b/src/views/Commodity/MerchandiseCenter.vue index 2fc6663..b3bef10 100644 --- a/src/views/Commodity/MerchandiseCenter.vue +++ b/src/views/Commodity/MerchandiseCenter.vue @@ -84,7 +84,7 @@ <!-- 分页器 --> <div style="padding: 10px 0"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" - :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[5, 10, 15, 20]" + :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[10, 20, 30, 50]" :small="null" :disabled="null" :background="null" layout="total, sizes, prev, pager, next, jumper" :total="total"/> </div> @@ -104,7 +104,7 @@ const total = ref(0); //总页数 const idList = ref<Number[]>([]); const searchParams: any = ref({ //封装分页 current: 1, //当前页码 - pageSize: 5, //每页显示条数 + pageSize: 10, //每页显示条数 sortField: "id", //根据ID分类 sortOrder: "descend" //降序 }) @@ -126,7 +126,7 @@ onMounted(() => { //页面加载时获取商品列表和分类页表 const getProductList = async () => { try { const res = await myAxios.post('/goods/list/page', {...searchParams.value}); - // console.log('res--->', res.data) + console.log('后端返回的res--->', res.data) if (res.data.code === 1) { tableData.value = res.data.data.records; total.value = parseInt(res.data.data.total) //总数据量,用于分页 diff --git a/src/views/CostumeAppointments/AppointmentOrder.vue b/src/views/CostumeAppointments/AppointmentOrder.vue index 59ab0ab..d26937f 100644 --- a/src/views/CostumeAppointments/AppointmentOrder.vue +++ b/src/views/CostumeAppointments/AppointmentOrder.vue @@ -62,7 +62,7 @@ <!-- 分页器 --> <div style="padding: 10px 0"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" - :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[5, 10, 15, 20]" + :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[10, 20, 30, 50]" :small="null" :disabled="null" :background="null" layout="total, sizes, prev, pager, next, jumper" :total="total" /> </div> @@ -84,7 +84,7 @@ const total = ref(0); const orderNumber = ref('') const searchParams: any = ref({ //封装分页 current: 1, //当前页码 - pageSize: 5, //每页显示条数 + pageSize: 10, //每页显示条数 sortField: "id", //根据ID分类 sortOrder: "descend", //降序 orderType: 'service' diff --git a/src/views/CostumeAppointments/ManagementCenter.vue b/src/views/CostumeAppointments/ManagementCenter.vue index e98d074..2eed5bf 100644 --- a/src/views/CostumeAppointments/ManagementCenter.vue +++ b/src/views/CostumeAppointments/ManagementCenter.vue @@ -115,7 +115,7 @@ <!-- 分页器 --> <div style="padding: 10px 0"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" - :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[5, 10, 15, 20]" + :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[10, 20, 30, 50]" :small="null" :disabled="null" :background="null" layout="total, sizes, prev, pager, next, jumper" :total="total" /> </div> @@ -175,7 +175,7 @@ const total = ref(0); //总页数 const idList = ref<Number[]>([]); //用于批量删除 const searchParams: any = ref({ //封装分页 current: 1, //当前页码 - pageSize: 5, //每页显示条数 + pageSize: 10, //每页显示条数 sortField: "id", //根据ID分类 sortOrder: "descend" //降序 }) diff --git a/src/views/Coupons/CouponCenter.vue b/src/views/Coupons/CouponCenter.vue index 163c19f..912142e 100644 --- a/src/views/Coupons/CouponCenter.vue +++ b/src/views/Coupons/CouponCenter.vue @@ -61,7 +61,7 @@ <!-- 分页--> <div style="padding: 10px 0"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" - :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[5, 10, 15, 20]" + :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[10, 20, 30, 50]" :small="null" :disabled="null" :background="null" layout="total, sizes, prev, pager, next, jumper" :total="total" /> </div> @@ -126,7 +126,7 @@ const editForm : any = ref({}) const disabled = ref(true) const searchParams: any = ref({ //分页 current: 1, - pageSize: 5, + pageSize: 10, sortField: "id", //根据ID分类 sortOrder: "descend" //降序 }) diff --git a/src/views/Login.vue b/src/views/Login.vue index 85c8bb5..f68f0bf 100644 --- a/src/views/Login.vue +++ b/src/views/Login.vue @@ -46,7 +46,7 @@ import {onMounted, onUnmounted, ref} from 'vue' import { SuccessInfo, ErrorInfo, WarnInfo, CommInfo } from '@/utils/messageInfo'; import {useRouter} from 'vue-router' import myAxios from '@/api/myAxios'; -import { userStore } from '../store/userStore'; +import { userStore } from '@/store/userStore'; import { User , Lock} from '@element-plus/icons-vue' const user = ref({}) @@ -75,6 +75,10 @@ const Login = async ()=>{ ErrorInfo('检查账号或密码是否成功填写') return; } + if(password.value.length < 6) { + ErrorInfo('密码过短,请重新填写') + return; + } const res: any = await myAxios.post("/user/login",{ userAccount: username.value, userPassword: password.value diff --git a/src/views/Orders/OrderList.vue b/src/views/Orders/OrderList.vue index 74de77f..13eb4a5 100644 --- a/src/views/Orders/OrderList.vue +++ b/src/views/Orders/OrderList.vue @@ -20,7 +20,7 @@ <el-table v-loading="loading" :data="tableData" border stripe header-cell-class-name="headerBg" :cell-style="{ 'text-align': 'center', 'font-size': '16px' }" @selection-change="handleSelectionChange" :header-cell-style="{ 'text-align': 'center' }" :row-style="{ height: '70px' }"> - <el-table-column type="selection" width="55" fixed="left"></el-table-column> +<!-- <el-table-column type="selection" width="55" fixed="left"></el-table-column>--> <el-table-column prop="id" label="订单序号" width="80"> <template #default="{ $index }"> {{ $index + 1 }} @@ -95,7 +95,7 @@ <!-- 分页器 --> <div style="padding: 10px 0"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" - :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[5, 10, 15, 20]" + :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[10, 20, 30, 50]" :small="null" :disabled="null" :background="null" layout="total, sizes, prev, pager, next, jumper" :total="total" /> </div> @@ -201,7 +201,7 @@ const shipments = ref(false) const orderNumber = ref('') const searchParams: any = ref({ //封装分页 current: 1, //当前页码 - pageSize: 5, //每页显示条数 + pageSize: 10, //每页显示条数 sortField: "id", //根据ID分类 sortOrder: "descend", //降序 orderType: "product" diff --git a/src/views/Orders/PendingServiceOrderList.vue b/src/views/Orders/PendingServiceOrderList.vue index 7252ab7..570e6be 100644 --- a/src/views/Orders/PendingServiceOrderList.vue +++ b/src/views/Orders/PendingServiceOrderList.vue @@ -25,7 +25,7 @@ <el-table v-loading="loading" :data="tableData" border stripe header-cell-class-name="headerBg" :cell-style="{ 'text-align': 'center', 'font-size': '16px' }" @selection-change="handleSelectionChange" :header-cell-style="{ 'text-align': 'center' }" :row-style="{ height: '70px' }"> - <el-table-column type="selection" width="55" fixed="left"></el-table-column> +<!-- <el-table-column type="selection" width="55" fixed="left"></el-table-column>--> <el-table-column prop="id" label="待处理订单序号" width="80"> <template #default="{ $index }"> {{ $index + 1 }} @@ -82,7 +82,7 @@ <!-- 分页器 --> <div style="padding: 10px 0"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" - :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[5, 10, 15, 20]" + :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[10, 20, 30, 50]" :small="null" :disabled="null" :background="null" layout="total, sizes, prev, pager, next, jumper" :total="totalPage" /> </div> @@ -153,7 +153,7 @@ const reservationDate = ref('') const timeSlot = ref('') const searchParams: any = ref({ //封装分页 current: 1, //当前页码 - pageSize: 5, //每页显示条数 + pageSize: 10, //每页显示条数 sortField: "id", sortOrder: "descend", //降序 }) diff --git a/src/views/Orders/ServiceOrderList.vue b/src/views/Orders/ServiceOrderList.vue index 040413e..50929c8 100644 --- a/src/views/Orders/ServiceOrderList.vue +++ b/src/views/Orders/ServiceOrderList.vue @@ -20,7 +20,7 @@ <el-table v-loading="loading" :data="tableData" border stripe header-cell-class-name="headerBg" :cell-style="{ 'text-align': 'center', 'font-size': '16px' }" @selection-change="handleSelectionChange" :header-cell-style="{ 'text-align': 'center' }" :row-style="{ height: '70px' }"> - <el-table-column type="selection" width="55" fixed="left"></el-table-column> +<!-- <el-table-column type="selection" width="55" fixed="left"></el-table-column>--> <el-table-column prop="id" label="订单序号" width="80"> <template #default="{ $index }"> {{ $index + 1 }} @@ -88,7 +88,7 @@ <!-- 分页器 --> <div style="padding: 10px 0"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" - :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[5, 10, 15, 20]" + :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[10, 20, 30, 50]" :small="null" :disabled="null" :background="null" layout="total, sizes, prev, pager, next, jumper" :total="total" /> </div> @@ -108,7 +108,7 @@ const total = ref(0); const orderNumber = ref('') const searchParams: any = ref({ //封装分页 current: 1, //当前页码 - pageSize: 5, //每页显示条数 + pageSize: 10, //每页显示条数 sortField: "id", //根据ID分类 sortOrder: "descend", //降序 orderType: 'service' diff --git a/src/views/OtherManagement/CourseCarouseCenter.vue b/src/views/OtherManagement/CourseCarouseCenter.vue index cb9779b..64d3e76 100644 --- a/src/views/OtherManagement/CourseCarouseCenter.vue +++ b/src/views/OtherManagement/CourseCarouseCenter.vue @@ -47,7 +47,7 @@ <el-pagination :current-page="searchParams.current" :page-size="searchParams.pageSize" - :page-sizes="[2, 5, 10, 20]" + :page-sizes="[10, 20, 30, 50]" @size-change="handleSizeChange" @current-change="handleCurrentChange" :small="null" @@ -108,7 +108,7 @@ const searchParams: any = ref({ //当前页码 current: 1, //每页显示条数 - pageSize: 5, + pageSize: 10, //轮播图类别 type: '服务类', sortOrder: 'descend' diff --git a/src/views/OtherManagement/EntityCarouseCenter.vue b/src/views/OtherManagement/EntityCarouseCenter.vue index 8b5c135..a0885d6 100644 --- a/src/views/OtherManagement/EntityCarouseCenter.vue +++ b/src/views/OtherManagement/EntityCarouseCenter.vue @@ -46,7 +46,7 @@ <el-pagination :current-page="searchParams.current" :page-size="searchParams.pageSize" - :page-sizes="[2, 5, 10, 20]" + :page-sizes="[10, 20, 30, 50]" @size-change="handleSizeChange" @current-change="handleCurrentChange" :small="null" @@ -108,7 +108,7 @@ const searchParams: any = ref({ //当前页码 current: 1, //每页显示条数 - pageSize: 5, + pageSize: 10, //轮播图类别 type: '实体类', sortOrder: 'descend' diff --git a/src/views/OutfitLease/LeaseOutfitCenter.vue b/src/views/OutfitLease/LeaseOutfitCenter.vue index f1a1dd8..876c99e 100644 --- a/src/views/OutfitLease/LeaseOutfitCenter.vue +++ b/src/views/OutfitLease/LeaseOutfitCenter.vue @@ -96,7 +96,7 @@ <!-- 分页器 --> <div style="padding: 10px 0"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" - :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[5, 10, 15, 20]" + :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[10, 20, 30, 50]" :small="null" :disabled="null" :background="null" layout="total, sizes, prev, pager, next, jumper" :total="total"/> </div> @@ -116,7 +116,7 @@ const total = ref(0); //总页数 const idList = ref<Number[]>([]); const searchParams: any = ref({ //封装分页 current: 1, //当前页码 - pageSize: 5, //每页显示条数 + pageSize: 10, //每页显示条数 sortField: "id", //根据ID分类 sortOrder: "descend" //降序 }) diff --git a/src/views/OutfitLease/OutfitLeaseOrderCenter.vue b/src/views/OutfitLease/OutfitLeaseOrderCenter.vue index b8f215e..9931e75 100644 --- a/src/views/OutfitLease/OutfitLeaseOrderCenter.vue +++ b/src/views/OutfitLease/OutfitLeaseOrderCenter.vue @@ -83,7 +83,7 @@ <!-- 分页器 --> <div style="padding: 10px 0"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" - :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[5, 10, 15, 20]" + :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[10, 20, 30, 50]" :small="null" :disabled="null" :background="null" layout="total, sizes, prev, pager, next, jumper" :total="total" /> </div> @@ -104,7 +104,7 @@ const total = ref(0); const orderNumber = ref('') const searchParams: any = ref({ //封装分页 current: 1, //当前页码 - pageSize: 5, //每页显示条数 + pageSize: 10, //每页显示条数 sortField: "id", //根据ID分类 sortOrder: "descend", //降序 }) diff --git a/src/views/Refund/Refund.vue b/src/views/Refund/Refund.vue index 0a1d731..82c06c4 100644 --- a/src/views/Refund/Refund.vue +++ b/src/views/Refund/Refund.vue @@ -32,7 +32,7 @@ <!-- 分页器 --> <div style="padding: 10px 0"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" - :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[5, 10, 15, 20]" + :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[10, 20, 30, 50]" :small="null" :disabled="null" :background="null" layout="total, sizes, prev, pager, next, jumper" :total="total" /> </div> @@ -46,7 +46,7 @@ const total = ref(0); //总页数 const outTradeNo = ref(''); const searchParams: any = ref({ //封装分页 current: 1, //当前页码 - pageSize: 5, //每页显示条数 + pageSize: 10, //每页显示条数 sortField: "id", //根据ID分类 sortOrder: "descend", //降序 outTradeNo: outTradeNo.value diff --git a/src/views/ServiceType/ProductCenter.vue b/src/views/ServiceType/ProductCenter.vue index 34699a9..2124a9f 100644 --- a/src/views/ServiceType/ProductCenter.vue +++ b/src/views/ServiceType/ProductCenter.vue @@ -109,7 +109,7 @@ <!-- 分页器 --> <div style="padding: 10px 0"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" - :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[5, 10, 15, 20]" + :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[10, 20, 30, 50]" :small="null" :disabled="null" :background="null" layout="total, sizes, prev, pager, next, jumper" :total="total" /> </div> @@ -189,7 +189,7 @@ const total = ref(0); //总页数 const idList = ref<Number[]>([]); //用于批量删除 const searchParams: any = ref({ //封装分页 current: 1, //当前页码 - pageSize: 5, //每页显示条数 + pageSize: 10, //每页显示条数 sortField: "id", //根据ID分类 sortOrder: "descend" //降序 }) diff --git a/src/views/User/UserManagement.vue b/src/views/User/UserManagement.vue index da85a32..507420d 100644 --- a/src/views/User/UserManagement.vue +++ b/src/views/User/UserManagement.vue @@ -8,7 +8,7 @@ </div> <el-table :data="tableData" border stripe header-cell-class-name="headerBg" :cell-style="{ textAlign: 'center' }" @selection-change="handleSelectionChange" :header-cell-style="{ 'text-align': 'center' }"> - <el-table-column type="selection" width="55"></el-table-column> +<!-- <el-table-column type="selection" width="55"></el-table-column>--> <el-table-column prop="id" label="序号" width="50"> <template #default="{ $index }"> {{ $index + 1 }} @@ -32,7 +32,7 @@ </el-table> <!-- 分页查询 --> <div style="padding: 10px 0"> - <el-pagination :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[2, 5, 10, 20]" + <el-pagination :current-page="searchParams.current" :page-size="searchParams.pageSize" :page-sizes="[10, 20, 30, 50]" @size-change="handleSizeChange" @current-change="handleCurrentChange" :small="null" background layout="total, sizes, prev, pager, next, jumper" :total="total" /> </div> @@ -55,7 +55,7 @@ const searchParams: any = ref({ //当前页码 current: 1, //每页显示条数 - pageSize: 5 + pageSize: 10 }) const reload: any = inject("reload") //导入组件刷新 const router = useRouter() diff --git a/src/views/test.vue b/src/views/test.vue index fd732af..d006edb 100644 --- a/src/views/test.vue +++ b/src/views/test.vue @@ -1,143 +1,10 @@ <template> - <view class="container"> - <!-- 聊天记录展示 --> - <scroll-view scroll-y class="chat-list" :style="{ height: chatHeight + 'px' }"> - <view v-for="(msg, index) in messages" :key="index" class="message-item"> - <view :class="msg.isUser ? 'message-user' : 'message-other'"> - {{ msg.text }} - </view> - </view> - </scroll-view> - - <!-- 输入框和发送按钮 --> - <view class="input-area"> - <input - v-model="newMessage" - class="input-box" - placeholder="请输入消息" - @confirm="sendMessage" - /> - <button class="send-btn" @click="sendMessage">发送</button> - </view> - </view> +test </template> <script> -import { ref, reactive, onMounted } from 'vue'; -export default { - setup() { - // 响应式数据 - const newMessage = ref(''); // 用户输入的消息 - const messages = reactive([]); // 消息数组 - const chatHeight = ref(0); // 动态调整聊天区域高度 - - // 页面加载时加载历史消息 - onMounted(() => { - loadMessages(); - setChatHeight(); - }); - - // 发送消息 - const sendMessage = () => { - if (newMessage.value.trim() === '') return; - - // 添加用户消息 - messages.push({ text: newMessage.value, isUser: true }); - saveMessages(); - - // 模拟对方回复 - setTimeout(() => { - const response = '这是一条自动回复消息'; - messages.push({ text: response, isUser: false }); - saveMessages(); - }, 1000); - - // 清空输入框 - newMessage.value = ''; - }; - - // 加载历史消息 - const loadMessages = () => { - const savedMessages = uni.getStorageSync('chatMessages'); - if (savedMessages) { - messages.push(...JSON.parse(savedMessages)); - } - }; - - // 保存消息 - const saveMessages = () => { - uni.setStorageSync('chatMessages', JSON.stringify(messages)); - }; - - // 设置聊天区域高度 - const setChatHeight = () => { - const systemInfo = uni.getSystemInfoSync(); - chatHeight.value = systemInfo.windowHeight - 150; // 留出底部输入框的位置 - }; - - return { - newMessage, - messages, - chatHeight, - sendMessage - }; - } -}; </script> <style scoped> -.container { - display: flex; - flex-direction: column; - height: 100vh; -} - -.chat-list { - flex: 1; - padding: 10px; - background-color: #f0f0f0; -} - -.message-item { - margin-bottom: 10px; -} - -.message-user { - background-color: #007aff; - color: white; - padding: 10px; - border-radius: 10px; - text-align: right; -} - -.message-other { - background-color: #e5e5e5; - color: black; - padding: 10px; - border-radius: 10px; -} - -.input-area { - display: flex; - padding: 10px; - background-color: #fff; - align-items: center; -} - -.input-box { - flex: 1; - height: 40px; - padding: 0 10px; - border-radius: 20px; - border: 1px solid #ddd; -} - -.send-btn { - background-color: #007aff; - color: white; - padding: 10px 20px; - border-radius: 20px; - margin-left: 10px; -} </style> diff --git a/src/views/test2.vue b/src/views/test2.vue deleted file mode 100644 index 16628bc..0000000 --- a/src/views/test2.vue +++ /dev/null @@ -1,110 +0,0 @@ -import { saveAs } from "file-saver"; -import ExcelJS from "exceljs"; - -// 用于将图片转换为 Base64 编码 -function getBase64Image(url) { -return new Promise((resolve, reject) => { -const img = new Image(); -img.crossOrigin = 'Anonymous'; // 允许跨域获取 -img.onload = () => { -const canvas = document.createElement('canvas'); -const ctx = canvas.getContext('2d'); -canvas.height = img.height; -canvas.width = img.width; -ctx.drawImage(img, 0, 0); -const dataURL = canvas.toDataURL('image/png'); -resolve(dataURL); -}; -img.onerror = (error) => reject(error); -img.src = url; -}); -} - -export const serviceOrderList = (tableData, downloadUrl) => { -const workbook = new ExcelJS.Workbook(); -const worksheet = workbook.addWorksheet('Order Details'); - -// 设置列标题 -worksheet.columns = [ -{ header: '订单序号', key: 'index', width: 10 }, -{ header: '订单编号', key: 'orderNumber', width: 30 }, -{ header: '下单时间', key: 'createTime', width: 20 }, -{ header: '用户名', key: 'userName', width: 15 }, -{ header: '所购买的商品', key: 'goodName', width: 30 }, -{ header: '商品图片', key: 'goodImg', width: 20 }, -{ header: '商品类别', key: 'type', width: 20 }, -{ header: '商品单价', key: 'price', width: 15 }, -{ header: '数量', key: 'quantity', width: 10 }, -{ header: '总价', key: 'itemTotalAmount', width: 15 }, -{ header: '预约日期', key: 'reservationDate', width: 15 }, -{ header: '预约时间段', key: 'timeSlot', width: 15 }, -{ header: '联系人姓名', key: 'contactName', width: 20 }, -{ header: '联系人手机号', key: 'contactPhone', width: 20 }, -{ header: '订单实付金额', key: 'totalAmount', width: 20 }, -{ header: '订单状态', key: 'orderStatus', width: 20 }, -]; - -// 遍历 tableData 并填充数据 -tableData.forEach((order, index) => { -// 展平每个订单的数据 -order.orderItemList.forEach(async (item) => { -// 订单每个商品的行 -const row = worksheet.addRow({ -index: index + 1, -orderNumber: order.orderNumber, -createTime: order.createTime, -userName: order.userName, -goodName: item.goodSnapshot.name, -goodImg: item.goodSnapshot.goodImg.split(';')[0], // 提取商品图片路径 -type: item.goodSnapshot.type, -price: item.goodSnapshot.price, -quantity: item.quantity, -itemTotalAmount: item.itemTotalAmount, -reservationDate: item.reservationDate, -timeSlot: item.timeSlot, -contactName: order.contactsSnapshot.name, -contactPhone: order.contactsSnapshot.phone, -totalAmount: order.totalAmount, -orderStatus: order.orderStatus, -}); - -// 获取商品图片的 Base64 编码 -try { -const imageUrl = 'https://www.carboner.cn:8888/api/file/downloadFile?objectKey=' + row.getCell('goodImg').value; -const base64Image = await getBase64Image(imageUrl); - -// 将 Base64 图片添加到 Excel -const imageId = workbook.addImage({ -base64: base64Image, -extension: 'png', -}); - -// 设置图片在 Excel 单元格中的显示 -worksheet.getRow(row.number).getCell('goodImg').value = { type: 'image', imageId }; -worksheet.getRow(row.number).getCell('goodImg').style = { -alignment: { vertical: 'middle', horizontal: 'center' }, -}; -} catch (error) { -console.error('图片转换失败', error); -} -}); -}); - -// 自适应列宽 -worksheet.columns.forEach((column) => { -let maxLength = 0; -column.eachCell({ includeEmpty: true }, (cell) => { -const cellValue = cell.value ? String(cell.value) : ''; // 确保空值也处理 -maxLength = Math.max(maxLength, cellValue.length); -}); - -// 设置列宽,确保列宽适应最大值 -column.width = maxLength + 2; // 留出额外的空间 -}); - -// 导出为 Excel 文件 -workbook.xlsx.writeBuffer().then((buffer) => { -const blob = new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }); -saveAs(blob, '订单信息.xlsx'); -}); -}; diff --git a/vite.config.ts b/vite.config.ts index c30c9f9..7860bd3 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -24,3 +24,4 @@ export default defineConfig({ // } // }, }) +