{"_id":"hmtestlh","_rev":"46-63ceb49378dbdf1c870cc83f2194d344","name":"hmtestlh","dist-tags":{"latest":"1.0.45"},"versions":{"1.0.0":{"name":"hmtestlh","version":"1.0.0","keywords":["hm","vue3"],"author":"","license":"ISC","_id":"hmtestlh@1.0.0","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"b424c046b873a78608ed34533f01a2c2cf375b7a","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.0.tgz","fileCount":7,"integrity":"sha512-yfYbnk9Tqwtz7jItnWPCeLHFIrdyB9Hstzw32CRKoRFRYRjRxh7r29ILczURCEBmYxlyfWWEdk/Kl+uP2y9k3Q==","signatures":[{"sig":"MEUCIQDLS/rBUnOQJvF5G45lj+er+DyeMc3kATYpcWg6G9PlFAIgfTNnDDuM8Eqf9CEOT1dWUO2svSUGaY/BGGxDFy81AKU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":253203},"main":"index.es.js","gitHead":"c83f20e7dd8001e6bc20b9c979d8d0fa3a346ac4","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"this is the hm package","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.0_1758160576305_0.22396106921186387","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"hmtestlh","version":"1.0.1","keywords":["hm","vue3"],"author":"","license":"ISC","_id":"hmtestlh@1.0.1","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"9877d1e2de75b091d6a4dfec43bb3ed74d030000","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.1.tgz","fileCount":7,"integrity":"sha512-S9YVuBThuXUBmQtMNThTltAE+OFPbZaKge2TdqZQeNltAgySIPJpCacZ30V1slxS/mSZ8PC+7fHNYtSmjG35Ww==","signatures":[{"sig":"MEQCIAw8yRica7hBdD3/FIa4k5J+LCR6fx2ZixgkITJSsRf3AiAWGQI8lsfQIEqVlI8uNC+eP0vurAJ6ddXYmHYp4PwIow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":253185},"main":"index.es.js","gitHead":"c83f20e7dd8001e6bc20b9c979d8d0fa3a346ac4","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.1_1758163829715_0.7626317019543289","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"hmtestlh","version":"1.0.2","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.2","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"989a690e98f1985719e8c4775242cb6087281a7c","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.2.tgz","fileCount":7,"integrity":"sha512-NvUoOZ6cSvKZmuifZCdriNI4616+iSAcysk27gYkJb2lg3tpEFjr4qw8GyUsDVG4zfLKtaUO/rZqMmH5a8s9DA==","signatures":[{"sig":"MEQCIBHBbHQr7xZyucl6pLc1I2q+Y+LCKiz3IF9m0bfyVtz9AiAdOJnFS85hc+4SPtvH1XqdrC6qPwHE96MYn+hGfRbb5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17566},"main":"index.es.js","gitHead":"c83f20e7dd8001e6bc20b9c979d8d0fa3a346ac4","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.2_1758186627968_0.6812679381564088","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"hmtestlh","version":"1.0.3","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.3","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"565cb62a4bc9b6bb0952ab57e53dee82f206b08a","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.3.tgz","fileCount":7,"integrity":"sha512-/cVvskGYp89pQNCLro7BG9Ss4ySl7LozeoDrCp0ydY9WuliMERgq85jF/Y1oj4UxRAhv2AkBnHnVciNqkwtBlw==","signatures":[{"sig":"MEUCIADyQMNIyUtDtp96AVtOgBrxrY6o5DxuCZ6lR7YHSBkKAiEAxPd2JyFKHcyEvxBWqI8Zc602QGH/M8Px30A2vZqtnC0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36387},"main":"index.es.js","gitHead":"5765dd4fcc7ea5c2ae1659f54fb52c8302250886","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.3_1758512330165_0.028440176689083163","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"hmtestlh","version":"1.0.4","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.4","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"04077a8f84a10e93f33687b33b44030c0551614d","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.4.tgz","fileCount":7,"integrity":"sha512-zIf/VAlcwQU9uE4P/rTZivgxFHcQ1IUkA4bz9mJl7yvkquNQybq+6YozqC/dyaqrycANF3n+2XNdW/jgfdKavA==","signatures":[{"sig":"MEUCIQC+0W0kObLRZ9dxnZpvkQIU4Writr+w/8ux39HF5euHGgIgeqbD9HEm/n93ZKFdicORXBytbYzIHYR8I4qb0k1RiPM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36614},"main":"index.es.js","gitHead":"5765dd4fcc7ea5c2ae1659f54fb52c8302250886","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.4_1758522690347_0.4402476621313447","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"hmtestlh","version":"1.0.5","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.5","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"c7dc1896d7e856626c7172e69b0048823e89ca28","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.5.tgz","fileCount":7,"integrity":"sha512-ZlmgoDshqV1tmHPdA6pKfLjcvgboE7viD6ThSpf6UUxPuUsWsbYAhcY8B03OU0YPNECT7TJCORuWKvj7NkKk0Q==","signatures":[{"sig":"MEYCIQCP+GDwf+Pjye8foHT7ACwHF1IA649CXjlqHwl4GvsB6AIhAOwf+wnHr/x30mjIQV+gwtFqdL0yzMLXBcZtXozCsPAW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36976},"main":"index.es.js","gitHead":"5765dd4fcc7ea5c2ae1659f54fb52c8302250886","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.5_1758524035474_0.37619631691821076","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"hmtestlh","version":"1.0.6","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.6","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"808cadf3e4df4d0756dfb2154996681a9aea130a","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.6.tgz","fileCount":7,"integrity":"sha512-hwnWduHyrZ+fScG20bcW21UAmcIbHK1xxuaaa9dmnclbhe6nQQBqLUcr3WOKpyaoJASJB1cUfeexl9I+Yr0ykA==","signatures":[{"sig":"MEQCICXzj8TMNbru/b1eBw7Nh6tYCRtw7issHoZROMBfC7HsAiBZcBd0EYVkSupIzJk/bWhOgz1rbV76aKnIavMpZ2EgUw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37692},"main":"index.es.js","gitHead":"5765dd4fcc7ea5c2ae1659f54fb52c8302250886","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.6_1758528375816_0.2081342057599438","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"hmtestlh","version":"1.0.7","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.7","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"b6187576f65b19f2b9bdfec93197be31034d46e3","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.7.tgz","fileCount":7,"integrity":"sha512-Y3UWAfJ8xwQIDapehrD/I0driL7kUnREdxVBZo6mLyZUdoOGGCv7t8ATOIIHBndisu+HK7SFE4WHc1JrpJY6KA==","signatures":[{"sig":"MEUCIHitqrWpH1rxLymHEDTsU9z0ZQqPZl/u9wlbRPZb8mh3AiEAqYnEwfeH3q5mSRLaYbbPDIEBpthHlwQI8DDHyp2fniA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40056},"main":"index.es.js","gitHead":"5765dd4fcc7ea5c2ae1659f54fb52c8302250886","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.7_1758533149823_0.32049565201133245","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"hmtestlh","version":"1.0.8","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.8","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"a93f40ad2f4a9f35fcfa69829121e8af1e8eeca3","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.8.tgz","fileCount":7,"integrity":"sha512-ZeOwsByprZcmp6kyLc/drzytr/z6dvtW+Nj0QuwnvDlljmzzzO74AE5hn+vjeUX5VcSLVWhJkiTJ4sSbsIgEXA==","signatures":[{"sig":"MEQCIHdxO62H56gc2LLDtpd/baFZfh+Pw7xudTLRFEm+7JAgAiAsfHfBIe0AHHPZRPpqe5sNK+IeloTWai4q6C+M7mGEUQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49882},"main":"index.es.js","gitHead":"5765dd4fcc7ea5c2ae1659f54fb52c8302250886","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.8_1758535108640_0.08443537046942673","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"hmtestlh","version":"1.0.9","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.9","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"feb48d08e3cb29a533b61a80251986772aa146ec","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.9.tgz","fileCount":7,"integrity":"sha512-AOM2yc5WnW8AJNF3aMTexLapVqeRci0PNe3/b4mVJHa/PH89TdA8ntwPHuI06PouWWkp9vDbQ5FtxnG8sZpUMg==","signatures":[{"sig":"MEUCIQCDlKFwH6y0IYHLFuIKS1BAFhM1xDp3DnsIKNQwscpYbAIgRGHbN3UGUBRE/jR6PGSbAdp8tkgRCqhgLtcymIt/RGw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57205},"main":"index.es.js","gitHead":"5765dd4fcc7ea5c2ae1659f54fb52c8302250886","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.9_1758589658981_0.05899030038049702","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"hmtestlh","version":"1.0.10","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.10","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"55fe889d2cd360cd4fd6cedd88d54063e4a87fcd","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.10.tgz","fileCount":7,"integrity":"sha512-p/W23TXdvsyMq63duJq3TFLQD85bU4pvjDql+cKLJHp9LngpJrH0muZogzSrJRtpa7RhtbuGZ204zpI4SFgKtw==","signatures":[{"sig":"MEYCIQCSjBMqTr84ii2xLTbnZTjZ53Y1/fkhCsGhLFQAw4DBBwIhAMIpDFi7cOU5pTQDxufarh0b4e7PFAwnlTdfpW4lAM+K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":728412},"main":"index.es.js","gitHead":"5765dd4fcc7ea5c2ae1659f54fb52c8302250886","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.10_1758597490177_0.22537396396609766","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"hmtestlh","version":"1.0.11","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.11","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"ddb59ec5df6e5b4f3ace4c7759cc92fff37bc6c4","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.11.tgz","fileCount":7,"integrity":"sha512-SyU87GBs9Yyk4FhzIEVPfQ039X0wBmIUoDhSGFAQWQNHvx9e5BXBqjzMUcl7jkh64E9dvtSFNhM5ryaEy1B7Hg==","signatures":[{"sig":"MEYCIQC/45dOYw71RFO888qHp5AwjcZuDOhYVyJN73/XxMzLigIhAP8V9IeplXkmBpVrc/3nqU3mJfTVpM/EFLSzEQ4JdqSq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57491},"main":"index.es.js","gitHead":"5765dd4fcc7ea5c2ae1659f54fb52c8302250886","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.11_1758598378671_0.5759217547129245","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"hmtestlh","version":"1.0.12","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.12","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"b7c54dcca082e8cddaf1587866b0a979502bea67","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.12.tgz","fileCount":7,"integrity":"sha512-G1UmuDSLI8LsSsIKylrk2c2c8+GT++wuKDnXcMInh8xcOfOuNjohl30kmnelPLRo27wv/7lCRtEhrffLGzRT3A==","signatures":[{"sig":"MEUCIQCpjNPnyVllsMLuqluIb5m8lNjDPojUMb9ulD8duNE+ngIgWOv9qXK4IAq76/ThwHRTXl9LfpqNlx8OgodOwYLY+Bg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57597},"main":"index.es.js","gitHead":"5765dd4fcc7ea5c2ae1659f54fb52c8302250886","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.12_1758766364641_0.8415994604348329","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"hmtestlh","version":"1.0.13","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.13","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"7e56f9155d97ec8f3086cec4edbc83e6de1f136c","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.13.tgz","fileCount":7,"integrity":"sha512-W8fWGJ4+Pe69oq1giFlkPdMtnOLPiKaoXP+M3lFzEM8sKz95dztBKjLuLTY7nkOMT7jdQekEj+pejImzvf8IMw==","signatures":[{"sig":"MEQCIFuaMyYoUYorY4scoF8eVxwausRbaRk5SeQ2M3cA7qCsAiAx//Kp4t0BZgjmPdlXoUerfEoL6QgdxK5lMiNxPibvgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57648},"main":"index.es.js","gitHead":"5765dd4fcc7ea5c2ae1659f54fb52c8302250886","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.13_1758767642437_0.7169244299437918","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"hmtestlh","version":"1.0.14","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.14","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"7e54fecd74154ff491d5375d2c89aa041e5d94c4","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.14.tgz","fileCount":7,"integrity":"sha512-Ii8UKcG8aLJ8TwcBDH/RB1nlD5Dbnm1gdje3USNgjLNWaceE6HdVjv2IgFFP6gqTWZfJBhxcSRBSYkpZDjAO0Q==","signatures":[{"sig":"MEYCIQDtHUN/d92V/vNZOhTxf+sCmrv71Fizre7T9VBBi45PGgIhALKI1Y9m/tbsDhn3uRo0ZYCD2fQy9JRZhSsmyw3hjyS2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57933},"main":"index.es.js","gitHead":"5765dd4fcc7ea5c2ae1659f54fb52c8302250886","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.14_1758768658247_0.5373759144564307","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"hmtestlh","version":"1.0.15","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.15","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"40d78fc304f8bff1fb9bd1db3a3093df82f94843","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.15.tgz","fileCount":7,"integrity":"sha512-2aA/AohCf7uLirLLzNsbu4xFUVb5srK3MAaJXzHB/rOUU2tJN4yYIScr4hE3I1qEQUh4xv5IZTfIGe2RjSrJug==","signatures":[{"sig":"MEUCICp3Umd3OT0TxWuNE1IUfiLYVQ93H/33AkwrNZT1l4EHAiEAoWgNYx6n+aR00Uh4HG41jabGf7YGiqRQJIOtvEHhkzM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":58651},"main":"index.es.js","gitHead":"5765dd4fcc7ea5c2ae1659f54fb52c8302250886","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.15_1758769480541_0.14656622237765848","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"hmtestlh","version":"1.0.16","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.16","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"e521395a25314fbcf47989454c36f21bb9897f17","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.16.tgz","fileCount":7,"integrity":"sha512-50Ik3HCnJEahiDJRtIZ2UW746bNizNaRuBtjBx5Q8dF38fy74EdGruw1zDvOAAdSGZoGm48kd3jDgwunHqt3TQ==","signatures":[{"sig":"MEUCIA2AHnaX5GlduHzocF3ghI6OqKWvuXTxdTPMBeionw2QAiEA/HkCgSMjGuBRkxDx4WBMcVfyTHPIG+URepgM7BAQvOI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":729522},"main":"index.es.js","gitHead":"5c903b7f0a6e3ffec4a6e029974b7a6961349b2c","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.16_1758785775048_0.3674481027393226","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"hmtestlh","version":"1.0.17","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.17","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"0f4f84bcec6e90a70c6acd226133b4e3e72856fc","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.17.tgz","fileCount":7,"integrity":"sha512-KYkG4EWUtdBGxjcjH+9qBCV7jSTtf0iZyhCIwk+7wNpWn3Khpb6Xa8Tj4Y179qBHI53jTGfZ6dbSAL0dlWfT4g==","signatures":[{"sig":"MEQCIBqCez9u3paE510hyzg3gS6hh0zAWcQoaxG8Wm2jXky2AiBO2jmnJjJGqBgXvxuEx1LgLwWuV9Ul/YrP58MKQcxY3w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80756},"main":"index.es.js","gitHead":"5c903b7f0a6e3ffec4a6e029974b7a6961349b2c","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.17_1758789882867_0.8624487932790885","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"hmtestlh","version":"1.0.18","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.18","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"49723a76ccf37b3f2fd479c7321855380780ae94","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.18.tgz","fileCount":7,"integrity":"sha512-6SZQx6aiBu9cYR45qtzjciK+0OcZWY1hqUGDCShKjH1bEDfH5Y9kXyXRzR7iu9LZLAyl8yzjOhCrUhN5yDBn6g==","signatures":[{"sig":"MEUCIQCBuZoBDG+VefYbm7aq0AicvySpiB4Y+LjmynpceATQKQIgDNKO1Ol1yEQuWjP/oyiymCvn9/NisCpk9sQMIS/LAPM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62833},"main":"index.es.js","gitHead":"5c903b7f0a6e3ffec4a6e029974b7a6961349b2c","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.18_1758799422481_0.7381825903459247","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"hmtestlh","version":"1.0.19","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.19","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"64999580a97f0b3165bbca8accfd0949670cfd72","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.19.tgz","fileCount":7,"integrity":"sha512-MtwDjvq33dKhMQtpjS++Fg6uUTZKCCH59JFvu5jT/3bZYGZ4a2fbCpg3n1rJVnRqI1bloiWGtJKbOHqmrHHmQw==","signatures":[{"sig":"MEYCIQDKmXiobnbmj8c8MJfZoLiTt9NY6IQ9wsz2H85dlfh8pwIhAOPxocX1OU6eV32OWvprsihFCjauu2weKhXgJkovkmxB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63170},"main":"index.es.js","gitHead":"5c903b7f0a6e3ffec4a6e029974b7a6961349b2c","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.19_1758848031893_0.2447898805611175","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"hmtestlh","version":"1.0.20","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.20","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"6d203debb4488fc68c65ca77490ab24a657d7bec","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.20.tgz","fileCount":7,"integrity":"sha512-uP4OAZTSfB/Ee1awRszHqHQOEGxewrc40DKqlcnQHXLubsA8mKX/LbDeY8sS6ep2+KOBdrf5fFCrXC/EwyxQMA==","signatures":[{"sig":"MEUCIQCUgf5uB7PdQPWjhvOcqlAf696SPabMSW62VxniIS1qZAIgFlzRmF9sEKlz6uRDv6c/M6FX7qO4cgfj8Lfqhh1pAdU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63276},"main":"index.es.js","gitHead":"5c903b7f0a6e3ffec4a6e029974b7a6961349b2c","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.20_1758848589462_0.5401606160078913","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"name":"hmtestlh","version":"1.0.21","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.21","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"6fb4e4fc1cecfd683933715b2d6104a6d5f154e5","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.21.tgz","fileCount":7,"integrity":"sha512-UOc+gf2GeGsdiDb21l8/CTS2WwT4zgJqcTUhItQ56t9m6YyYcd5B7PEooUYPiITMLiOQrop/fTLMxrErGqX0nA==","signatures":[{"sig":"MEQCIHmw3djYL+rm4ux1iiADk7xrEW7bpnPYRsZjPP9x6WEFAiB6Wo4N2ZFr7I/4hPu29gykzrkKtehTSbr/JdYJrGQlAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71180},"main":"index.es.js","gitHead":"e00615a7f42c8a6fe7e6edcb77658dead5f6bf1e","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.21_1758852219719_0.4332657143659058","host":"s3://npm-registry-packages-npm-production"}},"1.0.22":{"name":"hmtestlh","version":"1.0.22","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.22","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"474c71911b36082a70cffc43bdf46bc347416e81","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.22.tgz","fileCount":7,"integrity":"sha512-swnrF8VrG4FREmVkGjqUx8Q3YUAdqZOEiKJhrHteJ1bxo/8r3A0bO48RNzkhwLC9kdQWK8BHpDBNa7MlWYsTRA==","signatures":[{"sig":"MEQCIHXr81KVL/upPxMqBcZeqwSY/X93VKmSSAaGyGfWWmbsAiA13A23DNZBu2IoJMNCqnKNs3rPeAvZblz15xPf/CUlyA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":71586},"main":"index.es.js","gitHead":"e00615a7f42c8a6fe7e6edcb77658dead5f6bf1e","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.22_1758853863502_0.78760791311642","host":"s3://npm-registry-packages-npm-production"}},"1.0.23":{"name":"hmtestlh","version":"1.0.23","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.23","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"04ccffe0071343f30bad4ea3f40ca6d1a595df17","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.23.tgz","fileCount":7,"integrity":"sha512-Bfh2LEdou6HD7w5qZaJnA2ZrCNm8j2fPE0ZXDnzE3RxFOaJABw9GAppp6KGHU/PUB3ivvafLpcnDWXwae0nHDA==","signatures":[{"sig":"MEQCID7TuqtYUYL70ARbD+g/tk8rkSZHufT9r3xTeLguVWZZAiB1jSxtRiom3KcbLioj+4fRV5RjZSFYb7V7+Tf1j8CHgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90948},"main":"index.es.js","gitHead":"8f4d9017abe01aa9f45d36397f31fe54a385b9cf","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.23_1758870178186_0.7947431737387849","host":"s3://npm-registry-packages-npm-production"}},"1.0.24":{"name":"hmtestlh","version":"1.0.24","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.24","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"9e3a4ae8536368378f214217e9dcc6e0afffa3bb","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.24.tgz","fileCount":7,"integrity":"sha512-O8nXc2qGtKt7OrwmPla7hBLpJbG32BayankcKx2myVC9tQ8SnKc4FlO8J0qIOWoy197pL4HzQvVgQh27J7ixHw==","signatures":[{"sig":"MEYCIQDm59m5OIEhvZnzsDP8o6k+VcJ7PDLM7MKSz9ebFQ7lmQIhAM5+pON+V33BXo/gGX8e53qO9rfT5JYoioadXbIq8Elg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91079},"main":"index.es.js","gitHead":"8f4d9017abe01aa9f45d36397f31fe54a385b9cf","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.24_1758873127795_0.18846633506401678","host":"s3://npm-registry-packages-npm-production"}},"1.0.25":{"name":"hmtestlh","version":"1.0.25","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.25","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"0a61b481c3a848a6e9361cf9208095d17df606d1","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.25.tgz","fileCount":7,"integrity":"sha512-2jARAJjjkH9tC0Vp68txHn6WKjvaA07dtJA+SOUlbizbX916I4v7+2BL4SP4TKseO5AryXQ6dwt9+u8srnkXPQ==","signatures":[{"sig":"MEQCIAzhUis7yc693fopRzsCDt+fThjrcR4Gm+fqxPsL0zIbAiAek3Y92+DjwCi0pbQV/FF35Fbo7WRiz1NhRT9gJb3O8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121132},"main":"index.es.js","gitHead":"88da837146b066afb4575de9f19bec2d4f91f84d","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.25_1759023316871_0.8735834462203331","host":"s3://npm-registry-packages-npm-production"}},"1.0.26":{"name":"hmtestlh","version":"1.0.26","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.26","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"e4f33bd8fbaf7cebd9c7db06b882edf2babfe630","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.26.tgz","fileCount":7,"integrity":"sha512-4sD8A9+tep8DLqikVq93p7W70651gfcssnE7xECPoLXTZI/Hd/3Xmv075Boogirw2CxejhICbWxn9LdCEZYtFA==","signatures":[{"sig":"MEUCIQD1nTuqH2XmS0kHiYvxUJ2flYb68jYWOeAzVIJ6e/2QogIgAJnVebiI9aGRiOLEKwT4boEP3WiLVZqGuSxup2nJAJI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":122301},"main":"index.es.js","gitHead":"88da837146b066afb4575de9f19bec2d4f91f84d","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.26_1759025777494_0.626618692723002","host":"s3://npm-registry-packages-npm-production"}},"1.0.27":{"name":"hmtestlh","version":"1.0.27","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.27","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"5f902a30765cd7408a9705ec5996c92325152af6","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.27.tgz","fileCount":7,"integrity":"sha512-GEsOUtaLYIKkGcZHW54Im1Rm0R0eoggYMVPNjEVZyTmD+mCcFaLgm8vOoC+qP2XKapS1gXktXwbk27YZR9ldMw==","signatures":[{"sig":"MEUCIQDtq3sVDalBp8al5H0gWsReX0QZpGeqFrLiO1ublrOAngIgB1nYaIrclGJDO2XkoYWNEpdLlHVZbMeq5YChaviabj0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125684},"main":"index.es.js","gitHead":"ace024f1584984388241d8fcd4d9d2ed0319ce22","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.27_1759027339971_0.5148942380983355","host":"s3://npm-registry-packages-npm-production"}},"1.0.28":{"name":"hmtestlh","version":"1.0.28","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.28","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"b4590456254560ec0f2471a324ee91e340985391","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.28.tgz","fileCount":7,"integrity":"sha512-n9xOUBX/OoI9Gdu0kfiwhX8UNv2oUEzIoAJ7HFe2iUvDvGbUu4VQdX9cM9P+C0D3ehE3G8HCus6EZq7BZ+a+Vw==","signatures":[{"sig":"MEUCIQC3MF+7OCzzK8J5cllRUTcmwJO0YR+70WLoeMV5N3G6fAIgHw9Cknuxh5jhSVpJ3WHbF3aaK3H1yl3JOrm0dfDM9cg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":157281},"main":"index.es.js","gitHead":"ace024f1584984388241d8fcd4d9d2ed0319ce22","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.28_1759046556666_0.12795716803011614","host":"s3://npm-registry-packages-npm-production"}},"1.0.29":{"name":"hmtestlh","version":"1.0.29","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.29","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"9e5bf69e88b37c4f3f8742ce8d2aae89450066a0","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.29.tgz","fileCount":7,"integrity":"sha512-gGP9QcoerIGUb1Sl6dXCaxpQX9oMO5Gc3cJIgk/cLZcW0++HEA4I7MgsnrRXSnh0RjB/1RWIL/a1OTfcHkx+XQ==","signatures":[{"sig":"MEUCIQCshtCSrfUmU2mg+IwWKEwchHj0IKwEavlMxR/99GWwAQIgElYBFScX1yWZufD5NkJNEMhdggyUxNL3gAzs0hcDmuY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":165832},"main":"index.es.js","gitHead":"ace024f1584984388241d8fcd4d9d2ed0319ce22","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.29_1759058780083_0.640306510357554","host":"s3://npm-registry-packages-npm-production"}},"1.0.30":{"name":"hmtestlh","version":"1.0.30","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.30","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"cbab89af101e09c2cb51c4df5e377d0f901ac01e","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.30.tgz","fileCount":7,"integrity":"sha512-/31rgdqDNVxYDGtHTJsxxOJX9iB27vHVAEg2xvO8BgyBcjMiAImvgetAYV1zzLj+pbhsrA7UuJSSM2tDjXhuEQ==","signatures":[{"sig":"MEUCIDIY56xHOOjmZmFMx+cGkeygvh2WVPaBW0LbHhpxK/Z5AiEA0fpyrIpo7LboC078/wLKV2+TjH9nvZBNyv3R4uqRO+8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":166357},"main":"index.es.js","gitHead":"ace024f1584984388241d8fcd4d9d2ed0319ce22","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.30_1759059409843_0.963278863807721","host":"s3://npm-registry-packages-npm-production"}},"1.0.31":{"name":"hmtestlh","version":"1.0.31","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.31","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"542fbc260f78b49667c3caf1407b1fd67d7cab36","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.31.tgz","fileCount":7,"integrity":"sha512-7bkU4Thntq2ldzQG1//gepaArivcxnH6UawlZmzRG0Or84RzbgBlVBbhZpR3NwBOHwv4XvmiVAMBx6LvJo45vg==","signatures":[{"sig":"MEYCIQDyo0Y17wYwcx9ApIluY2yinkCK8g+rGriBAWA0Rwa54AIhAIQv5mdMPIAJpCxG5RM57se9XBWz7f+y4DozwVGs/W+h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":166414},"main":"index.es.js","gitHead":"ace024f1584984388241d8fcd4d9d2ed0319ce22","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.31_1759111343716_0.7587335315588017","host":"s3://npm-registry-packages-npm-production"}},"1.0.32":{"name":"hmtestlh","version":"1.0.32","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.32","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"e4faafe18a4d3a8c66491c3f092c754a039a4ff0","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.32.tgz","fileCount":7,"integrity":"sha512-W9m+VxjlHQijNcY+vdCQJqSS27YGXhpkW1eNS4Cz3U/CCWHB+hnfx95biYUq2mVTjiFjegSHoYdybAO0/odCXA==","signatures":[{"sig":"MEYCIQCWxFZH3b8zO3QH3iETwVTLuGtuqOocY2HTGNXmuYhfrAIhAPqGEwNA3nHOmGLVRctYNHPmh0u5ita+1snD8PjFSgp7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":166664},"main":"index.es.js","gitHead":"ace024f1584984388241d8fcd4d9d2ed0319ce22","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.32_1759115205757_0.06571650233911819","host":"s3://npm-registry-packages-npm-production"}},"1.0.33":{"name":"hmtestlh","version":"1.0.33","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.33","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"38bb2c72b5e1bc296c2f4e8152dc22f0c66e8baa","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.33.tgz","fileCount":7,"integrity":"sha512-NaDqzob2m0QH2t93HZjxRzadAnhGbi3uQCBFVgOOs41Ypl1MpL4K9og9yfMp0/sXB+jHbxHIivvvDsGqE58enw==","signatures":[{"sig":"MEYCIQCBVslNaSWS6JSpm+NTykXNUbIYF9/LTqL9CpnK2+XN0QIhAM6FMJuXEvC2hZ2x5tx/EjhsHcbolPjkSvgxOJschNfX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":175442},"main":"index.es.js","gitHead":"deb5a4b6b231211e1f64888c0e5e17caa1b71de7","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.33_1759130751870_0.9021431681922789","host":"s3://npm-registry-packages-npm-production"}},"1.0.34":{"name":"hmtestlh","version":"1.0.34","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.34","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"b08fc6080da5d473d9d43a78280b8c75024df341","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.34.tgz","fileCount":7,"integrity":"sha512-mm2izHJQmj5WvpA/HRF4PEEAQ1D2VjSkmDUqsCBxH3UoDANbqO64TaPFWw5MNMa2OCbjKADMmHpLo7CwOKPeoA==","signatures":[{"sig":"MEUCIDd4aAJGv7QF2EnelyMvpXCKdTu8oI3CAWHSF9qeKrpuAiEAkgKjjWcC1KVecdC1JL54YrCnJlZPOREZWEGngZzX4RQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":187504},"main":"index.es.js","gitHead":"6dfe4a44cae74aafa366a20fa63a89f56702a555","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.34_1759196025037_0.8066499342662321","host":"s3://npm-registry-packages-npm-production"}},"1.0.35":{"name":"hmtestlh","version":"1.0.35","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.35","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"aa388b120ef36c4cc110d6ee4df3cde119c2267c","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.35.tgz","fileCount":7,"integrity":"sha512-EmYHrU7IxcsNd5tzhOQ244j9EG2DPdHnYXV7LVu2Zmkd9YohKTKYnzpcEPZtQUJlACpQ7uDCRe4LcQadnGgNvg==","signatures":[{"sig":"MEQCIGuvGU4BeownWcV60J4NylaAg1lsg1rIrk893wG9iLuGAiAXKLsskIRrUQYG5oKurxdQfBKkrd1DSCfqSrOHEAXsgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":187587},"main":"index.es.js","gitHead":"6dfe4a44cae74aafa366a20fa63a89f56702a555","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.35_1759197272009_0.7812967665524773","host":"s3://npm-registry-packages-npm-production"}},"1.0.36":{"name":"hmtestlh","version":"1.0.36","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.36","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"d4ebe900d50403cc00274347cdee23694e6e9c6a","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.36.tgz","fileCount":7,"integrity":"sha512-QnM+q+ip/yDWL0ifYxXuUip/5kx8tu5QmgvQuF55XSmMN8zrm3p+Mh50WjKfqNQ8k85MQrqXvb2y8VxJRL4ugA==","signatures":[{"sig":"MEYCIQD5EOdK1ssknW+Hbyp8pHinXR8e0KXXt0j+8qf1DgYEOAIhAMEzwN/tVfJqzfYoosLy7CylhskwPGy0Sbx68k8xVev0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188699},"main":"index.es.js","gitHead":"6dfe4a44cae74aafa366a20fa63a89f56702a555","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.36_1759202579688_0.633684056844823","host":"s3://npm-registry-packages-npm-production"}},"1.0.37":{"name":"hmtestlh","version":"1.0.37","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.37","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"6ee1d543a0a929a07d28cffa80526e43c35fda0d","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.37.tgz","fileCount":7,"integrity":"sha512-0W678QqOPxlylbzesOlfnNQOi1rEKqoXTOF4Ocp6OCQ+p1yQtVKtWa3I//y3QMeyjv+6HOqi78mEAToJtTmwJw==","signatures":[{"sig":"MEUCIQCHkPe4aVcirJbmRcBUslMDfpxkDpP9pmy9F/ER9o9BJgIgAqCAR2qfO74Ycjc5yKw+XXv4U3HkN+wPRQP8xan+Hf4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188459},"main":"index.es.js","gitHead":"6dfe4a44cae74aafa366a20fa63a89f56702a555","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.37_1759203335125_0.7154050526401476","host":"s3://npm-registry-packages-npm-production"}},"1.0.38":{"name":"hmtestlh","version":"1.0.38","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.38","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"fd58e02e39cbbf15bc4b94da6edc7b299456a04c","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.38.tgz","fileCount":7,"integrity":"sha512-lcCCzUAqk8hQJlUDwUgpl7gPKNgmna+KpjXXGOwkqHeLl3EoCcPRQQIvTg5GFmqUhP+UuqnHRKpmYPeLNlMMyw==","signatures":[{"sig":"MEUCIEmfMbsP2l044a0JBY4sXW82/uSCbFmgqq5j+Rni76ywAiEA8KXRLwUrNK1ft18yLZ6vus1I8Fjek7IkCdwsVbimvPM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188475},"main":"index.es.js","gitHead":"6dfe4a44cae74aafa366a20fa63a89f56702a555","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.38_1759203739874_0.8326505956125048","host":"s3://npm-registry-packages-npm-production"}},"1.0.39":{"name":"hmtestlh","version":"1.0.39","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.39","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"de04fa4d98e8a879856acd4377238f44067eb43d","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.39.tgz","fileCount":7,"integrity":"sha512-Elhti+SpVOXpFSz3b8wCh0QeDcPYmK4B1Q1d+MrfBiHFMj5dnlGqcylqri3wwt5G1IM3QAa58PmdbhBGY+vCFw==","signatures":[{"sig":"MEQCIH6/eoi6S4xjlYfcx3cNP4sA1ChPVLNZybOF9mbiajG7AiA/2lmQQte/+K+Ewh3ByM+VorM+PF6keqvxIF7CDY/a6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188694},"main":"index.es.js","gitHead":"6dfe4a44cae74aafa366a20fa63a89f56702a555","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.39_1759204193369_0.19535689065682194","host":"s3://npm-registry-packages-npm-production"}},"1.0.40":{"name":"hmtestlh","version":"1.0.40","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.40","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"dd381f9bab5d99e3988f69d0d4462fd47b6611e1","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.40.tgz","fileCount":7,"integrity":"sha512-1VERlnIU3zPE9HIaC7AipGKcRHpv4PxTIzEeuyUeVeAxm0DFvpqJT5P4arVr09sFDphOAB0F0TlN8r36Wq4R/Q==","signatures":[{"sig":"MEUCIFNFLVOkRwWAjsFlqu/2MpbBmWuZKWZxVhuYCpvWXoJHAiEArhN3nFrpkrZ9wzCr2kwpIIeUHvwaLZSGjJi3Iak1iP8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188746},"main":"index.es.js","gitHead":"6dfe4a44cae74aafa366a20fa63a89f56702a555","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.40_1759212875013_0.3705100870070004","host":"s3://npm-registry-packages-npm-production"}},"1.0.41":{"name":"hmtestlh","version":"1.0.41","keywords":[],"author":"","license":"ISC","_id":"hmtestlh@1.0.41","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"a9e77730965b999d8795e0bcce5500ae93f18712","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.41.tgz","fileCount":7,"integrity":"sha512-k85Ikuj4Pt8YpamfqIDutuiHfGXOkWzqIVJd+nd4yk7c9Vc6niXPnLsE881gTWfJ2iioK4jpQAda7LsZQIWmcw==","signatures":[{"sig":"MEUCIA0UL/ClQYKLz4/KdZunBWXwaPOtDXOQ6ozv6qPc3eytAiEAr+3QIKo8vyyn5N5FVxq1QM//VhKhk1ZdmVaIju44RkA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188823},"main":"index.es.js","gitHead":"6dfe4a44cae74aafa366a20fa63a89f56702a555","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"","directories":{},"_nodeVersion":"22.18.0","_hasShrinkwrap":false,"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.41_1759213310354_0.880200350765336","host":"s3://npm-registry-packages-npm-production"}},"1.0.42":{"name":"hmtestlh","version":"1.0.42","keywords":["vue3","component library","element-plus","ui"],"author":{"name":"VHD"},"license":"MIT","_id":"hmtestlh@1.0.42","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"3e3b77678b8ac6a29f19b499976113586e57a9f4","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.42.tgz","fileCount":38,"integrity":"sha512-LjfaMM1vxORPZP4ZW1Ytdq2w7hIs1TqxH7065j+lJHjAD3c66ivL1Z/lUXilfbjLaWKDYU9iMrd0z72YYKMLVg==","signatures":[{"sig":"MEUCIQCtpAdWnis2KbCWDXGBKj86Rs7tuZQ4otg+9dtyuPE8nQIgbb+ycKFhzspFJ35rkyHQgvI8HcU8F4ksaH5I8UvvRp8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130839},"main":"harmanUI/index.umd.js","type":"module","types":"harmanUI/types/index.d.ts","module":"harmanUI/index.es.js","exports":{".":{"import":"./harmanUI/index.es.js","require":"./harmanUI/index.umd.js"},"./style":"./harmanUI/style.css"},"gitHead":"6f96b7feec126cb11698ae1b081f19836dd42322","private":false,"scripts":{"dev":"vite","build":"vite build","build-package":"vite build --config vite.config.package.js"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"Custom Vue 3 Component Library, Extended from Element Plus","directories":{},"_nodeVersion":"22.18.0","dependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_hasShrinkwrap":false,"devDependencies":{"less":"^4.2.0","mitt":"^3.0.1","vite":"^5.0.8","axios":"^1.6.5","pinia":"^2.1.7","vue-tsc":"^3.1.2","vue-i18n":"^10.0.4","fast-glob":"^3.3.2","spark-md5":"^3.0.2","typescript":"^5.9.3","vue-router":"4","normalize.css":"^8.0.1","unplugin-icons":"^0.18.5","blueimp-md5-es6":"^2.7.4","vite-plugin-dts":"^4.5.4","@iconify-json/ep":"^1.1.15","@vitejs/plugin-vue":"^4.5.2","vite-plugin-eslint":"^1.8.1","unplugin-auto-import":"^20.1.0","vite-plugin-svg-icons":"^2.0.1","unplugin-vue-components":"^0.26.0","@vuedx/typescript-plugin-vue":"^0.7.6"},"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.42_1761612508956_0.3755116297459675","host":"s3://npm-registry-packages-npm-production"}},"1.0.43":{"name":"hmtestlh","version":"1.0.43","keywords":["vue3","component library","element-plus","ui"],"author":{"name":"VHD"},"license":"MIT","_id":"hmtestlh@1.0.43","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"bb7a2f819df2fa423fc5853d0e728dcb5647bdd4","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.43.tgz","fileCount":38,"integrity":"sha512-8CL1b5lCbcynpF8YvTO0ieYTRG0Nk0PJjNTSDO4Wfglb8TNaCuj2zr1EGTQUm5lpP7V1JgT09Xbpr6z8Q7ePSQ==","signatures":[{"sig":"MEUCIQDXxQfaRW3iLRVZK0h2Gbft3VrG3FbZAhtZ2PTzOyKaZQIgLJRZjX5vWh7SDId7BKtB8GWJNpFrL/iX7ZNPLHGsOs8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":130930},"main":"harmanUI/index.umd.js","type":"module","types":"harmanUI/types/index.d.ts","module":"harmanUI/index.es.js","exports":{".":{"types":"./harmanUI/types/index.d.ts","import":"./harmanUI/index.es.js","require":"./harmanUI/index.umd.js"},"./style":"./harmanUI/style.css","./style.css":"./harmanUI/style.css"},"gitHead":"6f96b7feec126cb11698ae1b081f19836dd42322","private":false,"scripts":{"dev":"vite","build":"vite build","build-package":"vite build --config vite.config.package.js"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"Custom Vue 3 Component Library, Extended from Element Plus","directories":{},"_nodeVersion":"22.18.0","dependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_hasShrinkwrap":false,"devDependencies":{"less":"^4.2.0","mitt":"^3.0.1","vite":"^5.0.8","axios":"^1.6.5","pinia":"^2.1.7","vue-tsc":"^3.1.2","vue-i18n":"^10.0.4","fast-glob":"^3.3.2","spark-md5":"^3.0.2","typescript":"^5.9.3","vue-router":"4","normalize.css":"^8.0.1","unplugin-icons":"^0.18.5","blueimp-md5-es6":"^2.7.4","vite-plugin-dts":"^4.5.4","@iconify-json/ep":"^1.1.15","@vitejs/plugin-vue":"^4.5.2","vite-plugin-eslint":"^1.8.1","unplugin-auto-import":"^20.1.0","vite-plugin-svg-icons":"^2.0.1","unplugin-vue-components":"^0.26.0","@vuedx/typescript-plugin-vue":"^0.7.6"},"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.43_1761618237645_0.14871611118068273","host":"s3://npm-registry-packages-npm-production"}},"1.0.44":{"name":"hmtestlh","version":"1.0.44","keywords":["vue3","component library","element-plus","ui"],"author":{"name":"VHD"},"license":"MIT","_id":"hmtestlh@1.0.44","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"dist":{"shasum":"a58a4438a39b0699e912a0a1f3946ed923981860","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.44.tgz","fileCount":40,"integrity":"sha512-CjuUpgq8Ln0G3S+/MUKmI250GhDuByAzmm47G3whWf/Ytuq9uDDL2nlpuHp5iJ+PgG7rDy+XjH7XtqDbMxqwLA==","signatures":[{"sig":"MEQCIDMiTRNPyJgCiukz6qpzhT1CGb/DFYbgtiEM3kcRPNw7AiAnK7FRf9ootkTwPEI4/OSO64jCkGXMU/oYj15fRG0jog==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128546},"main":"harmanUI/index.umd.js","type":"module","types":"harmanUI/types/index.d.ts","module":"harmanUI/index.es.js","exports":{".":{"types":"./harmanUI/types/index.d.ts","import":"./harmanUI/index.es.js","require":"./harmanUI/index.umd.js"},"./style":"./harmanUI/style.css","./style.css":"./harmanUI/style.css"},"gitHead":"6f96b7feec126cb11698ae1b081f19836dd42322","private":false,"scripts":{"dev":"vite","build":"vite build","build-package":"vite build --config vite.config.package.js"},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"_npmVersion":"10.9.3","description":"Custom Vue 3 Component Library, Extended from Element Plus","directories":{},"_nodeVersion":"22.18.0","dependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_hasShrinkwrap":false,"devDependencies":{"less":"^4.2.0","mitt":"^3.0.1","vite":"^5.0.8","axios":"^1.6.5","pinia":"^2.1.7","vue-tsc":"^3.1.2","vue-i18n":"^10.0.4","fast-glob":"^3.3.2","spark-md5":"^3.0.2","typescript":"^5.9.3","vue-router":"4","normalize.css":"^8.0.1","unplugin-icons":"^0.18.5","blueimp-md5-es6":"^2.7.4","vite-plugin-dts":"^4.5.4","@iconify-json/ep":"^1.1.15","@vitejs/plugin-vue":"^4.5.2","vite-plugin-eslint":"^1.8.1","unplugin-auto-import":"^20.1.0","vite-plugin-svg-icons":"^2.0.1","unplugin-vue-components":"^0.26.0","@vuedx/typescript-plugin-vue":"^0.7.6"},"peerDependencies":{"vue":"^3.3.11","@vueuse/core":"^13.7.0","element-plus":"^2.6.3"},"_npmOperationalInternal":{"tmp":"tmp/hmtestlh_1.0.44_1761703123431_0.6473078608276819","host":"s3://npm-registry-packages-npm-production"}},"1.0.45":{"name":"hmtestlh","private":false,"version":"1.0.45","type":"module","types":"harmanUI/types/index.d.ts","description":"Custom Vue 3 Component Library, Extended from Element Plus","keywords":["vue3","component library","element-plus","ui"],"author":{"name":"VHD"},"license":"MIT","main":"harmanUI/index.umd.js","module":"harmanUI/index.es.js","exports":{".":{"import":"./harmanUI/index.es.js","require":"./harmanUI/index.umd.js","types":"./harmanUI/types/index.d.ts"},"./style":"./harmanUI/style.css","./style.css":"./harmanUI/style.css"},"scripts":{"dev":"vite","build":"vite build","build-package":"vite build --config vite.config.package.js"},"peerDependencies":{"@vueuse/core":"^13.7.0","element-plus":"^2.6.3","vue":"^3.3.11"},"dependencies":{"@vueuse/core":"^13.7.0","element-plus":"^2.6.3","vue":"^3.3.11"},"devDependencies":{"@iconify-json/ep":"^1.1.15","@vitejs/plugin-vue":"^4.5.2","@vuedx/typescript-plugin-vue":"^0.7.6","axios":"^1.6.5","blueimp-md5-es6":"^2.7.4","fast-glob":"^3.3.2","less":"^4.2.0","mitt":"^3.0.1","normalize.css":"^8.0.1","pinia":"^2.1.7","spark-md5":"^3.0.2","typescript":"^5.9.3","unplugin-auto-import":"^20.1.0","unplugin-icons":"^0.18.5","unplugin-vue-components":"^0.26.0","vite":"^5.0.8","vite-plugin-dts":"^4.5.4","vite-plugin-eslint":"^1.8.1","vite-plugin-svg-icons":"^2.0.1","vue-i18n":"^10.0.4","vue-router":"4","vue-tsc":"^3.1.2"},"_id":"hmtestlh@1.0.45","gitHead":"6f96b7feec126cb11698ae1b081f19836dd42322","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-MZzBRKB4/CGr1LR8hZ0JUg7YSy3Oq6gKcIvS1HQ7XPJhT9U7Q0/V59aV1KNJ8P6ENY3E61qoB/AFnVRrQQpNHQ==","shasum":"c3f1507786f00f3615ddad81ad180922a5611ef9","tarball":"https://registry.npmjs.org/hmtestlh/-/hmtestlh-1.0.45.tgz","fileCount":40,"unpackedSize":132696,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD2l8jUDN1hdiqyMRqbz9Yl9AG3mvu7lUrddvb9eXjCPwIhAIYmGpmFA9WHqp6B+j3ZtAzD4SOdcN++6Wq7gV6DxzQN"}]},"_npmUser":{"name":"liu.hang","email":"liu.hang@vhd.com.cn"},"directories":{},"maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/hmtestlh_1.0.45_1761705152198_0.17448893489003647"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-18T01:56:16.304Z","modified":"2025-10-29T02:32:32.607Z","1.0.0":"2025-09-18T01:56:16.542Z","1.0.1":"2025-09-18T02:50:29.945Z","1.0.2":"2025-09-18T09:10:28.136Z","1.0.3":"2025-09-22T03:38:50.394Z","1.0.4":"2025-09-22T06:31:30.532Z","1.0.5":"2025-09-22T06:53:55.678Z","1.0.6":"2025-09-22T08:06:15.990Z","1.0.7":"2025-09-22T09:25:49.987Z","1.0.8":"2025-09-22T09:58:28.813Z","1.0.9":"2025-09-23T01:07:39.223Z","1.0.10":"2025-09-23T03:18:10.361Z","1.0.11":"2025-09-23T03:32:58.858Z","1.0.12":"2025-09-25T02:12:44.834Z","1.0.13":"2025-09-25T02:34:02.635Z","1.0.14":"2025-09-25T02:50:58.479Z","1.0.15":"2025-09-25T03:04:40.722Z","1.0.16":"2025-09-25T07:36:15.276Z","1.0.17":"2025-09-25T08:44:43.085Z","1.0.18":"2025-09-25T11:23:42.687Z","1.0.19":"2025-09-26T00:53:52.070Z","1.0.20":"2025-09-26T01:03:09.654Z","1.0.21":"2025-09-26T02:03:39.928Z","1.0.22":"2025-09-26T02:31:03.719Z","1.0.23":"2025-09-26T07:02:58.389Z","1.0.24":"2025-09-26T07:52:07.979Z","1.0.25":"2025-09-28T01:35:17.075Z","1.0.26":"2025-09-28T02:16:17.774Z","1.0.27":"2025-09-28T02:42:20.164Z","1.0.28":"2025-09-28T08:02:36.856Z","1.0.29":"2025-09-28T11:26:20.279Z","1.0.30":"2025-09-28T11:36:50.041Z","1.0.31":"2025-09-29T02:02:23.897Z","1.0.32":"2025-09-29T03:06:45.950Z","1.0.33":"2025-09-29T07:25:52.068Z","1.0.34":"2025-09-30T01:33:45.235Z","1.0.35":"2025-09-30T01:54:32.180Z","1.0.36":"2025-09-30T03:22:59.865Z","1.0.37":"2025-09-30T03:35:35.310Z","1.0.38":"2025-09-30T03:42:20.067Z","1.0.39":"2025-09-30T03:49:53.547Z","1.0.40":"2025-09-30T06:14:35.192Z","1.0.41":"2025-09-30T06:21:50.535Z","1.0.42":"2025-10-28T00:48:29.169Z","1.0.43":"2025-10-28T02:23:57.853Z","1.0.44":"2025-10-29T01:58:43.650Z","1.0.45":"2025-10-29T02:32:32.420Z"},"author":{"name":"VHD"},"license":"MIT","keywords":["vue3","component library","element-plus","ui"],"description":"Custom Vue 3 Component Library, Extended from Element Plus","maintainers":[{"name":"liu.hang","email":"liu.hang@vhd.com.cn"}],"readme":"# Vue3 + Vite\r\n\r\nVue3 + Vite\r\n\r\n## 命令\r\n\r\n| 命令                  | 说明     | 对应环境文件     |\r\n| --------------------- | -------- | ---------------- |\r\n| npm install           | 安装依赖 | node_modules     |\r\n| npm run dev           | 启动     | .env.development |\r\n| npm run build-package | 打npm包  | .env.production  |\r\n\r\n# 发包流程\r\n\r\n1.src/components目录下开发对应组件,并注册在src/components/index.js中；\r\n2.使用build-package命令(npm run build-package等)；\r\n3.生成的harmanUI文件夹就是对应的包组件，修改package.json中的version号（一般为补丁版本号加1），使用npm piblish上传至对应仓库；\r\n\r\n# 公司私有云配置\r\n设置npm源为公司私库源：http://192.168.13.228:8624/npm/test (npm config set registry http://192.168.13.228:8624/npm/test)\r\n开发时和安装其他依赖时，还是要换回淘宝镜像https://registry.npmmirror.com/(npm config set registry https://registry.npmmirror.com/)\r\n\r\n# 注意\r\n本包已内置 Element Plus 响应式工具类样式（display.css），无需重复引入。\r\n\r\n# HarmanUI 组件库使用指南\r\n\r\n## 环境依赖\r\nHarmanUI 基于 Vite、Vue3、Element Plus 封装，使用前请确保项目已集成以下依赖：\r\n· Element Plus\r\n· @vueuse/core\r\n依赖安装命令：\r\nnpm install element-plus @vueuse/core\r\n\r\n## 切换npm源\r\n1.设置为公司私有库（用于安装 HarmanUI）：\r\nnpm config set registry http://192.168.13.228:8624/npm/test\r\n\r\n2.若需安装其他第三方组件，需切换至官方源或镜像源（示例）：\r\n官方源：npm config set registry https://registry.npmjs.org\r\n淘宝镜像源：npm config set registry https://registry.npmmirror.com\r\n\r\n## 安装组件库\r\n切换至公司私有库后，执行以下命令安装：\r\nnpm install harmanui\r\n\r\n## 引入和使用\r\n在项目入口文件（通常为 main.js 或 main.ts）中引入：\r\n```js\r\nimport { createApp } from 'vue'\r\nimport App from './App.vue'\r\n// 引入 HarmanUI\r\nimport harmanui from 'harmanui'\r\nimport 'harmanui/style.css'\r\n\r\n// 注册组件库\r\nconst app = createApp(App)\r\napp.use(harmanui)\r\napp.mount('#app')\r\n```\r\n\r\n完成上述配置后，即可在项目中直接使用 HarmanUI 封装的所有组件。\r\n\r\n## VButtonGroup\r\n\r\n### 功能说明\r\n主要用于表单提交、弹窗确认等场景，支持自定义按钮显示 / 隐藏、文本、禁用状态，提供统一的交互与样式规范。\r\n\r\n### 基础用法（快速引入）\r\n<template>\r\n  <VButtonGroup\r\n    @cancel=\"handleCancel\"\r\n    @accept=\"handleAccept\"\r\n  />\r\n</template>\r\n\r\n<script setup>\r\nconst handleCancel = () => {\r\n  console.log('点击取消按钮')\r\n}\r\n\r\nconst handleAccept = () => {\r\n  console.log('点击确认按钮')\r\n}\r\n</script>\r\n\r\n### prop参数列表\r\n\r\n| 参数名       | 类型    | 默认值 | 是否必传 | 说明                                                                              |\r\n| ------------ | ------- | ------ | -------- | --------------------------------------------------------------------------------- |\r\n| `nocancel`   | Boolean | false  | 否       | 控制“取消”按钮显示/隐藏，`true` 隐藏按钮，`false` 显示按钮（默认显示）。          |\r\n| `noaccept`   | Boolean | false  | 否       | 控制“确认”按钮显示/隐藏，`true` 隐藏按钮，`false` 显示按钮（默认显示）。          |\r\n| `cancelText` | String  | ''     | 否       | 自定义“取消”按钮文本，未传值时使用默认文本“Cancel”。                              |\r\n| `acceptText` | String  | ''     | 否       | 自定义“确认”按钮文本，未传值时使用默认文本“Accept”。                              |\r\n| `disabled`   | Boolean | false  | 否       | 控制整个按钮组禁用状态，`true` 时所有按钮禁用（点击无响应），`false` 时正常可用。 |\r\n\r\n### emit事件列表\r\n\r\n| 事件名   | 触发时机             | 说明                                          |\r\n| -------- | -------------------- | --------------------------------------------- |\r\n| `cancel` | 点击“取消”按钮时触发 | 需在父组件中通过 `@cancel` 监听并编写回调逻辑 |\r\n| `accept` | 点击“确认”按钮时触发 | 需在父组件中通过 `@accept` 监听并编写回调逻辑 |\r\n\r\n### 完整调用代码\r\n<template>\r\n  <div>\r\n    <VButtonGroup\r\n      :nocancel=\"false\"          \r\n      :noaccept=\"false\"          \r\n      cancelText=\"取消操作\"       \r\n      acceptText=\"确认提交\"       \r\n      :disabled=\"isDisabled\"     \r\n      @cancel=\"handleCancel\"     \r\n      @accept=\"handleAccept\"     \r\n    >\r\n      <el-button \r\n        type=\"warning\" \r\n        size=\"small\" \r\n        @click=\"handleReset\"\r\n        style=\"margin-right: 8px;\"\r\n      >\r\n        重置\r\n      </el-button>\r\n    </VButtonGroup>\r\n  </div>\r\n</template>\r\n\r\n<script setup>\r\nimport { ref } from 'vue'\r\n\r\nconst isDisabled = ref(false)\r\n\r\nconst handleCancel = () => {\r\n  console.log('触发取消事件：执行取消逻辑（如关闭弹窗/重置状态）')\r\n}\r\n\r\nconst handleAccept = () => {\r\n  console.log('触发确认事件：执行提交逻辑（如表单提交/数据保存）')\r\n}\r\n\r\nconst handleReset = () => {\r\n  console.log('触发重置事件：执行重置逻辑（如清空表单）')\r\n}\r\n</script>\r\n\r\n## VCard\r\n\r\n### 功能说明\r\n用于页面内容的卡片式容器展示，支持自定义卡片标题、标题对齐方式，提供头部（header）和主体（body）两个插槽，可灵活填充内容，同时具备统一的卡片样式规范，适配不同场景下的内容承载需求（如数据展示、表单包裹、模块分区等）。\r\n\r\n### 基础用法（快速引入）\r\n<template>​\r\n  <VCard title=\"用户信息卡片\">​\r\n  </VCard>​\r\n</template>\r\n\r\n### prop参数列表\r\n| 参数名       | 类型   | 默认值  | 是否必传 | 说明                                                                                              |\r\n| ------------ | ------ | ------- | -------- | ------------------------------------------------------------------------------------------------- |\r\n| `title`      | String | ''      | 否       | 卡片标题文本，若未传值且未使用 `header` 插槽，卡片头部将不显示标题内容。                          |\r\n| `titleAlign` | String | 'start' | 否       | 标题对齐方式，可选值为 `start`（左对齐）、`center`（居中）、`end`（右对齐），仅在标题存在时生效。 |\r\n\r\n### 插槽\r\n| 插槽名   | 位置         | 说明                                                                                                |\r\n| -------- | ------------ | --------------------------------------------------------------------------------------------------- |\r\n| `header` | 卡片头部区域 | 自定义卡片头部内容，优先级高于 `title` 参数，若使用此插槽，`title` 和 `titleAlign` 参数将不再生效。 |\r\n| 默认插槽 | 卡片主体区域 | 填充卡片的核心内容，如数据列表、表单、图表等，是卡片内容的主要承载区域。                            |\r\n\r\n### 完整调用代码\r\n<template>\r\n    <VCard title=\"用户活跃度分析\" titleAlign=\"end\">​\r\n        <template #header>​\r\n        <div class=\"header-container\">​\r\n          <span class=\"header-title\">订单统计（本月）</span>​\r\n          <el-button ​\r\n            type=\"text\" ​\r\n            size=\"small\" ​\r\n            @click=\"handleRefresh\"​\r\n            style=\"color: #ffffff; margin-left: 16px;\"​\r\n          >​\r\n            <el-icon><Refresh /></el-icon> 刷新​\r\n          </el-button>​\r\n        </div>​\r\n      </template>\r\n    </VCard>\r\n</template>\r\n\r\n## VCardItem\r\n\r\n### 功能说明\r\nVCardItem 需嵌套在 VCard 组件内部使用，单独使用可能导致样式错乱（依赖 VCard 的容器样式）。\r\n作为 VCard 组件的子项，用于结构化展示卡片内的具体内容（如表单字段、数据项描述等），支持自定义标签文本、标签对齐方式、前置内容、提示信息，可灵活适配卡片内多类型子项的排版需求，保持内容展示的统一性。\r\n\r\n### 基础用法（快速引入）\r\n<template>​\r\n  <VCard title=\"用户基本信息\">​\r\n    <VCardItem label=\"用户名\">​\r\n      <span>zhang_san123</span>​\r\n    </VCardItem>​\r\n    <VCardItem label=\"手机号码\" suffix=\"：\">​\r\n      <span>138****1234</span>​\r\n    </VCardItem>​\r\n  </VCard>​\r\n</template>\r\n\r\n### prop参数列表\r\n| 参数名       | 类型              | 默认值  | 是否必传 | 说明                                                                                    |\r\n| ------------ | ----------------- | ------- | -------- | --------------------------------------------------------------------------------------- |\r\n| `label`      | String            | ''      | 否       | 标签文本，描述子项内容（如“用户名”“手机号码”），未传值且未用 `label` 插槽时标签区域为空 |\r\n| `suffix`     | String            | ':'     | 否       | 标签文本后缀字符（默认冒号），优化标签与内容的排版衔接（如“姓名：”“年龄：”）            |\r\n| `tip`        | [String, Boolean] | false   | 否       | 子项提示信息：传字符串显示对应文本；传 `true` 需配合 `tip` 插槽自定义；传 `false` 隐藏  |\r\n| `labelWidth` | String            | '33%'   | 否       | 标签区域宽度（支持 CSS 宽度值，如 `200px` `25%`），控制标签与内容布局比例               |\r\n| `prependMr`  | String            | '16px'  | 否       | 前置内容（`prepend` 插槽）与标签的右间距，调整前置内容排版                              |\r\n| `labelAlign` | String            | 'start' | 否       | 标签文本对齐方式，可选值：`start`（左对齐）、`center`（居中）、`end`（右对齐）          |\r\n\r\n### 插槽\r\n| 插槽名    | 位置                 | 说明                                                                                    |\r\n| --------- | -------------------- | --------------------------------------------------------------------------------------- |\r\n| `prepend` | 标签区域左侧         | 前置内容插槽（如图标、复选框），与标签的间距由 `prependMr` 参数控制                     |\r\n| `label`   | 标签区域             | 自定义标签内容，优先级高于 `label` 参数；使用后 `label` 和 `suffix` 参数失效            |\r\n| 默认插槽  | 内容区域（标签右侧） | 子项核心内容插槽（如文本、输入框、选择器），占剩余宽度（`flex:1`），承载主要交互内容    |\r\n| `tip`     | 整个子项底部         | 自定义提示内容插槽，仅在 `tip` 参数不为 `false` 时显示，优先级高于 `tip` 参数的字符串值 |\r\n\r\n### 完整调用代码\r\n<template>​\r\n  <VCard title=\"表单信息填写\" titleAlign=\"center\">​\r\n    <VCardItem​\r\n      label=\"性别\"​\r\n      labelAlign=\"center\"​\r\n      labelWidth=\"25%\"​\r\n      prependMr=\"12px\"​\r\n    >​\r\n      <template #prepend>​\r\n        <el-icon style=\"color: #ffffff;\"><UserFilled /></el-icon>​\r\n      </template>​\r\n      <el-select v-model=\"form.gender\" placeholder=\"请选择\">​\r\n        <el-option label=\"男\" value=\"male\"></el-option>​\r\n        <el-option label=\"女\" value=\"female\"></el-option>​\r\n      </el-select>​\r\n    </VCardItem>\r\n  </VCard>​\r\n</template>\r\n\r\n## VIcon\r\n\r\n### 功能说明\r\n支持通过属性灵活配置图标尺寸、颜色、宽高等样式，也可通过自定义样式和类名扩展样式，同时提供点击、鼠标按下、鼠标松开等基础事件以实现交互逻辑；组件基于 SVG Symbol 机制加载图标，能确保图标高清显示且支持按需引用，整体配置流程简化，支持快速引用的同时保留扩展能力，可满足复杂场景需求。\r\n\r\n### 基础用法（快速引入）\r\n<template>​\r\n  <!-- 引用ID为\"icon-home\"的SVG图标，使用默认样式（16px，继承父元素颜色） -->​\r\n  <VIcon icon=\"home\" />​\r\n</template>\r\n\r\n### prop参数列表\r\n| 参数名   | 类型             | 默认值 | 是否必填 | 说明                                                                                                                          |\r\n| -------- | ---------------- | ------ | -------- | ----------------------------------------------------------------------------------------------------------------------------- |\r\n| `icon`   | String           | -      | 是       | SVG 图标 Symbol 的 ID 前缀（组件会自动拼接为 `#icon-{icon}`，如 `icon=\"home\"` 对应 `#icon-home`）                             |\r\n| `size`   | String           | '16'   | 否       | 图标尺寸（单位：px），会设置 `fontSize` 为 `${size}px`，若未指定 `width`/`height`，则默认宽高为 `1em`（即与 `fontSize` 一致） |\r\n| `width`  | String           | -      | 否       | 自定义图标宽度（支持 px、rem 等单位，如 `20px`、`1.5rem`），优先级高于 `size` 自动生成的宽高                                  |\r\n| `height` | String           | -      | 否       | 自定义图标高度（单位同 width），优先级高于 `size` 自动生成的宽高                                                              |\r\n| `color`  | String           | -      | 否       | 图标颜色（支持十六进制、RGB、颜色名等，如 `#ff4400`、`rgb(255,68,0)`、`red`），作用于 SVG 的 `currentColor` 属性              |\r\n| `style`  | Object           | {}     | 否       | 自定义内联样式对象（如 `{ margin: '0 8px', cursor: 'pointer' }`），会与组件内部样式合并，相同属性以自定义样式为准             |\r\n| `class`  | String \\| Object | -      | 否       | 自定义类名（支持字符串格式如 `'icon--large'`，或对象格式如 `{ 'icon--active': isActive }`），用于扩展组件样式                 |\r\n\r\nwidth/height 优先级 > size 自动生成的宽高；style 属性中的样式 > 组件内部默认样式。\r\n\r\n### emit事件列表\r\n| 事件名      | 触发时机                     | 回调参数 | 说明                                                                   |\r\n| ----------- | ---------------------------- | -------- | ---------------------------------------------------------------------- |\r\n| `click`     | 鼠标左键点击图标时           | -        | 可用于绑定图标点击后的业务逻辑，如跳转页面、触发弹窗等                 |\r\n| `mousedown` | 鼠标在图标上按下（未松开）时 | -        | 适用于需要监听 “按下” 动作的场景，如拖拽图标前的准备操作               |\r\n| `mouseup`   | 鼠标在图标上按下后松开时     | -        | 可配合 `mousedown` 事件使用，如监听 “按下 - 松开” 完整动作后的逻辑处理 |\r\n\r\n### 完整调用代码\r\n<VIcon​\r\n      icon=\"delete\"​\r\n      size=\"20\"​\r\n      color=\"#ccc\"​\r\n      :style=\"{ cursor: 'not-allowed' }\"​\r\n      :class=\"{ 'icon--disabled': isDeleteDisabled }\"​\r\n      @click=\"handleDelete\"​\r\n      :disabled=\"isDeleteDisabled\"​\r\n    />\r\n\r\n## VInputNumber\r\n\r\n### 功能说明\r\nVInputNumber 组件允许用户通过点击增减按钮或直接读取（只读）数值来操作数字输入，支持设置数值范围（min/max）、调整步长（step）、控制精度（precision），并可通过格式化函数（formatter）自定义显示内容。组件还包含禁用状态（disabled）控制，以及数值变化时的事件通知，整体交互逻辑清晰，样式可通过 CSS 变量灵活定制。\r\n\r\n### 基础用法（快速引入）\r\n<template>\r\n  <!-- 基础用法：默认范围 0-100，步长 1 -->\r\n  <VInputNumber v-model=\"value\" />\r\n</template>\r\n\r\n<script setup>\r\nimport { ref } from 'vue'\r\n\r\nconst value = ref(10)\r\n</script>\r\n\r\n### prop参数列表\r\n| 参数名     | 类型             | 默认值 | 是否必填 | 说明                                                                       |\r\n| ---------- | ---------------- | ------ | -------- | -------------------------------------------------------------------------- |\r\n| modelValue | Number           | 0      | 否       | 绑定值（通过 `v-model` 双向绑定）                                          |\r\n| min        | Number           | 0      | 否       | 最小值限制，数值不能小于此值                                               |\r\n| max        | Number           | 100    | 否       | 最大值限制，数值不能大于此值                                               |\r\n| step       | Number           | 1      | 否       | 每次点击增减按钮的步长（如 step=5 则每次增减 5）                           |\r\n| disabled   | Boolean          | false  | 否       | 是否禁用组件（禁用后输入框只读，按钮不可点击）                             |\r\n| precision  | Number           | 0      | 否       | 数值精度（保留的小数位数），需配合 step 使用（如 step=0.1 时 precision=1） |\r\n| formatter  | Function \\| null | null   | 否       | 自定义显示格式化函数（如 `(value) => `${value}%`` 可显示为百分比）         |\r\n\r\n### emit事件列表\r\n| 事件名            | 触发时机                 | 回调参数         | 说明                                       |\r\n| ----------------- | ------------------------ | ---------------- | ------------------------------------------ |\r\n| update:modelValue | 数值变化时（双向绑定）   | 新数值（Number） | 用于 `v-model` 同步更新绑定值              |\r\n| change            | 点击增减按钮导致数值变化 | 新数值（Number） | 通知父组件数值已变更（可用于业务逻辑处理） |\r\n\r\n### 插槽\r\n| 插槽名称 | 说明                             |\r\n| -------- | -------------------------------- |\r\n| suffix   | 输入框尾部的附加内容（如单位符号 |\r\n\r\n### 完整调用代码\r\n   <!-- VInputNumber 完整功能示例：包含范围限制、步长、精度、格式化、后缀插槽及禁用控制 -->\r\n<template>\r\n    <VInputNumber \r\n      v-model=\"temperature\" \r\n      :min=\"-40\" \r\n      :max=\"100\" \r\n      :step=\"0.5\" \r\n      :precision=\"1\" \r\n      :formatter=\"formatTemp\" \r\n      :disabled=\"isDisabled\"\r\n    >\r\n      <!-- 后缀插槽：添加温度单位 -->\r\n      <template #suffix>℃</template>\r\n    </VInputNumber>\r\n</template>\r\n\r\n## VMenu\r\n\r\n### 功能说明\r\nVMenu 组件通过 menus 配置项定义标签页列表，支持双向绑定当前激活标签（v-model:value），点击标签可切换激活状态并展示对应内容。组件包含头部菜单区和内容区两部分，头部菜单支持高亮激活项和 hover 效果，内容区通过插槽分发对应标签的自定义内容，同时支持通过 headerClass 和 bodyClass 自定义样式，整体结构简洁且易于扩展。\r\n\r\n### 基础用法（快速引入）\r\n<template>\r\n  <VMenu :menus=\"menus\">\r\n    <template #tab1>标签1内容</template>\r\n    <template #tab2>标签2内容</template>\r\n  </VMenu>\r\n</template>\r\n\r\n<script setup>\r\nimport { ref } from 'vue'\r\n\r\nconst menus = ref([\r\n  { key: 'tab1', title: '标签1' },\r\n  { key: 'tab2', title: '标签2' }\r\n])\r\n</script>\r\n\r\n### prop参数列表\r\n| 参数名      | 类型   | 默认值    | 是否必填 | 说明                                                                                                     |\r\n| ----------- | ------ | --------- | -------- | -------------------------------------------------------------------------------------------------------- |\r\n| menus       | Array  | []        | 是       | 菜单配置列表，每项需包含 `key`（唯一标识）和 `title`（显示文本），格式：`[{ key: 'xxx', title: 'xxx' }]` |\r\n| value       | String | ''        | 否       | 当前激活标签的 `key`（通过 `v-model:value` 双向绑定）                                                    |\r\n| labelWidth  | String | ''        | 否       | 标签宽度（预留参数，可用于自定义菜单项宽度）                                                             |\r\n| type        | String | 'primary' | 否       | 菜单类型，可选值 `primary`（默认）、`info`（可用于区分样式主题）                                         |\r\n| headerClass | String | ''        | 否       | 头部菜单区的自定义类名（用于扩展样式）                                                                   |\r\n| bodyClass   | String | ''        | 否       | 内容区的自定义类名（用于扩展样式）                                                                       |\r\n\r\n\r\n### emit事件列表\r\n| 事件名       | 触发时机   | 回调参数                     | 说明                                   |\r\n| ------------ | ---------- | ---------------------------- | -------------------------------------- |\r\n| update:value | 标签切换时 | 新激活标签的 `key`（String） | 用于 `v-model:value` 同步更新激活状态  |\r\n| click        | 点击标签时 | 标签项对象（{ key, title }） | 通知父组件标签被点击，返回当前标签信息 |\r\n\r\n### 插槽\r\n| 插槽名称     | 说明                                     |\r\n| ------------ | ---------------------------------------- |\r\n| `[item.key]` | 对应 menus 中 key 为 item.key 的标签内容 |\r\n\r\nVMenu 通过具名插槽分发各标签页的内容，插槽名称需与 menus 中对应项的 key 一致。\r\n\r\n### 完整调用代码\r\n<template>\r\n  <div class=\"menu-demo\">\r\n    <VMenu \r\n      v-model:value=\"activeTab\" \r\n      :menus=\"menuList\" \r\n      type=\"info\"\r\n      headerClass=\"custom-header\"\r\n      bodyClass=\"custom-body\"\r\n      @click=\"handleMenuClick\"\r\n    >\r\n      <template #dashboard>\r\n        <div>仪表盘内容：今日访问量 1200+</div>\r\n      </template>\r\n      <template #analysis>\r\n        <div>数据分析内容：近7日趋势图...</div>\r\n      </template>\r\n      <template #setting>\r\n        <div>设置内容：账号安全、通知偏好...</div>\r\n      </template>\r\n    </VMenu>\r\n  </div>\r\n</template>\r\n\r\n<script setup>\r\nimport { ref } from 'vue'\r\n\r\nconst activeTab = ref('dashboard')\r\n\r\nconst menuList = ref([\r\n  { key: 'dashboard', title: '仪表盘' },\r\n  { key: 'analysis', title: '数据分析' },\r\n  { key: 'setting', title: '系统设置' }\r\n])\r\n\r\nconst handleMenuClick = (item) => {\r\n  console.log('点击了标签：', item.title)\r\n}\r\n</script>\r\n\r\n## VNav\r\n\r\n### 功能说明\r\nVNav 组件提供了标准化的导航栏结构，左侧可展示图标（小屏幕可见），中间展示 logo（支持自定义图片或使用默认 SVG），中部为路由链接区域（大屏幕可见），右侧为操作区（如用户信息、设置按钮等）。通过插槽可灵活扩展各区域内容，同时借助 Element Plus 的响应式工具类实现不同屏幕尺寸下的布局适配。\r\n\r\n### 基础用法（快速引入）\r\n<template>\r\n  <!-- 使用默认 logo，仅添加操作区内容 -->\r\n  <VNav>\r\n    <template #operate>\r\n      <span>欢迎访问</span>\r\n    </template>\r\n  </VNav>\r\n</template>\r\n\r\n### prop参数列表\r\n| 参数名    | 类型   | 默认值 | 是否必填 | 说明                                     |\r\n| --------- | ------ | ------ | -------- | ---------------------------------------- |\r\n| logoSrc   | String | ''     | 否       | 自定义 logo 图片路径，优先级高于默认 SVG |\r\n| logoAlt   | String | 'BSS'  | 否       | logo 图片的 alt 属性（替代文本）         |\r\n| logoTitle | String | 'BSS'  | 否       | logo 图片的 title 属性（悬浮提示文本）   |\r\n\r\n### 插槽\r\n| 插槽名称 | 说明                                           | 显示规则                                       |\r\n| -------- | ---------------------------------------------- | ---------------------------------------------- |\r\n| 默认插槽 | 导航栏中部的路由链接区域（如菜单项、导航链接） | 仅在中等及以上屏幕（`hidden-sm-and-down`）显示 |\r\n| icon     | 导航栏左侧的图标区域（如汉堡菜单按钮）         | 仅在小屏幕（`hidden-md-and-up`）显示           |\r\n| operate  | 导航栏右侧的操作区域（如用户头像、设置按钮等） | 所有屏幕尺寸均显示                             |\r\n\r\n### 完整调用代码\r\n```vue\r\n<template>\r\n  <VNav \r\n    logoSrc=\"/images/custom-logo.png\" \r\n    logoAlt=\"企业系统\" \r\n    logoTitle=\"企业管理系统\"\r\n  >\r\n    <!-- 左侧小屏幕图标（如汉堡菜单） -->\r\n    <template #icon>\r\n      <button @click=\"showMenu = !showMenu\">\r\n        <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\">\r\n          <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"></line>\r\n          <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"></line>\r\n          <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\"></line>\r\n        </svg>\r\n      </button>\r\n    </template>\r\n\r\n    <!-- 中部路由链接（大屏幕显示） -->\r\n    <router-link to=\"/dashboard\" class=\"nav-link\">仪表盘</router-link>\r\n    <router-link to=\"/users\" class=\"nav-link\">用户管理</router-link>\r\n    <router-link to=\"/settings\" class=\"nav-link\">系统设置</router-link>\r\n\r\n    <!-- 右侧操作区 -->\r\n    <template #operate>\r\n      <div class=\"operate-group\">\r\n        <button class=\"notice-btn\" @click=\"handleNotice\">\r\n          <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\">\r\n            <path d=\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\"></path>\r\n            <path d=\"M13.73 21a2 2 0 0 1-3.46 0\"></path>\r\n          </svg>\r\n        </button>\r\n        <div class=\"user-avatar\" @click=\"showUserMenu = true\">\r\n          <img src=\"/images/user-avatar.png\" alt=\"用户头像\">\r\n        </div>\r\n      </div>\r\n    </template>\r\n  </VNav>\r\n</template>\r\n\r\n<script setup>\r\nimport { ref } from 'vue'\r\nimport VNav from './path/to/VNav.vue'\r\n\r\n// 状态管理\r\nconst showMenu = ref(false)\r\nconst showUserMenu = ref(false)\r\n\r\n// 事件处理\r\nconst handleNotice = () => {\r\n  console.log('打开通知中心')\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.nav-link {\r\n  margin: 0 16px;\r\n  color: #fff;\r\n  text-decoration: none;\r\n}\r\n\r\n.nav-link:hover {\r\n  color: #409eff;\r\n}\r\n\r\n.operate-group {\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 16px;\r\n}\r\n\r\n.notice-btn {\r\n  background: none;\r\n  border: none;\r\n  color: #fff;\r\n  cursor: pointer;\r\n}\r\n\r\n.user-avatar img {\r\n  width: 32px;\r\n  height: 32px;\r\n  border-radius: 50%;\r\n  cursor: pointer;\r\n}\r\n</style>\r\n```\r\n\r\n## VNotification\r\n\r\n### 功能说明\r\nVNotification 是基于 Vue 3 的函数式通知组件，无需在模板中注册标签，通过 JS 函数即可调用；支持字符串、对象、数组（含嵌套）三种消息格式，可配置自动关闭时长或手动关闭；多个通知能自动从上到下堆叠排列，关闭时下方通知自动补位，且鼠标悬浮时会暂停自动关闭，离开后重启，适用于各类操作反馈与状态提示场景。\r\n\r\n### 基础用法（快速引入）\r\n```js\r\n// 在需要使用提示的模块中先导入相关内容\r\nconst notification = inject('$notification');\r\n\r\n// 方式1：传字符串（简化版，默认 type 为 success）\r\nnotification('操作成功！');\r\n\r\n// 方式2：传配置对象（完整配置）\r\nnotification({\r\n  title: '提示',\r\n  message: '文件已上传至服务器',\r\n  type: 'info',\r\n  duration: 3000 // 3秒后自动关闭\r\n});\r\n\r\n// 方式3：快捷方法（自动指定 type 和默认 title）\r\nnotification.error('服务器连接失败，请重试'); // 错误提示\r\nnotification.warning('当前网络不稳定，可能影响操作'); // 警告提示\r\n```\r\n\r\n### 快捷方法\r\n| 配置项      | 类型                    | 默认值      | 说明                                                   |\r\n| ----------- | ----------------------- | ----------- | ------------------------------------------------------ |\r\n| title       | String                  | ''          | 通知标题，为空时不显示标题栏                           |\r\n| message     | String / Object / Array | ''          | 核心消息内容，支持字符串、对象、数组（含嵌套）三种格式 |\r\n| type        | String                  | 'success'   | 通知类型，可选值：success、error、info、warning        |\r\n| duration    | Number                  | 5000        | 自动关闭时长（单位：毫秒），设为 0 时不自动关闭        |\r\n| position    | String                  | 'top-right' | 显示位置，当前仅支持 top-right（右上角）               |\r\n| customClass | String                  | ''          | 自定义样式类名，用于扩展通知的自定义样式               |\r\n| onClose     | Function                | null        | 通知关闭后的回调函数（手动关闭/自动关闭均触发）        |\r\n\r\n调用 notification(options) 时，options 支持以上配置，所有配置均为可选，未传时使用默认值。\r\n\r\n### 消息格式说明\r\n\r\nmessage 是通知的核心内容，支持三种格式，满足不同场景需求：\r\n\r\n#### 1.字符串格式（基础）\r\n直接传递字符串，适用于简单文本提示\r\n```js\r\nnotification({\r\n  title: '成功提示',\r\n  message: '数据提交成功，等待审核',\r\n  type: 'success'\r\n});\r\n```\r\n\r\n#### 2.对象格式（键值对）\r\n传递包含 label 和 value 的对象，适用于展示键值对信息（如表单错误、详情数据）：\r\n```js\r\nnotification({\r\n  title: '表单错误',\r\n  message: { label: '手机号', value: '请输入正确的11位手机号' },\r\n  type: 'error'\r\n});\r\n// 渲染效果：手机号：请输入正确的11位手机号\r\n```\r\n\r\n#### 3.数组格式（列表 / 嵌套）\r\n传递数组，支持嵌套数组，适用于展示多条信息或层级数据：\r\n```js\r\nnotification({\r\n  title: '批量操作结果',\r\n  message: [\r\n    '处理完成：3条成功，1条失败',\r\n    { label: '成功ID', value: '1001, 1002, 1003' },\r\n    { \r\n      label: '失败原因', \r\n      value: [{ label: 'ID:1004', value: '字段不能为空' }] // 嵌套数组\r\n    }\r\n  ],\r\n  type: 'warning'\r\n});\r\n```\r\n\r\n### 手动关闭通知\r\n调用 notification() 后会返回一个包含 close 方法的对象，可通过该方法手动关闭通知（适用于 duration:0 或需要主动控制关闭的场景）：\r\n```js\r\n// 1. 保存返回值\r\nconst noticeInstance = notification({\r\n  title: '加载中',\r\n  message: '正在处理大量数据，请耐心等待...',\r\n  duration: 0 // 不自动关闭\r\n});\r\n\r\n// 2. 手动关闭（如数据处理完成后）\r\nsetTimeout(() => {\r\n  noticeInstance.close(); // 调用关闭方法\r\n}, 5000);\r\n```\r\n\r\n### 快捷方法\r\n为简化常见类型的调用，组件封装了 4 个快捷方法，自动指定 type 和默认 title，无需手动配置：\r\n| 快捷方法                      | 说明     | 默认配置                        | 使用示例                               |\r\n| ----------------------------- | -------- | ------------------------------- | -------------------------------------- |\r\n| notification.success(options) | 成功提示 | type:'success'，title:'success' | notification.success('操作成功！')     |\r\n| notification.error(options)   | 错误提示 | type:'error'，title:'error'     | notification.error('操作失败，请重试') |\r\n| notification.info(options)    | 信息提示 | type:'info'，title:'info'       | notification.info('新消息已收到')      |\r\n| notification.warning(options) | 警告提示 | type:'warning'，title:'warning' | notification.warning('内存不足')       |\r\n\r\n注意：快捷方法的 options 可传字符串（作为 message）或配置对象（覆盖默认 title 等）：\r\n```js\r\n// 传对象覆盖默认title\r\nnotification.success({\r\n  title: '上传成功',\r\n  message: '3个文件已全部上传完成'\r\n});\r\n```\r\n\r\n## VSlider\r\n\r\n### 功能说明\r\nVSlider 组件核心功能围绕 “数值调节” 展开，整合了 Element Plus 的 el-slider（滑块）、el-select（下拉选择）和自定义的 v-input-number（数字输入框）。支持通过滑块拖动、输入框增减、下拉选择三种方式修改数值，同时提供数值防抖（避免频繁触发事件）、默认值重置、自定义后缀（单位 / 符号）、禁用状态控制等能力，布局对齐方式也可灵活配置，适配不同界面需求。\r\n\r\n### 基础用法（快速引入）\r\n```vue\r\n<template>\r\n  <!-- 基础滑块：默认 0-100 范围，步长 1，显示数字输入框 -->\r\n  <VSlider v-model=\"brightness\" />\r\n</template>\r\n\r\n<script setup>\r\nimport { ref } from 'vue'\r\nimport VSlider from './path/to/VSlider.vue'\r\n\r\nconst brightness = ref(30)\r\n</script>\r\n```\r\n### prop参数列表\r\n| 参数名       | 类型           | 默认值       | 是否必填 | 说明                                                                                                       |\r\n| ------------ | -------------- | ------------ | -------- | ---------------------------------------------------------------------------------------------------------- |\r\n| modelValue   | Number         | 0            | 否       | 绑定值（通过 `v-model` 双向绑定，控制滑块/输入框/选择器的数值）                                            |\r\n| min          | Number         | 0            | 否       | 数值最小值，限制可调节的下限                                                                               |\r\n| max          | Number         | 100          | 否       | 数值最大值，限制可调节的上限                                                                               |\r\n| step         | Number         | 1            | 否       | 调节步长（滑块拖动、输入框增减的数值间隔）                                                                 |\r\n| defaultValue | Boolean/Number | false        | 否       | 默认值：传数字时显示“重置”按钮，点击恢复此值；传 `false` 不显示重置按钮                                    |\r\n| suffix       | String         | ''           | 否       | 数值后缀（如单位“%”“px”），显示在数字输入框尾部                                                            |\r\n| disabled     | Boolean        | false        | 否       | 是否禁用组件：禁用后滑块、输入框、按钮均不可交互，样式置灰                                                 |\r\n| justify      | String         | 'flex-start' | 否       | 组件内部元素的对齐方式，可选值：`flex-start`/`flex-end`/`center`/`space-between`/`space-around`            |\r\n| options      | Boolean/Array  | false        | 否       | 下拉选择选项：传数组时显示下拉选择器（格式 `[{ label: '文本', value: 数值 }]`）；传 `false` 显示数字输入框 |\r\n| resetText    | String         | 'Reset'      | 否       | “重置”按钮的文本内容（支持自定义语言，如“重置”“恢复默认”）                                                 |\r\n\r\n### emit事件列表\r\n| 事件名            | 触发时机               | 回调参数         | 说明                                                               |\r\n| ----------------- | ---------------------- | ---------------- | ------------------------------------------------------------------ |\r\n| update:modelValue | 数值变化时（双向绑定） | 新数值（Number） | 用于 `v-model` 同步更新父组件的绑定值，实时响应数值变化            |\r\n| change            | 数值变化且防抖结束后   | 新数值（Number） | 防抖后触发的事件（防抖间隔 100ms），避免滑块拖动时频繁触发业务逻辑 |\r\n\r\n### 插槽\r\n| 插槽名称 | 说明                                                                    | 显示规则                                     |\r\n| -------- | ----------------------------------------------------------------------- | -------------------------------------------- |\r\n| suffix   | 数值后缀的自定义内容（替代 `suffix` 参数的文本形式，支持图标/复杂结构） | 仅当未传 `suffix` 参数且显示数字输入框时生效 |\r\n\r\n### 完整调用代码\r\n```vue\r\n<template>\r\n  <div class=\"slider-demo\">\r\n    <!-- 完整功能示例：滑块+下拉选择+重置+自定义后缀 -->\r\n    <VSlider \r\n      v-model=\"fontSize\" \r\n      :min=\"12\" \r\n      :max=\"36\" \r\n      :step=\"2\" \r\n      :defaultValue=\"16\" \r\n      resetText=\"恢复默认\"\r\n      :options=\"[\r\n        { label: '12px', value: 12 },\r\n        { label: '16px', value: 16 },\r\n        { label: '20px', value: 20 },\r\n        { label: '24px', value: 24 },\r\n        { label: '36px', value: 36 }\r\n      ]\"\r\n      justify=\"space-between\"\r\n      @change=\"handleFontSizeChange\"\r\n    >\r\n      <!-- 自定义后缀插槽（显示图标+单位） -->\r\n      <template #suffix>\r\n        <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" style=\"margin-left: 4px;\">\r\n          <path d=\"M12 2L2 7l10 5 10-5-10-5zM2 17l10 5 10-5M2 12l10 5 10-5\"></path>\r\n        </svg>\r\n        <span>px</span>\r\n      </template>\r\n    </VSlider>\r\n  </div>\r\n</template>\r\n\r\n<script setup>\r\nimport { ref } from 'vue'\r\nimport VSlider from './path/to/VSlider.vue'\r\nimport VInputNumber from './path/to/VInputNumber.vue'\r\n\r\n// 绑定值：字体大小\r\nconst fontSize = ref(16)\r\n\r\n// 防抖后的数值变化事件\r\nconst handleFontSizeChange = (val) => {\r\n  console.log('最终字体大小：', val, 'px')\r\n  // 业务逻辑：如更新页面字体样式\r\n  document.documentElement.style.fontSize = `${val}px`\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.slider-demo {\r\n  width: 500px;\r\n  margin: 30px;\r\n  padding: 20px;\r\n  border: 1px solid #eee;\r\n  border-radius: 4px;\r\n}\r\n</style>\r\n```\r\n\r\n## VTab\r\n\r\n### 功能说明\r\nVTab 组件由 “标签头部” 和 “内容区域” 两部分组成：头部通过 menus 配置生成可点击的标签项，点击标签可切换激活状态；内容区域通过具名插槽分发对应标签的自定义内容。组件支持两种主题样式（primary/info）、自定义标签宽度，还能通过类名扩展样式，激活状态自动同步，初始化时会默认选中第一个有效标签，确保交互逻辑完整。\r\n\r\n### 基础用法（快速引入）\r\n```vue\r\n<template>\r\n  <!-- 基础用法：默认 primary 主题，自动选中第一个标签 -->\r\n  <VTab :menus=\"tabMenus\">\r\n    <template #tab1>标签1内容</template>\r\n    <template #tab2>标签2内容</template>\r\n  </VTab>\r\n</template>\r\n\r\n<script setup>\r\nimport { ref } from 'vue'\r\n\r\nconst tabMenus = ref([\r\n  { key: 'tab1', title: '标签1' },\r\n  { key: 'tab2', title: '标签2' }\r\n])\r\n</script>\r\n```\r\n\r\n### prop参数列表\r\n| 参数名      | 类型   | 默认值    | 是否必填 | 说明                                                                                                     |\r\n| ----------- | ------ | --------- | -------- | -------------------------------------------------------------------------------------------------------- |\r\n| menus       | Array  | []        | 是       | 标签配置列表，每项需包含 `key`（唯一标识）和 `title`（标签文本），格式：`[{ key: 'xxx', title: 'xxx' }]` |\r\n| value       | String | ''        | 否       | 当前激活标签的 `key`（通过 `v-model:value` 双向绑定，控制激活状态）                                      |\r\n| labelWidth  | String | ''        | 否       | 标签项宽度（通过 CSS 变量 `--v-tab-label-width` 生效，如 `100px`）                                       |\r\n| type        | String | 'primary' | 否       | 标签主题样式，可选值 `primary`（默认，使用主题色）、`info`（使用信息色）                                 |\r\n| headerClass | String | ''        | 否       | 标签头部的自定义类名（用于扩展头部样式）                                                                 |\r\n| bodyClass   | String | ''        | 否       | 内容区域的自定义类名（用于扩展内容区样式）                                                               |\r\n\r\n### emit事件列表\r\n| 事件名       | 触发时机     | 回调参数                     | 说明                                   |\r\n| ------------ | ------------ | ---------------------------- | -------------------------------------- |\r\n| update:value | 标签切换时   | 新激活标签的 `key`（String） | 用于 `v-model:value` 同步更新激活状态  |\r\n| click        | 点击标签项时 | 标签项对象（{ key, title }） | 通知父组件标签被点击，返回当前标签信息 |\r\n\r\n### 插槽\r\n| 插槽名称   | 说明                                                           | 显示规则                                         |\r\n| ---------- | -------------------------------------------------------------- | ------------------------------------------------ |\r\n| 默认插槽   | 预留插槽（当前无默认内容，可用于自定义公共内容）               | 所有标签激活时均显示（需自行控制逻辑）           |\r\n| [item.key] | 对应 `menus` 中 `key` 为 `item.key` 的标签内容（核心内容插槽） | 仅当对应标签被激活（`item.key === value`）时显示 |\r\n\r\n### 完整调用代码\r\n```vue\r\n<template>\r\n  <div class=\"tab-demo\">\r\n    <VTab \r\n      v-model:value=\"activeKey\" \r\n      :menus=\"tabMenus\" \r\n      type=\"info\"\r\n      labelWidth=\"120px\"\r\n      headerClass=\"custom-header\"\r\n      bodyClass=\"custom-body\"\r\n      @click=\"handleTabClick\"\r\n    >\r\n      <!-- 标签1内容 -->\r\n      <template #basic>\r\n        <div>基础设置：修改用户名、密码等基础信息</div>\r\n      </template>\r\n      <!-- 标签2内容 -->\r\n      <template #security>\r\n        <div>安全设置：开启二次验证、登录日志查看</div>\r\n      </template>\r\n      <!-- 标签3内容 -->\r\n      <template #notification>\r\n        <div>通知设置：配置邮件、短信通知开关</div>\r\n      </template>\r\n    </VTab>\r\n  </div>\r\n</template>\r\n\r\n<script setup>\r\nimport { ref } from 'vue'\r\nimport VTab from './path/to/VTab.vue'\r\n\r\n// 激活的标签key\r\nconst activeKey = ref('basic')\r\n// 标签配置\r\nconst tabMenus = ref([\r\n  { key: 'basic', title: '基础设置' },\r\n  { key: 'security', title: '安全设置' },\r\n  { key: 'notification', title: '通知设置' }\r\n])\r\n\r\n// 标签点击事件处理\r\nconst handleTabClick = (item) => {\r\n  console.log('当前选中标签：', item.title)\r\n  // 可添加切换标签后的业务逻辑（如加载对应标签数据）\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.tab-demo {\r\n  width: 600px;\r\n  margin: 20px;\r\n}\r\n\r\n/* 自定义头部样式 */\r\n.custom-header {\r\n  margin-bottom: 16px;\r\n}\r\n\r\n/* 自定义内容区样式 */\r\n.custom-body {\r\n  padding: 16px;\r\n  border: 1px solid #eee;\r\n  border-radius: 4px;\r\n}\r\n\r\n/* 自定义标签项 hover 样式 */\r\n:deep(.v-tab.info .v-tab-item:hover:not(.active)) {\r\n  background-color: #f0f7ff;\r\n}\r\n</style>\r\n```\r\n\r\n## VUpload\r\n\r\n### 功能说明\r\nVUpload 组件核心是 “文件选择与上传触发”，通过隐藏的原生文件选择框（input[type=\"file\"]）实现文件选择，选中后在 Element Plus 输入框中显示文件名；提供两种模式（upload 上传模式、browse 浏览模式），支持通过按钮触发文件选择或上传操作，同时可限制允许上传的文件类型（accept）、禁用组件状态，还能通过事件通知父组件文件变化、上传触发等动作，整体交互简洁且符合上传类组件的使用习惯。\r\n\r\n### 基础用法（快速引入）\r\n<template>\r\n  <!-- 基础用法：默认 upload 模式，支持选择文件并触发上传 -->\r\n  <VUpload v-model=\"file\" @upload=\"handleUpload\" />\r\n</template>\r\n\r\n<script setup>\r\nimport { ref } from 'vue'\r\nimport VUpload from './path/to/VUpload.vue'\r\n\r\nconst file = ref('')\r\nconst handleUpload = () => {\r\n  // 上传逻辑\r\n}\r\n</script>\r\n\r\n### prop参数列表\r\n| 参数名      | 类型            | 默认值   | 是否必填 | 说明                                                                                               |\r\n| ----------- | --------------- | -------- | -------- | -------------------------------------------------------------------------------------------------- |\r\n| modelValue  | String / Object | ''       | 否       | 绑定值，存储选中的文件信息（原生 File 对象或文件路径字符串），通过 `v-model` 双向绑定              |\r\n| disabled    | Boolean         | false    | 否       | 是否禁用组件：禁用后输入框、按钮、文件选择均不可交互，样式置灰                                     |\r\n| accept      | String          | ''       | 否       | 允许选择的文件类型（同原生 `input` 的 `accept` 属性，如 `.pdf,.jpg` 或 `image/*`）                 |\r\n| placeholder | String          | ''       | 否       | 输入框的占位提示文本（未选择文件时显示）                                                           |\r\n| buttonText  | String          | ''       | 否       | 操作按钮的文本，未传时默认显示 `upload`                                                            |\r\n| type        | String          | 'upload' | 否       | 组件模式：`upload`（上传模式，选中文件后按钮触发上传）、`browse`（浏览模式，按钮始终触发文件选择） |\r\n\r\n### emit事件列表\r\n| 事件名            | 触发时机                         | 回调参数         | 说明                                                                      |\r\n| ----------------- | -------------------------------- | ---------------- | ------------------------------------------------------------------------- |\r\n| update:modelValue | 选择文件后（文件变化时）         | 选中的 File 对象 | 用于 `v-model` 同步更新父组件的绑定值，传递当前选中的文件信息             |\r\n| change            | 选择文件后（文件变化时）         | 选中的 File 对象 | 通知父组件文件已变更，与 `update:modelValue` 同步触发，可用于额外逻辑处理 |\r\n| clear             | 清空文件时（需父组件配合实现）   | -                | 预留清空事件，需父组件通过修改 `v-model` 绑定值触发（如设置为 `''`）      |\r\n| upload            | 点击按钮且组件为 `upload` 模式时 | -                | 通知父组件触发上传操作（需父组件自行编写上传逻辑，如接口请求）            |\r\n\r\n### 完整调用代码\r\n```vue\r\n<template>\r\n  <div class=\"upload-demo\">\r\n    <VUpload \r\n      v-model=\"contractFile\" \r\n      accept=\".pdf,.doc,.docx\" \r\n      :disabled=\"isUploadDisabled\"\r\n      placeholder=\"请选择合同文件（支持PDF/Word）\"\r\n      buttonText=\"上传合同\"\r\n      type=\"upload\"\r\n      @change=\"handleFileChange\"\r\n      @upload=\"handleContractUpload\"\r\n    />\r\n    <el-button \r\n      type=\"text\" \r\n      style=\"margin-top: 8px;\"\r\n      @click=\"clearFile\"\r\n      :disabled=\"!contractFile || isUploadDisabled\"\r\n    >\r\n      清空文件\r\n    </el-button>\r\n  </div>\r\n</template>\r\n\r\n<script setup>\r\nimport { ref } from 'vue'\r\nimport VUpload from './path/to/VUpload.vue'\r\n\r\n// 绑定值：存储选中的合同文件\r\nconst contractFile = ref('')\r\n// 禁用状态：模拟上传中禁用\r\nconst isUploadDisabled = ref(false)\r\n\r\n// 文件变化时触发\r\nconst handleFileChange = (file) => {\r\n  console.log('选中的文件：', file.name, '大小：', (file.size / 1024).toFixed(2), 'KB')\r\n  // 可添加文件大小校验逻辑\r\n  if (file.size > 10 * 1024 * 1024) { // 限制10MB以内\r\n    ElMessage.warning('文件大小不能超过10MB')\r\n    contractFile.value = '' // 清空无效文件\r\n  }\r\n}\r\n\r\n// 上传触发逻辑\r\nconst handleContractUpload = async () => {\r\n  isUploadDisabled.value = true // 上传中禁用组件\r\n  try {\r\n    const formData = new FormData()\r\n    formData.append('contract', contractFile.value)\r\n    // 调用上传接口\r\n    // const res = await uploadApi(formData)\r\n    // ElMessage.success('上传成功')\r\n  } catch (err) {\r\n    ElMessage.error('上传失败，请重试')\r\n  } finally {\r\n    isUploadDisabled.value = false // 恢复禁用状态\r\n  }\r\n}\r\n\r\n// 清空文件\r\nconst clearFile = () => {\r\n  contractFile.value = ''\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.upload-demo {\r\n  width: 400px;\r\n  margin: 20px;\r\n}\r\n</style>\r\n```\r\n\r\n\r\n\r\n","readmeFilename":"README.md"}