fix: Vue2 到 Vue3 迁移兼容修复

- 修复 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)
This commit is contained in:
2026-09-06 19:36:36 +08:00
parent a68bf43112
commit 99c139d6ce
126 changed files with 1223 additions and 1080 deletions
@@ -66,7 +66,8 @@
</template>
<script>
import { ref, computed, onReady, watch } from 'vue'
import { ref, computed, watch } from 'vue'
import { onReady } from '@dcloudio/uni-app'
import statusBar from "@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar"
import translatePublishTime from "@/uni_modules/uni-cms-article/common/publish-time"
import refreshBox from "@/uni_modules/uni-cms-article/components/refresh-box/refreshBox.nvue"
@@ -277,11 +278,11 @@
padding: 0 10px;
}
.uni-search-box ::v-deep .uni-searchbar {
.uni-search-box :deep(.uni-searchbar) {
padding: 0;
}
.uni-search-box ::v-deep .uni-searchbar__box {
.uni-search-box :deep(.uni-searchbar__box) {
height: 32px;
flex-direction: row;
}
@@ -297,20 +298,20 @@
/* #endif */
}
.pages .uni-list ::v-deep .uni-list-item__container {
.pages .uni-list :deep(.uni-list-item__container) {
flex-direction: row;
width: 100%;
}
.pages .uni-list ::v-deep .uni-list-item {
.pages .uni-list :deep(.uni-list-item) {
align-items: flex-start;
}
.pages .uni-list ::v-deep .uni-load-more {
.pages .uni-list :deep(.uni-load-more) {
display: flex;
}
.pages .uni-list ::v-deep .uni-list--border:after {
.pages .uni-list :deep(.uni-list--border:after) {
background-color: #f5f5f5;
}
+8 -7
View File
@@ -66,7 +66,8 @@
</template>
<script>
import { ref, computed, onReady, watch } from 'vue'
import { ref, computed, watch } from 'vue'
import { onReady } from '@dcloudio/uni-app'
import statusBar from "@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar"
import translatePublishTime from "@/uni_modules/uni-cms-article/common/publish-time"
import refreshBox from "@/uni_modules/uni-cms-article/components/refresh-box/refreshBox.nvue"
@@ -275,11 +276,11 @@
padding: 0 10px;
}
.uni-search-box ::v-deep .uni-searchbar {
.uni-search-box :deep(.uni-searchbar) {
padding: 0;
}
.uni-search-box ::v-deep .uni-searchbar__box {
.uni-search-box :deep(.uni-searchbar__box) {
height: 32px;
flex-direction: row;
}
@@ -295,20 +296,20 @@
/* #endif */
}
.pages .uni-list ::v-deep .uni-list-item__container {
.pages .uni-list :deep(.uni-list-item__container) {
flex-direction: row;
width: 100%;
}
.pages .uni-list ::v-deep .uni-list-item {
.pages .uni-list :deep(.uni-list-item) {
align-items: flex-start;
}
.pages .uni-list ::v-deep .uni-load-more {
.pages .uni-list :deep(.uni-load-more) {
display: flex;
}
.pages .uni-list ::v-deep .uni-list--border:after {
.pages .uni-list :deep(.uni-list--border:after) {
background-color: #f5f5f5;
}
+3 -2
View File
@@ -104,7 +104,8 @@
</template>
<script>
import { ref, computed, onMounted, onPullDownRefresh } from 'vue'
import { ref, computed, onMounted } from 'vue'
import { onPullDownRefresh } from '@dcloudio/uni-app'
import { store } from '@/pages3/uni_modules/uni-id-pages/common/store.js'
import uSubsection from "../../uni_modules/uview-ui/components/u-subsection/u-subsection.vue"
import uModal from "../../uni_modules/uview-ui/components/u-modal/u-modal.vue"
@@ -222,7 +223,7 @@
@import '../../uni_modules/uview-ui/theme.scss';
@import '../../uni_modules/uview-ui/index.scss';
::v-deep .u-modal__content {
:deep(.u-modal__content) {
justify-content: flex-start;
}
+2 -3
View File
@@ -185,13 +185,12 @@
</button>
</view>
</view>
</view>
</view>
</template>
<script>
import { ref, reactive, onShow, onReady, onHide, onUnload } from 'vue'
import { ref, reactive } from 'vue'
import { onShow, onReady, onHide, onUnload } from '@dcloudio/uni-app'
import cloudImage from "@/components/cloud-image.vue"
const uniCloudStorageExtCo = uniCloud.importObject("ext-storage-co")
+2 -1
View File
@@ -88,7 +88,8 @@
</template>
<script>
import { ref, reactive, onMounted, onHide, onUnload } from 'vue'
import { ref, reactive, onMounted } from 'vue'
import { onHide, onUnload } from '@dcloudio/uni-app'
import uPicker from "@/uni_modules/uview-ui/components/u-picker/u-picker.vue"
import uInput from "@/uni_modules/uview-ui/components/u-input/u-input.vue"
import cloudImage from "@/components/cloud-image.vue"
+6 -7
View File
@@ -133,18 +133,16 @@
style="border-top: 3rpx solid #ccc;padding-top: 20rpx;margin-top: 20rpx;
text-align: center;;">
{{ isExpired ? '已截止' : '点击登录后投票' }}
</view>
</view>
</uni-card>
</view>
</view>
</uni-card>
</view>
</view>
</view>
</view>
</view>
</view>
<u-tabbar
:value="tabbarValue"
<u-tabbar :value="tabbarValue"
>
<u-tabbar-item
v-for="(item, index) in tabbarText"
@@ -194,7 +192,8 @@
</template>
<script>
import { ref, computed, onShow } from 'vue'
import { ref, computed } from 'vue'
import { onShow } from '@dcloudio/uni-app'
import { store } from '@/pages3/uni_modules/uni-id-pages/common/store.js'
import uRadioGroup from "@/uni_modules/uview-ui/components/u-radio-group/u-radio-group.vue"
import uRadio from "@/uni_modules/uview-ui/components/u-radio/u-radio.vue"
+2 -1
View File
@@ -68,7 +68,8 @@
</template>
<script>
import { ref, reactive, onLoad } from 'vue'
import { ref, reactive } from 'vue'
import { onLoad } from '@dcloudio/uni-app'
export default {
setup() {
+8 -7
View File
@@ -70,7 +70,8 @@
</template>
<script>
import { ref, computed, onReady } from 'vue'
import { ref, computed } from 'vue'
import { onReady } from '@dcloudio/uni-app'
import statusBar from "@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar"
import refreshBox from "@/uni_modules/uni-cms-article/components/refresh-box/refreshBox.nvue"
import cloudImage from "../../components/cloud-image.vue"
@@ -287,11 +288,11 @@
padding: 0 10px;
}
.uni-search-box ::v-deep .uni-searchbar {
.uni-search-box :deep(.uni-searchbar) {
padding: 0;
}
.uni-search-box ::v-deep .uni-searchbar__box {
.uni-search-box :deep(.uni-searchbar__box) {
height: 32px;
flex-direction: row;
}
@@ -307,20 +308,20 @@
/* #endif */
}
.pages .uni-list ::v-deep .uni-list-item__container {
.pages .uni-list :deep(.uni-list-item__container) {
flex-direction: row;
width: 100%;
}
.pages .uni-list ::v-deep .uni-list-item {
.pages .uni-list :deep(.uni-list-item) {
align-items: flex-start;
}
.pages .uni-list ::v-deep .uni-load-more {
.pages .uni-list :deep(.uni-load-more) {
display: flex;
}
.pages .uni-list ::v-deep .uni-list--border:after {
.pages .uni-list :deep(.uni-list--border:after) {
background-color: #f5f5f5;
}
+8 -7
View File
@@ -69,7 +69,8 @@
</template>
<script>
import { ref, computed, onReady, watch } from 'vue'
import { ref, computed, watch } from 'vue'
import { onReady } from '@dcloudio/uni-app'
import statusBar from "@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar"
import translatePublishTime from "@/uni_modules/uni-cms-article/common/publish-time"
import refreshBox from "@/uni_modules/uni-cms-article/components/refresh-box/refreshBox.nvue"
@@ -277,11 +278,11 @@
padding: 0 10px;
}
.uni-search-box ::v-deep .uni-searchbar {
.uni-search-box :deep(.uni-searchbar) {
padding: 0;
}
.uni-search-box ::v-deep .uni-searchbar__box {
.uni-search-box :deep(.uni-searchbar__box) {
height: 32px;
flex-direction: row;
}
@@ -297,20 +298,20 @@
/* #endif */
}
.pages .uni-list ::v-deep .uni-list-item__container {
.pages .uni-list :deep(.uni-list-item__container) {
flex-direction: row;
width: 100%;
}
.pages .uni-list ::v-deep .uni-list-item {
.pages .uni-list :deep(.uni-list-item) {
align-items: flex-start;
}
.pages .uni-list ::v-deep .uni-load-more {
.pages .uni-list :deep(.uni-load-more) {
display: flex;
}
.pages .uni-list ::v-deep .uni-list--border:after {
.pages .uni-list :deep(.uni-list--border:after) {
background-color: #f5f5f5;
}
+8 -7
View File
@@ -89,7 +89,8 @@
</template>
<script>
import { ref, computed, reactive, onReady, watch } from 'vue'
import { ref, computed, reactive, watch } from 'vue'
import { onReady } from '@dcloudio/uni-app'
import statusBar from "@/uni_modules/uni-nav-bar/components/uni-nav-bar/uni-status-bar"
import translatePublishTime from "@/uni_modules/uni-cms-article/common/publish-time"
import refreshBox from "@/uni_modules/uni-cms-article/components/refresh-box/refreshBox.nvue"
@@ -478,11 +479,11 @@
padding: 0 10px;
}
.uni-search-box ::v-deep .uni-searchbar {
.uni-search-box :deep(.uni-searchbar) {
padding: 0;
}
.uni-search-box ::v-deep .uni-searchbar__box {
.uni-search-box :deep(.uni-searchbar__box) {
height: 32px;
flex-direction: row;
}
@@ -498,20 +499,20 @@
/* #endif */
}
.pages .uni-list ::v-deep .uni-list-item__container {
.pages .uni-list :deep(.uni-list-item__container) {
flex-direction: row;
width: 100%;
}
.pages .uni-list ::v-deep .uni-list-item {
.pages .uni-list :deep(.uni-list-item) {
align-items: flex-start;
}
.pages .uni-list ::v-deep .uni-load-more {
.pages .uni-list :deep(.uni-load-more) {
display: flex;
}
.pages .uni-list ::v-deep .uni-list--border:after {
.pages .uni-list :deep(.uni-list--border:after) {
background-color: #f5f5f5;
}
+1 -1
View File
@@ -84,7 +84,7 @@
padding-top: 10px;
}
.box /deep/ .uni-easyinput__content {
.box :deep(.uni-easyinput__content) {
height: 50px;
}
+3 -2
View File
@@ -53,7 +53,8 @@
</template>
<script>
import { ref, onMounted, onPullDownRefresh } from 'vue'
import { ref, onMounted } from 'vue'
import { onPullDownRefresh } from '@dcloudio/uni-app'
import { store } from '@/pages3/uni_modules/uni-id-pages/common/store.js'
export default {
@@ -209,7 +210,7 @@
</style>
<style lang="scss" scoped>
::v-deep .u-modal__content {
:deep(.u-modal__content) {
justify-content: flex-start;
}