uview-plus 3.5.32 → 3.5.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/changelog.md CHANGED
@@ -1,3 +1,29 @@
1
+ ## 3.5.41(2025-09-08)
2
+ fix: 修复cascader方法引用位置
3
+
4
+ ## 3.5.40(2025-09-08)
5
+ feat: goods-sku组件支持多语言
6
+
7
+ ## 3.5.39(2025-09-07)
8
+ fix: 修复cascader多语言问题
9
+
10
+ ## 3.5.38(2025-09-07)
11
+ improvment: 完善演示图标
12
+
13
+ ## 3.5.37(2025-09-05)
14
+ feat: cascader支持多语言
15
+
16
+ ## 3.5.36(2025-09-04)
17
+ improvment: 补充图标
18
+
19
+ ## 3.5.35(2025-09-04)
20
+ feat: cascader级联组件增加垂直头部与单列选项支持
21
+
22
+ ## 3.5.34(2025-09-03)
23
+ improvement: 优化steps-item
24
+
25
+ ## 3.5.33(2025-09-02)
26
+ 升级uni-app至最新版
1
27
  ## 3.5.32(2025-09-01)
2
28
  feat: cate-tab支持非联动跟随的单一切换模式
3
29
 
@@ -3,36 +3,48 @@
3
3
  :mask="true" :closeable="true" :safe-area-inset-bottom="true"
4
4
  close-icon-color="#ffffff" :z-index="uZIndex"
5
5
  :maskCloseAble="maskCloseAble" @close="close">
6
- <up-tabs v-if="popupShow" :list="genTabsList"
7
- :scrollable="true" v-model:current="tabsIndex" @change="tabsChange" ref="tabs"></up-tabs>
6
+ <view class="up-p-t-30 up-p-l-20 up-m-b-10" v-if="headerDirection =='column'">
7
+ <up-steps v-if="popupShow" dot direction="column" v-model:current="tabsIndex">
8
+ <up-steps-item v-for="(item, index) in genTabsList"
9
+ @click="tabsIndex = index" :title="item.name"></up-steps-item>
10
+ </up-steps>
11
+ </view>
12
+ <view class="up-p-t-20 up-m-b-10" v-else>
13
+ <up-tabs v-if="popupShow" :list="genTabsList"
14
+ :scrollable="true" v-model:current="tabsIndex" @change="tabsChange" ref="tabs"></up-tabs>
15
+ </view>
8
16
  <view class="area-box">
9
- <view class="u-flex" :class="{ 'change':isChange }">
10
- <view class="area-item" v-for="(levelData, levelIndex) in levelList" :key="levelIndex">
11
- <view class="u-padding-10 u-bg-gray" style="height: 100%;">
12
- <scroll-view :scroll-y="true" style="height: 100%">
13
- <up-cell-group v-if="levelIndex === 0 || selectedValueIndexs[levelIndex - 1] !== undefined">
14
- <up-cell v-for="(item,index) in levelData"
15
- :title="item[labelKey]" :arrow="false"
16
- :index="index" :key="index"
17
- @click="levelChange(levelIndex, index)">
18
- <template v-slot:right-icon>
19
- <up-icon v-if="selectedValueIndexs[levelIndex] === index"
20
- size="17" name="checkbox-mark"></up-icon>
21
- </template>
22
- </up-cell>
23
- </up-cell-group>
24
- </scroll-view>
17
+ <view class="u-flex" :class="{ 'change':isChange }"
18
+ :style="{transform: optionsCols == 2 && isChange ? 'translateX(-33.3333333%)' : ''}">
19
+ <template v-for="(levelData, levelIndex) in levelList" :key="levelIndex">
20
+ <view v-if="optionsCols == 2 || levelIndex == tabsIndex" class="area-item"
21
+ :style="{ width: optionsCols == 2 ? '33.33333%' : '750rpx'}">
22
+ <view class="u-padding-10 u-bg-gray" style="height: 100%;">
23
+ <scroll-view :scroll-y="true" style="height: 100%">
24
+ <up-cell-group v-if="levelIndex === 0 || selectedValueIndexs[levelIndex - 1] !== undefined">
25
+ <up-cell v-for="(item,index) in levelData"
26
+ :title="item[labelKey]" :arrow="false"
27
+ :index="index" :key="index"
28
+ @click="levelChange(levelIndex, index)">
29
+ <template v-slot:right-icon>
30
+ <up-icon v-if="selectedValueIndexs[levelIndex] === index"
31
+ size="17" name="checkbox-mark"></up-icon>
32
+ </template>
33
+ </up-cell>
34
+ </up-cell-group>
35
+ </scroll-view>
36
+ </view>
25
37
  </view>
26
- </view>
38
+ </template>
27
39
  </view>
28
40
  </view>
29
41
  <!-- 添加按钮区域 -->
30
42
  <view class="u-cascader-action up-flex up-flex-between">
31
43
  <view class="u-padding-20 up-flex-fill">
32
- <up-button @click="handleCancel" type="default">取消</up-button>
44
+ <up-button @click="handleCancel" type="default">{{ t("up.common.cancel") }}</up-button>
33
45
  </view>
34
46
  <view class="u-padding-20 up-flex-fill">
35
- <up-button @click="handleConfirm" type="primary">确认</up-button>
47
+ <up-button @click="handleConfirm" type="primary">{{ t("up.common.confirm") }}</up-button>
36
48
  </view>
37
49
  </view>
38
50
  </up-popup>
@@ -50,6 +62,7 @@
50
62
  * @property {String} childrenKey 指定选项的子选项为选项对象中的哪个属性值
51
63
  * @property {Boolean} autoClose 是否在选择最后一级时自动关闭并触发confirm(默认false)
52
64
  */
65
+ import { t } from '../../libs/i18n'
53
66
  export default {
54
67
  name: 'up-cascader',
55
68
  props: {
@@ -101,6 +114,16 @@
101
114
  autoClose: {
102
115
  type: Boolean,
103
116
  default: false
117
+ },
118
+ // 选中项目的展示方向direction垂直方向适合文字长度过长
119
+ headerDirection: {
120
+ type: String,
121
+ default: 'row'
122
+ },
123
+ // 选项区域列数,支持1列和2列,默认为2列
124
+ optionsCols: {
125
+ type: [Number],
126
+ default: 2
104
127
  }
105
128
  },
106
129
  data() {
@@ -171,6 +194,7 @@
171
194
  // 新增confirm事件
172
195
  emits: ['update:modelValue', 'change', 'confirm'],
173
196
  methods: {
197
+ t,
174
198
  init() {
175
199
  // 初始化选中值
176
200
  if (this.modelValue && this.modelValue.length > 0) {
@@ -292,12 +316,12 @@
292
316
  transform: translateX(0);
293
317
 
294
318
  &.change {
295
- transform: translateX(-33.3333333%);
319
+ // transform: translateX(-33.3333333%);
296
320
  }
297
321
  }
298
322
 
299
323
  .area-item {
300
- width: 33.3333333%;
324
+ // width: 750rpx;
301
325
  height: 800rpx;
302
326
  }
303
327
  }
@@ -22,8 +22,8 @@
22
22
  <text class="up-goods-sku__header__info__price__symbol">¥</text>
23
23
  <text class="up-goods-sku__header__info__price__value">{{ price }}</text>
24
24
  </view>
25
- <view class="up-goods-sku__header__info__stock">库存 {{ stock }} 件</view>
26
- <view class="up-goods-sku__header__info__selected">已选: {{ selectedSkuText }}</view>
25
+ <view class="up-goods-sku__header__info__stock">{{ t('up.goodsSku.stock') }} {{ stock }} {{ t('up.goodsSku.amount') }}</view>
26
+ <view class="up-goods-sku__header__info__selected">{{ t('up.goodsSku.choosed') }}: {{ selectedSkuText }}</view>
27
27
  </view>
28
28
  </slot>
29
29
  </view>
@@ -48,7 +48,7 @@
48
48
  </view>
49
49
 
50
50
  <view class="up-goods-sku__content__count">
51
- <view class="up-goods-sku__content__count__title">购买数量</view>
51
+ <view class="up-goods-sku__content__count__title">{{ t('"up.goodsSku.buyAmount"') }}</view>
52
52
  <view class="up-goods-sku__content__count__control">
53
53
  <up-number-box
54
54
  v-model="buyNum"
@@ -76,6 +76,7 @@
76
76
  </template>
77
77
 
78
78
  <script>
79
+ import { t } from '../../libs/i18n'
79
80
  export default {
80
81
  name: 'up-goods-sku',
81
82
  props: {
@@ -181,6 +182,7 @@
181
182
  }
182
183
  },
183
184
  methods: {
185
+ t,
184
186
  // 判断SKU是否被选中
185
187
  isSelected(skuKey, skuValueId) {
186
188
  return this.selectedSku[skuKey] === skuValueId
@@ -39,7 +39,8 @@
39
39
  <view class="u-steps-item__content__title">
40
40
  <slot name="title">
41
41
  </slot>
42
- <up-text v-if="!$slots['title']" :text="title" :type="parentData.current == index ? 'main' : 'content'" lineHeight="20px"
42
+ <up-text v-if="!$slots['title']" :text="title" lineHeight="20px"
43
+ :type="parentData.current == index ? 'main' : 'content'"
43
44
  :size="parentData.current == index ? 14 : 13"></up-text>
44
45
  </view>
45
46
  <view class="u-steps-item__content__desc">
@@ -313,6 +314,12 @@
313
314
  @include flex;
314
315
  flex: 1;
315
316
 
317
+ &__title {
318
+ // #ifdef H5
319
+ cursor: pointer;
320
+ // #endif
321
+ }
322
+
316
323
  &--row {
317
324
  flex-direction: column;
318
325
  align-items: center;
@@ -76,5 +76,10 @@
76
76
  "up.upload.sizeExceed": "Größenbegrenzung überschritten",
77
77
  "up.upload.uploading": "Upload läuft",
78
78
  "up.upload.previewImageFail": "Bildvorschau fehlgeschlagen",
79
- "up.upload.previewVideoFail": "Videovorschau fehlgeschlagen"
79
+ "up.upload.previewVideoFail": "Videovorschau fehlgeschlagen",
80
+ "up.goodsSku.stock": "Lagerbestand",
81
+ "up.goodsSku.price": "Preis",
82
+ "up.goodsSku.amount": "Stück",
83
+ "up.goodsSku.choosed": "Ausgewählt",
84
+ "up.goodsSku.buyAmount": "Anzahl"
80
85
  }
@@ -76,5 +76,10 @@
76
76
  "up.upload.sizeExceed": "Size limit exceeded",
77
77
  "up.upload.uploading": "Uploading",
78
78
  "up.upload.previewImageFail": "Failed to preview image",
79
- "up.upload.previewVideoFail": "Failed to preview video"
79
+ "up.upload.previewVideoFail": "Failed to preview video",
80
+ "up.goodsSku.stock": "Stock",
81
+ "up.goodsSku.price": "Price",
82
+ "up.goodsSku.amount": "Items",
83
+ "up.goodsSku.choosed": "Selected",
84
+ "up.goodsSku.buyAmount": "Quantity"
80
85
  }
@@ -76,5 +76,10 @@
76
76
  "up.upload.sizeExceed": "Excede el límite de tamaño",
77
77
  "up.upload.uploading": "Subiendo",
78
78
  "up.upload.previewImageFail": "Error al previsualizar imagen",
79
- "up.upload.previewVideoFail": "Error al previsualizar vídeo"
79
+ "up.upload.previewVideoFail": "Error al previsualizar vídeo",
80
+ "up.goodsSku.stock": "Inventario",
81
+ "up.goodsSku.price": "Precio",
82
+ "up.goodsSku.amount": "Piezas",
83
+ "up.goodsSku.choosed": "Seleccionado",
84
+ "up.goodsSku.buyAmount": "Cantidad"
80
85
  }
@@ -76,5 +76,10 @@
76
76
  "up.upload.sizeExceed": "Dépassement de la limite de taille",
77
77
  "up.upload.uploading": "Téléchargement en cours",
78
78
  "up.upload.previewImageFail": "Échec de l'aperçu de l'image",
79
- "up.upload.previewVideoFail": "Échec de l'aperçu de la vidéo"
79
+ "up.upload.previewVideoFail": "Échec de l'aperçu de la vidéo",
80
+ "up.goodsSku.stock": "Stock",
81
+ "up.goodsSku.price": "Prix",
82
+ "up.goodsSku.amount": "Pièces",
83
+ "up.goodsSku.choosed": "Sélectionné",
84
+ "up.goodsSku.buyAmount": "Quantité"
80
85
  }
@@ -76,5 +76,10 @@
76
76
  "up.upload.sizeExceed": "サイズ制限を超えています",
77
77
  "up.upload.uploading": "アップロード中",
78
78
  "up.upload.previewImageFail": "画像プレビュー失敗",
79
- "up.upload.previewVideoFail": "ビデオプレビュー失敗"
79
+ "up.upload.previewVideoFail": "ビデオプレビュー失敗",
80
+ "up.goodsSku.stock": "在庫",
81
+ "up.goodsSku.price": "価格",
82
+ "up.goodsSku.amount": "個",
83
+ "up.goodsSku.choosed": "選択済み",
84
+ "up.goodsSku.buyAmount": "購入数量"
80
85
  }
@@ -76,5 +76,10 @@
76
76
  "up.upload.sizeExceed": "용량 제한 초과",
77
77
  "up.upload.uploading": "업로드 중",
78
78
  "up.upload.previewImageFail": "이미지 미리보기 실패",
79
- "up.upload.previewVideoFail": "비디오 미리보기 실패"
79
+ "up.upload.previewVideoFail": "비디오 미리보기 실패",
80
+ "up.goodsSku.stock": "재고",
81
+ "up.goodsSku.price": "가격",
82
+ "up.goodsSku.amount": "개",
83
+ "up.goodsSku.choosed": "선택됨",
84
+ "up.goodsSku.buyAmount": "구매 수량"
80
85
  }
@@ -76,5 +76,10 @@
76
76
  "up.upload.sizeExceed": "Превышен лимит размера",
77
77
  "up.upload.uploading": "Загрузка",
78
78
  "up.upload.previewImageFail": "Ошибка предпросмотра изображения",
79
- "up.upload.previewVideoFail": "Ошибка предпросмотра видео"
79
+ "up.upload.previewVideoFail": "Ошибка предпросмотра видео",
80
+ "up.goodsSku.stock": "Запас",
81
+ "up.goodsSku.price": "Цена",
82
+ "up.goodsSku.amount": "Штук",
83
+ "up.goodsSku.choosed": "Выбрано",
84
+ "up.goodsSku.buyAmount": "Количество"
80
85
  }
@@ -76,5 +76,10 @@
76
76
  "up.upload.sizeExceed": "เกินขนาดที่กำหนด",
77
77
  "up.upload.uploading": "กำลังอัปโหลด",
78
78
  "up.upload.previewImageFail": "ดูตัวอย่างภาพไม่สำเร็จ",
79
- "up.upload.previewVideoFail": "ดูตัวอย่างวิดีโอไม่สำเร็จ"
79
+ "up.upload.previewVideoFail": "ดูตัวอย่างวิดีโอไม่สำเร็จ",
80
+ "up.goodsSku.stock": "สินค้าคงคลัง",
81
+ "up.goodsSku.price": "ราคา",
82
+ "up.goodsSku.amount": "ชิ้น",
83
+ "up.goodsSku.choosed": "เลือกแล้ว",
84
+ "up.goodsSku.buyAmount": "จำนวน"
80
85
  }
@@ -76,5 +76,10 @@
76
76
  "up.upload.sizeExceed": "超过大小限制",
77
77
  "up.upload.uploading": "上传中",
78
78
  "up.upload.previewImageFail": "预览图片失败",
79
- "up.upload.previewVideoFail": "预览视频失败"
79
+ "up.upload.previewVideoFail": "预览视频失败",
80
+ "up.goodsSku.stock": "库存",
81
+ "up.goodsSku.price": "价格",
82
+ "up.goodsSku.amount": "件",
83
+ "up.goodsSku.choosed": "已选",
84
+ "up.goodsSku.buyAmount": "购买数量"
80
85
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "up.common.cancel": "取消",
3
- "up.common.confirm": "确定",
3
+ "up.common.confirm": "確定",
4
4
  "up.common.start": "開始",
5
5
  "up.common.end": "結束",
6
6
  "up.common.stop": "停止",
@@ -76,5 +76,10 @@
76
76
  "up.upload.sizeExceed": "超過大小限制",
77
77
  "up.upload.uploading": "上傳中",
78
78
  "up.upload.previewImageFail": "預覽圖片失敗",
79
- "up.upload.previewVideoFail": "預覽視頻失敗"
79
+ "up.upload.previewVideoFail": "預覽視頻失敗",
80
+ "up.goodsSku.stock": "庫存",
81
+ "up.goodsSku.price": "價格",
82
+ "up.goodsSku.amount": "件",
83
+ "up.goodsSku.choosed": "已選",
84
+ "up.goodsSku.buyAmount": "購買數量"
80
85
  }
package/package.json CHANGED
@@ -2,8 +2,8 @@
2
2
  "id": "uview-plus",
3
3
  "name": "uview-plus",
4
4
  "displayName": "零云®uview-plus3.0重磅发布,全面的Vue3鸿蒙跨端移动组件库,组件丰富维护更新稳定。",
5
- "version": "3.5.32",
6
- "description": "零云®uview-plus已兼容vue3支持多语言,100+全面的组件和便捷的工具会让您信手拈来。近期新增拖动排序、条码、图片裁剪、下拉刷新、虚拟列表、签名、Markdown等。",
5
+ "version": "3.5.41",
6
+ "description": "零云®uview-plus已兼容vue3支持多语言,120+全面的组件和便捷的工具会让您信手拈来。近期新增拖动排序、条码、图片裁剪、下拉刷新、虚拟列表、签名、Markdown等。",
7
7
  "keywords": [
8
8
  "uview",
9
9
  "uview-plus",
@@ -49,7 +49,7 @@
49
49
  "cloud": {
50
50
  "tcb": "√",
51
51
  "aliyun": "√",
52
- "alipay": "x"
52
+ "alipay": ""
53
53
  },
54
54
  "client": {
55
55
  "uni-app": {