diff --git a/index.html b/index.html index 42b947e..1bdb701 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ - + 歆羽贸易 diff --git a/package-lock.json b/package-lock.json index 51155e8..a477218 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,6 +25,7 @@ }, "devDependencies": { "@vitejs/plugin-vue": "^6.0.5", + "autoprefixer": "^10.5.0", "less": "^4.6.4", "vite": "^8.0.4" } @@ -666,6 +667,43 @@ "node": ">=0.4.0" } }, + "node_modules/autoprefixer": { + "version": "10.5.0", + "resolved": "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.5.0.tgz", + "integrity": "sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "browserslist": "^4.28.2", + "caniuse-lite": "^1.0.30001787", + "fraction.js": "^5.3.4", + "picocolors": "^1.1.1", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/base64-arraybuffer": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", @@ -675,6 +713,19 @@ "node": ">= 0.6.0" } }, + "node_modules/baseline-browser-mapping": { + "version": "2.10.36", + "resolved": "https://registry.npmmirror.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.36.tgz", + "integrity": "sha512-lVq/Df7LXlO79MVaaUHztSwWiG9oXoWHlgvNS51v8Dpd4+G4/VIy6qYePTw31nAVls33nUtnfezYeLkYAak9dg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/birpc": { "version": "2.9.0", "resolved": "https://registry.npmmirror.com/birpc/-/birpc-2.9.0.tgz", @@ -684,6 +735,61 @@ "url": "https://github.com/sponsors/antfu" } }, + "node_modules/browserslist": { + "version": "4.28.2", + "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.28.2.tgz", + "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "baseline-browser-mapping": "^2.10.12", + "caniuse-lite": "^1.0.30001782", + "electron-to-chromium": "^1.5.328", + "node-releases": "^2.0.36", + "update-browserslist-db": "^1.2.3" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001799", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz", + "integrity": "sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, "node_modules/chokidar": { "version": "5.0.0", "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-5.0.0.tgz", @@ -746,6 +852,13 @@ "node": ">=8" } }, + "node_modules/electron-to-chromium": { + "version": "1.5.371", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.371.tgz", + "integrity": "sha512-e9htk9mAYL6AzmkEhSvVVw7IWGSBJ/Bqdn2eRyRLrj1g6sncN4WbFt5qnILYoCktktr45pyjIrOiRvBThQ808w==", + "dev": true, + "license": "ISC" + }, "node_modules/entities": { "version": "7.0.1", "resolved": "https://registry.npmmirror.com/entities/-/entities-7.0.1.tgz", @@ -772,6 +885,16 @@ "errno": "cli.js" } }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/escape-string-regexp": { "version": "5.0.0", "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", @@ -813,6 +936,20 @@ } } }, + "node_modules/fraction.js": { + "version": "5.3.4", + "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-5.3.4.tgz", + "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", @@ -1327,6 +1464,16 @@ "node": ">= 4.4.x" } }, + "node_modules/node-releases": { + "version": "2.0.47", + "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.47.tgz", + "integrity": "sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz", @@ -1475,6 +1622,13 @@ "object-assign": "^4.1.1" } }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true, + "license": "MIT" + }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz", @@ -1866,6 +2020,37 @@ "node": "^20.19.0 || >=22.12.0" } }, + "node_modules/update-browserslist-db": { + "version": "1.2.3", + "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", + "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/utrie": { "version": "1.0.2", "resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz", diff --git a/package.json b/package.json index 1e505ff..7d4e987 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,17 @@ }, "devDependencies": { "@vitejs/plugin-vue": "^6.0.5", + "autoprefixer": "^10.5.0", "less": "^4.6.4", "vite": "^8.0.4" - } + }, + "browserslist": [ + "iOS >= 8", + "Safari >= 8", + "Android >= 4.4", + "Chrome >= 49", + "> 0.5%", + "last 2 versions", + "not dead" + ] } diff --git a/postcss.config.cjs b/postcss.config.cjs index 86433ad..df85574 100644 --- a/postcss.config.cjs +++ b/postcss.config.cjs @@ -8,5 +8,6 @@ module.exports = { minPixelValue: 1, mediaQuery: false, }, + autoprefixer: {}, }, } diff --git a/public/img/vb-home.png b/public/img/icon-actionbar-home.png similarity index 100% rename from public/img/vb-home.png rename to public/img/icon-actionbar-home.png diff --git a/public/img/vb-service.png b/public/img/icon-actionbar-service.png similarity index 100% rename from public/img/vb-service.png rename to public/img/icon-actionbar-service.png diff --git a/public/img/vb-share.png b/public/img/icon-actionbar-share.png similarity index 100% rename from public/img/vb-share.png rename to public/img/icon-actionbar-share.png diff --git a/public/img/address.png b/public/img/icon-address-outline.png similarity index 100% rename from public/img/address.png rename to public/img/icon-address-outline.png diff --git a/public/img/addr_r.png b/public/img/icon-address-red.png similarity index 100% rename from public/img/addr_r.png rename to public/img/icon-address-red.png diff --git a/public/img/addr.png b/public/img/icon-address.png similarity index 100% rename from public/img/addr.png rename to public/img/icon-address.png diff --git a/public/img/co_icon.png b/public/img/icon-balance-co.png similarity index 100% rename from public/img/co_icon.png rename to public/img/icon-balance-co.png diff --git a/public/img/bs-icon.png b/public/img/icon-business-school.png similarity index 100% rename from public/img/bs-icon.png rename to public/img/icon-business-school.png diff --git a/public/img/nocart.png b/public/img/icon-cart-empty.png similarity index 100% rename from public/img/nocart.png rename to public/img/icon-cart-empty.png diff --git a/public/img/cart.png b/public/img/icon-cart.png similarity index 100% rename from public/img/cart.png rename to public/img/icon-cart.png diff --git a/public/img/cashout_record.svg b/public/img/icon-cashout-record.svg similarity index 100% rename from public/img/cashout_record.svg rename to public/img/icon-cashout-record.svg diff --git a/public/img/cate_all.png b/public/img/icon-category-all.png similarity index 100% rename from public/img/cate_all.png rename to public/img/icon-category-all.png diff --git a/public/img/copy_b.png b/public/img/icon-copy-black.png similarity index 100% rename from public/img/copy_b.png rename to public/img/icon-copy-black.png diff --git a/public/img/copy.png b/public/img/icon-copy.png similarity index 100% rename from public/img/copy.png rename to public/img/icon-copy.png diff --git a/public/img/i-date.png b/public/img/icon-date.png similarity index 100% rename from public/img/i-date.png rename to public/img/icon-date.png diff --git a/public/img/down.png b/public/img/icon-down.png similarity index 100% rename from public/img/down.png rename to public/img/icon-down.png diff --git a/public/img/filter.png b/public/img/icon-filter.png similarity index 100% rename from public/img/filter.png rename to public/img/icon-filter.png diff --git a/public/img/fire.png b/public/img/icon-fire.png similarity index 100% rename from public/img/fire.png rename to public/img/icon-fire.png diff --git a/public/img/gift_i3.png b/public/img/icon-gift-name.png similarity index 100% rename from public/img/gift_i3.png rename to public/img/icon-gift-name.png diff --git a/public/img/gift_i4.png b/public/img/icon-gift-phone.png similarity index 100% rename from public/img/gift_i4.png rename to public/img/icon-gift-phone.png diff --git a/public/img/gift_i5.png b/public/img/icon-gift-region.png similarity index 100% rename from public/img/gift_i5.png rename to public/img/icon-gift-region.png diff --git a/public/img/gift_i6.png b/public/img/icon-gift-remark.png similarity index 100% rename from public/img/gift_i6.png rename to public/img/icon-gift-remark.png diff --git a/public/img/s_select-cart.png b/public/img/icon-gift-select-cart.png similarity index 100% rename from public/img/s_select-cart.png rename to public/img/icon-gift-select-cart.png diff --git a/public/img/de-i1.png b/public/img/icon-goods-detail-service-1.png similarity index 100% rename from public/img/de-i1.png rename to public/img/icon-goods-detail-service-1.png diff --git a/public/img/de-i2.png b/public/img/icon-goods-detail-service-2.png similarity index 100% rename from public/img/de-i2.png rename to public/img/icon-goods-detail-service-2.png diff --git a/public/img/gt-i1.png b/public/img/icon-goods-tag.png similarity index 100% rename from public/img/gt-i1.png rename to public/img/icon-goods-tag.png diff --git a/public/img/index-column-i1.png b/public/img/icon-home-column-1.png similarity index 100% rename from public/img/index-column-i1.png rename to public/img/icon-home-column-1.png diff --git a/public/img/index-column-i2.png b/public/img/icon-home-column-2.png similarity index 100% rename from public/img/index-column-i2.png rename to public/img/icon-home-column-2.png diff --git a/public/img/index-column-i3.png b/public/img/icon-home-column-3.png similarity index 100% rename from public/img/index-column-i3.png rename to public/img/icon-home-column-3.png diff --git a/public/img/hot.png b/public/img/icon-hot.png similarity index 100% rename from public/img/hot.png rename to public/img/icon-hot.png diff --git a/public/img/login-i1.png b/public/img/icon-login-1.png similarity index 100% rename from public/img/login-i1.png rename to public/img/icon-login-1.png diff --git a/public/img/login-i2.png b/public/img/icon-login-2.png similarity index 100% rename from public/img/login-i2.png rename to public/img/icon-login-2.png diff --git a/public/img/login-i3.png b/public/img/icon-login-3.png similarity index 100% rename from public/img/login-i3.png rename to public/img/icon-login-3.png diff --git a/public/img/login-i4.png b/public/img/icon-login-4.png similarity index 100% rename from public/img/login-i4.png rename to public/img/icon-login-4.png diff --git a/public/img/login-i5.png b/public/img/icon-login-5.png similarity index 100% rename from public/img/login-i5.png rename to public/img/icon-login-5.png diff --git a/public/img/mall-hot-i.png b/public/img/icon-mall-hot.png similarity index 100% rename from public/img/mall-hot-i.png rename to public/img/icon-mall-hot.png diff --git a/public/img/safity.png b/public/img/icon-mall-safety.png similarity index 100% rename from public/img/safity.png rename to public/img/icon-mall-safety.png diff --git a/public/img/my_u5.png b/public/img/icon-manager-gift.png similarity index 100% rename from public/img/my_u5.png rename to public/img/icon-manager-gift.png diff --git a/public/img/my_u4.png b/public/img/icon-manager-home.png similarity index 100% rename from public/img/my_u4.png rename to public/img/icon-manager-home.png diff --git a/public/img/my_u6.png b/public/img/icon-manager-mall.png similarity index 100% rename from public/img/my_u6.png rename to public/img/icon-manager-mall.png diff --git a/public/img/my_u2.png b/public/img/icon-manager-merchant.png similarity index 100% rename from public/img/my_u2.png rename to public/img/icon-manager-merchant.png diff --git a/public/img/my_u3.png b/public/img/icon-manager-operation.png similarity index 100% rename from public/img/my_u3.png rename to public/img/icon-manager-operation.png diff --git a/public/img/my_u1.png b/public/img/icon-manager-personal.png similarity index 100% rename from public/img/my_u1.png rename to public/img/icon-manager-personal.png diff --git a/public/img/my_u7.png b/public/img/icon-manager-social.png similarity index 100% rename from public/img/my_u7.png rename to public/img/icon-manager-social.png diff --git a/public/img/my_o1.png b/public/img/icon-my-order-1.png similarity index 100% rename from public/img/my_o1.png rename to public/img/icon-my-order-1.png diff --git a/public/img/my_o2.png b/public/img/icon-my-order-2.png similarity index 100% rename from public/img/my_o2.png rename to public/img/icon-my-order-2.png diff --git a/public/img/my_o3.png b/public/img/icon-my-order-3.png similarity index 100% rename from public/img/my_o3.png rename to public/img/icon-my-order-3.png diff --git a/public/img/my_o4.png b/public/img/icon-my-order-4.png similarity index 100% rename from public/img/my_o4.png rename to public/img/icon-my-order-4.png diff --git a/public/img/my-i1.png b/public/img/icon-my-phone.png similarity index 100% rename from public/img/my-i1.png rename to public/img/icon-my-phone.png diff --git a/public/img/my_s1.png b/public/img/icon-my-service-1.png similarity index 100% rename from public/img/my_s1.png rename to public/img/icon-my-service-1.png diff --git a/public/img/my_s2.png b/public/img/icon-my-service-2.png similarity index 100% rename from public/img/my_s2.png rename to public/img/icon-my-service-2.png diff --git a/public/img/my_s3.png b/public/img/icon-my-service-3.png similarity index 100% rename from public/img/my_s3.png rename to public/img/icon-my-service-3.png diff --git a/public/img/my_s4.png b/public/img/icon-my-service-4.png similarity index 100% rename from public/img/my_s4.png rename to public/img/icon-my-service-4.png diff --git a/public/img/my_w1.png b/public/img/icon-my-wallet-1.png similarity index 100% rename from public/img/my_w1.png rename to public/img/icon-my-wallet-1.png diff --git a/public/img/my_w2.png b/public/img/icon-my-wallet-2.png similarity index 100% rename from public/img/my_w2.png rename to public/img/icon-my-wallet-2.png diff --git a/public/img/my_w3.png b/public/img/icon-my-wallet-3.png similarity index 100% rename from public/img/my_w3.png rename to public/img/icon-my-wallet-3.png diff --git a/public/img/aliicon.png b/public/img/icon-pay-alipay-method.png similarity index 100% rename from public/img/aliicon.png rename to public/img/icon-pay-alipay-method.png diff --git a/public/img/pay_balance.png b/public/img/icon-pay-balance.png similarity index 100% rename from public/img/pay_balance.png rename to public/img/icon-pay-balance.png diff --git a/public/img/bankcardicon.png b/public/img/icon-pay-bankcard.png similarity index 100% rename from public/img/bankcardicon.png rename to public/img/icon-pay-bankcard.png diff --git a/public/img/pay_point.png b/public/img/icon-pay-point.png similarity index 100% rename from public/img/pay_point.png rename to public/img/icon-pay-point.png diff --git a/public/img/pay_weixin.png b/public/img/icon-pay-weixin.png similarity index 100% rename from public/img/pay_weixin.png rename to public/img/icon-pay-weixin.png diff --git a/public/img/point_icon.png b/public/img/icon-point.png similarity index 100% rename from public/img/point_icon.png rename to public/img/icon-point.png diff --git a/public/img/pro-list-px-0.png b/public/img/icon-product-sort-0.png similarity index 100% rename from public/img/pro-list-px-0.png rename to public/img/icon-product-sort-0.png diff --git a/public/img/pro-list-px-1.png b/public/img/icon-product-sort-1.png similarity index 100% rename from public/img/pro-list-px-1.png rename to public/img/icon-product-sort-1.png diff --git a/public/img/pro-list-px-2.png b/public/img/icon-product-sort-2.png similarity index 100% rename from public/img/pro-list-px-2.png rename to public/img/icon-product-sort-2.png diff --git a/public/img/pro.png b/public/img/icon-product.png similarity index 100% rename from public/img/pro.png rename to public/img/icon-product.png diff --git a/public/img/search.png b/public/img/icon-search.png similarity index 100% rename from public/img/search.png rename to public/img/icon-search.png diff --git a/public/img/service-i1.png b/public/img/icon-service-1.png similarity index 100% rename from public/img/service-i1.png rename to public/img/icon-service-1.png diff --git a/public/img/service-i2.png b/public/img/icon-service-2.png similarity index 100% rename from public/img/service-i2.png rename to public/img/icon-service-2.png diff --git a/public/img/set-i3.png b/public/img/icon-settings-cashout.png similarity index 100% rename from public/img/set-i3.png rename to public/img/icon-settings-cashout.png diff --git a/public/img/set-i4.png b/public/img/icon-settings-logout.png similarity index 100% rename from public/img/set-i4.png rename to public/img/icon-settings-logout.png diff --git a/public/img/set-i2.png b/public/img/icon-settings-password.png similarity index 100% rename from public/img/set-i2.png rename to public/img/icon-settings-password.png diff --git a/public/img/set-i1.png b/public/img/icon-settings-profile.png similarity index 100% rename from public/img/set-i1.png rename to public/img/icon-settings-profile.png diff --git a/public/img/share.png b/public/img/icon-share.png similarity index 100% rename from public/img/share.png rename to public/img/icon-share.png diff --git a/public/img/icon_canpay.png b/public/img/icon-social-canpay.png similarity index 100% rename from public/img/icon_canpay.png rename to public/img/icon-social-canpay.png diff --git a/public/img/icon_disc.png b/public/img/icon-social-discount.png similarity index 100% rename from public/img/icon_disc.png rename to public/img/icon-social-discount.png diff --git a/public/img/sort-search.png b/public/img/icon-sort-search.png similarity index 100% rename from public/img/sort-search.png rename to public/img/icon-sort-search.png diff --git a/public/img/spec.png b/public/img/icon-spec.png similarity index 100% rename from public/img/spec.png rename to public/img/icon-spec.png diff --git a/public/img/Home_Active.png b/public/img/icon-tabbar-home-active.png similarity index 100% rename from public/img/Home_Active.png rename to public/img/icon-tabbar-home-active.png diff --git a/public/img/Home_Inactive.png b/public/img/icon-tabbar-home-inactive.png similarity index 100% rename from public/img/Home_Inactive.png rename to public/img/icon-tabbar-home-inactive.png diff --git a/public/img/Mall_Active.png b/public/img/icon-tabbar-mall-active.png similarity index 100% rename from public/img/Mall_Active.png rename to public/img/icon-tabbar-mall-active.png diff --git a/public/img/Mall_Inactive.png b/public/img/icon-tabbar-mall-inactive.png similarity index 100% rename from public/img/Mall_Inactive.png rename to public/img/icon-tabbar-mall-inactive.png diff --git a/public/img/My_Active.png b/public/img/icon-tabbar-my-active.png similarity index 100% rename from public/img/My_Active.png rename to public/img/icon-tabbar-my-active.png diff --git a/public/img/My_Inactive.png b/public/img/icon-tabbar-my-inactive.png similarity index 100% rename from public/img/My_Inactive.png rename to public/img/icon-tabbar-my-inactive.png diff --git a/public/img/team-i1.png b/public/img/icon-team-user.png similarity index 100% rename from public/img/team-i1.png rename to public/img/icon-team-user.png diff --git a/public/img/mallDetail-i0.png b/public/img/icon-trade-detail-state-0.png similarity index 100% rename from public/img/mallDetail-i0.png rename to public/img/icon-trade-detail-state-0.png diff --git a/public/img/vip_icon.png b/public/img/icon-vip.png similarity index 100% rename from public/img/vip_icon.png rename to public/img/icon-vip.png diff --git a/public/img/pay_alipay.png b/public/img/icon-wallet-alipay.png similarity index 100% rename from public/img/pay_alipay.png rename to public/img/icon-wallet-alipay.png diff --git a/public/img/asset-i1.png b/public/img/icon-wallet-asset.png similarity index 100% rename from public/img/asset-i1.png rename to public/img/icon-wallet-asset.png diff --git a/public/img/pay_bankcard.png b/public/img/icon-wallet-bankcard.png similarity index 100% rename from public/img/pay_bankcard.png rename to public/img/icon-wallet-bankcard.png diff --git a/public/img/allow_bg.jpg b/public/img/img-allow-bg.jpg similarity index 100% rename from public/img/allow_bg.jpg rename to public/img/img-allow-bg.jpg diff --git a/public/img/avatar.png b/public/img/img-avatar-default.png similarity index 100% rename from public/img/avatar.png rename to public/img/img-avatar-default.png diff --git a/public/img/bs-banner.jpg b/public/img/img-business-school-banner.jpg similarity index 100% rename from public/img/bs-banner.jpg rename to public/img/img-business-school-banner.jpg diff --git a/public/img/Business_School_bg.jpg b/public/img/img-business-school-bg.jpg similarity index 100% rename from public/img/Business_School_bg.jpg rename to public/img/img-business-school-bg.jpg diff --git a/public/img/bs-bg.png b/public/img/img-business-school-bg.png similarity index 100% rename from public/img/bs-bg.png rename to public/img/img-business-school-bg.png diff --git a/public/img/cv-i1.png b/public/img/img-certificate-view-1.png similarity index 100% rename from public/img/cv-i1.png rename to public/img/img-certificate-view-1.png diff --git a/public/img/no.png b/public/img/img-empty.png similarity index 100% rename from public/img/no.png rename to public/img/img-empty.png diff --git a/public/img/gift_bg.png b/public/img/img-gift-bg.png similarity index 100% rename from public/img/gift_bg.png rename to public/img/img-gift-bg.png diff --git a/public/img/gift_i1.png b/public/img/img-gift-default.png similarity index 100% rename from public/img/gift_i1.png rename to public/img/img-gift-default.png diff --git a/public/img/gift_qy.png b/public/img/img-gift-rights.png similarity index 100% rename from public/img/gift_qy.png rename to public/img/img-gift-rights.png diff --git a/public/img/gift_bg1.png b/public/img/img-gift-section-bg-1.png similarity index 100% rename from public/img/gift_bg1.png rename to public/img/img-gift-section-bg-1.png diff --git a/public/img/gift_bg2.png b/public/img/img-gift-section-bg-2.png similarity index 100% rename from public/img/gift_bg2.png rename to public/img/img-gift-section-bg-2.png diff --git a/public/img/gift_bg3.png b/public/img/img-gift-section-bg-3.png similarity index 100% rename from public/img/gift_bg3.png rename to public/img/img-gift-section-bg-3.png diff --git a/public/img/gift_title.png b/public/img/img-gift-title.png similarity index 100% rename from public/img/gift_title.png rename to public/img/img-gift-title.png diff --git a/public/img/banner_bg.png b/public/img/img-home-banner-bg.png similarity index 100% rename from public/img/banner_bg.png rename to public/img/img-home-banner-bg.png diff --git a/public/img/tomall_i1.png b/public/img/img-home-to-mall-1.png similarity index 100% rename from public/img/tomall_i1.png rename to public/img/img-home-to-mall-1.png diff --git a/public/img/tomall_i2.png b/public/img/img-home-to-mall-2.png similarity index 100% rename from public/img/tomall_i2.png rename to public/img/img-home-to-mall-2.png diff --git a/public/img/invite_bg.jpg b/public/img/img-invite-bg.jpg similarity index 100% rename from public/img/invite_bg.jpg rename to public/img/img-invite-bg.jpg diff --git a/public/img/label-1.png b/public/img/img-label-1.png similarity index 100% rename from public/img/label-1.png rename to public/img/img-label-1.png diff --git a/public/img/label-2.png b/public/img/img-label-2.png similarity index 100% rename from public/img/label-2.png rename to public/img/img-label-2.png diff --git a/public/img/label-3.png b/public/img/img-label-3.png similarity index 100% rename from public/img/label-3.png rename to public/img/img-label-3.png diff --git a/public/img/login-bg.jpg b/public/img/img-login-bg.jpg similarity index 100% rename from public/img/login-bg.jpg rename to public/img/img-login-bg.jpg diff --git a/public/img/img-logo-app-transparent.png b/public/img/img-logo-app-transparent.png new file mode 100644 index 0000000..98cfe49 Binary files /dev/null and b/public/img/img-logo-app-transparent.png differ diff --git a/public/img/img-logo-app.png b/public/img/img-logo-app.png new file mode 100644 index 0000000..b9a64bb Binary files /dev/null and b/public/img/img-logo-app.png differ diff --git a/public/img/b_logo.png b/public/img/img-logo-business.png similarity index 100% rename from public/img/b_logo.png rename to public/img/img-logo-business.png diff --git a/public/img/login-logo.png b/public/img/img-logo-login.png similarity index 100% rename from public/img/login-logo.png rename to public/img/img-logo-login.png diff --git a/public/img/maisui.png b/public/img/img-maisui.png similarity index 100% rename from public/img/maisui.png rename to public/img/img-maisui.png diff --git a/public/img/rexiao.png b/public/img/img-mall-hot-title.png similarity index 100% rename from public/img/rexiao.png rename to public/img/img-mall-hot-title.png diff --git a/public/img/mall_i15.png b/public/img/img-mall-section-15.png similarity index 100% rename from public/img/mall_i15.png rename to public/img/img-mall-section-15.png diff --git a/public/img/mall_i35.png b/public/img/img-mall-section-35.png similarity index 100% rename from public/img/mall_i35.png rename to public/img/img-mall-section-35.png diff --git a/public/img/merchant_bg.jpg b/public/img/img-merchant-bg.jpg similarity index 100% rename from public/img/merchant_bg.jpg rename to public/img/img-merchant-bg.jpg diff --git a/public/img/my-bg.jpg b/public/img/img-my-bg.jpg similarity index 100% rename from public/img/my-bg.jpg rename to public/img/img-my-bg.jpg diff --git a/public/img/my_f1.jpg b/public/img/img-my-feature-1.jpg similarity index 100% rename from public/img/my_f1.jpg rename to public/img/img-my-feature-1.jpg diff --git a/public/img/my_f2.jpg b/public/img/img-my-feature-2.jpg similarity index 100% rename from public/img/my_f2.jpg rename to public/img/img-my-feature-2.jpg diff --git a/public/img/point_bg.jpg b/public/img/img-point-bg.jpg similarity index 100% rename from public/img/point_bg.jpg rename to public/img/img-point-bg.jpg diff --git a/public/img/service-bg.png b/public/img/img-service-bg.png similarity index 100% rename from public/img/service-bg.png rename to public/img/img-service-bg.png diff --git a/public/img/cart_shdzbg.png b/public/img/img-trade-address-bg.png similarity index 100% rename from public/img/cart_shdzbg.png rename to public/img/img-trade-address-bg.png diff --git a/public/img/mallDetail-bg.jpg b/public/img/img-trade-detail-bg.jpg similarity index 100% rename from public/img/mallDetail-bg.jpg rename to public/img/img-trade-detail-bg.jpg diff --git a/public/img/asset-bg1.png b/public/img/img-wallet-balance-bg.png similarity index 100% rename from public/img/asset-bg1.png rename to public/img/img-wallet-balance-bg.png diff --git a/public/img/asset-c-bg.png b/public/img/img-wallet-card-bg.png similarity index 100% rename from public/img/asset-c-bg.png rename to public/img/img-wallet-card-bg.png diff --git a/public/img/logo.png b/public/img/logo.png deleted file mode 100644 index 35c3988..0000000 Binary files a/public/img/logo.png and /dev/null differ diff --git a/public/img/my_f3.jpg b/public/img/my_f3.jpg deleted file mode 100644 index cbffb83..0000000 Binary files a/public/img/my_f3.jpg and /dev/null differ diff --git a/public/img/my_f4.jpg b/public/img/my_f4.jpg deleted file mode 100644 index 371bf91..0000000 Binary files a/public/img/my_f4.jpg and /dev/null differ diff --git a/src/api/http.js b/src/api/http.js index bbadb9f..de90c0f 100644 --- a/src/api/http.js +++ b/src/api/http.js @@ -8,11 +8,34 @@ const BASE_URL = import.meta.env.VITE_API_URL || 'http://127.0.0.1:3001'; const DEFAULT_TIMEOUT = 30000; const pendingControllers = new Set(); +const persistentControllers = new Set(); // 不会被 abortAll 取消的控制器 let loadingCount = 0; +// 记录是否已经在当前页面显示过骨架屏 +let hasShownSkeletonInPage = false; +// 记录上次显示骨架屏时的页面路径 +let lastSkeletonPath = ''; +/** + * 显示骨架屏 - 只在页面切换且首次请求时显示 + */ function showSkeleton() { loadingCount++; - window.dispatchEvent(new Event('showSkeleton')); + + // 检查是否正在页面切换或首次进入页面 + const isChanging = window.__isPageChanging ? window.__isPageChanging() : false; + const currentPath = window.__currentPath ? window.__currentPath() : ''; + + // 当页面路径变化时,重置标志 + if (lastSkeletonPath !== currentPath) { + hasShownSkeletonInPage = false; + lastSkeletonPath = currentPath; + } + + // 只有在页面切换期间或当前页面尚未显示过骨架屏时,才显示骨架屏 + if (isChanging || !hasShownSkeletonInPage) { + window.dispatchEvent(new Event('showSkeleton')); + hasShownSkeletonInPage = true; + } } function closeSkeleton() { @@ -109,8 +132,12 @@ function handleError(err, requestToken) { /** * 带超时的 fetch + * @param {string} url - 请求地址 + * @param {object} options - 请求选项 + * @param {number} timeout - 超时时间 + * @param {boolean} persistent - 是否为持久请求(不被 abortAll 取消) */ -function fetchWithTimeout(url, options, timeout = DEFAULT_TIMEOUT) { +function fetchWithTimeout(url, options, timeout = DEFAULT_TIMEOUT, persistent = false) { const controller = new AbortController(); const externalSignal = options.signal; @@ -122,8 +149,16 @@ function fetchWithTimeout(url, options, timeout = DEFAULT_TIMEOUT) { } } - pendingControllers.add(controller); - showSkeleton(); + // 根据 persistent 标志决定放入哪个集合 + if (persistent) { + persistentControllers.add(controller); + } else { + pendingControllers.add(controller); + } + // 持久请求不显示骨架屏 + if (!persistent) { + showSkeleton(); + } return new Promise((resolve, reject) => { const timer = setTimeout(() => { @@ -145,8 +180,13 @@ function fetchWithTimeout(url, options, timeout = DEFAULT_TIMEOUT) { reject({ status: 0, message: '网络连接失败', data: null }); }) .finally(() => { + // 从对应的集合中删除控制器 pendingControllers.delete(controller); - closeSkeleton(); + persistentControllers.delete(controller); + // 只有非持久请求才关闭骨架屏 + if (!persistent) { + closeSkeleton(); + } }); }); } @@ -157,19 +197,21 @@ function fetchWithTimeout(url, options, timeout = DEFAULT_TIMEOUT) { * @param {object} data - 请求数据 * @param {string} method - 请求方法,默认 POST * @param {number} timeout - 超时时间 ms + * @param {AbortSignal} signal - 外部信号 + * @param {boolean} persistent - 是否为持久请求 * @returns {Promise} */ -export function request(url, data, method = 'POST', timeout = DEFAULT_TIMEOUT, signal) { +export function request(url, data, method = 'POST', timeout = DEFAULT_TIMEOUT, signal, persistent = false) { const requestToken = localStorage.getItem('member_token'); return fetchWithTimeout(BASE_URL + url, { method, headers: getHeaders(), body: JSON.stringify(data), signal, - }, timeout).then(handleResponse).catch(err => handleError(err, requestToken)); + }, timeout, persistent).then(handleResponse).catch(err => handleError(err, requestToken)); } -export const get = (url, params, timeout = DEFAULT_TIMEOUT, signal) => { +export const get = (url, params, timeout = DEFAULT_TIMEOUT, signal, persistent = false) => { const requestToken = localStorage.getItem('member_token'); let query = ''; if (params) { @@ -179,21 +221,23 @@ export const get = (url, params, timeout = DEFAULT_TIMEOUT, signal) => { method: 'GET', headers: getHeaders(), signal, - }, timeout).then(handleResponse).catch(err => handleError(err, requestToken)); + }, timeout, persistent).then(handleResponse).catch(err => handleError(err, requestToken)); }; -export const post = (url, data, timeout = DEFAULT_TIMEOUT, signal) => request(url, data, 'POST', timeout, signal); -export const put = (url, data, timeout = DEFAULT_TIMEOUT, signal) => request(url, data, 'PUT', timeout, signal); -export const del = (url, data, timeout = DEFAULT_TIMEOUT, signal) => request(url, data, 'DELETE', timeout, signal); +export const post = (url, data, timeout = DEFAULT_TIMEOUT, signal, persistent = false) => request(url, data, 'POST', timeout, signal, persistent); +export const put = (url, data, timeout = DEFAULT_TIMEOUT, signal, persistent = false) => request(url, data, 'PUT', timeout, signal, persistent); +export const del = (url, data, timeout = DEFAULT_TIMEOUT, signal, persistent = false) => request(url, data, 'DELETE', timeout, signal, persistent); /** * POST FormData 请求 * @param {string} url - 请求路径 * @param {FormData} formData - FormData 对象 * @param {number} timeout - 超时时间 ms + * @param {AbortSignal} signal - 外部信号 + * @param {boolean} persistent - 是否为持久请求 * @returns {Promise} */ -export function postForm(url, formData, timeout = DEFAULT_TIMEOUT, signal) { +export function postForm(url, formData, timeout = DEFAULT_TIMEOUT, signal, persistent = false) { const headers = {}; const token = localStorage.getItem('member_token'); if (token) { @@ -204,7 +248,7 @@ export function postForm(url, formData, timeout = DEFAULT_TIMEOUT, signal) { headers, body: formData, signal, - }, timeout).then(handleResponse).catch(err => handleError(err, token)); + }, timeout, persistent).then(handleResponse).catch(err => handleError(err, token)); } /** @@ -212,9 +256,11 @@ export function postForm(url, formData, timeout = DEFAULT_TIMEOUT, signal) { * @param {string} url - 请求路径 * @param {File[]} files - 文件数组 * @param {number} timeout - 超时时间 ms(默认 30 秒上传较长) + * @param {AbortSignal} signal - 外部信号 + * @param {boolean} persistent - 是否为持久请求 * @returns {Promise} */ -export function upload(url, files, timeout = 30000, signal) { +export function upload(url, files, timeout = 30000, signal, persistent = false) { const formData = new FormData(); files.forEach(file => { formData.append('file', file); @@ -231,7 +277,7 @@ export function upload(url, files, timeout = 30000, signal) { headers, body: formData, signal, - }, timeout) + }, timeout, persistent) .then(res => res.text().then(text => { try { const data = JSON.parse(text); @@ -246,10 +292,16 @@ export function upload(url, files, timeout = 30000, signal) { .catch(handleError); } +/** + * 取消所有请求并关闭骨架屏 + * 注意:持久请求不会被取消 + */ export function abortAll() { pendingControllers.forEach(controller => controller.abort()); pendingControllers.clear(); loadingCount = 0; + // 重置页面骨架屏标志,为下一次页面切换做准备 + hasShownSkeletonInPage = false; window.dispatchEvent(new Event('closeSkeleton')); } diff --git a/src/components/AddressSelector.vue b/src/components/AddressSelector.vue index 005bad7..0c87925 100644 --- a/src/components/AddressSelector.vue +++ b/src/components/AddressSelector.vue @@ -1,17 +1,17 @@