commit b6df4bb62f5350459432e34477e08bd2a765bdbd
Author: renguanyu111 <80379958+renguanyu111@users.noreply.github.com>
Date: Mon Feb 14 13:21:29 2022 +0800
手机版查看详情
diff --git a/.hbuilderx/launch.json b/.hbuilderx/launch.json
new file mode 100644
index 0000000..07c1d5f
--- /dev/null
+++ b/.hbuilderx/launch.json
@@ -0,0 +1,16 @@
+{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/
+ // launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数
+ "version": "0.0",
+ "configurations": [{
+ "default" :
+ {
+ "launchtype" : "local"
+ },
+ "h5" :
+ {
+ "launchtype" : "local"
+ },
+ "type" : "uniCloud"
+ }
+ ]
+}
diff --git a/App.vue b/App.vue
new file mode 100644
index 0000000..cdbdd5b
--- /dev/null
+++ b/App.vue
@@ -0,0 +1,19 @@
+
+
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..1b98f13
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2021 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.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..f451fce
--- /dev/null
+++ b/README.md
@@ -0,0 +1,101 @@
+
+
+
+uView 2.0
+多平台快速开发的UI框架
+
+[](https://github.com/umicro/uView2.0)
+[](https://github.com/umicro/uView2.0)
+[](https://github.com/umicro/uView2.0/issues)
+[](https://uviewui.com)
+[](https://gitee.com/umicro/uView2.0/releases)
+[](https://en.wikipedia.org/wiki/MIT_License)
+
+## 一起推动uView发展
+
+uView正在参与开源中国的“年度最佳项目”评选,目前投票进入了最后一个阶段(之前投过票的现在也可以投票),
+我们不分昼夜的努力,恳请同学们能为我们投一票,uView来源于社区,也希望社区能一起推动它的发展,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583)
+
+## 说明
+
+uView UI,是[uni-app](https://uniapp.dcloud.io/)全面兼容nvue的uni-app生态框架,全面的组件和便捷的工具会让您信手拈来,如鱼得水
+
+## [官方文档:https://uviewui.com](https://uviewui.com)
+
+### 官方1群:1042987248(已满)
+### 官方2群:249718512(已满)
+### 官方3群:1129077272(已满)
+### 官方4群:1084514613(已满)
+### 官方5群:863820668(已满)
+### 官方6群:745721078(已满)
+### 官方7群:627867855(已满)
+### 官方8群:496409492(已满)
+### 官方9群:828504448(已满)
+### 官方10群:232041042(已满)
+### [点击加11群交流反馈:364463526](https://jq.qq.com/?_wv=1027&k=mCxS3TGY)
+
+## 特性
+
+- 全面兼容nvue,原生渲染,高性能
+- 兼容安卓,iOS,微信小程序,H5,QQ小程序,百度小程序,支付宝小程序,头条小程序
+- 60+精选组件,功能丰富,多端兼容,让您快速集成,开箱即用
+- 众多贴心的JS利器,让您飞镖在手,召之即来,百步穿杨
+- 众多的常用页面和布局,让您专注逻辑,事半功倍
+- 详尽的文档支持,现代化的演示效果
+- 按需引入,精简打包体积
+
+
+## 预览
+
+您可以通过**微信**扫码,查看最佳的演示效果。
+
+
+
+
+
+## 链接
+
+- [官方文档](https://www.uviewui.com/)
+- [更新日志](https://www.uviewui.com/components/changelog.html)
+- [升级指南](https://www.uviewui.com/components/changeGuide.html)
+- [关于我们](https://www.uviewui.com/cooperation/about.html)
+
+## 交流反馈
+
+欢迎加入我们的QQ群交流反馈:[点此跳转](https://www.uviewui.com/components/addQQGroup.html)
+
+## 关于PR
+
+> 我们非常乐意接受各位的优质PR,但在此之前我希望您了解uView2.0是一个需要兼容多个平台的(小程序、h5、ios app、android app)包括nvue页面、vue页面。
+> 所以希望在您修复bug并提交之前尽可能的去这些平台测试一下兼容性。最好能携带测试截图以方便审核。非常感谢!
+
+## 安装
+
+#### **下载地址** —— [https://ext.dcloud.net.cn/plugin?id=1593](https://ext.dcloud.net.cn/plugin?id=1593)
+
+## 快速上手
+
+请通过[官网安装文档](https://v2.uviewui.com/components/install.html)了解更详细的内容
+
+## 使用方法
+配置easycom规则后,自动按需引入,无需`import`组件,直接引用即可。
+
+```html
+
+
+
+```
+
+请通过[快速上手](https://v2.uviewui.com/components/quickstart.html)了解更详细的内容
+
+
+## 捐赠uView的研发
+
+uView文档内容和框架源码全部开源免费,如果您认为uView帮到了您的开发工作,您可以捐赠uView的研发工作,捐赠无门槛,哪怕是一杯可乐也好(相信这比打赏主播更有意义)。
+
+
+
+
+## 版权信息
+uView遵循[MIT](https://en.wikipedia.org/wiki/MIT_License)开源协议,意味着您无需支付任何费用,也无需授权,即可将uView应用到您的产品中。
+
diff --git a/common/api.js b/common/api.js
new file mode 100644
index 0000000..92fd182
--- /dev/null
+++ b/common/api.js
@@ -0,0 +1,3 @@
+const { http } = uni.$u
+// 获取菜单
+export const fetchMenu = (params, config = {}) => http.post('/ebapi/public_api/index', params, config)
diff --git a/common/config.js b/common/config.js
new file mode 100644
index 0000000..b17c3c9
--- /dev/null
+++ b/common/config.js
@@ -0,0 +1,3 @@
+module.exports = {
+ baseUrl: 'https://api.youzixy.com'
+}
diff --git a/common/demo.scss b/common/demo.scss
new file mode 100644
index 0000000..a885219
--- /dev/null
+++ b/common/demo.scss
@@ -0,0 +1,45 @@
+.u-block{
+ padding: 14px;
+ &__section{
+ margin-bottom:10px;
+ }
+ &__title {
+ margin-top:10px;
+ font-size: 15px;
+ color: $u-content-color;
+ margin-bottom:10px;
+ }
+ &__flex{
+ /* #ifndef APP-NVUE */
+ display: flex;
+ /* #endif */
+ }
+}
+
+// 使用了cell组件的icon图片样式
+.u-cell-icon {
+ width: 36rpx;
+ height: 36rpx;
+ margin-right: 8rpx;
+}
+
+.u-page {
+ padding: 15px 15px 40px 15px;
+}
+
+.u-demo-block {
+ flex: 1;
+ margin-bottom: 23px;
+
+ &__content {
+ @include flex(column);
+ }
+
+ &__title {
+ font-size: 14px;
+ color: rgb(143, 156, 162);
+ margin-bottom: 8px;
+ @include flex;
+ }
+}
+
diff --git a/common/mixin.js b/common/mixin.js
new file mode 100644
index 0000000..b6a4eee
--- /dev/null
+++ b/common/mixin.js
@@ -0,0 +1,7 @@
+export default {
+ data() {
+ return {
+
+ }
+ }
+}
diff --git a/common/props.js b/common/props.js
new file mode 100644
index 0000000..9c1ef07
--- /dev/null
+++ b/common/props.js
@@ -0,0 +1,2 @@
+uni.$u.props.gap.bgColor = '#f3f4f6'
+uni.$u.props.gap.height = '10'
diff --git a/components/page-nav/page-nav.vue b/components/page-nav/page-nav.vue
new file mode 100644
index 0000000..70ee75c
--- /dev/null
+++ b/components/page-nav/page-nav.vue
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+ uView {{version}}
+
+
+ 查看1.x演示
+
+
+ 多平台快速开发的UI框架
+
+
+ {{desc}}
+
+
+
+
+
+
diff --git a/main.js b/main.js
new file mode 100644
index 0000000..2f0640c
--- /dev/null
+++ b/main.js
@@ -0,0 +1,35 @@
+import Vue from 'vue'
+import App from './App'
+
+// vuex
+import store from './store'
+
+// 引入全局uView
+import uView from '@/uni_modules/uview-ui'
+
+import mixin from './common/mixin'
+
+Vue.prototype.$store = store
+
+Vue.config.productionTip = false
+
+App.mpType = 'app'
+Vue.use(uView)
+
+// #ifdef MP
+// 引入uView对小程序分享的mixin封装
+const mpShare = require('@/uni_modules/uview-ui/libs/mixin/mpShare.js')
+Vue.mixin(mpShare)
+// #endif
+
+Vue.mixin(mixin)
+
+const app = new Vue({
+ store,
+ ...App
+})
+
+// 引入请求封装
+require('./util/request/index')(app)
+
+app.$mount()
diff --git a/manifest.json b/manifest.json
new file mode 100644
index 0000000..f24953c
--- /dev/null
+++ b/manifest.json
@@ -0,0 +1,153 @@
+{
+ "name" : "auditDetails",
+ "appid" : "",
+ "description": "多平台快速开发的UI框架",
+ "versionName": "1.0.0",
+ "versionCode": 1,
+ "transformPx": false,
+ "app-plus": {
+ "optimization": {
+ "subPackages": true
+ },
+ "safearea": {
+ "bottom": {
+ "offset": "none"
+ }
+ },
+ "splashscreen": {
+ "alwaysShowBeforeRender": true,
+ "waiting": true,
+ "autoclose": true,
+ "delay": 0
+ },
+ "usingComponents": true,
+ "nvueCompiler": "uni-app",
+ "compilerVersion": 3,
+ "modules": {
+ "Webview-x5": {}
+ },
+ "distribute": {
+ "android": {
+ "permissions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "abiFilters": [
+ "armeabi-v7a",
+ "arm64-v8a"
+ ]
+ },
+ "ios": {
+ "idfa": false
+ },
+ "sdkConfigs": {
+ "ad": {}
+ },
+ "icons": {
+ "android": {
+ "hdpi": "unpackage/res/icons/72x72.png",
+ "xhdpi": "unpackage/res/icons/96x96.png",
+ "xxhdpi": "unpackage/res/icons/144x144.png",
+ "xxxhdpi": "unpackage/res/icons/192x192.png"
+ },
+ "ios": {
+ "appstore": "unpackage/res/icons/1024x1024.png",
+ "ipad": {
+ "app": "unpackage/res/icons/76x76.png",
+ "app@2x": "unpackage/res/icons/152x152.png",
+ "notification": "unpackage/res/icons/20x20.png",
+ "notification@2x": "unpackage/res/icons/40x40.png",
+ "proapp@2x": "unpackage/res/icons/167x167.png",
+ "settings": "unpackage/res/icons/29x29.png",
+ "settings@2x": "unpackage/res/icons/58x58.png",
+ "spotlight": "unpackage/res/icons/40x40.png",
+ "spotlight@2x": "unpackage/res/icons/80x80.png"
+ },
+ "iphone": {
+ "app@2x": "unpackage/res/icons/120x120.png",
+ "app@3x": "unpackage/res/icons/180x180.png",
+ "notification@2x": "unpackage/res/icons/40x40.png",
+ "notification@3x": "unpackage/res/icons/60x60.png",
+ "settings@2x": "unpackage/res/icons/58x58.png",
+ "settings@3x": "unpackage/res/icons/87x87.png",
+ "spotlight@2x": "unpackage/res/icons/80x80.png",
+ "spotlight@3x": "unpackage/res/icons/120x120.png"
+ }
+ }
+ }
+ }
+ },
+ "quickapp": {},
+ "mp-weixin": {
+ "appid": "",
+ "setting": {
+ "urlCheck": false,
+ "es6": false,
+ "minified": false,
+ "postcss": false
+ },
+ "optimization": {
+ "subPackages": true
+ },
+ "usingComponents": true
+ },
+ "mp-alipay": {
+ "usingComponents": true,
+ "component2": true
+ },
+ "mp-qq": {
+ "optimization": {
+ "subPackages": true
+ },
+ "appid": "15646153"
+ },
+ "mp-baidu": {
+ "usingComponents": true,
+ "appid": ""
+ },
+ "mp-toutiao": {
+ "usingComponents": true,
+ "appid": ""
+ },
+ "h5": {
+ "template": "template.h5.html",
+ "router": {
+ "mode": "history",
+ "base": ""
+ },
+ "optimization": {
+ "treeShaking": {
+ "enable": false
+ }
+ },
+ "title": "uView UI",
+ "sdkConfigs": {
+ "maps": {
+ "qqmap": {
+ "key": ""
+ }
+ }
+ },
+ "domain": ""
+ }
+}
\ No newline at end of file
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..a590a42
--- /dev/null
+++ b/package.json
@@ -0,0 +1,11 @@
+{
+ "id": "uview-ui",
+ "scripts": {
+ "test": "eslint . --fix"
+ },
+ "dependencies": {},
+ "devDependencies": {
+ "eslint": "^8.2.0",
+ "eslint-config-airbnb": "^19.0.0"
+ }
+}
diff --git a/pages.json b/pages.json
new file mode 100644
index 0000000..af6e76a
--- /dev/null
+++ b/pages.json
@@ -0,0 +1,432 @@
+{
+ // "condition": { //模式配置,仅开发期间生效
+ // "current": 0, //当前激活的模式(list 的索引项)
+ // "list": [{
+ // "name": "test", //模式名称
+ // "path": "pages/componentsA/test/test", //启动页面,必选
+ // "query": "" //启动参数,在页面的onLoad函数里面得到
+ // }]
+ // },
+ "pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages
+ {
+ "path": "pages/index/index"
+ },
+ {
+ "path": "pages/index/tabControl-tag"
+ }
+
+ ],
+ "subPackages": [{
+ "root": "pages/componentsA",
+ "pages": [
+ // 过渡动画
+ {
+ "path": "transition/transition",
+ "style": {
+ "navigationBarTitleText": "过渡动画"
+ }
+ },
+ {
+ "path": "test/test",
+ "style": {
+ "navigationBarTitleText": "测试"
+ }
+ },
+ {
+ "path": "icon/icon",
+ "style": {
+ "navigationBarTitleText": "图标"
+ }
+ },
+ {
+ "path": "cell/cell",
+ "style": {
+ "navigationBarTitleText": "单元格"
+ }
+ },
+ {
+ "path": "line/line",
+ "style": {
+ "navigationBarTitleText": "线条"
+ }
+ },
+ {
+ "path": "image/image",
+ "style": {
+ "navigationBarTitleText": "图片"
+ }
+ },
+ {
+ "path": "link/link",
+ "style": {
+ "navigationBarTitleText": "超链接"
+ }
+ },
+ {
+ "path": "button/button",
+ "style": {
+ "navigationBarTitleText": "按钮"
+ }
+ },
+ {
+ "path": "loading-icon/loading-icon",
+ "style": {
+ "navigationBarTitleText": "加载中图标"
+ }
+ },
+ {
+ "path": "overlay/overlay",
+ "style": {
+ "navigationBarTitleText": "遮罩层",
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "loading-page/loading-page",
+ "style": {
+ "navigationBarTitleText": "加载页",
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "popup/popup",
+ "style": {
+ "navigationBarTitleText": "弹窗",
+ "navigationStyle": "custom"
+ }
+ },
+ {
+ "path": "swipeAction/swipeAction",
+ "style": {
+ "navigationBarTitleText": "滑动单元格"
+ }
+ },
+ {
+ "path": "sticky/sticky",
+ "style": {
+ "navigationBarTitleText": "吸顶"
+ }
+ },
+ {
+ "path": "radio/radio",
+ "style": {
+ "navigationBarTitleText": "单选框"
+ }
+ },
+ {
+ "path": "checkbox/checkbox",
+ "style": {
+ "navigationBarTitleText": "复选框"
+ }
+ },
+ {
+ "path": "empty/empty",
+ "style": {
+ "navigationBarTitleText": "内容为空"
+ }
+ },
+ {
+ "path": "backtop/backtop",
+ "style": {
+ "navigationBarTitleText": "返回顶部"
+ }
+ },
+ {
+ "path": "divider/divider",
+ "style": {
+ "navigationBarTitleText": "分割线"
+ }
+ },
+ {
+ "path": "rate/rate",
+ "style": {
+ "navigationBarTitleText": "评分"
+ }
+ },
+ {
+ "path": "gap/gap",
+ "style": {
+ "navigationBarTitleText": "间隔槽"
+ }
+ },
+ {
+ "path": "grid/grid",
+ "style": {
+ "navigationBarTitleText": "宫格"
+ }
+ }
+ ]
+ }, {
+ "root": "pages/componentsB",
+ "pages": [{
+ "path": "dropdown/dropdown",
+ "style": {
+ "navigationBarTitleText": "下拉菜单"
+ }
+ }, {
+ "path": "actionSheet/actionSheet",
+ "style": {
+ "navigationBarTitleText": "上拉菜单",
+ "navigationStyle": "custom"
+ }
+ }, {
+ "path": "parse/parse",
+ "style": {
+ "navigationBarTitleText": "富文本解析器"
+ }
+ }, {
+ "path": "parse/jump",
+ "style": {
+ "navigationBarTitleText": "内部链接"
+ }
+ }, {
+ "path": "toast/toast",
+ "style": {
+ "navigationBarTitleText": "提示消息"
+ }
+ }, {
+ "path": "keyboard/keyboard",
+ "style": {
+ "navigationBarTitleText": "键盘",
+ "navigationStyle": "custom"
+ }
+ }, {
+ "path": "slider/slider",
+ "style": {
+ "navigationBarTitleText": "滑动选择器"
+ }
+ }, {
+ "path": "upload/upload",
+ "style": {
+ "navigationBarTitleText": "上传"
+ }
+ }, {
+ "path": "notify/notify",
+ "style": {
+ "navigationBarTitleText": "消息提示"
+ }
+ }, {
+ "path": "countDown/countDown",
+ "style": {
+ "navigationBarTitleText": "倒计时"
+ }
+ }, {
+ "path": "color/color",
+ "style": {
+ "navigationBarTitleText": "色彩"
+ }
+ }, {
+ "path": "numberBox/numberBox",
+ "style": {
+ "navigationBarTitleText": "步进器"
+ }
+ }, {
+ "path": "countTo/countTo",
+ "style": {
+ "navigationBarTitleText": "数字滚动"
+ }
+ }, {
+ "path": "search/search",
+ "style": {
+ "navigationBarTitleText": "搜索"
+ }
+ }, {
+ "path": "badge/badge",
+ "style": {
+ "navigationBarTitleText": "徽标数"
+ }
+ }, {
+ "path": "tag/tag",
+ "style": {
+ "navigationBarTitleText": "标签"
+ }
+ }, {
+ "path": "alert/alert",
+ "style": {
+ "navigationBarTitleText": "警告"
+ }
+ }, {
+ "path": "switch/switch",
+ "style": {
+ "navigationBarTitleText": "开关"
+ }
+ }, {
+ "path": "collapse/collapse",
+ "style": {
+ "navigationBarTitleText": "折叠面板"
+ }
+ }, {
+ "path": "code/code",
+ "style": {
+ "navigationBarTitleText": "验证码"
+ }
+ }, {
+ "path": "noticeBar/noticeBar",
+ "style": {
+ "navigationBarTitleText": "滚动通知"
+ }
+ }, {
+ "path": "progress/progress",
+ "style": {
+ "navigationBarTitleText": "进度条"
+ }
+ }, {
+ "path": "tabbar/tabbar",
+ "style": {
+ "navigationBarTitleText": "Tabbar"
+ }
+ }]
+ }, {
+ "root": "pages/componentsC",
+ "pages": [{
+ "path": "table/table",
+ "style": {
+ "navigationBarTitleText": "表格"
+ }
+ }, {
+ "path": "form/form",
+ "style": {
+ "navigationBarTitleText": "表单",
+ "navigationStyle": "custom"
+ }
+ }, {
+ "path": "textarea/textarea",
+ "style": {
+ "navigationBarTitleText": "文本域"
+ }
+ }, {
+ "path": "noNetwork/noNetwork",
+ "style": {
+ "navigationBarTitleText": "无网络提示"
+ }
+ }, {
+ "path": "loadmore/loadmore",
+ "style": {
+ "navigationBarTitleText": "加载更多"
+ }
+ }, {
+ "path": "text/text",
+ "style": {
+ "navigationBarTitleText": "文本"
+ }
+ }, {
+ "path": "steps/steps",
+ "style": {
+ "navigationBarTitleText": "步骤条"
+ }
+ }, {
+ "path": "navbar/navbar",
+ "style": {
+ "navigationBarTitleText": "导航栏",
+ "navigationStyle": "custom"
+ }
+ }, {
+ "path": "skeleton/skeleton",
+ "style": {
+ "navigationBarTitleText": "骨架屏"
+ }
+ }, {
+ "path": "input/input",
+ "style": {
+ "navigationBarTitleText": "输入框"
+ }
+ }, {
+ "path": "album/album",
+ "style": {
+ "navigationBarTitleText": "相册"
+ }
+ }, {
+ "path": "avatar/avatar",
+ "style": {
+ "navigationBarTitleText": "头像"
+ }
+ }, {
+ "path": "readMore/readMore",
+ "style": {
+ "navigationBarTitleText": "阅读更多"
+ }
+ }, {
+ "path": "layout/layout",
+ "style": {
+ "navigationBarTitleText": "布局"
+ }
+ }, {
+ "path": "indexList/indexList",
+ "style": {
+ "navigationBarTitleText": "索引列表"
+ }
+ }, {
+ "path": "tooltip/tooltip",
+ "style": {
+ "navigationBarTitleText": "长按提示"
+ }
+ }, {
+ "path": "tabs/tabs",
+ "style": {
+ "navigationBarTitleText": "标签"
+ }
+ }, {
+ "path": "list/list",
+ "style": {
+ "navigationBarTitleText": "列表"
+ }
+ }, {
+ "path": "swiper/swiper",
+ "style": {
+ "navigationBarTitleText": "轮播"
+ }
+ }, {
+ "path": "scrollList/scrollList",
+ "style": {
+ "navigationBarTitleText": "横向滚动列表"
+ }
+ }, {
+ "path": "codeInput/codeInput",
+ "style": {
+ "navigationBarTitleText": "验证码输入"
+ }
+ }, {
+ "path": "modal/modal",
+ "style": {
+ "navigationBarTitleText": "模态框",
+ "navigationStyle": "custom"
+ }
+ }, {
+ "path": "picker/picker",
+ "style": {
+ "navigationBarTitleText": "选择器",
+ "navigationStyle": "custom"
+ }
+ }, {
+ "path": "calendar/calendar",
+ "style": {
+ "navigationBarTitleText": "日历",
+ "navigationStyle": "custom"
+ }
+ }, {
+ "path": "datetimePicker/datetimePicker",
+ "style": {
+ "navigationBarTitleText": "时间选择",
+ "navigationStyle": "custom"
+ }
+ }, {
+ "path": "subsection/subsection",
+ "style": {
+ "navigationBarTitleText": "分段器"
+ }
+ }]
+ }],
+ "preloadRule": {
+ "pages/example/components": {
+ "network": "all",
+ "packages": ["pages/componentsA", "pages/componentsB"]
+ }
+ },
+ "globalStyle": {
+ "navigationStyle": "custom",
+ "navigationBarTextStyle": "black",
+ "navigationBarTitleText": "考核详情",
+ "navigationBarBackgroundColor": "#FFFFFF",
+ "backgroundColor": "#FFFFFF"
+ }
+}
diff --git a/pages/componentsA/backtop/backtop.nvue b/pages/componentsA/backtop/backtop.nvue
new file mode 100644
index 0000000..6410194
--- /dev/null
+++ b/pages/componentsA/backtop/backtop.nvue
@@ -0,0 +1,132 @@
+
+
+
+ 自定义backTop(滚动页面即可在右下角看到图标)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/button/button.nvue b/pages/componentsA/button/button.nvue
new file mode 100644
index 0000000..6916152
--- /dev/null
+++ b/pages/componentsA/button/button.nvue
@@ -0,0 +1,330 @@
+
+
+
+ 按钮类型
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 镂空按钮
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 细边按钮
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 禁用按钮
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 加载中
+
+
+
+
+
+
+
+
+
+
+ 按钮图标&按钮形状
+
+
+
+
+
+
+
+
+
+
+ 自定义颜色
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 自定义大小
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/cell/cell.nvue b/pages/componentsA/cell/cell.nvue
new file mode 100644
index 0000000..a1f2bb2
--- /dev/null
+++ b/pages/componentsA/cell/cell.nvue
@@ -0,0 +1,201 @@
+
+
+
+ 基础功能
+
+
+
+
+
+
+ 自定义图标/图片
+
+
+
+
+
+
+ 自定义大小
+
+
+
+
+
+
+ 显示右箭头
+
+
+
+
+
+
+
+ 跳转页面
+
+
+
+
+
+
+ 右侧内容垂直居中
+
+
+
+
+
+ 自定义插槽
+
+
+
+ 单元格
+
+
+
+
+
+ 99
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/checkbox/checkbox.nvue b/pages/componentsA/checkbox/checkbox.nvue
new file mode 100644
index 0000000..916d3d7
--- /dev/null
+++ b/pages/componentsA/checkbox/checkbox.nvue
@@ -0,0 +1,329 @@
+
+
+
+ 基本案例
+ 苹果、香蕉和橙子哪个最甜?
+
+
+
+
+
+
+
+
+
+
+ 自定义形状
+ 中国四大名著是?
+
+
+
+
+
+
+
+
+
+
+ 是否禁用
+ 下面什么东西不能吃?
+
+
+
+
+
+
+
+
+
+
+ 是否禁止点击提示语选中复选框
+ 北宋四大家是谁?
+
+
+
+
+
+
+
+
+
+
+ 自定义颜色
+ 哪个颜色最好看?
+
+
+
+
+
+
+
+
+
+
+ 横向排列形式
+ 什么东西不能飞?
+
+
+
+
+
+
+
+
+
+
+ 横向两端排列形式
+ 什么东西不能吃?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/divider/divider.nvue b/pages/componentsA/divider/divider.nvue
new file mode 100644
index 0000000..7a23112
--- /dev/null
+++ b/pages/componentsA/divider/divider.nvue
@@ -0,0 +1,82 @@
+
+
+
+ 基本案例
+
+
+
+
+
+ 是否虚线
+
+
+
+
+
+ 是否细线
+
+
+
+
+
+ 是否以点代替文字
+
+
+
+
+
+ 文本内容靠左
+
+
+
+
+
+ 文本内容靠右
+
+
+
+
+
+ 自定义文本颜色
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/empty/empty.nvue b/pages/componentsA/empty/empty.nvue
new file mode 100644
index 0000000..9871033
--- /dev/null
+++ b/pages/componentsA/empty/empty.nvue
@@ -0,0 +1,143 @@
+
+
+
+ 演示效果
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/gap/gap.nvue b/pages/componentsA/gap/gap.nvue
new file mode 100644
index 0000000..9c28ba1
--- /dev/null
+++ b/pages/componentsA/gap/gap.nvue
@@ -0,0 +1,42 @@
+
+
+
+ 基本案列
+
+
+
+
+
+ 自定义颜色
+
+
+
+
+
+ 自定义高度
+
+
+
+
+
+ 自定义上下边距
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/grid/grid.nvue b/pages/componentsA/grid/grid.nvue
new file mode 100644
index 0000000..2b9aaea
--- /dev/null
+++ b/pages/componentsA/grid/grid.nvue
@@ -0,0 +1,193 @@
+
+
+
+ 基本案例
+
+
+
+
+ {{baseListItem.title}}
+
+
+
+
+
+ 显示边框
+
+
+
+
+ {{listItem.title}}
+
+
+
+
+
+ 绑定点击事件&自定义列数
+
+
+
+
+ {{listItem.title}}
+
+
+
+
+
+ 可滑动
+
+
+
+
+
+
+ {{ '宫格' + (index + 1) }}
+
+
+
+
+
+
+
+ {{ '宫格' + (index + 1) }}
+
+
+
+
+
+
+
+ {{ "宫格" + (index + 1) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/icon/icon.nvue b/pages/componentsA/icon/icon.nvue
new file mode 100644
index 0000000..77f52b0
--- /dev/null
+++ b/pages/componentsA/icon/icon.nvue
@@ -0,0 +1,664 @@
+
+
+
+
+
+
+
+ {{item.name}}
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/image/image.nvue b/pages/componentsA/image/image.nvue
new file mode 100644
index 0000000..a6a9dae
--- /dev/null
+++ b/pages/componentsA/image/image.nvue
@@ -0,0 +1,76 @@
+
+
+
+ 基本案例
+
+
+
+
+
+
+
+ 自定义形状
+
+
+
+
+
+
+
+ 自定义圆角
+
+
+
+
+
+
+
+ 图片模式(widthFit)
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/line/line.nvue b/pages/componentsA/line/line.nvue
new file mode 100644
index 0000000..a6da0d1
--- /dev/null
+++ b/pages/componentsA/line/line.nvue
@@ -0,0 +1,74 @@
+
+
+
+ 基本案例
+
+
+
+
+
+ 自定义颜色
+
+
+
+
+
+ 自定义长度
+
+
+
+
+
+ 自定义方向
+
+
+
+
+
+ 是否显示1px粗线条
+
+
+
+
+
+ 线条与上下左右元素的间距
+
+
+
+
+
+ 是否虚线
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/link/link.nvue b/pages/componentsA/link/link.nvue
new file mode 100644
index 0000000..5079c5a
--- /dev/null
+++ b/pages/componentsA/link/link.nvue
@@ -0,0 +1,75 @@
+
+
+
+ 基本案例
+
+
+
+
+
+
+
+ 显示下划线
+
+
+
+
+
+
+
+ 自定义颜色
+
+
+
+
+
+
+
+ 自定义链接内容
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/loading-icon/loading-icon.nvue b/pages/componentsA/loading-icon/loading-icon.nvue
new file mode 100644
index 0000000..46a147c
--- /dev/null
+++ b/pages/componentsA/loading-icon/loading-icon.nvue
@@ -0,0 +1,79 @@
+
+
+
+ 基本案列
+
+
+
+
+
+
+
+ 半圆loading
+
+
+
+
+
+
+
+ 圆形loading
+
+
+
+
+
+
+
+ 自定义动画
+
+
+
+
+
+
+
+ 自定义颜色
+
+
+
+
+
+
+
+ 自定义文字
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/loading-page/loading-page.nvue b/pages/componentsA/loading-page/loading-page.nvue
new file mode 100644
index 0000000..0f45a19
--- /dev/null
+++ b/pages/componentsA/loading-page/loading-page.nvue
@@ -0,0 +1,130 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/overlay/overlay.nvue b/pages/componentsA/overlay/overlay.nvue
new file mode 100644
index 0000000..c0198b5
--- /dev/null
+++ b/pages/componentsA/overlay/overlay.nvue
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/popup/popup.nvue b/pages/componentsA/popup/popup.nvue
new file mode 100644
index 0000000..939c2bb
--- /dev/null
+++ b/pages/componentsA/popup/popup.nvue
@@ -0,0 +1,182 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/radio/radio.nvue b/pages/componentsA/radio/radio.nvue
new file mode 100644
index 0000000..12d4107
--- /dev/null
+++ b/pages/componentsA/radio/radio.nvue
@@ -0,0 +1,330 @@
+
+
+
+ 基本案例
+ 苹果、香蕉和橙子哪个最甜?
+
+
+
+
+
+
+
+
+
+
+ 自定义形状
+ 王者荣耀谁最帅?
+
+
+
+
+
+
+
+
+
+
+ 是否禁用
+ 苹果、香蕉和菠萝哪个最甜?
+
+
+
+
+
+
+
+
+
+
+ 纵向排列
+ 狙击枪用哪个倍镜最好?
+
+
+
+
+
+
+
+
+
+
+ 自定义颜色?
+ 你比较喜欢下面哪个颜色?
+
+
+
+
+
+
+
+
+
+
+ 横向排列形式?
+ 王者荣耀哪个英雄最美?
+
+
+
+
+
+
+
+
+
+
+ 横向两端排列形式?
+ 你觉得阿木木可爱吗?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/rate/rate.nvue b/pages/componentsA/rate/rate.nvue
new file mode 100644
index 0000000..bf009dc
--- /dev/null
+++ b/pages/componentsA/rate/rate.nvue
@@ -0,0 +1,138 @@
+
+
+
+ 基本案例
+
+
+
+
+
+
+
+ 自定义选中星星数量
+
+
+
+
+
+
+
+ 自定义星星大小
+
+
+
+
+
+
+
+ 是否禁用评分
+
+
+
+
+
+
+
+ 自定义选中星星颜色
+
+
+
+
+
+
+
+ 自定义未选中星星颜色
+
+
+
+
+
+
+
+ 禁止触摸选择
+
+
+
+
+
+
+
+ 允许触摸选择
+
+
+
+
+
+
+
+ 是否允许半星
+
+
+
+
+
+
+
+ 自定义选中的图标
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/sticky/sticky.nvue b/pages/componentsA/sticky/sticky.nvue
new file mode 100644
index 0000000..7ea368e
--- /dev/null
+++ b/pages/componentsA/sticky/sticky.nvue
@@ -0,0 +1,57 @@
+
+
+
+
+ 基础使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/swipeAction/swipeAction.nvue b/pages/componentsA/swipeAction/swipeAction.nvue
new file mode 100644
index 0000000..d5a797a
--- /dev/null
+++ b/pages/componentsA/swipeAction/swipeAction.nvue
@@ -0,0 +1,228 @@
+
+
+
+ 演示案例
+
+
+
+
+
+ 基础使用
+
+
+
+
+
+
+
+ 按钮组
+
+
+
+
+
+ 两个按钮并列
+
+
+
+
+
+
+
+ 带图标
+
+
+
+
+
+ 自定义图标
+
+
+
+
+
+
+
+ 组合使用
+
+
+
+
+
+ {{ item.text }}
+
+
+
+
+
+
+
+ 自定义按钮形状
+
+
+
+
+
+ 圆形按钮
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsA/test/test.vue b/pages/componentsA/test/test.vue
new file mode 100644
index 0000000..0a389cd
--- /dev/null
+++ b/pages/componentsA/test/test.vue
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/componentsA/transition/transition.nvue b/pages/componentsA/transition/transition.nvue
new file mode 100644
index 0000000..47e6207
--- /dev/null
+++ b/pages/componentsA/transition/transition.nvue
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/actionSheet/actionSheet.nvue b/pages/componentsB/actionSheet/actionSheet.nvue
new file mode 100644
index 0000000..8be730c
--- /dev/null
+++ b/pages/componentsB/actionSheet/actionSheet.nvue
@@ -0,0 +1,188 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 这是一段通过slot传入的内容,您可以在此自定义操作面板
+
+
+
+
+
+
+
diff --git a/pages/componentsB/alert/alert.nvue b/pages/componentsB/alert/alert.nvue
new file mode 100644
index 0000000..20a08d6
--- /dev/null
+++ b/pages/componentsB/alert/alert.nvue
@@ -0,0 +1,146 @@
+
+
+
+ 基础功能
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 深浅色
+
+
+
+
+
+
+
+
+
+
+ 显示图标
+
+
+
+
+
+
+
+
+
+
+ 可关闭
+
+
+
+
+
+
+
+
+
+
+ 带标题
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/badge/badge.nvue b/pages/componentsB/badge/badge.nvue
new file mode 100644
index 0000000..4e895e6
--- /dev/null
+++ b/pages/componentsB/badge/badge.nvue
@@ -0,0 +1,163 @@
+
+
+
+ 直角边形状
+
+
+
+
+
+
+
+ 徽标数显示方式
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 显示圆点
+
+
+
+
+
+
+
+
+ 自定义主题
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 反转色
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/code/code.nvue b/pages/componentsB/code/code.nvue
new file mode 100644
index 0000000..2800959
--- /dev/null
+++ b/pages/componentsB/code/code.nvue
@@ -0,0 +1,157 @@
+
+
+
+ 基础功能
+
+
+
+
+
+
+ 保持倒计时(开始后,左上角返退出此页面再进入,会发现倒计时还在继续)
+
+
+
+
+
+
+ 文本样式
+
+
+ {{tips2}}
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/collapse/collapse.nvue b/pages/componentsB/collapse/collapse.nvue
new file mode 100644
index 0000000..a8701d2
--- /dev/null
+++ b/pages/componentsB/collapse/collapse.nvue
@@ -0,0 +1,180 @@
+
+
+
+ 基础功能
+
+
+ 涵盖uniapp各个方面,给开发者方向指导和设计理念,让您茅塞顿开,一马平川
+
+
+ 众多组件覆盖开发过程的各个需求,组件功能丰富,多端兼容。让您快速集成,开箱即用
+
+
+ 众多的贴心小工具,是您开发过程中召之即来的利器,让您飞镖在手,百步穿杨
+
+
+
+
+ 展开和禁用
+
+
+ 涵盖uniapp各个方面,给开发者方向指导和设计理念,让您茅塞顿开,一马平川
+
+
+ 众多组件覆盖开发过程的各个需求,组件功能丰富,多端兼容。让您快速集成,开箱即用
+
+
+ 众多的贴心小工具,是您开发过程中召之即来的利器,让您飞镖在手,百步穿杨
+
+
+
+
+ 手风琴模式
+
+
+ 涵盖uniapp各个方面,给开发者方向指导和设计理念,让您茅塞顿开,一马平川
+
+
+ 众多组件覆盖开发过程的各个需求,组件功能丰富,多端兼容。让您快速集成,开箱即用
+
+
+ 众多的贴心小工具,是您开发过程中召之即来的利器,让您飞镖在手,百步穿杨
+
+
+
+
+ 移除下划线
+
+
+ 涵盖uniapp各个方面,给开发者方向指导和设计理念,让您茅塞顿开,一马平川
+
+
+ 众多组件覆盖开发过程的各个需求,组件功能丰富,多端兼容。让您快速集成,开箱即用
+
+
+ 众多的贴心小工具,是您开发过程中召之即来的利器,让您飞镖在手,百步穿杨
+
+
+
+
+
+
+ 自定义标题和内容
+
+
+ 文档指南
+ 涵盖uniapp各个方面,给开发者方向指导和设计理念,让您茅塞顿开,一马平川
+
+
+
+
+ 众多组件覆盖开发过程的各个需求,组件功能丰富,多端兼容。让您快速集成,开箱即用
+
+
+ 自定义内容
+ 众多的贴心小工具,是您开发过程中召之即来的利器,让您飞镖在手,百步穿杨
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/color/color.nvue b/pages/componentsB/color/color.nvue
new file mode 100644
index 0000000..d32811a
--- /dev/null
+++ b/pages/componentsB/color/color.nvue
@@ -0,0 +1,291 @@
+
+
+
+ 主色调
+
+
+ Primary
+ #3c9cff
+
+
+ Dark
+ #398ade
+
+
+ Disabled
+ #9acafc
+
+
+ Light
+ #ecf5ff
+
+
+
+
+ Error
+
+
+ Error
+ #f56c6c
+
+
+ Dark
+ #e45656
+
+
+ Disabled
+ #f7b2b2
+
+
+ Light
+ #fef0f0
+
+
+
+
+ Warning
+
+
+ Warning
+ #f9ae3d
+
+
+ Dark
+ #f1a532
+
+
+ Disabled
+ #f9d39b
+
+
+ Light
+ #fdf6ec
+
+
+
+
+ Info
+
+
+ Info
+ #909399
+
+
+ Dark
+ #767a82
+
+
+ Disabled
+ #c4c6c9
+
+
+ Light
+ #f4f4f5
+
+
+
+
+ Success
+
+
+ Success
+ #5ac725
+
+
+ Dark
+ #53c21d
+
+
+ Disabled
+ #a9e08f
+
+
+ Light
+ #f5fff0
+
+
+
+
+ 文字颜色
+
+
+ 主要文字
+ #303133
+
+
+ 常规文字
+ #606266
+
+
+ 次要文字
+ #909399
+
+
+ 占位文字
+ #c0c4cc
+
+
+
+
+ 边框颜色
+
+
+ 一级边框
+ #9a9998
+
+
+ 二级边框
+ #b4b3b1
+
+
+ 三级边框
+ #ceccca
+
+
+ 四级边框
+ #e7e6e4
+
+
+
+
+ 背景颜色
+
+
+ 背景颜色
+ #f3f4f6
+
+
+
+
+
+
+
diff --git a/pages/componentsB/countDown/countDown.nvue b/pages/componentsB/countDown/countDown.nvue
new file mode 100644
index 0000000..3bbf6c2
--- /dev/null
+++ b/pages/componentsB/countDown/countDown.nvue
@@ -0,0 +1,240 @@
+
+
+
+ 基础用法
+
+
+
+
+
+
+ 自定义格式
+
+
+
+ {{ timeData.days }} 天
+ {{ timeData.hours>10?timeData.hours:'0'+timeData.hours}} 时
+ {{ timeData.minutes }} 分
+ {{ timeData.seconds }} 秒
+
+
+
+
+
+ 毫秒级渲染
+
+
+
+
+
+
+ 自定义样式
+
+
+
+
+ {{ timeData.hours>10?timeData.hours:'0'+timeData.hours}}
+
+ :
+
+ {{ timeData.minutes }}
+
+ :
+
+ {{ timeData.seconds }}
+
+
+
+
+
+
+ 手动控制
+
+
+
+
+
+
+
+
+ 重置
+
+
+
+
+
+
+
+ 开始
+
+
+
+
+
+ 暂停
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/countTo/countTo.nvue b/pages/componentsB/countTo/countTo.nvue
new file mode 100644
index 0000000..e289bc9
--- /dev/null
+++ b/pages/componentsB/countTo/countTo.nvue
@@ -0,0 +1,176 @@
+
+
+
+ 基础功能
+
+
+
+
+
+
+
+ 倒计数
+
+
+
+
+
+
+
+ 显示小数位
+
+
+
+
+
+
+
+ 千分位分隔符
+
+
+
+
+
+
+
+ 自定义控制
+
+
+
+
+
+
+
+
+
+
+
+ 开始
+
+
+
+
+
+
+ 暂停
+
+
+
+
+
+
+ 继续
+
+
+
+
+
+
+
+
+ 自定义
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/dropdown/dropdown.nvue b/pages/componentsB/dropdown/dropdown.nvue
new file mode 100644
index 0000000..d0fbecf
--- /dev/null
+++ b/pages/componentsB/dropdown/dropdown.nvue
@@ -0,0 +1,31 @@
+
+
+
+ 基础功能
+
+
+
+
+ 123
+
+
+
+ 456
+
+
+ 789
+
+
+ abc
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/keyboard/keyboard.nvue b/pages/componentsB/keyboard/keyboard.nvue
new file mode 100644
index 0000000..7e3bb3f
--- /dev/null
+++ b/pages/componentsB/keyboard/keyboard.nvue
@@ -0,0 +1,131 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/noticeBar/noticeBar.nvue b/pages/componentsB/noticeBar/noticeBar.nvue
new file mode 100644
index 0000000..be9503c
--- /dev/null
+++ b/pages/componentsB/noticeBar/noticeBar.nvue
@@ -0,0 +1,102 @@
+
+
+
+ 基础功能
+
+
+
+
+
+ 可关闭
+
+
+
+
+
+ 自定义横向滚动速度
+
+
+
+
+
+ 可跳转(点击右箭头)
+
+
+
+
+
+ 横向步进滚动
+
+
+
+
+
+ 纵向滚动
+
+
+
+
+
+ 自定义样式
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/notify/notify.nvue b/pages/componentsB/notify/notify.nvue
new file mode 100644
index 0000000..2dd7318
--- /dev/null
+++ b/pages/componentsB/notify/notify.nvue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/numberBox/numberBox.nvue b/pages/componentsB/numberBox/numberBox.nvue
new file mode 100644
index 0000000..aed2cf5
--- /dev/null
+++ b/pages/componentsB/numberBox/numberBox.nvue
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{value11}}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/parse/content.js b/pages/componentsB/parse/content.js
new file mode 100644
index 0000000..e3898cf
--- /dev/null
+++ b/pages/componentsB/parse/content.js
@@ -0,0 +1,203 @@
+/**
+ * @fileoverview 用于测试的 html 内容
+ */
+module.exports = `富文本示例
+
+
+
+
+
+
+ 标题 1
+ 标题 2
+
+
+
+
+ 内容 1
+ 内容 2
+
+
+ 内容 3
+ 链接
+
+
+ 内容 5
+ 内容 6
+
+
+
+ 普通表格
+
+
+
+
+
+ 标题 1
+ 标题 2
+ 标题 3
+ 标题 4
+ 标题 5
+
+
+
+
+ 内容 1
+ 内容 2
+ 内容 3
+ 内容 4
+ 内容 5
+
+
+ 链接
+ 内容 7
+ 内容 8
+ 内容 9
+ 内容 10
+
+
+ 内容 11
+ 内容 12
+ 内容 13
+ 内容 14
+ 内容 15
+
+
+
+ 长表格,可以单独横向滚动
+
+
+
+
+
+ 标题 1
+ 标题 2
+ 标题 3
+
+
+
+
+ 内容 1
+ 内容 2
+
+
+ 内容 3
+ 内容 4
+
+
+ 内容 5
+
+
+ 内容 6
+ 内容 7
+ 链接
+
+
+
+ 含有合并单元格的表格
+
+
+
+
+ 这是第一条列表项
+ 这是第二条列表项
+ 这是第三条 链接
+
+
+ 这是第一条列表项
+ 这是第二条列表项
+ 这是第三条 链接
+
+
+ 这是第一条列表项
+ 这是第二条列表项
+ 这是第三条 链接
+
+
+ 第一级无序列表
+ 第一级无序列表
+
+ 第二级无序列表
+ 第二级无序列表
+
+
+
+
+
+
+
+
+
+
+ 拼( pin )
+ 音( yin )
+
+ 斜体
+ 粗体
+ 上标1
+ 下标2
+
+
+ 上划线
+ 中划线
+ 下划线
+
+
+ 大一号
+ 正常
+ 小一号
+
+ 大标题
+ 中标题
+ 小标题
+
+
+
+
+
+
+
+
+ 点击预览高清图
+
+
+
`
diff --git a/pages/componentsB/parse/jump.vue b/pages/componentsB/parse/jump.vue
new file mode 100644
index 0000000..4ff3e29
--- /dev/null
+++ b/pages/componentsB/parse/jump.vue
@@ -0,0 +1,12 @@
+
+
+ 跳转测试页面
+
+
+
+
+
+
diff --git a/pages/componentsB/parse/parse.nvue b/pages/componentsB/parse/parse.nvue
new file mode 100644
index 0000000..b7fd3f3
--- /dev/null
+++ b/pages/componentsB/parse/parse.nvue
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/progress/progress.nvue b/pages/componentsB/progress/progress.nvue
new file mode 100644
index 0000000..b0c90db
--- /dev/null
+++ b/pages/componentsB/progress/progress.nvue
@@ -0,0 +1,155 @@
+
+
+
+ 基础功能
+
+
+
+
+
+
+ 不显示百分比
+
+
+
+
+
+
+ 自定义高度
+
+
+
+
+
+
+ 自定义颜色
+
+
+
+
+
+
+ 自定义样式(不支持安卓环境的nvue)
+
+
+ {{percentage4}}%
+
+
+
+
+ 手动加减
+
+
+
+
+
+ 减少
+
+
+ 增加
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/search/search.nvue b/pages/componentsB/search/search.nvue
new file mode 100644
index 0000000..754a266
--- /dev/null
+++ b/pages/componentsB/search/search.nvue
@@ -0,0 +1,202 @@
+
+
+
+ 基础功能
+
+
+
+
+
+
+
+ 设置初始值
+
+
+
+
+
+
+
+ 搜索框形状
+
+
+
+
+
+
+
+
+
+
+
+
+ 右侧控件
+
+
+
+
+
+
+
+ 禁用输入框
+
+
+
+
+
+
+
+ 搜索框内容水平对齐
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 自定义
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/slider/slider.nvue b/pages/componentsB/slider/slider.nvue
new file mode 100644
index 0000000..65461d7
--- /dev/null
+++ b/pages/componentsB/slider/slider.nvue
@@ -0,0 +1,81 @@
+
+
+
+ 基本案例
+
+
+
+
+
+ 自定义范围(0—50)
+
+
+
+
+
+ 指定步长(每次步进5)
+
+
+
+
+
+ 自定义样式
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/switch/switch.nvue b/pages/componentsB/switch/switch.nvue
new file mode 100644
index 0000000..7feb9b9
--- /dev/null
+++ b/pages/componentsB/switch/switch.nvue
@@ -0,0 +1,177 @@
+
+
+
+ 基础功能
+
+
+
+
+
+
+
+
+
+
+ 加载中
+
+
+
+
+
+
+
+
+
+
+ 禁用状态
+
+
+
+
+
+
+
+
+
+
+ 自定义尺寸
+
+
+
+
+
+
+
+
+
+
+ 自定义颜色
+
+
+
+
+
+
+
+
+
+
+ 自定义样式
+
+
+
+
+
+
+
+
+
+
+ 异步控制
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/tabbar/tabbar.nvue b/pages/componentsB/tabbar/tabbar.nvue
new file mode 100644
index 0000000..5c8e536
--- /dev/null
+++ b/pages/componentsB/tabbar/tabbar.nvue
@@ -0,0 +1,274 @@
+
+
+
+ 基础功能
+
+
+
+
+
+
+
+
+ 显示徽标
+ value2 = name"
+ :fixed="false"
+ :safeAreaInsetBottom="false"
+ >
+
+
+
+
+
+
+
+ 匹配标签的名称
+ value3 = name"
+ :fixed="false"
+ :safeAreaInsetBottom="false"
+ >
+
+
+
+
+
+
+
+ 自定义图标/颜色
+ value4 = name"
+ :fixed="false"
+ :placeholder="false"
+ activeColor="#d81e06"
+ :safeAreaInsetBottom="false"
+ >
+
+
+
+
+
+
+
+
+
+
+ 拦截切换事件(点击第二个标签)
+
+
+
+
+
+
+
+
+
+ 去除上边框
+ value7 = name"
+ :fixed="false"
+ :safeAreaInsetBottom="false"
+ >
+
+
+
+
+
+
+
+ 固定在底部(固定在屏幕最下方)
+
+ value6 = name"
+ :fixed="true"
+ :placeholder="true"
+ :safeAreaInsetBottom="true"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/tag/tag.nvue b/pages/componentsB/tag/tag.nvue
new file mode 100644
index 0000000..a56cfb7
--- /dev/null
+++ b/pages/componentsB/tag/tag.nvue
@@ -0,0 +1,335 @@
+
+
+
+ 基础功能
+
+
+
+
+
+
+
+
+ 自定义主题
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 圆形标签
+
+
+
+
+
+
+
+
+
+
+
+
+ 镂空标签
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 镂空带背景色
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 自定义尺寸
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 可关闭标签
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 带图片和图标
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 单选标签
+
+
+
+
+
+
+
+
+ 多选标签
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/toast/toast.nvue b/pages/componentsB/toast/toast.nvue
new file mode 100644
index 0000000..409a02a
--- /dev/null
+++ b/pages/componentsB/toast/toast.nvue
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsB/upload/upload.nvue b/pages/componentsB/upload/upload.nvue
new file mode 100644
index 0000000..0c50d1c
--- /dev/null
+++ b/pages/componentsB/upload/upload.nvue
@@ -0,0 +1,180 @@
+
+
+
+ 基础用法
+
+
+
+
+
+
+
+ 上传视频
+
+
+
+
+
+
+
+ 文件预览
+
+
+
+
+
+
+
+ 隐藏上传按钮
+
+
+
+
+
+
+
+ 限制上传数量
+
+
+
+
+
+
+
+ 自定义上传样式
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/album/album.nvue b/pages/componentsC/album/album.nvue
new file mode 100644
index 0000000..3cc858b
--- /dev/null
+++ b/pages/componentsC/album/album.nvue
@@ -0,0 +1,218 @@
+
+
+
+ 基础使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 多图模式
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 图文对齐
+
+
+
+
+
+
+
+
+
+
+ albumWidth = width"
+ multipleSize="68"
+ >
+
+
+
+
+
+ 更改裁剪模式
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 更改图片大小
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/avatar/avatar.nvue b/pages/componentsC/avatar/avatar.nvue
new file mode 100644
index 0000000..67edc8b
--- /dev/null
+++ b/pages/componentsC/avatar/avatar.nvue
@@ -0,0 +1,182 @@
+
+
+
+ 基础演示
+
+
+
+
+
+ 头像形状
+
+
+
+
+
+
+
+
+
+
+ 头像尺寸
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 图标头像
+
+
+
+
+
+
+
+
+
+
+ 文字头像(自动背景色)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 图片加载失败(显示默认头像)
+
+
+
+
+
+
+ 小程序开放能力
+
+
+
+
+
+
+
+
+ 头像组
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/calendar/calendar.nvue b/pages/componentsC/calendar/calendar.nvue
new file mode 100644
index 0000000..d82682d
--- /dev/null
+++ b/pages/componentsC/calendar/calendar.nvue
@@ -0,0 +1,169 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/codeInput/codeInput.nvue b/pages/componentsC/codeInput/codeInput.nvue
new file mode 100644
index 0000000..cdb0b8f
--- /dev/null
+++ b/pages/componentsC/codeInput/codeInput.nvue
@@ -0,0 +1,153 @@
+
+
+
+ 基础使用
+
+
+
+
+
+ 横线模式
+
+
+
+
+
+ 设置长度
+
+
+
+
+
+ 设置间距
+
+
+
+
+
+ 细边框
+
+
+
+
+
+
+
+
+ 调整颜色
+
+
+
+
+
+
+
+
+
+ 点模式
+
+
+
+
+
+ 预置内容
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/datetimePicker/datetimePicker.nvue b/pages/componentsC/datetimePicker/datetimePicker.nvue
new file mode 100644
index 0000000..54c69b6
--- /dev/null
+++ b/pages/componentsC/datetimePicker/datetimePicker.nvue
@@ -0,0 +1,233 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/form/form.nvue b/pages/componentsC/form/form.nvue
new file mode 100644
index 0000000..4145af7
--- /dev/null
+++ b/pages/componentsC/form/form.nvue
@@ -0,0 +1,425 @@
+
+
+
+
+ 基础使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/indexList/indexList.nvue b/pages/componentsC/indexList/indexList.nvue
new file mode 100644
index 0000000..c29f2bc
--- /dev/null
+++ b/pages/componentsC/indexList/indexList.nvue
@@ -0,0 +1,126 @@
+
+
+
+
+
+ 新的朋友
+
+
+
+
+ 标签
+
+
+
+
+ 朋友圈
+
+
+
+
+ QQ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{item1.name}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/input/input.nvue b/pages/componentsC/input/input.nvue
new file mode 100644
index 0000000..47578cf
--- /dev/null
+++ b/pages/componentsC/input/input.nvue
@@ -0,0 +1,180 @@
+
+
+
+ 基础使用
+
+
+
+
+
+ 可清空内容
+
+
+
+
+
+ 显示下划线
+
+
+
+
+
+ 禁用状态
+
+
+
+
+
+ 圆形
+
+
+
+
+
+ 前后图标
+
+
+
+
+
+
+
+
+ 前后插槽
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/layout/layout.nvue b/pages/componentsC/layout/layout.nvue
new file mode 100644
index 0000000..665b760
--- /dev/null
+++ b/pages/componentsC/layout/layout.nvue
@@ -0,0 +1,156 @@
+
+
+
+ 基础使用
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分栏间隔
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 混合布局
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 分栏偏移
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 对齐方式
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/list/list.nvue b/pages/componentsC/list/list.nvue
new file mode 100644
index 0000000..c2791a5
--- /dev/null
+++ b/pages/componentsC/list/list.nvue
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/loadmore/loadmore.nvue b/pages/componentsC/loadmore/loadmore.nvue
new file mode 100644
index 0000000..0956d41
--- /dev/null
+++ b/pages/componentsC/loadmore/loadmore.nvue
@@ -0,0 +1,82 @@
+
+
+
+ 基础使用
+
+
+
+
+
+ 无更多数据
+
+
+
+
+
+ 加载更多(点击触发事件)
+
+
+
+
+
+ 自定义图标
+
+
+
+
+
+ 显示点
+
+
+
+
+
+ 自定义提示语
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/modal/modal.nvue b/pages/componentsC/modal/modal.nvue
new file mode 100644
index 0000000..967cc12
--- /dev/null
+++ b/pages/componentsC/modal/modal.nvue
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
+ show1 = false"
+ >
+ show2 = false"
+ >
+
+ show4 = false"
+ >
+ show5 = false"
+ @cancel="() => show5 = false"
+ >
+ show6 = false"
+ @close="() => show6 = false"
+ >
+ show7 = false"
+ >
+
+
+
+
+
+ show9 = false"
+ >
+
+
+
+
+
+
diff --git a/pages/componentsC/navbar/navbar.nvue b/pages/componentsC/navbar/navbar.nvue
new file mode 100644
index 0000000..cf282b5
--- /dev/null
+++ b/pages/componentsC/navbar/navbar.nvue
@@ -0,0 +1,121 @@
+
+
+
+
+
+ 基础功能
+
+
+
+
+ 自定义文本
+
+
+
+
+ 自定义插槽
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/noNetwork/noNetwork.nvue b/pages/componentsC/noNetwork/noNetwork.nvue
new file mode 100644
index 0000000..c32536f
--- /dev/null
+++ b/pages/componentsC/noNetwork/noNetwork.nvue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+ 网络正常
+ 请您断开设备的WiFi和数据连接(或开启飞行模式),即可看到效果
+
+
+
+
+
+
+
diff --git a/pages/componentsC/picker/picker.nvue b/pages/componentsC/picker/picker.nvue
new file mode 100644
index 0000000..d814c39
--- /dev/null
+++ b/pages/componentsC/picker/picker.nvue
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/readMore/readMore.nvue b/pages/componentsC/readMore/readMore.nvue
new file mode 100644
index 0000000..e9a53c8
--- /dev/null
+++ b/pages/componentsC/readMore/readMore.nvue
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/scrollList/scrollList.nvue b/pages/componentsC/scrollList/scrollList.nvue
new file mode 100644
index 0000000..1146080
--- /dev/null
+++ b/pages/componentsC/scrollList/scrollList.nvue
@@ -0,0 +1,249 @@
+
+
+
+ 基础使用
+
+
+
+
+ ¥{{ item.price }}
+
+
+ 查看更多
+
+
+
+
+
+
+ 多菜单扩展
+
+
+
+
+
+ {{ item1.name }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/skeleton/skeleton.nvue b/pages/componentsC/skeleton/skeleton.nvue
new file mode 100644
index 0000000..6e01809
--- /dev/null
+++ b/pages/componentsC/skeleton/skeleton.nvue
@@ -0,0 +1,157 @@
+
+
+
+ 基础使用
+
+
+
+
+
+ 自定义段落行数
+
+
+
+
+
+ 设置段落宽度
+
+
+
+
+
+ 设置段落高度
+
+
+
+
+
+ 是否开启动画
+
+
+
+
+
+
+
+ 展示头像
+
+
+
+
+
+
+ 切换状态
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/steps/steps.vue b/pages/componentsC/steps/steps.vue
new file mode 100644
index 0000000..35452ee
--- /dev/null
+++ b/pages/componentsC/steps/steps.vue
@@ -0,0 +1,216 @@
+
+
+
+ 基础演示
+
+
+
+
+
+
+
+
+
+
+
+
+ 显示点类型
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 错误状态
+
+
+
+
+
+
+
+
+
+
+
+
+ 自定义图标
+
+
+
+
+
+
+
+
+
+
+
+
+ 自定义插槽
+
+
+
+
+
+
+
+ 运
+
+
+
+
+
+ 自定义颜色
+
+
+
+
+
+
+
+
+
+
+
+
+ 竖向展示
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/subsection/subsection.nvue b/pages/componentsC/subsection/subsection.nvue
new file mode 100644
index 0000000..4204cd5
--- /dev/null
+++ b/pages/componentsC/subsection/subsection.nvue
@@ -0,0 +1,99 @@
+
+
+
+ 基础使用
+
+
+
+
+
+ 按钮模式
+
+
+
+
+
+ 更换主题
+
+
+
+
+
+ 默认位置
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/swiper/swiper.nvue b/pages/componentsC/swiper/swiper.nvue
new file mode 100644
index 0000000..8bb931d
--- /dev/null
+++ b/pages/componentsC/swiper/swiper.nvue
@@ -0,0 +1,213 @@
+
+
+
+ 基础功能
+
+
+
+ 带标题
+
+
+
+ 带指示器
+
+
+
+ 加载中
+
+
+
+ 嵌入视频
+
+
+
+ 自定义指示器
+ current = e.current"
+ :autoplay="false"
+ >
+
+
+
+
+
+
+ currentNum = e.current"
+ :autoplay="false"
+ indicatorStyle="right: 20px"
+ >
+
+ {{ currentNum + 1 }}/{{ list6.length }}
+
+
+
+
+
+ 卡片式
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/table/table.nvue b/pages/componentsC/table/table.nvue
new file mode 100644
index 0000000..84754d0
--- /dev/null
+++ b/pages/componentsC/table/table.nvue
@@ -0,0 +1,26 @@
+
+
+
+ 基础使用
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/tabs/tabs.nvue b/pages/componentsC/tabs/tabs.nvue
new file mode 100644
index 0000000..fbabcec
--- /dev/null
+++ b/pages/componentsC/tabs/tabs.nvue
@@ -0,0 +1,209 @@
+
+
+
+ 基础演示
+
+
+
+
+
+
+ 粘性布局
+
+
+
+
+
+
+
+ 显示徽标
+
+
+
+
+
+
+ 禁止滚动
+
+
+
+
+
+
+ 禁用菜单
+
+
+
+
+
+
+ 自定义样式
+
+
+
+
+
+
+ 右侧自定义插槽
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/text/text.nvue b/pages/componentsC/text/text.nvue
new file mode 100644
index 0000000..e5b41da
--- /dev/null
+++ b/pages/componentsC/text/text.nvue
@@ -0,0 +1,173 @@
+
+
+
+ 基础功能
+
+
+
+
+
+
+
+ 设置主题
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 拨打电话
+
+
+
+
+
+
+
+ 日期格式化
+
+
+
+
+
+
+
+ 姓名脱敏
+
+
+
+
+
+
+
+ 超链接
+
+
+
+
+
+
+
+ 显示金额
+
+
+
+
+
+
+
+ 前后图标
+
+
+
+
+
+
+
+
+
+
+ 超出隐藏
+
+
+
+
+
+ 小程序开放能力
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/textarea/textarea.nvue b/pages/componentsC/textarea/textarea.nvue
new file mode 100644
index 0000000..f158864
--- /dev/null
+++ b/pages/componentsC/textarea/textarea.nvue
@@ -0,0 +1,77 @@
+
+
+
+ 基础使用
+
+
+
+
+
+ 字数统计
+
+
+
+
+
+ 自动增高
+
+
+
+
+
+ 禁用状态
+
+
+
+
+
+ 下划线模式
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/componentsC/tooltip/tooltip.vue b/pages/componentsC/tooltip/tooltip.vue
new file mode 100644
index 0000000..8487851
--- /dev/null
+++ b/pages/componentsC/tooltip/tooltip.vue
@@ -0,0 +1,86 @@
+
+
+
+ 基础使用
+
+
+
+
+
+ 下方显示
+
+
+
+
+
+ 扩展按钮
+
+
+
+
+
+ 自动调整位置
+
+
+
+
+
+ 高亮选中文本背景色
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/example/components.config.js b/pages/example/components.config.js
new file mode 100644
index 0000000..6a08bc8
--- /dev/null
+++ b/pages/example/components.config.js
@@ -0,0 +1,418 @@
+export default [{
+ groupName: '基础组件',
+ groupName_en: 'Basic components',
+ list: [{
+ path: '/pages/componentsB/color/color',
+ icon: 'color',
+ title: 'Color 色彩',
+ title_en: 'Color'
+ }, {
+ path: '/pages/componentsA/icon/icon',
+ icon: 'icon',
+ title: 'Icon 图标',
+ title_en: 'Icon'
+ }, {
+ path: '/pages/componentsA/image/image',
+ icon: 'image',
+ title: 'Image 图片',
+ title_en: 'Image'
+ }, {
+ path: '/pages/componentsA/button/button',
+ icon: 'button',
+ title: 'Button 按钮',
+ title_en: 'Button'
+ }, {
+ path: '/pages/componentsC/text/text',
+ icon: 'text',
+ title: 'Text 文本',
+ title_en: 'Text'
+ }, {
+ path: '/pages/componentsC/layout/layout',
+ icon: 'layout',
+ title: 'Layout 布局',
+ title_en: 'Layout'
+ }, {
+ path: '/pages/componentsA/cell/cell',
+ icon: 'cell',
+ title: 'Cell 单元格',
+ title_en: 'Cell'
+ }, {
+ path: '/pages/componentsB/badge/badge',
+ icon: 'badge',
+ title: 'Badge 徽标数',
+ title_en: 'Badge'
+ }, {
+ path: '/pages/componentsB/tag/tag',
+ icon: 'tag',
+ title: 'Tag 标签',
+ title_en: 'Tag'
+ }, {
+ path: '/pages/componentsA/loading-icon/loading-icon',
+ icon: 'loading',
+ title: 'Loading 加载动画',
+ title_en: 'loading Icon'
+ }, {
+ path: '/pages/componentsA/loading-page/loading-page',
+ icon: 'loading-page',
+ title: 'Loading page 加载页',
+ title_en: 'Loading Page'
+ }]
+},
+{
+ groupName: '表单组件',
+ groupName_en: 'Form components',
+ list: [{
+ path: '/pages/componentsC/form/form',
+ icon: 'form',
+ title: 'Form 表单',
+ title_en: 'Form'
+ }, {
+ path: '/pages/componentsC/calendar/calendar',
+ icon: 'calendar',
+ title: 'Calendar 日历',
+ title_en: 'Calendar'
+ }, {
+ path: '/pages/componentsB/keyboard/keyboard',
+ icon: 'keyboard',
+ title: 'Keyboard 键盘',
+ title_en: 'Keyboard'
+ }, {
+ path: '/pages/componentsC/picker/picker',
+ icon: 'picker',
+ title: 'Picker 选择器',
+ title_en: 'Picker'
+ }, {
+ path: '/pages/componentsC/datetimePicker/datetimePicker',
+ icon: 'datetimePicker',
+ title: 'DatetimePicker 时间选择器',
+ title_en: 'Picker'
+ }, {
+ path: '/pages/componentsA/rate/rate',
+ icon: 'rate',
+ title: 'Rate 评分',
+ title_en: 'Rate'
+ }, {
+ path: '/pages/componentsB/search/search',
+ icon: 'search',
+ title: 'Search 搜索',
+ title_en: 'Search'
+ }, {
+ path: '/pages/componentsB/numberBox/numberBox',
+ icon: 'numberBox',
+ title: 'NumberBox 步进器',
+ title_en: 'NumberBox'
+ }, {
+ path: '/pages/componentsB/upload/upload',
+ icon: 'upload',
+ title: 'Upload 上传',
+ title_en: 'Upload'
+ }, {
+ path: '/pages/componentsB/code/code',
+ icon: 'code',
+ title: 'Code 验证码倒计时',
+ title_en: 'VerificationCode'
+ }, {
+ path: '/pages/componentsC/input/input',
+ icon: 'field',
+ title: 'Input 输入框',
+ title_en: 'Input'
+ }, {
+ path: '/pages/componentsC/textarea/textarea',
+ icon: 'textarea',
+ title: 'Textarea 文本域',
+ title_en: 'Textarea'
+ }, {
+ path: '/pages/componentsA/checkbox/checkbox',
+ icon: 'checkbox',
+ title: 'Checkbox 复选框',
+ title_en: 'Checkbox'
+ }, {
+ path: '/pages/componentsA/radio/radio',
+ icon: 'radio',
+ title: 'Radio 单选框',
+ title_en: 'Radio'
+ }, {
+ path: '/pages/componentsB/switch/switch',
+ icon: 'switch',
+ title: 'Switch 开关选择器',
+ title_en: 'Switch'
+ }, {
+ path: '/pages/componentsB/slider/slider',
+ icon: 'slider',
+ title: 'Slider 滑动选择器',
+ title_en: 'Slider'
+ }, {
+ path: '/pages/componentsC/album/album',
+ icon: 'album',
+ title: 'Album 相册',
+ title_en: 'Album'
+ }]
+}, {
+ groupName: '数据组件',
+ groupName_en: 'Data components',
+ list: [{
+ path: '/pages/componentsC/list/list',
+ icon: 'list',
+ title: 'List 列表',
+ title_en: 'List'
+ }, {
+ path: '/pages/componentsB/progress/progress',
+ icon: 'progress',
+ title: 'Progress 进度条',
+ title_en: 'Progress'
+ },
+ // {
+ // path: '/pages/componentsC/table/table',
+ // icon: 'table',
+ // title: 'Table 表格(暂无)',
+ // title_en: 'Table',
+ // },
+ {
+ path: '/pages/componentsB/countDown/countDown',
+ icon: 'countDown',
+ title: 'CountDown 倒计时',
+ title_en: 'CountDown'
+ }, {
+ path: '/pages/componentsB/countTo/countTo',
+ icon: 'countTo',
+ title: 'CountTo 数字滚动',
+ title_en: 'CountTo'
+ }]
+}, {
+ groupName: '反馈组件',
+ groupName_en: 'Feedback components',
+ list: [{
+ path: '/pages/componentsC/tooltip/tooltip',
+ icon: 'tooltip',
+ title: 'Tooltip 长按提示',
+ title_en: 'ActionSheet'
+ }, {
+ path: '/pages/componentsB/actionSheet/actionSheet',
+ icon: 'actionSheet',
+ title: 'ActionSheet 上拉菜单',
+ title_en: 'ActionSheet'
+ }, {
+ path: '/pages/componentsB/alert/alert',
+ icon: 'alert',
+ title: 'Alert 警告提示',
+ title_en: 'Alert'
+ }, {
+ path: '/pages/componentsB/toast/toast',
+ icon: 'toast',
+ title: 'Toast 消息提示',
+ title_en: 'Toast'
+ }, {
+ path: '/pages/componentsB/noticeBar/noticeBar',
+ icon: 'noticeBar',
+ title: 'NoticeBar 滚动通知',
+ title_en: 'NoticeBar'
+ }, {
+ path: '/pages/componentsB/notify/notify',
+ icon: 'notify',
+ title: 'Notify 消息提示',
+ title_en: 'Notify'
+ }, {
+ path: '/pages/componentsA/swipeAction/swipeAction',
+ icon: 'swipeAction',
+ title: 'SwipeAction 滑动单元格',
+ title_en: 'SwipeAction'
+ }, {
+ path: '/pages/componentsB/collapse/collapse',
+ icon: 'collapse',
+ title: 'Collapse 折叠面板',
+ title_en: 'Collapse'
+ }, {
+ path: '/pages/componentsA/popup/popup',
+ icon: 'popup',
+ title: 'Popup 弹出层',
+ title_en: 'Popup'
+ }, {
+ path: '/pages/componentsC/modal/modal',
+ icon: 'modal',
+ title: 'Modal 模态框',
+ title_en: 'Modal'
+ }
+ // {
+ // path: '/pages/componentsA/fullScreen/fullScreen',
+ // icon: 'pressingScreen',
+ // title: 'fullScreen 压窗屏(暂无)',
+ // title_en: 'fullScreen',
+ // },
+ ]
+}, {
+ groupName: '布局组件',
+ groupName_en: 'Layout components',
+ list: [{
+ path: '/pages/componentsC/scrollList/scrollList',
+ icon: 'scrollList',
+ title: 'ScrollList 横向滚动列表',
+ title_en: 'ScrollList'
+ }, {
+ path: '/pages/componentsA/line/line',
+ icon: 'line',
+ title: 'Line 线条',
+ title_en: 'Line'
+ }, {
+ path: '/pages/componentsA/overlay/overlay',
+ icon: 'mask',
+ title: 'Overlay 遮罩层',
+ title_en: 'Overlay'
+ },
+ // #ifndef MP-TOUTIAO
+ {
+ path: '/pages/componentsC/noNetwork/noNetwork',
+ icon: 'noNetwork',
+ title: 'NoNetwork 无网络提示',
+ title_en: 'NoNetwork'
+ },
+ // #endif
+ {
+ path: '/pages/componentsA/grid/grid',
+ icon: 'grid',
+ title: 'Grid 宫格布局',
+ title_en: 'Grid'
+ }, {
+ path: '/pages/componentsC/swiper/swiper',
+ icon: 'swiper',
+ title: 'Swiper 轮播图',
+ title_en: 'Swiper'
+ }, {
+ path: '/pages/componentsC/skeleton/skeleton',
+ icon: 'skeleton',
+ title: 'Skeleton 骨架屏',
+ title_en: 'Skeleton'
+ }, {
+ path: '/pages/componentsA/sticky/sticky',
+ icon: 'sticky',
+ title: 'Sticky 吸顶',
+ title_en: 'Sticky'
+ },
+ {
+ path: '/pages/componentsA/divider/divider',
+ icon: 'divider',
+ title: 'Divider 分割线',
+ title_en: 'Divider'
+ }
+ ]
+},
+{
+ groupName: '导航组件',
+ groupName_en: 'Navigation components',
+ list: [
+ // {
+ // path: '/pages/componentsB/dropdown/dropdown',
+ // icon: 'dropdown',
+ // title: 'Dropdown 下拉菜单',
+ // title_en: 'Dropdown',
+ // },
+ {
+ path: '/pages/componentsB/tabbar/tabbar',
+ icon: 'tabbar',
+ title: 'Tabbar 底部导航栏',
+ title_en: 'Tabbar'
+ }, {
+ path: '/pages/componentsA/backtop/backtop',
+ icon: 'backTop',
+ title: 'BackTop 返回顶部',
+ title_en: 'BackTop'
+ }, {
+ path: '/pages/componentsC/navbar/navbar',
+ icon: 'navbar',
+ title: 'Navbar 导航栏',
+ title_en: 'Navbar'
+ }, {
+ path: '/pages/componentsC/tabs/tabs',
+ icon: 'tabs',
+ title: 'Tabs 标签',
+ title_en: 'Tabs'
+ },
+ // // #ifndef MP-ALIPAY
+ // {
+ // path: '/pages/template/order/order',
+ // icon: 'tabsSwiper',
+ // title: 'TabsSwiper 全屏选项卡(暂无)',
+ // title_en: 'TabsSwiper',
+ // },
+ // // #endif
+ {
+ path: '/pages/componentsC/subsection/subsection',
+ icon: 'subsection',
+ title: 'Subsection 分段器',
+ title_en: 'Subsection'
+ }, {
+ path: '/pages/componentsC/indexList/indexList',
+ icon: 'indexList',
+ title: 'IndexList 索引列表',
+ title_en: 'IndexList'
+ }, {
+ path: '/pages/componentsC/steps/steps',
+ icon: 'steps',
+ title: 'Steps 步骤条',
+ title_en: 'Steps'
+ }, {
+ path: '/pages/componentsA/empty/empty',
+ icon: 'empty',
+ title: 'Empty 内容为空',
+ title_en: 'Empty'
+ }
+ ]
+}, {
+ groupName: '其他组件',
+ groupName_en: 'Other components',
+ list: [{
+ path: '/pages/componentsB/parse/parse',
+ icon: 'parse',
+ title: 'Parse 富文本解析器',
+ title_en: 'Parse'
+ }, {
+ path: '/pages/componentsC/codeInput/codeInput',
+ icon: 'messageInput',
+ title: 'CodeInput 验证码输入',
+ title_en: 'CodeInput'
+ },
+ // {
+ // path: '/pages/componentsC/avatarCropper/avatarCropper',
+ // icon: 'avatarCropper',
+ // title: 'AvatarCropper 头像裁剪(暂无)',
+ // title_en: 'AvatarCropper',
+ // },
+ {
+ path: '/pages/componentsC/loadmore/loadmore',
+ icon: 'loadmore',
+ title: 'Loadmore 加载更多',
+ title_en: 'Loadmore'
+ }, {
+ path: '/pages/componentsC/readMore/readMore',
+ icon: 'readMore',
+ title: 'ReadMore 展开阅读更多',
+ title_en: 'ReadMore'
+ },
+ // {
+ // path: '/pages/componentsA/lazyLoad/lazyLoad',
+ // icon: 'lazyLoad',
+ // title: 'LazyLoad 懒加载(暂无)',
+ // title_en: 'LazyLoad',
+ // },
+ {
+ path: '/pages/componentsA/gap/gap',
+ icon: 'gap',
+ title: 'Gap 间隔槽',
+ title_en: 'Gap'
+ }, {
+ path: '/pages/componentsC/avatar/avatar',
+ icon: 'avatar',
+ title: 'Avatar 头像',
+ title_en: 'Avatar'
+ }, {
+ path: '/pages/componentsA/link/link',
+ icon: 'link',
+ title: 'Link 超链接',
+ title_en: 'Link'
+ }, {
+ path: '/pages/componentsA/transition/transition',
+ icon: 'transition',
+ title: 'transition 动画',
+ title_en: '动画'
+ }]
+}
+]
diff --git a/pages/example/components.nvue b/pages/example/components.nvue
new file mode 100644
index 0000000..92243bc
--- /dev/null
+++ b/pages/example/components.nvue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/index/detail/detail.vue b/pages/index/detail/detail.vue
new file mode 100644
index 0000000..7025348
--- /dev/null
+++ b/pages/index/detail/detail.vue
@@ -0,0 +1,22 @@
+
+
+
+ 这是选项卡页面跳转详情页面的演示,下面是页面跳转时传递过来的标题:
+ {{title}}
+
+
+
+
+
diff --git a/pages/index/index - 副本.vue b/pages/index/index - 副本.vue
new file mode 100644
index 0000000..78855b4
--- /dev/null
+++ b/pages/index/index - 副本.vue
@@ -0,0 +1,256 @@
+
+
+
+
+
+ {{tab.name}}
+
+
+
+
+
+
+ 考核纬度 : 财务层面
+
+
+
+
+
+ 考核项目 : 外部检查处罚
+
+
+ 具体职责 :
+ 组织各部门配合做好工作分析、岗位设置的各类人才,制定并实施职业生涯计划
+
+
+
+ 参考分 : 10
+
+
+ 加分 : 10
+
+
+ 加分原因 :
+ 日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。
+
+
+
+ 扣分 : 5
+
+
+ 扣分原因 :
+ 日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。
+
+
+
+
+
+
+
+ 考核纬度 : 财务层面
+
+
+
+
+
+ 考核项目 : 外部检查处罚
+
+
+ 具体职责 :
+ 组织各部门配合做好工作分析、岗位设置的各类人才,制定并实施职业生涯计划
+
+
+
+ 参考分 : 10
+
+
+ 加分 : 10
+
+
+ 加分原因 :
+
+
+
+
+ 扣分 : 5
+
+
+ 扣分原因 :
+ 日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。
+
+
+
+
+
+
+
+ 考核纬度 : 财务层面
+
+
+
+
+
+ 考核项目 : 外部检查处罚
+
+
+ 具体职责 :
+ 组织各部门配合做好工作分析、岗位设置的各类人才,制定并实施职业生涯计划
+
+
+
+ 参考分 : 10
+
+
+ 加分 : 10
+
+
+ 加分原因 :
+
+
+
+
+ 扣分 : 5
+
+
+ 扣分原因 :
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/index/index.vue b/pages/index/index.vue
new file mode 100644
index 0000000..e157a3c
--- /dev/null
+++ b/pages/index/index.vue
@@ -0,0 +1,294 @@
+
+
+
+
+
+
+
+
+
+
+ 具体职责 :
+ 组织各部门配合做好工作分析、岗位设置的各类人才,制定并实施职业生涯计划
+
+
+ 参考分 : 10
+
+
+ 加分 : 10
+
+
+ 加分原因 :
+ 日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。
+
+
+
+ 扣分 : 5
+
+
+ 扣分原因 :
+ 日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。
+
+
+
+
+
+
+
+
+
+ 考核纬度 : 财务层面
+
+
+
+ 考核项目 : 外部检查处罚
+
+
+ 具体职责 :
+ 组织各部门配合做好工作分析、岗位设置的各类人才,制定并实施职业生涯计划
+
+
+
+ 参考分 : 10
+
+
+ 加分 : 10
+
+
+ 加分原因 :
+
+
+
+
+ 扣分 : 5
+
+
+ 扣分原因 :
+ 日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。日月不肯迟,四时相催迫。”在这个属于奋斗者的新时代,人人都有追梦的权利,人人也都是梦想的筑造者。
+
+
+
+
+
+
+
+ 考核纬度 : 财务层面
+
+
+
+ 考核项目 : 外部检查处罚
+
+
+ 具体职责 :
+ 组织各部门配合做好工作分析、岗位设置的各类人才,制定并实施职业生涯计划
+
+
+
+ 参考分 : 10
+
+
+ 加分 : 10
+
+
+ 加分原因 :
+
+
+
+
+ 扣分 : 5
+
+
+ 扣分原因 :
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/index/news-item.nvue b/pages/index/news-item.nvue
new file mode 100644
index 0000000..5102b51
--- /dev/null
+++ b/pages/index/news-item.nvue
@@ -0,0 +1,211 @@
+
+
+
+
+
+
+
+ {{options.title}}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/index/tabControl-tag.vue b/pages/index/tabControl-tag.vue
new file mode 100644
index 0000000..01dc57c
--- /dev/null
+++ b/pages/index/tabControl-tag.vue
@@ -0,0 +1,224 @@
+
+
+
+
+ {{item.name}}
+
+
+
+
+
+
+
+
+
diff --git a/static/app-plus/mp-html/js/handler.js b/static/app-plus/mp-html/js/handler.js
new file mode 100644
index 0000000..9283832
--- /dev/null
+++ b/static/app-plus/mp-html/js/handler.js
@@ -0,0 +1,224 @@
+'use strict'
+
+// 等待初始化完毕
+document.addEventListener('UniAppJSBridgeReady', () => {
+ document.body.onclick = function () {
+ return uni.postMessage({
+ data: {
+ action: 'onClick'
+ }
+ })
+ }
+
+ uni.postMessage({
+ data: {
+ action: 'onJSBridgeReady'
+ }
+ })
+})
+let options
+let medias = []
+/**
+ * @description 获取标签的所有属性
+ * @param {Element} ele
+ */
+
+function getAttrs(ele) {
+ const attrs = Object.create(null)
+
+ for (let i = ele.attributes.length; i--;) {
+ attrs[ele.attributes[i].name] = ele.attributes[i].value
+ }
+
+ return attrs
+}
+/**
+ * @description 图片加载出错
+ */
+
+function onImgError() {
+ if (options[1]) {
+ this.src = options[1]
+ this.onerror = null
+ } // 取消监听点击
+
+ this.onclick = null
+ this.ontouchstart = null
+ uni.postMessage({
+ data: {
+ action: 'onError',
+ source: 'img',
+ attrs: getAttrs(this)
+ }
+ })
+}
+/**
+ * @description 创建 dom 结构
+ * @param {object[]} nodes 节点数组
+ * @param {Element} parent 父节点
+ * @param {string} namespace 命名空间
+ */
+
+function createDom(nodes, parent, namespace) {
+ const _loop = function _loop(i) {
+ const node = nodes[i]
+ let ele = void 0
+
+ if (!node.type || node.type == 'node') {
+ let { name } = node // svg 需要设置 namespace
+
+ if (name == 'svg') namespace = 'http://www.w3.org/2000/svg'
+ if (name == 'html' || name == 'body') name = 'div' // 创建标签
+
+ if (!namespace) ele = document.createElement(name); else ele = document.createElementNS(namespace, name) // 设置属性
+
+ for (const item in node.attrs) {
+ ele.setAttribute(item, node.attrs[item])
+ } // 递归创建子节点
+
+ if (node.children) createDom(node.children, ele, namespace) // 处理图片
+
+ if (name == 'img') {
+ if (!ele.src && ele.getAttribute('data-src')) ele.src = ele.getAttribute('data-src')
+
+ if (!node.attrs.ignore) {
+ // 监听图片点击事件
+ ele.onclick = function (e) {
+ e.stopPropagation()
+ uni.postMessage({
+ data: {
+ action: 'onImgTap',
+ attrs: getAttrs(this)
+ }
+ })
+ }
+ }
+
+ if (options[2]) {
+ image = new Image()
+ image.src = ele.src
+ ele.src = options[2]
+
+ image.onload = function () {
+ ele.src = this.src
+ }
+
+ image.onerror = function () {
+ ele.onerror()
+ }
+ }
+
+ ele.onerror = onImgError
+ } // 处理链接
+ else if (name == 'a') {
+ ele.addEventListener('click', function (e) {
+ e.stopPropagation()
+ e.preventDefault() // 阻止默认跳转
+
+ const href = this.getAttribute('href')
+ let offset
+ if (href && href[0] == '#') offset = (document.getElementById(href.substr(1)) || {}).offsetTop
+ uni.postMessage({
+ data: {
+ action: 'onLinkTap',
+ attrs: getAttrs(this),
+ offset
+ }
+ })
+ }, true)
+ } // 处理音视频
+ else if (name == 'video' || name == 'audio') {
+ medias.push(ele)
+
+ if (!node.attrs.autoplay) {
+ if (!node.attrs.controls) ele.setAttribute('controls', 'true') // 空白图占位
+
+ if (!node.attrs.poster) ele.setAttribute('poster', "data:image/svg+xml;utf8, ")
+ }
+
+ if (options[3]) {
+ ele.onplay = function () {
+ for (let _i = 0; _i < medias.length; _i++) {
+ if (medias[_i] != this) medias[_i].pause()
+ }
+ }
+ }
+
+ ele.onerror = function () {
+ uni.postMessage({
+ data: {
+ action: 'onError',
+ source: name,
+ attrs: getAttrs(this)
+ }
+ })
+ }
+ } // 处理表格
+ else if (name == 'table' && options[4] && !ele.style.cssText.includes('inline')) {
+ const div = document.createElement('div')
+ div.style.overflow = 'auto'
+ div.appendChild(ele)
+ ele = div
+ } else if (name == 'svg') namespace = void 0
+ } else ele = document.createTextNode(node.text.replace(/&/g, '&'))
+
+ parent.appendChild(ele)
+ }
+
+ for (let i = 0; i < nodes.length; i++) {
+ var image
+
+ _loop(i)
+ }
+} // 设置 html 内容
+
+window.setContent = function (nodes, opts, append) {
+ const ele = document.getElementById('content') // 背景颜色
+
+ if (opts[0]) document.body.bgColor = opts[0] // 长按复制
+
+ if (!opts[5]) ele.style.userSelect = 'none'
+
+ if (!append) {
+ ele.innerHTML = '' // 不追加则先清空
+
+ medias = []
+ }
+
+ options = opts
+ const fragment = document.createDocumentFragment()
+ createDom(nodes, fragment)
+ ele.appendChild(fragment) // 触发事件
+
+ let height = ele.scrollHeight
+ uni.postMessage({
+ data: {
+ action: 'onLoad',
+ height
+ }
+ })
+ clearInterval(window.timer)
+ let ready = false
+ window.timer = setInterval(() => {
+ if (ele.scrollHeight != height) {
+ height = ele.scrollHeight
+ uni.postMessage({
+ data: {
+ action: 'onHeightChange',
+ height
+ }
+ })
+ } else if (!ready) {
+ ready = true
+ uni.postMessage({
+ data: {
+ action: 'onReady'
+ }
+ })
+ }
+ }, 350)
+} // 回收计时器
+
+window.onunload = function () {
+ clearInterval(window.timer)
+}
diff --git a/static/app-plus/mp-html/js/uni.webview.min.js b/static/app-plus/mp-html/js/uni.webview.min.js
new file mode 100644
index 0000000..518332d
--- /dev/null
+++ b/static/app-plus/mp-html/js/uni.webview.min.js
@@ -0,0 +1,19 @@
+!(function (e, n) { typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = n() : typeof define === 'function' && define.amd ? define(n) : (e = e || self).uni = n() }(this, (() => {
+ 'use strict'
+
+ try { const e = {}; Object.defineProperty(e, 'passive', { get() { !0 } }), window.addEventListener('test-passive', null, e) } catch (e) {} const n = Object.prototype.hasOwnProperty; function t(e, t) { return n.call(e, t) } const i = []; const a = function (e, n) { const t = { options: { timestamp: +new Date() }, name: e, arg: n }; if (window.__dcloud_weex_postMessage || window.__dcloud_weex_) { if (e === 'postMessage') { const a = { data: [n] }; return window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessage(a) : window.__dcloud_weex_.postMessage(JSON.stringify(a)) } const o = { type: 'WEB_INVOKE_APPSERVICE', args: { data: t, webviewIds: i } }; window.__dcloud_weex_postMessage ? window.__dcloud_weex_postMessageToService(o) : window.__dcloud_weex_.postMessageToService(JSON.stringify(o)) } if (!window.plus) return window.parent.postMessage({ type: 'WEB_INVOKE_APPSERVICE', data: t, pageId: '' }, '*'); if (i.length === 0) { const r = plus.webview.currentWebview(); if (!r) throw new Error('plus.webview.currentWebview() is undefined'); const d = r.parent(); let s = ''; s = d ? d.id : r.id, i.push(s) } if (plus.webview.getWebviewById('__uniapp__service'))plus.webview.postMessageToUniNView({ type: 'WEB_INVOKE_APPSERVICE', args: { data: t, webviewIds: i } }, '__uniapp__service'); else { const w = JSON.stringify(t); plus.webview.getLaunchWebview().evalJS('UniPlusBridge.subscribeHandler("'.concat('WEB_INVOKE_APPSERVICE', '",').concat(w, ',').concat(JSON.stringify(i), ');')) } }; const o = {
+ navigateTo() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const n = e.url; a('navigateTo', { url: encodeURI(n) }) }, navigateBack() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const n = e.delta; a('navigateBack', { delta: parseInt(n) || 1 }) }, switchTab() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const n = e.url; a('switchTab', { url: encodeURI(n) }) }, reLaunch() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const n = e.url; a('reLaunch', { url: encodeURI(n) }) }, redirectTo() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; const n = e.url; a('redirectTo', { url: encodeURI(n) }) }, getEnv(e) { window.plus ? e({ plus: !0 }) : e({ h5: !0 }) }, postMessage() { const e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; a('postMessage', e.data || {}) }
+ }; const r = /uni-app/i.test(navigator.userAgent); const d = /Html5Plus/i.test(navigator.userAgent); const s = /complete|loaded|interactive/; const w = window.my && navigator.userAgent.indexOf('AlipayClient') > -1; const u = window.swan && window.swan.webView && /swan/i.test(navigator.userAgent); const c = window.qq && window.qq.miniProgram && /QQ/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent); const g = window.tt && window.tt.miniProgram && /toutiaomicroapp/i.test(navigator.userAgent); const v = window.wx && window.wx.miniProgram && /micromessenger/i.test(navigator.userAgent) && /miniProgram/i.test(navigator.userAgent); const p = window.qa && /quickapp/i.test(navigator.userAgent); for (var l, _ = function () { window.UniAppJSBridge = !0, document.dispatchEvent(new CustomEvent('UniAppJSBridgeReady', { bubbles: !0, cancelable: !0 })) }, f = [function (e) { if (r || d) return window.__dcloud_weex_postMessage || window.__dcloud_weex_ ? document.addEventListener('DOMContentLoaded', e) : window.plus && s.test(document.readyState) ? setTimeout(e, 0) : document.addEventListener('plusready', e), o }, function (e) { if (v) return window.WeixinJSBridge && window.WeixinJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener('WeixinJSBridgeReady', e), window.wx.miniProgram }, function (e) { if (c) return window.QQJSBridge && window.QQJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener('QQJSBridgeReady', e), window.qq.miniProgram }, function (e) {
+ if (w) {
+ document.addEventListener('DOMContentLoaded', e); const n = window.my; return {
+ navigateTo: n.navigateTo, navigateBack: n.navigateBack, switchTab: n.switchTab, reLaunch: n.reLaunch, redirectTo: n.redirectTo, postMessage: n.postMessage, getEnv: n.getEnv
+ }
+ }
+ }, function (e) { if (u) return document.addEventListener('DOMContentLoaded', e), window.swan.webView }, function (e) { if (g) return document.addEventListener('DOMContentLoaded', e), window.tt.miniProgram }, function (e) {
+ if (p) {
+ window.QaJSBridge && window.QaJSBridge.invoke ? setTimeout(e, 0) : document.addEventListener('QaJSBridgeReady', e); const n = window.qa; return {
+ navigateTo: n.navigateTo, navigateBack: n.navigateBack, switchTab: n.switchTab, reLaunch: n.reLaunch, redirectTo: n.redirectTo, postMessage: n.postMessage, getEnv: n.getEnv
+ }
+ }
+ }, function (e) { return document.addEventListener('DOMContentLoaded', e), o }], m = 0; m < f.length && !(l = f[m](_)); m++);l || (l = {}); const E = typeof uni !== 'undefined' ? uni : {}; if (!E.navigateTo) for (const b in l)t(l, b) && (E[b] = l[b]); return E.webView = l, E
+})))
diff --git a/static/app-plus/mp-html/local.html b/static/app-plus/mp-html/local.html
new file mode 100644
index 0000000..f78d703
--- /dev/null
+++ b/static/app-plus/mp-html/local.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/static/common/js/touch-emulator.js b/static/common/js/touch-emulator.js
new file mode 100644
index 0000000..b90c8ac
--- /dev/null
+++ b/static/common/js/touch-emulator.js
@@ -0,0 +1,363 @@
+(function (window, document, exportName, undefined) {
+ "use strict";
+
+ var isMultiTouch = false;
+ var multiTouchStartPos;
+ var eventTarget;
+ var touchElements = {};
+
+ // polyfills
+ if (!document.createTouch) {
+ document.createTouch = function (view, target, identifier, pageX, pageY, screenX, screenY, clientX, clientY) {
+ // auto set
+ if (clientX == undefined || clientY == undefined) {
+ clientX = pageX - window.pageXOffset;
+ clientY = pageY - window.pageYOffset;
+ }
+
+ return new Touch(target, identifier, {
+ pageX: pageX,
+ pageY: pageY,
+ screenX: screenX,
+ screenY: screenY,
+ clientX: clientX,
+ clientY: clientY
+ });
+ };
+ }
+
+ if (!document.createTouchList) {
+ document.createTouchList = function () {
+ var touchList = new TouchList();
+ for (var i = 0; i < arguments.length; i++) {
+ touchList[i] = arguments[i];
+ }
+ touchList.length = arguments.length;
+ return touchList;
+ };
+ }
+
+ /**
+ * create an touch point
+ * @constructor
+ * @param target
+ * @param identifier
+ * @param pos
+ * @param deltaX
+ * @param deltaY
+ * @returns {Object} touchPoint
+ */
+ function Touch(target, identifier, pos, deltaX, deltaY) {
+ deltaX = deltaX || 0;
+ deltaY = deltaY || 0;
+
+ this.identifier = identifier;
+ this.target = target;
+ this.clientX = pos.clientX + deltaX;
+ this.clientY = pos.clientY + deltaY;
+ this.screenX = pos.screenX + deltaX;
+ this.screenY = pos.screenY + deltaY;
+ this.pageX = pos.pageX + deltaX;
+ this.pageY = pos.pageY + deltaY;
+ }
+
+ /**
+ * create empty touchlist with the methods
+ * @constructor
+ * @returns touchList
+ */
+ function TouchList() {
+ var touchList = [];
+
+ touchList.item = function (index) {
+ return this[index] || null;
+ };
+
+ // specified by Mozilla
+ touchList.identifiedTouch = function (id) {
+ return this[id + 1] || null;
+ };
+
+ return touchList;
+ }
+
+
+ /**
+ * Simple trick to fake touch event support
+ * this is enough for most libraries like Modernizr and Hammer
+ */
+ function fakeTouchSupport() {
+ var objs = [window, document.documentElement];
+ var props = ['ontouchstart', 'ontouchmove', 'ontouchcancel', 'ontouchend'];
+
+ for (var o = 0; o < objs.length; o++) {
+ for (var p = 0; p < props.length; p++) {
+ if (objs[o] && objs[o][props[p]] == undefined) {
+ objs[o][props[p]] = null;
+ }
+ }
+ }
+ }
+
+ /**
+ * we don't have to emulate on a touch device
+ * @returns {boolean}
+ */
+ function hasTouchSupport() {
+ return ("ontouchstart" in window) || // touch events
+ (window.Modernizr && window.Modernizr.touch) || // modernizr
+ (navigator.msMaxTouchPoints || navigator.maxTouchPoints) > 2; // pointer events
+ }
+
+ /**
+ * disable mouseevents on the page
+ * @param ev
+ */
+ function preventMouseEvents(ev) {
+ // 注释启用默认事件
+ // ev.preventDefault();
+ // ev.stopPropagation();
+ }
+
+ /**
+ * only trigger touches when the left mousebutton has been pressed
+ * @param touchType
+ * @returns {Function}
+ */
+ function onMouse(touchType) {
+ return function (ev) {
+ // prevent mouse events
+ preventMouseEvents(ev);
+
+ if (ev.which !== 1) {
+ return;
+ }
+
+ // The EventTarget on which the touch point started when it was first placed on the surface,
+ // even if the touch point has since moved outside the interactive area of that element.
+ // also, when the target doesnt exist anymore, we update it
+ if (ev.type == 'mousedown' || !eventTarget || (eventTarget && !eventTarget.dispatchEvent)) {
+ eventTarget = ev.target;
+ }
+
+ // shiftKey has been lost, so trigger a touchend
+ if (isMultiTouch && !ev.shiftKey) {
+ triggerTouch('touchend', ev);
+ isMultiTouch = false;
+ }
+
+ triggerTouch(touchType, ev);
+
+ // we're entering the multi-touch mode!
+ if (!isMultiTouch && ev.shiftKey) {
+ isMultiTouch = true;
+ multiTouchStartPos = {
+ pageX: ev.pageX,
+ pageY: ev.pageY,
+ clientX: ev.clientX,
+ clientY: ev.clientY,
+ screenX: ev.screenX,
+ screenY: ev.screenY
+ };
+ triggerTouch('touchstart', ev);
+ }
+
+ // reset
+ if (ev.type == 'mouseup') {
+ multiTouchStartPos = null;
+ isMultiTouch = false;
+ eventTarget = null;
+ }
+ }
+ }
+
+ /**
+ * trigger a touch event
+ * @param eventName
+ * @param mouseEv
+ */
+ function triggerTouch(eventName, mouseEv) {
+ var touchEvent = document.createEvent('Event');
+ touchEvent.initEvent(eventName, true, true);
+
+ touchEvent.altKey = mouseEv.altKey;
+ touchEvent.ctrlKey = mouseEv.ctrlKey;
+ touchEvent.metaKey = mouseEv.metaKey;
+ touchEvent.shiftKey = mouseEv.shiftKey;
+
+ touchEvent.touches = getActiveTouches(mouseEv, eventName);
+ touchEvent.targetTouches = getActiveTouches(mouseEv, eventName);
+ touchEvent.changedTouches = getChangedTouches(mouseEv, eventName);
+
+ eventTarget.dispatchEvent(touchEvent);
+ }
+
+ /**
+ * create a touchList based on the mouse event
+ * @param mouseEv
+ * @returns {TouchList}
+ */
+ function createTouchList(mouseEv) {
+ var touchList = new TouchList();
+
+ if (isMultiTouch) {
+ var f = TouchEmulator.multiTouchOffset;
+ var deltaX = multiTouchStartPos.pageX - mouseEv.pageX;
+ var deltaY = multiTouchStartPos.pageY - mouseEv.pageY;
+
+ touchList.push(new Touch(eventTarget, 1, multiTouchStartPos, (deltaX * -1) - f, (deltaY * -1) + f));
+ touchList.push(new Touch(eventTarget, 2, multiTouchStartPos, deltaX + f, deltaY - f));
+ } else {
+ touchList.push(new Touch(eventTarget, 1, mouseEv, 0, 0));
+ }
+
+ return touchList;
+ }
+
+ /**
+ * receive all active touches
+ * @param mouseEv
+ * @returns {TouchList}
+ */
+ function getActiveTouches(mouseEv, eventName) {
+ // empty list
+ if (mouseEv.type == 'mouseup') {
+ return new TouchList();
+ }
+
+ var touchList = createTouchList(mouseEv);
+ if (isMultiTouch && mouseEv.type != 'mouseup' && eventName == 'touchend') {
+ touchList.splice(1, 1);
+ }
+ return touchList;
+ }
+
+ /**
+ * receive a filtered set of touches with only the changed pointers
+ * @param mouseEv
+ * @param eventName
+ * @returns {TouchList}
+ */
+ function getChangedTouches(mouseEv, eventName) {
+ var touchList = createTouchList(mouseEv);
+
+ // we only want to return the added/removed item on multitouch
+ // which is the second pointer, so remove the first pointer from the touchList
+ //
+ // but when the mouseEv.type is mouseup, we want to send all touches because then
+ // no new input will be possible
+ if (isMultiTouch && mouseEv.type != 'mouseup' &&
+ (eventName == 'touchstart' || eventName == 'touchend')) {
+ touchList.splice(0, 1);
+ }
+
+ return touchList;
+ }
+
+ /**
+ * show the touchpoints on the screen
+ */
+ function showTouches(ev) {
+ var touch, i, el, styles;
+
+ // first all visible touches
+ for (i = 0; i < ev.touches.length; i++) {
+ touch = ev.touches[i];
+ el = touchElements[touch.identifier];
+ if (!el) {
+ el = touchElements[touch.identifier] = document.createElement("div");
+ document.body.appendChild(el);
+ }
+
+ styles = TouchEmulator.template(touch);
+ for (var prop in styles) {
+ el.style[prop] = styles[prop];
+ }
+ }
+
+ // remove all ended touches
+ if (ev.type == 'touchend' || ev.type == 'touchcancel') {
+ for (i = 0; i < ev.changedTouches.length; i++) {
+ touch = ev.changedTouches[i];
+ el = touchElements[touch.identifier];
+ if (el) {
+ el.parentNode.removeChild(el);
+ delete touchElements[touch.identifier];
+ }
+ }
+ }
+ }
+
+ /**
+ * TouchEmulator initializer
+ */
+ function TouchEmulator() {
+ if (hasTouchSupport()) {
+ return;
+ }
+
+ fakeTouchSupport();
+
+ window.addEventListener("mousedown", onMouse('touchstart'), true);
+ window.addEventListener("mousemove", onMouse('touchmove'), true);
+ window.addEventListener("mouseup", onMouse('touchend'), true);
+
+ window.addEventListener("mouseenter", preventMouseEvents, true);
+ window.addEventListener("mouseleave", preventMouseEvents, true);
+ window.addEventListener("mouseout", preventMouseEvents, true);
+ window.addEventListener("mouseover", preventMouseEvents, true);
+
+ // it uses itself!
+ window.addEventListener("touchstart", showTouches, true);
+ window.addEventListener("touchmove", showTouches, true);
+ window.addEventListener("touchend", showTouches, true);
+ window.addEventListener("touchcancel", showTouches, true);
+ }
+
+ // start distance when entering the multitouch mode
+ TouchEmulator.multiTouchOffset = 75;
+
+ /**
+ * css template for the touch rendering
+ * @param touch
+ * @returns object
+ */
+ TouchEmulator.template = function (touch) {
+ var size = 0;
+ var transform = 'translate(' + (touch.clientX - (size / 2)) + 'px, ' + (touch.clientY - (size / 2)) + 'px)';
+ return {
+ position: 'fixed',
+ left: 0,
+ top: 0,
+ background: '#fff',
+ border: 'solid 1px #999',
+ opacity: .6,
+ borderRadius: '100%',
+ height: size + 'px',
+ width: size + 'px',
+ padding: 0,
+ margin: 0,
+ display: 'block',
+ overflow: 'hidden',
+ pointerEvents: 'none',
+ webkitUserSelect: 'none',
+ mozUserSelect: 'none',
+ userSelect: 'none',
+ webkitTransform: transform,
+ mozTransform: transform,
+ transform: transform,
+ zIndex: 100
+ }
+ };
+
+ // export
+ if (typeof define == "function" && define.amd) {
+ define(function () {
+ return TouchEmulator;
+ });
+ } else if (typeof module != "undefined" && module.exports) {
+ module.exports = TouchEmulator;
+ } else {
+ window[exportName] = TouchEmulator;
+ }
+})(window, document, "TouchEmulator");
\ No newline at end of file
diff --git a/static/uview/common/favicon.ico b/static/uview/common/favicon.ico
new file mode 100644
index 0000000..e0af368
Binary files /dev/null and b/static/uview/common/favicon.ico differ
diff --git a/static/uview/common/gray-logo.png b/static/uview/common/gray-logo.png
new file mode 100644
index 0000000..21a6994
Binary files /dev/null and b/static/uview/common/gray-logo.png differ
diff --git a/static/uview/common/logo.png b/static/uview/common/logo.png
new file mode 100644
index 0000000..05b3aed
Binary files /dev/null and b/static/uview/common/logo.png differ
diff --git a/static/uview/example/component.png b/static/uview/example/component.png
new file mode 100644
index 0000000..9464b23
Binary files /dev/null and b/static/uview/example/component.png differ
diff --git a/static/uview/example/component_select.png b/static/uview/example/component_select.png
new file mode 100644
index 0000000..79efb5b
Binary files /dev/null and b/static/uview/example/component_select.png differ
diff --git a/static/uview/example/js.png b/static/uview/example/js.png
new file mode 100644
index 0000000..beb0dc7
Binary files /dev/null and b/static/uview/example/js.png differ
diff --git a/static/uview/example/js_bak.png b/static/uview/example/js_bak.png
new file mode 100644
index 0000000..d280e3d
Binary files /dev/null and b/static/uview/example/js_bak.png differ
diff --git a/static/uview/example/js_select.png b/static/uview/example/js_select.png
new file mode 100644
index 0000000..e8309a4
Binary files /dev/null and b/static/uview/example/js_select.png differ
diff --git a/static/uview/example/template.png b/static/uview/example/template.png
new file mode 100644
index 0000000..ff895b8
Binary files /dev/null and b/static/uview/example/template.png differ
diff --git a/static/uview/example/template_select.png b/static/uview/example/template_select.png
new file mode 100644
index 0000000..90d6601
Binary files /dev/null and b/static/uview/example/template_select.png differ
diff --git a/store/index.js b/store/index.js
new file mode 100644
index 0000000..c666e24
--- /dev/null
+++ b/store/index.js
@@ -0,0 +1,17 @@
+import Vue from 'vue'
+import Vuex from 'vuex'
+
+Vue.use(Vuex) // vue的插件机制
+
+// Vuex.Store 构造器选项
+const store = new Vuex.Store({
+ // 为了不和页面或组件的data中的造成混淆,state中的变量前面建议加上$符号
+ state: {
+ // 用户信息
+ $userInfo: {
+ id: 1
+ }
+ }
+})
+
+export default store
diff --git a/template.h5.html b/template.h5.html
new file mode 100644
index 0000000..2656b09
--- /dev/null
+++ b/template.h5.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+ <%= htmlWebpackPlugin.options.title %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 本站点必须要开启JavaScript才能运行
+
+
+
+
+
+
diff --git a/uni.scss b/uni.scss
new file mode 100644
index 0000000..3375ee1
--- /dev/null
+++ b/uni.scss
@@ -0,0 +1,6 @@
+/**
+ * 下方引入的为uView UI的集成样式文件,为scss预处理器,其中包含了一些"u-"开头的自定义变量
+ * 使用的时候,请将下面的一行复制到您的uniapp项目根目录的uni.scss中即可
+ * uView自定义的css类名和scss变量,均以"u-"开头,不会造成冲突,请放心使用
+ */
+@import '@/uni_modules/uview-ui/theme.scss';
diff --git a/uni_modules/uview-ui/LICENSE b/uni_modules/uview-ui/LICENSE
new file mode 100644
index 0000000..8e39ead
--- /dev/null
+++ b/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/uni_modules/uview-ui/README.md b/uni_modules/uview-ui/README.md
new file mode 100644
index 0000000..c3cadd0
--- /dev/null
+++ b/uni_modules/uview-ui/README.md
@@ -0,0 +1,110 @@
+
+
+
+uView
+多平台快速开发的UI框架
+
+## 一起推动uView发展
+
+uView正在参与开源中国的“年度最佳项目”评选,目前投票进入了最后一个阶段(之前投过票的现在也可以投票),
+我们不分昼夜的努力,恳请同学们能为我们投一票,uView来源于社区,也希望社区能一起推动它的发展,[点此帮助uView](https://www.oschina.net/project/top_cn_2021/?id=583)
+
+
+## 说明
+
+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/uni_modules/uview-ui/changelog.md b/uni_modules/uview-ui/changelog.md
new file mode 100644
index 0000000..b49f80b
--- /dev/null
+++ b/uni_modules/uview-ui/changelog.md
@@ -0,0 +1,154 @@
+## 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/uni_modules/uview-ui/components/u--form/u--form.vue b/uni_modules/uview-ui/components/u--form/u--form.vue
new file mode 100644
index 0000000..fdfc212
--- /dev/null
+++ b/uni_modules/uview-ui/components/u--form/u--form.vue
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
diff --git a/uni_modules/uview-ui/components/u--image/u--image.vue b/uni_modules/uview-ui/components/u--image/u--image.vue
new file mode 100644
index 0000000..50c4d57
--- /dev/null
+++ b/uni_modules/uview-ui/components/u--image/u--image.vue
@@ -0,0 +1,40 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/uni_modules/uview-ui/components/u--input/u--input.vue b/uni_modules/uview-ui/components/u--input/u--input.vue
new file mode 100644
index 0000000..2887e4c
--- /dev/null
+++ b/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/uni_modules/uview-ui/components/u--text/u--text.vue b/uni_modules/uview-ui/components/u--text/u--text.vue
new file mode 100644
index 0000000..a2a235a
--- /dev/null
+++ b/uni_modules/uview-ui/components/u--text/u--text.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
diff --git a/uni_modules/uview-ui/components/u--textarea/u--textarea.vue b/uni_modules/uview-ui/components/u--textarea/u--textarea.vue
new file mode 100644
index 0000000..9dbcfbb
--- /dev/null
+++ b/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/uni_modules/uview-ui/components/u-action-sheet/props.js b/uni_modules/uview-ui/components/u-action-sheet/props.js
new file mode 100644
index 0000000..e96e04f
--- /dev/null
+++ b/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/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue b/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue
new file mode 100644
index 0000000..e9edf06
--- /dev/null
+++ b/uni_modules/uview-ui/components/u-action-sheet/u-action-sheet.vue
@@ -0,0 +1,275 @@
+
+
+
+
+
+ {{description}}
+
+
+
+
+
+
+
+
+
+ {{ item.name }}
+ {{ item.subname }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{cancelText}}
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uview-ui/components/u-album/props.js b/uni_modules/uview-ui/components/u-album/props.js
new file mode 100644
index 0000000..75cdb37
--- /dev/null
+++ b/uni_modules/uview-ui/components/u-album/props.js
@@ -0,0 +1,59 @@
+export default {
+ props: {
+ // 图片地址,Array|Array形式
+ urls: {
+ type: Array,
+ default: uni.$u.props.album.urls
+ },
+ // 指定从数组的对象元素中读取哪个属性作为图片地址
+ keyName: {
+ type: String,
+ default: uni.$u.props.album.keyName
+ },
+ // 单图时,图片长边的长度
+ singleSize: {
+ type: [String, Number],
+ default: uni.$u.props.album.singleSize
+ },
+ // 多图时,图片边长
+ multipleSize: {
+ type: [String, Number],
+ default: uni.$u.props.album.multipleSize
+ },
+ // 多图时,图片水平和垂直之间的间隔
+ space: {
+ type: [String, Number],
+ default: uni.$u.props.album.space
+ },
+ // 单图时,图片缩放裁剪的模式
+ singleMode: {
+ type: String,
+ default: uni.$u.props.album.singleMode
+ },
+ // 多图时,图片缩放裁剪的模式
+ multipleMode: {
+ type: String,
+ default: uni.$u.props.album.multipleMode
+ },
+ // 最多展示的图片数量,超出时最后一个位置将会显示剩余图片数量
+ maxCount: {
+ type: [String, Number],
+ default: uni.$u.props.album.maxCount
+ },
+ // 是否可以预览图片
+ previewFullImage: {
+ type: Boolean,
+ default: uni.$u.props.album.previewFullImage
+ },
+ // 每行展示图片数量,如设置,singleSize和multipleSize将会无效
+ rowCount: {
+ type: [String, Number],
+ default: uni.$u.props.album.rowCount
+ },
+ // 超出maxCount时是否显示查看更多的提示
+ showMore: {
+ type: Boolean,
+ default: uni.$u.props.album.showMore
+ }
+ }
+}
diff --git a/uni_modules/uview-ui/components/u-album/u-album.vue b/uni_modules/uview-ui/components/u-album/u-album.vue
new file mode 100644
index 0000000..334af68
--- /dev/null
+++ b/uni_modules/uview-ui/components/u-album/u-album.vue
@@ -0,0 +1,259 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/uni_modules/uview-ui/components/u-alert/props.js b/uni_modules/uview-ui/components/u-alert/props.js
new file mode 100644
index 0000000..4297e2c
--- /dev/null
+++ b/uni_modules/uview-ui/components/u-alert/props.js
@@ -0,0 +1,44 @@
+export default {
+ props: {
+ // 显示文字
+ title: {
+ type: String,
+ default: uni.$u.props.alert.title
+ },
+ // 主题,success/warning/info/error
+ type: {
+ type: String,
+ default: uni.$u.props.alert.type
+ },
+ // 辅助性文字
+ description: {
+ type: String,
+ default: uni.$u.props.alert.description
+ },
+ // 是否可关闭
+ closable: {
+ type: Boolean,
+ default: uni.$u.props.alert.closable
+ },
+ // 是否显示图标
+ showIcon: {
+ type: Boolean,
+ default: uni.$u.props.alert.showIcon
+ },
+ // 浅或深色调,light-浅色,dark-深色
+ effect: {
+ type: String,
+ default: uni.$u.props.alert.effect
+ },
+ // 文字是否居中
+ center: {
+ type: Boolean,
+ default: uni.$u.props.alert.center
+ },
+ // 字体大小
+ fontSize: {
+ type: [String, Number],
+ default: uni.$u.props.alert.fontSize
+ }
+ }
+}
diff --git a/uni_modules/uview-ui/components/u-alert/u-alert.vue b/uni_modules/uview-ui/components/u-alert/u-alert.vue
new file mode 100644
index 0000000..81f7d43
--- /dev/null
+++ b/uni_modules/uview-ui/components/u-alert/u-alert.vue
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+
+ {{ title }}
+ {{ description }}
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uview-ui/components/u-avatar-group/props.js b/uni_modules/uview-ui/components/u-avatar-group/props.js
new file mode 100644
index 0000000..58b42ac
--- /dev/null
+++ b/uni_modules/uview-ui/components/u-avatar-group/props.js
@@ -0,0 +1,52 @@
+export default {
+ props: {
+ // 头像图片组
+ urls: {
+ type: Array,
+ default: uni.$u.props.avatarGroup.urls
+ },
+ // 最多展示的头像数量
+ maxCount: {
+ type: [String, Number],
+ default: uni.$u.props.avatarGroup.maxCount
+ },
+ // 头像形状
+ shape: {
+ type: String,
+ default: uni.$u.props.avatarGroup.shape
+ },
+ // 图片裁剪模式
+ mode: {
+ type: String,
+ default: uni.$u.props.avatarGroup.mode
+ },
+ // 超出maxCount时是否显示查看更多的提示
+ showMore: {
+ type: Boolean,
+ default: uni.$u.props.avatarGroup.showMore
+ },
+ // 头像大小
+ size: {
+ type: [String, Number],
+ default: uni.$u.props.avatarGroup.size
+ },
+ // 指定从数组的对象元素中读取哪个属性作为图片地址
+ keyName: {
+ type: String,
+ default: uni.$u.props.avatarGroup.keyName
+ },
+ // 头像之间的遮挡比例
+ gap: {
+ type: [String, Number],
+ validator(value) {
+ return value >= 0 && value <= 1
+ },
+ default: uni.$u.props.avatarGroup.gap
+ },
+ // 需额外显示的值
+ extraValue: {
+ type: [Number, String],
+ default: uni.$u.props.avatarGroup.extraValue
+ }
+ }
+}
diff --git a/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue b/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue
new file mode 100644
index 0000000..7e996d7
--- /dev/null
+++ b/uni_modules/uview-ui/components/u-avatar-group/u-avatar-group.vue
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uview-ui/components/u-avatar/props.js b/uni_modules/uview-ui/components/u-avatar/props.js
new file mode 100644
index 0000000..34ca0f2
--- /dev/null
+++ b/uni_modules/uview-ui/components/u-avatar/props.js
@@ -0,0 +1,78 @@
+export default {
+ props: {
+ // 头像图片路径(不能为相对路径)
+ src: {
+ type: String,
+ default: uni.$u.props.avatar.src
+ },
+ // 头像形状,circle-圆形,square-方形
+ shape: {
+ type: String,
+ default: uni.$u.props.avatar.shape
+ },
+ // 头像尺寸
+ size: {
+ type: [String, Number],
+ default: uni.$u.props.avatar.size
+ },
+ // 裁剪模式
+ mode: {
+ type: String,
+ default: uni.$u.props.avatar.mode
+ },
+ // 显示的文字
+ text: {
+ type: String,
+ default: uni.$u.props.avatar.text
+ },
+ // 背景色
+ bgColor: {
+ type: String,
+ default: uni.$u.props.avatar.bgColor
+ },
+ // 文字颜色
+ color: {
+ type: String,
+ default: uni.$u.props.avatar.color
+ },
+ // 文字大小
+ fontSize: {
+ type: [String, Number],
+ default: uni.$u.props.avatar.fontSize
+ },
+ // 显示的图标
+ icon: {
+ type: String,
+ default: uni.$u.props.avatar.icon
+ },
+ // 显示小程序头像,只对百度,微信,QQ小程序有效
+ mpAvatar: {
+ type: Boolean,
+ default: uni.$u.props.avatar.mpAvatar
+ },
+ // 是否使用随机背景色
+ randomBgColor: {
+ type: Boolean,
+ default: uni.$u.props.avatar.randomBgColor
+ },
+ // 加载失败的默认头像(组件有内置默认图片)
+ defaultUrl: {
+ type: String,
+ default: uni.$u.props.avatar.defaultUrl
+ },
+ // 如果配置了randomBgColor为true,且配置了此值,则从默认的背景色数组中取出对应索引的颜色值,取值0-19之间
+ colorIndex: {
+ type: [String, Number],
+ // 校验参数规则,索引在0-19之间
+ validator(n) {
+ return uni.$u.test.range(n, [0, 19]) || n === ''
+ },
+ default: uni.$u.props.avatar.colorIndex
+ },
+ // 组件标识符
+ name: {
+ type: String,
+ default: uni.$u.props.avatar.name
+ }
+ }
+}
diff --git a/uni_modules/uview-ui/components/u-avatar/u-avatar.vue b/uni_modules/uview-ui/components/u-avatar/u-avatar.vue
new file mode 100644
index 0000000..cd4ea0f
--- /dev/null
+++ b/uni_modules/uview-ui/components/u-avatar/u-avatar.vue
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uview-ui/components/u-back-top/props.js b/uni_modules/uview-ui/components/u-back-top/props.js
new file mode 100644
index 0000000..6c702c2
--- /dev/null
+++ b/uni_modules/uview-ui/components/u-back-top/props.js
@@ -0,0 +1,54 @@
+export default {
+ props: {
+ // 返回顶部的形状,circle-圆形,square-方形
+ mode: {
+ type: String,
+ default: uni.$u.props.backtop.mode
+ },
+ // 自定义图标
+ icon: {
+ type: String,
+ default: uni.$u.props.backtop.icon
+ },
+ // 提示文字
+ text: {
+ type: String,
+ default: uni.$u.props.backtop.text
+ },
+ // 返回顶部滚动时间
+ duration: {
+ type: [String, Number],
+ default: uni.$u.props.backtop.duration
+ },
+ // 滚动距离
+ scrollTop: {
+ type: [String, Number],
+ default: uni.$u.props.backtop.scrollTop
+ },
+ // 距离顶部多少距离显示,单位px
+ top: {
+ type: [String, Number],
+ default: uni.$u.props.backtop.top
+ },
+ // 返回顶部按钮到底部的距离,单位px
+ bottom: {
+ type: [String, Number],
+ default: uni.$u.props.backtop.bottom
+ },
+ // 返回顶部按钮到右边的距离,单位px
+ right: {
+ type: [String, Number],
+ default: uni.$u.props.backtop.right
+ },
+ // 层级
+ zIndex: {
+ type: [String, Number],
+ default: uni.$u.props.backtop.zIndex
+ },
+ // 图标的样式,对象形式
+ iconStyle: {
+ type: Object,
+ default: uni.$u.props.backtop.iconStyle
+ }
+ }
+}
diff --git a/uni_modules/uview-ui/components/u-back-top/u-back-top.vue b/uni_modules/uview-ui/components/u-back-top/u-back-top.vue
new file mode 100644
index 0000000..3188ba2
--- /dev/null
+++ b/uni_modules/uview-ui/components/u-back-top/u-back-top.vue
@@ -0,0 +1,137 @@
+
+
+
+
+ {{text}}
+
+
+
+
+
+
+
+
diff --git a/uni_modules/uview-ui/components/u-badge/props.js b/uni_modules/uview-ui/components/u-badge/props.js
new file mode 100644
index 0000000..74c032c
--- /dev/null
+++ b/uni_modules/uview-ui/components/u-badge/props.js
@@ -0,0 +1,72 @@
+export default {
+ props: {
+ // 是否显示圆点
+ isDot: {
+ type: Boolean,
+ default: uni.$u.props.badge.isDot
+ },
+ // 显示的内容
+ value: {
+ type: [Number, String],
+ default: uni.$u.props.badge.value
+ },
+ // 是否显示
+ show: {
+ type: Boolean,
+ default: uni.$u.props.badge.show
+ },
+ // 最大值,超过最大值会显示 '{max}+'
+ max: {
+ type: [Number, String],
+ default: uni.$u.props.badge.max
+ },
+ // 主题类型,error|warning|success|primary
+ type: {
+ type: String,
+ default: uni.$u.props.badge.type
+ },
+ // 当数值为 0 时,是否展示 Badge
+ showZero: {
+ type: Boolean,
+ default: uni.$u.props.badge.showZero
+ },
+ // 背景颜色,优先级比type高,如设置,type参数会失效
+ bgColor: {
+ type: [String, null],
+ default: uni.$u.props.badge.bgColor
+ },
+ // 字体颜色
+ color: {
+ type: [String, null],
+ default: uni.$u.props.badge.color
+ },
+ // 徽标形状,circle-四角均为圆角,horn-左下角为直角
+ shape: {
+ type: String,
+ default: uni.$u.props.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: uni.$u.props.badge.numberType
+ },
+ // 设置badge的位置偏移,格式为 [x, y],也即设置的为top和right的值,absolute为true时有效
+ offset: {
+ type: Array,
+ default: uni.$u.props.badge.offset
+ },
+ // 是否反转背景和字体颜色
+ inverted: {
+ type: Boolean,
+ default: uni.$u.props.badge.inverted
+ },
+ // 是否绝对定位
+ absolute: {
+ type: Boolean,
+ default: uni.$u.props.badge.absolute
+ }
+ }
+}
diff --git a/uni_modules/uview-ui/components/u-badge/u-badge.vue b/uni_modules/uview-ui/components/u-badge/u-badge.vue
new file mode 100644
index 0000000..53cfc81
--- /dev/null
+++ b/uni_modules/uview-ui/components/u-badge/u-badge.vue
@@ -0,0 +1,171 @@
+
+ {{ isDot ? '' :showValue }}
+
+
+
+
+
diff --git a/uni_modules/uview-ui/components/u-button/nvue.scss b/uni_modules/uview-ui/components/u-button/nvue.scss
new file mode 100644
index 0000000..490db7d
--- /dev/null
+++ b/uni_modules/uview-ui/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/uni_modules/uview-ui/components/u-button/props.js b/uni_modules/uview-ui/components/u-button/props.js
new file mode 100644
index 0000000..07fd844
--- /dev/null
+++ b/uni_modules/uview-ui/components/u-button/props.js
@@ -0,0 +1,161 @@
+/*
+ * @Author : LQ
+ * @Description :
+ * @version : 1.0
+ * @Date : 2021-08-16 10:04:04
+ * @LastAuthor : LQ
+ * @lastTime : 2021-08-16 10:04:24
+ * @FilePath : /u-view2.0/uview-ui/components/u-button/props.js
+ */
+export default {
+ props: {
+ // 是否细边框
+ hairline: {
+ type: Boolean,
+ default: uni.$u.props.button.hairline
+ },
+ // 按钮的预置样式,info,primary,error,warning,success
+ type: {
+ type: String,
+ default: uni.$u.props.button.type
+ },
+ // 按钮尺寸,large,normal,small,mini
+ size: {
+ type: String,
+ default: uni.$u.props.button.size
+ },
+ // 按钮形状,circle(两边为半圆),square(带圆角)
+ shape: {
+ type: String,
+ default: uni.$u.props.button.shape
+ },
+ // 按钮是否镂空
+ plain: {
+ type: Boolean,
+ default: uni.$u.props.button.plain
+ },
+ // 是否禁止状态
+ disabled: {
+ type: Boolean,
+ default: uni.$u.props.button.disabled
+ },
+ // 是否加载中
+ loading: {
+ type: Boolean,
+ default: uni.$u.props.button.loading
+ },
+ // 加载中提示文字
+ loadingText: {
+ type: [String, Number],
+ default: uni.$u.props.button.loadingText
+ },
+ // 加载状态图标类型
+ loadingMode: {
+ type: String,
+ default: uni.$u.props.button.loadingMode
+ },
+ // 加载图标大小
+ loadingSize: {
+ type: [String, Number],
+ default: uni.$u.props.button.loadingSize
+ },
+ // 开放能力,具体请看uniapp稳定关于button组件部分说明
+ // https://uniapp.dcloud.io/component/button
+ openType: {
+ type: String,
+ default: uni.$u.props.button.openType
+ },
+ // 用于