chenjj 1 месяц назад
Родитель
Сommit
42537529b0

+ 0 - 691
node_modules/uview-plus/changelog.md

@@ -1,691 +0,0 @@
-## 3.4.13(2025-04-08)
-fix: tabs点击当前tab触发change事件
-
-## 3.4.12(2025-04-02)
-fix: dropdown关闭后遮挡页面内容 #653
-
-fix u-sticky.vue Uncaught TypeError: e.querySelector is not a function at uni-app-view.umd.js
-
-## 3.4.11(2025-03-31)
-fix: 优化upload组件预览视频的弹窗占位
-
-## 3.4.10(2025-03-28)
-feat: select组件新增多个props属性及优化
-
-fix: 修复cate-tab报错index is not defined #661
-
-
-## 3.4.9(2025-03-27)
-fix: 修复upload组件split报错
-
-fix: 修复float-button缺少flex样式
-
-## 3.4.8(2025-03-27)
-fix: 修复upload组件split报错
-
-fix: 移除mapState
-
-## 3.4.7(2025-03-26)
-fix: 修复action-sheet-data和picker-data数据回显
-
-fix:  优化upload组件视频封面兼容
-
-## 3.4.6(2025-03-25)
-feat: checkbox触发change时携带name参数
-
-feat: upload组件支持服务器本机和阿里云OSS自动上传功能及上传进度条
-
-feat: upload组件支持视频预览及oss上传时获取视频封面图
-
-feat: 新增up-action-sheet-data快捷组件
-
-feat: 新增up-picker-data快捷组件
-
-## 3.4.5(2025-03-24)
-feat: tag组件新增textSize/height/padding/borderRadius属性
-
-feat: 新增genLightColor自动计算浅色方法及tag组件支持autoBgColor自动计算背景色
-
-## 3.4.4(2025-03-13)
-feat: modal增加异步操作进行中点击取消弹出提示特性防止操作被中断
-
-fix: 修复toast组件show方法类型声明
-
-## 3.4.3(2025-03-12)
-fix: 修复textarea自动增高时在输入时高度异常
-
-## 3.4.2(2025-03-11)
-feat: step组件增加title插槽及增加辅助class便于自定义样式
-
-## 3.4.1(2025-03-11)
-feat: 新机制确保setConfig与http在nvue等环境下生效
-
-## 3.3.74(2025-03-06)
-fix: CateTab语法问题
-
-## 3.3.73(2025-03-06)
-feat: CateTab新增v-model:current属性
-
-## 3.3.72(2025-02-28)
-feat: tabs组件支持icon图标及插槽
-
-## 3.3.71(2025-02-27)
-feat: 折叠面板collapse增加titileStyle/iconStyle/rightIconStyle属性
-
-feat: 折叠面板组件新增cellCustomStyle/cellCustomClass属性
-
-fix: select组件盒模型
-
-## 3.3.70(2025-02-24)
-fix: 修改u-checkbox-group组件changes事件发生位置
-
-## 3.3.69(2025-02-19)
-picker允许传递禁用颜色props
-
-slider组件isRange状态下增加min max插槽分开显示内容
-
-feat: 新增经典下拉框组件up-select
-
-## 3.3.68(2025-02-12)
-fix: 修复weekText类型
-
-feat: 日历增加单选与多选指定禁止选中的日期功能
-
-fix: NumberBox删除数字时取值有误 #613
-
-## 3.3.67(2025-02-11)
-feat: navbar支持返回全局拦截器配置
-
-feat: 表单-校验-支持无提示-得到校验结果
-
-feat: picker传递hasInput属性时候,可以禁用输入框点击
-
-## 3.3.66(2025-02-09)
-feat: steps-item增加content插槽
-
-## 3.3.65(2025-02-05)
-feat: number-box组件新增按钮圆角/按钮宽度/数据框背景色/迷你模式
-## 3.3.64(2025-01-18)
-feat: 日历组件支持自定义星期文案
-
-## 3.3.63(2025-01-13)
-fix: cate-tab支持支付宝小程序
-
-fix: textarea 修复 placeholder-style
-
-fix: 修复在图片加载及加载失败时容器宽度
-
-fix: waterfall组件报错Maximum recursive updates
-
-## 3.3.62(2025-01-10)
-feat: sleder滑动选择器双滑块增加外层触发值的变动功能
-
-fix: picker支持hasInput优化
-
-## 3.3.61(2024-12-31)
-fix: 修复微信getSystemInfoSync接口废弃警告
-
-fix: 'u-status-bar' symbol missing
-
-## 3.3.60(2024-12-30)
-feat: 日期组件支持禁用
-
-fix: ts定义修复 #600
-
-feat: Tabs组件选中时增加一个active的class #595
-
-## 3.3.59(2024-12-30)
-fix: Property "isH5" was accessed during render
-
-## 3.3.58(2024-12-26)
-fix: slider组件change事件传参
-
-## 3.3.57(2024-12-23)
-fix: slider组件change事件传参
-
-feat: 更新u-picker组件增加当前选中class类名
-
-## 3.3.56(2024-12-18)
-feat: 在u-alert组件中添加关闭事件
-
-## 3.3.55(2024-12-17)
-add: swiper增加双向绑定
-
-## 3.3.54(2024-12-11)
-add: qrcode支持props控制是否开启点击预览
-
-add: 新增cate-tab垂直分类组件
-
-## 3.3.53(2024-12-10)
-fix: 修复popup居中模式点击内容区域触发关闭
-
-## 3.3.52(2024-12-09)
-add: notice-bar支持justifyContent属性
-
-## 3.3.51(2024-12-09)
-add: radio增加label插槽
-
-## 3.3.50(2024-12-05)
-fix: 优化popup等对禁止背景滚动机制
-
-add: slider在弹窗使用示例
-
-fix: card组件类名问题
-
-## 3.3.49(2024-12-02)
-fix: 去除album多余的$u引用
-
-fix: 优化图片组件兼容性
-
-add: picker组件增加zIndex属性
-
-add: text增加是否占满剩余空间属性
-
-add: input颜色示例
-
-## 3.3.48(2024-11-29)
-add: 文本行数限制样式提高到10行
-
-del: 去除不跨端的inputmode
-## 3.3.47(2024-11-28)
-fix: 时间选择器在hasInput模式下部分机型键盘弹出
-
-## 3.3.46(2024-11-26)
-fix: 修复text传递事件参数
-
-## 3.3.45(2024-11-24)
-add: navbar组件支持配置标题颜色
-
-fix: 边框按钮警告类型下颜色变量使用错误
-
-## 3.3.43(2024-11-18)
-fix: 支持瀑布流组件v-model置为[]
-
-add: 新增字符串路径访问工具方法getValueByPath
-
-add: 新增float-button悬浮按钮组件
-
-## 3.3.42(2024-11-15)
-add: button组件支持stop参数阻止冒泡
-
-## 3.3.41(2024-11-13)
-fix: u-radio-group invalid import
-
-improvement: 优化图片组件宽高及修复事件event传递
-
-## 3.3.40(2024-11-11)
-add: 组件radioGroup增加gap属性用于设置item间隔 
-
-fix: 修复H5全局导入
-
-## 3.3.39(2024-11-04)
-fix: 修复相册组件
-
-## 3.3.38(2024-11-04)
-fix: 修复视频预览报错 #510
-
-add: album组件增加stop参数支持阻止事件冒泡
-
-## 3.3.37(2024-10-21)
-fix: 修复因为修改组件名称前缀,导致h5打包后$parent方法内找不到父组件的问题
-
-fix: 修复datetime-picker选择2000年以前日期出错
-
-## 3.3.36(2024-10-09)
-fix: toast 自动关闭
-
-feat: 增加微信小程序用户昵称审核完毕回调及修改 ts 定义文件
-
-## 3.3.35(2024-10-08)
-feat: modal和picker支持v-model:show双向绑定
-
-feat: 支持checkbox使用slot自定义label后自带点击事件 #522
-
-feat: swipe-action支持自动关闭特性及初始化打开状态
-
-## 3.3.34(2024-09-23)
-feat: 支持toast设置duration值为-1时不自动关闭
-
-## 3.3.33(2024-09-18)
-fix: 修复test.date('008')等验证结果不准确
-
-## 3.3.32(2024-09-09)
-fix: u-keyboard名称冲突warning
-
-## 3.3.31(2024-08-31)
-feat: qrcode初步支持nvue
-
-## 3.3.30(2024-08-30)
-fix: slider兼容step为字符串类型
-
-## 3.3.29(2024-08-30)
-fix: 修复tabs组件current参数为字符串处理逻辑
-
-## 3.3.28(2024-08-26)
-fix: list组件滑动偏移量不一样取绝对值导致iOS下拉偏移量计算错误
-
-## 3.3.27(2024-08-22)
-fix: 修复up-datetime-picker组件toolbarRightSlot定义缺失
-
-fix: 修复FormItem的rules更新错误的问题
-
-## 3.3.26(2024-08-22)
-fix: 批量注册全局组件优化
-
-## 3.3.25(2024-08-21)
-fix: 修复slider在app-vue下样式问题
-
-## 3.3.24(2024-08-19)
-fix: 修复时间选择器hasInput模式小程序不生效
-
-feat: 支持H5导入所有组件
-
-## 3.3.23(2024-08-17)
-feat: swipe-action增加closeAll方法
-
-fix: 兼容tabs在某些场景下index小于0时自动设置为0
-
-add: 通用mixin新增navTo页面跳转方法
-
-## 3.3.21(2024-08-15)
-improvement: 优化二维码组件loading及支持预览与长按事件 #351
-
-fix: 修复swipe-action自动关闭其它功能及组件卸载自动关闭
-
-## 3.3.20(2024-08-15)
-refactor: props默认值文件移至组件文件夹内便于查找
-## 3.3.19(2024-08-14)
-fix: 修复2被rpx兼容处理只在数字值生效
-
-add: 增加swiper自定义插槽示例
-
-## 3.3.18(2024-08-13)
-feat: 新增支持datetime-picker工具栏插槽及picker插槽支持修复
-## 3.3.17(2024-08-12)
-feat: swiper组件增加默认slot便于自定义
-
-feat: grid新增间隔参数
-
-feat: picker新增toolbar-right和toolbar-bottom插槽
-
-## 3.3.16(2024-08-12)
-fix: 解决swiper中title换行后多余的内容未被遮挡问题
-
-fix: 修复迷你导航适配异形屏
-
-## 3.3.15(2024-08-09)
-fix: 修复默认单位设置为rpx时一些组件高度间距异常
-
-fix: 修复日历在rpx单位下布局异常
-
-feat: code-input支持App端展示输入光标
-
-## 3.3.14(2024-08-09)
-add: 增加box组件
-
-add: 增加card卡片组件
-
-
-## 3.3.13(2024-08-08)
-feat: input支持调用原生组件的focus和blur方法
-
-improvement: grid-item条件编译优化
-
-add: 新增迷你导航组件
-
-## 3.3.12(2024-08-06)
-improvement: $u挂载时机调整便于打包分离chunk
-
-fix: steps新增itemStyle属性名称冲突
-
-## 3.3.11(2024-08-05)
-feat: 新增支持upload组件的deletable/maxCount/accept变更监听 #333
-
-feat: 新增支持tabs在swiper中使用
-
-feat: 新增FormItem支持独立设置验证规则rules
-
-fix: 修复index-list未设置$slots.header时索引高亮失效
-
-## 3.3.10(2024-08-02)
-fix: 修复index-list偶发的滑动最后一个索引报错top不存在
-
-fix: 修复gird在QQ、抖音小程序下布局
-
-feat: 优化step支持自定义样式prop
-
-feat: action-sheet组件支持v-model:show双向绑定
-
-fix: 小程序下steps和grid都统一采用grid布局
-
-fix: 修复支付宝小程序下input类型为数字时双向绑定失效
-
-feat : form 表单 validate 校验不通过后 error增加字段prop信息  #304
-
-fix: form组件异步校异常验问题 #393
-
-## 3.3.9(2024-08-01)
-fix: 优化获取nvue元素
-
-feat: modal新增contentTextAlign设置文案对齐方式
-
-fix: 修复NVUE下tabbar文字不显示  #458
-
-feat: loading-page增加zIndex属性
-
-fix: 相册在宽度较小时换行问题
-
-feat: album相册增加自适应自动换行模式
-
-feat: album相册增加图片尺寸单位prop
-
-fix: 修复calendar日历月份居中
-
-## 3.3.8(2024-07-31)
-feat: slider支持进度条任意位置触发按钮拖动
-
-fix: 修复app-vue下modal标题不居中
-
-fix: #459 TS setConfig 声明异常
-
-feat: tabs组件增加longPress长按事件
-
-feat: 新增showRight属性控制collapse右侧图标显隐
-
-fix: 优化nvue下css警告
-
-## 3.3.7(2024-07-29)
-feat: 支持IndexList组件支持在弹窗等场景下使用及联动优化
-
-feat: popup组件支持v-model:show双向绑定
-
-feat: 优化tabs的current双向绑定
-
-fix: checkbox独立使用时checked赋初始值可以,但是手动切换时值没有做双向绑定! #455
-
-feat: slider组件支持区间双滑块
-
-fix: toast 支持自定义图标?可传入了决对路径的 icon也没有用 #409
-
-feat: form-item校验失败时 增加class方便自定义显示错误的展示方式 #394
-
-fix: up-cell的required配置不生效 #395
-
-fix: 横向滚动组件,微信小程序编译后会有警告 #415
-
-fix: u-picker内部对默认值defaultIndex的监听 #425
-
-feat: toast 组件支持遮掩层穿透  #417
-
-fix: 兼容vue的slot编译bug #423
-
-fix: upload 微信小程序 点击预览视频报错 #424
-
-fix: u-number-box 组件修改【integer, decimalLength, min, max 】props时没有触发绑定值更新 #429
-
-feat: Tabs组件能否支持自定义插槽 #439
-
-feat: ActionSheet 可以配置最大高度吗, 我当做select使用了。 #445
-
-fix: cursor-pointer优化
-
-feat: 新版slider组件兼容NVUE改造
-
-feat: 新增slider组件手动实现以支持样式自定义
-
-perf:补充TS声明提示信息
-
-修复:ActionSheet 操作菜单cancelText属性为空DOM节点还存在并且可以点击问题
-
-fix: 去除预留的beforeDestroy兼容容易在某些sdk下不识别条件编译
-
-## 3.3.6(2024-07-23)
-feat: u-album组件添加radius,shape参数,定义参考当前u-image参数
-
-fix: 修复了calendar组件title和日期title未垂直居中的问题
-
-fix: update:modelValue缺失emit定义
-
-## 3.3.5(2024-07-10)
-picker组件支持hasInput模式
-
-## 3.3.4(2024-07-07)
-fix: input组件双向绑定问题 #419
-
-lazy-load完善emit
-
-优化通用小程序分享
-
-## 3.3.2(2024-06-27)
-fix: 在Nvue环境中编译,出现大量警告 #406
-## 3.3.1(2024-06-27)
-u-button组件报错,找不到button mixins #407
-## 3.3.0(2024-06-27)
-feat: checkbox支持label设置slot
-
-feat: modal增加customClass
-
-feat: navbar、popup、tabs、text支持customClass
-
-fix: cell组建缺少flex布局
-
-fix: 修复微信小程序真机调试时快速输入出现文本回退问题
-
-feat: tag增加默认slot
-
-公共mixin改造为按需导入语法
-
-refactor: 组件props混入mixin改造为按需导入语法
-
-fix: u-tabbar 安卓手机点击按钮变蓝问题 #396
-
-feat: upload组建增加extension属性
-
-fix: upload组件参数mode添加left
-
-fix: 修复阴影在非nvue时白色背景色不显示
-
-## 3.2.24(2024-06-11)
-fix: 修复时间选择器confirm事件触发时机导致2次才会触发v-model更新
-## 3.2.23(2024-05-30)
-fix: #378 H5 u-input 在表单中初始值为空也会触发一次 formValidate(this,"change")事件导致进入页面直接校验了一次
-
-fix: #373 搜索组件up-search的@clear事件无效
-
-fix: #372 ActionSheet 组件的取消按钮触发区域太小
-
-## 3.2.22(2024-05-13)
-上传组件支持微信小程序预览视频
-
-修复折叠面板右侧箭头不显示
-
-修复uxp2px
-
-## 3.2.21(2024-05-10)
-fix: loading-icon修复flex布局
-## 3.2.20(2024-05-10)
-修复瀑布流大小写#355
-## 3.2.19(2024-05-10)
-去除意外的文件引入
-## 3.2.18(2024-05-09)
-fix: 349 popup 组件设置 zIndex 属性后,组件渲染异常#
-feat: 搜索框增加adjustPosition属性
-fix: #331增加u-action-sheet__cancel
-优化mixin兼容性
-feat: #326 up-list增加下拉刷新功能
-fix: #319 优化up-tabs参数与定义匹配
-fix: index-list组件微信小程序端使用自定义导航栏异常
-fix: #285 pickerimmediateChange 写死为true
-fix: #111 u-scroll-list组件,隐藏指示器后报错, 提示找不到ref
-list增加微信小程序防抖配置
-
-## 3.2.17(2024-05-08)
-fix: 支付宝小程序二维码渲染
-## 3.2.16(2024-05-06)
-修复tabs中,当前激活样式的undefined bug
-
-fix: #341u-code 倒计时没结束前退出,再次进入结束后退出界面,再次进入重新开始倒计时bug
-
-受到uni-app内置text样式影响修复
-
-## 3.2.15(2024-04-28)
-优化时间选择器hasInput模式初始化值
-## 3.2.14(2024-04-24)
-去除pleaseSetTranspileDependencies
-
-http采用useStore
-
-## 3.2.13(2024-04-22)
-修复modal标题样式
-
-优化日期选择器hasInput模式宽度
-
-## 3.2.12(2024-04-22)
-修复color应用
-## 3.2.11(2024-04-18)
-修复import化带来的问题
-## 3.2.10(2024-04-17)
-完善input清空事件App端失效的兼容性
-
-修复日历组件二次打开后当前月份显示不正确
-
-## 3.2.9(2024-04-16)
-组件内uni.$u用法改为import引入
-
-规范化及兼容性增强
-
-## 3.2.8(2024-04-15)
-修复up-tag语法错
-## 3.2.7(2024-04-15)
-修复下拉菜单背景色在支付宝小程序无效
-
-setConfig改为浅拷贝解决无法用import导入代替uni.$u.props设置
-
-## 3.2.6(2024-04-14)
-修复某些情况下滑动单元格默认右侧按钮是展开的问题
-## 3.2.5(2024-04-13)
-调整分段器尺寸及修复窗口大小改变时重新计算尺寸
-
-多个组件支持cursor-pointer增强PC端体验
-
-## 3.2.4(2024-04-12)
-初步支持typescript
-## 3.2.3(2024-04-12)
-fix: 修复square属性在小程序下无效问题
-
-fix:修复lastIndex异常导致的column异常问题
-
-fix: alipayapp picker style
-
-feat(button): 添加用户同意隐私协议事件回调
-
-fix: input switch password
-
-fix: 修复u-code组件keepRuning失效问题
-
-feat: form-item添加labelPosition属性
-
-新增dropdown组件
-
-分段器支持内部current值
-
-优化cell和action-sheet视觉大小
-
-修复tabs文字换行
-
-## 3.2.2(2024-04-11)
-修复换行符问题
-## 3.2.1(2024-04-11)
-修复演示H5二维码
-
-fix: #270 ReadMore 展开阅读更多内容变化兼容
-
-fix: #238Calendar组件maxDate修改为不能小于minDate
-
-checkbox支持独立使用
-
-修复popup中在微信小程序中真机调试滚动失效
-
-## 3.2.0(2024-04-10)
-修复轮播图在nvue显示
-修复疑似u-slider名称被占用导致slider在App下不显示
-解决微信小程序提示 Some selectors are not allowed in component wxss
-示例中u-前缀统一为up-
-增加瀑布流与图片懒加载组件
-fix: #308修复tag组件缺失iconColor参数
-fix: #297使用grid布局解决目前编译为抖音小程序无法开启virtualHost
-## 3.1.52(2024-04-07)
-工具类方法调用import化改造
-新增up-copy复制组件
-## 3.1.51(2024-04-07)
-优化时间选择器自带输入框格式化显示
-防止按钮文字换行
-修复订单列表模板滑动
-增加u-qrcode二维码组件
-## 3.1.49(2024-03-27)
-日期时间组件支持自带输入框
-fix: popup弹窗滚动穿透问题
-fix: 修复小程序numberbox bug
-## 3.1.48(2024-03-18)
-fix:[plugin:uni:pre-css] Unbalanced delimiter found in string
-## 3.1.47(2024-03-18)
-fix: setConfig设置组件默认参数无效问题
-fix: 修复自定义图标无效问题
-feat: 增加u-form-item单独设置规则变量
-fix:#293小程序是自定义导航栏的时候即传了customNavHeight的时候会出现跳转偏移的情况
-
-## 3.1.46(2024-01-29)
-beforeUnmount
-## 3.1.45(2024-01-24)
-fix: #262ext组件为超链接的情况下size属性不生效
-fix: #263最新版本3.1.42中微信小程序u-swipe-action-item报错
-fix: #224最新版本3.1.42中微信小程序u-swipe-action-item报错
-fix: #263支持支付宝小程序
-fix: #261u-input在直接修改v-model的绑定值时,每隔一次会无法出发change事件
-优化折叠面板兼容微信小程序
-## 3.1.42(2024-01-15)
-修复u-number-box默认值0时在小程序不显示值
-优化u-code的timer判断
-优化支付宝小程序下textarea字数统计兼容
-优化u-calendar
-## 3.1.41(2023-11-18)
-#215优化u-cell图标容器间距问题
-## 3.1.40(2023-11-16)
-修复u-slider双向绑定
-## 3.1.39(2023-11-10)
-修复头条小程序不支持env(safe-area-inset-bottom)
-优化#201u-grid 指定列数导致闪烁
-#193IndexList 索引列表 高度错误
-其他优化
-## 3.1.38(2023-10-08)
-修复u-slider
-## 3.1.37(2023-09-13)
-完善emits定义及修复code-input双向数据绑定
-## 3.1.36(2023-08-08)
-修复富文本事件名称大小写
-## 3.1.35(2023-08-02)
-修复编译到支付宝小程序u-form报错
-## 3.1.34(2023-07-27)
-修复App打包uni.$u.mpMixin方式sdk暂时不支持导致报错
-## 3.1.33(2023-07-13)
-修复弹窗进入动画、模板页面样式等
-## 3.1.31(2023-07-11)
-修复dayjs引用
-## 3.0.8(2022-07-12)
-修复u-tag默认宽度撑满容器
-## 3.0.7(2022-07-12)
-修复u-navbar自定义插槽演示示例
-## 3.0.6(2022-07-11)
-修复u-image缺少emits申明
-## 3.0.5(2022-07-11)
-修复u-upload缺少emits申明
-## 3.0.4(2022-07-10)
-修复u-textarea/u-input/u-datetime-picker/u-number-box/u-radio-group/u-switch/u-rate在vue3下数据绑定
-## 3.0.3(2022-07-09)
-启用自建演示二维码
-## 3.0.2(2022-07-09)
-修复dayjs/clipboard等导致打包报错
-## 3.0.1(2022-07-09)
-增加插件市场地址
-## 3.0.0(2022-07-09)
-# uview-plus(vue3)初步发布

+ 0 - 334
node_modules/uview-plus/components/u-cate-tab/u-cate-tab.vue

@@ -1,334 +0,0 @@
-<template>
-	<view class="u-cate-tab">
-		<view class="u-cate-tab__wrap">
-			<scroll-view class="u-cate-tab__view u-cate-tab__menu-scroll-view"
-                scroll-y scroll-with-animation :scroll-top="scrollTop"
-			    :scroll-into-view="itemId">
-				<view v-for="(item, index) in tabList" :key="index" class="u-cate-tab__item"
-                    :class="[innerCurrent == index ? 'u-cate-tab__item-active' : '']"
-				 @tap.stop="swichMenu(index)">
-					<slot name="tabItem" :item="item">
-                    </slot>
-                    <text v-if="!$slots['tabItem']" class="u-line-1">{{item[tabKeyName]}}</text>
-				</view>
-			</scroll-view>
-			<scroll-view :scroll-top="scrollRightTop" scroll-with-animation
-				scroll-y class="u-cate-tab__right-box" @scroll="rightScroll">
-				<view class="u-cate-tab__page-view">
-					<view class="u-cate-tab__page-item" :id="'item' + index" 
-						v-for="(item , index) in tabList" :key="index">
-                        <slot name="itemList" :item="item">
-                        </slot>
-						<template v-if="!$slots['itemList']">
-							<view class="item-title">
-                                <text>{{item[tabKeyName]}}</text>
-                            </view>
-                            <view class="item-container">
-                                <template v-for="(item1, index1) in item.children" :key="index1">
-                                    <slot name="pageItem" :pageItem="item1">
-                                        <view class="thumb-box" >
-                                            <image class="item-menu-image" :src="item1.icon" mode=""></image>
-                                            <view class="item-menu-name">{{item1[itemKeyName]}}</view>
-                                        </view>
-                                    </slot>
-                                </template>
-                            </view>
-						</template>
-					</view>
-				</view>
-			</scroll-view>
-		</view>
-	</view>
-</template>
-<script>
-	export default {
-		name: 'up-cate-tab',
-        props: {
-            tabList: {
-                type: Array,
-                default: () => {
-                    return []
-                }
-            },
-            tabKeyName: {
-                type: String,
-                default: 'name'
-            },
-            itemKeyName: {
-                type: String,
-                default: 'name'
-            },
-			current: {
-                type: Number,
-                default: 0
-            }
-        },
-        watch: {
-            tabList() {
-                this.getMenuItemTop()
-            }
-        },
-		emits: ['update:current'],
-		data() {
-			return {
-				scrollTop: 0, //tab标题的滚动条位置
-				oldScrollTop: 0,
-				innerCurrent: 0, // 预设当前项的值
-				menuHeight: 0, // 左边菜单的高度
-				menuItemHeight: 0, // 左边菜单item的高度
-				itemId: '', // 栏目右边scroll-view用于滚动的id
-				menuItemPos: [],
-                rects: [],
-				arr: [],
-				scrollRightTop: 0, // 右边栏目scroll-view的滚动条高度
-				timer: null, // 定时器
-			}
-		},
-		onMounted() {
-			this.innerCurrent = this.current;
-			this.leftMenuStatus(this.innerCurrent);
-			this.getMenuItemTop()
-		},
-		watch: {
-			current(nval) {
-				this.innerCurrent = nval;
-				this.leftMenuStatus(this.innerCurrent);
-			}
-		},
-		methods: {
-			// 点击左边的栏目切换
-			async swichMenu(index) {
-				if(this.arr.length == 0) {
-					await this.getMenuItemTop();
-				}
-				if (index == this.innerCurrent) return;
-				this.scrollRightTop = this.oldScrollTop;
-				this.$nextTick(function(){
-					this.scrollRightTop = this.arr[index];
-					this.innerCurrent = index;
-					this.leftMenuStatus(index);
-					this.$emit('update:current', index);
-				})
-			},
-			// 获取一个目标元素的高度
-			getElRect(elClass, dataVal) {
-				new Promise((resolve, reject) => {
-					const query = uni.createSelectorQuery().in(this);
-					query.select('.' + elClass).fields({
-						size: true
-					}, res => {
-						// 如果节点尚未生成,res值为null,循环调用执行
-						if (!res) {
-							setTimeout(() => {
-								this.getElRect(elClass);
-							}, 10);
-							return;
-						}
-						this[dataVal] = res.height;
-						resolve();
-					}).exec();
-				})
-			},
-			// 观测元素相交状态
-			async observer() {
-				this.tabList.map((val, index) => {
-					let observer = uni.createIntersectionObserver(this);
-					// 检测右边scroll-view的id为itemxx的元素与u-cate-tab__right-box的相交状态
-					// 如果跟.u-cate-tab__right-box底部相交,就动态设置左边栏目的活动状态
-					observer.relativeTo('.u-cate-tab__right-box', {
-						top: 0
-					}).observe('#item' + index, res => {
-						if (res.intersectionRatio > 0) {
-							let id = res.id.substring(4);
-							this.leftMenuStatus(id);
-						}
-					})
-				})
-			},
-			// 设置左边菜单的滚动状态
-			async leftMenuStatus(index) {
-				this.innerCurrent = index;
-				this.$emit('update:current', index);
-				// 如果为0,意味着尚未初始化
-				if (this.menuHeight == 0 || this.menuItemHeight == 0) {
-					await this.getElRect('u-cate-tab__menu-scroll-view', 'menuHeight');
-					await this.getElRect('u-cate-tab__item', 'menuItemHeight');
-				}
-				// 将菜单活动item垂直居中
-				this.scrollTop = index * this.menuItemHeight + this.menuItemHeight / 2 - this.menuHeight / 2;
-			},
-			// 获取右边菜单每个item到顶部的距离
-			getMenuItemTop() {
-				new Promise(resolve => {
-					let selectorQuery = uni.createSelectorQuery().in(this);
-					selectorQuery.selectAll('.u-cate-tab__page-item').boundingClientRect((rects) => {
-						// 如果节点尚未生成,rects值为[](因为用selectAll,所以返回的是数组),循环调用执行
-						if(!rects.length) {
-							setTimeout(() => {
-								this.getMenuItemTop();
-							}, 10);
-							return ;
-						}
-                        this.rects = rects;
-						rects.forEach((rect) => {
-							// 这里减去rects[0].top,是因为第一项顶部可能不是贴到导航栏(比如有个搜索框的情况)
-							this.arr.push(rect.top - rects[0].top);
-							resolve();
-						})
-					}).exec()
-				})
-			},
-			// 右边菜单滚动
-			async rightScroll(e) {
-				this.oldScrollTop = e.detail.scrollTop;
-                // console.log(e.detail.scrollTop)
-                // console.log(JSON.stringify(this.arr))
-				if(this.arr.length == 0) {
-					await this.getMenuItemTop();
-				}
-				if(this.timer) return ;
-				if(!this.menuHeight) {
-					await this.getElRect('u-cate-tab__menu-scroll-view', 'menuHeight');
-				}
-				setTimeout(() => { // 节流
-					this.timer = null;
-					// scrollHeight为右边菜单垂直中点位置
-					let scrollHeight = e.detail.scrollTop + 1;
-                    // console.log(e.detail.scrollTop)
-					for (let i = 0; i < this.arr.length; i++) {
-						let height1 = this.arr[i];
-						let height2 = this.arr[i + 1];
-                        // console.log('i', i)
-                        // console.log('height1', height1)
-                        // console.log('height2', height2)
-						// 如果不存在height2,意味着数据循环已经到了最后一个,设置左边菜单为最后一项即可
-						if (!height2 || scrollHeight >= height1 && scrollHeight <= height2) {
-                            // console.log('scrollHeight', scrollHeight)
-                            // console.log('height1', height1)
-                            // console.log('height2', height2)
-							this.leftMenuStatus(i);
-							return ;
-						}
-					}
-				}, 10)
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.u-cate-tab {
-		display: flex;
-		flex-direction: column;
-	}
-
-	.u-cate-tab__wrap {
-		flex: 1;
-		display: flex;
-		overflow: hidden;
-	}
-
-	.u-search-inner {
-		background-color: rgb(234, 234, 234);
-		border-radius: 100rpx;
-		display: flex;
-		align-items: center;
-		padding: 10rpx 16rpx;
-	}
-
-	.u-search-text {
-		font-size: 26rpx;
-		color: $u-tips-color;
-		margin-left: 10rpx;
-	}
-
-	.u-cate-tab__view {
-		width: 200rpx;
-		height: 100%;
-	}
-
-	.u-cate-tab__item {
-		height: 110rpx;
-		background: #f6f6f6;
-		box-sizing: border-box;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		font-size: 26rpx;
-		color: #444;
-		font-weight: 400;
-		line-height: 1;
-	}
-
-	.u-cate-tab__item-active {
-		position: relative;
-		color: #000;
-		font-size: 30rpx;
-		font-weight: 600;
-		background: #fff;
-	}
-
-	.u-cate-tab__item-active::before {
-		content: "";
-		position: absolute;
-		border-left: 4px solid $u-primary;
-		height: 32rpx;
-		left: 0;
-		top: 39rpx;
-	}
-
-	.u-cate-tab__view {
-		height: 100%;
-	}
-
-	.u-cate-tab__right-box {
-		flex: 1;
-		background-color: rgb(250, 250, 250);
-	}
-
-	.u-cate-tab__page-view {
-		padding: 16rpx;
-	}
-
-	.u-cate-tab__page-item {
-		margin-bottom: 30rpx;
-		background-color: #fff;
-		padding: 16rpx;
-		border-radius: 8rpx;
-	}
-
-	.u-cate-tab__page-item:last-child {
-		min-height: 100vh;
-	}
-
-	.item-title {
-		font-size: 26rpx;
-		color: $u-main-color;
-		font-weight: bold;
-	}
-
-	.item-menu-name {
-		font-weight: normal;
-		font-size: 24rpx;
-		color: $u-main-color;
-	}
-
-	.item-container {
-		display: flex;
-		flex-wrap: wrap;
-	}
-
-	.thumb-box {
-		width: 33.333333%;
-		display: flex;
-		align-items: center;
-		justify-content: center;
-		flex-direction: column;
-		margin-top: 20rpx;
-	}
-
-	.item-menu-image {
-		width: 120rpx;
-		height: 120rpx;
-	}
-</style>

+ 0 - 255
node_modules/uview-plus/components/u-dropdown/u-dropdown.vue

@@ -1,255 +0,0 @@
-<template>
-	<view class="u-dropdown">
-		<view class="u-dropdown__menu" :style="{
-			height: addUnit(height)
-		}" :class="{
-			'u-border-bottom': borderBottom
-		}">
-			<view class="u-dropdown__menu__item" v-for="(item, index) in menuList" :key="index" @tap.stop="menuClick(index)">
-				<view class="u-flex u-flex-row">
-					<text class="u-dropdown__menu__item__text" :style="{
-						color: item.disabled ? '#c0c4cc' : (index === current || highlightIndex == index) ? activeColor : inactiveColor,
-						fontSize: addUnit(titleSize)
-					}">{{item.title}}</text>
-					<view class="u-dropdown__menu__item__arrow" :class="{
-						'u-dropdown__menu__item__arrow--rotate': index === current
-					}">
-						<u-icon :custom-style="{display: 'flex'}" :name="menuIcon" :size="addUnit(menuIconSize)" :color="index === current || highlightIndex == index ? activeColor : '#c0c4cc'"></u-icon>
-					</view>
-				</view>
-			</view>
-		</view>
-		<view class="u-dropdown__content" :style="[contentStyle, {
-			transition: `opacity ${duration / 1000}s linear`,
-			top: addUnit(height)
-		}]"
-		 @tap="maskClick" @touchmove.stop.prevent>
-			<view @tap.stop.prevent class="u-dropdown__content__popup" :style="[popupStyle]">
-				<slot></slot>
-			</view>
-			<view class="u-dropdown__content__mask"></view>
-		</view>
-	</view>
-</template>
-
-<script>
-    import { props } from './props';
-    import { mpMixin } from '../../libs/mixin/mpMixin';
-	import { mixin } from '../../libs/mixin/mixin';
-	import { addUnit, getWindowInfo} from '../../libs/function/index';
-	/**
-	 * dropdown 下拉菜单
-	 * @description 该组件一般用于向下展开菜单,同时可切换多个选项卡的场景
-	 * @tutorial https://ijry.github.io/uview-plus/components/dropdown.html
-	 * @property {String} active-color 标题和选项卡选中的颜色(默认#2979ff)
-	 * @property {String} inactive-color 标题和选项卡未选中的颜色(默认#606266)
-	 * @property {Boolean} close-on-click-mask 点击遮罩是否关闭菜单(默认true)
-	 * @property {Boolean} close-on-click-self 点击当前激活项标题是否关闭菜单(默认true)
-	 * @property {String | Number} duration 选项卡展开和收起的过渡时间,单位ms(默认300)
-	 * @property {String | Number} height 标题菜单的高度,单位任意(默认80)
-	 * @property {String | Number} border-radius 菜单展开内容下方的圆角值,单位任意(默认0)
-	 * @property {Boolean} border-bottom 标题菜单是否显示下边框(默认false)
-	 * @property {String | Number} title-size 标题的字体大小,单位任意,数值默认为rpx单位(默认28)
-	 * @event {Function} open 下拉菜单被打开时触发
-	 * @event {Function} close 下拉菜单被关闭时触发
-	 * @example <u-dropdown></u-dropdown>
-	 */
-	export default {
-		name: 'u-dropdown',
-        mixins: [mpMixin, mixin, props],
-		data() {
-			return {
-				showDropdown: true, // 是否打开下来菜单,
-				menuList: [], // 显示的菜单
-				active: false, // 下拉菜单的状态
-				// 当前是第几个菜单处于激活状态,小程序中此处不能写成false或者"",否则后续将current赋值为0,
-				// 无能的TX没有使用===而是使用==判断,导致程序认为前后二者没有变化,从而不会触发视图更新
-				current: 99999,
-				// 外层内容的样式,初始时处于底层,且透明
-				contentStyle: {
-					zIndex: -1,
-					opacity: 0
-				},
-				// 让某个菜单保持高亮的状态
-				highlightIndex: 99999,
-				contentHeight: 0
-			}
-		},
-		computed: {
-			// 下拉出来部分的样式
-			popupStyle() {
-				let style = {};
-				// 进行Y轴位移,展开状态时,恢复原位。收齐状态时,往上位移100%,进行隐藏
-				style.transform = `translateY(${this.active ? 0 : '-100%'})`
-				style['transition-duration'] = this.duration / 1000 + 's';
-				style.borderRadius = `0 0 ${addUnit(this.borderRadius)} ${addUnit(this.borderRadius)}`;
-				return style;
-			}
-		},
-		created() {
-			// 引用所有子组件(u-dropdown-item)的this,不能在data中声明变量,否则在微信小程序会造成循环引用而报错
-			this.children = [];
-		},
-		mounted() {
-			this.getContentHeight();
-		},
-        emits: ['open', 'close'],
-		methods: {
-			addUnit,
-			init() {
-				// 当某个子组件内容变化时,触发父组件的init,父组件再让每一个子组件重新初始化一遍
-				// 以保证数据的正确性
-				this.menuList = [];
-				this.children.map(child => {
-					child.init();
-				})
-			},
-			// 点击菜单
-			menuClick(index) {
-				// 判断是否被禁用
-				if (this.menuList[index].disabled) return;
-				// 如果点击时的索引和当前激活项索引相同,意味着点击了激活项,需要收起下拉菜单
-				if (index === this.current && this.closeOnClickSelf) {
-					this.close();
-					// 等动画结束后,再移除下拉菜单中的内容,否则直接移除,也就没有下拉菜单收起的效果了
-					setTimeout(() => {
-						this.children[index].active = false;
-					}, this.duration)
-					return;
-				}
-				this.open(index);
-			},
-			// 打开下拉菜单
-			open(index) {
-				// 嵌套popup使用时可能获取不到正确的高度,重新计算
-				if (this.contentHeight < 1) this.getContentHeight()
-				// 重置高亮索引,否则会造成多个菜单同时高亮
-				// this.highlightIndex = 9999;
-				// 展开时,设置下拉内容的样式
-				this.contentStyle = {
-					zIndex: 11,
-					height: this.contentHeight + 'px'
-				}
-				// 标记展开状态以及当前展开项的索引
-				this.active = true;
-				this.current = index;
-				// 历遍所有的子元素,将索引匹配的项标记为激活状态,因为子元素是通过v-if控制切换的
-				// 之所以不是因display: none,是因为nvue没有display这个属性
-				this.children.map((val, idx) => {
-					val.active = index == idx ? true : false;
-				})
-				this.$emit('open', this.current);
-			},
-			// 设置下拉菜单处于收起状态
-			close() {
-				this.$emit('close', this.current);
-				// 设置为收起状态,同时current归位,设置为空字符串
-				this.active = false;
-				this.current = 99999;
-				// 下拉内容的样式进行调整,不透明度设置为0
-				this.contentStyle = {
-					zIndex: -1,
-					opacity: 0,
-					height: '0px'
-				}
-			},
-			// 点击遮罩
-			maskClick() {
-				// 如果不允许点击遮罩,直接返回
-				if (!this.closeOnClickMask) return;
-				this.close();
-			},
-			// 外部手动设置某个菜单高亮
-			highlight(index = undefined) {
-				this.highlightIndex = index !== undefined ? index : 99999;
-			},
-			// 获取下拉菜单内容的高度
-			getContentHeight() {
-				// 这里的原理为,因为dropdown组件是相对定位的,它的下拉出来的内容,必须给定一个高度
-				// 才能让遮罩占满菜单一下,直到屏幕底部的高度
-				// getWindowInfo()为uview-plus封装的获取设备信息的方法
-				let windowHeight = getWindowInfo().windowHeight;
-				this.$uGetRect('.u-dropdown__menu').then(res => {
-					// 这里获取的是dropdown的尺寸,在H5上,uniapp获取尺寸是有bug的(以前提出修复过,后来又出现了此bug,目前hx2.8.11版本)
-					// H5端bug表现为元素尺寸的top值为导航栏底部到到元素的上边沿的距离,但是元素的bottom值确是导航栏顶部到元素底部的距离
-					// 二者是互相矛盾的,本质原因是H5端导航栏非原生,uni的开发者大意造成
-					// 这里取菜单栏的botton值合理的,不能用res.top,否则页面会造成滚动
-					this.contentHeight = windowHeight - res.bottom;
-				})
-			}
-		}
-	}
-</script>
-
-<style scoped lang="scss">
-	@import "../../libs/css/components.scss";
-
-	.u-dropdown {
-		flex: 1;
-		width: 100%;
-		position: relative;
-
-		&__menu {
-			@include flex;
-			position: relative;
-			z-index: 11;
-			height: 80rpx;
-
-			&__item {
-				flex: 1;
-				@include flex;
-				justify-content: center;
-				align-items: center;
-
-                .u-flex-row {
-                    flex-direction: row;
-                }
-
-				&__text {
-					font-size: 28rpx;
-					color: $u-content-color;
-				}
-
-				&__arrow {
-					margin-left: 6rpx;
-					transition: transform .3s;
-					align-items: center;
-					@include flex;
-
-					&--rotate {
-						transform: rotate(180deg);
-					}
-				}
-			}
-		}
-
-		&__content {
-			position: absolute;
-			z-index: 8;
-			width: 100%;
-			left: 0px;
-			bottom: 0;
-			overflow: hidden;
-			
-
-			&__mask {
-				position: absolute;
-				z-index: 9;
-				background: rgba(0, 0, 0, .3);
-				width: 100%;
-				left: 0;
-				top: 0;
-				bottom: 0;
-			}
-
-			&__popup {
-				position: relative;
-				z-index: 10;
-				transition: transform 0.3s;
-				transform: translate3D(0, -100%, 0);
-				overflow: hidden;
-			}
-		}
-
-	}
-</style>

+ 0 - 334
node_modules/uview-plus/components/u-popup/u-popup.vue

@@ -1,334 +0,0 @@
-<template>
-	<view class="u-popup" :class="[customClass]"
-		:style="{width: show == false ? '0px' : '',
-			height: show == false ? '0px' : ''}">
-		<view class="u-popup__trigger">
-			<slot name="trigger">
-			</slot>
-			<view @click="open"
-				class="u-popup__trigger__cover"></view>
-		</view>
-		<u-overlay
-			:show="show"
-			@click="overlayClick"
-			v-if="overlay"
-			:zIndex="zIndex"
-			:duration="overlayDuration"
-			:customStyle="overlayStyle"
-			:opacity="overlayOpacity"
-		></u-overlay>
-		<u-transition
-			:show="show"
-			:customStyle="transitionStyle"
-			:mode="position"
-			:duration="duration"
-			@afterEnter="afterEnter"
-			@click="clickHandler"
-		>
-			<!-- @click.stop不能去除,去除会导致居中模式下点击内容区域触发关闭弹窗 -->
-			<view
-				class="u-popup__content"
-				:style="[contentStyle]"
-				@click.stop="noop"
-				@touchmove.stop.prevent="noop"
-			>
-				<u-status-bar v-if="safeAreaInsetTop"></u-status-bar>
-				<slot></slot>
-				<view
-					v-if="closeable"
-					@tap.stop="close"
-					class="u-popup__content__close"
-					:class="['u-popup__content__close--' + closeIconPos]"
-					hover-class="u-popup__content__close--hover"
-					hover-stay-time="150"
-				>
-					<u-icon
-						name="close"
-						color="#909399"
-						size="18"
-						bold
-					></u-icon>
-				</view>
-				<u-safe-bottom v-if="safeAreaInsetBottom"></u-safe-bottom>
-			</view>
-		</u-transition>
-	</view>
-</template>
-
-<script>
-	import { props } from './props';
-	import { mpMixin } from '../../libs/mixin/mpMixin';
-	import { mixin } from '../../libs/mixin/mixin';
-	import { addUnit, addStyle, deepMerge, sleep, getWindowInfo } from '../../libs/function/index';
-	/**
-	 * popup 弹窗
-	 * @description 弹出层容器,用于展示弹窗、信息提示等内容,支持上、下、左、右和中部弹出。组件只提供容器,内部内容由用户自定义
-	 * @tutorial https://ijry.github.io/uview-plus/components/popup.html
-	 * @property {Boolean}			show				是否展示弹窗 (默认 false )
-	 * @property {Boolean}			overlay				是否显示遮罩 (默认 true )
-	 * @property {String}			mode				弹出方向(默认 'bottom' )
-	 * @property {String | Number}	duration			动画时长,单位ms (默认 300 )
-	 * @property {String | Number}	overlayDuration		遮罩层动画时长,单位ms (默认 350 )
-	 * @property {Boolean}			closeable			是否显示关闭图标(默认 false )
-	 * @property {Object | String}	overlayStyle		自定义遮罩的样式
-	 * @property {String | Number}	overlayOpacity		遮罩透明度,0-1之间(默认 0.5)
-	 * @property {Boolean}			closeOnClickOverlay	点击遮罩是否关闭弹窗 (默认  true )
-	 * @property {String | Number}	zIndex				层级 (默认 10075 )
-	 * @property {Boolean}			safeAreaInsetBottom	是否为iPhoneX留出底部安全距离 (默认 true )
-	 * @property {Boolean}			safeAreaInsetTop	是否留出顶部安全距离(状态栏高度) (默认 false )
-	 * @property {String}			closeIconPos		自定义关闭图标位置(默认 'top-right' )
-	 * @property {String | Number}	round				圆角值(默认 0)
-	 * @property {Boolean}			zoom				当mode=center时 是否开启缩放(默认 true )
-	 * @property {Object}			customStyle			组件的样式,对象形式
-	 * @event {Function} open 弹出层打开
-	 * @event {Function} close 弹出层收起
-	 * @example <u-popup v-model:show="show"><text>出淤泥而不染,濯清涟而不妖</text></u-popup>
-	 */
-	export default {
-		name: 'u-popup',
-		mixins: [mpMixin, mixin, props],
-		data() {
-			return {
-				overlayDuration: this.duration + 50
-			}
-		},
-		watch: {
-			show(newValue, oldValue) {
-				if (newValue === true) {
-					// #ifdef MP-WEIXIN
-					const children = this.$children
-					this.retryComputedComponentRect(children)
-					// #endif
-				}
-			}
-		},
-		computed: {
-			transitionStyle() {
-				const style = {
-					zIndex: this.zIndex,
-					position: 'fixed',
-					display: 'flex',
-				}
-				style[this.mode] = 0
-				if (this.mode === 'left') {
-					return deepMerge(style, {
-						bottom: 0,
-						top: 0,
-					})
-				} else if (this.mode === 'right') {
-					return deepMerge(style, {
-						bottom: 0,
-						top: 0,
-					})
-				} else if (this.mode === 'top') {
-					return deepMerge(style, {
-						left: 0,
-						right: 0
-					})
-				} else if (this.mode === 'bottom') {
-					return deepMerge(style, {
-						left: 0,
-						right: 0,
-					})
-				} else if (this.mode === 'center') {
-					return deepMerge(style, {
-						alignItems: 'center',
-						'justify-content': 'center',
-						top: 0,
-						left: 0,
-						right: 0,
-						bottom: 0
-					})
-				}
-			},
-			contentStyle() {
-				const style = {}
-				// 通过设备信息的safeAreaInsets值来判断是否需要预留顶部状态栏和底部安全局的位置
-				// 不使用css方案,是因为nvue不支持css的iPhoneX安全区查询属性
-				const {
-					safeAreaInsets
-				} = getWindowInfo()
-				if (this.mode !== 'center') {
-					style.flex = 1
-				}
-				// 背景色,一般用于设置为transparent,去除默认的白色背景
-				if (this.bgColor) {
-					style.backgroundColor = this.bgColor
-				}
-				if(this.round) {
-					const value = addUnit(this.round)
-					if(this.mode === 'top') {
-						style.borderBottomLeftRadius = value
-						style.borderBottomRightRadius = value
-					} else if(this.mode === 'bottom') {
-						style.borderTopLeftRadius = value
-						style.borderTopRightRadius = value
-					} else if(this.mode === 'center') {
-						style.borderRadius = value
-					} 
-				}
-				return deepMerge(style, addStyle(this.customStyle))
-			},
-			position() {
-				if (this.mode === 'center') {
-					return this.zoom ? 'fade-zoom' : 'fade'
-				}
-				if (this.mode === 'left') {
-					return 'slide-left'
-				}
-				if (this.mode === 'right') {
-					return 'slide-right'
-				}
-				if (this.mode === 'bottom') {
-					return 'slide-up'
-				}
-				if (this.mode === 'top') {
-					return 'slide-down'
-				}
-			},
-		},
-		emits: ["open", "close", "click", "update:show"],
-		methods: {
-			// 点击遮罩
-			overlayClick() {
-				if (this.closeOnClickOverlay) {
-					this.$emit('update:show', false)
-					this.$emit('close')
-				}
-			},
-			open(e) {
-				this.$emit('update:show', true)
-			},
-			close(e) {
-				this.$emit('update:show', false)
-				this.$emit('close')
-			},
-			afterEnter() {
-				this.$emit('open')
-			},
-			clickHandler() {
-				// 由于中部弹出时,其u-transition占据了整个页面相当于遮罩,此时需要发出遮罩点击事件,是否无法通过点击遮罩关闭弹窗
-				if(this.mode === 'center') {
-					this.overlayClick()
-				}
-				this.$emit('click')
-			},
-			// #ifdef MP-WEIXIN
-			retryComputedComponentRect(children) {
-				// 组件内部需要计算节点的组件
-				const names = ['u-calendar-month', 'u-album', 'u-collapse-item', 'u-dropdown', 'u-index-item', 'u-index-list',
-					'u-line-progress', 'u-list-item', 'u-rate', 'u-read-more', 'u-row', 'u-row-notice', 'u-scroll-list',
-					'u-skeleton', 'u-slider', 'u-steps-item', 'u-sticky', 'u-subsection', 'u-swipe-action-item', 'u-tabbar',
-					'u-tabs', 'u-tooltip'
-				]
-				// 历遍所有的子组件节点
-				for (let i = 0; i < children.length; i++) {
-					const child = children[i]
-					// 拿到子组件的子组件
-					const grandChild = child.$children
-					// 判断如果在需要重新初始化的组件数组中名中,并且存在init方法的话,则执行
-					if (names.includes(child.$options.name) && typeof child?.init === 'function') {
-						// 需要进行一定的延时,因为初始化页面需要时间
-						sleep(50).then(() => {
-							child.init()
-						})
-					}
-					// 如果子组件还有孙组件,进行递归历遍
-					if (grandChild.length) {
-						this.retryComputedComponentRect(grandChild)
-					}
-				}
-			}
-			// #endif
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/components.scss";
-	$u-popup-flex:1 !default;
-	$u-popup-content-background-color: #fff !default;
-
-	.u-popup {
-		flex: $u-popup-flex;
-		
-		&__trigger {
-			position: relative;
-			&__cover {
-				position: absolute;
-				top: 0;
-				left: 0;
-				right: 0;
-				bottom: 0;
-			}
-		}
-
-		&__content {
-			background-color: $u-popup-content-background-color;
-			position: relative;
-
-			&--round-top {
-				border-top-left-radius: 0;
-				border-top-right-radius: 0;
-				border-bottom-left-radius: 10px;
-				border-bottom-right-radius: 10px;
-			}
-
-			&--round-left {
-				border-top-left-radius: 0;
-				border-top-right-radius: 10px;
-				border-bottom-left-radius: 0;
-				border-bottom-right-radius: 10px;
-			}
-
-			&--round-right {
-				border-top-left-radius: 10px;
-				border-top-right-radius: 0;
-				border-bottom-left-radius: 10px;
-				border-bottom-right-radius: 0;
-			}
-
-			&--round-bottom {
-				border-top-left-radius: 10px;
-				border-top-right-radius: 10px;
-				border-bottom-left-radius: 0;
-				border-bottom-right-radius: 0;
-			}
-
-			&--round-center {
-				border-top-left-radius: 10px;
-				border-top-right-radius: 10px;
-				border-bottom-left-radius: 10px;
-				border-bottom-right-radius: 10px;
-			}
-
-			&__close {
-				position: absolute;
-
-				&--hover {
-					opacity: 0.4;
-				}
-			}
-
-			&__close--top-left {
-				top: 15px;
-				left: 15px;
-			}
-
-			&__close--top-right {
-				top: 15px;
-				right: 15px;
-			}
-
-			&__close--bottom-left {
-				bottom: 15px;
-				left: 15px;
-			}
-
-			&__close--bottom-right {
-				right: 15px;
-				bottom: 15px;
-			}
-		}
-	}
-</style>

+ 0 - 213
node_modules/uview-plus/components/u-select/u-select.vue

@@ -1,213 +0,0 @@
-<template>
-	<view class="u-select">
-		<view class="u-select__content">
-			<view class="u-select__label" @click="openSelect">
-				<slot name="text">
-					<text class="u-select__text" v-if="showOptionsLabel">
-						{{ currentLabel }}
-					</text>
-					<text class="u-select__text" v-else>
-						{{ label }}
-					</text>
-				</slot>
-				<slot name="icon">
-					<u-icon name="arrow-down" :size="iconSize" :color="iconColor"></u-icon>
-				</slot>
-			</view>
-			<u-overlay
-				:show="isOpen"
-				@click="overlayClick"
-				v-if="overlay"
-				:zIndex="zIndex"
-				:duration="duration + 50"
-				:customStyle="overlayStyle"
-				:opacity="overlayOpacity"
-			></u-overlay>
-			<view class="u-select__options__wrap"
-				:style="{ zIndex: zIndex + 1, left: optionsWrapLeft, right: optionsWrapRight }">
-				<view class="u-select__options" v-if="isOpen">
-					<slot name="options">
-						<view class="u-select__options_item"
-							:class="current == item[keyName] ? 'active': ''"
-							:key="index" v-for="(item, index) in options"
-							@click="selectItem(item)">
-							<slot name="optionItem" :item="item">
-								<text class="u-select__item_text" :style="{color: itemColor}"> 
-									{{item[labelName]}}
-								</text>
-							</slot>
-						</view>
-					</slot>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-import { getWindowInfo } from '../../libs/function/index';
-export default {
-	name:"up-select",
-	emits: ['update:current', 'select'],
-	props: {
-		overlay: {
-			type: Boolean,
-			default: true
-		},
-		overlayOpacity: {
-			type: Number,
-			default: 0.01
-		},
-		overlayStyle: {
-			type: Object,
-			default: () => {
-				return {}
-			}
-		},
-		duration: {
-			type: Number,
-			default: 300
-		},
-		label: {
-			type: String,
-			default: '选项'
-		},
-		options: {
-			type: Array,
-			default: () => {
-				return []
-			}
-		},
-		keyName: {
-			type: String,
-			default: 'id'
-		},
-		labelName: {
-			type: String,
-			default: 'name'
-		},
-		showOptionsLabel: {
-			type: Boolean,
-			default: false
-		},
-		current: {
-			type: [String, Number],
-			default: ''
-		},
-		zIndex: {
-			type: Number,
-			default: 11000
-		},
-		itemColor: {
-			type: String,
-			default: '#333333'
-		},
-		iconColor: {
-			type: String,
-			default: ''
-		},
-		iconSize: {
-			type: [String],
-			default: '13px'
-		}
-	},
-	data() {
-		return {
-			isOpen: false,
-			optionsWrapLeft: 'auto',
-			optionsWrapRight: 'auto'
-		}
-	},
-	computed: {
-		currentLabel() {
-			let name = '';
-			this.options.forEach((ele) => {
-				if (ele[this.keyName] === this.current) {
-					name = ele[this.labelName];
-				}
-			});
-			return name;
-		}
-    },
-    methods: {
-      openSelect() {
-        this.isOpen = true;
-		this.$nextTick(() => {
-			if (this.isOpen) {
-				this.adjustOptionsWrapPosition();
-			}
-		});
-      },
-	  overlayClick() {
-		  this.isOpen = false;
-	  },
-      selectItem(item) {
-        this.isOpen = false;
-        this.$emit('update:current', item[this.keyName]);
-        this.$emit('select', item);
-      },
-	  adjustOptionsWrapPosition() {
-		let wi = getWindowInfo();
-		let windowWidth = wi.windowWidth;
-		this.$uGetRect('.u-select__options__wrap').then(rect => {
-			console.log(rect)
-			if (rect.left + rect.width > windowWidth) {
-				// 如果右侧被遮挡,则调整到左侧
-				this.optionsWrapLeft = 'auto';
-				this.optionsWrapRight = `0px`;
-			}
-		});
-	  }
-    }
-}
-</script>
-
-<style lang="scss" scoped>
-  .u-select__content {
-    position: relative;
-    .u-select__label {
-      display: flex;
-	  justify-content: space-between;
-      /* #ifdef H5 */
-      &:hover {
-        cursor: pointer;
-      }
-      /* #endif */
-    }
-    .u-select__text {
-      margin-right: 2px;
-    }
-	.u-select__options__wrap {
-		margin-bottom: 46px;
-		position: absolute;
-		top: 20px;
-		left: 0;
-	}
-    .u-select__options {
-      min-width: 100px;
-	  box-sizing: border-box;
-      border-radius: 4px;
-      border: 1px solid #f1f1f1;
-      background-color: #fff;
-      .u-select__options_item {
-        padding: 10px 12px;
-		box-sizing: border-box;
-        width: 100%;
-        height: 100%;
-        &:hover {
-          background-color: #f7f7f7;
-        }
-        /* #ifdef H5 */
-        &:hover {
-          cursor: pointer;
-        }
-        .u-select__item_text {
-          &:hover {
-            cursor: pointer;
-          }
-        }
-        /* #endif */
-      }
-    }
-  }
-</style>

+ 0 - 216
node_modules/uview-plus/components/u-sticky/u-sticky.vue

@@ -1,216 +0,0 @@
-<template>
-	<view
-		class="u-sticky"
-		:style="[style]"
-	>
-		<view
-		:id="elId"
-			:style="[stickyContent]"
-			class="u-sticky__content"
-		>
-			<slot />
-		</view>
-	</view>
-</template>
-
-<script>
-	import { props } from './props';
-	import { mpMixin } from '../../libs/mixin/mpMixin';
-	import { mixin } from '../../libs/mixin/mixin';
-	import { addUnit, addStyle, deepMerge, getPx, guid, getDeviceInfo, os } from '../../libs/function/index';
-	import zIndex from '../../libs/config/zIndex';
-	/**
-	 * sticky 吸顶
-	 * @description 该组件与CSS中position: sticky属性实现的效果一致,当组件达到预设的到顶部距离时, 就会固定在指定位置,组件位置大于预设的顶部距离时,会重新按照正常的布局排列。
-	 * @tutorial https://ijry.github.io/uview-plus/components/sticky.html
-	 * @property {String | Number}	offsetTop		吸顶时与顶部的距离,单位px(默认 0 )
-	 * @property {String | Number}	customNavHeight	自定义导航栏的高度 (h5 默认44  其他默认 0 )
-	 * @property {Boolean}			disabled		是否开启吸顶功能 (默认 false )
-	 * @property {String}			bgColor			组件背景颜色(默认 '#ffffff' )
-	 * @property {String | Number}	zIndex			吸顶时的z-index值
-	 * @property {String | Number}	index			自定义标识,用于区分是哪一个组件
-	 * @property {Object}			customStyle		组件的样式,对象形式
-	 * @event {Function} fixed		组件吸顶时触发
-	 * @event {Function} unfixed	组件取消吸顶时触发
-	 * @example <u-sticky offsetTop="200"><view>塞下秋来风景异,衡阳雁去无留意</view></u-sticky>
-	 */
-	export default {
-		name: 'u-sticky',
-		mixins: [mpMixin, mixin, props],
-		data() {
-			return {
-				cssSticky: false, // 是否使用css的sticky实现
-				stickyTop: 0, // 吸顶的top值,因为可能受自定义导航栏影响,最终的吸顶值非offsetTop值
-				elId: guid(),
-				left: 0, // js模式时,吸顶的内容因为处于postition: fixed模式,为了和原来保持一致的样式,需要记录并重新设置它的left,height,width属性
-				width: 'auto',
-				height: 'auto',
-				fixed: false, // js模式时,是否处于吸顶模式
-			}
-		},
-		computed: {
-			style() {
-				const style = {}
-				if(!this.disabled) {
-					if (this.cssSticky) {
-						style.position = 'sticky'
-						style.zIndex = this.uZindex
-						style.top = addUnit(this.stickyTop)
-					} else {
-						style.height = this.fixed ? this.height + 'px' : 'auto'
-					}
-				} else {
-					// 无需吸顶时,设置会默认的relative(nvue)和非nvue的static静态模式即可
-					// #ifdef APP-NVUE
-					style.position = 'relative'
-					// #endif
-					// #ifndef APP-NVUE
-					style.position = 'static'
-					// #endif
-				}
-				style.backgroundColor = this.bgColor
-				return deepMerge(addStyle(this.customStyle), style)
-			},
-			// 吸顶内容的样式
-			stickyContent() {
-				const style = {}
-				if (!this.cssSticky) {
-					style.position = this.fixed ? 'fixed' : 'static'
-					style.top = this.stickyTop + 'px'
-					style.left = this.left + 'px'
-					style.width = this.width == 'auto' ? 'auto' : this.width + 'px'
-					style.zIndex = this.uZindex
-				}
-				return style
-			},
-			uZindex() {
-				return this.zIndex ? this.zIndex : zIndex.sticky
-			}
-		},
-		mounted() {
-			this.init()
-		},
-		methods: {
-			init() {
-				this.getStickyTop()
-				// 判断使用的模式
-				this.checkSupportCssSticky()
-				// 如果不支持css sticky,则使用js方案,此方案性能比不上css方案
-				if (!this.cssSticky) {
-					!this.disabled && this.initObserveContent()
-				}
-			},
-			initObserveContent() {
-				// 获取吸顶内容的高度,用于在js吸顶模式时,给父元素一个填充高度,防止"塌陷"
-				this.$uGetRect('#' + this.elId).then((res) => {
-					this.height = res.height
-					this.left = res.left
-					this.width = res.width
-					this.$nextTick(() => {
-						this.observeContent()
-					})
-				})
-			},
-			observeContent() {
-				// 先断掉之前的观察
-				this.disconnectObserver('contentObserver')
-				const contentObserver = uni.createIntersectionObserver(this,{
-					// 检测的区间范围
-					thresholds: [0.95, 0.98, 1]
-				})
-				// 到屏幕顶部的高度时触发
-				contentObserver.relativeToViewport({
-					top: -this.stickyTop
-				})
-				// 绑定观察的元素
-				contentObserver.observe(`#${this.elId}`, res => {
-					this.setFixed(res.boundingClientRect.top)
-				})
-				this.contentObserver = contentObserver
-			},
-			setFixed(top) {
-				// 判断是否出于吸顶条件范围
-				const fixed = top <= this.stickyTop
-				this.fixed = fixed
-			},
-			disconnectObserver(observerName) {
-				// 断掉观察,释放资源
-				const observer = this[observerName]
-				observer && observer.disconnect()
-			},
-			getStickyTop() {
-				this.stickyTop = getPx(this.offsetTop) + getPx(this.customNavHeight)
-			},
-			async checkSupportCssSticky() {
-				// #ifdef H5
-				// H5,一般都是现代浏览器,是支持css sticky的,这里使用创建元素嗅探的形式判断
-				if (this.checkCssStickyForH5()) {
-					this.cssSticky = true
-				}
-				// #endif
-
-				// 如果安卓版本高于8.0,依然认为是支持css sticky的(因为安卓7在某些机型,可能不支持sticky)
-				if (os() === 'android' && Number(getDeviceInfo().system) > 8) {
-					this.cssSticky = true
-				}
-
-				// APP-Vue和微信平台,通过computedStyle判断是否支持css sticky
-				// #ifdef APP-VUE || MP-WEIXIN || MP-TOUTIAO
-				this.cssSticky = await this.checkComputedStyle()
-				// #endif
-
-				// ios上,从ios6开始,都是支持css sticky的
-				if (os() === 'ios') {
-					this.cssSticky = true
-				}
-
-				// nvue,是支持css sticky的
-				// #ifdef APP-NVUE
-				this.cssSticky = true
-				// #endif
-			},
-			// 在APP和微信小程序上,通过uni.createSelectorQuery可以判断是否支持css sticky
-			checkComputedStyle() {
-				// 方法内进行判断,避免在其他平台生成无用代码
-				// #ifdef APP-VUE || MP-WEIXIN || MP-TOUTIAO
-				return new Promise(resolve => {
-					uni.createSelectorQuery().in(this).select('.u-sticky').fields({
-						computedStyle: ["position"]
-					}).exec(e => {
-						resolve('sticky' === e[0].position)
-					})
-				})
-				// #endif
-			},
-			// H5通过创建元素的形式嗅探是否支持css sticky
-			// 判断浏览器是否支持sticky属性
-			checkCssStickyForH5() {
-				// 方法内进行判断,避免在其他平台生成无用代码
-				// #ifdef H5
-				const vendorList = ['', '-webkit-', '-ms-', '-moz-', '-o-'],
-					vendorListLength = vendorList.length,
-					stickyElement = document.createElement('div')
-				for (let i = 0; i < vendorListLength; i++) {
-					stickyElement.style.position = vendorList[i] + 'sticky'
-					if (stickyElement.style.position !== '') {
-						return true
-					}
-				}
-				return false;
-				// #endif
-			}
-		},
-		beforeUnmount() {
-			this.disconnectObserver('contentObserver')
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	.u-sticky {
-		/* #ifdef APP-VUE || MP-WEIXIN || MP-TOUTIAO */
-		// 此处默认写sticky属性,是为了给微信和APP通过uni.createSelectorQuery查询是否支持css sticky使用
-		position: sticky;
-		/* #endif */
-	}
-</style>

+ 0 - 405
node_modules/uview-plus/components/u-tabs/u-tabs.vue

@@ -1,405 +0,0 @@
-<template>
-	<view class="u-tabs" :class="[customClass]">
-		<view class="u-tabs__wrapper">
-			<slot name="left" />
-			<view class="u-tabs__wrapper__scroll-view-wrapper">
-				<scroll-view
-					:scroll-x="scrollable"
-					:scroll-left="scrollLeft"
-					scroll-with-animation
-					class="u-tabs__wrapper__scroll-view"
-					:show-scrollbar="false"
-					ref="u-tabs__wrapper__scroll-view"
-				>
-					<view
-						class="u-tabs__wrapper__nav"
-						ref="u-tabs__wrapper__nav"
-					>
-						<view
-							class="u-tabs__wrapper__nav__item"
-							v-for="(item, index) in list"
-							:key="index"
-							@tap="clickHandler(item, index)"
-							@longpress="longPressHandler(item,index)"
-							:ref="`u-tabs__wrapper__nav__item-${index}`"
-							:style="[addStyle(itemStyle), {flex: scrollable ? '' : 1}]"
-							:class="[`u-tabs__wrapper__nav__item-${index}`,
-								item.disabled && 'u-tabs__wrapper__nav__item--disabled',
-								innerCurrent == index ? 'u-tabs__wrapper__nav__item-active' : '']"
-						>
-							<slot v-if="$slots.icon" name="icon" :item="item" :keyName="keyName" :index="index" />
-							<template v-else>
-								<view class="u-tabs__wrapper__nav__item__prefix-icon" v-if="item.icon">
-									<up-icon
-										:name="item.icon"
-										:customStyle="addStyle(iconStyle)"
-									></up-icon>
-								</view>
-							</template>
-							<slot v-if="$slots.content" name="content" :item="item" :keyName="keyName" :index="index" />
-							<slot v-else-if="!$slots.content && ($slots.default || $slots.$default)"
-								:item="item" :keyName="keyName" :index="index" />
-							<text v-else
-								:class="[item.disabled && 'u-tabs__wrapper__nav__item__text--disabled']"
-								class="u-tabs__wrapper__nav__item__text"
-								:style="[textStyle(index)]"
-							>{{ item[keyName] }}</text>
-							<u-badge
-								:show="!!(item.badge && (item.badge.show || item.badge.isDot || item.badge.value))"
-								:isDot="item.badge && item.badge.isDot || propsBadge.isDot"
-								:value="item.badge && item.badge.value || propsBadge.value"
-								:max="item.badge && item.badge.max || propsBadge.max"
-								:type="item.badge && item.badge.type || propsBadge.type"
-								:showZero="item.badge && item.badge.showZero || propsBadge.showZero"
-								:bgColor="item.badge && item.badge.bgColor || propsBadge.bgColor"
-								:color="item.badge && item.badge.color || propsBadge.color"
-								:shape="item.badge && item.badge.shape || propsBadge.shape"
-								:numberType="item.badge && item.badge.numberType || propsBadge.numberType"
-								:inverted="item.badge && item.badge.inverted || propsBadge.inverted"
-								customStyle="margin-left: 4px;"
-							></u-badge>
-						</view>
-						<!-- #ifdef APP-NVUE -->
-						<view
-							class="u-tabs__wrapper__nav__line"
-							ref="u-tabs__wrapper__nav__line"
-							:style="[{
-								width: addUnit(lineWidth),
-								height: addUnit(lineHeight),
-								background: lineColor,
-								backgroundSize: lineBgSize,
-							}]"
-						>
-						</view>
-						<!-- #endif -->
-						<!-- #ifndef APP-NVUE -->
-						<view
-							class="u-tabs__wrapper__nav__line"
-							ref="u-tabs__wrapper__nav__line"
-							:style="[{
-								width: addUnit(lineWidth),
-								transform: `translate(${lineOffsetLeft}px)`,
-								transitionDuration: `${firstTime ? 0 : duration}ms`,
-								height: addUnit(lineHeight),
-								background: lineColor,
-								backgroundSize: lineBgSize,
-							}]"
-						>
-						</view>
-						<!-- #endif -->
-					</view>
-				</scroll-view>
-			</view>
-			<slot name="right" />
-		</view>
-	</view>
-</template>
-
-<script>
-	// #ifdef APP-NVUE
-	const animation = uni.requireNativePlugin('animation')
-	const dom = uni.requireNativePlugin('dom')
-	// #endif
-	import { props } from './props';
-	import { mpMixin } from '../../libs/mixin/mpMixin';
-	import { mixin } from '../../libs/mixin/mixin';
-	import defProps from '../../libs/config/props.js'
-	import { addUnit, addStyle, deepMerge, getPx, sleep, getWindowInfo } from '../../libs/function/index';
-	/**
-	 * Tabs 标签
-	 * @description tabs标签组件,在标签多的时候,可以配置为左右滑动,标签少的时候,可以禁止滑动。 该组件的一个特点是配置为滚动模式时,激活的tab会自动移动到组件的中间位置。
-	 * @tutorial https://ijry.github.io/uview-plus/components/tabs.html
-	 * @property {String | Number}	duration			滑块移动一次所需的时间,单位秒(默认 200 )
-	 * @property {String | Number}	swierWidth			swiper的宽度(默认 '750rpx' )
-	 * @property {String}	keyName	 从`list`元素对象中读取的键名(默认 'name' )
-	 * @event {Function(index)} change 标签改变时触发 index: 点击了第几个tab,索引从0开始
-	 * @event {Function(index)} click 点击标签时触发 index: 点击了第几个tab,索引从0开始
-	 * @event {Function(index)} longPress 长按标签时触发 index: 点击了第几个tab,索引从0开始
-	 * @example <u-tabs :list="list" :is-scroll="false" :current="current" @change="change" @longPress="longPress"></u-tabs>
-	 */
-	export default {
-		name: 'u-tabs',
-		mixins: [mpMixin, mixin, props],
-		data() {
-			return {
-				firstTime: true,
-				scrollLeft: 0,
-				scrollViewWidth: 0,
-				lineOffsetLeft: 0,
-				tabsRect: {
-					left: 0
-				},
-				innerCurrent: 0,
-				moving: false,
-			}
-		},
-		watch: {
-			current: {
-				immediate: true,
-				handler (newValue, oldValue) {
-					// 内外部值不相等时,才尝试移动滑块
-					if (newValue !== this.innerCurrent) {
-						if (typeof newValue == 'string') {
-							this.innerCurrent = parseInt(newValue)
-						} else {
-							this.innerCurrent = newValue
-						}
-						this.$nextTick(() => {
-							this.resize()
-						})
-					}
-				}
-			},
-			// list变化时,重新渲染list各项信息
-			list() {
-				this.$nextTick(() => {
-					this.resize()
-				})
-			}
-		},
-		computed: {
-			textStyle() {
-				return index => {
-					const style = {}
-					// 取当期是否激活的样式
-					const customeStyle = (index == this.innerCurrent)
-						? addStyle(this.activeStyle) 
-						: addStyle(this.inactiveStyle)
-					// 如果当前菜单被禁用,则加上对应颜色,需要在此做处理,是因为nvue下,无法在style样式中通过!import覆盖标签的内联样式
-					if (this.list[index].disabled) {
-						style.color = '#c8c9cc'
-					}
-					return deepMerge(customeStyle, style)
-				}
-			},
-			propsBadge() {
-				return defProps.badge
-			}
-		},
-		async mounted() {
-			this.init()
-		},
-		emits: ['click', 'longPress', 'change', 'update:current'],
-		methods: {
-			addStyle,
-			addUnit,
-			setLineLeft() {
-				const tabItem = this.list[this.innerCurrent];
-				if (!tabItem) {
-					return;
-				}
-				// 获取滑块该移动的位置
-				let lineOffsetLeft = this.list
-					.slice(0, this.innerCurrent)
-					.reduce((total, curr) => total + curr.rect.width, 0);
-                // 获取下划线的数值px表示法
-				const lineWidth = getPx(this.lineWidth);
-				this.lineOffsetLeft = lineOffsetLeft + (tabItem.rect.width - lineWidth) / 2
-				// #ifdef APP-NVUE
-				// 第一次移动滑块,无需过渡时间
-				this.animation(this.lineOffsetLeft, this.firstTime ? 0 : parseInt(this.duration))
-				// #endif
-
-				// 如果是第一次执行此方法,让滑块在初始化时,瞬间滑动到第一个tab item的中间
-				// 这里需要一个定时器,因为在非nvue下,是直接通过style绑定过渡时间,需要等其过渡完成后,再设置为false(非第一次移动滑块)
-				if (this.firstTime) {
-					setTimeout(() => {
-						this.firstTime = false
-					}, 10);
-				}
-			},
-			// nvue下设置滑块的位置
-			animation(x, duration = 0) {
-				// #ifdef APP-NVUE
-				const ref = this.$refs['u-tabs__wrapper__nav__line']
-				animation.transition(ref, {
-					styles: {
-						transform: `translateX(${x}px)`
-					},
-					duration
-				})
-				// #endif
-			},
-			// 点击某一个标签
-			clickHandler(item, index) {
-				// 因为标签可能为disabled状态,所以click是一定会发出的,但是change事件是需要可用的状态才发出
-				this.$emit('click', {
-					...item,
-					index
-				}, index)
-				// 如果disabled状态,返回
-				if (item.disabled) return
-				// 如果点击当前不触发change
-				if (this.innerCurrent == index) return
-				this.innerCurrent = index
-				this.resize()
-				this.$emit('update:current', index)
-				this.$emit('change', {
-					...item,
-					index
-				}, index)
-			},
-			// 长按事件
-			longPressHandler(item, index) {
-				this.$emit('longPress', {
-					...item,
-					index
-				})
-			},
-			init() {
-				sleep().then(() => {
-					this.resize()
-				})
-			},
-			setScrollLeft() {
-				// 当前活动tab的布局信息,有tab菜单的width和left(为元素左边界到父元素左边界的距离)等信息
-				if (this.innerCurrent < 0) {
-                    this.innerCurrent = 0;
-                }
-				const tabRect = this.list[this.innerCurrent]
-				// 累加得到当前item到左边的距离
-				const offsetLeft = this.list
-					.slice(0, this.innerCurrent)
-					.reduce((total, curr) => {
-						return total + curr.rect.width
-					}, 0)
-				// 此处为屏幕宽度
-				const windowWidth = getWindowInfo().windowWidth
-				// 将活动的tabs-item移动到屏幕正中间,实际上是对scroll-view的移动
-				let scrollLeft = offsetLeft - (this.tabsRect.width - tabRect.rect.width) / 2 - (windowWidth - this.tabsRect
-					.right) / 2 + this.tabsRect.left / 2
-				// 这里做一个限制,限制scrollLeft的最大值为整个scroll-view宽度减去tabs组件的宽度
-				scrollLeft = Math.min(scrollLeft, this.scrollViewWidth - this.tabsRect.width)
-				this.scrollLeft = Math.max(0, scrollLeft)
-			},
-			// 获取所有标签的尺寸
-			resize() {
-				// 如果不存在list,则不处理
-				if(this.list.length === 0) {
-					return
-				}
-				Promise.all([this.getTabsRect(), this.getAllItemRect()]).then(([tabsRect, itemRect = []]) => {
-					// 兼容在swiper组件中使用
-					if (tabsRect.left > tabsRect.width) {
-						tabsRect.right = tabsRect.right - Math.floor(tabsRect.left / tabsRect.width) * tabsRect.width
-						tabsRect.left = tabsRect.left % tabsRect.width
-					}
-					// console.log(tabsRect)
-					this.tabsRect = tabsRect
-					this.scrollViewWidth = 0
-					itemRect.map((item, index) => {
-						// 计算scroll-view的宽度,这里
-						this.scrollViewWidth += item.width
-						// 另外计算每一个item的中心点X轴坐标
-						this.list[index].rect = item
-					})
-					// 获取了tabs的尺寸之后,设置滑块的位置
-					this.setLineLeft()
-					this.setScrollLeft()
-				})
-			},
-			// 获取导航菜单的尺寸
-			getTabsRect() {
-				return new Promise(resolve => {
-					this.queryRect('u-tabs__wrapper__scroll-view').then(size => resolve(size))
-				})
-			},
-			// 获取所有标签的尺寸
-			getAllItemRect() {
-				return new Promise(resolve => {
-					const promiseAllArr = this.list.map((item, index) => this.queryRect(
-						`u-tabs__wrapper__nav__item-${index}`, true))
-					Promise.all(promiseAllArr).then(sizes => resolve(sizes))
-				})
-			},
-			// 获取各个标签的尺寸
-			queryRect(el, item) {
-				// #ifndef APP-NVUE
-				// $uGetRect为uView自带的节点查询简化方法,详见文档介绍:https://ijry.github.io/uview-plus/js/getRect.html
-				// 组件内部一般用this.$uGetRect,对外的为uni.$u.getRect,二者功能一致,名称不同
-				return new Promise(resolve => {
-					this.$uGetRect(`.${el}`).then(size => {
-						resolve(size)
-					})
-				})
-				// #endif
-
-				// #ifdef APP-NVUE
-				// nvue下,使用dom模块查询元素高度
-				// 返回一个promise,让调用此方法的主体能使用then回调
-				return new Promise(resolve => {
-					dom.getComponentRect(item ? this.$refs[el][0] : this.$refs[el], res => {
-						resolve(res.size)
-					})
-				})
-				// #endif
-			},
-		},
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import "../../libs/css/components.scss";
-
-	.u-tabs {
-
-		&__wrapper {
-			@include flex;
-			align-items: center;
-
-			&__scroll-view-wrapper {
-				flex: 1;
-				/* #ifndef APP-NVUE */
-				overflow: auto hidden;
-				/* #endif */
-			}
-
-			&__scroll-view {
-				@include flex;
-				flex: 1;
-			}
-
-			&__nav {
-				@include flex;
-				position: relative;
-
-				&__item {
-					padding: 0 11px;
-					@include flex;
-					align-items: center;
-					justify-content: center;
-					/* #ifdef H5 */
-					cursor: pointer;
-					/* #endif */
-
-					&--disabled {
-						/* #ifdef H5 */
-						cursor: not-allowed;
-						/* #endif */
-					}
-
-					&__text {
-						font-size: 15px;
-						color: $u-content-color;
-                        white-space: nowrap !important;
-
-						&--disabled {
-							color: $u-disabled-color !important;
-						}
-					}
-				}
-
-				&__line {
-					height: 3px;
-					background: $u-primary;
-					width: 30px;
-					position: absolute;
-					bottom: 2px;
-					border-radius: 100px;
-					transition-property: transform;
-					transition-duration: 300ms;
-				}
-			}
-		}
-	}
-</style>

Разница между файлами не показана из-за своего большого размера
+ 0 - 883
node_modules/uview-plus/components/u-upload/u-upload.vue


+ 0 - 178
node_modules/uview-plus/components/u-upload/utils.js

@@ -1,178 +0,0 @@
-function pickExclude(obj, keys) {
-	// 某些情况下,type可能会为
-    if (!['[object Object]', '[object File]'].includes(Object.prototype.toString.call(obj))) {
-        return {}
-    }
-    return Object.keys(obj).reduce((prev, key) => {
-        if (!keys.includes(key)) {
-            prev[key] = obj[key]
-        }
-        return prev
-    }, {})
-}
-
-function formatImage(res) {
-    return res.tempFiles.map((item) => ({
-        ...pickExclude(item, ['path']),
-        type: 'image',
-        url: item.path,
-        thumb: item.path,
-		size: item.size,
-		// #ifdef H5
-		name: item.name,
-		file: item
-		// #endif
-		// #ifndef H5
-		name: item.path.split('/').pop() + '.png',
-		// #endif
-    }))
-}
-
-function formatVideo(res) {
-	// console.log(res)
-    return [
-        {
-            ...pickExclude(res, ['tempFilePath', 'thumbTempFilePath', 'errMsg']),
-            type: 'video',
-            url: res.tempFilePath,
-            thumb: res.thumbTempFilePath,
-			size: res.size,
-			width: res.width || 0, // APP 2.1.0+、H5、微信小程序、京东小程序
-			height: res.height || 0, // APP 2.1.0+、H5、微信小程序、京东小程序
-			// #ifdef H5
-			name: res.name,
-			file: res
-			// #endif
-			// #ifndef H5
-			name: res.tempFilePath.split('/').pop() + '.mp4',
-			// #endif
-        }
-    ]
-}
-
-function formatMedia(res) {
-    return res.tempFiles.map((item) => ({
-        ...pickExclude(item, ['fileType', 'thumbTempFilePath', 'tempFilePath']),
-        type: res.type,
-        url: item.tempFilePath,
-        thumb: res.type === 'video' ? item.thumbTempFilePath : item.tempFilePath,
-		size: item.size,
-		// #ifdef H5
-		file: item
-		// #endif
-		// #ifndef H5
-		name: item.tempFilePath.split('/').pop() + (res.type === 'video' ? '.mp4': '.png'),
-		// #endif
-    }))
-}
-
-function formatFile(res) {
-    return res.tempFiles.map((item) => ({ 
-		...pickExclude(item, ['path']), 
-		url: item.path, 
-		size:item.size,
-		// #ifdef H5
-		name: item.name,
-		type: item.type,
-		file: item
-		// #endif 
-	}))
-}
-export function chooseFile({
-    accept,
-    multiple,
-    capture,
-    compressed,
-    maxDuration,
-    sizeType,
-    camera,
-    maxCount,
-    extension
-}) {
-    return new Promise((resolve, reject) => {
-        switch (accept) {
-        case 'image':
-            uni.chooseImage({
-                count: multiple ? Math.min(maxCount, 9) : 1,
-                sourceType: capture,
-                sizeType,
-                success: (res) => resolve(formatImage(res)),
-                fail: reject
-            })
-            break
-            // #ifdef MP-WEIXIN
-            // 只有微信小程序才支持chooseMedia接口
-        case 'media':
-            wx.chooseMedia({
-                count: multiple ? Math.min(maxCount, 9) : 1,
-                sourceType: capture,
-                maxDuration,
-                sizeType,
-                camera,
-                success: (res) => resolve(formatMedia(res)),
-                fail: reject
-            })
-            break
-            // #endif
-        case 'video':
-            uni.chooseVideo({
-                sourceType: capture,
-                compressed,
-                maxDuration,
-                camera,
-                success: (res) => resolve(formatVideo(res)),
-                fail: reject
-            })
-            break
-        // #ifdef MP-WEIXIN || H5
-        // 只有微信小程序才支持chooseMessageFile接口
-        case 'file':
-            // #ifdef MP-WEIXIN
-            wx.chooseMessageFile({
-                count: multiple ? maxCount : 1,
-                type: accept,
-                success: (res) => resolve(formatFile(res)),
-                fail: reject
-            })
-            // #endif
-            // #ifdef H5
-            // 需要hx2.9.9以上才支持uni.chooseFile
-            let params = {
-                count: multiple ? maxCount : 1,
-                type: accept,
-                success: (res) => resolve(formatFile(res)),
-                fail: reject
-            }
-            if (extension.length && extension.length > 0) {
-                params.extension = extension
-            }
-            uni.chooseFile(params)
-            // #endif
-            break
-		// #endif
-		default: 
-			// 此为保底选项,在accept不为上面任意一项的时候选取全部文件
-			// #ifdef MP-WEIXIN
-			wx.chooseMessageFile({
-			    count: multiple ? maxCount : 1,
-			    type: 'all',
-			    success: (res) => resolve(formatFile(res)),
-			    fail: reject
-			})
-			// #endif
-			// #ifdef H5
-			// 需要hx2.9.9以上才支持uni.chooseFile
-            let paramsFile = {
-                count: multiple ? maxCount : 1,
-				type: 'all',
-				success: (res) => resolve(formatFile(res)),
-				fail: reject
-            }
-            if (extension.length && extension.length > 0) {
-                paramsFile.extension = extension
-            }
-			uni.chooseFile(paramsFile)
-			// #endif
-        }
-    })
-}

+ 0 - 96
node_modules/uview-plus/package.json

@@ -1,96 +0,0 @@
-{
-	"id": "uview-plus",
-	"name": "uview-plus",
-	"displayName": "零云®uview-plus3.0重磅发布,全面的Vue3鸿蒙移动组件库。",
-	"version": "3.4.13",
-	"description": "零云®uview-plus已兼容vue3,全面的组件和便捷的工具会让您信手拈来,如鱼得水",
-	"keywords": [
-        "uview",
-        "uview-plus",
-        "ui",
-        "ui",
-        "uni-app",
-        "uni-app",
-        "ui",
-        "可视化设计"
-    ],
-    "main": "index.js",
-	"repository": "https://github.com/ijry/uview-plus",
-	"engines": {
-		"HBuilderX": "^3.1.0"
-	},
-    "dcloudext": {
-        "sale": {
-			"regular": {
-				"price": "0.00"
-			},
-			"sourcecode": {
-				"price": "0.00"
-			}
-		},
-		"contact": {
-			"qq": "598821125"
-		},
-		"declaration": {
-			"ads": "请注意本插件开发文档包含弹窗广告每日展示一次,源码纯净无广告。",
-			"data": "无",
-			"permissions": "无"
-		},
-        "npmurl": "https://www.npmjs.com/package/uview-plus",
-        "type": "component-vue"
-	},
-	"uni_modules": {
-		"dependencies": [],
-		"encrypt": [],
-		"platforms": {
-			"cloud": {
-				"tcb": "y",
-                "aliyun": "y",
-                "alipay": "n"
-			},
-			"client": {
-				"Vue": {
-					"vue2": "n",
-					"vue3": "y"
-				},
-				"App": {
-                    "app-vue": "y",
-                    "app-nvue": "y",
-                    "app-harmony": "u",
-                    "app-uvue": "u"
-                },
-				"H5-mobile": {
-					"Safari": "y",
-					"Android Browser": "y",
-					"微信浏览器(Android)": "y",
-					"QQ浏览器(Android)": "y"
-				},
-				"H5-pc": {
-					"Chrome": "y",
-					"IE": "y",
-					"Edge": "y",
-					"Firefox": "y",
-					"Safari": "y"
-				},
-				"小程序": {
-					"微信": "y",
-					"阿里": "y",
-					"百度": "y",
-					"字节跳动": "y",
-					"QQ": "y"
-				},
-				"快应用": {
-					"华为": "y",
-					"联盟": "y"
-				}
-			}
-		}
-	},
-	"dependencies": {
-		"clipboard": "^2.0.11",
-		"dayjs": "^1.11.3"
-	},
-	"publishConfig": {
-	    "registry": "https://registry.npmjs.org/"
-	}
-}