diff --git a/layouts/m.vue b/layouts/m.vue
new file mode 100644
index 0000000..e69de29
diff --git a/middleware/auth.global.ts b/middleware/auth.global.ts
new file mode 100644
index 0000000..230fd6b
--- /dev/null
+++ b/middleware/auth.global.ts
@@ -0,0 +1,19 @@
+// 区分是手机端还是移动端
+
+export default defineNuxtRouteMiddleware((to, from) => {
+ if (import.meta.client) {
+ // 在客户端处理路由
+ // 是否是移动端设备
+ const isMobile = /(Android|webOS|iPhone|iPod|tablet|BlackBerry|Mobile)/i.test(navigator.userAgent)
+ // 是否是手机端路由
+ const isRouterMobile = /^\/m\//.test(to.fullPath)
+ // 移动端并且 不是/m开头路由
+ if (isMobile && !isRouterMobile) {
+ return navigateTo(`/m`)
+ }
+ // 不是移动端 是/m开头路由
+ if (!isMobile && isRouterMobile) {
+ return navigateTo(`/`)
+ }
+ }
+})
diff --git a/middleware/auth.ts b/middleware/auth.ts
deleted file mode 100644
index b729229..0000000
--- a/middleware/auth.ts
+++ /dev/null
@@ -1 +0,0 @@
-// 从微信登录重定向到项目 需要获取code值
diff --git a/nuxt.config.ts b/nuxt.config.ts
index d6717df..5e70b92 100644
--- a/nuxt.config.ts
+++ b/nuxt.config.ts
@@ -1,5 +1,6 @@
// import { base_api } from '~/constants/index'
// https://nuxt.com/docs/api/configuration/nuxt-config
+import postcsspxtoviewport from 'postcss-px-to-viewport'
export default defineNuxtConfig({
// devServer: {
// port: 6188,
@@ -13,7 +14,7 @@ export default defineNuxtConfig({
ssr: true,
modules: ['@unocss/nuxt', '@pinia/nuxt', '@element-plus/nuxt', 'pinia-plugin-persistedstate/nuxt'],
unocss: {
- nuxtLayers: true
+ nuxtLayers: true,
},
elementPlus: {
importStyle: 'scss', // 或 'css',确保样式被全局导入
@@ -29,12 +30,22 @@ export default defineNuxtConfig({
},
postcss: {
plugins: [
- // postCssPxToRem({
- // rootValue: 16, // 结果为:设计稿元素尺寸/16,比如元素宽320px,最终页面会换算成 20rem
- // mediaQuery: false, //(布尔值)允许在媒体查询中转换px。
- // // exclude: /node_modules/, //node_modules目录下样式全部不转义
- // propList: ['*'] //需要做转化处理的属性如`hight`、`width`、`margin`等,`*`表示全部
- // })
+ postcsspxtoviewport({
+ unitToConvert: 'px', // 要转化的单位
+ viewportWidth: 750, // UI设计稿的宽度
+ unitPrecision: 6, // 转换后的精度,即小数点位数
+ propList: ['*'], // 指定转换的css属性的单位,*代表全部css属性的单位都进行转换
+ viewportUnit: 'vw', // 指定需要转换成的视窗单位,默认vw
+ fontViewportUnit: 'vw', // 指定字体需要转换成的视窗单位,默认vw
+ selectorBlackList: ['el-'], // 指定不转换为视窗单位的类名,例如van-(vantUI组件),
+ minPixelValue: 1, // 默认值1,小于或等于1px则不进行转换
+ mediaQuery: true, // 是否在媒体查询的css代码中也进行转换,默认false
+ replace: true, // 是否转换后直接更换属性值
+ exclude: [/node_modules/], // 设置忽略文件,用正则做目录名匹配,最好不要排除node_modules 文件,排除后在项目中会发现字体不能跟随页面放大
+ landscape: false, // 是否处理横屏情况
+ // 只转换pages下的m文件
+ include: [/pages\/m/],
+ }),
],
},
},
diff --git a/package.json b/package.json
index 26207b6..7952eb9 100644
--- a/package.json
+++ b/package.json
@@ -20,6 +20,7 @@
"nuxt": "^3.18.1",
"pdfjs-dist": "^5.4.54",
"pinia": "^3.0.3",
+ "postcss-px-to-viewport": "^1.1.1",
"qrcode.vue": "^3.6.0",
"vue": "^3.5.18",
"vue-pdf-embed": "^2.1.3",
@@ -32,7 +33,9 @@
"@pinia-plugin-persistedstate/nuxt": "^1.2.1",
"@types/prettier": "^3.0.0",
"@unocss/nuxt": "^66.4.2",
+ "@vant/nuxt": "^1.0.7",
"element-plus": "^2.10.7",
+ "postcss": "^8.5.6",
"prettier": "3.6.2",
"sass": "^1.90.0",
"unocss": "^66.4.2"
diff --git a/pages/m/index.vue b/pages/m/index.vue
new file mode 100644
index 0000000..ff5a0ef
--- /dev/null
+++ b/pages/m/index.vue
@@ -0,0 +1,11 @@
+
+
+
Mobile Page
+
+
+
+
+
+
diff --git a/types/global.d.ts b/types/global.d.ts
index 97890a7..d794815 100644
--- a/types/global.d.ts
+++ b/types/global.d.ts
@@ -42,3 +42,5 @@ declare module '@wangeditor/editor-for-vue' {
export const Editor: DefineComponent
export const Toolbar: DefineComponent
}
+
+declare module 'postcss-px-to-viewport'
diff --git a/yarn.lock b/yarn.lock
index 12d5f36..38fd845 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1009,7 +1009,7 @@
which "^5.0.0"
ws "^8.18.3"
-"@nuxt/kit@3.18.1", "@nuxt/kit@^3.12.2", "@nuxt/kit@^3.13.2", "@nuxt/kit@^3.15.4", "@nuxt/kit@^3.17.6", "@nuxt/kit@^3.9.0":
+"@nuxt/kit@3.18.1", "@nuxt/kit@^3.12.2", "@nuxt/kit@^3.13.2", "@nuxt/kit@^3.14.159", "@nuxt/kit@^3.15.4", "@nuxt/kit@^3.17.6", "@nuxt/kit@^3.9.0":
version "3.18.1"
resolved "https://registry.npmmirror.com/@nuxt/kit/-/kit-3.18.1.tgz"
integrity sha512-z6w1Fzv27CIKFlhct05rndkJSfoslplWH5fJ9dtusEvpYScLXp5cATWIbWkte9e9zFSmQTgDQJjNs3geQHE7og==
@@ -2187,6 +2187,15 @@
"@uppy/utils" "^4.1.2"
nanoid "^3.1.25"
+"@vant/nuxt@^1.0.7":
+ version "1.0.7"
+ resolved "https://registry.npmmirror.com/@vant/nuxt/-/nuxt-1.0.7.tgz#02ca3fe67be1d59c3d4f5e35316521d6ce5dfa3d"
+ integrity sha512-YVRJIDVlCCjWBhi0a/YBY0M04XmGwAqCkDSEIDIcbvzNN2z178iqKS23Py+c4hUv570LoKaIZMCQ75IJphJkTw==
+ dependencies:
+ "@nuxt/kit" "^3.14.159"
+ magic-string "^0.29.0"
+ unplugin "^1.16.0"
+
"@vercel/nft@0.29.4", "@vercel/nft@^0.29.4":
version "0.29.4"
resolved "https://registry.npmmirror.com/@vercel/nft/-/nft-0.29.4.tgz"
@@ -4870,6 +4879,13 @@ magic-string@^0.27.0:
dependencies:
"@jridgewell/sourcemap-codec" "^1.4.13"
+magic-string@^0.29.0:
+ version "0.29.0"
+ resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.29.0.tgz#f034f79f8c43dba4ae1730ffb5e8c4e084b16cf3"
+ integrity sha512-WcfidHrDjMY+eLjlU+8OvwREqHwpgCeKVBUpQ3OhYYuvfaYCUgcbuBzappNzZvg/v8onU3oQj+BYpkOJe9Iw4Q==
+ dependencies:
+ "@jridgewell/sourcemap-codec" "^1.4.13"
+
magic-string@^0.30.12, magic-string@^0.30.17, magic-string@^0.30.3, magic-string@^0.30.8:
version "0.30.17"
resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz"
@@ -5406,6 +5422,11 @@ nypm@^0.6.0, nypm@^0.6.1:
pkg-types "^2.2.0"
tinyexec "^1.0.1"
+object-assign@>=4.0.1:
+ version "4.1.1"
+ resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
+
object-inspect@^1.13.3:
version "1.13.4"
resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.4.tgz"
@@ -5922,6 +5943,14 @@ postcss-ordered-values@^7.0.2:
cssnano-utils "^5.0.1"
postcss-value-parser "^4.2.0"
+postcss-px-to-viewport@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmmirror.com/postcss-px-to-viewport/-/postcss-px-to-viewport-1.1.1.tgz#a25ca410b553c9892cc8b525cc710da47bf1aa55"
+ integrity sha512-2x9oGnBms+e0cYtBJOZdlwrFg/mLR4P1g2IFu7jYKvnqnH/HLhoKyareW2Q/x4sg0BgklHlP1qeWo2oCyPm8FQ==
+ dependencies:
+ object-assign ">=4.0.1"
+ postcss ">=5.0.2"
+
postcss-reduce-initial@^7.0.4:
version "7.0.4"
resolved "https://registry.npmmirror.com/postcss-reduce-initial/-/postcss-reduce-initial-7.0.4.tgz"
@@ -5974,7 +6003,7 @@ postcss-values-parser@^6.0.2:
is-url-superb "^4.0.0"
quote-unquote "^1.0.0"
-postcss@^8.5.1, postcss@^8.5.6:
+postcss@>=5.0.2, postcss@^8.5.1, postcss@^8.5.6:
version "8.5.6"
resolved "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz"
integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==
@@ -7061,7 +7090,7 @@ unplugin-vue-router@^0.15.0:
unplugin-utils "^0.2.4"
yaml "^2.8.0"
-unplugin@^1.10.0, unplugin@^1.15.0:
+unplugin@^1.10.0, unplugin@^1.15.0, unplugin@^1.16.0:
version "1.16.1"
resolved "https://registry.npmmirror.com/unplugin/-/unplugin-1.16.1.tgz"
integrity sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==