diff --git a/im-uniapp/hybrid/html/rtc-private/index.html b/im-uniapp/hybrid/html/rtc-private/index.html
deleted file mode 100644
index 6733f82..0000000
--- a/im-uniapp/hybrid/html/rtc-private/index.html
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
- 视频通话
-
-
- 音视频通话为付费功能,有需要请联系作者...
-
-
\ No newline at end of file
diff --git a/im-uniapp/uni_modules/uview-plus/LICENSE b/im-uniapp/uni_modules/uview-plus/LICENSE
new file mode 100644
index 0000000..8e39ead
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 www.uviewui.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/im-uniapp/uni_modules/uview-plus/README.md b/im-uniapp/uni_modules/uview-plus/README.md
new file mode 100644
index 0000000..427a3ee
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/README.md
@@ -0,0 +1,64 @@
+
+
+
+uview-plus 3.0
+多平台快速开发的UI框架
+
+[](https://github.com/ijry/uview-plus)
+[](https://github.com/ijry/uview-plus)
+[](https://github.com/ijry/uview-plus/issues)
+[](https://gitee.com/jry/uview-plus/releases)
+[](https://en.wikipedia.org/wiki/MIT_License)
+
+## 说明
+
+uview-plus,是uni-app全面兼容vue3/nvue的uni-app生态框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水。uview-plus是基于uView2.x移植的支持vue3的版本,感谢uView。
+
+## [官方文档:https://uview-plus.jiangruyi.com](https://uview-plus.jiangruyi.com)
+
+
+## 预览
+
+您可以通过**微信**扫码,查看最佳的演示效果。
+
+
+
+
+## 链接
+
+- [官方文档](https://uview-plus.jiangruyi.com)
+- [更新日志](https://uview-plus.jiangruyi.com/components/changelog.html)
+- [升级指南](https://uview-plus.jiangruyi.com/components/changeGuide.html)
+- [关于我们](https://uview-plus.jiangruyi.com/cooperation/about.html)
+
+## 交流反馈
+
+欢迎加入我们的QQ群交流反馈:[点此跳转](https://uview-plus.jiangruyi.com/components/addQQGroup.html)
+
+## 关于PR
+
+> 我们非常乐意接受各位的优质PR,但在此之前我希望您了解uview-plus是一个需要兼容多个平台的(小程序、h5、ios app、android app)包括nvue页面、vue页面。
+> 所以希望在您修复bug并提交之前尽可能的去这些平台测试一下兼容性。最好能携带测试截图以方便审核。非常感谢!
+
+## 安装
+
+#### **uni-app插件市场链接** —— [https://ext.dcloud.net.cn/plugin?name=uview-plus](https://ext.dcloud.net.cn/plugin?name=uview-plus)
+
+请通过[官网安装文档](https://uview-plus.jiangruyi.com/components/install.html)了解更详细的内容
+
+## 快速上手
+
+请通过[快速上手](https://uview-plus.jiangruyi.com/components/quickstart.html)了解更详细的内容
+
+## 使用方法
+配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。
+
+```html
+
+
+
+```
+
+## 版权信息
+uview-plus遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uview-plus应用到您的产品中。
+
diff --git a/im-uniapp/uni_modules/uview-plus/changelog.md b/im-uniapp/uni_modules/uview-plus/changelog.md
new file mode 100644
index 0000000..1d40799
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/changelog.md
@@ -0,0 +1,242 @@
+## 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)初步发布
diff --git a/im-uniapp/uni_modules/uview-plus/components/u--form/u--form.vue b/im-uniapp/uni_modules/uview-plus/components/u--form/u--form.vue
new file mode 100644
index 0000000..78e9dc4
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u--form/u--form.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
diff --git a/im-uniapp/uni_modules/uview-plus/components/u--image/u--image.vue b/im-uniapp/uni_modules/uview-plus/components/u--image/u--image.vue
new file mode 100644
index 0000000..5916065
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u--image/u--image.vue
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/im-uniapp/uni_modules/uview-plus/components/u--input/u--input.vue b/im-uniapp/uni_modules/uview-plus/components/u--input/u--input.vue
new file mode 100644
index 0000000..2a8933f
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u--input/u--input.vue
@@ -0,0 +1,74 @@
+
+
+ :value="value"
+ @input="e => $emit('input', e)"
+
+
+ :modelValue="modelValue"
+ @update:modelValue="e => $emit('update:modelValue', e)"
+
+ :type="type"
+ :fixed="fixed"
+ :disabled="disabled"
+ :disabledColor="disabledColor"
+ :clearable="clearable"
+ :password="password"
+ :maxlength="maxlength"
+ :placeholder="placeholder"
+ :placeholderClass="placeholderClass"
+ :placeholderStyle="placeholderStyle"
+ :showWordLimit="showWordLimit"
+ :confirmType="confirmType"
+ :confirmHold="confirmHold"
+ :holdKeyboard="holdKeyboard"
+ :focus="focus"
+ :autoBlur="autoBlur"
+ :disableDefaultPadding="disableDefaultPadding"
+ :cursor="cursor"
+ :cursorSpacing="cursorSpacing"
+ :selectionStart="selectionStart"
+ :selectionEnd="selectionEnd"
+ :adjustPosition="adjustPosition"
+ :inputAlign="inputAlign"
+ :fontSize="fontSize"
+ :color="color"
+ :prefixIcon="prefixIcon"
+ :suffixIcon="suffixIcon"
+ :suffixIconStyle="suffixIconStyle"
+ :prefixIconStyle="prefixIconStyle"
+ :border="border"
+ :readonly="readonly"
+ :shape="shape"
+ :customStyle="customStyle"
+ :formatter="formatter"
+ :ignoreCompositionEvent="ignoreCompositionEvent"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/im-uniapp/uni_modules/uview-plus/components/u--text/u--text.vue b/im-uniapp/uni_modules/uview-plus/components/u--text/u--text.vue
new file mode 100644
index 0000000..9cdcf7b
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u--text/u--text.vue
@@ -0,0 +1,45 @@
+
+
+
+
+
diff --git a/im-uniapp/uni_modules/uview-plus/components/u--textarea/u--textarea.vue b/im-uniapp/uni_modules/uview-plus/components/u--textarea/u--textarea.vue
new file mode 100644
index 0000000..becd23d
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u--textarea/u--textarea.vue
@@ -0,0 +1,47 @@
+
+ $emit('input', e)"
+ @update:modelValue="e => $emit('update:modelValue', e)"
+ >
+
+
+
diff --git a/im-uniapp/uni_modules/uview-plus/components/u-action-sheet/props.js b/im-uniapp/uni_modules/uview-plus/components/u-action-sheet/props.js
new file mode 100644
index 0000000..2f365f0
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u-action-sheet/props.js
@@ -0,0 +1,57 @@
+import { defineMixin } from '../../libs/vue'
+import defProps from '../../libs/config/props.js'
+
+export const props = defineMixin({
+ props: {
+ // 操作菜单是否展示 (默认false)
+ show: {
+ type: Boolean,
+ default: () => defProps.actionSheet.show
+ },
+ // 标题
+ title: {
+ type: String,
+ default: () => defProps.actionSheet.title
+ },
+ // 选项上方的描述信息
+ description: {
+ type: String,
+ default: () => defProps.actionSheet.description
+ },
+ // 数据
+ actions: {
+ type: Array,
+ default: () => defProps.actionSheet.actions
+ },
+ // 取消按钮的文字,不为空时显示按钮
+ cancelText: {
+ type: String,
+ default: () => defProps.actionSheet.cancelText
+ },
+ // 点击某个菜单项时是否关闭弹窗
+ closeOnClickAction: {
+ type: Boolean,
+ default: () => defProps.actionSheet.closeOnClickAction
+ },
+ // 处理底部安全区(默认true)
+ safeAreaInsetBottom: {
+ type: Boolean,
+ default: () => defProps.actionSheet.safeAreaInsetBottom
+ },
+ // 小程序的打开方式
+ openType: {
+ type: String,
+ default: () => defProps.actionSheet.openType
+ },
+ // 点击遮罩是否允许关闭 (默认true)
+ closeOnClickOverlay: {
+ type: Boolean,
+ default: () => defProps.actionSheet.closeOnClickOverlay
+ },
+ // 圆角值
+ round: {
+ type: [Boolean, String, Number],
+ default: () => defProps.actionSheet.round
+ }
+ }
+})
diff --git a/im-uniapp/uni_modules/uview-plus/components/u-action-sheet/u-action-sheet.vue b/im-uniapp/uni_modules/uview-plus/components/u-action-sheet/u-action-sheet.vue
new file mode 100644
index 0000000..3c28340
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u-action-sheet/u-action-sheet.vue
@@ -0,0 +1,281 @@
+
+
+
+
+
+ {{description}}
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+ {{ item.subname }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{cancelText}}
+
+
+
+
+
+
+
+
diff --git a/im-uniapp/uni_modules/uview-plus/components/u-album/props.js b/im-uniapp/uni_modules/uview-plus/components/u-album/props.js
new file mode 100644
index 0000000..eb0f181
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u-album/props.js
@@ -0,0 +1,61 @@
+import { defineMixin } from '../../libs/vue'
+import defProps from '../../libs/config/props.js'
+export const props = defineMixin({
+ props: {
+ // 图片地址,Array|Array形式
+ urls: {
+ type: Array,
+ default: () => defProps.album.urls
+ },
+ // 指定从数组的对象元素中读取哪个属性作为图片地址
+ keyName: {
+ type: String,
+ default: () => defProps.album.keyName
+ },
+ // 单图时,图片长边的长度
+ singleSize: {
+ type: [String, Number],
+ default: () => defProps.album.singleSize
+ },
+ // 多图时,图片边长
+ multipleSize: {
+ type: [String, Number],
+ default: () => defProps.album.multipleSize
+ },
+ // 多图时,图片水平和垂直之间的间隔
+ space: {
+ type: [String, Number],
+ default: () => defProps.album.space
+ },
+ // 单图时,图片缩放裁剪的模式
+ singleMode: {
+ type: String,
+ default: () => defProps.album.singleMode
+ },
+ // 多图时,图片缩放裁剪的模式
+ multipleMode: {
+ type: String,
+ default: () => defProps.album.multipleMode
+ },
+ // 最多展示的图片数量,超出时最后一个位置将会显示剩余图片数量
+ maxCount: {
+ type: [String, Number],
+ default: () => defProps.album.maxCount
+ },
+ // 是否可以预览图片
+ previewFullImage: {
+ type: Boolean,
+ default: () => defProps.album.previewFullImage
+ },
+ // 每行展示图片数量,如设置,singleSize和multipleSize将会无效
+ rowCount: {
+ type: [String, Number],
+ default: () => defProps.album.rowCount
+ },
+ // 超出maxCount时是否显示查看更多的提示
+ showMore: {
+ type: Boolean,
+ default: () => defProps.album.showMore
+ }
+ }
+})
diff --git a/im-uniapp/uni_modules/uview-plus/components/u-album/u-album.vue b/im-uniapp/uni_modules/uview-plus/components/u-album/u-album.vue
new file mode 100644
index 0000000..4904019
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u-album/u-album.vue
@@ -0,0 +1,264 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/im-uniapp/uni_modules/uview-plus/components/u-alert/props.js b/im-uniapp/uni_modules/uview-plus/components/u-alert/props.js
new file mode 100644
index 0000000..9f150b5
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u-alert/props.js
@@ -0,0 +1,46 @@
+import { defineMixin } from '../../libs/vue'
+import defProps from '../../libs/config/props.js'
+export const props = defineMixin({
+ props: {
+ // 显示文字
+ title: {
+ type: String,
+ default: () => defProps.alert.title
+ },
+ // 主题,success/warning/info/error
+ type: {
+ type: String,
+ default: () => defProps.alert.type
+ },
+ // 辅助性文字
+ description: {
+ type: String,
+ default: () => defProps.alert.description
+ },
+ // 是否可关闭
+ closable: {
+ type: Boolean,
+ default: () => defProps.alert.closable
+ },
+ // 是否显示图标
+ showIcon: {
+ type: Boolean,
+ default: () => defProps.alert.showIcon
+ },
+ // 浅或深色调,light-浅色,dark-深色
+ effect: {
+ type: String,
+ default: () => defProps.alert.effect
+ },
+ // 文字是否居中
+ center: {
+ type: Boolean,
+ default: () => defProps.alert.center
+ },
+ // 字体大小
+ fontSize: {
+ type: [String, Number],
+ default: () => defProps.alert.fontSize
+ }
+ }
+})
diff --git a/im-uniapp/uni_modules/uview-plus/components/u-alert/u-alert.vue b/im-uniapp/uni_modules/uview-plus/components/u-alert/u-alert.vue
new file mode 100644
index 0000000..dea66b1
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u-alert/u-alert.vue
@@ -0,0 +1,249 @@
+
+
+
+
+
+
+
+ {{ title }}
+ {{ description }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/im-uniapp/uni_modules/uview-plus/components/u-avatar-group/props.js b/im-uniapp/uni_modules/uview-plus/components/u-avatar-group/props.js
new file mode 100644
index 0000000..96ed871
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u-avatar-group/props.js
@@ -0,0 +1,54 @@
+import { defineMixin } from '../../libs/vue'
+import defProps from '../../libs/config/props.js'
+export const props = defineMixin({
+ props: {
+ // 头像图片组
+ urls: {
+ type: Array,
+ default: () => defProps.avatarGroup.urls
+ },
+ // 最多展示的头像数量
+ maxCount: {
+ type: [String, Number],
+ default: () => defProps.avatarGroup.maxCount
+ },
+ // 头像形状
+ shape: {
+ type: String,
+ default: () => defProps.avatarGroup.shape
+ },
+ // 图片裁剪模式
+ mode: {
+ type: String,
+ default: () => defProps.avatarGroup.mode
+ },
+ // 超出maxCount时是否显示查看更多的提示
+ showMore: {
+ type: Boolean,
+ default: () => defProps.avatarGroup.showMore
+ },
+ // 头像大小
+ size: {
+ type: [String, Number],
+ default: () => defProps.avatarGroup.size
+ },
+ // 指定从数组的对象元素中读取哪个属性作为图片地址
+ keyName: {
+ type: String,
+ default: () => defProps.avatarGroup.keyName
+ },
+ // 头像之间的遮挡比例
+ gap: {
+ type: [String, Number],
+ validator(value) {
+ return value >= 0 && value <= 1
+ },
+ default: () => defProps.avatarGroup.gap
+ },
+ // 需额外显示的值
+ extraValue: {
+ type: [Number, String],
+ default: () => defProps.avatarGroup.extraValue
+ }
+ }
+})
diff --git a/im-uniapp/uni_modules/uview-plus/components/u-avatar-group/u-avatar-group.vue b/im-uniapp/uni_modules/uview-plus/components/u-avatar-group/u-avatar-group.vue
new file mode 100644
index 0000000..fdfeaad
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u-avatar-group/u-avatar-group.vue
@@ -0,0 +1,110 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/im-uniapp/uni_modules/uview-plus/components/u-avatar/props.js b/im-uniapp/uni_modules/uview-plus/components/u-avatar/props.js
new file mode 100644
index 0000000..8fa15ac
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u-avatar/props.js
@@ -0,0 +1,81 @@
+import { defineMixin } from '../../libs/vue'
+import defProps from '../../libs/config/props.js'
+import test from '../../libs/function/test';
+export const props = defineMixin({
+ props: {
+ // 头像图片路径(不能为相对路径)
+ src: {
+ type: String,
+ default: () => defProps.avatar.src
+ },
+ // 头像形状,circle-圆形,square-方形
+ shape: {
+ type: String,
+ default: () => defProps.avatar.shape
+ },
+ // 头像尺寸
+ size: {
+ type: [String, Number],
+ default: () => defProps.avatar.size
+ },
+ // 裁剪模式
+ mode: {
+ type: String,
+ default: () => defProps.avatar.mode
+ },
+ // 显示的文字
+ text: {
+ type: String,
+ default: () => defProps.avatar.text
+ },
+ // 背景色
+ bgColor: {
+ type: String,
+ default: () => defProps.avatar.bgColor
+ },
+ // 文字颜色
+ color: {
+ type: String,
+ default: () => defProps.avatar.color
+ },
+ // 文字大小
+ fontSize: {
+ type: [String, Number],
+ default: () => defProps.avatar.fontSize
+ },
+ // 显示的图标
+ icon: {
+ type: String,
+ default: () => defProps.avatar.icon
+ },
+ // 显示小程序头像,只对百度,微信,QQ小程序有效
+ mpAvatar: {
+ type: Boolean,
+ default: () => defProps.avatar.mpAvatar
+ },
+ // 是否使用随机背景色
+ randomBgColor: {
+ type: Boolean,
+ default: () => defProps.avatar.randomBgColor
+ },
+ // 加载失败的默认头像(组件有内置默认图片)
+ defaultUrl: {
+ type: String,
+ default: () => defProps.avatar.defaultUrl
+ },
+ // 如果配置了randomBgColor为true,且配置了此值,则从默认的背景色数组中取出对应索引的颜色值,取值0-19之间
+ colorIndex: {
+ type: [String, Number],
+ // 校验参数规则,索引在0-19之间
+ validator(n) {
+ return test.range(n, [0, 19]) || n === ''
+ },
+ default: () => defProps.avatar.colorIndex
+ },
+ // 组件标识符
+ name: {
+ type: String,
+ default: () => defProps.avatar.name
+ }
+ }
+})
diff --git a/im-uniapp/uni_modules/uview-plus/components/u-avatar/u-avatar.vue b/im-uniapp/uni_modules/uview-plus/components/u-avatar/u-avatar.vue
new file mode 100644
index 0000000..71c0b22
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u-avatar/u-avatar.vue
@@ -0,0 +1,180 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/im-uniapp/uni_modules/uview-plus/components/u-back-top/props.js b/im-uniapp/uni_modules/uview-plus/components/u-back-top/props.js
new file mode 100644
index 0000000..b714641
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u-back-top/props.js
@@ -0,0 +1,56 @@
+import { defineMixin } from '../../libs/vue'
+import defProps from '../../libs/config/props.js'
+export const props = defineMixin({
+ props: {
+ // 返回顶部的形状,circle-圆形,square-方形
+ mode: {
+ type: String,
+ default: () => defProps.backtop.mode
+ },
+ // 自定义图标
+ icon: {
+ type: String,
+ default: () => defProps.backtop.icon
+ },
+ // 提示文字
+ text: {
+ type: String,
+ default: () => defProps.backtop.text
+ },
+ // 返回顶部滚动时间
+ duration: {
+ type: [String, Number],
+ default: () => defProps.backtop.duration
+ },
+ // 滚动距离
+ scrollTop: {
+ type: [String, Number],
+ default: () => defProps.backtop.scrollTop
+ },
+ // 距离顶部多少距离显示,单位px
+ top: {
+ type: [String, Number],
+ default: () => defProps.backtop.top
+ },
+ // 返回顶部按钮到底部的距离,单位px
+ bottom: {
+ type: [String, Number],
+ default: () => defProps.backtop.bottom
+ },
+ // 返回顶部按钮到右边的距离,单位px
+ right: {
+ type: [String, Number],
+ default: () => defProps.backtop.right
+ },
+ // 层级
+ zIndex: {
+ type: [String, Number],
+ default: () => defProps.backtop.zIndex
+ },
+ // 图标的样式,对象形式
+ iconStyle: {
+ type: Object,
+ default: () => defProps.backtop.iconStyle
+ }
+ }
+})
diff --git a/im-uniapp/uni_modules/uview-plus/components/u-back-top/u-back-top.vue b/im-uniapp/uni_modules/uview-plus/components/u-back-top/u-back-top.vue
new file mode 100644
index 0000000..fcdb045
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u-back-top/u-back-top.vue
@@ -0,0 +1,133 @@
+
+
+
+
+ {{text}}
+
+
+
+
+
+
+
+
diff --git a/im-uniapp/uni_modules/uview-plus/components/u-badge/props.js b/im-uniapp/uni_modules/uview-plus/components/u-badge/props.js
new file mode 100644
index 0000000..5ed924b
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u-badge/props.js
@@ -0,0 +1,79 @@
+import { defineMixin } from '../../libs/vue'
+import defProps from '../../libs/config/props.js'
+export const props = defineMixin({
+ props: {
+ // 是否显示圆点
+ isDot: {
+ type: Boolean,
+ default: () => defProps.badge.isDot
+ },
+ // 显示的内容
+ value: {
+ type: [Number, String],
+ default: () => defProps.badge.value
+ },
+ // 显示的内容
+ modelValue: {
+ type: [Number, String],
+ default: () => defProps.badge.modelValue
+ },
+ // 是否显示
+ show: {
+ type: Boolean,
+ default: () => defProps.badge.show
+ },
+ // 最大值,超过最大值会显示 '{max}+'
+ max: {
+ type: [Number, String],
+ default: () => defProps.badge.max
+ },
+ // 主题类型,error|warning|success|primary
+ type: {
+ type: String,
+ default: () => defProps.badge.type
+ },
+ // 当数值为 0 时,是否展示 Badge
+ showZero: {
+ type: Boolean,
+ default: () => defProps.badge.showZero
+ },
+ // 背景颜色,优先级比type高,如设置,type参数会失效
+ bgColor: {
+ type: [String, null],
+ default: () => defProps.badge.bgColor
+ },
+ // 字体颜色
+ color: {
+ type: [String, null],
+ default: () => defProps.badge.color
+ },
+ // 徽标形状,circle-四角均为圆角,horn-左下角为直角
+ shape: {
+ type: String,
+ default: () => defProps.badge.shape
+ },
+ // 设置数字的显示方式,overflow|ellipsis|limit
+ // overflow会根据max字段判断,超出显示`${max}+`
+ // ellipsis会根据max判断,超出显示`${max}...`
+ // limit会依据1000作为判断条件,超出1000,显示`${value/1000}K`,比如2.2k、3.34w,最多保留2位小数
+ numberType: {
+ type: String,
+ default: () => defProps.badge.numberType
+ },
+ // 设置badge的位置偏移,格式为 [x, y],也即设置的为top和right的值,absolute为true时有效
+ offset: {
+ type: Array,
+ default: () => defProps.badge.offset
+ },
+ // 是否反转背景和字体颜色
+ inverted: {
+ type: Boolean,
+ default: () => defProps.badge.inverted
+ },
+ // 是否绝对定位
+ absolute: {
+ type: Boolean,
+ default: () => defProps.badge.absolute
+ }
+ }
+})
diff --git a/im-uniapp/uni_modules/uview-plus/components/u-badge/u-badge.vue b/im-uniapp/uni_modules/uview-plus/components/u-badge/u-badge.vue
new file mode 100644
index 0000000..ecc843f
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u-badge/u-badge.vue
@@ -0,0 +1,177 @@
+
+ {{ isDot ? '' :showValue }}
+
+
+
+
+
diff --git a/im-uniapp/uni_modules/uview-plus/components/u-button/nvue.scss b/im-uniapp/uni_modules/uview-plus/components/u-button/nvue.scss
new file mode 100644
index 0000000..490db7d
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u-button/nvue.scss
@@ -0,0 +1,46 @@
+$u-button-active-opacity:0.75 !default;
+$u-button-loading-text-margin-left:4px !default;
+$u-button-text-color: #FFFFFF !default;
+$u-button-text-plain-error-color:$u-error !default;
+$u-button-text-plain-warning-color:$u-warning !default;
+$u-button-text-plain-success-color:$u-success !default;
+$u-button-text-plain-info-color:$u-info !default;
+$u-button-text-plain-primary-color:$u-primary !default;
+.u-button {
+ &--active {
+ opacity: $u-button-active-opacity;
+ }
+
+ &--active--plain {
+ background-color: rgb(217, 217, 217);
+ }
+
+ &__loading-text {
+ margin-left:$u-button-loading-text-margin-left;
+ }
+
+ &__text,
+ &__loading-text {
+ color:$u-button-text-color;
+ }
+
+ &__text--plain--error {
+ color:$u-button-text-plain-error-color;
+ }
+
+ &__text--plain--warning {
+ color:$u-button-text-plain-warning-color;
+ }
+
+ &__text--plain--success{
+ color:$u-button-text-plain-success-color;
+ }
+
+ &__text--plain--info {
+ color:$u-button-text-plain-info-color;
+ }
+
+ &__text--plain--primary {
+ color:$u-button-text-plain-primary-color;
+ }
+}
\ No newline at end of file
diff --git a/im-uniapp/uni_modules/uview-plus/components/u-button/props.js b/im-uniapp/uni_modules/uview-plus/components/u-button/props.js
new file mode 100644
index 0000000..d01f0ab
--- /dev/null
+++ b/im-uniapp/uni_modules/uview-plus/components/u-button/props.js
@@ -0,0 +1,154 @@
+import { defineMixin } from '../../libs/vue'
+import defProps from '../../libs/config/props.js'
+export const props = defineMixin({
+ props: {
+ // 是否细边框
+ hairline: {
+ type: Boolean,
+ default: () => defProps.button.hairline
+ },
+ // 按钮的预置样式,info,primary,error,warning,success
+ type: {
+ type: String,
+ default: () => defProps.button.type
+ },
+ // 按钮尺寸,large,normal,small,mini
+ size: {
+ type: String,
+ default: () => defProps.button.size
+ },
+ // 按钮形状,circle(两边为半圆),square(带圆角)
+ shape: {
+ type: String,
+ default: () => defProps.button.shape
+ },
+ // 按钮是否镂空
+ plain: {
+ type: Boolean,
+ default: () => defProps.button.plain
+ },
+ // 是否禁止状态
+ disabled: {
+ type: Boolean,
+ default: () => defProps.button.disabled
+ },
+ // 是否加载中
+ loading: {
+ type: Boolean,
+ default: () => defProps.button.loading
+ },
+ // 加载中提示文字
+ loadingText: {
+ type: [String, Number],
+ default: () => defProps.button.loadingText
+ },
+ // 加载状态图标类型
+ loadingMode: {
+ type: String,
+ default: () => defProps.button.loadingMode
+ },
+ // 加载图标大小
+ loadingSize: {
+ type: [String, Number],
+ default: () => defProps.button.loadingSize
+ },
+ // 开放能力,具体请看uniapp稳定关于button组件部分说明
+ // https://uniapp.dcloud.io/component/button
+ openType: {
+ type: String,
+ default: () => defProps.button.openType
+ },
+ // 用于