diff --git a/yudao-ui-app/.gitignore b/yudao-ui-app/.gitignore
new file mode 100644
index 000000000..5823d4712
--- /dev/null
+++ b/yudao-ui-app/.gitignore
@@ -0,0 +1,7 @@
+/unpackage/dist/*
+/unpackage/cache/*
+/unpackage/release/*
+/node_modules/*
+/.idea/*
+/.hbuilderx/
+/.vscode/
diff --git a/yudao-ui-app/App.vue b/yudao-ui-app/App.vue
new file mode 100644
index 000000000..35ba97f7f
--- /dev/null
+++ b/yudao-ui-app/App.vue
@@ -0,0 +1,22 @@
+
+
+
diff --git a/yudao-ui-app/app.scss b/yudao-ui-app/app.scss
new file mode 100644
index 000000000..954306e77
--- /dev/null
+++ b/yudao-ui-app/app.scss
@@ -0,0 +1,52 @@
+/* 页面公共scss */
+.container {
+ padding-top: var(--status-bar-height);//uni-app提供了状态栏高度的css变量--status-bar-height
+ background-color: $uni-bg-color;
+ box-sizing: border-box;
+ height: 100%;
+}
+
+/* 布局间距 */
+.m-0-r {
+ margin: 0rpx;
+}
+
+.mtb-0-r {
+ margin-top: 0rpx;
+ margin-bottom: 0rpx;
+}
+
+.no-mlt {
+ margin-left: 0rpx;
+ margin-right: 0rpx;
+}
+
+.mtb-30-r {
+ margin-top: 30rpx;
+ margin-bottom: 30rpx;
+}
+
+.mlr-30-r {
+ margin-left: 30rpx;
+ margin-right: 30rpx;
+}
+
+.mt-20-r {margin-top: 20rpx;}
+.mt-30-r {margin-top: 30rpx;}
+.mt-40-r {margin-top: 40rpx;}
+.mt-50-r {margin-top: 50rpx;}
+
+.mb-20-r {margin-bottom: 20rpx;}
+.mb-30-r {margin-bottom: 30rpx;}
+.mb-40-r {margin-bottom: 40rpx;}
+.mb-50-r {margin-bottom: 50rpx;}
+
+.ml-20-r {margin-left: 20rpx;}
+.ml-30-r {margin-left: 30rpx;}
+.ml-40-r {margin-left: 40rpx;}
+.ml-50-r {margin-left: 50rpx;}
+
+.mr-20-r {margin-right: 20rpx;}
+.mr-30-r {margin-right: 30rpx;}
+.mr-40-r {margin-right: 40rpx;}
+.mr-50-r {margin-right: 50rpx;}
diff --git a/yudao-ui-app/common/api.js b/yudao-ui-app/common/api.js
new file mode 100644
index 000000000..d090e2bb5
--- /dev/null
+++ b/yudao-ui-app/common/api.js
@@ -0,0 +1,15 @@
+const { http } = uni.$u
+
+/* login */
+//使用手机 + 密码登录
+export const passwordLogin = params => http.post('/app-api/member/user/login', params)
+//发送手机验证码
+export const sendSmsCode = params => http.post('/app-api/member/send-sms-code', params)
+//使用手机 + 验证码登录
+export const smsLogin = params => http.post('/app-api/member/sms-login', params)
+
+/* index */
+// 获取滚动图数据
+export const getBannerData = params => http.get('/app-api/index', params)
+// 获取滚动通知数据
+export const getNoticeData = params => http.get('/app-api/notice', params)
diff --git a/yudao-ui-app/common/config.js b/yudao-ui-app/common/config.js
new file mode 100644
index 000000000..ec3682f18
--- /dev/null
+++ b/yudao-ui-app/common/config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ baseUrl: 'http://192.168.3.199:8086'
+}
diff --git a/yudao-ui-app/common/mixin.js b/yudao-ui-app/common/mixin.js
new file mode 100644
index 000000000..b6a4eeee3
--- /dev/null
+++ b/yudao-ui-app/common/mixin.js
@@ -0,0 +1,7 @@
+export default {
+ data() {
+ return {
+
+ }
+ }
+}
diff --git a/yudao-ui-app/common/props.js b/yudao-ui-app/common/props.js
new file mode 100644
index 000000000..30f4924f4
--- /dev/null
+++ b/yudao-ui-app/common/props.js
@@ -0,0 +1,2 @@
+uni.$u.props.gap.bgColor = '#ffffff'
+uni.$u.props.gap.height = '10'
diff --git a/yudao-ui-app/index.html b/yudao-ui-app/index.html
new file mode 100644
index 000000000..03e5fc6e1
--- /dev/null
+++ b/yudao-ui-app/index.html
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/yudao-ui-app/main.js b/yudao-ui-app/main.js
new file mode 100644
index 000000000..7f51faee1
--- /dev/null
+++ b/yudao-ui-app/main.js
@@ -0,0 +1,24 @@
+import Vue from 'vue'
+import App from './App'
+
+// vuex
+import store from './store'
+
+Vue.config.productionTip = false
+Vue.prototype.$store = store
+
+// 引入全局uView
+import uView from '@/uni_modules/uview-ui'
+
+App.mpType = 'app'
+Vue.use(uView)
+
+const app = new Vue({
+ store,
+ ...App
+})
+
+// 引入请求封装
+require('./util/request/index')(app)
+
+app.$mount()
diff --git a/yudao-ui-app/manifest.json b/yudao-ui-app/manifest.json
new file mode 100644
index 000000000..7cce06e5f
--- /dev/null
+++ b/yudao-ui-app/manifest.json
@@ -0,0 +1,72 @@
+{
+ "name" : "yudao-ui-app",
+ "appid" : "__UNI__CA099E3",
+ "description" : "yudao-ui-app for ruoyi-vue-pro",
+ "versionName" : "1.0.0",
+ "versionCode" : "100",
+ "transformPx" : false,
+ /* 5+App特有相关 */
+ "app-plus" : {
+ "usingComponents" : true,
+ "nvueStyleCompiler" : "uni-app",
+ "compilerVersion" : 3,
+ "splashscreen" : {
+ "alwaysShowBeforeRender" : true,
+ "waiting" : true,
+ "autoclose" : true,
+ "delay" : 0
+ },
+ /* 模块配置 */
+ "modules" : {},
+ /* 应用发布信息 */
+ "distribute" : {
+ /* android打包配置 */
+ "android" : {
+ "permissions" : [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ]
+ },
+ /* ios打包配置 */
+ "ios" : {},
+ /* SDK配置 */
+ "sdkConfigs" : {}
+ }
+ },
+ /* 快应用特有相关 */
+ "quickapp" : {},
+ /* 小程序特有相关 */
+ "mp-weixin" : {
+ "appid" : "",
+ "setting" : {
+ "urlCheck" : false
+ },
+ "usingComponents" : true
+ },
+ "mp-alipay" : {
+ "usingComponents" : true
+ },
+ "mp-baidu" : {
+ "usingComponents" : true
+ },
+ "mp-toutiao" : {
+ "usingComponents" : true
+ },
+ "uniStatistics" : {
+ "enable" : false
+ },
+ "vueVersion" : "2"
+}
diff --git a/yudao-ui-app/pages.json b/yudao-ui-app/pages.json
new file mode 100644
index 000000000..6ff317445
--- /dev/null
+++ b/yudao-ui-app/pages.json
@@ -0,0 +1,89 @@
+{
+ "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+ {
+ "path": "pages/index/index",
+ "style": {
+ "navigationBarTitleText": "首页"
+ }
+ },
+ {
+ "path": "pages/category/category",
+ "style": {
+ "navigationBarTitleText": "分类"
+ }
+ },
+ {
+ "path": "pages/cart/cart",
+ "style": {
+ "navigationBarTitleText": "购物车"
+ }
+ },
+ {
+ "path": "pages/user/user",
+ "style": {
+ "navigationBarTitleText": "我的"
+ }
+ },
+ {
+ "path": "pages/login/login",
+ "style": {
+ "navigationBarTitleText": "账号登录"
+ }
+ },
+ {
+ "path": "pages/register/register",
+ "style": {
+ "navigationBarTitleText": "注册账号"
+ }
+ },
+ {
+ "path": "pages/forgot/forgot",
+ "style": {
+ "navigationBarTitleText": "忘记密码"
+ }
+ },
+ {
+ "path": "pages/profile/profile",
+ "style": {
+ "navigationBarTitleText": "个人资料"
+ }
+ }
+ ],
+ "tabBar": {
+ "selectedColor": "#333333",
+ "color": "#bfbfbf",
+ "list": [
+ {
+ "pagePath": "pages/index/index",
+ "text": "首页",
+ "iconPath": "/static/images/tabbar/index.png",
+ "selectedIconPath": "/static/images/tabbar/index-active.png"
+ },
+ {
+ "pagePath": "pages/category/category",
+ "text": "分类",
+ "iconPath": "/static/images/tabbar/category.png",
+ "selectedIconPath": "/static/images/tabbar/category-active.png"
+ },
+ {
+ "pagePath": "pages/cart/cart",
+ "text": "购物车",
+ "iconPath": "/static/images/tabbar/cart.png",
+ "selectedIconPath": "/static/images/tabbar/cart-active.png"
+ },
+ {
+ "pagePath": "pages/user/user",
+ "text": "我的",
+ "iconPath": "/static/images/tabbar/user.png",
+ "selectedIconPath": "/static/images/tabbar/user-active.png"
+ }
+ ]
+ },
+ "globalStyle": {
+ "navigationStyle": "custom",//取消默认导航栏
+ "navigationBarTextStyle": "white",
+ "navigationBarTitleText": "yudao-ui-app",
+ "navigationBarBackgroundColor": "#F8F8F8",
+ "backgroundColor": "#FFFFFF"
+ }
+}
diff --git a/yudao-ui-app/pages/cart/cart.vue b/yudao-ui-app/pages/cart/cart.vue
new file mode 100644
index 000000000..793da35cc
--- /dev/null
+++ b/yudao-ui-app/pages/cart/cart.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
diff --git a/yudao-ui-app/pages/category/category.vue b/yudao-ui-app/pages/category/category.vue
new file mode 100644
index 000000000..793da35cc
--- /dev/null
+++ b/yudao-ui-app/pages/category/category.vue
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
diff --git a/yudao-ui-app/pages/forgot/forgot.vue b/yudao-ui-app/pages/forgot/forgot.vue
new file mode 100644
index 000000000..d8c415440
--- /dev/null
+++ b/yudao-ui-app/pages/forgot/forgot.vue
@@ -0,0 +1,182 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/yudao-ui-app/pages/index/index.vue b/yudao-ui-app/pages/index/index.vue
new file mode 100644
index 000000000..240603e00
--- /dev/null
+++ b/yudao-ui-app/pages/index/index.vue
@@ -0,0 +1,325 @@
+
+
+
+
+
+
+
+
+
+
+ current = e.current" :autoplay="true" @click="handleSwiperClick">
+
+
+
+
+
+
+
+
+
+
+ {{item.title}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/yudao-ui-app/pages/login/login.vue b/yudao-ui-app/pages/login/login.vue
new file mode 100644
index 000000000..ddb54e1fa
--- /dev/null
+++ b/yudao-ui-app/pages/login/login.vue
@@ -0,0 +1,225 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/yudao-ui-app/pages/profile/profile.vue b/yudao-ui-app/pages/profile/profile.vue
new file mode 100644
index 000000000..f19c84d9e
--- /dev/null
+++ b/yudao-ui-app/pages/profile/profile.vue
@@ -0,0 +1,24 @@
+
+
+个人资料
+
+
+
+
+
+
diff --git a/yudao-ui-app/pages/register/register.vue b/yudao-ui-app/pages/register/register.vue
new file mode 100644
index 000000000..b82e4f8fc
--- /dev/null
+++ b/yudao-ui-app/pages/register/register.vue
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/yudao-ui-app/pages/user/user.vue b/yudao-ui-app/pages/user/user.vue
new file mode 100644
index 000000000..7c070348c
--- /dev/null
+++ b/yudao-ui-app/pages/user/user.vue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item.title}}
+
+
+
+
+
+
+
+
+ {{item.value}}
+ {{item.title}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/yudao-ui-app/static/images/tabbar/cart-active.png b/yudao-ui-app/static/images/tabbar/cart-active.png
new file mode 100644
index 000000000..5e9aac700
Binary files /dev/null and b/yudao-ui-app/static/images/tabbar/cart-active.png differ
diff --git a/yudao-ui-app/static/images/tabbar/cart.png b/yudao-ui-app/static/images/tabbar/cart.png
new file mode 100644
index 000000000..7af4e0f01
Binary files /dev/null and b/yudao-ui-app/static/images/tabbar/cart.png differ
diff --git a/yudao-ui-app/static/images/tabbar/category-active.png b/yudao-ui-app/static/images/tabbar/category-active.png
new file mode 100644
index 000000000..d9bce99f5
Binary files /dev/null and b/yudao-ui-app/static/images/tabbar/category-active.png differ
diff --git a/yudao-ui-app/static/images/tabbar/category.png b/yudao-ui-app/static/images/tabbar/category.png
new file mode 100644
index 000000000..38a2eafcd
Binary files /dev/null and b/yudao-ui-app/static/images/tabbar/category.png differ
diff --git a/yudao-ui-app/static/images/tabbar/index-active.png b/yudao-ui-app/static/images/tabbar/index-active.png
new file mode 100644
index 000000000..c5c8352c4
Binary files /dev/null and b/yudao-ui-app/static/images/tabbar/index-active.png differ
diff --git a/yudao-ui-app/static/images/tabbar/index.png b/yudao-ui-app/static/images/tabbar/index.png
new file mode 100644
index 000000000..ff745e3d8
Binary files /dev/null and b/yudao-ui-app/static/images/tabbar/index.png differ
diff --git a/yudao-ui-app/static/images/tabbar/user-active.png b/yudao-ui-app/static/images/tabbar/user-active.png
new file mode 100644
index 000000000..9658357ea
Binary files /dev/null and b/yudao-ui-app/static/images/tabbar/user-active.png differ
diff --git a/yudao-ui-app/static/images/tabbar/user.png b/yudao-ui-app/static/images/tabbar/user.png
new file mode 100644
index 000000000..b5367d4cd
Binary files /dev/null and b/yudao-ui-app/static/images/tabbar/user.png differ
diff --git a/yudao-ui-app/store/index.js b/yudao-ui-app/store/index.js
new file mode 100644
index 000000000..f2d6d32d8
--- /dev/null
+++ b/yudao-ui-app/store/index.js
@@ -0,0 +1,26 @@
+import Vue from 'vue'
+import Vuex from 'vuex'
+
+Vue.use(Vuex) // vue的插件机制
+
+// Vuex.Store 构造器选项
+const store = new Vuex.Store({
+ // 为了不和页面或组件的data中的造成混淆,state中的变量前面建议加上$符号
+ state: {
+ // 用户信息
+ $userInfo: {
+ id: ''
+ }
+ },
+ mutations: {
+
+ },
+ actions: {
+
+ },
+ getters:{
+
+ }
+})
+
+export default store
diff --git a/yudao-ui-app/uni.scss b/yudao-ui-app/uni.scss
new file mode 100644
index 000000000..b54d6b3b2
--- /dev/null
+++ b/yudao-ui-app/uni.scss
@@ -0,0 +1,79 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+
+/* 引入uView主题样式 */
+@import '@/uni_modules/uview-ui/theme.scss';
+
+/* 颜色变量 */
+
+/* 行为相关颜色 */
+$uni-color-primary: #007aff;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+
+/* 文字基本颜色 */
+$uni-text-color:#333;//基本色
+$uni-text-color-inverse:#fff;//反色
+$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable:#c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color:#ffffff;
+$uni-bg-color-grey:#f8f8f8;
+$uni-bg-color-hover:#f1f1f1;//点击状态颜色
+$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color:#c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm:12px;
+$uni-font-size-base:14px;
+$uni-font-size-lg:16;
+
+/* 图片尺寸 */
+$uni-img-size-sm:20px;
+$uni-img-size-base:26px;
+$uni-img-size-lg:40px;
+
+/* Border Radius */
+$uni-border-radius-sm: 2px;
+$uni-border-radius-base: 3px;
+$uni-border-radius-lg: 6px;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 5px;
+$uni-spacing-row-base: 10px;
+$uni-spacing-row-lg: 15px;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 4px;
+$uni-spacing-col-base: 8px;
+$uni-spacing-col-lg: 12px;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2C405A; // 文章标题颜色
+$uni-font-size-title:20px;
+$uni-color-subtitle: #555555; // 二级标题颜色
+$uni-font-size-subtitle:26px;
+$uni-color-paragraph: #3F536E; // 文章段落颜色
+$uni-font-size-paragraph:15px;
diff --git a/yudao-ui-app/uni_modules/uview-ui/LICENSE b/yudao-ui-app/uni_modules/uview-ui/LICENSE
new file mode 100644
index 000000000..8e39eada8
--- /dev/null
+++ b/yudao-ui-app/uni_modules/uview-ui/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/yudao-ui-app/uni_modules/uview-ui/README.md b/yudao-ui-app/uni_modules/uview-ui/README.md
new file mode 100644
index 000000000..31bd594da
--- /dev/null
+++ b/yudao-ui-app/uni_modules/uview-ui/README.md
@@ -0,0 +1,104 @@
+
+
+
+uView
+多平台快速开发的UI框架
+
+## 说明
+
+uView UI,是[uni-app](https://uniapp.dcloud.io/)生态优秀的UI框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水
+
+## 特性
+
+- 兼容安卓,iOS,微信小程序,H5,QQ小程序,百度小程序,支付宝小程序,头条小程序
+- 60+精选组件,功能丰富,多端兼容,让您快速集成,开箱即用
+- 众多贴心的JS利器,让您飞镖在手,召之即来,百步穿杨
+- 众多的常用页面和布局,让您专注逻辑,事半功倍
+- 详尽的文档支持,现代化的演示效果
+- 按需引入,精简打包体积
+
+
+## 安装
+
+```bash
+# npm方式安装,插件市场导入无需执行此命令
+npm i uview-ui
+```
+
+## 快速上手
+
+1. `main.js`引入uView库
+```js
+// main.js
+import uView from 'uview-ui';
+Vue.use(uView);
+```
+
+2. `App.vue`引入基础样式(注意style标签需声明scss属性支持)
+```css
+/* App.vue */
+
+```
+
+3. `uni.scss`引入全局scss变量文件
+```css
+/* uni.scss */
+@import "uview-ui/theme.scss";
+```
+
+4. `pages.json`配置easycom规则(按需引入)
+
+```js
+// pages.json
+{
+ "easycom": {
+ // npm安装的方式不需要前面的"@/",下载安装的方式需要"@/"
+ // npm安装方式
+ "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
+ // 下载安装方式
+ // "^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
+ },
+ // 此为本身已有的内容
+ "pages": [
+ // ......
+ ]
+}
+```
+
+请通过[快速上手](https://www.uviewui.com/components/quickstart.html)了解更详细的内容
+
+## 使用方法
+配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。
+
+```html
+
+
+
+```
+
+请通过[快速上手](https://www.uviewui.com/components/quickstart.html)了解更详细的内容
+
+## 链接
+
+- [官方文档](https://www.uviewui.com/)
+- [更新日志](https://www.www.uviewui.com/components/changelog.html)
+- [升级指南](https://www.uviewui.com/components/changelog.html)
+- [关于我们](https://www.uviewui.com/cooperation/about.html)
+
+## 预览
+
+您可以通过**微信**扫码,查看最佳的演示效果。
+
+
+
+
+## 捐赠uView的研发
+
+uView文档和源码全部开源免费,如果您认为uView帮到了您的开发工作,您可以捐赠uView的研发工作,捐赠无门槛,哪怕是一杯可乐也好(相信这比打赏主播更有意义)。
+
+
+
+## 版权信息
+uView遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uView应用到您的产品中。
diff --git a/yudao-ui-app/uni_modules/uview-ui/changelog.md b/yudao-ui-app/uni_modules/uview-ui/changelog.md
new file mode 100644
index 000000000..7a54275a2
--- /dev/null
+++ b/yudao-ui-app/uni_modules/uview-ui/changelog.md
@@ -0,0 +1,318 @@
+## 2.0.30(2022-04-04)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. `u-rate`增加`readonly`属性
+2. `tabs`滑块支持设置背景图片
+3. 修复`u-subsection` `mode`为`subsection`时,滑块样式不正确的问题
+4. `u-code-input`添加光标效果动画
+5. 修复`popup`的`open`事件不触发
+6. 修复`u-flex-column`无效的问题
+7. 修复`u-datetime-picker`索引在特定场合异常问题
+8. 修复`u-datetime-picker`最小时间字符串模板错误问题
+9. `u-swiper`添加`m3u8`验证
+10. `u-swiper`修改判断image和video逻辑
+11. 修复`swiper`无法使用本地图片问题,增加`type`参数
+12. 修复`u-row-notice`格式错误问题
+13. 修复`u-switch`组件当`unit`为`rpx`时,`nodeStyle`消失的问题
+14. 修复`datetime-picker`组件`showToolbar`与`visibleItemCount`属性无效的问题
+15. 修复`upload`组件条件编译位置判断错误,导致`previewImage`属性设置为`false`时,整个组件都会被隐藏的问题
+16. 修复`u-checkbox-group`设置`shape`属性无效的问题
+17. 修复`u-upload`的`capture`传入字符串的时候不生效的问题
+18. 修复`u-action-sheet`组件,关闭事件逻辑错误的问题
+19. 修复`u-list`触顶事件的触发错误的问题
+20. 修复`u-text`只有手机号可拨打的问题
+21. 修复`u-textarea`不能换行的问题
+22. 其他修复
+## 2.0.29(2022-03-13)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复`u--text`组件设置`decoration`属性未生效的问题
+2. 修复`u-datetime-picker`使用`formatter`后返回值不正确
+3. 修复`u-datetime-picker` `intercept` 可能为undefined
+4. 修复已设置单位 uni..config.unit = 'rpx'时,线型指示器 `transform` 的位置翻倍,导致指示器超出宽度
+5. 修复mixin中bem方法生成的类名在支付宝和字节小程序中失效
+6. 修复默认值传值为空的时候,打开`u-datetime-picker`报错,不能选中第一列时间的bug
+7. 修复`u-datetime-picker`使用`formatter`后返回值不正确
+8. 修复`u-image`组件`loading`无效果的问题
+9. 修复`config.unit`属性设为`rpx`时,导航栏占用高度不足导致塌陷的问题
+10. 修复`u-datetime-picker`组件`itemHeight`无效问题
+11. 其他修复
+## 2.0.28(2022-02-22)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. search组件新增searchIconSize属性
+2. 兼容Safari/Webkit中传入时间格式如2022-02-17 12:00:56
+3. 修复text value.js 判断日期出format错误问题
+4. priceFormat格式化金额出现精度错误
+5. priceFormat在部分情况下出现精度损失问题
+6. 优化表单rules提示
+7. 修复avatar组件src为空时,展示状态不对
+8. 其他修复
+## 2.0.27(2022-01-28)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1.样式修复
+## 2.0.26(2022-01-28)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1.样式修复
+## 2.0.25(2022-01-27)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复text组件mode=price时,可能会导致精度错误的问题
+2. 添加$u.setConfig()方法,可设置uView内置的config, props, zIndex, color属性,详见:[修改uView内置配置方案](https://uviewui.com/components/setting.html#%E9%BB%98%E8%AE%A4%E5%8D%95%E4%BD%8D%E9%85%8D%E7%BD%AE)
+3. 优化form组件在errorType=toast时,如果输入错误页面会有抖动的问题
+4. 修复$u.addUnit()对配置默认单位可能无效的问题
+## 2.0.24(2022-01-25)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复swiper在current指定非0时缩放有误
+2. 修复u-icon添加stop属性的时候报错
+3. 优化遗留的通过正则判断rpx单位的问题
+4. 优化Layout布局 vue使用gutter时,会超出固定区域
+5. 优化search组件高度单位问题(rpx -> px)
+6. 修复u-image slot 加载和错误的图片失去了高度
+7. 修复u-index-list中footer插槽与header插槽存在性判断错误
+8. 修复部分机型下u-popup关闭时会闪烁
+9. 修复u-image在nvue-app下失去宽高
+10. 修复u-popup运行报错
+11. 修复u-tooltip报错
+12. 修复box-sizing在app下的警告
+13. 修复u-navbar在小程序中报运行时错误
+14. 其他修复
+## 2.0.23(2022-01-24)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复image组件在hx3.3.9的nvue下可能会显示异常的问题
+2. 修复col组件gutter参数带rpx单位处理不正确的问题
+3. 修复text组件单行时无法显示省略号的问题
+4. navbar添加titleStyle参数
+5. 升级到hx3.3.9可消除nvue下控制台样式警告的问题
+## 2.0.22(2022-01-19)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. $u.page()方法优化,避免在特殊场景可能报错的问题
+2. picker组件添加immediateChange参数
+3. 新增$u.pages()方法
+## 2.0.21(2022-01-19)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 优化:form组件在用户设置rules的时候提示用户model必传
+2. 优化遗留的通过正则判断rpx单位的问题
+3. 修复微信小程序环境中tabbar组件开启safeAreaInsetBottom属性后,placeholder高度填充不正确
+4. 修复swiper在current指定非0时缩放有误
+5. 修复u-icon添加stop属性的时候报错
+6. 修复upload组件在accept=all的时候没有作用
+7. 修复在text组件mode为phone时call属性无效的问题
+8. 处理u-form clearValidate方法
+9. 其他修复
+## 2.0.20(2022-01-14)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复calendar默认会选择一个日期,如果直接点确定的话,无法取到值的问题
+2. 修复Slider缺少disabled props 还有注释
+3. 修复u-notice-bar点击事件无法拿到index索引值的问题
+4. 修复u-collapse-item在vue文件下,app端自定义插槽不生效的问题
+5. 优化头像为空时显示默认头像
+6. 修复图片地址赋值后判断加载状态为完成问题
+7. 修复日历滚动到默认日期月份区域
+8. search组件暴露点击左边icon事件
+9. 修复u-form clearValidate方法不生效
+10. upload h5端增加返回文件参数(文件的name参数)
+11. 处理upload选择文件后url为blob类型无法预览的问题
+12. u-code-input 修复输入框没有往左移出一半屏幕
+13. 修复Upload上传 disabled为true时,控制台报hoverClass类型错误
+14. 临时处理ios app下grid点击坍塌问题
+15. 其他修复
+## 2.0.19(2021-12-29)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 优化微信小程序包体积可在微信中预览,请升级HbuilderX3.3.4,同时在“运行->运行到小程序模拟器”中勾选“运行时是否压缩代码”
+2. 优化微信小程序setData性能,处理某些方法如$u.route()无法在模板中使用的问题
+3. navbar添加autoBack参数
+4. 允许avatar组件的事件冒泡
+5. 修复cell组件报错问题
+6. 其他修复
+## 2.0.18(2021-12-28)
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复app端编译报错问题
+2. 重新处理微信小程序端setData过大的性能问题
+3. 修复边框问题
+4. 修复最大最小月份不大于0则没有数据出现的问题
+5. 修复SwipeAction微信小程序端无法上下滑动问题
+6. 修复input的placeholder在小程序端默认显示为true问题
+7. 修复divider组件click事件无效问题
+8. 修复u-code-input maxlength 属性值为 String 类型时显示异常
+9. 修复当 grid只有 1到2时 在小程序端algin设置无效的问题
+10. 处理form-item的label为top时,取消错误提示的左边距
+11. 其他修复
+## 2.0.17(2021-12-26)
+## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 解决HBuilderX3.3.3.20211225版本导致的样式问题
+2. calendar日历添加monthNum参数
+3. navbar添加center slot
+## 2.0.16(2021-12-25)
+## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 解决微信小程序setData性能问题
+2. 修复count-down组件change事件不触发问题
+## 2.0.15(2021-12-21)
+## uView正在参与开源中国的“年度最佳项目”评选,之前投过票的现在也可以投票,恳请同学们投一票,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复Cell单元格titleWidth无效
+2. 修复cheakbox组件ischecked不更新
+3. 修复keyboard是否显示"."按键默认值问题
+4. 修复number-keyboard是否显示键盘的"."符号问题
+5. 修复Input输入框 readonly无效
+6. 修复u-avatar 导致打包app、H5时候报错问题
+7. 修复Upload上传deletable无效
+8. 修复upload当设置maxSize时无效的问题
+9. 修复tabs lineWidth传入带单位的字符串的时候偏移量计算错误问题
+10. 修复rate组件在有padding的view内,显示的星星位置和可触摸区域不匹配,无法正常选中星星
+## 2.0.13(2021-12-14)
+## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复配置默认单位为rpx可能会导致自定义导航栏高度异常的问题
+## 2.0.12(2021-12-14)
+## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复tabs组件在vue环境下划线消失的问题
+2. 修复upload组件在安卓小程序无法选择视频的问题
+3. 添加uni.$u.config.unit配置,用于配置参数默认单位,详见:[默认单位配置](https://www.uviewui.com/components/setting.html#%E9%BB%98%E8%AE%A4%E5%8D%95%E4%BD%8D%E9%85%8D%E7%BD%AE)
+4. 修复textarea组件在没绑定v-model时,字符统计不生效问题
+5. 修复nvue下控制是否出现滚动条失效问题
+## 2.0.11(2021-12-13)
+## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. text组件align参数无效的问题
+2. subsection组件添加keyName参数
+3. upload组件无法判断[Object file]类型的问题
+4. 处理notify层级过低问题
+5. codeInput组件添加disabledDot参数
+6. 处理actionSheet组件round参数无效的问题
+7. calendar组件添加round参数用于控制圆角值
+8. 处理swipeAction组件在vue环境下默认被打开的问题
+9. button组件的throttleTime节流参数无效的问题
+10. 解决u-notify手动关闭方法close()无效的问题
+11. input组件readonly不生效问题
+12. tag组件type参数为info不生效问题
+## 2.0.10(2021-12-08)
+## [点击加群交流反馈:364463526](https://jq.qq.com/?_chanwv=1027&k=mCxS3TGY)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复button sendMessagePath属性不生效
+2. 修复DatetimePicker选择器title无效
+3. 修复u-toast设置loading=true不生效
+4. 修复u-text金额模式传0报错
+5. 修复u-toast组件的icon属性配置不生效
+6. button的icon在特殊场景下的颜色优化
+7. IndexList优化,增加#
+## 2.0.9(2021-12-01)
+## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 优化swiper的height支持100%值(仅vue有效),修复嵌入视频时click事件无法触发的问题
+2. 优化tabs组件对list值为空的判断,或者动态变化list时重新计算相关尺寸的问题
+3. 优化datetime-picker组件逻辑,让其后续打开的默认值为上一次的选中值,需要通过v-model绑定值才有效
+4. 修复upload内嵌在其他组件中,选择图片可能不会换行的问题
+## 2.0.8(2021-12-01)
+## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复toast的position参数无效问题
+2. 处理input在ios nvue上无法获得焦点的问题
+3. avatar-group组件添加extraValue参数,让剩余展示数量可手动控制
+4. tabs组件添加keyName参数用于配置从对象中读取的键名
+5. 处理text组件名字脱敏默认配置无效的问题
+6. 处理picker组件item文本太长换行问题
+## 2.0.7(2021-11-30)
+## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 修复radio和checkbox动态改变v-model无效的问题。
+2. 优化form规则validator在微信小程序用法
+3. 修复backtop组件mode参数在微信小程序无效的问题
+4. 处理Album的previewFullImage属性无效的问题
+5. 处理u-datetime-picker组件mode='time'在选择改变时间时,控制台报错的问题
+## 2.0.6(2021-11-27)
+## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. 处理tag组件在vue下边框无效的问题。
+2. 处理popup组件圆角参数可能无效的问题。
+3. 处理tabs组件lineColor参数可能无效的问题。
+4. propgress组件在值很小时,显示异常的问题。
+## 2.0.5(2021-11-25)
+## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. calendar在vue下显示异常问题。
+2. form组件labelPosition和errorType参数无效的问题
+3. input组件inputAlign无效的问题
+4. 其他一些修复
+## 2.0.4(2021-11-23)
+## [点击加群交流反馈:232041042](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+0. input组件缺失@confirm事件,以及subfix和prefix无效问题
+1. component.scss文件样式在vue下干扰全局布局问题
+2. 修复subsection在vue环境下表现异常的问题
+3. tag组件的bgColor等参数无效的问题
+4. upload组件不换行的问题
+5. 其他的一些修复处理
+## 2.0.3(2021-11-16)
+## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. uView2.0已实现全面兼容nvue
+2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升
+3. 目前uView2.0为公测阶段,相关细节可能会有变动
+4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html)
+5. 处理modal的confirm回调事件拼写错误问题
+6. 处理input组件@input事件参数错误问题
+7. 其他一些修复
+## 2.0.2(2021-11-16)
+## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. uView2.0已实现全面兼容nvue
+2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升
+3. 目前uView2.0为公测阶段,相关细节可能会有变动
+4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html)
+5. 修复input组件formatter参数缺失问题
+6. 优化loading-icon组件的scss写法问题,防止不兼容新版本scss
+## 2.0.0(2020-11-15)
+## [点击加群交流反馈:1129077272](https://jq.qq.com/?_wv=1027&k=KnbeceDU)
+
+# uView2.0重磅发布,利剑出鞘,一统江湖
+
+1. uView2.0已实现全面兼容nvue
+2. uView2.0对1.x进行了架构重构,细节和性能都有极大提升
+3. 目前uView2.0为公测阶段,相关细节可能会有变动
+4. 我们写了一份与1.x的对比指南,详见[对比1.x](https://www.uviewui.com/components/diff1.x.html)
+5. 修复input组件formatter参数缺失问题
+
+
diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u--form/u--form.vue b/yudao-ui-app/uni_modules/uview-ui/components/u--form/u--form.vue
new file mode 100644
index 000000000..fdfc212ae
--- /dev/null
+++ b/yudao-ui-app/uni_modules/uview-ui/components/u--form/u--form.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u--image/u--image.vue b/yudao-ui-app/uni_modules/uview-ui/components/u--image/u--image.vue
new file mode 100644
index 000000000..21b7ab196
--- /dev/null
+++ b/yudao-ui-app/uni_modules/uview-ui/components/u--image/u--image.vue
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u--input/u--input.vue b/yudao-ui-app/uni_modules/uview-ui/components/u--input/u--input.vue
new file mode 100644
index 000000000..2887e4cf9
--- /dev/null
+++ b/yudao-ui-app/uni_modules/uview-ui/components/u--input/u--input.vue
@@ -0,0 +1,72 @@
+
+ $emit('change', e)"
+ @input="e => $emit('input', e)"
+ @confirm="e => $emit('confirm', e)"
+ @clear="$emit('clear')"
+ @click="$emit('click')"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u--text-price/u--text-price.vue b/yudao-ui-app/uni_modules/uview-ui/components/u--text-price/u--text-price.vue
new file mode 100644
index 000000000..eb861ac72
--- /dev/null
+++ b/yudao-ui-app/uni_modules/uview-ui/components/u--text-price/u--text-price.vue
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u--text/u--text.vue b/yudao-ui-app/uni_modules/uview-ui/components/u--text/u--text.vue
new file mode 100644
index 000000000..44ee52a37
--- /dev/null
+++ b/yudao-ui-app/uni_modules/uview-ui/components/u--text/u--text.vue
@@ -0,0 +1,44 @@
+
+
+
+
+
diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u--textarea/u--textarea.vue b/yudao-ui-app/uni_modules/uview-ui/components/u--textarea/u--textarea.vue
new file mode 100644
index 000000000..9dbcfbb32
--- /dev/null
+++ b/yudao-ui-app/uni_modules/uview-ui/components/u--textarea/u--textarea.vue
@@ -0,0 +1,47 @@
+
+ $emit('focus')"
+ @blur="e => $emit('blur')"
+ @linechange="e => $emit('linechange', e)"
+ @confirm="e => $emit('confirm')"
+ @input="e => $emit('input', e)"
+ @keyboardheightchange="e => $emit('keyboardheightchange')"
+ >
+
+
+
diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-action-sheet/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-action-sheet/props.js
new file mode 100644
index 000000000..e96e04fd4
--- /dev/null
+++ b/yudao-ui-app/uni_modules/uview-ui/components/u-action-sheet/props.js
@@ -0,0 +1,54 @@
+export default {
+ props: {
+ // 操作菜单是否展示 (默认false)
+ show: {
+ type: Boolean,
+ default: uni.$u.props.actionSheet.show
+ },
+ // 标题
+ title: {
+ type: String,
+ default: uni.$u.props.actionSheet.title
+ },
+ // 选项上方的描述信息
+ description: {
+ type: String,
+ default: uni.$u.props.actionSheet.description
+ },
+ // 数据
+ actions: {
+ type: Array,
+ default: uni.$u.props.actionSheet.actions
+ },
+ // 取消按钮的文字,不为空时显示按钮
+ cancelText: {
+ type: String,
+ default: uni.$u.props.actionSheet.cancelText
+ },
+ // 点击某个菜单项时是否关闭弹窗
+ closeOnClickAction: {
+ type: Boolean,
+ default: uni.$u.props.actionSheet.closeOnClickAction
+ },
+ // 处理底部安全区(默认true)
+ safeAreaInsetBottom: {
+ type: Boolean,
+ default: uni.$u.props.actionSheet.safeAreaInsetBottom
+ },
+ // 小程序的打开方式
+ openType: {
+ type: String,
+ default: uni.$u.props.actionSheet.openType
+ },
+ // 点击遮罩是否允许关闭 (默认true)
+ closeOnClickOverlay: {
+ type: Boolean,
+ default: uni.$u.props.actionSheet.closeOnClickOverlay
+ },
+ // 圆角值
+ round: {
+ type: [Boolean, String, Number],
+ default: uni.$u.props.actionSheet.round
+ }
+ }
+}
diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue b/yudao-ui-app/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue
new file mode 100644
index 000000000..98a73d876
--- /dev/null
+++ b/yudao-ui-app/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue
@@ -0,0 +1,278 @@
+
+
+
+
+
+ {{description}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{cancelText}}
+
+
+
+
+
+
+
+
diff --git a/yudao-ui-app/uni_modules/uview-ui/components/u-album/props.js b/yudao-ui-app/uni_modules/uview-ui/components/u-album/props.js
new file mode 100644
index 000000000..75cdb37d5
--- /dev/null
+++ b/yudao-ui-app/uni_modules/uview-ui/components/u-album/props.js
@@ -0,0 +1,59 @@
+export default {
+ props: {
+ // 图片地址,Array|Array