From beded95be03fe09b613928c984027ee529e13b67 Mon Sep 17 00:00:00 2001 From: zc <2064281269@qq.com> Date: Sat, 11 Oct 2025 22:36:50 +0800 Subject: [PATCH] feat: cache --- components.d.ts | 32 ++++ package.json | 3 + src/assets/index.scss | 4 +- src/assets/variables.scss | 16 ++ src/router/index.ts | 49 ++++- src/stores/app.ts | 7 + src/stores/counter.ts | 12 -- .../components/address-form.vue | 87 +++++++++ .../components/address-list.vue | 77 ++++++++ .../components/all-review.vue | 59 ++++++ .../components/review-single.vue | 12 +- .../components/​​shopping-cart​.vue | 106 ++++++----- src/views/commodity-detail/index.vue | 114 +++++++----- src/views/demo/index.vue | 25 +++ src/views/order/detail.vue | 79 ++++++++ src/views/order/index.vue | 171 ++++++++++++++++++ src/views/review/center.vue | 64 +++++++ src/views/review/write.vue | 46 +++++ src/views/search-container/index.vue | 84 +++++++++ vite.config.ts | 28 ++- yarn.lock | 60 +++++- 21 files changed, 1010 insertions(+), 125 deletions(-) create mode 100644 components.d.ts create mode 100644 src/assets/variables.scss create mode 100644 src/stores/app.ts delete mode 100644 src/stores/counter.ts create mode 100644 src/views/commodity-detail/components/address-form.vue create mode 100644 src/views/commodity-detail/components/address-list.vue create mode 100644 src/views/commodity-detail/components/all-review.vue create mode 100644 src/views/demo/index.vue create mode 100644 src/views/order/detail.vue create mode 100644 src/views/order/index.vue create mode 100644 src/views/review/center.vue create mode 100644 src/views/review/write.vue create mode 100644 src/views/search-container/index.vue diff --git a/components.d.ts b/components.d.ts new file mode 100644 index 0000000..0b75c10 --- /dev/null +++ b/components.d.ts @@ -0,0 +1,32 @@ +/* eslint-disable */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +// biome-ignore lint: disable +export {} + +/* prettier-ignore */ +declare module 'vue' { + export interface GlobalComponents { + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + VanArea: typeof import('vant/es')['Area'] + VanButton: typeof import('vant/es')['Button'] + VanCell: typeof import('vant/es')['Cell'] + VanCellGroup: typeof import('vant/es')['CellGroup'] + VanCheckbox: typeof import('vant/es')['Checkbox'] + VanCheckboxGroup: typeof import('vant/es')['CheckboxGroup'] + VanField: typeof import('vant/es')['Field'] + VanForm: typeof import('vant/es')['Form'] + VanIcon: typeof import('vant/es')['Icon'] + VanNoticeBar: typeof import('vant/es')['NoticeBar'] + VanPopover: typeof import('vant/es')['Popover'] + VanPopup: typeof import('vant/es')['Popup'] + VanRate: typeof import('vant/es')['Rate'] + VanSearch: typeof import('vant/es')['Search'] + VanTab: typeof import('vant/es')['Tab'] + VanTabs: typeof import('vant/es')['Tabs'] + VanTag: typeof import('vant/es')['Tag'] + VanUploader: typeof import('vant/es')['Uploader'] + } +} diff --git a/package.json b/package.json index 84bb6dc..06137a6 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "format": "prettier --write src/" }, "dependencies": { + "@vant/area-data": "^2.1.0", "axios": "^1.11.0", "lodash-es": "^4.17.21", "lz-utils-lib": "^1.0.60", @@ -30,6 +31,7 @@ "devDependencies": { "@tsconfig/node22": "^22.0.2", "@types/node": "^22.16.5", + "@vant/auto-import-resolver": "^1.3.0", "@vitejs/plugin-vue": "^6.0.1", "@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-typescript": "^14.6.0", @@ -44,6 +46,7 @@ "typescript": "~5.8.0", "unocss": "^66.4.2", "unplugin-auto-import": "^20.0.0", + "unplugin-vue-components": "^29.1.0", "vite": "^7.0.6", "vite-plugin-vue-devtools": "^8.0.0", "vue-tsc": "^3.0.4" diff --git a/src/assets/index.scss b/src/assets/index.scss index 2c406bb..49c9bb5 100644 --- a/src/assets/index.scss +++ b/src/assets/index.scss @@ -1,2 +1,2 @@ -@import "./base.scss"; - +@use './base.scss' as *; +@use './variables.scss' as *; diff --git a/src/assets/variables.scss b/src/assets/variables.scss new file mode 100644 index 0000000..fa5b16a --- /dev/null +++ b/src/assets/variables.scss @@ -0,0 +1,16 @@ +$theme-color: #01cf24; +$theme-disabled-color: #cefad5; + +.theme-bg-color { + background: $theme-color !important; +} +.theme-border-color { + border-color: $theme-color !important; +} +.theme-disabled-color { + background: $theme-disabled-color !important; +} + +.theme-color { + color: $theme-color !important; +} diff --git a/src/router/index.ts b/src/router/index.ts index 8c41612..0ee70b2 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,9 +1,16 @@ import { createRouter, createWebHistory } from 'vue-router' const router = createRouter({ - history: createWebHistory(import.meta.env.BASE_URL), routes: [ + { + path: '/demo', + name: 'demo', + // route level code-splitting + // this generates a separate chunk (About.[hash].js) for this route + // which is lazy-loaded when the route is visited. + component: () => import('../views/demo/index.vue'), + }, { path: '/commodity-detail', name: 'commodity-detail', @@ -12,6 +19,46 @@ const router = createRouter({ // which is lazy-loaded when the route is visited. component: () => import('../views/commodity-detail/index.vue'), }, + { + path: '/order', + name: 'order', + // route level code-splitting + // this generates a separate chunk (About.[hash].js) for this route + // which is lazy-loaded when the route is visited. + component: () => import('../views/order/index.vue'), + }, + { + path: '/order/detail', + name: 'order/detail', + // route level code-splitting + // this generates a separate chunk (About.[hash].js) for this route + // which is lazy-loaded when the route is visited. + component: () => import('../views/order/detail.vue'), + }, + { + path: '/search-container', + name: 'search-container', + // route level code-splitting + // this generates a separate chunk (About.[hash].js) for this route + // which is lazy-loaded when the route is visited. + component: () => import('../views/search-container/index.vue'), + }, + { + path: '/review/center', + name: 'review/center', + // route level code-splitting + // this generates a separate chunk (About.[hash].js) for this route + // which is lazy-loaded when the route is visited. + component: () => import('../views/review/center.vue'), + }, + { + path: '/review/write', + name: 'review/write', + // route level code-splitting + // this generates a separate chunk (About.[hash].js) for this route + // which is lazy-loaded when the route is visited. + component: () => import('../views/review/write.vue'), + }, ], }) diff --git a/src/stores/app.ts b/src/stores/app.ts new file mode 100644 index 0000000..c711daa --- /dev/null +++ b/src/stores/app.ts @@ -0,0 +1,7 @@ +import { defineStore } from 'pinia' + +export const useAppStore = defineStore('app', () => { + const themeColor = '#01CF24' + + return { themeColor } +}) diff --git a/src/stores/counter.ts b/src/stores/counter.ts deleted file mode 100644 index b6757ba..0000000 --- a/src/stores/counter.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { ref, computed } from 'vue' -import { defineStore } from 'pinia' - -export const useCounterStore = defineStore('counter', () => { - const count = ref(0) - const doubleCount = computed(() => count.value * 2) - function increment() { - count.value++ - } - - return { count, doubleCount, increment } -}) diff --git a/src/views/commodity-detail/components/address-form.vue b/src/views/commodity-detail/components/address-form.vue new file mode 100644 index 0000000..575fcdc --- /dev/null +++ b/src/views/commodity-detail/components/address-form.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/src/views/commodity-detail/components/address-list.vue b/src/views/commodity-detail/components/address-list.vue new file mode 100644 index 0000000..64aec28 --- /dev/null +++ b/src/views/commodity-detail/components/address-list.vue @@ -0,0 +1,77 @@ + + + + + diff --git a/src/views/commodity-detail/components/all-review.vue b/src/views/commodity-detail/components/all-review.vue new file mode 100644 index 0000000..2257b4b --- /dev/null +++ b/src/views/commodity-detail/components/all-review.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/src/views/commodity-detail/components/review-single.vue b/src/views/commodity-detail/components/review-single.vue index fa704e1..bd111cf 100644 --- a/src/views/commodity-detail/components/review-single.vue +++ b/src/views/commodity-detail/components/review-single.vue @@ -1,14 +1,14 @@ - \ No newline at end of file + diff --git a/src/views/commodity-detail/components/​​shopping-cart​.vue b/src/views/commodity-detail/components/​​shopping-cart​.vue index c554f83..251e0bd 100644 --- a/src/views/commodity-detail/components/​​shopping-cart​.vue +++ b/src/views/commodity-detail/components/​​shopping-cart​.vue @@ -1,73 +1,87 @@ \ No newline at end of file + diff --git a/src/views/commodity-detail/index.vue b/src/views/commodity-detail/index.vue index 1c0d7f5..0201bf3 100644 --- a/src/views/commodity-detail/index.vue +++ b/src/views/commodity-detail/index.vue @@ -1,8 +1,6 @@ \ No newline at end of file + diff --git a/src/views/demo/index.vue b/src/views/demo/index.vue new file mode 100644 index 0000000..111ed63 --- /dev/null +++ b/src/views/demo/index.vue @@ -0,0 +1,25 @@ + + + + + diff --git a/src/views/order/detail.vue b/src/views/order/detail.vue new file mode 100644 index 0000000..8477c30 --- /dev/null +++ b/src/views/order/detail.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/src/views/order/index.vue b/src/views/order/index.vue new file mode 100644 index 0000000..707d0df --- /dev/null +++ b/src/views/order/index.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/src/views/review/center.vue b/src/views/review/center.vue new file mode 100644 index 0000000..dabe159 --- /dev/null +++ b/src/views/review/center.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/src/views/review/write.vue b/src/views/review/write.vue new file mode 100644 index 0000000..79642fb --- /dev/null +++ b/src/views/review/write.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/src/views/search-container/index.vue b/src/views/search-container/index.vue new file mode 100644 index 0000000..f894bfe --- /dev/null +++ b/src/views/search-container/index.vue @@ -0,0 +1,84 @@ + + + + + diff --git a/vite.config.ts b/vite.config.ts index 25afbfb..381a0d0 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -4,6 +4,8 @@ import UnoCSS from 'unocss/vite' import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import AutoImport from 'unplugin-auto-import/vite' +import Components from 'unplugin-vue-components/vite' +import { VantResolver } from '@vant/auto-import-resolver' import vueDevTools from 'vite-plugin-vue-devtools' // https://vite.dev/config/ @@ -11,18 +13,30 @@ export default defineConfig({ plugins: [ UnoCSS(), vue(), - vueDevTools(), + // vueDevTools(), AutoImport({ - imports: [ - 'vue', - 'vue-router', - ], - dts: 'src/auto-import.d.ts' + resolvers: [VantResolver()], + imports: ['vue', 'vue-router'], + dts: 'src/auto-import.d.ts', + }), + Components({ + resolvers: [VantResolver()], }), ], + server: { + host: '0.0.0.0', + port: 3000, + }, resolve: { alias: { - '@': fileURLToPath(new URL('./src', import.meta.url)) + '@': fileURLToPath(new URL('./src', import.meta.url)), + }, + }, + css: { + preprocessorOptions: { + scss: { + additionalData: `@use "@/assets/variables.scss" as *;`, + }, }, }, }) diff --git a/yarn.lock b/yarn.lock index 42c53d5..66508b9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1133,6 +1133,16 @@ tinyglobby "^0.2.14" unplugin-utils "^0.2.4" +"@vant/area-data@^2.1.0": + version "2.1.0" + resolved "https://registry.npmmirror.com/@vant/area-data/-/area-data-2.1.0.tgz#77dc6b3ddde18dc25ee8bfd9431b2c67f37233cd" + integrity sha512-wx9PrUX7wSUJiFcz8UrcvZfTjV6sTc+7SHcbjGQQzEcv5y+EwOo5uV4ZKdfrR5Hzcw4MA08LQdvXPSEb4nWbug== + +"@vant/auto-import-resolver@^1.3.0": + version "1.3.0" + resolved "https://registry.npmmirror.com/@vant/auto-import-resolver/-/auto-import-resolver-1.3.0.tgz#d9ab270edb641e9ab5d7c5841c2d721bd52c4133" + integrity sha512-lJyWtCyFizR4bHZvMiNMF3w+WTFTUWAvka1eqTnPK9ticUcKTCOx6qEmHcm8JPb3g1t3GaD2W3MnHkBp/nHamw== + "@vant/popperjs@^1.3.0": version "1.3.0" resolved "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz#e0eff017124b5b2352ef3b36a6df06277f4400f2" @@ -1682,6 +1692,13 @@ debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.4.0, debug@^4.4 dependencies: ms "^2.1.3" +debug@^4.4.3: + version "4.4.3" + resolved "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" + integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== + dependencies: + ms "^2.1.3" + deep-is@^0.1.3: version "0.1.4" resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" @@ -2386,7 +2403,7 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -local-pkg@^1.1.1: +local-pkg@^1.1.1, local-pkg@^1.1.2: version "1.1.2" resolved "https://registry.npmmirror.com/local-pkg/-/local-pkg-1.1.2.tgz#c03d208787126445303f8161619dc701afa4abb5" integrity sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A== @@ -2435,6 +2452,13 @@ magic-string@^0.30.17, magic-string@^0.30.4: dependencies: "@jridgewell/sourcemap-codec" "^1.5.5" +magic-string@^0.30.19: + version "0.30.19" + resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.19.tgz#cebe9f104e565602e5d2098c5f2e79a77cc86da9" + integrity sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.5" + math-intrinsics@^1.1.0: version "1.1.0" resolved "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" @@ -2494,7 +2518,7 @@ mitt@^3.0.1: resolved "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1" integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw== -mlly@^1.7.4: +mlly@^1.7.4, mlly@^1.8.0: version "1.8.0" resolved "https://registry.npmmirror.com/mlly/-/mlly-1.8.0.tgz#e074612b938af8eba1eaf43299cbc89cb72d824e" integrity sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g== @@ -3026,6 +3050,14 @@ tinyglobby@^0.2.14: fdir "^6.4.4" picomatch "^4.0.2" +tinyglobby@^0.2.15: + version "0.2.15" + resolved "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.3" + to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -3163,6 +3195,30 @@ unplugin-utils@^0.3.0: pathe "^2.0.3" picomatch "^4.0.3" +unplugin-vue-components@^29.1.0: + version "29.1.0" + resolved "https://registry.npmmirror.com/unplugin-vue-components/-/unplugin-vue-components-29.1.0.tgz#6064dfd43ebfc2d54fc04d6c391d30c9f66d3360" + integrity sha512-z/9ACPXth199s9aCTCdKZAhe5QGOpvzJYP+Hkd0GN1/PpAmsu+W3UlRY3BJAewPqQxh5xi56+Og6mfiCV1Jzpg== + dependencies: + chokidar "^3.6.0" + debug "^4.4.3" + local-pkg "^1.1.2" + magic-string "^0.30.19" + mlly "^1.8.0" + tinyglobby "^0.2.15" + unplugin "^2.3.10" + unplugin-utils "^0.3.0" + +unplugin@^2.3.10: + version "2.3.10" + resolved "https://registry.npmmirror.com/unplugin/-/unplugin-2.3.10.tgz#15e75fec9384743335be7e54e5c88b5c187a3e94" + integrity sha512-6NCPkv1ClwH+/BGE9QeoTIl09nuiAt0gS28nn1PvYXsGKRwM2TCbFA2QiilmehPDTXIe684k4rZI1yl3A1PCUw== + dependencies: + "@jridgewell/remapping" "^2.3.5" + acorn "^8.15.0" + picomatch "^4.0.3" + webpack-virtual-modules "^0.6.2" + unplugin@^2.3.5: version "2.3.8" resolved "https://registry.npmmirror.com/unplugin/-/unplugin-2.3.8.tgz#617198a50ec3467f28d03e4096167339747405e6"