hookehuyr

feat: 添加微信支付和调试功能,配置环境变量和代理

- 添加微信支付相关API和配置
- 引入vconsole实现调试功能
- 配置环境变量文件(.env, .env.development, .env.production)
- 添加代理配置和工具函数
- 更新依赖包以支持新功能
1 +# port
2 +VITE_PORT = 8206
3 +
4 +# 反向代理服务器地址
5 +VITE_PROXY_TARGET = https://oa.onwall.cn
6 +
7 +# API请求前缀
8 +VITE_PROXY_PREFIX = /srv/
9 +
10 +# 打包输出文件夹名称
11 +VITE_OUTDIR = sku_request
12 +
13 +# 是否开启调试
14 +VITE_CONSOLE = 0
15 +
16 +# appID相关
17 +VITE_APPID=微信appID
1 +# 资源公共路径
2 +VITE_BASE = /
3 +
4 +# 测试open-id
5 +# VITE_OPENID = api-test-openid
6 +# VITE_OPENID = o8BRf1gLDWieH3Y3JvbrI_4IjaME
7 +# VITE_OPENID = oJLZq5t9PIKLW9tm1oSUNAuPwssA
8 +# VITE_OPENID = oJLZq5uT_6GwIh2tQWh1F9IoHZ3U
9 +VITE_OPENID =
10 +
11 +# B端账号
12 +VITE_ID = 13761653761
13 +
14 +# 验证码
15 +VITE_PIN =
16 +
17 +# 反向代理服务器地址
18 +# VITE_PROXY_TARGET = https://oa.anxinchashi.com/
19 +VITE_PROXY_TARGET = http://oa-dev.onwall.cn
20 +# VITE_PROXY_TARGET = https://www.wxgzjs.cn/
21 +
22 +# PC端地址
23 +VITE_MOBILE_URL = http://localhost:5173/
1 +###
2 +# 资源公共路径
3 +VITE_BASE = /f/main/sku_request/
4 +
5 +# 测试open-id
6 +VITE_APP_OPENID =
7 +
8 +# B端账号
9 +VITE_APP_ID =
10 +
11 +# 验证码
12 +VITE_APP_PIN =
13 +
14 +# 反向代理服务器地址
15 +VITE_PROXY_TARGET = http://oa.onwall.cn
16 +
17 +# PC端地址
18 +# VITE_MOBILE_URL = http://oa.onwall.cn/f/guanzong/web/
19 +# VITE_MOBILE_URL = http://guanzong.onwall.cn/f/guanzong/web/
1 +{
2 + "globals": {
3 + "Component": true,
4 + "ComponentPublicInstance": true,
5 + "ComputedRef": true,
6 + "DirectiveBinding": true,
7 + "EffectScope": true,
8 + "ExtractDefaultPropTypes": true,
9 + "ExtractPropTypes": true,
10 + "ExtractPublicPropTypes": true,
11 + "InjectionKey": true,
12 + "MaybeRef": true,
13 + "MaybeRefOrGetter": true,
14 + "PropType": true,
15 + "Ref": true,
16 + "VNode": true,
17 + "WritableComputedRef": true,
18 + "computed": true,
19 + "createApp": true,
20 + "customRef": true,
21 + "defineAsyncComponent": true,
22 + "defineComponent": true,
23 + "effectScope": true,
24 + "getCurrentInstance": true,
25 + "getCurrentScope": true,
26 + "h": true,
27 + "inject": true,
28 + "isProxy": true,
29 + "isReactive": true,
30 + "isReadonly": true,
31 + "isRef": true,
32 + "markRaw": true,
33 + "nextTick": true,
34 + "onActivated": true,
35 + "onBeforeMount": true,
36 + "onBeforeRouteLeave": true,
37 + "onBeforeRouteUpdate": true,
38 + "onBeforeUnmount": true,
39 + "onBeforeUpdate": true,
40 + "onDeactivated": true,
41 + "onErrorCaptured": true,
42 + "onMounted": true,
43 + "onRenderTracked": true,
44 + "onRenderTriggered": true,
45 + "onScopeDispose": true,
46 + "onServerPrefetch": true,
47 + "onUnmounted": true,
48 + "onUpdated": true,
49 + "onWatcherCleanup": true,
50 + "provide": true,
51 + "reactive": true,
52 + "readonly": true,
53 + "ref": true,
54 + "resolveComponent": true,
55 + "shallowReactive": true,
56 + "shallowReadonly": true,
57 + "shallowRef": true,
58 + "toRaw": true,
59 + "toRef": true,
60 + "toRefs": true,
61 + "toValue": true,
62 + "triggerRef": true,
63 + "unref": true,
64 + "useAttrs": true,
65 + "useCssModule": true,
66 + "useCssVars": true,
67 + "useId": true,
68 + "useLink": true,
69 + "useModel": true,
70 + "useRoute": true,
71 + "useRouter": true,
72 + "useSlots": true,
73 + "useTemplateRef": true,
74 + "watch": true,
75 + "watchEffect": true,
76 + "watchPostEffect": true,
77 + "watchSyncEffect": true
78 + }
79 +}
1 +export function createProxy(prefix, target) {
2 + const ret = {};
3 + ret[prefix] = {
4 + target,
5 + changeOrigin: true,
6 + ws: true,
7 + // rewrite: (path) => path.replace(/^\/api/, '')
8 + // rewrite: (path) => path.replace(new RegExp(`^${prefix}`), ''),
9 + }
10 + return ret
11 +}
...@@ -10,15 +10,19 @@ ...@@ -10,15 +10,19 @@
10 "dependencies": { 10 "dependencies": {
11 "@vant/use": "^1.6.0", 11 "@vant/use": "^1.6.0",
12 "vant": "^4.9.18", 12 "vant": "^4.9.18",
13 + "vconsole": "^3.15.1",
13 "vue": "^3.5.13", 14 "vue": "^3.5.13",
14 - "vue-router": "^4.5.0" 15 + "vue-router": "^4.5.0",
16 + "weixin-js-sdk": "^1.6.5"
15 }, 17 },
16 "devDependencies": { 18 "devDependencies": {
17 "@vitejs/plugin-vue": "^5.2.1", 19 "@vitejs/plugin-vue": "^5.2.1",
18 "@vitejs/plugin-vue-jsx": "^4.1.2", 20 "@vitejs/plugin-vue-jsx": "^4.1.2",
19 "@vueuse/core": "^13.0.0", 21 "@vueuse/core": "^13.0.0",
20 "autoprefixer": "^10.4.19", 22 "autoprefixer": "^10.4.19",
23 + "axios": "^1.8.4",
21 "postcss": "^8.4.35", 24 "postcss": "^8.4.35",
25 + "qs": "^6.14.0",
22 "tailwindcss": "^3.4.1", 26 "tailwindcss": "^3.4.1",
23 "unplugin-auto-import": "^19.1.1", 27 "unplugin-auto-import": "^19.1.1",
24 "unplugin-vue-components": "^28.4.1", 28 "unplugin-vue-components": "^28.4.1",
...@@ -372,6 +376,17 @@ ...@@ -372,6 +376,17 @@
372 "@babel/core": "^7.0.0-0" 376 "@babel/core": "^7.0.0-0"
373 } 377 }
374 }, 378 },
379 + "node_modules/@babel/runtime": {
380 + "version": "7.26.10",
381 + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz",
382 + "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==",
383 + "dependencies": {
384 + "regenerator-runtime": "^0.14.0"
385 + },
386 + "engines": {
387 + "node": ">=6.9.0"
388 + }
389 + },
375 "node_modules/@babel/template": { 390 "node_modules/@babel/template": {
376 "version": "7.26.9", 391 "version": "7.26.9",
377 "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", 392 "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz",
...@@ -1500,6 +1515,12 @@ ...@@ -1500,6 +1515,12 @@
1500 "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", 1515 "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
1501 "dev": true 1516 "dev": true
1502 }, 1517 },
1518 + "node_modules/asynckit": {
1519 + "version": "0.4.0",
1520 + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
1521 + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
1522 + "dev": true
1523 + },
1503 "node_modules/autoprefixer": { 1524 "node_modules/autoprefixer": {
1504 "version": "10.4.19", 1525 "version": "10.4.19",
1505 "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", 1526 "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz",
...@@ -1537,6 +1558,17 @@ ...@@ -1537,6 +1558,17 @@
1537 "postcss": "^8.1.0" 1558 "postcss": "^8.1.0"
1538 } 1559 }
1539 }, 1560 },
1561 + "node_modules/axios": {
1562 + "version": "1.8.4",
1563 + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz",
1564 + "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==",
1565 + "dev": true,
1566 + "dependencies": {
1567 + "follow-redirects": "^1.15.6",
1568 + "form-data": "^4.0.0",
1569 + "proxy-from-env": "^1.1.0"
1570 + }
1571 + },
1540 "node_modules/balanced-match": { 1572 "node_modules/balanced-match": {
1541 "version": "1.0.2", 1573 "version": "1.0.2",
1542 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1574 "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
...@@ -1608,6 +1640,35 @@ ...@@ -1608,6 +1640,35 @@
1608 "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" 1640 "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
1609 } 1641 }
1610 }, 1642 },
1643 + "node_modules/call-bind-apply-helpers": {
1644 + "version": "1.0.2",
1645 + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
1646 + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
1647 + "dev": true,
1648 + "dependencies": {
1649 + "es-errors": "^1.3.0",
1650 + "function-bind": "^1.1.2"
1651 + },
1652 + "engines": {
1653 + "node": ">= 0.4"
1654 + }
1655 + },
1656 + "node_modules/call-bound": {
1657 + "version": "1.0.4",
1658 + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
1659 + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
1660 + "dev": true,
1661 + "dependencies": {
1662 + "call-bind-apply-helpers": "^1.0.2",
1663 + "get-intrinsic": "^1.3.0"
1664 + },
1665 + "engines": {
1666 + "node": ">= 0.4"
1667 + },
1668 + "funding": {
1669 + "url": "https://github.com/sponsors/ljharb"
1670 + }
1671 + },
1611 "node_modules/camelcase-css": { 1672 "node_modules/camelcase-css": {
1612 "version": "2.0.1", 1673 "version": "2.0.1",
1613 "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", 1674 "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
...@@ -1691,6 +1752,18 @@ ...@@ -1691,6 +1752,18 @@
1691 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1752 "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1692 "dev": true 1753 "dev": true
1693 }, 1754 },
1755 + "node_modules/combined-stream": {
1756 + "version": "1.0.8",
1757 + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
1758 + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
1759 + "dev": true,
1760 + "dependencies": {
1761 + "delayed-stream": "~1.0.0"
1762 + },
1763 + "engines": {
1764 + "node": ">= 0.8"
1765 + }
1766 + },
1694 "node_modules/commander": { 1767 "node_modules/commander": {
1695 "version": "4.1.1", 1768 "version": "4.1.1",
1696 "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", 1769 "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
...@@ -1712,6 +1785,27 @@ ...@@ -1712,6 +1785,27 @@
1712 "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", 1785 "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
1713 "dev": true 1786 "dev": true
1714 }, 1787 },
1788 + "node_modules/copy-text-to-clipboard": {
1789 + "version": "3.2.0",
1790 + "resolved": "https://registry.npmjs.org/copy-text-to-clipboard/-/copy-text-to-clipboard-3.2.0.tgz",
1791 + "integrity": "sha512-RnJFp1XR/LOBDckxTib5Qjr/PMfkatD0MUCQgdpqS8MdKiNUzBjAQBEN6oUy+jW7LI93BBG3DtMB2KOOKpGs2Q==",
1792 + "engines": {
1793 + "node": ">=12"
1794 + },
1795 + "funding": {
1796 + "url": "https://github.com/sponsors/sindresorhus"
1797 + }
1798 + },
1799 + "node_modules/core-js": {
1800 + "version": "3.41.0",
1801 + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.41.0.tgz",
1802 + "integrity": "sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==",
1803 + "hasInstallScript": true,
1804 + "funding": {
1805 + "type": "opencollective",
1806 + "url": "https://opencollective.com/core-js"
1807 + }
1808 + },
1715 "node_modules/cross-spawn": { 1809 "node_modules/cross-spawn": {
1716 "version": "7.0.6", 1810 "version": "7.0.6",
1717 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 1811 "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
...@@ -1760,6 +1854,15 @@ ...@@ -1760,6 +1854,15 @@
1760 } 1854 }
1761 } 1855 }
1762 }, 1856 },
1857 + "node_modules/delayed-stream": {
1858 + "version": "1.0.0",
1859 + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
1860 + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
1861 + "dev": true,
1862 + "engines": {
1863 + "node": ">=0.4.0"
1864 + }
1865 + },
1763 "node_modules/didyoumean": { 1866 "node_modules/didyoumean": {
1764 "version": "1.2.2", 1867 "version": "1.2.2",
1765 "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", 1868 "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
...@@ -1772,6 +1875,20 @@ ...@@ -1772,6 +1875,20 @@
1772 "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", 1875 "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
1773 "dev": true 1876 "dev": true
1774 }, 1877 },
1878 + "node_modules/dunder-proto": {
1879 + "version": "1.0.1",
1880 + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
1881 + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
1882 + "dev": true,
1883 + "dependencies": {
1884 + "call-bind-apply-helpers": "^1.0.1",
1885 + "es-errors": "^1.3.0",
1886 + "gopd": "^1.2.0"
1887 + },
1888 + "engines": {
1889 + "node": ">= 0.4"
1890 + }
1891 + },
1775 "node_modules/eastasianwidth": { 1892 "node_modules/eastasianwidth": {
1776 "version": "0.2.0", 1893 "version": "0.2.0",
1777 "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 1894 "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
...@@ -1801,6 +1918,51 @@ ...@@ -1801,6 +1918,51 @@
1801 "url": "https://github.com/fb55/entities?sponsor=1" 1918 "url": "https://github.com/fb55/entities?sponsor=1"
1802 } 1919 }
1803 }, 1920 },
1921 + "node_modules/es-define-property": {
1922 + "version": "1.0.1",
1923 + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
1924 + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
1925 + "dev": true,
1926 + "engines": {
1927 + "node": ">= 0.4"
1928 + }
1929 + },
1930 + "node_modules/es-errors": {
1931 + "version": "1.3.0",
1932 + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
1933 + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
1934 + "dev": true,
1935 + "engines": {
1936 + "node": ">= 0.4"
1937 + }
1938 + },
1939 + "node_modules/es-object-atoms": {
1940 + "version": "1.1.1",
1941 + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
1942 + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
1943 + "dev": true,
1944 + "dependencies": {
1945 + "es-errors": "^1.3.0"
1946 + },
1947 + "engines": {
1948 + "node": ">= 0.4"
1949 + }
1950 + },
1951 + "node_modules/es-set-tostringtag": {
1952 + "version": "2.1.0",
1953 + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
1954 + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
1955 + "dev": true,
1956 + "dependencies": {
1957 + "es-errors": "^1.3.0",
1958 + "get-intrinsic": "^1.2.6",
1959 + "has-tostringtag": "^1.0.2",
1960 + "hasown": "^2.0.2"
1961 + },
1962 + "engines": {
1963 + "node": ">= 0.4"
1964 + }
1965 + },
1804 "node_modules/esbuild": { 1966 "node_modules/esbuild": {
1805 "version": "0.25.1", 1967 "version": "0.25.1",
1806 "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz", 1968 "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz",
...@@ -1922,6 +2084,26 @@ ...@@ -1922,6 +2084,26 @@
1922 "node": ">=8" 2084 "node": ">=8"
1923 } 2085 }
1924 }, 2086 },
2087 + "node_modules/follow-redirects": {
2088 + "version": "1.15.9",
2089 + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz",
2090 + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
2091 + "dev": true,
2092 + "funding": [
2093 + {
2094 + "type": "individual",
2095 + "url": "https://github.com/sponsors/RubenVerborgh"
2096 + }
2097 + ],
2098 + "engines": {
2099 + "node": ">=4.0"
2100 + },
2101 + "peerDependenciesMeta": {
2102 + "debug": {
2103 + "optional": true
2104 + }
2105 + }
2106 + },
1925 "node_modules/foreground-child": { 2107 "node_modules/foreground-child": {
1926 "version": "3.3.1", 2108 "version": "3.3.1",
1927 "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", 2109 "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
...@@ -1938,6 +2120,21 @@ ...@@ -1938,6 +2120,21 @@
1938 "url": "https://github.com/sponsors/isaacs" 2120 "url": "https://github.com/sponsors/isaacs"
1939 } 2121 }
1940 }, 2122 },
2123 + "node_modules/form-data": {
2124 + "version": "4.0.2",
2125 + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
2126 + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
2127 + "dev": true,
2128 + "dependencies": {
2129 + "asynckit": "^0.4.0",
2130 + "combined-stream": "^1.0.8",
2131 + "es-set-tostringtag": "^2.1.0",
2132 + "mime-types": "^2.1.12"
2133 + },
2134 + "engines": {
2135 + "node": ">= 6"
2136 + }
2137 + },
1941 "node_modules/fraction.js": { 2138 "node_modules/fraction.js": {
1942 "version": "4.3.7", 2139 "version": "4.3.7",
1943 "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", 2140 "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",
...@@ -1983,6 +2180,43 @@ ...@@ -1983,6 +2180,43 @@
1983 "node": ">=6.9.0" 2180 "node": ">=6.9.0"
1984 } 2181 }
1985 }, 2182 },
2183 + "node_modules/get-intrinsic": {
2184 + "version": "1.3.0",
2185 + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
2186 + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
2187 + "dev": true,
2188 + "dependencies": {
2189 + "call-bind-apply-helpers": "^1.0.2",
2190 + "es-define-property": "^1.0.1",
2191 + "es-errors": "^1.3.0",
2192 + "es-object-atoms": "^1.1.1",
2193 + "function-bind": "^1.1.2",
2194 + "get-proto": "^1.0.1",
2195 + "gopd": "^1.2.0",
2196 + "has-symbols": "^1.1.0",
2197 + "hasown": "^2.0.2",
2198 + "math-intrinsics": "^1.1.0"
2199 + },
2200 + "engines": {
2201 + "node": ">= 0.4"
2202 + },
2203 + "funding": {
2204 + "url": "https://github.com/sponsors/ljharb"
2205 + }
2206 + },
2207 + "node_modules/get-proto": {
2208 + "version": "1.0.1",
2209 + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
2210 + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
2211 + "dev": true,
2212 + "dependencies": {
2213 + "dunder-proto": "^1.0.1",
2214 + "es-object-atoms": "^1.0.0"
2215 + },
2216 + "engines": {
2217 + "node": ">= 0.4"
2218 + }
2219 + },
1986 "node_modules/glob": { 2220 "node_modules/glob": {
1987 "version": "10.4.5", 2221 "version": "10.4.5",
1988 "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", 2222 "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
...@@ -2024,6 +2258,45 @@ ...@@ -2024,6 +2258,45 @@
2024 "node": ">=4" 2258 "node": ">=4"
2025 } 2259 }
2026 }, 2260 },
2261 + "node_modules/gopd": {
2262 + "version": "1.2.0",
2263 + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
2264 + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
2265 + "dev": true,
2266 + "engines": {
2267 + "node": ">= 0.4"
2268 + },
2269 + "funding": {
2270 + "url": "https://github.com/sponsors/ljharb"
2271 + }
2272 + },
2273 + "node_modules/has-symbols": {
2274 + "version": "1.1.0",
2275 + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
2276 + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
2277 + "dev": true,
2278 + "engines": {
2279 + "node": ">= 0.4"
2280 + },
2281 + "funding": {
2282 + "url": "https://github.com/sponsors/ljharb"
2283 + }
2284 + },
2285 + "node_modules/has-tostringtag": {
2286 + "version": "1.0.2",
2287 + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
2288 + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
2289 + "dev": true,
2290 + "dependencies": {
2291 + "has-symbols": "^1.0.3"
2292 + },
2293 + "engines": {
2294 + "node": ">= 0.4"
2295 + },
2296 + "funding": {
2297 + "url": "https://github.com/sponsors/ljharb"
2298 + }
2299 + },
2027 "node_modules/hasown": { 2300 "node_modules/hasown": {
2028 "version": "2.0.2", 2301 "version": "2.0.2",
2029 "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", 2302 "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
...@@ -2208,6 +2481,15 @@ ...@@ -2208,6 +2481,15 @@
2208 "@jridgewell/sourcemap-codec": "^1.5.0" 2481 "@jridgewell/sourcemap-codec": "^1.5.0"
2209 } 2482 }
2210 }, 2483 },
2484 + "node_modules/math-intrinsics": {
2485 + "version": "1.1.0",
2486 + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
2487 + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
2488 + "dev": true,
2489 + "engines": {
2490 + "node": ">= 0.4"
2491 + }
2492 + },
2211 "node_modules/merge2": { 2493 "node_modules/merge2": {
2212 "version": "1.4.1", 2494 "version": "1.4.1",
2213 "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 2495 "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
...@@ -2230,6 +2512,27 @@ ...@@ -2230,6 +2512,27 @@
2230 "node": ">=8.6" 2512 "node": ">=8.6"
2231 } 2513 }
2232 }, 2514 },
2515 + "node_modules/mime-db": {
2516 + "version": "1.52.0",
2517 + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
2518 + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
2519 + "dev": true,
2520 + "engines": {
2521 + "node": ">= 0.6"
2522 + }
2523 + },
2524 + "node_modules/mime-types": {
2525 + "version": "2.1.35",
2526 + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
2527 + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
2528 + "dev": true,
2529 + "dependencies": {
2530 + "mime-db": "1.52.0"
2531 + },
2532 + "engines": {
2533 + "node": ">= 0.6"
2534 + }
2535 + },
2233 "node_modules/minimatch": { 2536 "node_modules/minimatch": {
2234 "version": "9.0.5", 2537 "version": "9.0.5",
2235 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 2538 "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
...@@ -2289,6 +2592,11 @@ ...@@ -2289,6 +2592,11 @@
2289 "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2592 "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
2290 "dev": true 2593 "dev": true
2291 }, 2594 },
2595 + "node_modules/mutation-observer": {
2596 + "version": "1.0.3",
2597 + "resolved": "https://registry.npmjs.org/mutation-observer/-/mutation-observer-1.0.3.tgz",
2598 + "integrity": "sha512-M/O/4rF2h776hV7qGMZUH3utZLO/jK7p8rnNgGkjKUw8zCGjRQPxB8z6+5l8+VjRUQ3dNYu4vjqXYLr+U8ZVNA=="
2599 + },
2292 "node_modules/mz": { 2600 "node_modules/mz": {
2293 "version": "2.7.0", 2601 "version": "2.7.0",
2294 "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", 2602 "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
...@@ -2359,6 +2667,18 @@ ...@@ -2359,6 +2667,18 @@
2359 "node": ">= 6" 2667 "node": ">= 6"
2360 } 2668 }
2361 }, 2669 },
2670 + "node_modules/object-inspect": {
2671 + "version": "1.13.4",
2672 + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
2673 + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
2674 + "dev": true,
2675 + "engines": {
2676 + "node": ">= 0.4"
2677 + },
2678 + "funding": {
2679 + "url": "https://github.com/sponsors/ljharb"
2680 + }
2681 + },
2362 "node_modules/package-json-from-dist": { 2682 "node_modules/package-json-from-dist": {
2363 "version": "1.0.1", 2683 "version": "1.0.1",
2364 "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", 2684 "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
...@@ -2603,6 +2923,27 @@ ...@@ -2603,6 +2923,27 @@
2603 "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", 2923 "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
2604 "dev": true 2924 "dev": true
2605 }, 2925 },
2926 + "node_modules/proxy-from-env": {
2927 + "version": "1.1.0",
2928 + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
2929 + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
2930 + "dev": true
2931 + },
2932 + "node_modules/qs": {
2933 + "version": "6.14.0",
2934 + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz",
2935 + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==",
2936 + "dev": true,
2937 + "dependencies": {
2938 + "side-channel": "^1.1.0"
2939 + },
2940 + "engines": {
2941 + "node": ">=0.6"
2942 + },
2943 + "funding": {
2944 + "url": "https://github.com/sponsors/ljharb"
2945 + }
2946 + },
2606 "node_modules/quansync": { 2947 "node_modules/quansync": {
2607 "version": "0.2.10", 2948 "version": "0.2.10",
2608 "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.10.tgz", 2949 "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.10.tgz",
...@@ -2660,6 +3001,11 @@ ...@@ -2660,6 +3001,11 @@
2660 "node": ">=8.10.0" 3001 "node": ">=8.10.0"
2661 } 3002 }
2662 }, 3003 },
3004 + "node_modules/regenerator-runtime": {
3005 + "version": "0.14.1",
3006 + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
3007 + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
3008 + },
2663 "node_modules/resolve": { 3009 "node_modules/resolve": {
2664 "version": "1.22.10", 3010 "version": "1.22.10",
2665 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", 3011 "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
...@@ -2787,6 +3133,78 @@ ...@@ -2787,6 +3133,78 @@
2787 "node": ">=8" 3133 "node": ">=8"
2788 } 3134 }
2789 }, 3135 },
3136 + "node_modules/side-channel": {
3137 + "version": "1.1.0",
3138 + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
3139 + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
3140 + "dev": true,
3141 + "dependencies": {
3142 + "es-errors": "^1.3.0",
3143 + "object-inspect": "^1.13.3",
3144 + "side-channel-list": "^1.0.0",
3145 + "side-channel-map": "^1.0.1",
3146 + "side-channel-weakmap": "^1.0.2"
3147 + },
3148 + "engines": {
3149 + "node": ">= 0.4"
3150 + },
3151 + "funding": {
3152 + "url": "https://github.com/sponsors/ljharb"
3153 + }
3154 + },
3155 + "node_modules/side-channel-list": {
3156 + "version": "1.0.0",
3157 + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
3158 + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
3159 + "dev": true,
3160 + "dependencies": {
3161 + "es-errors": "^1.3.0",
3162 + "object-inspect": "^1.13.3"
3163 + },
3164 + "engines": {
3165 + "node": ">= 0.4"
3166 + },
3167 + "funding": {
3168 + "url": "https://github.com/sponsors/ljharb"
3169 + }
3170 + },
3171 + "node_modules/side-channel-map": {
3172 + "version": "1.0.1",
3173 + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
3174 + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
3175 + "dev": true,
3176 + "dependencies": {
3177 + "call-bound": "^1.0.2",
3178 + "es-errors": "^1.3.0",
3179 + "get-intrinsic": "^1.2.5",
3180 + "object-inspect": "^1.13.3"
3181 + },
3182 + "engines": {
3183 + "node": ">= 0.4"
3184 + },
3185 + "funding": {
3186 + "url": "https://github.com/sponsors/ljharb"
3187 + }
3188 + },
3189 + "node_modules/side-channel-weakmap": {
3190 + "version": "1.0.2",
3191 + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
3192 + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
3193 + "dev": true,
3194 + "dependencies": {
3195 + "call-bound": "^1.0.2",
3196 + "es-errors": "^1.3.0",
3197 + "get-intrinsic": "^1.2.5",
3198 + "object-inspect": "^1.13.3",
3199 + "side-channel-map": "^1.0.1"
3200 + },
3201 + "engines": {
3202 + "node": ">= 0.4"
3203 + },
3204 + "funding": {
3205 + "url": "https://github.com/sponsors/ljharb"
3206 + }
3207 + },
2790 "node_modules/signal-exit": { 3208 "node_modules/signal-exit": {
2791 "version": "4.1.0", 3209 "version": "4.1.0",
2792 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 3210 "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
...@@ -3311,6 +3729,17 @@ ...@@ -3311,6 +3729,17 @@
3311 "vue": "^3.0.0" 3729 "vue": "^3.0.0"
3312 } 3730 }
3313 }, 3731 },
3732 + "node_modules/vconsole": {
3733 + "version": "3.15.1",
3734 + "resolved": "https://registry.npmjs.org/vconsole/-/vconsole-3.15.1.tgz",
3735 + "integrity": "sha512-KH8XLdrq9T5YHJO/ixrjivHfmF2PC2CdVoK6RWZB4yftMykYIaXY1mxZYAic70vADM54kpMQF+dYmvl5NRNy1g==",
3736 + "dependencies": {
3737 + "@babel/runtime": "^7.17.2",
3738 + "copy-text-to-clipboard": "^3.0.1",
3739 + "core-js": "^3.11.0",
3740 + "mutation-observer": "^1.0.3"
3741 + }
3742 + },
3314 "node_modules/vite": { 3743 "node_modules/vite": {
3315 "version": "6.2.2", 3744 "version": "6.2.2",
3316 "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.2.tgz", 3745 "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.2.tgz",
...@@ -3450,6 +3879,11 @@ ...@@ -3450,6 +3879,11 @@
3450 "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", 3879 "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==",
3451 "dev": true 3880 "dev": true
3452 }, 3881 },
3882 + "node_modules/weixin-js-sdk": {
3883 + "version": "1.6.5",
3884 + "resolved": "https://registry.npmjs.org/weixin-js-sdk/-/weixin-js-sdk-1.6.5.tgz",
3885 + "integrity": "sha512-Gph1WAWB2YN/lMOFB/ymb+hbU/wYazzJgu6PMMktCy9cSCeW5wA6Zwt0dpahJbJ+RJEwtTv2x9iIu0U4enuVSQ=="
3886 + },
3453 "node_modules/which": { 3887 "node_modules/which": {
3454 "version": "2.0.2", 3888 "version": "2.0.2",
3455 "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 3889 "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
......
...@@ -11,15 +11,19 @@ ...@@ -11,15 +11,19 @@
11 "dependencies": { 11 "dependencies": {
12 "@vant/use": "^1.6.0", 12 "@vant/use": "^1.6.0",
13 "vant": "^4.9.18", 13 "vant": "^4.9.18",
14 + "vconsole": "^3.15.1",
14 "vue": "^3.5.13", 15 "vue": "^3.5.13",
15 - "vue-router": "^4.5.0" 16 + "vue-router": "^4.5.0",
17 + "weixin-js-sdk": "^1.6.5"
16 }, 18 },
17 "devDependencies": { 19 "devDependencies": {
18 "@vitejs/plugin-vue": "^5.2.1", 20 "@vitejs/plugin-vue": "^5.2.1",
19 "@vitejs/plugin-vue-jsx": "^4.1.2", 21 "@vitejs/plugin-vue-jsx": "^4.1.2",
20 "@vueuse/core": "^13.0.0", 22 "@vueuse/core": "^13.0.0",
21 "autoprefixer": "^10.4.19", 23 "autoprefixer": "^10.4.19",
24 + "axios": "^1.8.4",
22 "postcss": "^8.4.35", 25 "postcss": "^8.4.35",
26 + "qs": "^6.14.0",
23 "tailwindcss": "^3.4.1", 27 "tailwindcss": "^3.4.1",
24 "unplugin-auto-import": "^19.1.1", 28 "unplugin-auto-import": "^19.1.1",
25 "unplugin-vue-components": "^28.4.1", 29 "unplugin-vue-components": "^28.4.1",
......
1 <!-- 1 <!--
2 * @Date: 2025-03-20 19:53:12 2 * @Date: 2025-03-20 19:53:12
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2025-03-20 20:06:10 4 + * @LastEditTime: 2025-03-20 23:56:05
5 - * @FilePath: /vue-vite/src/App.vue 5 + * @FilePath: /mlaj/src/App.vue
6 * @Description: 文件描述 6 * @Description: 文件描述
7 --> 7 -->
8 <script setup> 8 <script setup>
9 import { RouterView } from "vue-router"; 9 import { RouterView } from "vue-router";
10 -import { provideAuth } from '@/contexts/auth'; 10 +import { provideAuth } from "@/contexts/auth";
11 -import { provideCart } from '@/contexts/cart'; 11 +import { provideCart } from "@/contexts/cart";
12 +// 会根据配置判断是否显示调试控件
13 +// eslint-disable-next-line no-unused-vars
14 +import vConsole from "@/utils/vconsole";
15 +// 初始化WX环境
16 +import wx from "weixin-js-sdk";
17 +import { wxJsAPI } from "@/api/wx/config";
18 +import { apiList } from "@/api/wx/jsApiList.js";
19 +import { wxInfo, getUrlParams, stringifyQuery } from "@/utils/tools";
12 20
13 // 提供认证和购物车上下文 21 // 提供认证和购物车上下文
14 provideAuth(); 22 provideAuth();
......
1 +/*
2 + * @Date: 2022-06-17 14:54:29
3 + * @LastEditors: hookehuyr hookehuyr@gmail.com
4 + * @LastEditTime: 2022-12-01 16:26:27
5 + * @FilePath: /data-table/src/api/common.js
6 + * @Description: 通用接口
7 + */
8 +import { fn, fetch, uploadFn } from '@/api/fn';
9 +
10 +const Api = {
11 + SMS: '/srv/?a=sms',
12 + TOKEN: '/srv/?a=upload',
13 + SAVE_FILE: '/srv/?a=upload&t=save_file',
14 +}
15 +
16 +/**
17 + * @description: 发送验证码
18 + * @param {*} phone 手机号码
19 + * @returns
20 + */
21 +export const smsAPI = (params) => fn(fetch.post(Api.SMS, params));
22 +
23 +/**
24 + * @description: 获取七牛token
25 + * @returns
26 + */
27 +export const qiniuTokenAPI = (params) => fn(fetch.stringifyPost(Api.TOKEN, params));
28 +
29 +/**
30 + * @description: 上传七牛
31 + * @param {*}
32 + * @returns
33 + */
34 +export const qiniuUploadAPI = (url, data, config) => uploadFn(fetch.basePost(url, data, config));
35 +
36 +/**
37 + * @description: 保存图片
38 + * @param {*} format
39 + * @param {*} hash
40 + * @param {*} height
41 + * @param {*} width
42 + * @param {*} filekey
43 + * @returns
44 + */
45 +export const saveFileAPI = (params) => fn(fetch.stringifyPost(Api.SAVE_FILE, params));
1 +/*
2 + * @Date: 2022-06-17 14:54:29
3 + * @LastEditors: hookehuyr hookehuyr@gmail.com
4 + * @LastEditTime: 2024-07-04 17:05:30
5 + * @FilePath: /data-table/src/api/data.js
6 + * @Description: 表单数据接口
7 + */
8 +import { fn, fetch } from '@/api/fn';
9 +
10 +const Api = {
11 + ADD_FORM_DATA: '/srv/?a=add_formdata',
12 + QUERY_FORM_DATA: '/srv/?a=query_formdata',
13 + MODI_FORM_DATA: '/srv/?a=modi_formdata',
14 + FLOW_FORM_DATA: '/srv/?a=flow_formdata',
15 +}
16 +/**
17 + * @description: 添加表单数据
18 + * @param: form_code 表单唯一标识
19 + * @param: data 待添加的数据,json对象结构;键值对记录变更的字段和值;
20 + */
21 +export const addFormDataAPI = (params) => fn(fetch.post(Api.ADD_FORM_DATA, params));
22 +
23 +/**
24 + * @description: 查询表单数据
25 + * @param: form_code 表单唯一标识
26 + * @param: id 数据ID
27 + */
28 +export const queryFormDataAPI = (params) => fn(fetch.get(Api.QUERY_FORM_DATA, params));
29 +
30 +/**
31 + * @description: 修改表单数据
32 + * @param: form_code 表单唯一标识
33 + * @param: id 数据ID
34 + * @param: data 待添加的数据,json对象结构;键值对记录变更的字段和值;
35 + */
36 +export const modiFormDataAPI = (params) => fn(fetch.post(Api.MODI_FORM_DATA, params));
37 +
38 +/**
39 + * @description: 流程表单数据
40 + * @param: form_code 表单唯一标识
41 + * @param: data_id 数据ID
42 + * @param: data 待添加的数据,json对象结构;键值对记录变更的字段和值;
43 + * @param: flow_node_code 流程节点
44 + * @param: flow_node_action_id 用户点击的流程节点按钮ID
45 + * @param: flow_content 流程审批的文本意见
46 + */
47 +export const flowFormDataAPI = (params) => fn(fetch.post(Api.FLOW_FORM_DATA, params));
1 +/*
2 + * @Date: 2022-05-18 22:56:08
3 + * @LastEditors: hookehuyr hookehuyr@gmail.com
4 + * @LastEditTime: 2023-02-10 15:13:01
5 + * @FilePath: /data-table/src/api/fn.js
6 + * @Description: 文件描述
7 + */
8 +import axios from '@/utils/axios';
9 +import qs from 'Qs'
10 +import { showSuccessToast, showFailToast } from 'vant';
11 +
12 +/**
13 + * 网络请求功能函数
14 + * @param {*} api 请求axios接口
15 + * @returns 请求成功后,获取数据
16 + */
17 +export const fn = (api) => {
18 + return api
19 + .then(res => {
20 + if (res.data.code === 1) {
21 + return res.data || true;
22 + } else {
23 + // tslint:disable-next-line: no-console
24 + // if (!res.data.show) return false;
25 + showFailToast(res.data.msg);
26 + return false;
27 + }
28 + })
29 + .catch(err => {
30 + // tslint:disable-next-line: no-console
31 + console.error(err);
32 + return false;
33 + })
34 + .finally(() => { // 最终执行
35 + })
36 +}
37 +
38 +/**
39 + * 七牛返回格式
40 + * @param {*} api
41 + * @returns
42 + */
43 +export const uploadFn = (api) => {
44 + return api
45 + .then(res => {
46 + if (res.status === 200) {
47 + return res.data || true;
48 + } else {
49 + // tslint:disable-next-line: no-console
50 + console.warn(res);
51 + if (!res.data.show) return false;
52 + Toast({
53 + icon: 'close',
54 + message: res.data.msg,
55 + });
56 + return false;
57 + }
58 + })
59 + .catch(err => {
60 + // tslint:disable-next-line: no-console
61 + console.error(err);
62 + return false;
63 + })
64 +}
65 +
66 +/**
67 + * 统一 GET/POST 不同传参形式
68 + */
69 +export const fetch = {
70 + get: function (api, params) {
71 + return axios.get(api, { params })
72 + },
73 + post: function (api, params) {
74 + return axios.post(api, params)
75 + },
76 + stringifyPost: function (api, params) {
77 + return axios.post(api, qs.stringify(params))
78 + },
79 + basePost: function (url, data, config) {
80 + return axios.post(url, data, config)
81 + }
82 +}
1 +/*
2 + * @Author: hookehuyr hookehuyr@gmail.com
3 + * @Date: 2022-06-09 13:32:44
4 + * @LastEditors: hookehuyr hookehuyr@gmail.com
5 + * @LastEditTime: 2023-02-23 18:42:57
6 + * @FilePath: /data-table/src/api/wx/config.js
7 + * @Description:
8 + */
9 +import { fn, fetch } from '@/api/fn';
10 +
11 +const Api = {
12 + WX_JSAPI: '/srv/?a=wx_share',
13 +}
14 +
15 +/**
16 + * @description 获取微信CONFIG配置文件
17 + * @param {*} url
18 + * @returns {*} cfg
19 + */
20 +export const wxJsAPI = (params) => fn(fetch.get(Api.WX_JSAPI, params));
1 +/*
2 + * @Date: 2022-06-13 14:18:57
3 + * @LastEditors: hookehuyr hookehuyr@gmail.com
4 + * @LastEditTime: 2022-06-13 14:27:21
5 + * @FilePath: /tswj/src/api/wx/jsApiList.js
6 + * @Description: 文件描述
7 + */
8 +export const apiList = [
9 + // "updateAppMessageShareData",
10 + // "updateTimelineShareData",
11 + "onMenuShareTimeline",
12 + "onMenuShareAppMessage",
13 + "onMenuShareQQ",
14 + "onMenuShareWeibo",
15 + "onMenuShareQZone",
16 + "startRecord",
17 + "stopRecord",
18 + "onVoiceRecordEnd",
19 + "playVoice",
20 + "pauseVoice",
21 + "stopVoice",
22 + "onVoicePlayEnd",
23 + "uploadVoice",
24 + "downloadVoice",
25 + "chooseImage",
26 + "previewImage",
27 + "uploadImage",
28 + "downloadImage",
29 + "translateVoice",
30 + "getNetworkType",
31 + "openLocation",
32 + "getLocation",
33 + "hideOptionMenu",
34 + "showOptionMenu",
35 + "hideMenuItems",
36 + "showMenuItems",
37 + "hideAllNonBaseMenuItem",
38 + "showAllNonBaseMenuItem",
39 + "closeWindow",
40 + "scanQRCode",
41 + "chooseWXPay",
42 + "openProductSpecificView",
43 + "addCard",
44 + "chooseCard",
45 + "openCard"
46 +]
1 +/*
2 + * @Author: hookehuyr hookehuyr@gmail.com
3 + * @Date: 2022-06-09 13:32:44
4 + * @LastEditors: hookehuyr hookehuyr@gmail.com
5 + * @LastEditTime: 2022-06-09 13:42:06
6 + * @FilePath: /tswj/src/api/wx/config.js
7 + * @Description:
8 + */
9 +import { fn, fetch } from '@/api/fn';
10 +
11 +const Api = {
12 + WX_PAY: 'c/bill_paymentForBill.do',
13 +}
14 +
15 +/**
16 + * @description 微信支付接口
17 + * @param {*}
18 + * @returns {*}
19 + */
20 +export const wxPayAPI = (params) => fn(fetch.get(Api.WX_PAY, params));
1 +/*
2 + * @Date: 2025-03-20 20:36:36
3 + * @LastEditors: hookehuyr hookehuyr@gmail.com
4 + * @LastEditTime: 2025-03-20 23:51:13
5 + * @FilePath: /mlaj/src/main.js
6 + * @Description: 文件描述
7 + */
1 import { createApp } from 'vue' 8 import { createApp } from 'vue'
2 import './style.css' 9 import './style.css'
3 import App from './App.vue' 10 import App from './App.vue'
4 import router from './router' 11 import router from './router'
12 +import axios from '@/utils/axios';
5 13
6 import 'vant/lib/index.css' 14 import 'vant/lib/index.css'
7 15
8 const app = createApp(App) 16 const app = createApp(App)
17 +// 屏蔽警告信息
18 +app.config.warnHandler = () => null;
19 +
20 +app.config.globalProperties.$http = axios; // 关键语句
9 app.use(router) 21 app.use(router)
10 app.mount('#app') 22 app.mount('#app')
......
1 +/*
2 + * @Author: hookehuyr hookehuyr@gmail.com
3 + * @Date: 2022-05-28 10:17:40
4 + * @LastEditors: hookehuyr hookehuyr@gmail.com
5 + * @LastEditTime: 2024-07-25 09:46:46
6 + * @FilePath: /temple_material_request/src/utils/axios.js
7 + * @Description:
8 + */
9 +import axios from 'axios';
10 +import router from '@/router';
11 +import qs from 'Qs'
12 +import { strExist } from '@/utils/tools'
13 +// import { parseQueryString } from '@/utils/tools'
14 +
15 +axios.defaults.params = {
16 + f: 'good',
17 +};
18 +
19 +/**
20 + * @description 请求拦截器
21 + */
22 +axios.interceptors.request.use(
23 + config => {
24 + // const url_params = parseQueryString(location.href);
25 + // GET请求默认打上时间戳,避免从缓存中拿数据。
26 + const timestamp = config.method === 'get' ? (new Date()).valueOf() : '';
27 + /**
28 + * POST PHP需要修改数据格式
29 + * 序列化POST请求时需要屏蔽上传相关接口,上传相关接口序列化后报错
30 + */
31 + // config.data = config.method === 'post' && !strExist(['a=upload', 'upload.qiniup.com'], config.url) ? qs.stringify(config.data) : config.data;
32 + // 绑定默认请求头
33 + config.params = { ...config.params, timestamp }
34 + return config;
35 + },
36 + error => {
37 + // 请求错误处理
38 + return Promise.reject(error);
39 + });
40 +
41 +/**
42 + * @description 响应拦截器
43 + */
44 +axios.interceptors.response.use(
45 + response => {
46 + return response;
47 + },
48 + error => {
49 + return Promise.reject(error);
50 + });
51 +
52 +export default axios;
1 +/*
2 + * @Date: 2022-04-18 15:59:42
3 + * @LastEditors: hookehuyr hookehuyr@gmail.com
4 + * @LastEditTime: 2023-02-24 16:13:06
5 + * @FilePath: /data-table/src/utils/tools.js
6 + * @Description: 文件描述
7 + */
8 +import dayjs from 'dayjs';
9 +
10 +// 格式化时间
11 +const formatDate = (date) => {
12 + return dayjs(date).format('YYYY-MM-DD HH:mm');
13 +};
14 +
15 +/**
16 + * @description 判断浏览器属于平台
17 + * @returns
18 + */
19 +const wxInfo = () => {
20 + let u = navigator.userAgent;
21 + let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器
22 + let isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
23 + let isMobile = u.indexOf('Android') > -1 || u.indexOf('iPhone') > -1 || u.indexOf('iPad') > -1; // 移动端平台
24 + let isIpad = u.indexOf('iPad') > -1; // iPad平台
25 + let uAgent = navigator.userAgent.toLowerCase();
26 + let isWeiXin = (uAgent.match(/MicroMessenger/i) == 'micromessenger') ? true : false;
27 + let isPC = (uAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone|micromessenger)/i)) ? false : true;
28 + return {
29 + isAndroid,
30 + isiOS,
31 + isWeiXin,
32 + isMobile,
33 + isIpad,
34 + isPC
35 + };
36 +};
37 +
38 +/**
39 + * @description 判断多行省略文本
40 + * @param {*} id 目标dom标签
41 + * @returns
42 + */
43 +const hasEllipsis = (id) => {
44 + let oDiv = document.getElementById(id);
45 + let flag = false;
46 + if (oDiv.scrollHeight > oDiv.clientHeight) {
47 + flag = true
48 + }
49 + return flag
50 +}
51 +
52 +/**
53 + * @description 解析URL参数
54 + * @param {*} url
55 + * @returns
56 + */
57 +const parseQueryString = url => {
58 + var json = {};
59 + var arr = url.indexOf('?') >= 0 ? url.substr(url.indexOf('?') + 1).split('&') : [];
60 + arr.forEach(item => {
61 + var tmp = item.split('=');
62 + json[tmp[0]] = decodeURIComponent(tmp[1]);
63 + });
64 + return json;
65 +}
66 +
67 +/**
68 + * 字符串包含字符数组中字符的状态
69 + * @param {*} array 字符数组
70 + * @param {*} str 字符串
71 + * @returns 包含状态
72 + */
73 +const strExist = (array, str) => {
74 + const exist = array.filter(arr => {
75 + if (str.indexOf(arr) >= 0) return str;
76 + })
77 + return exist.length > 0
78 +}
79 +
80 +/**
81 + * 自定义替换参数
82 + * @param {*} url
83 + * @param {*} arg
84 + * @param {*} arg_val
85 + * @returns
86 + */
87 +const changeURLArg = (url, arg, arg_val) => {
88 + var pattern = arg + '=([^&]*)';
89 + var replaceText = arg + '=' + arg_val;
90 + if (url.match(pattern)) {
91 + var tmp = '/(' + arg + '=)([^&]*)/gi';
92 + tmp = url.replace(eval(tmp), replaceText);
93 + return tmp;
94 + } else {
95 + if (url.match('[\?]')) {
96 + return url + '&' + replaceText;
97 + } else {
98 + return url + '?' + replaceText;
99 + }
100 + }
101 + return url + '\n' + arg + '\n' + arg_val;
102 +}
103 +
104 +// 获取参数key/value值对
105 +const getUrlParams = (url) => {
106 + // 没有参数处理
107 + if (url.split('?').length === 1) return false;
108 + let arr = url.split('?');
109 + let res = arr[1].split('&');
110 + let items = {};
111 + for (let i = 0; i < res.length; i++) {
112 + let [key, value] = res[i].split('=');
113 + items[key] = value;
114 + }
115 + return items
116 +}
117 +
118 +// 格式化URL参数为字符串
119 +const stringifyQuery = (params) => {
120 + const queryString = [];
121 + Object.keys(params || {}).forEach((k) => {
122 + queryString.push(k + '=' + params[k]);
123 + });
124 +
125 + return '?' + queryString.join('&');
126 +};
127 +
128 +export {
129 + formatDate,
130 + wxInfo,
131 + hasEllipsis,
132 + parseQueryString,
133 + strExist,
134 + changeURLArg,
135 + getUrlParams,
136 + stringifyQuery,
137 +};
1 +import VConsole from 'vconsole';
2 +
3 +// const vConsole = new VConsole();
4 +let vConsole = '';
5 +// 或者使用配置参数来初始化,详情见文档
6 +if (+import.meta.env.VITE_CONSOLE) {
7 + vConsole = new VConsole({ theme: 'dark' });
8 +}
9 +
10 +export default vConsole
1 /* 1 /*
2 * @Date: 2025-03-20 19:53:12 2 * @Date: 2025-03-20 19:53:12
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2025-03-20 20:27:29 4 + * @LastEditTime: 2025-03-20 23:44:51
5 - * @FilePath: /vue-vite/vite.config.js 5 + * @FilePath: /mlaj/vite.config.js
6 * @Description: 文件描述 6 * @Description: 文件描述
7 */ 7 */
8 -import { defineConfig } from 'vite' 8 +import { defineConfig, loadEnv } from 'vite'
9 import vue from '@vitejs/plugin-vue' 9 import vue from '@vitejs/plugin-vue'
10 import vueJsx from '@vitejs/plugin-vue-jsx' 10 import vueJsx from '@vitejs/plugin-vue-jsx'
11 import path from "path" 11 import path from "path"
12 import Components from 'unplugin-vue-components/vite' 12 import Components from 'unplugin-vue-components/vite'
13 import AutoImport from 'unplugin-auto-import/vite' 13 import AutoImport from 'unplugin-auto-import/vite'
14 import { VantResolver } from 'unplugin-vue-components/resolvers' 14 import { VantResolver } from 'unplugin-vue-components/resolvers'
15 +import { createProxy } from './build/proxy'
15 16
16 -// https://vite.dev/config/ 17 +export default ({ command, mode }) => {
17 -export default defineConfig({ 18 + const root = process.cwd();
18 - plugins: [ 19 +
19 - vue(), 20 + const viteEnv = loadEnv(mode, root);
20 - vueJsx(), 21 + // let isProd = (command === 'serve'); // 情景配置是否为开发模式 serve 或 build
21 - AutoImport({ 22 +
22 - imports: ['vue', 'vue-router'], 23 + return defineConfig({
23 - dts: 'src/auto-imports.d.ts', 24 + // root: '',
24 - }), 25 + // root: './src/packages', // 多页面应用配置入口根目录
25 - Components({ 26 + base: viteEnv.VITE_BASE, // 开发或生产环境服务的公共基础路径。
26 - resolvers: [VantResolver()], 27 + // base: isProd ? '/' : '/f/voice/', // 开发或生产环境服务的公共基础路径。
27 - dts: 'src/components.d.ts', 28 + // mode: '', // 在配置中指明将会把 serve 和 build 时的模式 都 覆盖掉。也可以通过命令行 --mode 选项来重写。
28 - }), 29 + // define: '', // 定义全局常量替换方式。其中每项在开发环境下会被定义在全局,而在构建时被静态替换。
29 - ], 30 + plugins: [
30 - resolve: { 31 + vue(),
31 - alias: { // 将会被传递到 @rollup/plugin-alias 作为 entries 的选项。也可以是一个对象,或一个 { find, replacement } 的数组. 当使用文件系统路径的别名时,请始终使用绝对路径。相对路径的别名值会被原封不动地使用,因此无法被正常解析。 更高级的自定义解析方法可以通过 插件 实现。 32 + vueJsx(),
32 - "@": path.resolve(__dirname, "src"), 33 + AutoImport({
33 - "@components": path.resolve(__dirname, "src/components"), 34 + imports: ['vue', 'vue-router'],
34 - "@composables": path.resolve(__dirname, "src/composables"), 35 + dts: 'src/auto-imports.d.ts',
35 - "@utils": path.resolve(__dirname, "src/utils"), 36 + // 解决eslint报错问题
36 - "@images": path.resolve(__dirname, "src/assets/images"), 37 + eslintrc: {
37 - "@css": path.resolve(__dirname, "src/assets/css"), 38 + enabled: true
38 - "@mock": path.resolve(__dirname, "src/assets/mock"), 39 + }
39 - "common": path.resolve(__dirname, "src/common"), 40 + }),
40 - "@api": path.resolve(__dirname, "src/api"), 41 + Components({
42 + resolvers: [VantResolver()],
43 + dts: 'src/components.d.ts',
44 + }),
45 + ],
46 + publicDir: 'public', // 作为静态资源服务的文件夹。这个目录中的文件会在开发中被服务于 /,在开发模式时,会被拷贝到 outDir 的根目录,并没有转换,永远只是复制到这里。该值可以是文件系统的绝对路径,也可以是相对于项目的根目录路径。
47 + // cacheDir: '', // 存储缓存文件的目录。此目录下会存储预打包的依赖项或 vite 生成的某些缓存文件,使用缓存可以提高性能。如需重新生成缓存文件,你可以使用 --force 命令行选项或手动删除目录。此选项的值可以是文件的绝对路径,也可以是以项目根目录为基准的相对路径。
48 + resolve: {
49 + alias: { // 将会被传递到 @rollup/plugin-alias 作为 entries 的选项。也可以是一个对象,或一个 { find, replacement } 的数组. 当使用文件系统路径的别名时,请始终使用绝对路径。相对路径的别名值会被原封不动地使用,因此无法被正常解析。 更高级的自定义解析方法可以通过 插件 实现。
50 + "@": path.resolve(__dirname, "src"),
51 + "@components": path.resolve(__dirname, "src/components"),
52 + "@composables": path.resolve(__dirname, "src/composables"),
53 + "@utils": path.resolve(__dirname, "src/utils"),
54 + "@images": path.resolve(__dirname, "src/assets/images"),
55 + "@css": path.resolve(__dirname, "src/assets/css"),
56 + "@mock": path.resolve(__dirname, "src/assets/mock"),
57 + "common": path.resolve(__dirname, "src/common"),
58 + "@api": path.resolve(__dirname, "src/api"),
59 + },
60 + dedupe: ['vue'], // 如果你在你的应用程序中有相同依赖的副本(比如 monorepos),使用这个选项来强制 Vite 总是将列出的依赖关系解析到相同的副本(从项目根目录)。
61 + // conditions: [''], // 在解析包的 情景导出 时允许的附加条件。
62 + // mainFields: [''], // package.json 中,在解析包的入口点时尝试的字段列表。注意,这比从 exports 字段解析的情景导出优先级低:如果一个入口点从 exports 成功解析,主字段将被忽略。
63 + extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'], // 导入时想要省略的扩展名列表。注意,不 建议忽略自定义导入类型的扩展名(例如:.vue),因为它会干扰 IDE 和类型支持。
64 + },
65 + css: {
66 + modules: '', // 配置 CSS modules 的行为。选项将被传递给 postcss-modules。
67 + postcss: { // 内联的 PostCSS 配置(格式同 postcss.config.js),或者一个(默认基于项目根目录的)自定义的 PostCSS 配置路径。其路径搜索是通过 postcss-load-config 实现的。 注意,如果提供了该内联配置,Vite 将不会搜索其他 PostCSS 配置源。
68 + plugins: [
69 + // postcsspxtoviewport({
70 + // unitToConvert: 'px', // 要转化的单位
71 + // viewportWidth: 375, // UI设计稿的宽度
72 + // unitPrecision: 6, // 转换后的精度,即小数点位数
73 + // propList: ['*'], // 指定转换的css属性的单位,*代表全部css属性的单位都进行转换
74 + // viewportUnit: 'vw', // 指定需要转换成的视窗单位,默认vw
75 + // fontViewportUnit: 'vw', // 指定字体需要转换成的视窗单位,默认vw
76 + // selectorBlackList: ['ignore-'], // 指定不转换为视窗单位的类名,
77 + // minPixelValue: 1, // 默认值1,小于或等于1px则不进行转换
78 + // mediaQuery: true, // 是否在媒体查询的css代码中也进行转换,默认false
79 + // replace: true, // 是否转换后直接更换属性值
80 + // // exclude: [/node_modules/], // 设置忽略文件,用正则做目录名匹配
81 + // exclude: [],
82 + // landscape: false // 是否处理横屏情况
83 + // })
84 + ]
85 + },
86 + preprocessorOptions: {
87 + // less: {
88 + // javascriptEnabled: true,
89 + // additionalData: `@import "${path.resolve(__dirname, 'src/assets/styles/base.less')}";`
90 + // }
91 + } // 指定传递给 CSS 预处理器的选项。
92 + },
93 + // json: {
94 + // namedExports: true, // 是否支持从 .json 文件中进行按名导入。
95 + // stringify: false, // 若设置为 true,导入的 JSON 会被转换为 export default JSON.parse("...") 会比转译成对象字面量性能更好,尤其是当 JSON 文件较大的时候。 开启此项,则会禁用按名导入。
96 + // },
97 + // esbuild: false, //
98 + // assetsInclude: '', // 指定其他文件类型作为静态资源处理
99 + logLevel: 'info', // 调整控制台输出的级别,默认为 'info'。
100 + // clearScreen: true, // 设为 false 可以避免 Vite 清屏而错过在终端中打印某些关键信息。命令行模式下请通过 --clearScreen false 设置。
101 + server: {
102 + host: '0.0.0.0',
103 + port: viteEnv.VITE_PORT, // 本地服务端口
104 + // strictPort: true, // 设为true时若端口已被占用则会直接退出, 而不是尝试下一个可用端口
105 + // https: '',
106 + // open: false, // 在服务器启动时自动在浏览器中打开应用程序. 当此值为字符串时, 会被当作URL的路径名.
107 + // proxy: { // 代理
108 + // '/srv/': {
109 + // // target: 'http://voice.onwall.cn',
110 + // target: viteEnv.VITE_PROXY_TARGET,
111 + // changeOrigin: true,
112 + // // rewrite: (path) => path.replace(/^\/api/, '')
113 + // },
114 + // },
115 + proxy: createProxy(viteEnv.VITE_PROXY_PREFIX, viteEnv.VITE_PROXY_TARGET),
116 + // cors: '', // 为开发服务器配置 CORS。默认启用并允许任何源,传递一个 选项对象 来调整行为或设为 false 表示禁用。
117 + // force: '', // 设置为 true 强制使依赖预构建。
118 + // hmr: '', // 禁用或配置 HMR 连接(用于 HMR websocket 必须使用不同的 http 服务器地址的情况)。 设置 server.hmr.overlay 为 false 可以禁用服务器错误遮罩层。
119 + // watch: '', // 传递给 chokidar 的文件系统监视器选项。
120 + },
121 + build: {
122 + // outDir: 'voice', // 指定输出路径(相对于项目根目录).
123 + outDir: viteEnv.VITE_OUTDIR, // 指定输出路径(相对于项目根目录).
124 + assetsDir: 'static',
125 + rollupOptions: {
126 + output: {
127 + chunkFileNames: 'static/js/[name]-[hash].js',
128 + entryFileNames: 'static/js/[name]-[hash].js',
129 + assetFileNames: 'static/[ext]/[name]-[hash].[ext]',
130 + },
131 + input: { // 多页面应用模式, 打包时配置,运行配置要处理root
132 + main: path.resolve(__dirname, 'index.html'),
133 + // mono1: path.resolve(__dirname, 'src/packages/mono1/index.html'),
134 + // mono2: path.resolve(__dirname, 'src/packages/mono2/index.html'),
135 + }
136 + },
41 }, 137 },
42 - dedupe: ['vue'], // 如果你在你的应用程序中有相同依赖的副本(比如 monorepos),使用这个选项来强制 Vite 总是将列出的依赖关系解析到相同的副本(从项目根目录)。 138 + optimizeDeps: {
43 - // conditions: [''], // 在解析包的 情景导出 时允许的附加条件。 139 + // entries: '',
44 - // mainFields: [''], // package.json 中,在解析包的入口点时尝试的字段列表。注意,这比从 exports 字段解析的情景导出优先级低:如果一个入口点从 exports 成功解析,主字段将被忽略。 140 + // exclude: [],
45 - extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'], // 导入时想要省略的扩展名列表。注意,不 建议忽略自定义导入类型的扩展名(例如:.vue),因为它会干扰 IDE 和类型支持。 141 + include: ['jquery', 'lodash', 'moment', 'axios', 'pinia', 'vue-router', 'vant'], // 默认情况下,不在 node_modules 中的,链接的包不会被预构建。使用此选项可强制预构建链接的包。
46 - }, 142 + // keepNames: false, // 打包器有时需要重命名符号以避免冲突。 设置此项为 true 可以在函数和类上保留 name 属性。 若想获取更多详情,请参阅 keepNames
47 -}) 143 + }
144 + });
145 +};
......