增加 vue-currency-input 插件示例

This commit is contained in:
Hooray Hu 2024-02-21 13:52:34 +08:00
parent 15cfb9fb23
commit 86a70d6632
4 changed files with 288 additions and 246 deletions

View File

@ -51,6 +51,7 @@
"tinymce": "^6.8.3",
"vconsole": "^3.15.1",
"vue": "^3.4.18",
"vue-currency-input": "^3.1.0",
"vue-esign": "^1.1.4",
"vue-m-message": "^4.0.2",
"vue-router": "^4.2.5",

View File

@ -113,6 +113,9 @@ dependencies:
vue:
specifier: ^3.4.18
version: 3.4.18(typescript@5.3.3)
vue-currency-input:
specifier: ^3.1.0
version: 3.1.0(vue@3.4.18)
vue-esign:
specifier: ^1.1.4
version: 1.1.4
@ -171,7 +174,7 @@ devDependencies:
version: 0.58.5(eslint@8.56.0)(typescript@5.3.3)
'@vitejs/plugin-legacy':
specifier: ^5.3.0
version: 5.3.0(esbuild@0.20.0)(terser@5.27.0)(vite@5.1.1)
version: 5.3.0(esbuild@0.19.12)(terser@5.27.0)(vite@5.1.1)
'@vitejs/plugin-vue':
specifier: ^5.0.4
version: 5.0.4(vite@5.1.1)(vue@3.4.18)
@ -252,7 +255,7 @@ devDependencies:
version: 0.17.5(@vueuse/core@10.7.2)
unplugin-turbo-console:
specifier: ^1.3.0
version: 1.3.0(esbuild@0.20.0)(vite@5.1.1)(vue@3.4.18)
version: 1.3.0(esbuild@0.19.12)(vite@5.1.1)(vue@3.4.18)
unplugin-vue-components:
specifier: ^0.26.0
version: 0.26.0(vue@3.4.18)
@ -2259,15 +2262,6 @@ packages:
dev: true
optional: true
/@esbuild/aix-ppc64@0.20.0:
resolution: {integrity: sha512-fGFDEctNh0CcSwsiRPxiaqX0P5rq+AqE0SRhYGZ4PX46Lg1FNR6oCxJghf8YgY0WQEgQuh3lErUFE4KxLeRmmw==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [aix]
requiresBuild: true
dev: true
optional: true
/@esbuild/android-arm64@0.18.20:
resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
engines: {node: '>=12'}
@ -2286,15 +2280,6 @@ packages:
dev: true
optional: true
/@esbuild/android-arm64@0.20.0:
resolution: {integrity: sha512-aVpnM4lURNkp0D3qPoAzSG92VXStYmoVPOgXveAUoQBWRSuQzt51yvSju29J6AHPmwY1BjH49uR29oyfH1ra8Q==}
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: true
optional: true
/@esbuild/android-arm@0.18.20:
resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==}
engines: {node: '>=12'}
@ -2313,15 +2298,6 @@ packages:
dev: true
optional: true
/@esbuild/android-arm@0.20.0:
resolution: {integrity: sha512-3bMAfInvByLHfJwYPJRlpTeaQA75n8C/QKpEaiS4HrFWFiJlNI0vzq/zCjBrhAYcPyVPG7Eo9dMrcQXuqmNk5g==}
engines: {node: '>=12'}
cpu: [arm]
os: [android]
requiresBuild: true
dev: true
optional: true
/@esbuild/android-x64@0.18.20:
resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==}
engines: {node: '>=12'}
@ -2340,15 +2316,6 @@ packages:
dev: true
optional: true
/@esbuild/android-x64@0.20.0:
resolution: {integrity: sha512-uK7wAnlRvjkCPzh8jJ+QejFyrP8ObKuR5cBIsQZ+qbMunwR8sbd8krmMbxTLSrDhiPZaJYKQAU5Y3iMDcZPhyQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [android]
requiresBuild: true
dev: true
optional: true
/@esbuild/darwin-arm64@0.18.20:
resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==}
engines: {node: '>=12'}
@ -2367,15 +2334,6 @@ packages:
dev: true
optional: true
/@esbuild/darwin-arm64@0.20.0:
resolution: {integrity: sha512-AjEcivGAlPs3UAcJedMa9qYg9eSfU6FnGHJjT8s346HSKkrcWlYezGE8VaO2xKfvvlZkgAhyvl06OJOxiMgOYQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/@esbuild/darwin-x64@0.18.20:
resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==}
engines: {node: '>=12'}
@ -2394,15 +2352,6 @@ packages:
dev: true
optional: true
/@esbuild/darwin-x64@0.20.0:
resolution: {integrity: sha512-bsgTPoyYDnPv8ER0HqnJggXK6RyFy4PH4rtsId0V7Efa90u2+EifxytE9pZnsDgExgkARy24WUQGv9irVbTvIw==}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/@esbuild/freebsd-arm64@0.18.20:
resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==}
engines: {node: '>=12'}
@ -2421,15 +2370,6 @@ packages:
dev: true
optional: true
/@esbuild/freebsd-arm64@0.20.0:
resolution: {integrity: sha512-kQ7jYdlKS335mpGbMW5tEe3IrQFIok9r84EM3PXB8qBFJPSc6dpWfrtsC/y1pyrz82xfUIn5ZrnSHQQsd6jebQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
requiresBuild: true
dev: true
optional: true
/@esbuild/freebsd-x64@0.18.20:
resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==}
engines: {node: '>=12'}
@ -2448,15 +2388,6 @@ packages:
dev: true
optional: true
/@esbuild/freebsd-x64@0.20.0:
resolution: {integrity: sha512-uG8B0WSepMRsBNVXAQcHf9+Ko/Tr+XqmK7Ptel9HVmnykupXdS4J7ovSQUIi0tQGIndhbqWLaIL/qO/cWhXKyQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-arm64@0.18.20:
resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==}
engines: {node: '>=12'}
@ -2475,15 +2406,6 @@ packages:
dev: true
optional: true
/@esbuild/linux-arm64@0.20.0:
resolution: {integrity: sha512-uTtyYAP5veqi2z9b6Gr0NUoNv9F/rOzI8tOD5jKcCvRUn7T60Bb+42NDBCWNhMjkQzI0qqwXkQGo1SY41G52nw==}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-arm@0.18.20:
resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==}
engines: {node: '>=12'}
@ -2502,15 +2424,6 @@ packages:
dev: true
optional: true
/@esbuild/linux-arm@0.20.0:
resolution: {integrity: sha512-2ezuhdiZw8vuHf1HKSf4TIk80naTbP9At7sOqZmdVwvvMyuoDiZB49YZKLsLOfKIr77+I40dWpHVeY5JHpIEIg==}
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-ia32@0.18.20:
resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==}
engines: {node: '>=12'}
@ -2529,15 +2442,6 @@ packages:
dev: true
optional: true
/@esbuild/linux-ia32@0.20.0:
resolution: {integrity: sha512-c88wwtfs8tTffPaoJ+SQn3y+lKtgTzyjkD8NgsyCtCmtoIC8RDL7PrJU05an/e9VuAke6eJqGkoMhJK1RY6z4w==}
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-loong64@0.18.20:
resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==}
engines: {node: '>=12'}
@ -2556,15 +2460,6 @@ packages:
dev: true
optional: true
/@esbuild/linux-loong64@0.20.0:
resolution: {integrity: sha512-lR2rr/128/6svngnVta6JN4gxSXle/yZEZL3o4XZ6esOqhyR4wsKyfu6qXAL04S4S5CgGfG+GYZnjFd4YiG3Aw==}
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-mips64el@0.18.20:
resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==}
engines: {node: '>=12'}
@ -2583,15 +2478,6 @@ packages:
dev: true
optional: true
/@esbuild/linux-mips64el@0.20.0:
resolution: {integrity: sha512-9Sycc+1uUsDnJCelDf6ZNqgZQoK1mJvFtqf2MUz4ujTxGhvCWw+4chYfDLPepMEvVL9PDwn6HrXad5yOrNzIsQ==}
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-ppc64@0.18.20:
resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==}
engines: {node: '>=12'}
@ -2610,15 +2496,6 @@ packages:
dev: true
optional: true
/@esbuild/linux-ppc64@0.20.0:
resolution: {integrity: sha512-CoWSaaAXOZd+CjbUTdXIJE/t7Oz+4g90A3VBCHLbfuc5yUQU/nFDLOzQsN0cdxgXd97lYW/psIIBdjzQIwTBGw==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-riscv64@0.18.20:
resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==}
engines: {node: '>=12'}
@ -2637,15 +2514,6 @@ packages:
dev: true
optional: true
/@esbuild/linux-riscv64@0.20.0:
resolution: {integrity: sha512-mlb1hg/eYRJUpv8h/x+4ShgoNLL8wgZ64SUr26KwglTYnwAWjkhR2GpoKftDbPOCnodA9t4Y/b68H4J9XmmPzA==}
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-s390x@0.18.20:
resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==}
engines: {node: '>=12'}
@ -2664,15 +2532,6 @@ packages:
dev: true
optional: true
/@esbuild/linux-s390x@0.20.0:
resolution: {integrity: sha512-fgf9ubb53xSnOBqyvWEY6ukBNRl1mVX1srPNu06B6mNsNK20JfH6xV6jECzrQ69/VMiTLvHMicQR/PgTOgqJUQ==}
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/linux-x64@0.18.20:
resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==}
engines: {node: '>=12'}
@ -2691,15 +2550,6 @@ packages:
dev: true
optional: true
/@esbuild/linux-x64@0.20.0:
resolution: {integrity: sha512-H9Eu6MGse++204XZcYsse1yFHmRXEWgadk2N58O/xd50P9EvFMLJTQLg+lB4E1cF2xhLZU5luSWtGTb0l9UeSg==}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/@esbuild/netbsd-x64@0.18.20:
resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==}
engines: {node: '>=12'}
@ -2718,15 +2568,6 @@ packages:
dev: true
optional: true
/@esbuild/netbsd-x64@0.20.0:
resolution: {integrity: sha512-lCT675rTN1v8Fo+RGrE5KjSnfY0x9Og4RN7t7lVrN3vMSjy34/+3na0q7RIfWDAj0e0rCh0OL+P88lu3Rt21MQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
requiresBuild: true
dev: true
optional: true
/@esbuild/openbsd-x64@0.18.20:
resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==}
engines: {node: '>=12'}
@ -2745,15 +2586,6 @@ packages:
dev: true
optional: true
/@esbuild/openbsd-x64@0.20.0:
resolution: {integrity: sha512-HKoUGXz/TOVXKQ+67NhxyHv+aDSZf44QpWLa3I1lLvAwGq8x1k0T+e2HHSRvxWhfJrFxaaqre1+YyzQ99KixoA==}
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
requiresBuild: true
dev: true
optional: true
/@esbuild/sunos-x64@0.18.20:
resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==}
engines: {node: '>=12'}
@ -2772,15 +2604,6 @@ packages:
dev: true
optional: true
/@esbuild/sunos-x64@0.20.0:
resolution: {integrity: sha512-GDwAqgHQm1mVoPppGsoq4WJwT3vhnz/2N62CzhvApFD1eJyTroob30FPpOZabN+FgCjhG+AgcZyOPIkR8dfD7g==}
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
requiresBuild: true
dev: true
optional: true
/@esbuild/win32-arm64@0.18.20:
resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==}
engines: {node: '>=12'}
@ -2799,15 +2622,6 @@ packages:
dev: true
optional: true
/@esbuild/win32-arm64@0.20.0:
resolution: {integrity: sha512-0vYsP8aC4TvMlOQYozoksiaxjlvUcQrac+muDqj1Fxy6jh9l9CZJzj7zmh8JGfiV49cYLTorFLxg7593pGldwQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@esbuild/win32-ia32@0.18.20:
resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==}
engines: {node: '>=12'}
@ -2826,15 +2640,6 @@ packages:
dev: true
optional: true
/@esbuild/win32-ia32@0.20.0:
resolution: {integrity: sha512-p98u4rIgfh4gdpV00IqknBD5pC84LCub+4a3MO+zjqvU5MVXOc3hqR2UgT2jI2nh3h8s9EQxmOsVI3tyzv1iFg==}
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@esbuild/win32-x64@0.18.20:
resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==}
engines: {node: '>=12'}
@ -2853,15 +2658,6 @@ packages:
dev: true
optional: true
/@esbuild/win32-x64@0.20.0:
resolution: {integrity: sha512-NgJnesu1RtWihtTtXGFMU5YSE6JyyHPMxCwBZK7a6/8d31GuSo9l0Ss7w1Jw5QnKUawG6UEehs883kcXf5fYwg==}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/@eslint-community/eslint-utils@4.4.0(eslint@8.56.0):
resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -3964,7 +3760,7 @@ packages:
- rollup
dev: true
/@vitejs/plugin-legacy@5.3.0(esbuild@0.20.0)(terser@5.27.0)(vite@5.1.1):
/@vitejs/plugin-legacy@5.3.0(esbuild@0.19.12)(terser@5.27.0)(vite@5.1.1):
resolution: {integrity: sha512-BhW+WcJmEgW5G/1UQRiVQ7wz9/ZPnxqzExT9n0zAk4RlqQQ/26udIeXzdU8+03AGnaF61wmZlCspexgEnxFWMA==}
engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies:
@ -3975,7 +3771,7 @@ packages:
'@babel/preset-env': 7.23.9(@babel/core@7.23.9)
browserslist: 4.22.3
core-js: 3.35.1
esbuild-plugin-browserslist: 0.10.0(browserslist@4.22.3)(esbuild@0.20.0)
esbuild-plugin-browserslist: 0.10.0(browserslist@4.22.3)(esbuild@0.19.12)
magic-string: 0.30.6
regenerator-runtime: 0.14.1
systemjs: 6.14.3
@ -6092,7 +5888,7 @@ packages:
is-date-object: 1.0.5
is-symbol: 1.0.4
/esbuild-plugin-browserslist@0.10.0(browserslist@4.22.3)(esbuild@0.20.0):
/esbuild-plugin-browserslist@0.10.0(browserslist@4.22.3)(esbuild@0.19.12):
resolution: {integrity: sha512-rZWFcp3l+73xDiJB+Vl9UqP1VVs+L4E0lygbwJl6UTmW2qQago7DLT56hBu0vocH/TtZsAcRHj0+qHqkkB5Gww==}
engines: {node: '>=18'}
peerDependencies:
@ -6101,7 +5897,7 @@ packages:
dependencies:
browserslist: 4.22.3
debug: 4.3.4
esbuild: 0.20.0
esbuild: 0.19.12
zod: 3.22.4
transitivePeerDependencies:
- supports-color
@ -6168,37 +5964,6 @@ packages:
'@esbuild/win32-x64': 0.19.12
dev: true
/esbuild@0.20.0:
resolution: {integrity: sha512-6iwE3Y2RVYCME1jLpBqq7LQWK3MW6vjV2bZy6gt/WrqkY+WE74Spyc0ThAOYpMtITvnjX09CrC6ym7A/m9mebA==}
engines: {node: '>=12'}
hasBin: true
requiresBuild: true
optionalDependencies:
'@esbuild/aix-ppc64': 0.20.0
'@esbuild/android-arm': 0.20.0
'@esbuild/android-arm64': 0.20.0
'@esbuild/android-x64': 0.20.0
'@esbuild/darwin-arm64': 0.20.0
'@esbuild/darwin-x64': 0.20.0
'@esbuild/freebsd-arm64': 0.20.0
'@esbuild/freebsd-x64': 0.20.0
'@esbuild/linux-arm': 0.20.0
'@esbuild/linux-arm64': 0.20.0
'@esbuild/linux-ia32': 0.20.0
'@esbuild/linux-loong64': 0.20.0
'@esbuild/linux-mips64el': 0.20.0
'@esbuild/linux-ppc64': 0.20.0
'@esbuild/linux-riscv64': 0.20.0
'@esbuild/linux-s390x': 0.20.0
'@esbuild/linux-x64': 0.20.0
'@esbuild/netbsd-x64': 0.20.0
'@esbuild/openbsd-x64': 0.20.0
'@esbuild/sunos-x64': 0.20.0
'@esbuild/win32-arm64': 0.20.0
'@esbuild/win32-ia32': 0.20.0
'@esbuild/win32-x64': 0.20.0
dev: true
/escalade@3.1.1:
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
engines: {node: '>=6'}
@ -11949,7 +11714,7 @@ packages:
- rollup
dev: true
/unplugin-turbo-console@1.3.0(esbuild@0.20.0)(vite@5.1.1)(vue@3.4.18):
/unplugin-turbo-console@1.3.0(esbuild@0.19.12)(vite@5.1.1)(vue@3.4.18):
resolution: {integrity: sha512-Z5jquMBms6a/BiBAMpYGeUdERtapYdcTL3AhRx/vX4Vnd3lH9VoROfwGktCfTSD3laJCZLhs/un8GQCPf9ZgsQ==}
peerDependencies:
'@nuxt/kit': '>=3'
@ -11980,7 +11745,7 @@ packages:
dependencies:
'@rollup/pluginutils': 5.1.0
ast-kit: 0.11.3
esbuild: 0.20.0
esbuild: 0.19.12
get-port-please: 3.1.2
h3: 1.10.1
launch-editor: 2.6.1
@ -12388,6 +12153,14 @@ packages:
resolution: {integrity: sha512-6R4OVBVNtQTlcbXu6SJ8ENR35M2/CdWt3Jmv57jOUM+1ojiFmjVGvZPH8DfHpMDSA+ITs+EW5V6qthADxeyYOQ==}
dev: false
/vue-currency-input@3.1.0(vue@3.4.18):
resolution: {integrity: sha512-XZ8bg61zRNJjRDo7I4K0UAah9qtkipexRcn/h9MzEqZQ9gVZWABObgN+042UchmCTiwSfsjGOd6DZGzd/TUUMA==}
peerDependencies:
vue: ^2.7 || ^3.0.0
dependencies:
vue: 3.4.18(typescript@5.3.3)
dev: false
/vue-demi@0.14.6(vue@3.4.18):
resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==}
engines: {node: '>=12'}

View File

@ -113,6 +113,15 @@ const routes: RouteRecordRaw = {
icon: 'i-carbon:character-whole-number',
},
},
{
path: 'currencyinput',
name: 'pluginExampleCurrencyInput',
component: () => import('@/views/plugin_example/currency.input.vue'),
meta: {
title: '货币格式输入',
icon: 'i-ph:currency-cny-bold',
},
},
{
path: 'splitpanes',
name: 'pluginExampleSplitpanes',

View File

@ -0,0 +1,259 @@
<route lang="yaml">
meta:
enabled: false
</route>
<script setup lang="ts">
import Message from 'vue-m-message'
import type { CurrencyInputOptions } from 'vue-currency-input'
import { useCurrencyInput } from 'vue-currency-input'
import { createReusableTemplate, useClipboard } from '@vueuse/core'
import Alert from './components/alert.vue'
const Option = createReusableTemplate<{
label: string
description?: string
}>()
const localeEnabled = ref(false)
const locale = ref('zh-ZH')
const locales = ref(['de-DE', 'de-CH', 'en-US', 'en-IN', 'nl-NL', 'sv-SE', 'fr-FR', 'es-ES', 'pt-PT', 'pt-BR', 'zh-ZH', 'ja-JP', 'ar-SA', 'fa-IR', 'bg-BG'])
const currency = ref('CNY')
const currencies = ref(['EUR', 'USD', 'GBP', 'BRL', 'INR', 'CNY', 'JPY', 'SAR', 'IRR', 'BGN'])
const currencyDisplay = ref('symbol')
const currencyDisplays = ref([
{ value: 'symbol', label: 'Symbol' },
{ value: 'narrowSymbol', label: 'Narrow symbol' },
{ value: 'code', label: 'Code' },
{ value: 'name', label: 'Name' },
{ value: 'hidden', label: 'Hidden' },
])
const accountingSign = ref(false)
const useGrouping = ref(true)
const hideCurrencySymbolOnFocus = ref(true)
const hideGroupingSeparatorOnFocus = ref(true)
const hideNegligibleDecimalDigitsOnFocus = ref(true)
const hideNegligibleDecimalDigitsOnFocusEnabled = ref(true)
const valueRangeEnabled = ref(false)
const minValue = ref(undefined)
const maxValue = ref(undefined)
const precisionEnabled = ref(false)
const precisionRangeEnabled = ref(false)
const precisionRangeValue = ref([2, 5])
function range(from: number, to: number) {
return Array(to - from).fill(from).map((x, y) => x + y)
}
const precision = ref(2)
const precisionOptions = computed(() => range(1, 16))
const valueScalingEnabled = ref(false)
const valueScaling = ref('precision')
const valueScalingOptions = ref([
{ value: 'precision', label: 'Precision' },
{ value: 'thousands', label: 'Thousands' },
{ value: 'millions', label: 'Millions' },
{ value: 'billions', label: 'Billions' },
])
const autoDecimalDigits = ref(false)
watch(autoDecimalDigits, (value) => {
hideNegligibleDecimalDigitsOnFocusEnabled.value = !value
hideNegligibleDecimalDigitsOnFocus.value = !value
})
const options = computed(() => {
return {
locale: localeEnabled.value ? locale.value : undefined,
currency: currency.value,
currencyDisplay: currencyDisplay.value,
valueRange: valueRangeEnabled.value
? {
min: minValue.value === '' ? undefined : minValue.value,
max: maxValue.value === '' ? undefined : maxValue.value,
}
: undefined,
precision: precisionEnabled.value
? precisionRangeEnabled.value
? { min: precisionRangeValue.value[0], max: precisionRangeValue.value[1] }
: precision.value
: undefined,
hideCurrencySymbolOnFocus: hideCurrencySymbolOnFocus.value,
hideGroupingSeparatorOnFocus: hideGroupingSeparatorOnFocus.value,
hideNegligibleDecimalDigitsOnFocus: hideNegligibleDecimalDigitsOnFocus.value,
autoDecimalDigits: autoDecimalDigits.value,
valueScaling: valueScalingEnabled.value ? valueScaling.value : undefined,
useGrouping: useGrouping.value,
accountingSign: accountingSign.value,
}
})
const { inputRef, setValue, setOptions, numberValue, formattedValue } = useCurrencyInput(options.value as CurrencyInputOptions)
watch(options, (value) => {
setOptions(value as CurrencyInputOptions)
})
watch(numberValue, (val) => {
setValue(val)
}, {
immediate: true,
})
onMounted(() => {
numberValue.value = 1234.5
})
const { copy, copied, isSupported } = useClipboard()
watch(copied, (val) => {
if (val) {
Message.success('复制成功', {
zIndex: 2000,
})
}
})
function handleCopy() {
copy(JSON.stringify(options.value, null, 2))
}
function open(url: string) {
window.open(url, '_blank')
}
</script>
<template>
<div>
<Option.define v-slot="{ $slots, label, description }">
<section class="mb-6 min-w-0">
<div class="mb-2 flex items-center justify-between">
<span class="text-xl font-medium">{{ label }}</span>
<component :is="$slots.switch" />
</div>
<div v-if="description" class="mb-2 text-sm opacity-30">
{{ description }}
</div>
<component :is="$slots.default" />
</section>
</Option.define>
<Alert />
<PageHeader title="货币格式输入">
<template #content>
<p style="margin-bottom: 0;">
安装命令<ElTag>pnpm add vue-currency-input</ElTag>
</p>
</template>
<ElButton @click="open('https://github.com/dm4t2/vue-currency-input')">
<template #icon>
<SvgIcon name="i-ep:link" />
</template>
访问 vue-currency-input
</ElButton>
</PageHeader>
<PageMain>
<div class="grid items-center gap-y-4 md:grid-cols-2 md:gap-x-8">
<el-input ref="inputRef" v-model="formattedValue" />
<div>
数值<code class="ml-2">{{ numberValue != null ? numberValue : 'null' }}</code>
</div>
</div>
</PageMain>
<PageMain title="选项">
<template #title>
<div class="flex items-center justify-between">
选项
<el-button v-if="isSupported" size="small" @click="handleCopy">
复制选项
</el-button>
</div>
</template>
<div class="grid grid-cols-1 gap-x-8 md:grid-cols-2">
<div>
<Option.reuse label="地理位置">
<template #switch>
<el-switch v-model="localeEnabled" />
</template>
<el-select v-model="locale" :disabled="!localeEnabled">
<el-option v-for="item in locales" :key="item" :value="item" :label="item" />
</el-select>
</Option.reuse>
<Option.reuse label="货币">
<el-select v-model="currency">
<el-option v-for="item in currencies" :key="item" :value="item" :label="item" />
</el-select>
</Option.reuse>
<Option.reuse label="货币显示" description="如何在格式化中显示货币">
<el-select v-model="currencyDisplay">
<el-option v-for="item in currencyDisplays" :key="item.value" :value="item.value" :label="item.label" />
</el-select>
</Option.reuse>
<Option.reuse label="会计标志" description="是否使用会计符号格式化">
<template #switch>
<el-switch v-model="accountingSign" />
</template>
</Option.reuse>
<Option.reuse label="使用分组" description="是否使用分组分隔符,如千/万/千万分隔符">
<template #switch>
<el-switch v-model="useGrouping" />
</template>
</Option.reuse>
<Option.reuse label="无干扰输入" description="对焦时隐藏格式的不同部分,以方便输入">
<div>
<el-checkbox v-model="hideCurrencySymbolOnFocus" label="隐藏货币符号" />
</div>
<div>
<el-checkbox v-model="hideGroupingSeparatorOnFocus" label="隐藏分组分隔符" />
</div>
<div>
<el-checkbox v-model="hideNegligibleDecimalDigitsOnFocus" :disabled="!hideNegligibleDecimalDigitsOnFocusEnabled" label="隐藏可忽略的小数位数" />
</div>
</Option.reuse>
</div>
<div>
<Option.reuse label="数值范围" description="验证在模糊时触发,并在超出范围时自动设置相应的阈值">
<template #switch>
<el-switch v-model="valueRangeEnabled" />
</template>
<div class="flex items-center space-x-4">
<el-input-number v-model="minValue" :disabled="!valueRangeEnabled" placeholder="最小值" class="flex-1" />
<span class="text-center">to</span>
<el-input-number v-model="maxValue" :disabled="!valueRangeEnabled" placeholder="最大值" class="flex-1" />
</div>
</Option.reuse>
<Option.reuse label="精确度" description="覆盖显示的小数位数,仅适用于支持小数位的货币">
<template #switch>
<el-switch v-model="precisionEnabled" />
</template>
<div>
<el-checkbox v-model="precisionRangeEnabled" :disabled="!precisionEnabled" label="使用范围" />
<el-slider v-if="precisionRangeEnabled" v-model="precisionRangeValue" range show-stops :min="1" :max="15" />
<el-select v-else v-model="precision" :disabled="!precisionEnabled">
<el-option v-for="item in precisionOptions" :key="item" :value="item" :label="item" />
</el-select>
</div>
</Option.reuse>
<Option.reuse label="数值缩放" description="对输出值进行缩放">
<template #switch>
<el-switch v-model="valueScalingEnabled" />
</template>
<el-select v-model="valueScaling" :disabled="!valueScalingEnabled">
<el-option v-for="item in valueScalingOptions" :key="item.value" :value="item.value" :label="item.label" />
</el-select>
</Option.reuse>
<Option.reuse label="自动小数位" description="是否自动插入小数符号,将最后输入的数字作为小数位">
<template #switch>
<el-switch v-model="autoDecimalDigits" />
</template>
</Option.reuse>
</div>
</div>
</PageMain>
</div>
</template>