From 99c139d6ceb7194cd7f7b54ac1467c07ccc1592a Mon Sep 17 00:00:00 2001
From: cs10086 <1291454411@qq.com>
Date: Sun, 6 Sep 2026 19:36:36 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20Vue2=20=E5=88=B0=20Vue3=20=E8=BF=81?=
=?UTF-8?q?=E7=A7=BB=E5=85=BC=E5=AE=B9=E4=BF=AE=E5=A4=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 修复 uni-popup-dialog/uni-data-picker keypress.js 中 $once 在 H5 端报错(改用生命周期钩子清理监听)
- main.js 补 $delete globalProperties polyfill(z-paging 自动高度逻辑依赖)
- App.vue onLaunch 补设备信息初始化,修复 X-Device-Id 恒为 unknown
- 68 处 ::v-deep、/deep/ 旧深度选择器替换为 :deep()(含 login-page.scss)
- zetank-personalpage 组件 .sync 修饰符改为 v-model:xxx(Vue3 已移除 .sync)
- vite.config.js HBuilderX 路径支持 HBUILDERX_HOME 环境变量覆盖
- 根 package.json 清理 image-grid 插件遗留元数据
- 收录此前未提交的 uView Vue3 兜底补丁(common/uview-init.js 及各组件 props.js)
---
App.vue | 8 ++
common/uview-init.js | 12 +++
main.js | 20 ++---
package.json | 33 +-------
.../articleContentDetail.vue | 3 +-
.../arctcleCollectList/arctcleCollectList.vue | 15 ++--
pages2/arctcleLikeList/arctcleLikeList.vue | 15 ++--
pages2/balance/balance.vue | 5 +-
pages2/editCms/editCms.vue | 5 +-
pages2/editCms/editSetting.vue | 3 +-
pages2/editCms/preview.vue | 13 ++-
pages2/editCms/vote.vue | 3 +-
pages2/follow/follow.vue | 15 ++--
pages2/historyList/historyList.vue | 15 ++--
pages2/replyCommentList/replyCommentList.vue | 15 ++--
pages2/setting/bind-mobile/bind-mobile.vue | 2 +-
pages2/withdraw/withdraw.vue | 5 +-
.../uni-id-pages/common/login-page.scss | 17 ++--
.../uni-id-pages-agreements.vue | 6 +-
.../uni-id-pages-email-form.vue | 2 +-
.../uni-id-pages-sms-form.vue | 2 +-
.../pages/login/login-withoutpwd.vue | 13 ++-
.../pages/register/register-admin.vue | 2 +-
.../pages/register/register-by-email.vue | 2 +-
.../uni-id-pages/pages/register/register.vue | 2 +-
.../userinfo/bind-mobile/bind-mobile.vue | 2 +-
.../realname-verify/realname-verify.vue | 4 +-
.../pages/userinfo/set-pwd/set-pwd.vue | 2 +-
.../components/sv-editor/sv-editor.vue | 4 +-
.../uni-cms-article/pages/detail/detail.vue | 14 ++--
.../components/uni-data-picker/keypress.js | 11 ++-
.../components/uni-popup-dialog/keypress.js | 11 ++-
.../components/uni-table/uni-table.vue | 6 +-
.../components/uni-thead/uni-thead.vue | 4 +-
.../uni-table/components/uni-tr/uni-tr.vue | 4 +-
.../components/u-action-sheet/props.js | 21 ++---
.../uview-ui/components/u-album/props.js | 23 ++---
.../uview-ui/components/u-alert/props.js | 17 ++--
.../components/u-avatar-group/props.js | 19 +++--
.../uview-ui/components/u-avatar/props.js | 31 +++----
.../uview-ui/components/u-back-top/props.js | 21 ++---
.../uview-ui/components/u-badge/props.js | 33 ++++----
.../uview-ui/components/u-button/props.js | 71 ++++++++--------
.../uview-ui/components/u-calendar/props.js | 57 ++++++-------
.../uview-ui/components/u-cell-group/props.js | 5 +-
.../uview-ui/components/u-cell/props.js | 41 ++++-----
.../components/u-checkbox-group/props.js | 31 +++----
.../uview-ui/components/u-checkbox/props.js | 27 +++---
.../components/u-circle-progress/props.js | 1 +
.../uview-ui/components/u-code-input/props.js | 31 +++----
.../uview-ui/components/u-code/props.js | 13 +--
.../uview-ui/components/u-col/props.js | 11 +--
.../components/u-collapse-item/props.js | 23 ++---
.../uview-ui/components/u-collapse/props.js | 7 +-
.../components/u-column-notice/props.js | 23 ++---
.../uview-ui/components/u-count-down/props.js | 9 +-
.../uview-ui/components/u-count-to/props.js | 23 ++---
.../components/u-datetime-picker/props.js | 49 +++++------
.../uview-ui/components/u-divider/props.js | 17 ++--
.../uview-ui/components/u-empty/props.js | 23 ++---
.../uview-ui/components/u-form-item/props.js | 17 ++--
.../uview-ui/components/u-form/props.js | 19 +++--
.../uview-ui/components/u-gap/props.js | 9 +-
.../uview-ui/components/u-grid-item/props.js | 5 +-
.../uview-ui/components/u-grid/props.js | 7 +-
.../uview-ui/components/u-icon/props.js | 35 ++++----
.../uview-ui/components/u-image/props.js | 33 ++++----
.../components/u-index-anchor/props.js | 11 +--
.../uview-ui/components/u-index-list/props.js | 11 +--
.../uview-ui/components/u-input/props.js | 83 ++++++++++---------
.../uview-ui/components/u-keyboard/props.js | 33 ++++----
.../components/u-line-progress/props.js | 9 +-
.../uview-ui/components/u-line/props.js | 11 +--
.../uview-ui/components/u-link/props.js | 15 ++--
.../uview-ui/components/u-list-item/props.js | 3 +-
.../uview-ui/components/u-list/props.js | 31 +++----
.../components/u-loading-icon/props.js | 23 ++---
.../components/u-loading-page/props.js | 19 +++--
.../uview-ui/components/u-loadmore/props.js | 37 +++++----
.../uview-ui/components/u-modal/props.js | 35 ++++----
.../uview-ui/components/u-navbar/props.js | 33 ++++----
.../uview-ui/components/u-no-network/props.js | 7 +-
.../uview-ui/components/u-notice-bar/props.js | 29 +++----
.../uview-ui/components/u-notify/props.js | 19 +++--
.../uview-ui/components/u-number-box/props.js | 43 +++++-----
.../components/u-number-keyboard/props.js | 7 +-
.../uview-ui/components/u-overlay/props.js | 9 +-
.../uview-ui/components/u-parse/node/node.vue | 5 --
.../uview-ui/components/u-parse/props.js | 1 +
.../uview-ui/components/u-parse/u-parse.vue | 2 +-
.../uview-ui/components/u-picker/props.js | 31 +++----
.../uview-ui/components/u-popup/props.js | 31 +++----
.../components/u-radio-group/props.js | 33 ++++----
.../uview-ui/components/u-radio/props.js | 25 +++---
.../uview-ui/components/u-rate/props.js | 27 +++---
.../uview-ui/components/u-read-more/props.js | 25 +++---
.../uview-ui/components/u-row-notice/props.js | 15 ++--
.../uview-ui/components/u-row/props.js | 7 +-
.../components/u-scroll-list/props.js | 13 +--
.../uview-ui/components/u-search/props.js | 45 +++++-----
.../uview-ui/components/u-skeleton/props.js | 23 ++---
.../uview-ui/components/u-slider/props.js | 21 ++---
.../uview-ui/components/u-status-bar/props.js | 1 +
.../uview-ui/components/u-steps-item/props.js | 9 +-
.../uview-ui/components/u-steps/props.js | 15 ++--
.../uview-ui/components/u-sticky/props.js | 15 ++--
.../uview-ui/components/u-subsection/props.js | 19 +++--
.../components/u-swipe-action-item/props.js | 15 ++--
.../components/u-swipe-action/props.js | 3 +-
.../components/u-swiper-indicator/props.js | 11 +--
.../uview-ui/components/u-swiper/props.js | 51 ++++++------
.../uview-ui/components/u-switch/props.js | 21 ++---
.../components/u-tabbar-item/props.js | 13 +--
.../uview-ui/components/u-tabbar/props.js | 17 ++--
.../uview-ui/components/u-tabs/props.js | 25 +++---
.../uview-ui/components/u-tag/props.js | 33 ++++----
.../uview-ui/components/u-text/props.js | 45 +++++-----
.../uview-ui/components/u-textarea/props.js | 47 ++++++-----
.../uview-ui/components/u-toolbar/props.js | 13 +--
.../uview-ui/components/u-tooltip/props.js | 23 ++---
.../uview-ui/components/u-transition/props.js | 9 +-
.../uview-ui/components/u-upload/props.js | 49 +++++------
uni_modules/uview-ui/index.js | 18 +++-
.../zetank-personalpage.vue | 2 +-
.../pages/personalpage/personalpage.vue | 12 +--
vite.config.js | 18 ++++
126 files changed, 1223 insertions(+), 1080 deletions(-)
create mode 100644 common/uview-init.js
create mode 100644 vite.config.js
diff --git a/App.vue b/App.vue
index 10b2a2a..1f05b95 100644
--- a/App.vue
+++ b/App.vue
@@ -7,6 +7,14 @@
onLaunch(async () => {
console.log('App Launch')
await uniIdPageInit()
+ // 预加载设备信息,供 main.js 请求拦截器写入 X-Device-Id
+ uni.getSystemInfo({
+ success: (res) => {
+ const app = getApp()
+ app.globalData = app.globalData || {}
+ app.globalData.deviceId = res.deviceId
+ }
+ })
})
onShow(() => {
console.log('App Show')
diff --git a/common/uview-init.js b/common/uview-init.js
new file mode 100644
index 0000000..094e66f
--- /dev/null
+++ b/common/uview-init.js
@@ -0,0 +1,12 @@
+// uView 全局配置兜底初始化
+// 说明:uni-app 打包 app 平台时,页面组件模块可能先于 uview-ui 入口执行,
+// 导致组件 props.js 中 `uni.$u.props.xxx` 读取 undefined 而崩溃。
+// 本模块在所有引用 uni.$u.props 的组件 props.js 中被前置 import,确保配置先就绪。
+import uViewProps from '@/uni_modules/uview-ui/libs/config/props.js'
+
+if (typeof uni !== 'undefined' && uni) {
+ if (!uni.$u) {
+ uni.$u = {}
+ }
+ uni.$u.props = uViewProps
+}
diff --git a/main.js b/main.js
index c51ac4f..daa4e7a 100644
--- a/main.js
+++ b/main.js
@@ -1,3 +1,5 @@
+// 优先初始化 uView 全局配置(uni.$u),避免页面组件先于其加载
+import '@/uni_modules/uview-ui'
import App from './App'
// ================== Vue2 逻辑 ================== //
@@ -24,6 +26,14 @@ import uView from '@/uni_modules/uview-ui'
export function createApp() {
const app = createSSRApp(App)
app.use(uView)
+
+ // Vue3 已移除 $delete,补齐以兼容依赖该 API 的旧组件(如 z-paging 自动高度逻辑)
+ app.config.globalProperties.$delete = function $delete(target, key) {
+ if (target && typeof target === 'object') {
+ delete target[key]
+ }
+ }
+
return { app }
}
// #endif
@@ -88,13 +98,3 @@ function handleTokenExpired() {
}
})
}
-
-// 在应用启动时预加载设备信息
-export function initDeviceInfo() {
- uni.getSystemInfo({
- success: (res) => {
- getApp().globalData = getApp().globalData || {}
- getApp().globalData.deviceId = res.deviceId
- }
- })
-}
diff --git a/package.json b/package.json
index 37e58d8..a5d2d17 100644
--- a/package.json
+++ b/package.json
@@ -1,31 +1,6 @@
{
- "id": "image-grid",
- "name": "图片列表 宫格 带懒加载功能(下滑加载更多)",
- "displayName": "图片列表 宫格 带懒加载功能(下滑加载更多)",
- "version": "0.9",
- "description": "1、组件核心功能是浏览图片+文字混合排版的列表; 2、列表的每个单元是一张图片和描述图片的文字上下结构的排版; 3、列表的每一行由两个单元组成,横向排列; 4、列表可以上下滑动,支持懒加载",
- "keywords": [
- "图片列表",
- "宫格",
- "懒加载",
- "下滑加载更多"
- ],
- "dcloudext": {
- "type": "component-vue",
- "sale": {
- "regular": {
- "price": "0.00"
- },
- "sourcecode": {
- "price": "0.00"
- }
- }
- },
- "dependencies": {
- "@dcloudio/uni-app": "^2.0.2-5010520260709001",
- "yarn": "^1.22.22"
- },
- "devDependencies": {
- "@dcloudio/vue-cli-plugin-uni": "^2.0.2-5010520260709001"
- }
+ "name": "junge-liaoliang",
+ "version": "1.0.0",
+ "private": true,
+ "description": "军歌嘹亮 uni-app (Vue3) 客户端,HBuilderX 工程,应用配置见 manifest.json"
}
diff --git a/pages/articleContentDetail/articleContentDetail.vue b/pages/articleContentDetail/articleContentDetail.vue
index 4a381d5..27234fb 100644
--- a/pages/articleContentDetail/articleContentDetail.vue
+++ b/pages/articleContentDetail/articleContentDetail.vue
@@ -169,7 +169,8 @@