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 @@